From e4eecfa125f8fb2729d077c4008ca93a28995bf4 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 21 Sep 2016 14:26:35 -0400 Subject: [PATCH 0001/1435] Update section title --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 59766928f..3004287b1 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ What is new in 0.0.3 * In addition to maven, we now support basic Eclipse projects [details](https://github.com/gorkem/java-language-server/issues/37). * Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code * Code complete triggers are added for `.#@` characters. -#### Significant bugs +#### Significant bug fixes * [Opening maven project a 2nd time doesn't work](https://github.com/gorkem/java-language-server/issues/66) @@ -31,6 +31,7 @@ Features ![ screencast ](https://raw.githubusercontent.com/gorkem/vscode-java/master/images/vscode-java.0.0.1.gif) * Maven pom.xml project support +* Basic Eclipse Java project support * As you type reporting of parsing and compilation errors * Code completion * Javadoc hovers From 01d29b40ba23d7be072071a17c14f15ac3eb634f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 23 Sep 2016 08:55:15 -0400 Subject: [PATCH 0002/1435] Add badge for waffle.io --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3004287b1..d9f6ec527 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -[![Build Status](https://travis-ci.org/gorkem/vscode-java.svg?branch=master)](https://travis-ci.org/gorkem/vscode-java) - +[![Build Status](https://travis-ci.org/gorkem/vscode-java.svg?branch=master)](https://travis-ci.org/gorkem/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/gorkem/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/gorkem/vscode-java) Language support for Java ™ for Visual Studio Code ===================== @@ -69,4 +68,4 @@ Feedback License =============== -EPL 1.0, See [LICENSE](LICENSE) for more information. \ No newline at end of file +EPL 1.0, See [LICENSE](LICENSE) for more information. From 395d61bf25eccc5a505bccf1c1b70d3066503206 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 23 Sep 2016 11:19:51 -0400 Subject: [PATCH 0003/1435] Change JRE references to JDK Change references to JRE to JDK on docs and messages --- README.md | 4 ++-- src/requirements.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d9f6ec527..284cb3942 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Provides Java ™ language support via Quick Start ============ 1. Install the Extension -2. If you do not have a _Java 8_ Runtime on current system path or _JAVA_HOME_ is not correctly set to point to one - * Download and install a Java 8 compatible runtime. +2. If you do not have a _Java 8_ Development Kit on current system path or _JAVA_HOME_ is not correctly set to point to one + * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file. * Initial activation can be longer since it requires extension to download additional parts. * Recognizes only projects with *maven* build files on the directory hierarchy. diff --git a/src/requirements.ts b/src/requirements.ts index 08c1b41d6..06a9538f7 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -38,7 +38,7 @@ async function checkJavaRuntime(): Promise { findJavaHome(function (err, home) { if (err) reject({ - message: "Java could not be detected. Please download and install a Java Runtime to enable Java Language Support.", + message: "Java could not be detected. Please download and install a Java 8 Development Kit to enable Java Language Support.", label: "Get OpenJDK", openUrl: Uri.parse('http://developers.redhat.com/products/openjdk/overview/'), replaceClose: false From 153586f7602b8d798847caa138b41bf3ed305246 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 23 Sep 2016 11:38:03 -0400 Subject: [PATCH 0004/1435] Download progress monitor Progress monitor for server downloads --- package.json | 3 ++- src/downloadManager.ts | 44 ++++++++++++++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 3f0f2ede2..0abf9b736 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", "tmp" : "^0.0.28", - "decompress": "^4.0.0" + "decompress": "^4.0.0", + "progress-stream": "^1.2.0" } } diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 48787edb3..40528bf20 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -5,10 +5,18 @@ import * as vscode from 'vscode'; import * as path from 'path'; import * as stream from 'stream'; import {Url, parse} from 'url'; + const HttpProxyAgent = require('http-proxy-agent'); const HttpsProxyAgent = require('https-proxy-agent'); const tmp = require('tmp'); const decompress = require('decompress'); +const progress = require('progress-stream'); + +let downloadProgressItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); +function closeDownloadProgressItem(){ + downloadProgressItem.hide(); + downloadProgressItem.dispose(); +} function download(urlString: string, proxy?: string, strictSSL?: boolean): Promise { let url = parse(urlString); @@ -21,7 +29,7 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi }; return new Promise((resolve, reject) => { - return https.get(options, res => { + let request = https.get(options, res => { // handle redirection if (res.statusCode === 302) { return download(res.headers.location).then(is => resolve(is)).catch(err => reject(err)); @@ -29,13 +37,23 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi else if (res.statusCode !== 200) { return reject(Error(`Download failed with code ${res.statusCode}.`)); } - return resolve(res); + let len = parseInt(res.headers['content-length'], 10); + let progressStream = progress({ + length: len, + time: 500 + }); + downloadProgressItem.text = 'Completing Java installation'; + downloadProgressItem.show(); + progressStream.on('progress', function (progressData) { + downloadProgressItem.text = 'Completing Java installation ' + Number.parseInt(progressData.percentage) + '%'; + }); + return resolve(res.pipe(progressStream)); }); + request.setTimeout(30000, ()=>{request.abort()}); + return request; }); - } - function getSystemProxyURL(requestURL: Url): string { if (requestURL.protocol === 'http:') { return process.env.HTTP_PROXY || process.env.http_proxy || null; @@ -81,20 +99,26 @@ export function downloadAndInstallServer() { tmp.file((err, tmpPath, fd, cleanupCallback) => { const out = fs.createWriteStream(null, { fd: fd }); // handle errors - out.once('error', err => reject(err)); - is.once('error', err => reject(err)); - + out.once('error', err => { + closeDownloadProgressItem(); + reject(err); + }) + is.once('error', err => { + closeDownloadProgressItem(); + reject(err); + }); out.once('finish', () => { decompress(tmpPath, SERVER_FOLDER).then(files => { + closeDownloadProgressItem(); return resolve(true); }).catch(err => { + closeDownloadProgressItem(); return reject(err); - }) + }); }) is.pipe(out); }) - }). - catch(err => { + }).catch(err => { console.log(err); }); }); From 9567e19602f2849daf0c7eb05416b728635f9e0d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 23 Sep 2016 13:54:30 -0400 Subject: [PATCH 0005/1435] Fix #37 provide link to oracle jdk downloads on mac Signed-off-by: Fred Bricon --- src/requirements.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/requirements.ts b/src/requirements.ts index 06a9538f7..851d1e7b1 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -37,12 +37,7 @@ async function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { findJavaHome(function (err, home) { if (err) - reject({ - message: "Java could not be detected. Please download and install a Java 8 Development Kit to enable Java Language Support.", - label: "Get OpenJDK", - openUrl: Uri.parse('http://developers.redhat.com/products/openjdk/overview/'), - replaceClose: false - }); + openJDKDownload(reject, "The JAVA_HOME environment variable could not be detected, or it doesn't point to a JDK."); else resolve(home); }); @@ -53,12 +48,7 @@ async function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { let result = cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { if (stderr.indexOf('1.8') < 0) - reject({ - message: "Java Language Support requires Java 8 to run. Please download and install a Java 8 ", - label: "Get OpenJDK", - openUrl: Uri.parse('http://developers.redhat.com/products/openjdk/overview/'), - replaceClose: false - }); + openJDKDownload(reject, "Java 8 is required to run. Please download and install a JDK 8."); else resolve(true); }); @@ -78,3 +68,16 @@ async function checkServerInstalled(): Promise { } return downloadManager.downloadAndInstallServer(); } + +function openJDKDownload(reject, cause) { + let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/'; + if (process.platform === 'darwin') { + jdkUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/index.html' + } + reject({ + message: cause, + label: "Get Java Development Kit", + openUrl: Uri.parse(jdkUrl), + replaceClose: false + }); +} \ No newline at end of file From 5adfb2263d476afc935c64084c2bf420760a2ed7 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 23 Sep 2016 18:31:46 -0400 Subject: [PATCH 0006/1435] fix proxyStrictSSL option removes an old initialization that caused http.proxyStrictSSL to be always true. fixes #35 --- src/downloadManager.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 40528bf20..4b5d2a4b3 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -74,7 +74,6 @@ function getProxyAgent(requestURL: Url, proxy?: string, strictSSL?: boolean): an return null; } - strictSSL = strictSSL || true; const opts = { host: proxyEndpoint.hostname, port: Number(proxyEndpoint.port), From 20bbf5f056dc0cf7fb20eee1bfb1af5aa5042b42 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 26 Sep 2016 09:54:41 -0400 Subject: [PATCH 0007/1435] Fix #36 create CHANGELOG.md Signed-off-by: Fred Bricon --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ README.md | 11 ++--------- 2 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..e3b9db6f9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,33 @@ +# Change Log + +## 0.0.4 (July 27, 2016) +* enhancement - improved Javadoc/Markdown formatting, See [#13](https://github.com/gorkem/vscode-java/issues/13). +* enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). +* enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/gorkem/vscode-java/issues/21). +* enhancement - provide link to Oracle JDK downloads on MacOS. See [#37](https://github.com/gorkem/vscode-java/issues/37). +* enhancement - provide better information on JDK/JAVA_HOME requirements. See [#32](https://github.com/gorkem/vscode-java/issues/32). +* bug fix - prevent java.lang.NullPointerException in DocumentLifeCycleHandler. See [#34](https://github.com/gorkem/vscode-java/issues/34). +* bug fix - fix Java Language Server downloading when using a Proxy. See [#35](https://github.com/gorkem/vscode-java/issues/35). +* bug fix - fix Java Language Server headers format. See [JLS#74](https://github.com/gorkem/java-language-server/issues/74). +* bug fix - fix project import reporting progress > 100%. See [JLS#67](https://github.com/gorkem/java-language-server/issues/67). + +## 0.0.3 (September 16, 2016) +* enhancement - In addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). +* enhancement - Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code +* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/gorkem/vscode-java/issues/19). +* bug fix - Opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). + +## 0.0.2 (September 14, 2016) +* enhancement - download the Java Language Server through HTTPS. + +## 0.0.1 (September 12, 2016) +* Maven pom.xml project support +* Basic Eclipse Java project support +* As you type reporting of parsing and compilation errors +* Code completion +* Javadoc hovers +* Code outline +* Code navigation +* Code lens (references) +* Highlights +* Code formatting \ No newline at end of file diff --git a/README.md b/README.md index 284cb3942..37e96308f 100644 --- a/README.md +++ b/README.md @@ -16,15 +16,6 @@ Quick Start * Initial activation can be longer since it requires extension to download additional parts. * Recognizes only projects with *maven* build files on the directory hierarchy. -What is new in 0.0.3 -==================== -* In addition to maven, we now support basic Eclipse projects [details](https://github.com/gorkem/java-language-server/issues/37). -* Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code -* Code complete triggers are added for `.#@` characters. -#### Significant bug fixes -* [Opening maven project a 2nd time doesn't work](https://github.com/gorkem/java-language-server/issues/66) - - Features ========= ![ screencast ](https://raw.githubusercontent.com/gorkem/vscode-java/master/images/vscode-java.0.0.1.gif) @@ -40,6 +31,8 @@ Features * Highlights * Code formatting +See the [changelog](CHANGELOG.md) for the latest release. + Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they From 7f8723c5fecdfff404f03fc20ab3010afcd58cb4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 26 Sep 2016 10:50:18 -0400 Subject: [PATCH 0008/1435] Update server url to 1.0.0-201609261440 build Signed-off-by: Fred Bricon --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 4b5d2a4b3..ddcc4fbba 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -92,7 +92,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = "https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201609161849.tar.gz"; + const SERVER_ARCHIVE = "https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201609261440.tar.gz"; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From fd0fc996ce87c08622b28daed411bafd523d4148 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 26 Sep 2016 12:00:55 -0400 Subject: [PATCH 0009/1435] bump version to 0.0.4 --- .vscodeignore | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscodeignore b/.vscodeignore index 1a428c89f..07e117935 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -10,3 +10,4 @@ tsconfig.json vsc-extension-quickstart.md undefined/** CONTRIBUTING.md +.vscode-test/** diff --git a/package.json b/package.json index 0abf9b736..9bdd64e3d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.3", + "version": "0.0.4", "publisher": "redhat", "bugs" : "https://github.com/gorkem/vscode-java/issues", "preview": true, From 144ac373ad4333b314bb971733ee65c87021adcd Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 26 Sep 2016 12:03:23 -0400 Subject: [PATCH 0010/1435] Fix 0.0.4 release date --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3b9db6f9..d2bbf2870 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.0.4 (July 27, 2016) +## 0.0.4 (September 27, 2016) * enhancement - improved Javadoc/Markdown formatting, See [#13](https://github.com/gorkem/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). * enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/gorkem/vscode-java/issues/21). @@ -30,4 +30,4 @@ * Code navigation * Code lens (references) * Highlights -* Code formatting \ No newline at end of file +* Code formatting From 40dd4cbddd7f4004854d99fccc097fce0dbac82b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 26 Sep 2016 12:06:33 -0400 Subject: [PATCH 0011/1435] Fix 0.0.4 release date, take 2 ...seriously what's wrong with me? --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2bbf2870..fc4063e72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.0.4 (September 27, 2016) +## 0.0.4 (September 26, 2016) * enhancement - improved Javadoc/Markdown formatting, See [#13](https://github.com/gorkem/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). * enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/gorkem/vscode-java/issues/21). From fead8665878d124ecc14022d00cf17f3f0422622 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 26 Sep 2016 17:59:36 -0400 Subject: [PATCH 0012/1435] Fix #28 add option to set the JDK home directory, from which to run the JLS Signed-off-by: Fred Bricon --- package.json | 17 ++++++++++++++-- src/requirements.ts | 49 ++++++++++++++++++++++++++++++++++++--------- 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 9bdd64e3d..8b39780ce 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,18 @@ "languages": [{ "id": "java", "extensions": [ ".class" ] - }] + }], + "configuration": { + "type": "object", + "title": "Java configuration", + "properties": { + "java.home": { + "type": ["string", "null"], + "default": null, + "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." + } + } + } }, "scripts": { "vscode:prepublish": "node ./node_modules/vscode/bin/compile", @@ -50,6 +61,8 @@ "https-proxy-agent": "^1.0.0", "tmp" : "^0.0.28", "decompress": "^4.0.0", - "progress-stream": "^1.2.0" + "progress-stream": "^1.2.0", + "path-exists":"^3.0.0", + "expand-home-dir":"^0.0.3" } } diff --git a/src/requirements.ts b/src/requirements.ts index 851d1e7b1..519a94a77 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -1,13 +1,14 @@ 'use strict'; -import { Uri } from 'vscode'; +import { workspace, Uri } from 'vscode'; import * as cp from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; import * as downloadManager from './downloadManager'; - -var findJavaHome = require('find-java-home'); +const pathExists = require('path-exists'); +const expandHomeDir = require('expand-home-dir') +const findJavaHome = require('find-java-home'); interface RequirementsData { java_home: string @@ -35,13 +36,43 @@ export async function resolveRequirements(): Promise { async function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { - findJavaHome(function (err, home) { - if (err) - openJDKDownload(reject, "The JAVA_HOME environment variable could not be detected, or it doesn't point to a JDK."); - else - resolve(home); + const realJavaHome = process.env["JAVA_HOME"] + const config = workspace.getConfiguration(); + let javaHome = config.get('java.home'); + let source = "The JAVA_HOME environment variable"; + if (typeof javaHome === 'string') { + source = "The java.home variable defined in VS Code settings"; + } else { + javaHome = realJavaHome; + } + javaHome = expandHomeDir(javaHome); + + return pathExists(javaHome).then (exists => { + if (exists) { + resolve({source, javaHome}); + } else { + console.log("Missing "+javaHome); + openJDKDownload(reject, source+" points to a missing folder"); + } + }); + }).then((obj) => { + const originalJavaHome = process.env["JAVA_HOME"]; + return new Promise((resolve, reject) => { + let source = obj["source"]; + let javaHome = obj["javaHome"]; + process.env["JAVA_HOME"] = javaHome; + findJavaHome(function (err, home) { + process.env["JAVA_HOME"]= originalJavaHome; + if (err){ + openJDKDownload(reject, source+" could not be detected, or doesn't point to a JDK."); + } + else { + console.log("Using JDK found in "+home); + resolve(home); + } + }); }); - }); + }) } async function checkJavaVersion(java_home: string): Promise { From 07b6250874515795acc167bd2441ea94a027f399 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Sep 2016 19:04:40 -0400 Subject: [PATCH 0013/1435] Display Warning to restart VSCode when java.home changes Signed-off-by: Fred Bricon --- src/extension.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index a27eab627..a327cf465 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,7 +7,6 @@ import * as fs from 'fs'; import { workspace, Disposable, ExtensionContext, StatusBarItem, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; import { LanguageClient, LanguageClientOptions, SettingMonitor, ServerOptions, NotificationType, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; - var electron = require('./electron_j'); import * as requirements from './requirements'; import { StatusNotification,ClassFileContentsRequest } from './protocol'; @@ -16,6 +15,7 @@ import { StatusNotification,ClassFileContentsRequest } from './protocol'; declare var v8debug; var DEBUG =( typeof v8debug === 'object'); var storagePath; +var oldConfig; function runJavaServer(){ return requirements.resolveRequirements().catch(error =>{ @@ -81,7 +81,7 @@ export function activate(context: ExtensionContext) { } let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - + oldConfig = workspace.getConfiguration("java"); // Create the language client and start the client. let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); languageClient.onNotification(StatusNotification.type, (report) => { @@ -133,4 +133,22 @@ export function activate(context: ExtensionContext) { // Push the disposable to the context's subscriptions so that the // client can be deactivated on extension deactivation context.subscriptions.push(disposable); + context.subscriptions.push(onConfigurationChange()); } + +function onConfigurationChange() { + return workspace.onDidChangeConfiguration(params => { + let newConfig = workspace.getConfiguration("java"); + if (newConfig.get("home") != oldConfig.get("home")) { + let msg = "java.home configuration changed, please restart VS Code."; + let action = "Restart Now"; + let restartId = "workbench.action.reloadWindow"; + oldConfig = newConfig; + window.showWarningMessage(msg,action).then((selection )=>{ + if(action == selection) { + commands.executeCommand(restartId); + } + }); + } + }); +} \ No newline at end of file From d8f040fb038539b0958dc19ebcef64db0107231b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 3 Oct 2016 11:26:20 -0400 Subject: [PATCH 0014/1435] Update version to 0.0.5 and readme/changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ README.md | 8 +++++++- package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc4063e72..9a72b28d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.0.5 +* enhancement - configure java.home property in VS Code settings, See [#13](https://github.com/gorkem/vscode-java/issues/28). + ## 0.0.4 (September 26, 2016) * enhancement - improved Javadoc/Markdown formatting, See [#13](https://github.com/gorkem/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). diff --git a/README.md b/README.md index 37e96308f..19f4de39a 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,16 @@ Features See the [changelog](CHANGELOG.md) for the latest release. +Supported settings +================== +Starting from version 0.0.5, the following settings are supported: + +* `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. + Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.2/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.5/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 8b39780ce..4b4b7e6b4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.4", + "version": "0.0.5", "publisher": "redhat", "bugs" : "https://github.com/gorkem/vscode-java/issues", "preview": true, From 3aea7f39e1c4a26606723dd870b801b442764524 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 3 Oct 2016 11:50:08 -0400 Subject: [PATCH 0015/1435] Add badge/link to VS Marketplace Signed-off-by: Fred Bricon --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19f4de39a..69f0e32c2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://travis-ci.org/gorkem/vscode-java.svg?branch=master)](https://travis-ci.org/gorkem/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/gorkem/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/gorkem/vscode-java) +[![Build Status](https://travis-ci.org/gorkem/vscode-java.svg?branch=master)](https://travis-ci.org/gorkem/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/gorkem/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/gorkem/vscode-java) [![Marketplace Version](http://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Language support for Java ™ for Visual Studio Code ===================== @@ -14,7 +14,7 @@ Quick Start * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file. * Initial activation can be longer since it requires extension to download additional parts. - * Recognizes only projects with *maven* build files on the directory hierarchy. + * Recognizes only projects with *maven* build files on the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. Features ========= From 8283af005c6eebc5bb9dea4236e1b413e30e70db Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 3 Oct 2016 21:19:02 -0400 Subject: [PATCH 0016/1435] Fix #25 add support for user-defined VM args Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 +++-- README.md | 1 + package.json | 5 +++++ src/extension.ts | 35 +++++++++++++++++++++++++++++++---- test/extension.test.ts | 16 ++++++++++++++++ 5 files changed, 56 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a72b28d3..efed0980d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ # Change Log ## 0.0.5 -* enhancement - configure java.home property in VS Code settings, See [#13](https://github.com/gorkem/vscode-java/issues/28). +* enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/gorkem/vscode-java/issues/25). +* enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/gorkem/vscode-java/issues/28). ## 0.0.4 (September 26, 2016) -* enhancement - improved Javadoc/Markdown formatting, See [#13](https://github.com/gorkem/vscode-java/issues/13). +* enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/gorkem/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). * enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/gorkem/vscode-java/issues/21). * enhancement - provide link to Oracle JDK downloads on MacOS. See [#37](https://github.com/gorkem/vscode-java/issues/37). diff --git a/README.md b/README.md index 69f0e32c2..bfd9b2fc2 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Supported settings Starting from version 0.0.5, the following settings are supported: * `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. +* `java.jdt.ls.vmargs` : Extra VM arguments used to launch the Java Language Server. Requires VS Code restart. Troubleshooting =============== diff --git a/package.json b/package.json index 4b4b7e6b4..158a3fe50 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,11 @@ "type": ["string", "null"], "default": null, "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." + }, + "java.jdt.ls.vmargs": { + "type": ["string", "null"], + "default": "-noverify -Xmx1G", + "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G` to bypass class verification and increase the heap size to 1GB" } } } diff --git a/src/extension.ts b/src/extension.ts index a327cf465..32d13f14c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -55,7 +55,10 @@ function runJavaServer(){ } params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); params.push('-data'); params.push(workspacePath); - + + let vmargs = workspace.getConfiguration("java").get("jdt.ls.vmargs",""); + parseVMargs(params, vmargs); + electron.fork(child, params, {}, function(err, result) { if(err) reject(err); if(result) resolve(result); @@ -139,8 +142,8 @@ export function activate(context: ExtensionContext) { function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { let newConfig = workspace.getConfiguration("java"); - if (newConfig.get("home") != oldConfig.get("home")) { - let msg = "java.home configuration changed, please restart VS Code."; + if (hasJavaConfigChanged(oldConfig, newConfig)) { + let msg = "Java Language Server configuration changed, please restart VS Code."; let action = "Restart Now"; let restartId = "workbench.action.reloadWindow"; oldConfig = newConfig; @@ -151,4 +154,28 @@ function onConfigurationChange() { }); } }); -} \ No newline at end of file +} + +function hasJavaConfigChanged(oldConfig, newConfig) { + return hasConfigKeyChanged("home", oldConfig, newConfig) + || hasConfigKeyChanged("jdt.ls.vmargs", oldConfig, newConfig); +} + +function hasConfigKeyChanged(key, oldConfig, newConfig) { + return oldConfig.get(key) != newConfig.get(key); +} + +export function parseVMargs(params:any[], vmargsLine:string) { + if (!vmargsLine) { + return; + } + let vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); + if (vmargs == null) { + return; + } + vmargs.forEach (function(arg) { + if (params.indexOf(arg) < 0) { + params.push(arg); + } + }); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index ab5a06b07..438ffefe8 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -26,4 +26,20 @@ suite("Java Language Extension", () => { done(); }); }); + + test("should parse VM arguments", function (done) { + let userArgs = "-Xmx512m -noverify -Dfoo=\"something with blank\" "; + let vmArgs = ["-noverify", "foo"]; + + java.parseVMargs(vmArgs, userArgs); + + assert.equal(4, vmArgs.length); + assert.equal("-noverify", vmArgs[0]); + assert.equal("foo", vmArgs[1]); + assert.equal("-Xmx512m", vmArgs[2]); + assert.equal("-Dfoo=\"something with blank\"", vmArgs[3]); + + done(); + }); + }); \ No newline at end of file From 2290ba44e4c6bd71eb27cbedc91c6fa10c2e017e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 5 Oct 2016 12:50:23 -0400 Subject: [PATCH 0017/1435] Don't send undefined workspace to JLS Signed-off-by: Fred Bricon --- src/extension.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 32d13f14c..25be443bd 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,10 +4,10 @@ import * as path from 'path'; import * as cp from 'child_process'; import * as fs from 'fs'; - import { workspace, Disposable, ExtensionContext, StatusBarItem, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; import { LanguageClient, LanguageClientOptions, SettingMonitor, ServerOptions, NotificationType, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; var electron = require('./electron_j'); +var os = require('os'); import * as requirements from './requirements'; import { StatusNotification,ClassFileContentsRequest } from './protocol'; @@ -69,7 +69,9 @@ function runJavaServer(){ export function activate(context: ExtensionContext) { storagePath = context.storagePath; - + if (!storagePath) { + storagePath = getTempWorkspace(); + } let serverOptions= runJavaServer; @@ -179,3 +181,17 @@ export function parseVMargs(params:any[], vmargsLine:string) { } }); } + +function getTempWorkspace() { + return path.resolve(os.tmpdir(),"vscodesws_"+makeRandomHexString(5)); +} + +function makeRandomHexString(length) { + var chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; + var result = ''; + for (var i = 0; i < length; i++) { + var idx = Math.floor(chars.length * Math.random()); + result += chars[idx]; + } + return result; +} From 88483a433956926e143e8b6c4716d472267b66a4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 5 Oct 2016 14:38:59 -0400 Subject: [PATCH 0018/1435] Fix typo in CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 417002300..97f7fe1f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,7 +25,7 @@ and the contributions should be coordinated between the two repositories. 5. Open the folder in VS Code ## Building java-language-server -This assumes that you are starting on the `vscdoe-java` directory +This assumes that you are starting on the `vscode-java` directory 1. `cd ..` 2. Fork and clone the [java-language-server](https://github.com/gorkem/java-language-server) repository @@ -53,4 +53,4 @@ You can create a binary that you can sideload to your VS Code installation. ``` 4. Optionally, follow the instruction to build the server. 5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/install-extension.md) -on ways to sideload or share. \ No newline at end of file +on ways to sideload or share. From 29f0ea00dd9713ea77dcd4ff2cb7558c3fa606b4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 5 Oct 2016 13:26:31 -0400 Subject: [PATCH 0019/1435] Fix #49 show Starting Java Language Server on extension startup also fixes the case where status is not updated when editor switched to non-java file before initialization ends. Signed-off-by: Fred Bricon --- src/extension.ts | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 25be443bd..4c9229dd3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -91,23 +91,16 @@ export function activate(context: ExtensionContext) { let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); languageClient.onNotification(StatusNotification.type, (report) => { console.log(report.message); - if(window.activeTextEditor && window.activeTextEditor.document){ - if(window.activeTextEditor.document.languageId === "java"){ - if(report.type === "Started"){ - item.text = "$(thumbsup)" - } else if(report.type === "Error"){ - item.text = "$(thumbsdown)" - } - else { - item.text = report.message; - } - item.command = "java.open.output"; - item.tooltip = report.message; - item.show(); - } else { - item.hide(); - } + if(report.type === "Started"){ + item.text = "$(thumbsup)" + } else if(report.type === "Error"){ + item.text = "$(thumbsdown)" + } else { + item.text = report.message; } + item.command = "java.open.output"; + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); }); commands.registerCommand("java.open.output", ()=>{ languageClient.outputChannel.show(ViewColumn.Three); @@ -116,11 +109,7 @@ export function activate(context: ExtensionContext) { commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); }); window.onDidChangeActiveTextEditor((editor) =>{ - if(editor && editor.document && editor.document.languageId === "java"){ - item.show(); - } else{ - item.hide(); - } + toggleItem(editor, item); }); let provider: TextDocumentContentProvider= { @@ -133,6 +122,8 @@ export function activate(context: ExtensionContext) { }; workspace.registerTextDocumentContentProvider("jdt", provider) + item.text = "Starting Java Language Server..."; + toggleItem(window.activeTextEditor, item); let disposable = languageClient.start(); // Push the disposable to the context's subscriptions so that the @@ -141,6 +132,14 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(onConfigurationChange()); } +function toggleItem(editor, item) { + if(editor && editor.document && editor.document.languageId === "java"){ + item.show(); + } else{ + item.hide(); + } +} + function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { let newConfig = workspace.getConfiguration("java"); From 51aae6dc6eb7cadb45e3a4570c40b87ae41c584d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 6 Oct 2016 15:34:57 -0400 Subject: [PATCH 0020/1435] Complete repository ownership changes Signed-off-by: Fred Bricon --- CHANGELOG.md | 20 ++++++++++---------- README.md | 10 +++++----- package.json | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efed0980d..94007f946 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,24 +1,24 @@ # Change Log ## 0.0.5 -* enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/gorkem/vscode-java/issues/25). -* enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/gorkem/vscode-java/issues/28). +* enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). +* enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). ## 0.0.4 (September 26, 2016) -* enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/gorkem/vscode-java/issues/13). -* enhancement - provide Java Language Server download feedback. See [#20](https://github.com/gorkem/vscode-java/issues/20). -* enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/gorkem/vscode-java/issues/21). -* enhancement - provide link to Oracle JDK downloads on MacOS. See [#37](https://github.com/gorkem/vscode-java/issues/37). -* enhancement - provide better information on JDK/JAVA_HOME requirements. See [#32](https://github.com/gorkem/vscode-java/issues/32). -* bug fix - prevent java.lang.NullPointerException in DocumentLifeCycleHandler. See [#34](https://github.com/gorkem/vscode-java/issues/34). -* bug fix - fix Java Language Server downloading when using a Proxy. See [#35](https://github.com/gorkem/vscode-java/issues/35). +* enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). +* enhancement - provide Java Language Server download feedback. See [#20](https://github.com/redhat-developer/vscode-java/issues/20). +* enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/redhat-developer/vscode-java/issues/21). +* enhancement - provide link to Oracle JDK downloads on MacOS. See [#37](https://github.com/redhat-developer/vscode-java/issues/37). +* enhancement - provide better information on JDK/JAVA_HOME requirements. See [#32](https://github.com/redhat-developer/vscode-java/issues/32). +* bug fix - prevent java.lang.NullPointerException in DocumentLifeCycleHandler. See [#34](https://github.com/redhat-developer/vscode-java/issues/34). +* bug fix - fix Java Language Server downloading when using a Proxy. See [#35](https://github.com/redhat-developer/vscode-java/issues/35). * bug fix - fix Java Language Server headers format. See [JLS#74](https://github.com/gorkem/java-language-server/issues/74). * bug fix - fix project import reporting progress > 100%. See [JLS#67](https://github.com/gorkem/java-language-server/issues/67). ## 0.0.3 (September 16, 2016) * enhancement - In addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). * enhancement - Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code -* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/gorkem/vscode-java/issues/19). +* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). * bug fix - Opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). ## 0.0.2 (September 14, 2016) diff --git a/README.md b/README.md index bfd9b2fc2..87db28b92 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://travis-ci.org/gorkem/vscode-java.svg?branch=master)](https://travis-ci.org/gorkem/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/gorkem/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/gorkem/vscode-java) [![Marketplace Version](http://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) +[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](http://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Language support for Java ™ for Visual Studio Code ===================== @@ -18,7 +18,7 @@ Quick Start Features ========= -![ screencast ](https://raw.githubusercontent.com/gorkem/vscode-java/master/images/vscode-java.0.0.1.gif) +![ screencast ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/vscode-java.0.0.1.gif) * Maven pom.xml project support * Basic Eclipse Java project support @@ -50,9 +50,9 @@ You should see a folder named `plugins`. It should show ready (thumbs up) as on the image below. You can click on the status and open the language tool logs for further information in case of a failure. -![ status indicator ](https://raw.githubusercontent.com/gorkem/vscode-java/master/images/statusMarker.png) +![ status indicator ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/statusMarker.png) -3. Report any problems you face to the [project](https://github.com/gorkem/vscode-java/issues). +3. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). Contributing =============== @@ -62,7 +62,7 @@ For information on getting started refer to [java-language-server](https://githu Feedback =============== -* File a bug in [GitHub Issues](https://github.com/gorkem/vscode-java/issues). +* File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues). * [Tweet](https://twitter.com/GorkemErcan) us with other feedback. diff --git a/package.json b/package.json index 158a3fe50..8e3f7d539 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,14 @@ "license": "SEE LICENSE IN LICENSE", "version": "0.0.5", "publisher": "redhat", - "bugs" : "https://github.com/gorkem/vscode-java/issues", + "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { "vscode": "^1.5.0" }, "repository": { "type": "git", - "url": "https://github.com/gorkem/vscode-java" + "url": "https://github.com/redhat-developer/vscode-java" }, "categories": [ "Languages", From 58d2a3e3685ee9a09b61ef26e23296d785bc5f22 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 11 Oct 2016 12:17:42 -0400 Subject: [PATCH 0021/1435] Fix #43 support starting the JLS with Java 9 Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 + src/extension.ts | 5 ++++- src/requirements.ts | 15 +++++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94007f946..f8a8e812e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 0.0.5 * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). +* enhancement - support running the Java Language Server with Java 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). ## 0.0.4 (September 26, 2016) * enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). diff --git a/src/extension.ts b/src/extension.ts index 4c9229dd3..491fb2fb2 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -44,7 +44,7 @@ function runJavaServer(){ params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); } - + params.push('-jar'); params.push(path.resolve( __dirname ,'../../server/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar')); //select configuration directory according to OS let configDir = 'config_win'; @@ -55,6 +55,9 @@ function runJavaServer(){ } params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); params.push('-data'); params.push(workspacePath); + if (requirements.java_version > 8) { + params.push('--add-modules=java.se.ee'); + } let vmargs = workspace.getConfiguration("java").get("jdt.ls.vmargs",""); parseVMargs(params, vmargs); diff --git a/src/requirements.ts b/src/requirements.ts index 519a94a77..40b1c0b81 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -12,6 +12,7 @@ const findJavaHome = require('find-java-home'); interface RequirementsData { java_home: string + java_version: number } interface ErrorData { @@ -29,9 +30,9 @@ interface ErrorData { */ export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); - let isJava8 = await checkJavaVersion(java_home); + let javaVersion = await checkJavaVersion(java_home); let serverInstalled = await checkServerInstalled(); - return Promise.resolve({ "java_home": java_home }); + return Promise.resolve({ "java_home": java_home, "java_version":javaVersion}); } async function checkJavaRuntime(): Promise { @@ -78,10 +79,12 @@ async function checkJavaRuntime(): Promise { async function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { let result = cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - if (stderr.indexOf('1.8') < 0) - openJDKDownload(reject, "Java 8 is required to run. Please download and install a JDK 8."); - else - resolve(true); + if (stderr.indexOf('1.8') < 0 && stderr.indexOf('9.') < 0) { + openJDKDownload(reject, "Java 8 minimum is required to run. Please download and install the latest JDK."); + } else { + let version = (stderr.indexOf('1.8') >= 0)?8:9; + resolve(version); + } }); }); } From 6599e69e9636e3898eef23f1b726d950cdf6e846 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 11 Oct 2016 12:24:52 -0400 Subject: [PATCH 0022/1435] Pass missing http option. pass rejectUnauthorized option to http request. closes #42 --- src/downloadManager.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index ddcc4fbba..c2d773fd2 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -22,11 +22,14 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi let url = parse(urlString); const agent = getProxyAgent(url, proxy, strictSSL); - let options: https.RequestOptions = { - host: url.host, - path: url.path, - agent: agent - }; + let options: https.RequestOptions = { + host: url.host, + port: url.port ? parseInt(url.port) : (url.protocol === 'https:' ? 443 : 80), + path: url.path, + agent: agent, + rejectUnauthorized: strictSSL + }; + return new Promise((resolve, reject) => { let request = https.get(options, res => { From b6b2ca8b68eb177ac1074ad6246de81eb357f84d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 11 Oct 2016 12:30:53 -0400 Subject: [PATCH 0023/1435] Update changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8a8e812e..26f71ae5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,12 @@ ## 0.0.5 * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). +* enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). * enhancement - support running the Java Language Server with Java 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). +* enhancement - add feedback when starting the Java Language Server. See [#49](https://github.com/redhat-developer/vscode-java/issues/49). +* enhancement - add hover for package fragments. See [JLS#84](https://github.com/gorkem/java-language-server/pull/84). +* bug fix - fix Java Language Server downloading when using a Proxy (take 2). See [#42](https://github.com/redhat-developer/vscode-java/issues/42). +* bug fix - fix race condition on Java Language Server start. See [JLS#81](https://github.com/gorkem/java-language-server/pull/81). ## 0.0.4 (September 26, 2016) * enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). From 8f71e33986b7a727b47575d105a924e2283fe4d3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 11 Oct 2016 16:22:20 -0400 Subject: [PATCH 0024/1435] Revert "Fix #43 support starting the JLS with Java 9" This reverts commit 58d2a3e3685ee9a09b61ef26e23296d785bc5f22. --- CHANGELOG.md | 1 - src/extension.ts | 5 +---- src/requirements.ts | 15 ++++++--------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26f71ae5d..2c5e7cd1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). * enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). -* enhancement - support running the Java Language Server with Java 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). * enhancement - add feedback when starting the Java Language Server. See [#49](https://github.com/redhat-developer/vscode-java/issues/49). * enhancement - add hover for package fragments. See [JLS#84](https://github.com/gorkem/java-language-server/pull/84). * bug fix - fix Java Language Server downloading when using a Proxy (take 2). See [#42](https://github.com/redhat-developer/vscode-java/issues/42). diff --git a/src/extension.ts b/src/extension.ts index 491fb2fb2..4c9229dd3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -44,7 +44,7 @@ function runJavaServer(){ params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); } - + params.push('-jar'); params.push(path.resolve( __dirname ,'../../server/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar')); //select configuration directory according to OS let configDir = 'config_win'; @@ -55,9 +55,6 @@ function runJavaServer(){ } params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); params.push('-data'); params.push(workspacePath); - if (requirements.java_version > 8) { - params.push('--add-modules=java.se.ee'); - } let vmargs = workspace.getConfiguration("java").get("jdt.ls.vmargs",""); parseVMargs(params, vmargs); diff --git a/src/requirements.ts b/src/requirements.ts index 40b1c0b81..519a94a77 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -12,7 +12,6 @@ const findJavaHome = require('find-java-home'); interface RequirementsData { java_home: string - java_version: number } interface ErrorData { @@ -30,9 +29,9 @@ interface ErrorData { */ export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); - let javaVersion = await checkJavaVersion(java_home); + let isJava8 = await checkJavaVersion(java_home); let serverInstalled = await checkServerInstalled(); - return Promise.resolve({ "java_home": java_home, "java_version":javaVersion}); + return Promise.resolve({ "java_home": java_home }); } async function checkJavaRuntime(): Promise { @@ -79,12 +78,10 @@ async function checkJavaRuntime(): Promise { async function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { let result = cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - if (stderr.indexOf('1.8') < 0 && stderr.indexOf('9.') < 0) { - openJDKDownload(reject, "Java 8 minimum is required to run. Please download and install the latest JDK."); - } else { - let version = (stderr.indexOf('1.8') >= 0)?8:9; - resolve(version); - } + if (stderr.indexOf('1.8') < 0) + openJDKDownload(reject, "Java 8 is required to run. Please download and install a JDK 8."); + else + resolve(true); }); }); } From 79f2c6aedf894133f1ab45054a33322ad4cdbfe9 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 12 Oct 2016 20:42:52 -0400 Subject: [PATCH 0025/1435] fix java debug parameters uses execArgs to determine debug mode instead of the removed v8debug object. Fixes #59 --- src/extension.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 4c9229dd3..cac7ec78e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,7 +13,7 @@ import { StatusNotification,ClassFileContentsRequest } from './protocol'; declare var v8debug; -var DEBUG =( typeof v8debug === 'object'); +const DEBUG = ( typeof v8debug === 'object') || startedInDebugMode(); var storagePath; var oldConfig; @@ -194,3 +194,11 @@ function makeRandomHexString(length) { } return result; } + +function startedInDebugMode(): boolean { + let args = (process as any).execArgv; + if (args) { + return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg)); + }; + return false; +} From 35f93b0b4697076842c9e960c38bd487e81f0bdb Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 13 Oct 2016 17:30:56 -0400 Subject: [PATCH 0026/1435] update server release url Update the url and chagelog for release 0.0.5 --- CHANGELOG.md | 1 + src/downloadManager.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c5e7cd1e..cda8bfadb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). * enhancement - add feedback when starting the Java Language Server. See [#49](https://github.com/redhat-developer/vscode-java/issues/49). * enhancement - add hover for package fragments. See [JLS#84](https://github.com/gorkem/java-language-server/pull/84). +* enhancement - better relevance for code completion. See [JLS#77](https://github.com/gorkem/java-language-server/pull/77). * bug fix - fix Java Language Server downloading when using a Proxy (take 2). See [#42](https://github.com/redhat-developer/vscode-java/issues/42). * bug fix - fix race condition on Java Language Server start. See [JLS#81](https://github.com/gorkem/java-language-server/pull/81). diff --git a/src/downloadManager.ts b/src/downloadManager.ts index c2d773fd2..f594377d6 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = "https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201609261440.tar.gz"; + const SERVER_ARCHIVE = "https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201610132107.tar.gz"; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From c125943c078c6d0bef2d8d53112a6ed70ead6048 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 10:16:43 -0400 Subject: [PATCH 0027/1435] update to ts 2.0 Start using TypeScript 2.0. Updates the versions for some of the dependencies. fixes #54 --- package.json | 17 ++++++++++------- tsconfig.json | 6 ++++-- typings/node.d.ts | 1 - typings/vscode-typings.d.ts | 1 - 4 files changed, 14 insertions(+), 11 deletions(-) delete mode 100644 typings/node.d.ts delete mode 100644 typings/vscode-typings.d.ts diff --git a/package.json b/package.json index 8e3f7d539..bae1bca37 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.5", + "version": "0.0.6", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -49,22 +49,25 @@ } }, "scripts": { - "vscode:prepublish": "node ./node_modules/vscode/bin/compile", - "compile": "node ./node_modules/vscode/bin/compile -watch -p ./", + "vscode:prepublish": "tsc -p ./", + "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", "build-server": "mvn -f ../java-language-server/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify" }, "devDependencies": { - "typescript": "^1.8.9", - "vscode": "^0.11.0" + "typescript": "^2.0.3", + "vscode": "^1.0.0", + "mocha": "^2.3.3", + "@types/node": "^6.0.40", + "@types/mocha": "^2.2.32" }, "dependencies": { - "vscode-languageclient": "^2.5.0", + "vscode-languageclient": "^2.6.0", "find-java-home": "^0.1.3", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", - "tmp" : "^0.0.28", + "tmp" : "^0.0.29", "decompress": "^4.0.0", "progress-stream": "^1.2.0", "path-exists":"^3.0.0", diff --git a/tsconfig.json b/tsconfig.json index db7e20a61..4f5c0d087 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,12 @@ { "compilerOptions": { - "target": "ES6", + "target": "es6", + "lib": [ + "es6" + ], "module": "commonjs", "moduleResolution": "node", "outDir": "out", - "noLib": true, "sourceMap": true }, "exclude": [ diff --git a/typings/node.d.ts b/typings/node.d.ts deleted file mode 100644 index 5ed7730b6..000000000 --- a/typings/node.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// \ No newline at end of file diff --git a/typings/vscode-typings.d.ts b/typings/vscode-typings.d.ts deleted file mode 100644 index 61430b1ce..000000000 --- a/typings/vscode-typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// From 355ae0fd3416859b02d5abfe9db1e30f626802da Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 17:53:08 -0400 Subject: [PATCH 0028/1435] stabilize travis builds use specific node version --- .travis.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index bb61adadf..492e6b110 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ sudo: false +node_js: +- "6" + os: - osx - linux @@ -12,8 +15,10 @@ before_install: fi install: - - npm install - - npm run vscode:prepublish +- npm install +- npm run compile +- npm install -g vsce +- vsce package script: - npm test --silent From 9b18f943e847665c9df0e2e274fadfbb74ee1d05 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 18:01:27 -0400 Subject: [PATCH 0029/1435] switch to node js language on travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 492e6b110..eff94bff5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ sudo: false +language: node_js node_js: - "6" From c272287817a1674de841b2188bd243fdcd3de677 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 18:12:06 -0400 Subject: [PATCH 0030/1435] use direct command for travis builds --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eff94bff5..1c637245c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ before_install: install: - npm install -- npm run compile +- tsc -p ./ - npm install -g vsce - vsce package From 641e232dc91973cbd006d327a69ba469b8f75e12 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 21:17:26 -0400 Subject: [PATCH 0031/1435] use npm script for builds --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1c637245c..7a93b3a66 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ before_install: install: - npm install -- tsc -p ./ +- npm vscode:prepublish - npm install -g vsce - vsce package From 13cda67ae467db3a13f7308155e65863ce3ea46e Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 21:18:54 -0400 Subject: [PATCH 0032/1435] add run for build to travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7a93b3a66..6db06bec9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ before_install: install: - npm install -- npm vscode:prepublish +- npm run vscode:prepublish - npm install -g vsce - vsce package From 5d8631465a93e8687b28df5be1872a55b1fa1aa3 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 14 Oct 2016 22:18:59 -0400 Subject: [PATCH 0033/1435] travis install typescript before install --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6db06bec9..1e3cd4fa1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,15 +5,16 @@ node_js: - "6" os: - - osx - - linux +- osx +- linux before_install: - - if [ $TRAVIS_OS_NAME == "linux" ]; then +- if [ $TRAVIS_OS_NAME == "linux" ]; then export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0; sh -e /etc/init.d/xvfb start; sleep 3; fi +- npm install -g typescript install: - npm install @@ -22,4 +23,4 @@ install: - vsce package script: - - npm test --silent +- npm test --silent From acb69341d5dcb4244585d0c389048ba745297838 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Sat, 15 Oct 2016 11:23:58 -0400 Subject: [PATCH 0034/1435] take tslint into use Start using tslint, fixes existing issues, adds tslint extension as a recommendation. --- .vscode/extensions.json | 8 +++++ .vscode/tasks.json | 49 ++++++++++++++++++++++++------ gulpfile.js | 9 ++++++ package.json | 7 +++-- src/downloadManager.ts | 10 +++--- src/electron_j.ts | 6 ++-- src/extension.ts | 59 ++++++++++++++++++------------------ src/requirements.ts | 56 +++++++++++++++++----------------- test/downloadManager.test.ts | 7 ++--- test/extension.test.ts | 28 ++++++++--------- tslint.json | 13 ++++++++ 11 files changed, 158 insertions(+), 94 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 gulpfile.js create mode 100644 tslint.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..49aa7ee05 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp + "eg2.tslint" + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 86a3ef7f5..a5cbf8471 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -5,27 +5,26 @@ // ${fileDirname}: the current opened file's dirname // ${fileExtname}: the current opened file's extension // ${cwd}: the current working directory of the spawned process - // A task runner that calls a custom npm script that compiles the extension. { "version": "0.1.0", - // we want to run npm "command": "npm", - // the command is a shell script "isShellCommand": true, - // show the output window only if unrecognized errors occur. "showOutput": "silent", - "suppressTaskName": true, - "tasks": [ { "taskName": "compile", // we run the custom script "compile" as defined in package.json - "args": ["run", "compile", "--loglevel", "silent"], + "args": [ + "run", + "compile", + "--loglevel", + "silent" + ], // The tsc compiler is started in watching mode "isWatching": true, // use the standard tsc in watch mode problem matcher to find compile problems in the output. @@ -34,15 +33,45 @@ }, { "taskName": "test", - "args": ["run", "test"], + "args": [ + "run", + "test" + ], "isTestCommand": true }, { "taskName": "build-server", // we run the custom script "compile" as defined in package.json - "args": ["run", "build-server", "--loglevel", "silent"], + "args": [ + "run", + "build-server", + "--loglevel", + "silent" + ], // The tsc compiler is started in watching mode "isWatching": false + }, + { + "taskName": "tslint", + "args": [ + "run", + "tslint" + ], + "problemMatcher": { + "owner": "tslint", + "fileLocation": [ + "relative", + "${workspaceRoot}" + ], + "severity": "warning", + "pattern": { + "regexp": "^(\\S.*)\\[(\\d+), (\\d+)\\]:\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "message": 4 + } + } } ] -} +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 000000000..33ea9e300 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,9 @@ +'use strict'; +const gulp = require('gulp'); +const gulp_tslint = require('gulp-tslint'); +//... +gulp.task('tslint', () => { + return gulp.src(['**/*.ts', '!**/*.d.ts', '!node_modules/**']) + .pipe(gulp_tslint()) + .pipe(gulp_tslint.report()); +}); \ No newline at end of file diff --git a/package.json b/package.json index bae1bca37..23333b4f2 100644 --- a/package.json +++ b/package.json @@ -53,14 +53,17 @@ "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", - "build-server": "mvn -f ../java-language-server/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify" + "build-server": "mvn -f ../java-language-server/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify", + "tslint": "gulp tslint" }, "devDependencies": { "typescript": "^2.0.3", "vscode": "^1.0.0", "mocha": "^2.3.3", "@types/node": "^6.0.40", - "@types/mocha": "^2.2.32" + "@types/mocha": "^2.2.32", + "gulp" :"^3.9.1", + "gulp-tslint": "^6.1.2" }, "dependencies": { "vscode-languageclient": "^2.6.0", diff --git a/src/downloadManager.ts b/src/downloadManager.ts index f594377d6..c39f0a34c 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -52,7 +52,7 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi }); return resolve(res.pipe(progressStream)); }); - request.setTimeout(30000, ()=>{request.abort()}); + request.setTimeout(30000, ()=>{request.abort();}); return request; }); } @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = "https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201610132107.tar.gz"; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201610132107.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { @@ -104,7 +104,7 @@ export function downloadAndInstallServer() { out.once('error', err => { closeDownloadProgressItem(); reject(err); - }) + }); is.once('error', err => { closeDownloadProgressItem(); reject(err); @@ -117,9 +117,9 @@ export function downloadAndInstallServer() { closeDownloadProgressItem(); return reject(err); }); - }) + }); is.pipe(out); - }) + }); }).catch(err => { console.log(err); }); diff --git a/src/electron_j.ts b/src/electron_j.ts index 7b6510ea4..c45fc9661 100644 --- a/src/electron_j.ts +++ b/src/electron_j.ts @@ -60,15 +60,17 @@ function fork(modulePath, args, options, callback) { // Begin listening to stdout pipe var serverOut = net.createServer(function (stream) { streamInfo.writer = stream; - if(streamInfo.reader != null) + if(streamInfo.reader !== null){ resolve(streamInfo); + } }); serverOut.listen(stdOutPipeName); var serverIn = net.createServer(function (stream) { streamInfo.reader = stream; - if(streamInfo.writer != null ) + if(streamInfo.writer !== null ){ resolve(streamInfo); + } }); serverIn.listen(stdInPipeName); diff --git a/src/extension.ts b/src/extension.ts index cac7ec78e..c57925ee0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,10 +2,8 @@ 'use strict'; import * as path from 'path'; -import * as cp from 'child_process'; -import * as fs from 'fs'; -import { workspace, Disposable, ExtensionContext, StatusBarItem, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; -import { LanguageClient, LanguageClientOptions, SettingMonitor, ServerOptions, NotificationType, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; +import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; +import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; var electron = require('./electron_j'); var os = require('os'); import * as requirements from './requirements'; @@ -21,8 +19,9 @@ function runJavaServer(){ return requirements.resolveRequirements().catch(error =>{ //show error window.showErrorMessage(error.message, error.label).then((selection )=>{ - if(error.label && error.label == selection && error.openUrl) + if(error.label && error.label === selection && error.openUrl){ commands.executeCommand('vscode.open', error.openUrl); + } }); // rethrow to disrupt the chain. throw error; @@ -56,12 +55,12 @@ function runJavaServer(){ params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); params.push('-data'); params.push(workspacePath); - let vmargs = workspace.getConfiguration("java").get("jdt.ls.vmargs",""); + let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); parseVMargs(params, vmargs); electron.fork(child, params, {}, function(err, result) { - if(err) reject(err); - if(result) resolve(result); + if(err) { reject(err); } + if(result){ resolve(result); } }); })); } @@ -83,29 +82,29 @@ export function activate(context: ExtensionContext) { // Notify the server about file changes to .java files contain in the workspace fileEvents: workspace.createFileSystemWatcher('**/*.java') } - } + }; let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - oldConfig = workspace.getConfiguration("java"); + oldConfig = workspace.getConfiguration('java'); // Create the language client and start the client. let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); languageClient.onNotification(StatusNotification.type, (report) => { console.log(report.message); - if(report.type === "Started"){ - item.text = "$(thumbsup)" - } else if(report.type === "Error"){ - item.text = "$(thumbsdown)" + if(report.type === 'Started'){ + item.text = '$(thumbsup)'; + } else if(report.type === 'Error'){ + item.text = '$(thumbsdown)'; } else { item.text = report.message; } - item.command = "java.open.output"; + item.command = 'java.open.output'; item.tooltip = report.message; toggleItem(window.activeTextEditor, item); }); - commands.registerCommand("java.open.output", ()=>{ + commands.registerCommand('java.open.output', ()=>{ languageClient.outputChannel.show(ViewColumn.Three); }); - commands.registerCommand("java.show.references", (uri:string, position: LSPosition, locations:LSLocation[])=>{ + commands.registerCommand('java.show.references', (uri:string, position: LSPosition, locations:LSLocation[])=>{ commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); }); window.onDidChangeActiveTextEditor((editor) =>{ @@ -120,9 +119,9 @@ export function activate(context: ExtensionContext) { }); } }; - workspace.registerTextDocumentContentProvider("jdt", provider) + workspace.registerTextDocumentContentProvider('jdt', provider); - item.text = "Starting Java Language Server..."; + item.text = 'Starting Java Language Server...'; toggleItem(window.activeTextEditor, item); let disposable = languageClient.start(); @@ -133,7 +132,7 @@ export function activate(context: ExtensionContext) { } function toggleItem(editor, item) { - if(editor && editor.document && editor.document.languageId === "java"){ + if(editor && editor.document && editor.document.languageId === 'java'){ item.show(); } else{ item.hide(); @@ -142,14 +141,14 @@ function toggleItem(editor, item) { function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { - let newConfig = workspace.getConfiguration("java"); + let newConfig = workspace.getConfiguration('java'); if (hasJavaConfigChanged(oldConfig, newConfig)) { - let msg = "Java Language Server configuration changed, please restart VS Code."; - let action = "Restart Now"; - let restartId = "workbench.action.reloadWindow"; + let msg = 'Java Language Server configuration changed, please restart VS Code.'; + let action = 'Restart Now'; + let restartId = 'workbench.action.reloadWindow'; oldConfig = newConfig; window.showWarningMessage(msg,action).then((selection )=>{ - if(action == selection) { + if(action === selection) { commands.executeCommand(restartId); } }); @@ -158,12 +157,12 @@ function onConfigurationChange() { } function hasJavaConfigChanged(oldConfig, newConfig) { - return hasConfigKeyChanged("home", oldConfig, newConfig) - || hasConfigKeyChanged("jdt.ls.vmargs", oldConfig, newConfig); + return hasConfigKeyChanged('home', oldConfig, newConfig) + || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig); } function hasConfigKeyChanged(key, oldConfig, newConfig) { - return oldConfig.get(key) != newConfig.get(key); + return oldConfig.get(key) !== newConfig.get(key); } export function parseVMargs(params:any[], vmargsLine:string) { @@ -171,7 +170,7 @@ export function parseVMargs(params:any[], vmargsLine:string) { return; } let vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); - if (vmargs == null) { + if (vmargs === null) { return; } vmargs.forEach (function(arg) { @@ -182,7 +181,7 @@ export function parseVMargs(params:any[], vmargsLine:string) { } function getTempWorkspace() { - return path.resolve(os.tmpdir(),"vscodesws_"+makeRandomHexString(5)); + return path.resolve(os.tmpdir(),'vscodesws_'+makeRandomHexString(5)); } function makeRandomHexString(length) { diff --git a/src/requirements.ts b/src/requirements.ts index 519a94a77..21e44a1e8 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -7,18 +7,18 @@ import * as path from 'path'; import * as downloadManager from './downloadManager'; const pathExists = require('path-exists'); -const expandHomeDir = require('expand-home-dir') +const expandHomeDir = require('expand-home-dir'); const findJavaHome = require('find-java-home'); interface RequirementsData { - java_home: string + java_home: string; } interface ErrorData { - message: string - label: string - openUrl: Uri - replaceClose: boolean + message: string; + label: string; + openUrl: Uri; + replaceClose: boolean; } /** * Resolves the requirements needed to run the extension. @@ -29,19 +29,19 @@ interface ErrorData { */ export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); - let isJava8 = await checkJavaVersion(java_home); - let serverInstalled = await checkServerInstalled(); - return Promise.resolve({ "java_home": java_home }); + await checkJavaVersion(java_home); + await checkServerInstalled(); + return Promise.resolve({ 'java_home': java_home }); } async function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { - const realJavaHome = process.env["JAVA_HOME"] + const realJavaHome = process.env['JAVA_HOME']; const config = workspace.getConfiguration(); let javaHome = config.get('java.home'); - let source = "The JAVA_HOME environment variable"; + let source = 'The JAVA_HOME environment variable'; if (typeof javaHome === 'string') { - source = "The java.home variable defined in VS Code settings"; + source = 'The java.home variable defined in VS Code settings'; } else { javaHome = realJavaHome; } @@ -51,37 +51,39 @@ async function checkJavaRuntime(): Promise { if (exists) { resolve({source, javaHome}); } else { - console.log("Missing "+javaHome); - openJDKDownload(reject, source+" points to a missing folder"); + console.log('Missing '+javaHome); + openJDKDownload(reject, source+' points to a missing folder'); } }); }).then((obj) => { - const originalJavaHome = process.env["JAVA_HOME"]; + const originalJavaHome = process.env['JAVA_HOME']; return new Promise((resolve, reject) => { - let source = obj["source"]; - let javaHome = obj["javaHome"]; - process.env["JAVA_HOME"] = javaHome; + let source = obj['source']; + let javaHome = obj['javaHome']; + process.env['JAVA_HOME'] = javaHome; findJavaHome(function (err, home) { - process.env["JAVA_HOME"]= originalJavaHome; + process.env['JAVA_HOME']= originalJavaHome; if (err){ openJDKDownload(reject, source+" could not be detected, or doesn't point to a JDK."); } else { - console.log("Using JDK found in "+home); + console.log('Using JDK found in '+home); resolve(home); } }); }); - }) + }); } async function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { - let result = cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - if (stderr.indexOf('1.8') < 0) - openJDKDownload(reject, "Java 8 is required to run. Please download and install a JDK 8."); - else + cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { + if (stderr.indexOf('1.8') < 0){ + openJDKDownload(reject, 'Java 8 is required to run. Please download and install a JDK 8.'); + } + else{ resolve(true); + } }); }); } @@ -103,11 +105,11 @@ async function checkServerInstalled(): Promise { function openJDKDownload(reject, cause) { let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/'; if (process.platform === 'darwin') { - jdkUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/index.html' + jdkUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/index.html'; } reject({ message: cause, - label: "Get Java Development Kit", + label: 'Get Java Development Kit', openUrl: Uri.parse(jdkUrl), replaceClose: false }); diff --git a/test/downloadManager.test.ts b/test/downloadManager.test.ts index da22e793f..3c0e97dfc 100644 --- a/test/downloadManager.test.ts +++ b/test/downloadManager.test.ts @@ -1,14 +1,13 @@ import * as assert from 'assert'; import * as path from 'path'; import * as fs from 'fs'; -import * as vscode from 'vscode'; import * as downloadManager from '../src/downloadManager'; -suite("Java Language Extension downloadManager tests", () => { +suite('Java Language Extension downloadManager tests', () => { // Defines a Mocha unit test - test("Download server", function(done ) { + test('Download server', function(done ) { this.timeout(2*60*1000); return downloadManager.downloadAndInstallServer() .then(() => { @@ -16,7 +15,7 @@ suite("Java Language Extension downloadManager tests", () => { try { console.log(pluginsPath); let isDirectory = fs.lstatSync(pluginsPath); - assert.ok(isDirectory,"plugins folder is not found"); + assert.ok(isDirectory,'plugins folder is not found'); } catch (err) { assert.ifError(err); diff --git a/test/extension.test.ts b/test/extension.test.ts index 438ffefe8..cb1748415 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -2,42 +2,42 @@ import * as assert from 'assert'; import * as vscode from 'vscode'; import * as java from '../src/extension'; -suite("Java Language Extension", () => { +suite('Java Language Extension', () => { - test("should be present", () => { + test('should be present', () => { assert.ok(vscode.extensions.getExtension('redhat.java')); }); - test("should activate", function (done) { + test('should activate', function (done) { this.timeout(1 * 60 * 1000); return vscode.extensions.getExtension('redhat.java').activate().then((api) => { done(); }); }); - test("should register all java commands", function (done) { + test('should register all java commands', function (done) { return vscode.commands.getCommands(true).then((commands) => { let javaCmds = commands.filter(function(value){ - return "java.open.output" === value || - "java.show.references" === value; + return 'java.open.output' === value || + 'java.show.references' === value; }); - assert.ok(javaCmds.length == 2, "missing java commands"); + assert.ok(javaCmds.length === 2, 'missing java commands'); done(); }); }); - test("should parse VM arguments", function (done) { - let userArgs = "-Xmx512m -noverify -Dfoo=\"something with blank\" "; - let vmArgs = ["-noverify", "foo"]; + test('should parse VM arguments', function (done) { + let userArgs = '-Xmx512m -noverify -Dfoo=\"something with blank\" '; + let vmArgs = ['-noverify', 'foo']; java.parseVMargs(vmArgs, userArgs); assert.equal(4, vmArgs.length); - assert.equal("-noverify", vmArgs[0]); - assert.equal("foo", vmArgs[1]); - assert.equal("-Xmx512m", vmArgs[2]); - assert.equal("-Dfoo=\"something with blank\"", vmArgs[3]); + assert.equal('-noverify', vmArgs[0]); + assert.equal('foo', vmArgs[1]); + assert.equal('-Xmx512m', vmArgs[2]); + assert.equal('-Dfoo=\"something with blank\"', vmArgs[3]); done(); }); diff --git a/tslint.json b/tslint.json new file mode 100644 index 000000000..3233a4ed3 --- /dev/null +++ b/tslint.json @@ -0,0 +1,13 @@ +{ + "rules": { + "no-unused-expression": true, + "no-duplicate-variable": true, + "no-duplicate-key": true, + "no-unused-variable": true, + "curly": true, + "class-name": true, + "semicolon": ["always"], + "triple-equals": true, + "quotemark": [true, "single", "avoid-escape"] + } +} \ No newline at end of file From 810cc60af28fbe22ff27863455fd56e77d24dbdb Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Oct 2016 14:24:49 -0400 Subject: [PATCH 0035/1435] Fix #65 add support for JDK_HOME (#66) Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ README.md | 17 +++++++++++++---- src/requirements.ts | 14 +++++++++++--- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cda8bfadb..ec9e0d236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.0.6 +* enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). + ## 0.0.5 * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). diff --git a/README.md b/README.md index 87db28b92..0f8f54858 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Provides Java ™ language support via Quick Start ============ 1. Install the Extension -2. If you do not have a _Java 8_ Development Kit on current system path or _JAVA_HOME_ is not correctly set to point to one +2. If you do not have a _Java 8_ Development Kit correctly [set](#setting-the-jdk) * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file. * Initial activation can be longer since it requires extension to download additional parts. @@ -33,8 +33,17 @@ Features See the [changelog](CHANGELOG.md) for the latest release. -Supported settings -================== +Setting the JDK +=============== +The path to the Java Development Kit is searched in the following order: + +- the `java.home` setting in VS Code settings (workspace then user settings) +- the `JDK_HOME` environment variable +- the `JAVA_HOME` environment variable +- on the current system path + +Supported VS Code settings +========================== Starting from version 0.0.5, the following settings are supported: * `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. @@ -43,7 +52,7 @@ Starting from version 0.0.5, the following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.5/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.6/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/src/requirements.ts b/src/requirements.ts index 21e44a1e8..50d074014 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -36,19 +36,27 @@ export async function resolveRequirements(): Promise { async function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { - const realJavaHome = process.env['JAVA_HOME']; + const config = workspace.getConfiguration(); let javaHome = config.get('java.home'); - let source = 'The JAVA_HOME environment variable'; + let source; if (typeof javaHome === 'string') { source = 'The java.home variable defined in VS Code settings'; } else { - javaHome = realJavaHome; + let jdkHome = process.env['JDK_HOME']; + if (jdkHome) { + javaHome = jdkHome; + source = 'The JDK_HOME environment variable' + } else { + javaHome = process.env['JAVA_HOME']; + source = 'The JAVA_HOME environment variable'; + } } javaHome = expandHomeDir(javaHome); return pathExists(javaHome).then (exists => { if (exists) { + console.log(source + ' defines the Java runtime.'); resolve({source, javaHome}); } else { console.log('Missing '+javaHome); From a48aa9927417c53eef8ce42104e5158519999971 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 17 Oct 2016 15:09:33 -0400 Subject: [PATCH 0036/1435] Add tslint as a dev dependency. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 23333b4f2..c5ad9fa9f 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,8 @@ "@types/node": "^6.0.40", "@types/mocha": "^2.2.32", "gulp" :"^3.9.1", - "gulp-tslint": "^6.1.2" + "gulp-tslint": "^6.1.2", + "tslint" : "^3.15.1" }, "dependencies": { "vscode-languageclient": "^2.6.0", From 94757deef338d5577b511147febf1d9d020b8ad6 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 24 Oct 2016 12:43:36 -0400 Subject: [PATCH 0037/1435] update changelog Added new items for 0.0.6 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec9e0d236..ed716aa0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log ## 0.0.6 +* enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50) +* enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58) +* enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47) * enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). ## 0.0.5 From 9de94901e7cb2f829e74f748ae96a6c211e219da Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 28 Oct 2016 17:31:51 -0400 Subject: [PATCH 0038/1435] Changes to java detection Changes requirements check, removes the temporary JAVA_HOME change which was causing problems in some cases. Also uses a find-java-home library which has fixes for windows registry discovery. Fixes #74 , #63 --- package.json | 2 +- src/requirements.ts | 63 +++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index c5ad9fa9f..d3d3d4117 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ }, "dependencies": { "vscode-languageclient": "^2.6.0", - "find-java-home": "^0.1.3", + "find-java-home": "git+https://github.com/gorkem/node-find-java-home.git#registry_fix", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", "tmp" : "^0.0.29", diff --git a/src/requirements.ts b/src/requirements.ts index 50d074014..8cb6738b4 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -9,6 +9,8 @@ import * as downloadManager from './downloadManager'; const pathExists = require('path-exists'); const expandHomeDir = require('expand-home-dir'); const findJavaHome = require('find-java-home'); +const isWindows = process.platform.indexOf('win') === 0; +const JAVAC_FILENAME = 'javac' + (isWindows?'.exe':''); interface RequirementsData { java_home: string; @@ -34,56 +36,49 @@ export async function resolveRequirements(): Promise { return Promise.resolve({ 'java_home': java_home }); } -async function checkJavaRuntime(): Promise { +function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { - - const config = workspace.getConfiguration(); - let javaHome = config.get('java.home'); - let source; - if (typeof javaHome === 'string') { + let source : string; + let javaHome : string = readJavaConfig(); + if (javaHome) { source = 'The java.home variable defined in VS Code settings'; } else { - let jdkHome = process.env['JDK_HOME']; - if (jdkHome) { - javaHome = jdkHome; - source = 'The JDK_HOME environment variable' + javaHome = process.env['JDK_HOME']; + if (javaHome) { + source = 'The JDK_HOME environment variable'; } else { javaHome = process.env['JAVA_HOME']; source = 'The JAVA_HOME environment variable'; } } - javaHome = expandHomeDir(javaHome); - - return pathExists(javaHome).then (exists => { - if (exists) { - console.log(source + ' defines the Java runtime.'); - resolve({source, javaHome}); - } else { - console.log('Missing '+javaHome); - openJDKDownload(reject, source+' points to a missing folder'); - } - }); - }).then((obj) => { - const originalJavaHome = process.env['JAVA_HOME']; - return new Promise((resolve, reject) => { - let source = obj['source']; - let javaHome = obj['javaHome']; - process.env['JAVA_HOME'] = javaHome; - findJavaHome(function (err, home) { - process.env['JAVA_HOME']= originalJavaHome; + if(javaHome ){ + javaHome = expandHomeDir(javaHome); + if(!pathExists.sync(javaHome)){ + openJDKDownload(reject, source+' points to a missing folder'); + } + if(!pathExists.sync(path.resolve(javaHome, 'bin', JAVAC_FILENAME))){ + openJDKDownload(reject, source+ ' does not point to a JDK.'); + } + return resolve(javaHome); + } + //No settings, let's try to detect as last resort. + findJavaHome(function (err, home) { if (err){ - openJDKDownload(reject, source+" could not be detected, or doesn't point to a JDK."); + openJDKDownload(reject,'Java runtime could not be located'); } else { - console.log('Using JDK found in '+home); resolve(home); } }); - }); }); } -async function checkJavaVersion(java_home: string): Promise { +function readJavaConfig() : string { + const config = workspace.getConfiguration(); + return config.get('java.home',null); +} + +function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { if (stderr.indexOf('1.8') < 0){ @@ -96,7 +91,7 @@ async function checkJavaVersion(java_home: string): Promise { }); } -async function checkServerInstalled(): Promise { +function checkServerInstalled(): Promise { let pluginsPath = path.resolve(__dirname, '../../server/plugins'); try { let isDirectory = fs.lstatSync(pluginsPath); From 2a1cc6e8ac97c5a268464f4e55b6d8fd3fa1239f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Oct 2016 11:58:49 -0400 Subject: [PATCH 0039/1435] Log JLS execution command Signed-off-by: Fred Bricon --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index c57925ee0..fc06a3410 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -57,7 +57,7 @@ function runJavaServer(){ let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); parseVMargs(params, vmargs); - + console.log('Executing '+ child + ' '+ params.join(' ')); electron.fork(child, params, {}, function(err, result) { if(err) { reject(err); } if(result){ resolve(result); } From 4d52e0172f14508fc24ba52335fc4252b1cd06cc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 31 Oct 2016 17:37:34 -0400 Subject: [PATCH 0040/1435] Fix #83 add some Java snippets Signed-off-by: Fred Bricon --- package.json | 4 + snippets/java.json | 197 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100644 snippets/java.json diff --git a/package.json b/package.json index d3d3d4117..7c69bb889 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,10 @@ "id": "java", "extensions": [ ".class" ] }], + "snippets": [{ + "language": "java", + "path": "./snippets/java.json" + }], "configuration": { "type": "object", "title": "Java configuration", diff --git a/snippets/java.json b/snippets/java.json new file mode 100644 index 000000000..433b79744 --- /dev/null +++ b/snippets/java.json @@ -0,0 +1,197 @@ +{ + "main": { + "prefix": "main", + "body": [ + "public static void main(String[] args) {", + "\t$1", + "}" + ], + "description": "Public static main method" + }, + "sysout": { + "prefix": "sysout", + "body": [ + "System.out.println($1);" + ], + "description": "Print to standard out" + }, + "syserr": { + "prefix": "syserr", + "body": [ + "System.err.println($1);" + ], + "description": "Print to standard err" + }, + "foreach": { + "prefix": "foreach", + "body": [ + "for (${type} ${var} : ${iterable}) {", + "\t$4", + "}" + ], + "description": "Enhanced for loop" + }, + "Public constructor": { + "prefix": "ctor", + "body": [ + "public ${name}($1) {", + "\tsuper();", + "\t$0", + "}" + ], + "description": "Public constructor" + }, + "Class Definition": { + "prefix": "class", + "body": [ + "/**", + " * ${name}", + " */", + "public class ${name} {", + "", + "\tpublic ${name} (${parameters}) {", + "\t\t$0", + "\t}", + "}" + ], + "description": "Class Definition" + }, + "Interface Definition": { + "prefix": "interface", + "body": [ + "/**", + " * ${name}", + " */", + "public interface ${name} {", + "\t$0", + "}" + ], + "description": "Interface Definition" + }, + "if": { + "prefix": "if", + "body": [ + "if (${condition}) {", + "\t$2", + "}" + ], + "description": "if statement" + }, + "ifelse": { + "prefix": "ifelse", + "body": [ + "if (${condition}) {", + "\t$2", + "} else {", + "\t$3", + "}" + ], + "description": "if/else statement" + }, + "ifnull": { + "prefix": "ifnull", + "body": [ + "if (${condition} == null) {", + "\t$2", + "}" + ], + "description": "if statement checking for null" + }, + "ifnotnull": { + "prefix": "ifnotnull", + "body": [ + "if (${condition} != null) {", + "\t$2", + "}" + ], + "description": "if statement checking for not null" + }, + "trycatch": { + "prefix": "try_catch", + "body": [ + "try {", + "\t$1", + "} catch (${Exception} ${e}) {", + "\t$4//${TODO}: handle exception", + "}" + ], + "description": "try/catch block" + }, + "private_method": { + "prefix": "private_method", + "body": [ + "private ${Type} ${name}(${3}) {", + "\t$4", + "}" + ], + "description": "private method" + }, + "Public method": { + "prefix": "public_method", + "body": [ + "public ${Type} ${name}(${3}) {", + "\t$4", + "}" + ], + "description": "public method" + }, + "Private static method": { + "prefix": "private_static_method", + "body": [ + "private static ${Type} ${name}(${3}) {", + "\t$4", + "}" + ], + "description": "private static method" + }, + "Public static method": { + "prefix": "public_static_method", + "body": [ + "public static ${Type} ${name}(${3}) {", + "\t$4", + "}" + ], + "description": "public static method" + }, + "Protected Method": { + "prefix": "protected_method", + "body": [ + "protected ${Type} ${name}(${3}) {", + "\t$4", + "}" + ], + "description": "Protected method" + }, + "Switch Statement": { + "prefix": "switch", + "body": [ + "switch (${key}) {", + "\tcase ${value}:", + "\t\t$0", + "\t\tbreak;", + "", + "\tdefault:", + "\t\tbreak;", + "}" + ], + "description": "Switch Statement" + }, + "While Statement": { + "prefix": "while", + "body": [ + "while (${condition}) {", + "\t$0", + "}" + ], + "description": "While Statement" + }, + "Do-While Statement": { + "prefix": "dowhile", + "body": [ + "do {", + "\t$0", + "} while (${condition});" + ], + "description": "Do-While Statement" + } +} \ No newline at end of file From 7001af6209325f5f9c4d1b5831f66159968a1570 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 1 Nov 2016 14:41:13 -0400 Subject: [PATCH 0041/1435] Update changelog and readme Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 +++++++--- README.md | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed716aa0a..49624c8d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Change Log ## 0.0.6 -* enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50) -* enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58) -* enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47) +* enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). +* enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58). +* enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). * enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). +* enhancement - add Java code snippets. See [#83](https://github.com/redhat-developer/vscode-java/issues/83). +* bug fix - fix errors thrown when opening a standalone file. See [#55](https://github.com/redhat-developer/vscode-java/issues/55), [#67](https://github.com/redhat-developer/vscode-java/issues/67). +* bug fix - fix JAVA_HOME detection mechanism. See [#74](https://github.com/redhat-developer/vscode-java/issues/74). + ## 0.0.5 * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). diff --git a/README.md b/README.md index 0f8f54858..48bf547c4 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Features * Code lens (references) * Highlights * Code formatting +* Code snippets See the [changelog](CHANGELOG.md) for the latest release. From 7d6326b95442993773988aac5ba42916c4a6fcb8 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 1 Nov 2016 14:55:22 -0400 Subject: [PATCH 0042/1435] update download url for 0.0.6 --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index c39f0a34c..1cf1db252 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201610132107.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201611011844.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 6b9f26263b0d9b933c5ef3d5606e16040e9447c8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 1 Nov 2016 18:11:59 -0400 Subject: [PATCH 0043/1435] Bump version to 0.0.7 Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++-- README.md | 2 +- package.json | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49624c8d0..ac338efe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log -## 0.0.6 +## 0.0.7 +...wait for it... + +## 0.0.6 (November 1, 2016) * enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). * enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58). * enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). @@ -10,7 +13,7 @@ * bug fix - fix JAVA_HOME detection mechanism. See [#74](https://github.com/redhat-developer/vscode-java/issues/74). -## 0.0.5 +## 0.0.5 (October 13, 2016) * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). * enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). diff --git a/README.md b/README.md index 48bf547c4..db9cf87a2 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Starting from version 0.0.5, the following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.6/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.7/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 7c69bb889..6e425a9a2 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.6", + "version": "0.0.7", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 3f3471e37c1c87c13b59dec8e8f52d84b827426e Mon Sep 17 00:00:00 2001 From: Jacek Pospychala Date: Wed, 2 Nov 2016 23:11:39 +0100 Subject: [PATCH 0044/1435] move jdt.ls.vmargs before "-jar" in order to work --- src/extension.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index fc06a3410..cb1a17361 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -44,6 +44,9 @@ function runJavaServer(){ params.push('-Dlog.level=ALL'); } + let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); + parseVMargs(params, vmargs); + params.push('-jar'); params.push(path.resolve( __dirname ,'../../server/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar')); //select configuration directory according to OS let configDir = 'config_win'; @@ -55,8 +58,6 @@ function runJavaServer(){ params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); params.push('-data'); params.push(workspacePath); - let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); - parseVMargs(params, vmargs); console.log('Executing '+ child + ' '+ params.join(' ')); electron.fork(child, params, {}, function(err, result) { if(err) { reject(err); } From 7f80cbb4723fea19bea741f4477e3dc1b84c800d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 3 Nov 2016 10:42:45 -0400 Subject: [PATCH 0045/1435] Fix #90 add an ISSUE_TEMPLATE.md Signed-off-by: Fred Bricon --- .github/ISSUE_TEMPLATE.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..273f56a0b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,19 @@ +[provide a description of the issue] + +##### Environment +- Operating System: +- JDK version: +- Visual Studio Code version: +- Java extension version: + +##### Steps To Reproduce +1. [step 1] +2. [step 2] + +[attach a sample project reproducing the error] + +##### Current Result + +##### Expected Result + +##### Additional Informations From 40205cdc5dd8b7042368c3f68233956e09916258 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 1 Nov 2016 08:33:36 -0400 Subject: [PATCH 0046/1435] Start server with pom.xml adds pom.xml as workspaceContains activation Fixes #84 --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6e425a9a2..fc43efa4d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "activationEvents": [ "onLanguage:java", "onCommand:java.show.references", - "onCommand:java.open.output" + "onCommand:java.open.output", + "workspaceContains:pom.xml" ], "main": "./out/src/extension", "contributes": { From 5ad50dd0d44cc88f0cff29c66347b836e9559d8f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 23 Nov 2016 16:34:18 -0500 Subject: [PATCH 0047/1435] Update changelog for 0.0.7 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac338efe9..405aab539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,11 @@ # Change Log -## 0.0.7 -...wait for it... +## 0.0.7 (November 23, 2016) +* enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). +* enhancement - Start Java Language Server when pom.xml is detected. See [#84](https://github.com/redhat-developer/vscode-java/issues/84). +* bug fix - fix out of synch error markers. See [#87](https://github.com/redhat-developer/vscode-java/issues/87) +* bug fix - fix missing generic types in autocompletion. See [#69](https://github.com/redhat-developer/vscode-java/issues/69). +* bug fix - fix ignored `jdt.ls.vmargs`. See [#88](https://github.com/redhat-developer/vscode-java/pull/88). ## 0.0.6 (November 1, 2016) * enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). From e4efc9f794914f76aaf432fb4162f6bf6e838f80 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 23 Nov 2016 16:35:34 -0500 Subject: [PATCH 0048/1435] Update link to JLS binary Signed-off-by: Fred Bricon --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 1cf1db252..9decabd44 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201611011844.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201611232122.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 1ac73b4b7f41aa2c9e744d86c401e28d835f3eea Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 24 Nov 2016 17:30:31 -0500 Subject: [PATCH 0049/1435] Bump up the version to 0.0.8 --- CHANGELOG.md | 3 +++ package.json | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 405aab539..a32813b1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.0.8 (December 2016) +... + ## 0.0.7 (November 23, 2016) * enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). * enhancement - Start Java Language Server when pom.xml is detected. See [#84](https://github.com/redhat-developer/vscode-java/issues/84). diff --git a/package.json b/package.json index fc43efa4d..240f8d608 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.7", + "version": "0.0.8", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -66,7 +66,7 @@ "vscode": "^1.0.0", "mocha": "^2.3.3", "@types/node": "^6.0.40", - "@types/mocha": "^2.2.32", + "@types/mocha": "^2.2.32", "gulp" :"^3.9.1", "gulp-tslint": "^6.1.2", "tslint" : "^3.15.1" From baee05cf38191095740d31c8ad4cd384382a596a Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 25 Nov 2016 20:37:13 -0500 Subject: [PATCH 0050/1435] make server launcher discoverable Search server_home for a equinox launcher instead of the fixed launcher. --- package.json | 4 +++- src/extension.ts | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 240f8d608..33509aa53 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "mocha": "^2.3.3", "@types/node": "^6.0.40", "@types/mocha": "^2.2.32", + "@types/glob":"5.0.30", "gulp" :"^3.9.1", "gulp-tslint": "^6.1.2", "tslint" : "^3.15.1" @@ -80,6 +81,7 @@ "decompress": "^4.0.0", "progress-stream": "^1.2.0", "path-exists":"^3.0.0", - "expand-home-dir":"^0.0.3" + "expand-home-dir":"^0.0.3", + "glob":"^7.1.1" } } diff --git a/src/extension.ts b/src/extension.ts index cb1a17361..0cba1f4bb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,6 +6,7 @@ import { workspace, ExtensionContext, window, StatusBarAlignment, commands, View import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; var electron = require('./electron_j'); var os = require('os'); +var glob = require('glob'); import * as requirements from './requirements'; import { StatusNotification,ClassFileContentsRequest } from './protocol'; @@ -46,8 +47,14 @@ function runJavaServer(){ let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); parseVMargs(params, vmargs); - - params.push('-jar'); params.push(path.resolve( __dirname ,'../../server/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar')); + let server_home :string = path.resolve( __dirname,'../../server'); + let launchersFound:Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', {cwd: server_home }); + if( launchersFound.length ){ + params.push('-jar'); params.push(path.resolve(server_home,launchersFound[0])); + }else{ + reject('failed to find launcher'); + } + //select configuration directory according to OS let configDir = 'config_win'; if (process.platform === 'darwin') { From 8b73aca0a0db37b46eaad954066a9308a6760312 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 28 Nov 2016 11:55:34 -0500 Subject: [PATCH 0051/1435] Initialize JLS when build.gradle is present Signed-off-by: Fred Bricon --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 33509aa53..75a69cc7e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "onLanguage:java", "onCommand:java.show.references", "onCommand:java.open.output", - "workspaceContains:pom.xml" + "workspaceContains:pom.xml", + "workspaceContains:build.gradle" ], "main": "./out/src/extension", "contributes": { From f9f7c2e1d85c03c9300bfb5a238991e60ec8b4d7 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 2 Dec 2016 12:11:51 -0500 Subject: [PATCH 0052/1435] Watch pom.xml changes. Fixes #17 Signed-off-by: Fred Bricon --- src/extension.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 0cba1f4bb..c851bb48c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -88,7 +88,10 @@ export function activate(context: ExtensionContext) { documentSelector: ['java'], synchronize: { // Notify the server about file changes to .java files contain in the workspace - fileEvents: workspace.createFileSystemWatcher('**/*.java') + fileEvents: [ + workspace.createFileSystemWatcher('**/*.java'), + workspace.createFileSystemWatcher('**/pom.xml') + ], } }; From 0b61dc604752dd8bdaef7e403c1ea7b2fe7c21fc Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 2 Dec 2016 21:38:37 -0500 Subject: [PATCH 0053/1435] Add editorconfig file Adds editorconfig file and the extension as recommendation. --- .editorconfig | 9 +++++++++ .vscode/extensions.json | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..f9cfb08d8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +# Tab indentation +[*] +indent_style = tab +indent_size = 4 +trim_trailing_whitespace = true + +[{.travis.yml,npm-shrinkwrap.json,package.json}] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 49aa7ee05..ad475c77a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ // for the documentation about the extensions.json format "recommendations": [ // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - "eg2.tslint" + "eg2.tslint", + "EditorConfig.EditorConfig" ] } \ No newline at end of file From d3bf77f1014961a58accf1f5c4adad02cb6be6be Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Sun, 11 Dec 2016 11:38:26 -0500 Subject: [PATCH 0054/1435] add configuration synchronize for java section Syncronizes the java configuration to LanguageClient which notifies the server of configuration changes. This allows LanguageClient traces to be enabled and server configuration changes to work again. --- src/extension.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index c851bb48c..61311236a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -44,12 +44,12 @@ function runJavaServer(){ params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); } - + let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); parseVMargs(params, vmargs); let server_home :string = path.resolve( __dirname,'../../server'); let launchersFound:Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', {cwd: server_home }); - if( launchersFound.length ){ + if( launchersFound.length ){ params.push('-jar'); params.push(path.resolve(server_home,launchersFound[0])); }else{ reject('failed to find launcher'); @@ -87,6 +87,7 @@ export function activate(context: ExtensionContext) { // Register the server for java documentSelector: ['java'], synchronize: { + configurationSection: 'java', // Notify the server about file changes to .java files contain in the workspace fileEvents: [ workspace.createFileSystemWatcher('**/*.java'), @@ -94,7 +95,7 @@ export function activate(context: ExtensionContext) { ], } }; - + let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); oldConfig = workspace.getConfiguration('java'); // Create the language client and start the client. @@ -121,11 +122,11 @@ export function activate(context: ExtensionContext) { window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); - + let provider: TextDocumentContentProvider= { onDidChange: null, provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { - return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string):string => { + return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string):string => { return v || ''; }); } @@ -135,8 +136,8 @@ export function activate(context: ExtensionContext) { item.text = 'Starting Java Language Server...'; toggleItem(window.activeTextEditor, item); let disposable = languageClient.start(); - - // Push the disposable to the context's subscriptions so that the + + // Push the disposable to the context's subscriptions so that the // client can be deactivated on extension deactivation context.subscriptions.push(disposable); context.subscriptions.push(onConfigurationChange()); From a7f2dcec524f89d6c981b42781a92fabb4c39129 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Sun, 11 Dec 2016 13:02:43 -0500 Subject: [PATCH 0055/1435] Adjust to LanguageClient api changes Adds the type info to satisfy typescript compiler --- src/extension.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 61311236a..cf5cf5556 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; -import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; +import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); @@ -16,7 +16,7 @@ const DEBUG = ( typeof v8debug === 'object') || startedInDebugMode(); var storagePath; var oldConfig; -function runJavaServer(){ +function runJavaServer() : Thenable { return requirements.resolveRequirements().catch(error =>{ //show error window.showErrorMessage(error.message, error.label).then((selection )=>{ @@ -27,7 +27,8 @@ function runJavaServer(){ // rethrow to disrupt the chain. throw error; }) - .then(requirements => new Promise(function(resolve, reject){ + .then(requirements => { + return new Promise(function(resolve, reject){ let child = path.resolve (requirements.java_home + '/bin/java'); let params = []; let workspacePath = path.resolve( storagePath+'/jdt_ws'); @@ -70,7 +71,8 @@ function runJavaServer(){ if(err) { reject(err); } if(result){ resolve(result); } }); - })); + }); + }); } export function activate(context: ExtensionContext) { From 1e6a7092cdd755a5c5b1c8b8ca39336cb408279a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Dec 2016 12:51:31 -0500 Subject: [PATCH 0056/1435] Rename java.ClassFileContents request to java.classFileContents This is a consequence of https://github.com/gorkem/java-language-server/issues/111 Signed-off-by: Fred Bricon --- src/protocol.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/protocol.ts b/src/protocol.ts index c98644f70..536c6c12e 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -12,5 +12,5 @@ export namespace StatusNotification { } export namespace ClassFileContentsRequest { - export const type: RequestType = { get method() { return 'java/ClassFileContents'; }}; + export const type: RequestType = { get method() { return 'java/classFileContents'; }}; } From 6470931668138fcc7bd7002c44b29c8c9165d7ef Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 6 Dec 2016 12:55:26 -0500 Subject: [PATCH 0057/1435] Update Project Configuration command. Fixes #113 Signed-off-by: Fred Bricon --- CHANGELOG.md | 18 +++++++++--------- package.json | 15 ++++++++++++++- src/extension.ts | 39 ++++++++++++++++++++++++++++++++++----- src/protocol.ts | 4 ++++ 4 files changed, 61 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a32813b1e..dec488c7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Change Log ## 0.0.8 (December 2016) -... +* enhancement - new `Update project configuration` command (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS). See [#113](https://github.com/redhat-developer/vscode-java/issues/113). ## 0.0.7 (November 23, 2016) * enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). @@ -14,24 +14,24 @@ * enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). * enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58). * enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). -* enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). +* enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). * enhancement - add Java code snippets. See [#83](https://github.com/redhat-developer/vscode-java/issues/83). * bug fix - fix errors thrown when opening a standalone file. See [#55](https://github.com/redhat-developer/vscode-java/issues/55), [#67](https://github.com/redhat-developer/vscode-java/issues/67). * bug fix - fix JAVA_HOME detection mechanism. See [#74](https://github.com/redhat-developer/vscode-java/issues/74). ## 0.0.5 (October 13, 2016) -* enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). -* enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). +* enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). +* enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). * enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). -* enhancement - add feedback when starting the Java Language Server. See [#49](https://github.com/redhat-developer/vscode-java/issues/49). +* enhancement - add feedback when starting the Java Language Server. See [#49](https://github.com/redhat-developer/vscode-java/issues/49). * enhancement - add hover for package fragments. See [JLS#84](https://github.com/gorkem/java-language-server/pull/84). * enhancement - better relevance for code completion. See [JLS#77](https://github.com/gorkem/java-language-server/pull/77). * bug fix - fix Java Language Server downloading when using a Proxy (take 2). See [#42](https://github.com/redhat-developer/vscode-java/issues/42). * bug fix - fix race condition on Java Language Server start. See [JLS#81](https://github.com/gorkem/java-language-server/pull/81). ## 0.0.4 (September 26, 2016) -* enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). +* enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/redhat-developer/vscode-java/issues/20). * enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/redhat-developer/vscode-java/issues/21). * enhancement - provide link to Oracle JDK downloads on MacOS. See [#37](https://github.com/redhat-developer/vscode-java/issues/37). @@ -44,7 +44,7 @@ ## 0.0.3 (September 16, 2016) * enhancement - In addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). * enhancement - Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code -* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). +* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). * bug fix - Opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). ## 0.0.2 (September 14, 2016) @@ -52,10 +52,10 @@ ## 0.0.1 (September 12, 2016) * Maven pom.xml project support -* Basic Eclipse Java project support +* Basic Eclipse Java project support * As you type reporting of parsing and compilation errors * Code completion -* Javadoc hovers +* Javadoc hovers * Code outline * Code navigation * Code lens (references) diff --git a/package.json b/package.json index 75a69cc7e..e72e9962f 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,20 @@ "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G` to bypass class verification and increase the heap size to 1GB" } } - } + }, + "commands": [{ + "command": "java.project.configuration.update", + "title": "Update project configuration", + "category": "Java" + } + ], + "keybindings": [{ + "command": "java.project.configuration.update", + "key": "ctrl+alt+u", + "mac": "cmd+alt+u", + "when": "editorFocus" + } + ] }, "scripts": { "vscode:prepublish": "tsc -p ./", diff --git a/src/extension.ts b/src/extension.ts index cf5cf5556..848569cd6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,13 +2,14 @@ 'use strict'; import * as path from 'path'; -import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider } from 'vscode'; +import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor } from 'vscode'; import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; + var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); import * as requirements from './requirements'; -import { StatusNotification,ClassFileContentsRequest } from './protocol'; +import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest } from './protocol'; declare var v8debug; @@ -16,6 +17,7 @@ const DEBUG = ( typeof v8debug === 'object') || startedInDebugMode(); var storagePath; var oldConfig; +var lastStatus; function runJavaServer() : Thenable { return requirements.resolveRequirements().catch(error =>{ //show error @@ -106,10 +108,13 @@ export function activate(context: ExtensionContext) { console.log(report.message); if(report.type === 'Started'){ item.text = '$(thumbsup)'; + lastStatus = item.text; } else if(report.type === 'Error'){ item.text = '$(thumbsdown)'; - } else { + lastStatus = item.text; + } else if(report.type === 'Message') { item.text = report.message; + setTimeout(()=> {item.text = lastStatus;}, 3000); } item.command = 'java.open.output'; item.tooltip = report.message; @@ -121,6 +126,11 @@ export function activate(context: ExtensionContext) { commands.registerCommand('java.show.references', (uri:string, position: LSPosition, locations:LSLocation[])=>{ commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); }); + + + + commands.registerCommand('java.project.configuration.update', uri => projectConfigurationUpdate(languageClient, uri)); + window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); @@ -145,14 +155,33 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(onConfigurationChange()); } -function toggleItem(editor, item) { - if(editor && editor.document && editor.document.languageId === 'java'){ +function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { + let resource = uri; + if (!(resource instanceof Uri)) { + if (window.activeTextEditor) { + resource = window.activeTextEditor.document.uri; + } + } + if (isJavaConfigFile(resource.path)){ + languageClient.sendNotification(ProjectConfigurationUpdateRequest.type, { + uri: resource.toString() + }); + } +} + +function toggleItem(editor: TextEditor, item) { + if(editor && editor.document && + (editor.document.languageId === 'java' || isJavaConfigFile(editor.document.uri.path))){ item.show(); } else{ item.hide(); } } +function isJavaConfigFile(path:String) { + return path.endsWith('pom.xml') || path.endsWith('.gradle'); +} + function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { let newConfig = workspace.getConfiguration('java'); diff --git a/src/protocol.ts b/src/protocol.ts index 536c6c12e..268895dd2 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -14,3 +14,7 @@ export namespace StatusNotification { export namespace ClassFileContentsRequest { export const type: RequestType = { get method() { return 'java/classFileContents'; }}; } + +export namespace ProjectConfigurationUpdateRequest { + export const type: NotificationType = { get method() { return 'java/projectConfigurationUpdate'; }}; +} \ No newline at end of file From 511779e4a8ee7de968162551310eeae16f8bd5d6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Dec 2016 13:53:28 -0500 Subject: [PATCH 0058/1435] Update changelog following #113 Signed-off-by: Fred Bricon --- README.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index db9cf87a2..b363d218a 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,17 @@ Quick Start * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file. * Initial activation can be longer since it requires extension to download additional parts. - * Recognizes only projects with *maven* build files on the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. + * Recognizes only projects with *maven* build files on the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. -Features +Features ========= ![ screencast ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/vscode-java.0.0.1.gif) * Maven pom.xml project support -* Basic Eclipse Java project support +* Basic Eclipse Java project support * As you type reporting of parsing and compilation errors * Code completion -* Javadoc hovers +* Javadoc hovers * Code outline * Code navigation * Code lens (references) @@ -43,6 +43,11 @@ The path to the Java Development Kit is searched in the following order: - the `JAVA_HOME` environment variable - on the current system path +Available commands +========================== +Starting from version 0.0.8, the following command is available: +- Update Project configuration (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. + Supported VS Code settings ========================== Starting from version 0.0.5, the following settings are supported: @@ -52,13 +57,13 @@ Starting from version 0.0.5, the following settings are supported: Troubleshooting =============== -1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.7/server` folder. +1. Due to size restrictions on the marketplace extension downloads additional required parts check that they +are downloaded under `~/.vscode/extensions/redhat.java-0.0.7/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). -It should show ready (thumbs up) as on the image below. You can click on the status and open the -language tool logs for further information in case of a failure. +It should show ready (thumbs up) as on the image below. You can click on the status and open the +language tool logs for further information in case of a failure. ![ status indicator ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/statusMarker.png) @@ -66,7 +71,7 @@ language tool logs for further information in case of a failure. Contributing =============== -This is an open source project open to anyone. Contributions are extremely welcome +This is an open source project open to anyone. Contributions are extremely welcome For information on getting started refer to [java-language-server](https://github.com/gorkem/java-language-server/blob/master/README.md). From a053378dedaddc8468c345e5bae74ac6ff3e033b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 16 Dec 2016 13:30:06 -0500 Subject: [PATCH 0059/1435] Add option to disable incomplete classpath warning. Fixes #107 Signed-off-by: Fred Bricon --- package.json | 25 ++++++++++----- src/extension.ts | 82 ++++++++++++++++++++++++++++++++++++++---------- src/protocol.ts | 34 ++++++++++++++++++++ 3 files changed, 117 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index e72e9962f..416197055 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,17 @@ "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.5.0" + "vscode": "^1.7.0" }, "repository": { "type": "git", "url": "https://github.com/redhat-developer/vscode-java" }, - "categories": [ + "categories": [ "Languages", "Linters" ], - "activationEvents": [ + "activationEvents": [ "onLanguage:java", "onCommand:java.show.references", "onCommand:java.open.output", @@ -50,7 +50,18 @@ "type": ["string", "null"], "default": "-noverify -Xmx1G", "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G` to bypass class verification and increase the heap size to 1GB" - } + }, + "java.errors.incompleteClasspath.severity": { + "type": ["string"], + "enum": [ + "ignore", + "info", + "warning", + "error" + ], + "default": "warning", + "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" + } } }, "commands": [{ @@ -66,7 +77,7 @@ "when": "editorFocus" } ] - }, + }, "scripts": { "vscode:prepublish": "tsc -p ./", "compile": "tsc -watch -p ./", @@ -80,14 +91,14 @@ "vscode": "^1.0.0", "mocha": "^2.3.3", "@types/node": "^6.0.40", - "@types/mocha": "^2.2.32", + "@types/mocha": "^2.2.32", "@types/glob":"5.0.30", "gulp" :"^3.9.1", "gulp-tslint": "^6.1.2", "tslint" : "^3.15.1" }, "dependencies": { - "vscode-languageclient": "^2.6.0", + "vscode-languageclient": "^2.6.3", "find-java-home": "git+https://github.com/gorkem/node-find-java-home.git#registry_fix", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", diff --git a/src/extension.ts b/src/extension.ts index 848569cd6..208dddf6b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,14 +2,14 @@ 'use strict'; import * as path from 'path'; -import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor } from 'vscode'; +import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration } from 'vscode'; import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); import * as requirements from './requirements'; -import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest } from './protocol'; +import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification } from './protocol'; declare var v8debug; @@ -48,7 +48,7 @@ function runJavaServer() : Thenable { params.push('-Dlog.level=ALL'); } - let vmargs = workspace.getConfiguration('java').get('jdt.ls.vmargs',''); + let vmargs = getJavaConfiguration().get('jdt.ls.vmargs',''); parseVMargs(params, vmargs); let server_home :string = path.resolve( __dirname,'../../server'); let launchersFound:Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', {cwd: server_home }); @@ -95,31 +95,65 @@ export function activate(context: ExtensionContext) { // Notify the server about file changes to .java files contain in the workspace fileEvents: [ workspace.createFileSystemWatcher('**/*.java'), - workspace.createFileSystemWatcher('**/pom.xml') + workspace.createFileSystemWatcher('**/pom.xml'), + workspace.createFileSystemWatcher('**/*.gradle') ], } }; let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - oldConfig = workspace.getConfiguration('java'); + oldConfig = getJavaConfiguration(); // Create the language client and start the client. let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); languageClient.onNotification(StatusNotification.type, (report) => { console.log(report.message); - if(report.type === 'Started'){ - item.text = '$(thumbsup)'; - lastStatus = item.text; - } else if(report.type === 'Error'){ - item.text = '$(thumbsdown)'; - lastStatus = item.text; - } else if(report.type === 'Message') { - item.text = report.message; - setTimeout(()=> {item.text = lastStatus;}, 3000); + switch (report.type) { + case 'Started': + item.text = '$(thumbsup)'; + lastStatus = item.text; + break; + case 'Error': + item.text = '$(thumbsdown)'; + lastStatus = item.text; + break; + case 'Message': + item.text = report.message; + setTimeout(()=> {item.text = lastStatus;}, 3000); + break; } item.command = 'java.open.output'; item.tooltip = report.message; toggleItem(window.activeTextEditor, item); }); + languageClient.onNotification(ActionableNotification.type, (notification) => { + let show = null; + switch (notification.severity) { + case MessageType.Log: + case MessageType.Info: + show = window.showInformationMessage; + break; + case MessageType.Warning: + show = window.showWarningMessage; + break; + case MessageType.Error: + show = window.showErrorMessage; + break; + } + if (!show) { + return; + } + const titles = notification.commands.map(a => a.title); + + show(notification.message, ...titles).then((selection )=>{ + for(let action of notification.commands) { + if (action.title === selection) { + commands.executeCommand(action.command, notification.data); + break; + } + } + }); + }); + commands.registerCommand('java.open.output', ()=>{ languageClient.outputChannel.show(ViewColumn.Three); }); @@ -127,10 +161,10 @@ export function activate(context: ExtensionContext) { commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); }); - - commands.registerCommand('java.project.configuration.update', uri => projectConfigurationUpdate(languageClient, uri)); + commands.registerCommand('java.ignoreIncompleteClasspath', (data?:any) => setIncompleteClasspathSeverity('ignore')); + window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); @@ -155,6 +189,16 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(onConfigurationChange()); } + +function setIncompleteClasspathSeverity(severity:string) { + const config = getJavaConfiguration(); + const section = 'errors.incompleteClasspath.severity'; + config.update(section, severity, true).then( + () => console.log(section + ' globally set to '+severity), + (error) => console.log(error) + ); +} + function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { let resource = uri; if (!(resource instanceof Uri)) { @@ -184,7 +228,7 @@ function isJavaConfigFile(path:String) { function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { - let newConfig = workspace.getConfiguration('java'); + let newConfig = getJavaConfiguration(); if (hasJavaConfigChanged(oldConfig, newConfig)) { let msg = 'Java Language Server configuration changed, please restart VS Code.'; let action = 'Restart Now'; @@ -244,3 +288,7 @@ function startedInDebugMode(): boolean { }; return false; } + +function getJavaConfiguration():WorkspaceConfiguration { + return workspace.getConfiguration('java'); +} \ No newline at end of file diff --git a/src/protocol.ts b/src/protocol.ts index 268895dd2..4a2fc281c 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,12 +1,42 @@ 'use strict'; import { RequestType, NotificationType, TextDocumentIdentifier} from 'vscode-languageclient'; +import { Command } from 'vscode'; + +/** + * The message type. Copied from vscode protocol + */ +export enum MessageType { + /** + * An error message. + */ + Error = 1, + /** + * A warning message. + */ + Warning = 2, + /** + * An information message. + */ + Info = 3, + /** + * A log message. + */ + Log = 4, +} export interface StatusReport { message: string; type: string; } +export interface ActionableMessage { + severity: MessageType; + message: string; + data?: any; + commands?: Command[]; +} + export namespace StatusNotification { export const type: NotificationType = { get method() { return 'language/status'; } }; } @@ -17,4 +47,8 @@ export namespace ClassFileContentsRequest { export namespace ProjectConfigurationUpdateRequest { export const type: NotificationType = { get method() { return 'java/projectConfigurationUpdate'; }}; +} + +export namespace ActionableNotification { + export const type: NotificationType = { get method() { return 'language/actionableNotification'; }}; } \ No newline at end of file From 409d388856e64279a1f74f9d9fdd9d2793fb0308 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 20 Dec 2016 16:43:25 -0500 Subject: [PATCH 0060/1435] Enable Java configuration auto-update. Fixes #122 Signed-off-by: Fred Bricon --- package.json | 14 ++++++++++++-- src/extension.ts | 28 +++++++++++++++++++++++++--- src/protocol.ts | 18 ++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 416197055..6ccf39e30 100644 --- a/package.json +++ b/package.json @@ -61,17 +61,27 @@ ], "default": "warning", "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" + }, + "java.configuration.updateBuildConfiguration": { + "type": ["string"], + "enum": [ + "disabled", + "interactive", + "automatic" + ], + "default": "interactive", + "description": "Specifies how modifications on build files update the Java configuration" } } }, "commands": [{ - "command": "java.project.configuration.update", + "command": "java.projectConfiguration.update", "title": "Update project configuration", "category": "Java" } ], "keybindings": [{ - "command": "java.project.configuration.update", + "command": "java.projectConfiguration.update", "key": "ctrl+alt+u", "mac": "cmd+alt+u", "when": "editorFocus" diff --git a/src/extension.ts b/src/extension.ts index 208dddf6b..d08fc0afc 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -9,7 +9,7 @@ var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); import * as requirements from './requirements'; -import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification } from './protocol'; +import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification,FeatureStatus } from './protocol'; declare var v8debug; @@ -129,6 +129,8 @@ export function activate(context: ExtensionContext) { let show = null; switch (notification.severity) { case MessageType.Log: + show = logNotification; + break; case MessageType.Info: show = window.showInformationMessage; break; @@ -147,7 +149,7 @@ export function activate(context: ExtensionContext) { show(notification.message, ...titles).then((selection )=>{ for(let action of notification.commands) { if (action.title === selection) { - commands.executeCommand(action.command, notification.data); + commands.executeCommand(action.command, ...action.arguments); break; } } @@ -161,10 +163,12 @@ export function activate(context: ExtensionContext) { commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); }); - commands.registerCommand('java.project.configuration.update', uri => projectConfigurationUpdate(languageClient, uri)); + commands.registerCommand('java.projectConfiguration.update', uri => projectConfigurationUpdate(languageClient, uri)); commands.registerCommand('java.ignoreIncompleteClasspath', (data?:any) => setIncompleteClasspathSeverity('ignore')); + commands.registerCommand('java.projectConfiguration.status', (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); @@ -189,6 +193,11 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(onConfigurationChange()); } +function logNotification(message:string, ...items: string[]) { + return new Promise((resolve, reject) => { + console.log(message); + }); +} function setIncompleteClasspathSeverity(severity:string) { const config = getJavaConfiguration(); @@ -213,6 +222,19 @@ function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { } } +function setProjectConfigurationUpdate(languageClient:LanguageClient, uri: Uri, status:FeatureStatus) { + const config = getJavaConfiguration(); + const section = 'configuration.updateBuildConfiguration'; + + const st = FeatureStatus[status]; + config.update(section, st).then( + () => console.log(section + ' set to '+st), + (error) => console.log(error) + ); + if (status !== FeatureStatus.disabled) { + projectConfigurationUpdate(languageClient, uri); + } +} function toggleItem(editor: TextEditor, item) { if(editor && editor.document && (editor.document.languageId === 'java' || isJavaConfigFile(editor.document.uri.path))){ diff --git a/src/protocol.ts b/src/protocol.ts index 4a2fc281c..d7ea1599f 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -25,6 +25,24 @@ export enum MessageType { Log = 4, } +/** + * A functionality status + */ +export enum FeatureStatus { + /** + * Disabled. + */ + disabled = 0, + /** + * Enabled manually. + */ + interactive = 1, + /** + * Enabled automatically. + */ + automatic = 2, +} + export interface StatusReport { message: string; type: string; From eca437b3e2d6790112d74897109f3f8cdbf8dc14 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 22 Dec 2016 11:42:17 -0500 Subject: [PATCH 0061/1435] Update changelog for the 0.0.8 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 ++++++++- README.md | 10 +++++++++- package.json | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dec488c7c..3a38c7cbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ # Change Log -## 0.0.8 (December 2016) +## 0.0.8 (December 22, 2016) +* enhancement - Add basic Java Gradle support (Android not supported). See [#10](https://github.com/redhat-developer/vscode-java/issues/10). +* enhancement - Disable warning about `Incomplete Classpath`. See [#107](https://github.com/redhat-developer/vscode-java/issues/107). * enhancement - new `Update project configuration` command (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS). See [#113](https://github.com/redhat-developer/vscode-java/issues/113). +* enhancement - Automatically update java classpath/configuration on build file change. See [#122](https://github.com/redhat-developer/vscode-java/issues/122). +* bug fix - fix completion on import statements. See [#68](https://github.com/redhat-developer/vscode-java/issues/68). +* bug fix - fix errors when modifying eclipse configuration files. See [#105](https://github.com/redhat-developer/vscode-java/issues/105). +* bug fix - fix errors when restoring deleted files from git. See [#109](https://github.com/redhat-developer/vscode-java/issues/109). +* bug fix - invalid locations for Workspace-wide errors. See [JLS#107](https://github.com/gorkem/java-language-server/issues/107). ## 0.0.7 (November 23, 2016) * enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). diff --git a/README.md b/README.md index b363d218a..f479b783b 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Features * Maven pom.xml project support * Basic Eclipse Java project support +* Basic Gradle Java project support * As you type reporting of parsing and compilation errors * Code completion * Javadoc hovers @@ -32,6 +33,8 @@ Features * Code formatting * Code snippets +Please note that [Gradle-based Android projects are not supported](https://github.com/redhat-developer/vscode-java/issues/10#issuecomment-268834749). + See the [changelog](CHANGELOG.md) for the latest release. Setting the JDK @@ -55,10 +58,15 @@ Starting from version 0.0.5, the following settings are supported: * `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. * `java.jdt.ls.vmargs` : Extra VM arguments used to launch the Java Language Server. Requires VS Code restart. +Starting from version 0.0.8, the following settings are supported: + +* `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). +* `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. + Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.7/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.8/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 6ccf39e30..fc9b32f55 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "automatic" ], "default": "interactive", - "description": "Specifies how modifications on build files update the Java configuration" + "description": "Specifies how modifications on build files update the Java classpath/configuration" } } }, From ea83fe030f679981380d28137c3d9fee1f461e0f Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 22 Dec 2016 14:40:44 -0500 Subject: [PATCH 0062/1435] update server download url for 0.0.8 --- src/downloadManager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 9decabd44..773026b2a 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,12 +95,12 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201611232122.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201612221813.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { const out = fs.createWriteStream(null, { fd: fd }); - // handle errors + // handle errors out.once('error', err => { closeDownloadProgressItem(); reject(err); From 4caab526c800a6dc826ca76f6290ccc7820a1710 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 23 Dec 2016 14:05:54 -0500 Subject: [PATCH 0063/1435] Bump up version to 0.0.9 Signed-off-by: Fred Bricon --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f479b783b..7a7454da7 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Starting from version 0.0.8, the following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.8/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.9/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index fc9b32f55..d4cb7cd0f 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.8", + "version": "0.0.9", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 94fbf4d0a380639283928ae4b6379ea8cc9af5fc Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 4 Jan 2017 18:13:55 -0500 Subject: [PATCH 0064/1435] update find-java-home version move to using 0.1.4 to pickup fixes that are affecting MacOS. fixes #136 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d4cb7cd0f..e7decf094 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ }, "dependencies": { "vscode-languageclient": "^2.6.3", - "find-java-home": "git+https://github.com/gorkem/node-find-java-home.git#registry_fix", + "find-java-home": "0.1.4", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", "tmp" : "^0.0.29", From f72a387eadebcb22a84d2ea1af706e108d47f61b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 9 Jan 2017 17:46:06 -0500 Subject: [PATCH 0065/1435] Handle the case where actionable notifications have no params. Fixes #128 Signed-off-by: Fred Bricon --- src/extension.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index d08fc0afc..d9124145e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -149,7 +149,8 @@ export function activate(context: ExtensionContext) { show(notification.message, ...titles).then((selection )=>{ for(let action of notification.commands) { if (action.title === selection) { - commands.executeCommand(action.command, ...action.arguments); + let args:any[] = (action.arguments)?action.arguments:[]; + commands.executeCommand(action.command, ...args); break; } } From 80f44439175b61d9164f70a83a981367da7332d0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 10 Jan 2017 19:31:25 -0500 Subject: [PATCH 0066/1435] Handle spaces and quotes in java.jdt.ls.vmargs. See #135 Signed-off-by: Fred Bricon --- src/extension.ts | 6 +++++- test/extension.test.ts | 14 +++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index d9124145e..bbbd3660f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -283,7 +283,11 @@ export function parseVMargs(params:any[], vmargsLine:string) { if (vmargs === null) { return; } - vmargs.forEach (function(arg) { + vmargs.forEach (arg => { + //remove all standalone double quotes + arg = arg.replace( /(\\)?"/g, function ($0, $1) { return ($1 ? $0 : ''); }); + //unescape all escaped double quotes + arg = arg.replace( /(\\)"/g, '"'); if (params.indexOf(arg) < 0) { params.push(arg); } diff --git a/test/extension.test.ts b/test/extension.test.ts index cb1748415..3ef5f0e30 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -19,7 +19,7 @@ suite('Java Language Extension', () => { return vscode.commands.getCommands(true).then((commands) => { let javaCmds = commands.filter(function(value){ - return 'java.open.output' === value || + return 'java.open.output' === value || 'java.show.references' === value; }); assert.ok(javaCmds.length === 2, 'missing java commands'); @@ -42,4 +42,16 @@ suite('Java Language Extension', () => { done(); }); + test('should parse VM arguments with spaces', function (done) { + let userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"'; + let vmArgs = []; + + java.parseVMargs(vmArgs, userArgs); + + assert.equal(vmArgs.length, 3); + assert.equal(vmArgs[0], '-javaagent:C:\\Program Files\\Java\\lombok.jar'); + assert.equal(vmArgs[1], '-Xbootclasspath/a:C:\\Program Files\\Java\\lombok.jar'); + assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); + done(); + }); }); \ No newline at end of file From 90a0ee537854014765671863383e2b5090572fce Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 11 Jan 2017 08:24:54 -0500 Subject: [PATCH 0067/1435] Fix older VM args parsing test Signed-off-by: Fred Bricon --- test/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/extension.test.ts b/test/extension.test.ts index 3ef5f0e30..1ae3f5ceb 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -37,7 +37,7 @@ suite('Java Language Extension', () => { assert.equal('-noverify', vmArgs[0]); assert.equal('foo', vmArgs[1]); assert.equal('-Xmx512m', vmArgs[2]); - assert.equal('-Dfoo=\"something with blank\"', vmArgs[3]); + assert.equal('-Dfoo=something with blank', vmArgs[3]); done(); }); From 1c3a5c25d382c1cbcac0f8038d8b1b5231454784 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 12 Jan 2017 16:33:49 -0500 Subject: [PATCH 0068/1435] Add Javadoc symbol auto-completion (from Typescript extension). Fixes #139 Signed-off-by: Fred Bricon --- language-configuration.json | 5 +++++ package.json | 3 ++- src/extension.ts | 43 ++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 language-configuration.json diff --git a/language-configuration.json b/language-configuration.json new file mode 100644 index 000000000..2d2ab90e0 --- /dev/null +++ b/language-configuration.json @@ -0,0 +1,5 @@ +{ + "autoClosingPairs": [ + { "open": "/**", "close": " */", "notIn": ["string"] } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index e7decf094..50a0cf0fe 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,8 @@ "contributes": { "languages": [{ "id": "java", - "extensions": [ ".class" ] + "extensions": [ ".class" ], + "configuration": "./language-configuration.json" }], "snippets": [{ "language": "java", diff --git a/src/extension.ts b/src/extension.ts index bbbd3660f..2c5a18e09 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,9 +2,10 @@ 'use strict'; import * as path from 'path'; -import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration } from 'vscode'; +import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction } from 'vscode'; import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; + var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); @@ -78,6 +79,46 @@ function runJavaServer() : Thenable { } export function activate(context: ExtensionContext) { + // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at + // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 + languages.setLanguageConfiguration('java', { + indentationRules: { + // ^(.*\*/)?\s*\}.*$ + decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/, + // ^.*\{[^}"']*$ + increaseIndentPattern: /^.*\{[^}"']*$/ + }, + wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, + onEnterRules: [ + { + // e.g. /** | */ + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + afterText: /^\s*\*\/$/, + action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' } + }, + { + // e.g. /** ...| + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + action: { indentAction: IndentAction.None, appendText: ' * ' } + }, + { + // e.g. * ...| + beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/, + action: { indentAction: IndentAction.None, appendText: '* ' } + }, + { + // e.g. */| + beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + }, + { + // e.g. *-----*/| + beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + } + ] + }); + storagePath = context.storagePath; if (!storagePath) { From fafe616863cb0729a13c042eeb72792ffd23c130 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Jan 2017 14:25:13 -0500 Subject: [PATCH 0069/1435] Update changelog for the 0.0.9 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a38c7cbc..92b7acfb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 0.0.9 (January 16, 2017) +* enhancement - Autoclose Javadoc statements, adding `*` on new lines. See [#139](https://github.com/redhat-developer/vscode-java/issues/139). +* bug fix - fix Error when `Go to definition` performed on non-code portion. See [#124](https://github.com/redhat-developer/vscode-java/issues/124). +* bug fix - fix saving `java.errors.incompleteClasspath.severity` preference. See [#128](https://github.com/redhat-developer/vscode-java/issues/128). +* bug fix - fix NPE occurring when clicking on comment section of a Java file. See [#131](https://github.com/redhat-developer/vscode-java/issues/131). +* bug fix - fix JAVA_HOME detection on MacOS. See [#134](https://github.com/redhat-developer/vscode-java/issues/134). +* bug fix - fix support for quoted VM arguments. See [#135](https://github.com/redhat-developer/vscode-java/issues/135). +* bug fix - Don't display Code Lenses from Lombok-generated code. See [#137](https://github.com/redhat-developer/vscode-java/issues/137). +* bug fix - remove langserver.log file generation under home directory. See [#140](https://github.com/redhat-developer/vscode-java/issues/140). + ## 0.0.8 (December 22, 2016) * enhancement - Add basic Java Gradle support (Android not supported). See [#10](https://github.com/redhat-developer/vscode-java/issues/10). * enhancement - Disable warning about `Incomplete Classpath`. See [#107](https://github.com/redhat-developer/vscode-java/issues/107). From 3ad056052470ee2b4c308acd370a794352d57a97 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Jan 2017 14:48:44 -0500 Subject: [PATCH 0070/1435] update server download url for 0.0.9 Signed-off-by: Fred Bricon --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 773026b2a..50b684d57 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201612221813.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201701161928.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 6300ceab4540acf0bffb3a1df8d5d567f3a378d8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Jan 2017 18:35:23 -0500 Subject: [PATCH 0071/1435] Bump up version to 0.0.10 Signed-off-by: Fred Bricon --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7a7454da7..338bbeb13 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Starting from version 0.0.8, the following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.9/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.10/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 50a0cf0fe..c99791e6b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.9", + "version": "0.0.10", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 199c2bd9e8c05847aea8517cd51170a649653afc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 23 Jan 2017 18:37:09 -0500 Subject: [PATCH 0072/1435] Backport all original vscode java language configuration This is a temporary fix. Language-configuration.json is expected to be removed once https://github.com/Microsoft/vscode/pull/19076 is applied and released Signed-off-by: Fred Bricon --- language-configuration.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/language-configuration.json b/language-configuration.json index 2d2ab90e0..956c19193 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -1,5 +1,27 @@ { + "comments": { + "lineComment": "//", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"], { "open": "/**", "close": " */", "notIn": ["string"] } + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"], + ["<", ">"] ] } \ No newline at end of file From 5b02ccafb1bf866e3085222393e0c8f373081227 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 24 Jan 2017 17:08:44 -0500 Subject: [PATCH 0073/1435] Formalize tracing capabilities. Fixes #145 Signed-off-by: Fred Bricon --- package.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/package.json b/package.json index c99791e6b..a6cc5e47d 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,18 @@ ], "default": "interactive", "description": "Specifies how modifications on build files update the Java classpath/configuration" + }, + "java.trace.server": { + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VS Code and the Java language server." } + } }, "commands": [{ From 8d3938ac1f89a8659561c2d36d9463f343fb76ed Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 6 Feb 2017 15:48:35 -0500 Subject: [PATCH 0074/1435] Add new preference java.referencesCodeLens.enabled. See #148 Signed-off-by: Fred Bricon --- package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a6cc5e47d..0b49176e7 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,12 @@ ], "default": "off", "description": "Traces the communication between VS Code and the Java language server." + }, + "java.referencesCodeLens.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the references code lens." } - } }, "commands": [{ From b59128c91c0a2baa3b5f5a9d22ff5bd1a7e77394 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 8 Feb 2017 13:12:10 -0500 Subject: [PATCH 0075/1435] Update changelog for the 0.0.10 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ README.md | 12 +++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b7acfb8..aa1896496 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.0.10 (February 08, 2017) +* enhancement - Improve intellisense performance. See [#121](https://github.com/redhat-developer/vscode-java/issues/121). +* enhancement - Document server tracing capabilities. See [#145](https://github.com/redhat-developer/vscode-java/issues/145). +* enhancement - Disable reference code lenses with `java.referencesCodeLens.enabled`. See [#148](https://github.com/redhat-developer/vscode-java/issues/148). +* bug fix - fix dubious intellisense relevance. See [#142](https://github.com/redhat-developer/vscode-java/issues/142). +* bug fix - fix broken autocompletion on constructors. See [#143](https://github.com/redhat-developer/vscode-java/issues/143). +* bug fix - fix brackets/parentheses autoclosing. See [#144](https://github.com/redhat-developer/vscode-java/issues/144). + ## 0.0.9 (January 16, 2017) * enhancement - Autoclose Javadoc statements, adding `*` on new lines. See [#139](https://github.com/redhat-developer/vscode-java/issues/139). * bug fix - fix Error when `Go to definition` performed on non-code portion. See [#124](https://github.com/redhat-developer/vscode-java/issues/124). diff --git a/README.md b/README.md index 338bbeb13..4d2c90568 100644 --- a/README.md +++ b/README.md @@ -48,21 +48,23 @@ The path to the Java Development Kit is searched in the following order: Available commands ========================== -Starting from version 0.0.8, the following command is available: +The following command is available: - Update Project configuration (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. Supported VS Code settings ========================== -Starting from version 0.0.5, the following settings are supported: +The following settings are supported: * `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. * `java.jdt.ls.vmargs` : Extra VM arguments used to launch the Java Language Server. Requires VS Code restart. - -Starting from version 0.0.8, the following settings are supported: - * `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. +Starting from version 0.0.10, these new settings are supported: + +* `java.trace.server` : Traces the communication between VS Code and the Java language server. +* `java.referencesCodeLens.enabled` : Enable/disable the references code lens. + Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they From f16959ac6b2d948127945f61d83f0c60cabdf8e2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 8 Feb 2017 13:20:56 -0500 Subject: [PATCH 0076/1435] update server download url for the 0.0.10 release Signed-off-by: Fred Bricon --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 50b684d57..2f56bf260 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201701161928.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201702081758.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 9137a46c2212c3dec86a4026ed642d0bfb50f7e8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 8 Feb 2017 16:20:25 -0500 Subject: [PATCH 0077/1435] Update JLS execution to new org.eclipse.* namespace Signed-off-by: Fred Bricon --- .vscode/settings.json | 3 ++- src/downloadManager.ts | 2 +- src/extension.ts | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f5aa9cf9..03777980a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,6 @@ "search.exclude": { "out": true // set this to false to include "out" folder in search results }, - "typescript.tsdk": "./node_modules/typescript/lib" // we want to use the TS server from our node_modules folder to control its version + "typescript.tsdk": "./node_modules/typescript/lib", + "vsicons.presets.angular": false // we want to use the TS server from our node_modules folder to control its version } \ No newline at end of file diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 2f56bf260..4111dc58d 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -95,7 +95,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/java-server-1.0.0-201702081758.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201702092042.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { diff --git a/src/extension.ts b/src/extension.ts index 2c5a18e09..3df77633c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -41,9 +41,9 @@ function runJavaServer() : Thenable { // suspend=y is the default. Use this form if you need to debug the server startup code: // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); } - params.push('-Declipse.application=org.jboss.tools.vscode.java.id1'); + params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); params.push('-Dosgi.bundles.defaultStartLevel=4'); - params.push('-Declipse.product=org.jboss.tools.vscode.java.product'); + params.push('-Declipse.product=org.eclipse.jdt.ls.product'); if (DEBUG) { params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); From de97ee8d1ddd6ee4f24d4207b793f32fe8981fc3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 9 Feb 2017 16:24:59 -0500 Subject: [PATCH 0078/1435] Update more stuff following the move to using eclipse.jdt.ls Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 ++++ CONTRIBUTING.md | 28 ++++++++++++++-------------- README.md | 12 ++++++------ package.json | 4 ++-- src/downloadManager.ts | 2 +- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa1896496..3fb936c92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 0.0.11 (TBA) +* build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). + + ## 0.0.10 (February 08, 2017) * enhancement - Improve intellisense performance. See [#121](https://github.com/redhat-developer/vscode-java/issues/121). * enhancement - Document server tracing capabilities. See [#145](https://github.com/redhat-developer/vscode-java/issues/145). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97f7fe1f0..397d8fb2e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,15 @@ # How to contribute Contributions are essential for keeping this extension great. -We try to keep it as easy as possible to contribute changes and we are -open to suggesstions for making it even easier. +We try to keep it as easy as possible to contribute changes and we are +open to suggesstions for making it even easier. There are only a few guidelines that we need contributors to follow. -## vscode-java vs java-language-server +## vscode-java vs eclipse.jdt.ls -vscode-java is a Visual Studio Code extension that uses a language server for its java language -smartness. Usually vscode-java features depend on [java-language-server](https://github.com/gorkem/java-language-server), -and the contributions should be coordinated between the two repositories. +vscode-java is a Visual Studio Code extension that uses a language server for its Java language +smartness. Usually vscode-java features depend on the [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls), +(a.k.a. eclipse.jdt.ls) and the contributions should be coordinated between the two repositories. ## First Time Setup 1. Install prerequisites: @@ -24,25 +24,25 @@ and the contributions should be coordinated between the two repositories. ``` 5. Open the folder in VS Code -## Building java-language-server +## Building Eclipse ™ JDT Language Server This assumes that you are starting on the `vscode-java` directory 1. `cd ..` -2. Fork and clone the [java-language-server](https://github.com/gorkem/java-language-server) repository +2. Fork and clone the [eclipse.jdt.ls](https://github.com/eclipse/eclipse.jdt.ls) repository 3. Build server ```bash $ cd ..\vscode-java $ npm run-script build-server ``` - + This will build and place the binaries under the `server` folder. Alternately you can download -and unzip a pre-built server. For pre-built server information refer to java-language-server +and unzip a pre-built server. For pre-built server information refer to eclipse.jdt.ls project. - + ## Sideloading -You can create a binary that you can sideload to your VS Code installation. +You can create a binary that you can sideload to your VS Code installation. 1. Fork and clone this repository 2. `cd vscode-java` @@ -51,6 +51,6 @@ You can create a binary that you can sideload to your VS Code installation. ```bash $ npm install ``` -4. Optionally, follow the instruction to build the server. -5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/install-extension.md) +4. Optionally, follow the instruction to build the server. +5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/install-extension.md) on ways to sideload or share. diff --git a/README.md b/README.md index 4d2c90568..0d867189d 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Language support for Java ™ for Visual Studio Code ===================== Provides Java ™ language support via -[java-language-server](https://github.com/gorkem/java-language-server), which utilizes -[Eclipse ™ JDT](http://www.eclipse.org/jdt/). +[Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls), which utilizes +[Eclipse ™ JDT](http://www.eclipse.org/jdt/), [M2Eclipse](http://www.eclipse.org/m2e/) and [Buildship](https://github.com/eclipse/buildship). Quick Start ============ @@ -68,7 +68,7 @@ Starting from version 0.0.10, these new settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.10/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.11/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). @@ -81,14 +81,14 @@ language tool logs for further information in case of a failure. Contributing =============== -This is an open source project open to anyone. Contributions are extremely welcome +This is an open source project open to anyone. Contributions are extremely welcome! -For information on getting started refer to [java-language-server](https://github.com/gorkem/java-language-server/blob/master/README.md). +For information on getting started, refer to the [CONTRIBUTING.md instructions](CONTRIBUTING.md). Feedback =============== * File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues). -* [Tweet](https://twitter.com/GorkemErcan) us with other feedback. +* [Tweet](https://twitter.com/GorkemErcan) [us](https://twitter.com/fbricon) with other feedback. License diff --git a/package.json b/package.json index 0b49176e7..14701350b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.10", + "version": "0.0.11", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -109,7 +109,7 @@ "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", - "build-server": "mvn -f ../java-language-server/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify", + "build-server": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify", "tslint": "gulp tslint" }, "devDependencies": { diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 4111dc58d..0b885b177 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -93,7 +93,7 @@ export function downloadAndInstallServer() { const strictSSL = config.get('http.proxyStrictSSL', true); const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); - // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/java-server-1.0.0-201609020048.tar.gz"; + // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201702092042.tar.gz'; From 207da4d32558b4c738e977e4acbd928f14db9aab Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 13 Feb 2017 19:04:38 -0500 Subject: [PATCH 0079/1435] Consume JLS builds from eclipse.org (http) Signed-off-by: Fred Bricon --- src/downloadManager.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 0b885b177..8fd80644d 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -1,5 +1,6 @@ import * as https from 'https'; +import * as http from 'http'; import * as fs from 'fs'; import * as vscode from 'vscode'; import * as path from 'path'; @@ -30,10 +31,10 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi rejectUnauthorized: strictSSL }; - return new Promise((resolve, reject) => { - let request = https.get(options, res => { - // handle redirection + var request; + var downloadExec = function(res : http.IncomingMessage) { + // handle redirection if (res.statusCode === 302) { return download(res.headers.location).then(is => resolve(is)).catch(err => reject(err)); } @@ -51,7 +52,13 @@ function download(urlString: string, proxy?: string, strictSSL?: boolean): Promi downloadProgressItem.text = 'Completing Java installation ' + Number.parseInt(progressData.percentage) + '%'; }); return resolve(res.pipe(progressStream)); - }); + + }; + if (url.protocol.startsWith('https')){ + request = https.get(options, downloadExec); + } else { + request = http.get(options, downloadExec); + } request.setTimeout(30000, ()=>{request.abort();}); return request; }); @@ -91,11 +98,10 @@ export function downloadAndInstallServer() { const config = vscode.workspace.getConfiguration(); const proxy = config.get('http.proxy'); const strictSSL = config.get('http.proxyStrictSSL', true); - const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201702092042.tar.gz'; + const SERVER_ARCHIVE = 'http://download.eclipse.org/jdtls/snapshots/jdt-language-server-0.1.0-201702132114.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From d4ea4d2b1ed929a602a18c2792ff0c8ffa73cb6a Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 16 Jan 2017 15:24:52 -0500 Subject: [PATCH 0080/1435] a command for applying edits --- src/extension.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/extension.ts b/src/extension.ts index 3df77633c..57192e68f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -211,6 +211,13 @@ export function activate(context: ExtensionContext) { commands.registerCommand('java.projectConfiguration.status', (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + commands.registerCommand('java.apply.workspaceEdit',(obj)=>{ + let edit = Protocol2Code.asWorkspaceEdit(obj); + if(edit){ + workspace.applyEdit(edit); + } + }); + window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); From eefe96dc67f82242da232c2509cf7b41ed6361fe Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 27 Jan 2017 11:57:40 +0300 Subject: [PATCH 0081/1435] Update java command check tests --- test/extension.test.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test/extension.test.ts b/test/extension.test.ts index 1ae3f5ceb..ba68be7d5 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -18,11 +18,18 @@ suite('Java Language Extension', () => { test('should register all java commands', function (done) { return vscode.commands.getCommands(true).then((commands) => { - let javaCmds = commands.filter(function(value){ - return 'java.open.output' === value || - 'java.show.references' === value; + const JAVA_COMMANDS = [ + 'java.open.output', + 'java.show.references', + 'java.projectConfiguration.update', + 'java.ignoreIncompleteClasspath', + 'java.projectConfiguration.status', + 'java.apply.workspaceEdit', + ]; + let foundJavaCommands = commands.filter(function(value){ + return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); }); - assert.ok(javaCmds.length === 2, 'missing java commands'); + assert.equal(foundJavaCommands.length ,JAVA_COMMANDS.length, 'Some Java commands are not registered properly or a new command is not added to the test'); done(); }); }); From e61696c2a26dd5bddebb9802940531b004bff72e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 1 Mar 2017 14:48:54 -0500 Subject: [PATCH 0082/1435] enable fast build scripts Signed-off-by: Fred Bricon --- CONTRIBUTING.md | 1 + package.json | 7 +++++-- server/.gitignore | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) delete mode 100644 server/.gitignore diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 397d8fb2e..82d648892 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,6 +35,7 @@ This assumes that you are starting on the `vscode-java` directory $ cd ..\vscode-java $ npm run-script build-server ``` +You can run faster builds by calling the `build-server-mac`, `build-server-win` or `build-server-linux` script instead, depending on your OS. These commands run Maven in offline mode, so you might need to run `build-server` at least once, to fetch all the dependencies. This will build and place the binaries under the `server` folder. Alternately you can download and unzip a pre-built server. For pre-built server information refer to eclipse.jdt.ls diff --git a/package.json b/package.json index 14701350b..6e3fb7e1f 100644 --- a/package.json +++ b/package.json @@ -109,8 +109,11 @@ "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", - "build-server": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build -Dmaven.test.skip=true clean verify", - "tslint": "gulp tslint" + "build-server": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build clean package", + "build-server-mac": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=macosx -Denvironment.ws=cocoa -Denvironment.arch=x86_64 clean package -o", + "build-server-win": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=win32 -Denvironment.ws=win32 -Denvironment.arch=x86_64 clean package -o", + "build-server-linux": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=linux -Denvironment.ws=gtk -Denvironment.arch=x86_64 clean package -o", + "tslint": "gulp tslint" }, "devDependencies": { "typescript": "^2.0.3", diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index 8b1378917..000000000 --- a/server/.gitignore +++ /dev/null @@ -1 +0,0 @@ - From afe6ca0e12a9680b8b1c987075083dd4ec2dea79 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 Mar 2017 16:22:00 -0500 Subject: [PATCH 0083/1435] Use proper product id Signed-off-by: Fred Bricon --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 57192e68f..b5bf8a82b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -43,7 +43,7 @@ function runJavaServer() : Thenable { } params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); params.push('-Dosgi.bundles.defaultStartLevel=4'); - params.push('-Declipse.product=org.eclipse.jdt.ls.product'); + params.push('-Declipse.product=org.eclipse.jdt.ls.core.product'); if (DEBUG) { params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); From 20ab70f108b7044d93e5d8d0930291be36651633 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 Mar 2017 16:38:37 -0500 Subject: [PATCH 0084/1435] Update changelog for 0.0.11 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fb936c92..de1c01b26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,12 @@ # Change Log -## 0.0.11 (TBA) +## 0.0.11 (March 2st, 2017) * build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). +* enhancement - Maven errors are reported. See [JLS#85](https://github.com/eclipse/eclipse.jdt.ls/issues/85). +* enhancement - Code Actions for adding missing quote, removing unused import and superfluous semicolon. See [JLS#15](https://github.com/eclipse/eclipse.jdt.ls/issues/15). +* bug fix - correct Javadoc highlighting. See [#94](https://github.com/redhat-developer/vscode-java/issues/94) - -## 0.0.10 (February 08, 2017) +## 0.0.10 (February 08th, 2017) * enhancement - Improve intellisense performance. See [#121](https://github.com/redhat-developer/vscode-java/issues/121). * enhancement - Document server tracing capabilities. See [#145](https://github.com/redhat-developer/vscode-java/issues/145). * enhancement - Disable reference code lenses with `java.referencesCodeLens.enabled`. See [#148](https://github.com/redhat-developer/vscode-java/issues/148). @@ -12,7 +14,7 @@ * bug fix - fix broken autocompletion on constructors. See [#143](https://github.com/redhat-developer/vscode-java/issues/143). * bug fix - fix brackets/parentheses autoclosing. See [#144](https://github.com/redhat-developer/vscode-java/issues/144). -## 0.0.9 (January 16, 2017) +## 0.0.9 (January 16th, 2017) * enhancement - Autoclose Javadoc statements, adding `*` on new lines. See [#139](https://github.com/redhat-developer/vscode-java/issues/139). * bug fix - fix Error when `Go to definition` performed on non-code portion. See [#124](https://github.com/redhat-developer/vscode-java/issues/124). * bug fix - fix saving `java.errors.incompleteClasspath.severity` preference. See [#128](https://github.com/redhat-developer/vscode-java/issues/128). @@ -22,7 +24,7 @@ * bug fix - Don't display Code Lenses from Lombok-generated code. See [#137](https://github.com/redhat-developer/vscode-java/issues/137). * bug fix - remove langserver.log file generation under home directory. See [#140](https://github.com/redhat-developer/vscode-java/issues/140). -## 0.0.8 (December 22, 2016) +## 0.0.8 (December 22nd, 2016) * enhancement - Add basic Java Gradle support (Android not supported). See [#10](https://github.com/redhat-developer/vscode-java/issues/10). * enhancement - Disable warning about `Incomplete Classpath`. See [#107](https://github.com/redhat-developer/vscode-java/issues/107). * enhancement - new `Update project configuration` command (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS). See [#113](https://github.com/redhat-developer/vscode-java/issues/113). @@ -32,14 +34,14 @@ * bug fix - fix errors when restoring deleted files from git. See [#109](https://github.com/redhat-developer/vscode-java/issues/109). * bug fix - invalid locations for Workspace-wide errors. See [JLS#107](https://github.com/gorkem/java-language-server/issues/107). -## 0.0.7 (November 23, 2016) +## 0.0.7 (November 23rd, 2016) * enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). * enhancement - Start Java Language Server when pom.xml is detected. See [#84](https://github.com/redhat-developer/vscode-java/issues/84). * bug fix - fix out of synch error markers. See [#87](https://github.com/redhat-developer/vscode-java/issues/87) * bug fix - fix missing generic types in autocompletion. See [#69](https://github.com/redhat-developer/vscode-java/issues/69). * bug fix - fix ignored `jdt.ls.vmargs`. See [#88](https://github.com/redhat-developer/vscode-java/pull/88). -## 0.0.6 (November 1, 2016) +## 0.0.6 (November 1st, 2016) * enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). * enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58). * enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). @@ -49,7 +51,7 @@ * bug fix - fix JAVA_HOME detection mechanism. See [#74](https://github.com/redhat-developer/vscode-java/issues/74). -## 0.0.5 (October 13, 2016) +## 0.0.5 (October 13th, 2016) * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). * enhancement - improve Javadoc formatting on hover (scrollbar). See [#31](https://github.com/redhat-developer/vscode-java/issues/31). @@ -59,7 +61,7 @@ * bug fix - fix Java Language Server downloading when using a Proxy (take 2). See [#42](https://github.com/redhat-developer/vscode-java/issues/42). * bug fix - fix race condition on Java Language Server start. See [JLS#81](https://github.com/gorkem/java-language-server/pull/81). -## 0.0.4 (September 26, 2016) +## 0.0.4 (September 26th, 2016) * enhancement - improved Javadoc/Markdown formatting. See [#13](https://github.com/redhat-developer/vscode-java/issues/13). * enhancement - provide Java Language Server download feedback. See [#20](https://github.com/redhat-developer/vscode-java/issues/20). * enhancement - provide syntax highlighting for opened `.class` files. See [#21](https://github.com/redhat-developer/vscode-java/issues/21). @@ -70,13 +72,13 @@ * bug fix - fix Java Language Server headers format. See [JLS#74](https://github.com/gorkem/java-language-server/issues/74). * bug fix - fix project import reporting progress > 100%. See [JLS#67](https://github.com/gorkem/java-language-server/issues/67). -## 0.0.3 (September 16, 2016) +## 0.0.3 (September 16th, 2016) * enhancement - In addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). * enhancement - Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code * enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). * bug fix - Opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). -## 0.0.2 (September 14, 2016) +## 0.0.2 (September 14th, 2016) * enhancement - download the Java Language Server through HTTPS. ## 0.0.1 (September 12, 2016) From 927cb95ca34a4311ee1ba6f503868d93c33a6787 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 2 Mar 2017 17:36:58 -0500 Subject: [PATCH 0085/1435] update 0.11 download url --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 8fd80644d..afdf5be84 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -101,7 +101,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'http://download.eclipse.org/jdtls/snapshots/jdt-language-server-0.1.0-201702132114.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703022129.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 33af10aabf651a00ba81e33f3b318b09effee191 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 Mar 2017 18:27:04 -0500 Subject: [PATCH 0086/1435] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de1c01b26..0c8ef1ff8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.0.11 (March 2st, 2017) +## 0.0.11 (March 2nd, 2017) * build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). * enhancement - Maven errors are reported. See [JLS#85](https://github.com/eclipse/eclipse.jdt.ls/issues/85). * enhancement - Code Actions for adding missing quote, removing unused import and superfluous semicolon. See [JLS#15](https://github.com/eclipse/eclipse.jdt.ls/issues/15). From ee4495c73ab8aefd04ebabb69144420cd3341cbb Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 Mar 2017 18:28:57 -0500 Subject: [PATCH 0087/1435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d867189d..65f8402b1 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Quick Start * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file. * Initial activation can be longer since it requires extension to download additional parts. - * Recognizes only projects with *maven* build files on the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. + * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. Features ========= From 3d3180228793193a76a62fa958cd8412e4ef3734 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 3 Mar 2017 15:56:46 -0500 Subject: [PATCH 0088/1435] Prepare for 0.0.12 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ README.md | 5 +---- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c8ef1ff8..6bb267299 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.0.12 (TBD) +...wait for it + ## 0.0.11 (March 2nd, 2017) * build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). * enhancement - Maven errors are reported. See [JLS#85](https://github.com/eclipse/eclipse.jdt.ls/issues/85). diff --git a/README.md b/README.md index 65f8402b1..e0498d756 100644 --- a/README.md +++ b/README.md @@ -59,16 +59,13 @@ The following settings are supported: * `java.jdt.ls.vmargs` : Extra VM arguments used to launch the Java Language Server. Requires VS Code restart. * `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. - -Starting from version 0.0.10, these new settings are supported: - * `java.trace.server` : Traces the communication between VS Code and the Java language server. * `java.referencesCodeLens.enabled` : Enable/disable the references code lens. Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.11/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.12/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 6e3fb7e1f..f853741c5 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.11", + "version": "0.0.12", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 3943f5aaff9653f8b1a178d0d151d3a061e3ddd7 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 24 Feb 2017 15:49:05 -0500 Subject: [PATCH 0089/1435] update to LSP 3 version Updates the vscode-languageclient to next. Adjusts the extension to breaking changes. Also updates mocha and tmp versions. --- package.json | 18 ++++----- src/extension.ts | 103 ++++++++++++++++++++++++----------------------- src/protocol.ts | 8 ++-- 3 files changed, 66 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index f853741c5..7bb93c658 100644 --- a/package.json +++ b/package.json @@ -116,26 +116,26 @@ "tslint": "gulp tslint" }, "devDependencies": { - "typescript": "^2.0.3", - "vscode": "^1.0.0", - "mocha": "^2.3.3", + "typescript": "^2.2.1", + "vscode": "^1.0.3", + "mocha": "^3.2.0", "@types/node": "^6.0.40", - "@types/mocha": "^2.2.32", + "@types/mocha": "^2.2.39", "@types/glob":"5.0.30", "gulp" :"^3.9.1", - "gulp-tslint": "^6.1.2", - "tslint" : "^3.15.1" + "gulp-tslint": "^7.1.0", + "tslint" : "^4.4.2" }, "dependencies": { - "vscode-languageclient": "^2.6.3", + "vscode-languageclient": "next", "find-java-home": "0.1.4", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", - "tmp" : "^0.0.29", + "tmp" : "^0.0.31", "decompress": "^4.0.0", "progress-stream": "^1.2.0", "path-exists":"^3.0.0", "expand-home-dir":"^0.0.3", "glob":"^7.1.1" } -} +} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index b5bf8a82b..a909ce518 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction } from 'vscode'; -import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation, Protocol2Code} from 'vscode-languageclient'; +import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation} from 'vscode-languageclient'; var electron = require('./electron_j'); @@ -146,63 +146,66 @@ export function activate(context: ExtensionContext) { oldConfig = getJavaConfiguration(); // Create the language client and start the client. let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); - languageClient.onNotification(StatusNotification.type, (report) => { - console.log(report.message); - switch (report.type) { - case 'Started': - item.text = '$(thumbsup)'; - lastStatus = item.text; - break; - case 'Error': - item.text = '$(thumbsdown)'; - lastStatus = item.text; - break; - case 'Message': - item.text = report.message; - setTimeout(()=> {item.text = lastStatus;}, 3000); - break; - } - item.command = 'java.open.output'; - item.tooltip = report.message; - toggleItem(window.activeTextEditor, item); - }); - languageClient.onNotification(ActionableNotification.type, (notification) => { - let show = null; - switch (notification.severity) { - case MessageType.Log: - show = logNotification; - break; - case MessageType.Info: - show = window.showInformationMessage; - break; - case MessageType.Warning: - show = window.showWarningMessage; - break; - case MessageType.Error: - show = window.showErrorMessage; - break; - } - if (!show) { - return; - } - const titles = notification.commands.map(a => a.title); - - show(notification.message, ...titles).then((selection )=>{ - for(let action of notification.commands) { - if (action.title === selection) { - let args:any[] = (action.arguments)?action.arguments:[]; - commands.executeCommand(action.command, ...args); + languageClient.onReady().then(() => { + languageClient.onNotification(StatusNotification.type, (report) => { + console.log(report.message); + switch (report.type) { + case 'Started': + item.text = '$(thumbsup)'; + lastStatus = item.text; + break; + case 'Error': + item.text = '$(thumbsdown)'; + lastStatus = item.text; + break; + case 'Message': + item.text = report.message; + setTimeout(() => { item.text = lastStatus; }, 3000); + break; + } + item.command = 'java.open.output'; + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); + }); + languageClient.onNotification(ActionableNotification.type, (notification) => { + let show = null; + switch (notification.severity) { + case MessageType.Log: + show = logNotification; + break; + case MessageType.Info: + show = window.showInformationMessage; + break; + case MessageType.Warning: + show = window.showWarningMessage; + break; + case MessageType.Error: + show = window.showErrorMessage; break; - } } + if (!show) { + return; + } + const titles = notification.commands.map(a => a.title); + + show(notification.message, ...titles).then((selection) => { + for (let action of notification.commands) { + if (action.title === selection) { + let args: any[] = (action.arguments) ? action.arguments : []; + commands.executeCommand(action.command, ...args); + break; + } + } + }); }); }); + commands.registerCommand('java.open.output', ()=>{ languageClient.outputChannel.show(ViewColumn.Three); }); commands.registerCommand('java.show.references', (uri:string, position: LSPosition, locations:LSLocation[])=>{ - commands.executeCommand('editor.action.showReferences', Uri.parse(uri), Protocol2Code.asPosition(position), locations.map(Protocol2Code.asLocation)); + commands.executeCommand('editor.action.showReferences', Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); }); commands.registerCommand('java.projectConfiguration.update', uri => projectConfigurationUpdate(languageClient, uri)); @@ -212,7 +215,7 @@ export function activate(context: ExtensionContext) { commands.registerCommand('java.projectConfiguration.status', (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); commands.registerCommand('java.apply.workspaceEdit',(obj)=>{ - let edit = Protocol2Code.asWorkspaceEdit(obj); + let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); if(edit){ workspace.applyEdit(edit); } diff --git a/src/protocol.ts b/src/protocol.ts index d7ea1599f..45c139f01 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -56,17 +56,17 @@ export interface ActionableMessage { } export namespace StatusNotification { - export const type: NotificationType = { get method() { return 'language/status'; } }; + export const type = new NotificationType('language/status'); } export namespace ClassFileContentsRequest { - export const type: RequestType = { get method() { return 'java/classFileContents'; }}; + export const type= new RequestType ('java/classFileContents'); } export namespace ProjectConfigurationUpdateRequest { - export const type: NotificationType = { get method() { return 'java/projectConfigurationUpdate'; }}; + export const type = new NotificationType ('java/projectConfigurationUpdate'); } export namespace ActionableNotification { - export const type: NotificationType = { get method() { return 'language/actionableNotification'; }}; + export const type = new NotificationType('language/actionableNotification'); } \ No newline at end of file From 1d291a776bf0ebe31923321217392227ac8cbb0d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 14 Mar 2017 10:35:16 -0400 Subject: [PATCH 0090/1435] Exposes Maven's user settings preference Signed-off-by: Fred Bricon --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 7bb93c658..df109d172 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,11 @@ "type": "boolean", "default": true, "description": "Enable/disable the references code lens." + }, + "java.configuration.maven.userSettings": { + "type": "string", + "default": null, + "description": "Absolute path to Maven's settings.xml" } } }, From 2d6b1e1d655a63cad78652aa7cbd6b3cc6eb1ca0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 Mar 2017 11:47:21 -0400 Subject: [PATCH 0091/1435] Fix mocha tests Signed-off-by: Fred Bricon --- test/downloadManager.test.ts | 3 +-- test/extension.test.ts | 15 +++++---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/test/downloadManager.test.ts b/test/downloadManager.test.ts index 3c0e97dfc..b80bb8979 100644 --- a/test/downloadManager.test.ts +++ b/test/downloadManager.test.ts @@ -7,7 +7,7 @@ import * as downloadManager from '../src/downloadManager'; suite('Java Language Extension downloadManager tests', () => { // Defines a Mocha unit test - test('Download server', function(done ) { + test('Download server', function() { this.timeout(2*60*1000); return downloadManager.downloadAndInstallServer() .then(() => { @@ -20,7 +20,6 @@ suite('Java Language Extension downloadManager tests', () => { catch (err) { assert.ifError(err); } - done(); }); }); }); \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index ba68be7d5..9cf157f9c 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -4,18 +4,17 @@ import * as java from '../src/extension'; suite('Java Language Extension', () => { - test('should be present', () => { + test('Extension should be present', () => { assert.ok(vscode.extensions.getExtension('redhat.java')); }); - test('should activate', function (done) { + test('should activate', function () { this.timeout(1 * 60 * 1000); return vscode.extensions.getExtension('redhat.java').activate().then((api) => { - done(); }); }); - test('should register all java commands', function (done) { + test('should register all java commands', function () { return vscode.commands.getCommands(true).then((commands) => { const JAVA_COMMANDS = [ @@ -30,11 +29,10 @@ suite('Java Language Extension', () => { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); }); assert.equal(foundJavaCommands.length ,JAVA_COMMANDS.length, 'Some Java commands are not registered properly or a new command is not added to the test'); - done(); }); }); - test('should parse VM arguments', function (done) { + test('should parse VM arguments', function () { let userArgs = '-Xmx512m -noverify -Dfoo=\"something with blank\" '; let vmArgs = ['-noverify', 'foo']; @@ -45,11 +43,9 @@ suite('Java Language Extension', () => { assert.equal('foo', vmArgs[1]); assert.equal('-Xmx512m', vmArgs[2]); assert.equal('-Dfoo=something with blank', vmArgs[3]); - - done(); }); - test('should parse VM arguments with spaces', function (done) { + test('should parse VM arguments with spaces', function () { let userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"'; let vmArgs = []; @@ -59,6 +55,5 @@ suite('Java Language Extension', () => { assert.equal(vmArgs[0], '-javaagent:C:\\Program Files\\Java\\lombok.jar'); assert.equal(vmArgs[1], '-Xbootclasspath/a:C:\\Program Files\\Java\\lombok.jar'); assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); - done(); }); }); \ No newline at end of file From 4c435b1aed9e1cd893ff2f50b1470c160dc34b46 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 Mar 2017 13:24:42 -0400 Subject: [PATCH 0092/1435] update 0.0.12 download url Signed-off-by: Fred Bricon --- src/downloadManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/downloadManager.ts b/src/downloadManager.ts index afdf5be84..222b10f9d 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -101,7 +101,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703022129.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703161606.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 7e7b44f2bbd423ba1c762313f930628a392d60c2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 Mar 2017 14:13:59 -0400 Subject: [PATCH 0093/1435] Update changelog for 0.0.12 Signed-off-by: Fred Bricon --- CHANGELOG.md | 6 ++++-- README.md | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bb267299..5066180f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ # Change Log -## 0.0.12 (TBD) -...wait for it +## 0.0.12 (March 16th, 2017) +* enhancement - New `java.configuration.maven.userSettings` preference to set Maven's user settings.xml. See [JLS#184](https://github.com/eclipse/eclipse.jdt.ls/issues/184). +* enhancement - Adopt new VS Code SnippetString API. See [#99](https://github.com/redhat-developer/vscode-java/issues/99). +* bug fix - Saving a file doesn't update compilation errors on dependent classes. See [JLS#187](https://github.com/eclipse/eclipse.jdt.ls/issues/187). ## 0.0.11 (March 2nd, 2017) * build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). diff --git a/README.md b/README.md index e0498d756..248216814 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,10 @@ The following settings are supported: * `java.trace.server` : Traces the communication between VS Code and the Java language server. * `java.referencesCodeLens.enabled` : Enable/disable the references code lens. +Since 0.0.12 +* `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. + + Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they From 264bcea5d19f3dd188ddbe80c79de1e556078765 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 Mar 2017 17:06:35 -0400 Subject: [PATCH 0094/1435] Prepare for next 0.0.13 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ README.md | 4 +--- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5066180f1..606e4931c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.0.13 (TBD) +... + ## 0.0.12 (March 16th, 2017) * enhancement - New `java.configuration.maven.userSettings` preference to set Maven's user settings.xml. See [JLS#184](https://github.com/eclipse/eclipse.jdt.ls/issues/184). * enhancement - Adopt new VS Code SnippetString API. See [#99](https://github.com/redhat-developer/vscode-java/issues/99). diff --git a/README.md b/README.md index 248216814..a8b45a1b9 100644 --- a/README.md +++ b/README.md @@ -61,15 +61,13 @@ The following settings are supported: * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. * `java.trace.server` : Traces the communication between VS Code and the Java language server. * `java.referencesCodeLens.enabled` : Enable/disable the references code lens. - -Since 0.0.12 * `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.12/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.0.13/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index df109d172..31780727d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.12", + "version": "0.0.13", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From a954b9575e643d27739f8ad159b29c4ad662aa48 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 17 Mar 2017 18:02:48 -0400 Subject: [PATCH 0095/1435] Releasing 0.0.13 Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 ++-- src/downloadManager.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 606e4931c..4d071f644 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Change Log -## 0.0.13 (TBD) -... +## 0.0.13 (March 17th, 2017) +* bug fix - Java projects are no longer imported. See [#167](https://github.com/redhat-developer/vscode-java/issues/167). ## 0.0.12 (March 16th, 2017) * enhancement - New `java.configuration.maven.userSettings` preference to set Maven's user settings.xml. See [JLS#184](https://github.com/eclipse/eclipse.jdt.ls/issues/184). diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 222b10f9d..3e48bca39 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -101,7 +101,7 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703161606.tar.gz'; + const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz'; return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { From 0ffdaa3213cd6658a2f2037f5f0b5bf713c1bd90 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 21 Mar 2017 12:18:48 -0700 Subject: [PATCH 0096/1435] extract server archive config from code Removes the server download url and puts it to a json file. Signed-off-by: Gorkem Ercan --- server_archive.json | 5 +++++ src/downloadManager.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 server_archive.json diff --git a/server_archive.json b/server_archive.json new file mode 100644 index 000000000..7b09f6603 --- /dev/null +++ b/server_archive.json @@ -0,0 +1,5 @@ +{ + "production":{ + "url": "https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz" + } +} \ No newline at end of file diff --git a/src/downloadManager.ts b/src/downloadManager.ts index 3e48bca39..851a00103 100644 --- a/src/downloadManager.ts +++ b/src/downloadManager.ts @@ -101,9 +101,9 @@ export function downloadAndInstallServer() { const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE = 'https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz'; + const SERVER_ARCHIVE_CONFIG = require('../../server_archive.json'); - return download(SERVER_ARCHIVE, proxy, strictSSL).then(is => { + return download(SERVER_ARCHIVE_CONFIG['production']['url'], proxy, strictSSL).then(is => { tmp.file((err, tmpPath, fd, cleanupCallback) => { const out = fs.createWriteStream(null, { fd: fd }); // handle errors From 5be5ab4b8d43356a4dd88c25d4c79681d5dec11d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 28 Mar 2017 10:36:44 -0400 Subject: [PATCH 0097/1435] Add moar logging when running the jdt.ls Signed-off-by: Fred Bricon --- src/electron_j.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/electron_j.ts b/src/electron_j.ts index c45fc9661..133a5f2e8 100644 --- a/src/electron_j.ts +++ b/src/electron_j.ts @@ -91,6 +91,12 @@ function fork(modulePath, args, options, callback) { env: newEnv, execArgv: options.execArgv }); + childProcess.stdout.on('data', function(data) { + console.log('stdout: ' + data); + }); + childProcess.stderr.on('data', function(data) { + console.log('stderr: ' + data); + }); childProcess.once('error', function (err) { closeServer(); reject(err); From 469bb947e6602d37ab023c21cb462e7208e89de5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 28 Mar 2017 17:40:10 -0400 Subject: [PATCH 0098/1435] Prepare for 0.1.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ README.md | 2 +- package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d071f644..eed36f7b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.1.0 (March 30th, 2017) +* enhancement - add support for build-helper-maven-plugin. See [JLS#198](https://github.com/eclipse/eclipse.jdt.ls/issues/198). +* enhancement - add support for Maven compilerIds jdt, eclipse, javac-with-errorprone. See [JLS#196](https://github.com/eclipse/eclipse.jdt.ls/issues/196). +* enhancement - log Server's stderr/sdout in VS Code's console, to help troubleshooting. See [#172](https://github.com/redhat-developer/vscode-java/pull/172/). +* bug fix - [tentative] prevent workspace corruption on shutdown. See [JLS#199](https://github.com/eclipse/eclipse.jdt.ls/pull/199). +* bug fix - Opening standalone Java files fails to initialize the server. See [JLS#194](https://github.com/eclipse/eclipse.jdt.ls/issues/194). +* bug fix - Intellisense fails on package-less classes. See [#166](https://github.com/redhat-developer/vscode-java/issues/166). + ## 0.0.13 (March 17th, 2017) * bug fix - Java projects are no longer imported. See [#167](https://github.com/redhat-developer/vscode-java/issues/167). diff --git a/README.md b/README.md index a8b45a1b9..e9ad33d93 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ The following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.0.13/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.1.0/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 31780727d..6ce09c460 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.0.13", + "version": "0.1.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 9c2cf70cadbbbd5cbac3af4c00b540e12b73e17d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 29 Mar 2017 01:16:04 -0400 Subject: [PATCH 0099/1435] Add instructions for testing CI builds. Signed-off-by: Fred Bricon --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e9ad33d93..0aca41cc3 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,8 @@ This is an open source project open to anyone. Contributions are extremely welco For information on getting started, refer to the [CONTRIBUTING.md instructions](CONTRIBUTING.md). +Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `vscode-java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). + Feedback =============== * File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues). From d13ab02fc505060afdcaedf0534f1657b0f99a13 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 18:25:57 -0400 Subject: [PATCH 0100/1435] initial Jenkinsfile pipeline as code :) --- Jenkinsfile | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..89b95df6f --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,100 @@ +#!/usr/bin/env groovy + + node('rhel7'){ + stage 'Build JDT LS' + git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' + def mvnHome = tool 'maven-3.3.9' + sh "${mvnHome}/bin/mvn clean verify -B -U -fae -e -Pserver-distro" + + stage 'Upload Server to staging' + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" + stash name: 'server_distro',includes :files[0].path + env.stageUrl = 'http://download.jboss.org/jbosstools/jdt.ls/staging/' + files[0].name + + } + + def installBuildRequirements(){ + def nodeHome = tool 'nodejs-7.7.4' + env.PATH="${env.PATH}:${nodeHome}/bin" + sh "npm install -g typescript" + sh "npm install -g vsce" + } + + def buildVscodeExtension(){ + sh "npm install" + sh "npm run vscode:prepublish" + } + + def updateArchiveDownloadUrl(url){ + def downloadConfig = readJSON file: 'server_archive.json' + downloadConfig.production.url = url + writeJSON file:'server_archive.json', json: downloadConfig + } + + node('rhel7'){ + + stage 'Checkout vscode-java code' + deleteDir() + git url: 'https://github.com/redhat-developer/vscode-java.git' + + stage 'Update server archive url to staging' + updateArchiveDownloadUrl(env.stageUrl) + + stage 'install vscode-java build requirements' + installBuildRequirements() + + stage 'Build vscode-java' + buildVscodeExtension() + + stage 'Test vscode-java for staging' + wrap([$class: 'Xvnc']) { + sh "npm test --silent" + } + + stage "Package vscode-java" + def packageJson = readJSON file: 'package.json' + sh "vsce package -o java-${packageJson.version}-${env.BUILD_TIMESTAMP}.vsix" + + stage 'Upload vscode-java to staging' + def vsix = findFiles(glob: '**.vsix') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" + } + + +if(params.publishToMarketPlace){ + timeout(time:5, unit:'DAYS') { + input message:'Approve deployment?', submitter: 'bercan' + } + + node('rhel7'){ + stage 'Upload Server to release' + unstash 'server_distro' + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/tools/static/vscode" + def prodUrl = 'http://download.jboss.org/jbosstools/static/vscode/' + files[0].name + + stage 'Checkout vscode-java for release build' + deleteDir() + git url: 'https://github.com/redhat-developer/vscode-java.git' + + stage 'Update server archive url to release' + updateArchiveDownloadUrl(prodUrl) + + stage 'install vscode-java build requirements' + installBuildRequirements() + + stage 'Build vscode-java for release' + buildVscodeExtension() + + stage 'Test vscode-java for release' + wrap([$class: 'Xvnc']) { + sh "npm test --silent" + } + + "Publish to Marketplace" + withCredentials([string(credentialsId: 'vscode_marketplace', variable: 'TOKEN')]) { + sh "vsce publish -p $TOKEN" + } + } +} From 80e9752d66e7674672f938de5e51574b7706a282 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 18:52:14 -0400 Subject: [PATCH 0101/1435] notify build fails add mail notifier --- Jenkinsfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 89b95df6f..fe87c1315 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,6 @@ #!/usr/bin/env groovy +try{ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' @@ -62,12 +63,13 @@ } -if(params.publishToMarketPlace){ - timeout(time:5, unit:'DAYS') { - input message:'Approve deployment?', submitter: 'bercan' - } node('rhel7'){ + + if(params.publishToMarketPlace){ + timeout(time:5, unit:'DAYS') { + input message:'Approve deployment?', submitter: 'bercan' + } stage 'Upload Server to release' unstash 'server_distro' def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') @@ -96,5 +98,11 @@ if(params.publishToMarketPlace){ withCredentials([string(credentialsId: 'vscode_marketplace', variable: 'TOKEN')]) { sh "vsce publish -p $TOKEN" } + }//if publishMarketPlace + } +}catch(error){ + (currentBuild.result != "ABORTED") && node("master") { + step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])]) + throw error } } From 0535a498969f3d75b6889c794a4601fcd2b964e7 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 18:58:30 -0400 Subject: [PATCH 0102/1435] fix Jenkinsfile --- Jenkinsfile | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index fe87c1315..b1348d7aa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,23 @@ #!/usr/bin/env groovy +def installBuildRequirements(){ + def nodeHome = tool 'nodejs-7.7.4' + env.PATH="${env.PATH}:${nodeHome}/bin" + sh "npm install -g typescript" + sh "npm install -g vsce" +} + +def buildVscodeExtension(){ + sh "npm install" + sh "npm run vscode:prepublish" +} + +def updateArchiveDownloadUrl(url){ + def downloadConfig = readJSON file: 'server_archive.json' + downloadConfig.production.url = url + writeJSON file:'server_archive.json', json: downloadConfig +} + try{ node('rhel7'){ stage 'Build JDT LS' @@ -15,24 +33,6 @@ try{ } - def installBuildRequirements(){ - def nodeHome = tool 'nodejs-7.7.4' - env.PATH="${env.PATH}:${nodeHome}/bin" - sh "npm install -g typescript" - sh "npm install -g vsce" - } - - def buildVscodeExtension(){ - sh "npm install" - sh "npm run vscode:prepublish" - } - - def updateArchiveDownloadUrl(url){ - def downloadConfig = readJSON file: 'server_archive.json' - downloadConfig.production.url = url - writeJSON file:'server_archive.json', json: downloadConfig - } - node('rhel7'){ stage 'Checkout vscode-java code' @@ -62,8 +62,6 @@ try{ sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" } - - node('rhel7'){ if(params.publishToMarketPlace){ From 9caea2cf1ef133786d50253196091455aa363fb4 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 19:10:15 -0400 Subject: [PATCH 0103/1435] switch to build numbers for vsix --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b1348d7aa..2f2425532 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -55,7 +55,7 @@ try{ stage "Package vscode-java" def packageJson = readJSON file: 'package.json' - sh "vsce package -o java-${packageJson.version}-${env.BUILD_TIMESTAMP}.vsix" + sh "vsce package -o java-${packageJson.version}-${env.BUILD_NUMBER}.vsix" stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') From 9ff2a0e577992c19052fbf8ac0ab6c5ed7461c03 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 19:14:07 -0400 Subject: [PATCH 0104/1435] correct the node label --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2f2425532..767277408 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -99,7 +99,7 @@ try{ }//if publishMarketPlace } }catch(error){ - (currentBuild.result != "ABORTED") && node("master") { + (currentBuild.result != "ABORTED") && node() { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])]) throw error } From e4681b2c43a77f8d33ef9d2691070a39410974c1 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 19:29:36 -0400 Subject: [PATCH 0105/1435] ignore server folder when packaging --- .vscodeignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscodeignore b/.vscodeignore index 07e117935..ae95b0063 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -9,5 +9,6 @@ images/** tsconfig.json vsc-extension-quickstart.md undefined/** -CONTRIBUTING.md +CONTRIBUTING.md .vscode-test/** +server/** \ No newline at end of file From 76d11511fc698df67a982e7965dbedfb5f32969d Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 19:42:43 -0400 Subject: [PATCH 0106/1435] an attempt to fix mail notification --- Jenkinsfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 767277408..767978b2e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -100,7 +100,12 @@ try{ } }catch(error){ (currentBuild.result != "ABORTED") && node() { - step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])]) + emailext ( + subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", + body: """

FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':

+

Check console output at "${env.JOB_NAME} [${env.BUILD_NUMBER}]"

""", + recipientProviders: [[$class: 'DevelopersRecipientProvider']] + ) throw error } } From 50ee2d5afc0855b5697a8a66c5d87ce7e9596eda Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 29 Mar 2017 20:07:02 -0400 Subject: [PATCH 0107/1435] remove notifications for now --- Jenkinsfile | 169 ++++++++++++++++++++++++---------------------------- 1 file changed, 79 insertions(+), 90 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 767978b2e..b8153d210 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,94 +18,83 @@ def updateArchiveDownloadUrl(url){ writeJSON file:'server_archive.json', json: downloadConfig } -try{ - node('rhel7'){ - stage 'Build JDT LS' - git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - def mvnHome = tool 'maven-3.3.9' - sh "${mvnHome}/bin/mvn clean verify -B -U -fae -e -Pserver-distro" - - stage 'Upload Server to staging' - def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - stash name: 'server_distro',includes :files[0].path - env.stageUrl = 'http://download.jboss.org/jbosstools/jdt.ls/staging/' + files[0].name - - } - - node('rhel7'){ - - stage 'Checkout vscode-java code' - deleteDir() - git url: 'https://github.com/redhat-developer/vscode-java.git' - - stage 'Update server archive url to staging' - updateArchiveDownloadUrl(env.stageUrl) - - stage 'install vscode-java build requirements' - installBuildRequirements() - - stage 'Build vscode-java' - buildVscodeExtension() - - stage 'Test vscode-java for staging' - wrap([$class: 'Xvnc']) { - sh "npm test --silent" - } - - stage "Package vscode-java" - def packageJson = readJSON file: 'package.json' - sh "vsce package -o java-${packageJson.version}-${env.BUILD_NUMBER}.vsix" - - stage 'Upload vscode-java to staging' - def vsix = findFiles(glob: '**.vsix') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - } - - node('rhel7'){ - - if(params.publishToMarketPlace){ - timeout(time:5, unit:'DAYS') { - input message:'Approve deployment?', submitter: 'bercan' - } - stage 'Upload Server to release' - unstash 'server_distro' - def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/tools/static/vscode" - def prodUrl = 'http://download.jboss.org/jbosstools/static/vscode/' + files[0].name - - stage 'Checkout vscode-java for release build' - deleteDir() - git url: 'https://github.com/redhat-developer/vscode-java.git' - - stage 'Update server archive url to release' - updateArchiveDownloadUrl(prodUrl) - - stage 'install vscode-java build requirements' - installBuildRequirements() - - stage 'Build vscode-java for release' - buildVscodeExtension() - - stage 'Test vscode-java for release' - wrap([$class: 'Xvnc']) { - sh "npm test --silent" - } - - "Publish to Marketplace" - withCredentials([string(credentialsId: 'vscode_marketplace', variable: 'TOKEN')]) { - sh "vsce publish -p $TOKEN" - } - }//if publishMarketPlace - } -}catch(error){ - (currentBuild.result != "ABORTED") && node() { - emailext ( - subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", - body: """

FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':

-

Check console output at "${env.JOB_NAME} [${env.BUILD_NUMBER}]"

""", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - throw error - } +node('rhel7'){ + stage 'Build JDT LS' + git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' + def mvnHome = tool 'maven-3.3.9' + sh "${mvnHome}/bin/mvn clean verify -B -U -fae -e -Pserver-distro" + + stage 'Upload Server to staging' + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" + stash name: 'server_distro',includes :files[0].path + env.stageUrl = 'http://download.jboss.org/jbosstools/jdt.ls/staging/' + files[0].name + } + +node('rhel7'){ + + stage 'Checkout vscode-java code' + deleteDir() + git url: 'https://github.com/redhat-developer/vscode-java.git' + + stage 'Update server archive url to staging' + updateArchiveDownloadUrl(env.stageUrl) + + stage 'install vscode-java build requirements' + installBuildRequirements() + + stage 'Build vscode-java' + buildVscodeExtension() + + stage 'Test vscode-java for staging' + wrap([$class: 'Xvnc']) { + sh "npm test --silent" + } + + stage "Package vscode-java" + def packageJson = readJSON file: 'package.json' + sh "vsce package -o java-${packageJson.version}-${env.BUILD_NUMBER}.vsix" + + stage 'Upload vscode-java to staging' + def vsix = findFiles(glob: '**.vsix') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" +} + +node('rhel7'){ + + if(params.publishToMarketPlace){ + timeout(time:5, unit:'DAYS') { + input message:'Approve deployment?', submitter: 'bercan' + } + stage 'Upload Server to release' + unstash 'server_distro' + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/tools/static/vscode" + def prodUrl = 'http://download.jboss.org/jbosstools/static/vscode/' + files[0].name + + stage 'Checkout vscode-java for release build' + deleteDir() + git url: 'https://github.com/redhat-developer/vscode-java.git' + + stage 'Update server archive url to release' + updateArchiveDownloadUrl(prodUrl) + + stage 'install vscode-java build requirements' + installBuildRequirements() + + stage 'Build vscode-java for release' + buildVscodeExtension() + + stage 'Test vscode-java for release' + wrap([$class: 'Xvnc']) { + sh "npm test --silent" + } + + "Publish to Marketplace" + withCredentials([string(credentialsId: 'vscode_marketplace', variable: 'TOKEN')]) { + sh "vsce publish -p $TOKEN" + } + }//if publishMarketPlace +} + From be2794ade93d8ac71b3532c27c1741960e4bfcdf Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 09:52:30 -0400 Subject: [PATCH 0108/1435] archive changed json file --- Jenkinsfile | 3 ++- server_archive.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b8153d210..af01d55f7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -63,7 +63,7 @@ node('rhel7'){ node('rhel7'){ - if(params.publishToMarketPlace){ + if(publishToMarketPlace){ timeout(time:5, unit:'DAYS') { input message:'Approve deployment?', submitter: 'bercan' } @@ -79,6 +79,7 @@ node('rhel7'){ stage 'Update server archive url to release' updateArchiveDownloadUrl(prodUrl) + archive includes:"server_archive.json" stage 'install vscode-java build requirements' installBuildRequirements() diff --git a/server_archive.json b/server_archive.json index 7b09f6603..e10445c77 100644 --- a/server_archive.json +++ b/server_archive.json @@ -1,5 +1,5 @@ { "production":{ - "url": "https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz" + "url": "" } } \ No newline at end of file From b908ac6ade27e55292b1c5ed11bac30ced197be9 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 10:05:08 -0400 Subject: [PATCH 0109/1435] revert URL change --- server_archive.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_archive.json b/server_archive.json index e10445c77..7b09f6603 100644 --- a/server_archive.json +++ b/server_archive.json @@ -1,5 +1,5 @@ { "production":{ - "url": "" + "url": "https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz" } } \ No newline at end of file From 0328a629b5bbc41b6348d7891c445ef689b86aaf Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 29 Mar 2017 22:17:37 -0400 Subject: [PATCH 0110/1435] Support starting the Java Language Server with JDK 9. Fixes #43 Signed-off-by: Fred Bricon --- src/extension.ts | 7 +++++++ src/requirements.ts | 11 +++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index a909ce518..f3d3552f5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -41,6 +41,13 @@ function runJavaServer() : Thenable { // suspend=y is the default. Use this form if you need to debug the server startup code: // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); } + if (requirements.java_version > 8) { + params.push('--add-modules=ALL-SYSTEM'); + params.push('--add-opens'); + params.push('java.base/java.util=ALL-UNNAMED'); + params.push('--add-opens'); + params.push('java.base/java.lang=ALL-UNNAMED'); + } params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); params.push('-Dosgi.bundles.defaultStartLevel=4'); params.push('-Declipse.product=org.eclipse.jdt.ls.core.product'); diff --git a/src/requirements.ts b/src/requirements.ts index 8cb6738b4..aa4b29150 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -14,6 +14,7 @@ const JAVAC_FILENAME = 'javac' + (isWindows?'.exe':''); interface RequirementsData { java_home: string; + java_version: number; } interface ErrorData { @@ -31,9 +32,9 @@ interface ErrorData { */ export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); - await checkJavaVersion(java_home); + let javaVersion = await checkJavaVersion(java_home); await checkServerInstalled(); - return Promise.resolve({ 'java_home': java_home }); + return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion}); } function checkJavaRuntime(): Promise { @@ -81,11 +82,13 @@ function readJavaConfig() : string { function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - if (stderr.indexOf('1.8') < 0){ + if (stderr.indexOf('version "9') > -1){ + resolve(9); + } if (stderr.indexOf('1.8') < 0){ openJDKDownload(reject, 'Java 8 is required to run. Please download and install a JDK 8.'); } else{ - resolve(true); + resolve(8); } }); }); From 02d60a84e8a2b1a07cde5389b12f59f931b1bdfa Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Mar 2017 11:20:17 -0400 Subject: [PATCH 0111/1435] Update changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eed36f7b3..b051b715f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Change Log ## 0.1.0 (March 30th, 2017) +* enhancement - Support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). * enhancement - add support for build-helper-maven-plugin. See [JLS#198](https://github.com/eclipse/eclipse.jdt.ls/issues/198). * enhancement - add support for Maven compilerIds jdt, eclipse, javac-with-errorprone. See [JLS#196](https://github.com/eclipse/eclipse.jdt.ls/issues/196). * enhancement - log Server's stderr/sdout in VS Code's console, to help troubleshooting. See [#172](https://github.com/redhat-developer/vscode-java/pull/172/). From 21065f675701408bb6665239a52212d0543612b8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Mar 2017 11:20:41 -0400 Subject: [PATCH 0112/1435] Add more info about troubleshooting Signed-off-by: Fred Bricon --- .github/ISSUE_TEMPLATE.md | 1 + README.md | 4 +++- src/extension.ts | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 273f56a0b..472cade79 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -11,6 +11,7 @@ 2. [step 2] [attach a sample project reproducing the error] +[attach logs](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting#enable-logging) ##### Current Result diff --git a/README.md b/README.md index 0aca41cc3..857d510d3 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,9 @@ language tool logs for further information in case of a failure. ![ status indicator ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/statusMarker.png) -3. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). +3. Read the [troubleshooting guide](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) for more information on collecting informations about issues you might encounter. + +4. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). Contributing =============== diff --git a/src/extension.ts b/src/extension.ts index f3d3552f5..ddce867de 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -77,6 +77,8 @@ function runJavaServer() : Thenable { params.push('-data'); params.push(workspacePath); console.log('Executing '+ child + ' '+ params.join(' ')); + console.log('View server logs at '+ workspacePath + '/.metadata/plugins/.log'); + electron.fork(child, params, {}, function(err, result) { if(err) { reject(err); } if(result){ resolve(result); } From e24d25dc0c4d55dd428e918115a0d5c18b5fdfdf Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Mar 2017 11:25:25 -0400 Subject: [PATCH 0113/1435] Add link to Wiki Signed-off-by: Fred Bricon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 857d510d3..2543b3f47 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Features Please note that [Gradle-based Android projects are not supported](https://github.com/redhat-developer/vscode-java/issues/10#issuecomment-268834749). -See the [changelog](CHANGELOG.md) for the latest release. +See the [changelog](CHANGELOG.md) for the latest release. You might also find useful information in the project [Wiki](https://github.com/redhat-developer/vscode-java/wiki). Setting the JDK =============== From dc163628b918862d6f800344de0b2c076474602c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Mar 2017 11:36:23 -0400 Subject: [PATCH 0114/1435] Update contributing guide Signed-off-by: Fred Bricon --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 82d648892..12809cf05 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,3 +55,9 @@ You can create a binary that you can sideload to your VS Code installation. 4. Optionally, follow the instruction to build the server. 5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/install-extension.md) on ways to sideload or share. + +# Reporting issues +If you encounter a problem and know it is caused by eclipse.jdt.ls, then please open a bug report over [there](https://github.com/eclipse/eclipse.jdt.ls/issues). +In doubt, you can report issues in the [vscode-java issue tracker](https://github.com/redhat-developer/vscode-java/issues). + +Try to collect as much informations as you can to describe the issue and help us reproduce the problem. Head over to the [troubleshooting page](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting#enable-logging) to see how to collect useful logging informations. \ No newline at end of file From 66ed8b130b053921a0f51c1eb7dd53988339832f Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 11:57:42 -0400 Subject: [PATCH 0115/1435] update credentials config --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index af01d55f7..de403f996 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -93,7 +93,7 @@ node('rhel7'){ } "Publish to Marketplace" - withCredentials([string(credentialsId: 'vscode_marketplace', variable: 'TOKEN')]) { + withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_marketplace', variable: 'TOKEN']]) { sh "vsce publish -p $TOKEN" } }//if publishMarketPlace From 46fea85196a8dc0dd446cea5dcc0fd8ec9f23d6e Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 12:57:10 -0400 Subject: [PATCH 0116/1435] remove credentials for now --- Jenkinsfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index de403f996..747cf0e67 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,9 @@ node('rhel7'){ } node('rhel7'){ - + echo " env: ${env.publishToMarketPlace}" + echo " plain: ${publishToMarketPlace}" + echo "params: ${params.publishToMarketPlace}" if(publishToMarketPlace){ timeout(time:5, unit:'DAYS') { input message:'Approve deployment?', submitter: 'bercan' @@ -92,10 +94,12 @@ node('rhel7'){ sh "npm test --silent" } - "Publish to Marketplace" - withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_marketplace', variable: 'TOKEN']]) { - sh "vsce publish -p $TOKEN" - } + stage "Publish to Marketplace" + sh "vsce package" + archive includes:"**.vsix" + // withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_marketplace', variable: 'TOKEN']]) { + // sh "vsce publish -p $TOKEN" + // } }//if publishMarketPlace } From 808e87416cec782470d601156f7432ab152992a0 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 13:58:26 -0400 Subject: [PATCH 0117/1435] treat parameter as string. --- Jenkinsfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 747cf0e67..9a7b5e235 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,10 +62,7 @@ node('rhel7'){ } node('rhel7'){ - echo " env: ${env.publishToMarketPlace}" - echo " plain: ${publishToMarketPlace}" - echo "params: ${params.publishToMarketPlace}" - if(publishToMarketPlace){ + if(publishToMarketPlace.equals('true')){ timeout(time:5, unit:'DAYS') { input message:'Approve deployment?', submitter: 'bercan' } From c4dce5d0b44f7cf19adb1f0e192da95d9fcd2946 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 14:23:03 -0400 Subject: [PATCH 0118/1435] we got credentials :secret: --- Jenkinsfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9a7b5e235..90591fb09 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -92,11 +92,10 @@ node('rhel7'){ } stage "Publish to Marketplace" - sh "vsce package" + withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { + sh "vsce publish -p $TOKEN" + } archive includes:"**.vsix" - // withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_marketplace', variable: 'TOKEN']]) { - // sh "vsce publish -p $TOKEN" - // } }//if publishMarketPlace } From 884605f1d7db5722c810aa9132f962c4785742a5 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 14:48:55 -0400 Subject: [PATCH 0119/1435] avoid multiple code checouts --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 90591fb09..a539d67a3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,6 +59,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" + stash excludes:'node_modules/, server/, .vscode-test/, out, **.vsix, target/' name:'extension_source' } node('rhel7'){ @@ -74,7 +75,7 @@ node('rhel7'){ stage 'Checkout vscode-java for release build' deleteDir() - git url: 'https://github.com/redhat-developer/vscode-java.git' + unstash 'extension_source' stage 'Update server archive url to release' updateArchiveDownloadUrl(prodUrl) From a933ca679de2e7e91997a8abee9c5ca7e49823f0 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 14:50:12 -0400 Subject: [PATCH 0120/1435] add missing comma --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index a539d67a3..464e7fc40 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - stash excludes:'node_modules/, server/, .vscode-test/, out, **.vsix, target/' name:'extension_source' + stash excludes:'node_modules/, server/, .vscode-test/, out, **.vsix, target/' , name:'extension_source' } node('rhel7'){ From 40719e3d64831f7d7493f8d8b7349d5b68ac0a6a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Mar 2017 16:06:45 -0400 Subject: [PATCH 0121/1435] Remove awkward blurb from readme Signed-off-by: Fred Bricon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2543b3f47..06699072e 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ language tool logs for further information in case of a failure. ![ status indicator ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/statusMarker.png) -3. Read the [troubleshooting guide](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) for more information on collecting informations about issues you might encounter. +3. Read the [troubleshooting guide](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) for collecting informations about issues you might encounter. 4. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). From f1673429bbd101677b0026831dd189864f349b55 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 16:30:11 -0400 Subject: [PATCH 0122/1435] do not rebuild for release --- Jenkinsfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 464e7fc40..32ec18675 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - stash excludes:'node_modules/, server/, .vscode-test/, out, **.vsix, target/' , name:'extension_source' + stash excludes:'server/, **.vsix, target/' , name:'extension_source' } node('rhel7'){ @@ -84,9 +84,6 @@ node('rhel7'){ stage 'install vscode-java build requirements' installBuildRequirements() - stage 'Build vscode-java for release' - buildVscodeExtension() - stage 'Test vscode-java for release' wrap([$class: 'Xvnc']) { sh "npm test --silent" From 30c5b3a7edcd1b2518f009064a018495bcb18179 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 16:41:16 -0400 Subject: [PATCH 0123/1435] exclude test framework from stash --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 32ec18675..363789b20 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - stash excludes:'server/, **.vsix, target/' , name:'extension_source' + stash excludes:'server/, .vscode-test/, **.vsix, target/' , name:'extension_source' } node('rhel7'){ From dba45a145683a20eb0689de29431afcb0ebbfdd3 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 18:47:23 -0400 Subject: [PATCH 0124/1435] fix for token --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 363789b20..3b10d6d37 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -91,7 +91,7 @@ node('rhel7'){ stage "Publish to Marketplace" withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { - sh "vsce publish -p $TOKEN" + sh "vsce publish -p ${TOKEN}" } archive includes:"**.vsix" }//if publishMarketPlace From 1aceb23e03ad6d055639c991fb73c5db03fd8cd1 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 30 Mar 2017 19:04:39 -0400 Subject: [PATCH 0125/1435] the quotes --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3b10d6d37..6a63945f3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -91,7 +91,7 @@ node('rhel7'){ stage "Publish to Marketplace" withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { - sh "vsce publish -p ${TOKEN}" + sh 'vsce publish -p ${TOKEN}' } archive includes:"**.vsix" }//if publishMarketPlace From 7a0dc6fd3e03a6610a4cacf3f3515a6e08229292 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 11 Apr 2017 09:22:25 -0400 Subject: [PATCH 0126/1435] Bump version to 0.2.0 Signed-off-by: Fred Bricon --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 06699072e..f90509fe5 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ The following settings are supported: Troubleshooting =============== 1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.1.0/server` folder. +are downloaded under `~/.vscode/extensions/redhat.java-0.2.0/server` folder. You should see a folder named `plugins`. 2. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 6ce09c460..7b2e81a10 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.1.0", + "version": "0.2.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 437bcdd71bed7756e9c7759e104a2596aa9192c8 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 18 Apr 2017 20:29:32 -0400 Subject: [PATCH 0127/1435] use release version of vscode-languageclient --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b2e81a10..748327b47 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "tslint" : "^4.4.2" }, "dependencies": { - "vscode-languageclient": "next", + "vscode-languageclient": "^3.2.0", "find-java-home": "0.1.4", "http-proxy-agent": "^1.0.0", "https-proxy-agent": "^1.0.0", From 660a890e702af17378227b1930d19bba629cecd7 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 11 Apr 2017 16:22:45 -0400 Subject: [PATCH 0128/1435] include packages to vsix updates to include packages in vsix. Removes the dependency to vscode profile on jdt.ls. Updates jenkins pipeline and travis builds. Removes downloadManager related code. --- .travis.yml | 4 ++ .vscodeignore | 2 +- CONTRIBUTING.md | 17 +++-- Jenkinsfile | 44 +++--------- README.md | 10 +-- gulpfile.js | 47 ++++++++++++- package.json | 16 ++--- src/downloadManager.ts | 133 ----------------------------------- src/requirements.ts | 27 ++----- test/downloadManager.test.ts | 25 ------- 10 files changed, 84 insertions(+), 241 deletions(-) delete mode 100644 src/downloadManager.ts delete mode 100644 test/downloadManager.test.ts diff --git a/.travis.yml b/.travis.yml index 1e3cd4fa1..228695786 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,10 @@ before_install: - npm install -g typescript install: +- wget http://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz +- mkdir server +- tar -xvzf jdt-language-server-latest.tar.gz -C ./server +- rm jdt-language-server-latest.tar.gz - npm install - npm run vscode:prepublish - npm install -g vsce diff --git a/.vscodeignore b/.vscodeignore index ae95b0063..c3412c211 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -11,4 +11,4 @@ vsc-extension-quickstart.md undefined/** CONTRIBUTING.md .vscode-test/** -server/** \ No newline at end of file +**/**.vsix diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 12809cf05..39f1e6286 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,13 +33,16 @@ This assumes that you are starting on the `vscode-java` directory ```bash $ cd ..\vscode-java - $ npm run-script build-server + $ npm run build-server ``` -You can run faster builds by calling the `build-server-mac`, `build-server-win` or `build-server-linux` script instead, depending on your OS. These commands run Maven in offline mode, so you might need to run `build-server` at least once, to fetch all the dependencies. +You can run faster server builds during development by calling `./node_modules/.bin/gulp dev_server` script instead, this will build server binaries that are required by your host OS only. You can also use `npm run watch-server` which will build and place them on the extension for Java changes. These commands run Maven in offline mode, so you might need to run `build-server` at least once, to fetch all the dependencies. -This will build and place the binaries under the `server` folder. Alternately you can download -and unzip a pre-built server. For pre-built server information refer to eclipse.jdt.ls -project. +This will build and place the binaries under the `server` folder. Alternately you can download and use the latest snapshot build from [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) project with the following + + ```bash + $ cd ..\vscode-java + $ ./node_modules/.bin/gulp download_server + ``` ## Sideloading @@ -53,11 +56,11 @@ You can create a binary that you can sideload to your VS Code installation. $ npm install ``` 4. Optionally, follow the instruction to build the server. -5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/install-extension.md) +5. See documentation on [extension installation](https://github.com/Microsoft/vscode-docs/blob/master/docs/extensions/publish-extension.md) on ways to sideload or share. # Reporting issues If you encounter a problem and know it is caused by eclipse.jdt.ls, then please open a bug report over [there](https://github.com/eclipse/eclipse.jdt.ls/issues). In doubt, you can report issues in the [vscode-java issue tracker](https://github.com/redhat-developer/vscode-java/issues). -Try to collect as much informations as you can to describe the issue and help us reproduce the problem. Head over to the [troubleshooting page](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting#enable-logging) to see how to collect useful logging informations. \ No newline at end of file +Try to collect as much informations as you can to describe the issue and help us reproduce the problem. Head over to the [troubleshooting page](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting#enable-logging) to see how to collect useful logging informations. diff --git a/Jenkinsfile b/Jenkinsfile index 6a63945f3..d711deb52 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,24 +12,14 @@ def buildVscodeExtension(){ sh "npm run vscode:prepublish" } -def updateArchiveDownloadUrl(url){ - def downloadConfig = readJSON file: 'server_archive.json' - downloadConfig.production.url = url - writeJSON file:'server_archive.json', json: downloadConfig -} - node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' def mvnHome = tool 'maven-3.3.9' sh "${mvnHome}/bin/mvn clean verify -B -U -fae -e -Pserver-distro" - stage 'Upload Server to staging' def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" stash name: 'server_distro',includes :files[0].path - env.stageUrl = 'http://download.jboss.org/jbosstools/jdt.ls/staging/' + files[0].name - } node('rhel7'){ @@ -38,14 +28,15 @@ node('rhel7'){ deleteDir() git url: 'https://github.com/redhat-developer/vscode-java.git' - stage 'Update server archive url to staging' - updateArchiveDownloadUrl(env.stageUrl) - stage 'install vscode-java build requirements' installBuildRequirements() stage 'Build vscode-java' buildVscodeExtension() + unstash 'server_distro' + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "mkdir ./server" + sh "tar -xvzf ${files[0].path} -C ./server" stage 'Test vscode-java for staging' wrap([$class: 'Xvnc']) { @@ -59,7 +50,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" - stash excludes:'server/, .vscode-test/, **.vsix, target/' , name:'extension_source' + stash name:'vsix', includes:files[0].path } node('rhel7'){ @@ -67,31 +58,12 @@ node('rhel7'){ timeout(time:5, unit:'DAYS') { input message:'Approve deployment?', submitter: 'bercan' } - stage 'Upload Server to release' - unstash 'server_distro' - def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${files[0].path} tools@10.5.105.197:/downloads_htdocs/tools/static/vscode" - def prodUrl = 'http://download.jboss.org/jbosstools/static/vscode/' + files[0].name - - stage 'Checkout vscode-java for release build' - deleteDir() - unstash 'extension_source' - - stage 'Update server archive url to release' - updateArchiveDownloadUrl(prodUrl) - archive includes:"server_archive.json" - - stage 'install vscode-java build requirements' - installBuildRequirements() - - stage 'Test vscode-java for release' - wrap([$class: 'Xvnc']) { - sh "npm test --silent" - } stage "Publish to Marketplace" + unstash vsix; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { - sh 'vsce publish -p ${TOKEN}' + def vsix = findFiles(glob: '**.vsix') + sh 'vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}' } archive includes:"**.vsix" }//if publishMarketPlace diff --git a/README.md b/README.md index f90509fe5..1c9c5f520 100644 --- a/README.md +++ b/README.md @@ -66,19 +66,15 @@ The following settings are supported: Troubleshooting =============== -1. Due to size restrictions on the marketplace extension downloads additional required parts check that they -are downloaded under `~/.vscode/extensions/redhat.java-0.2.0/server` folder. -You should see a folder named `plugins`. - -2. Check the status of the language tools on the lower right corner (marked with A on image below). +1. Check the status of the language tools on the lower right corner (marked with A on image below). It should show ready (thumbs up) as on the image below. You can click on the status and open the language tool logs for further information in case of a failure. ![ status indicator ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/statusMarker.png) -3. Read the [troubleshooting guide](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) for collecting informations about issues you might encounter. +2. Read the [troubleshooting guide](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) for collecting informations about issues you might encounter. -4. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). +3. Report any problems you face to the [project](https://github.com/redhat-developer/vscode-java/issues). Contributing =============== diff --git a/gulpfile.js b/gulpfile.js index 33ea9e300..114498737 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,9 +1,54 @@ 'use strict'; const gulp = require('gulp'); const gulp_tslint = require('gulp-tslint'); +const cp = require('child_process'); +const decompress = require('gulp-decompress'); +const download = require('gulp-download'); + //... gulp.task('tslint', () => { return gulp.src(['**/*.ts', '!**/*.d.ts', '!node_modules/**']) .pipe(gulp_tslint()) .pipe(gulp_tslint.report()); -}); \ No newline at end of file +}); + +gulp.task('download_server', ()=> +{ + download("http://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz") + .pipe(decompress()) + .pipe(gulp.dest('./server')) +}); + +gulp.task('build_server', ()=> +{ + cp.execSync('mvn -f ../eclipse.jdt.ls/pom.xml -Pserver-distro clean package', {stdio:[0,1,2]} ); + gulp.src('../eclipse.jdt.ls/org.eclipse.jdt.ls.product/distro/*.tar.gz') + .pipe(decompress()) + .pipe(gulp.dest('./server')) +}); + +gulp.task('dev_server', ()=> +{ + let isWin = /^win/.test(process.platform); + let isMac = /^darwin/.test(process.platform); + let isLinux = /^linux/.test(process.platform); + let command = 'mvn -f ../eclipse.jdt.ls/pom.xml -Pserver-distro,fast -o clean package '; + if(isLinux){ + command +='-Denvironment.os=linux -Denvironment.ws=gtk -Denvironment.arch=x86_64'; + } + if(isMac){ + command += '-Denvironment.os=macosx -Denvironment.ws=cocoa -Denvironment.arch=x86_64'; + }else + if(isWin){ + command += '-Denvironment.os=win32 -Denvironment.ws=win32 -Denvironment.arch=x86_64'; + } + console.log('executing '+command); + cp.execSync(command, {stdio:[0,1,2]} ); + gulp.src('../eclipse.jdt.ls/org.eclipse.jdt.ls.product/distro/*.tar.gz') + .pipe(decompress()) + .pipe(gulp.dest('./server')) +}); + +gulp.task('watch_server',()=>{ + gulp.watch('../eclipse.jdt.ls/org.eclipse.jdt.ls.core/**/*.java',['dev_server']); +}) diff --git a/package.json b/package.json index 748327b47..7d8555409 100644 --- a/package.json +++ b/package.json @@ -114,11 +114,9 @@ "compile": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", - "build-server": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build clean package", - "build-server-mac": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=macosx -Denvironment.ws=cocoa -Denvironment.arch=x86_64 clean package -o", - "build-server-win": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=win32 -Denvironment.ws=win32 -Denvironment.arch=x86_64 clean package -o", - "build-server-linux": "mvn -f ../eclipse.jdt.ls/pom.xml -Pvscode-build,fast -Denvironment.os=linux -Denvironment.ws=gtk -Denvironment.arch=x86_64 clean package -o", - "tslint": "gulp tslint" + "build-server": "./node_modules/.bin/gulp build_server", + "watch-server": "./node_modules/.bin/gulp watch_server", + "tslint": "./node_modules/.bin/gulp tslint" }, "devDependencies": { "typescript": "^2.2.1", @@ -129,13 +127,13 @@ "@types/glob":"5.0.30", "gulp" :"^3.9.1", "gulp-tslint": "^7.1.0", - "tslint" : "^4.4.2" + "tslint" : "^4.4.2", + "gulp-decompress":"2.0.1", + "gulp-download":"0.0.1" }, "dependencies": { "vscode-languageclient": "^3.2.0", "find-java-home": "0.1.4", - "http-proxy-agent": "^1.0.0", - "https-proxy-agent": "^1.0.0", "tmp" : "^0.0.31", "decompress": "^4.0.0", "progress-stream": "^1.2.0", @@ -143,4 +141,4 @@ "expand-home-dir":"^0.0.3", "glob":"^7.1.1" } -} \ No newline at end of file +} diff --git a/src/downloadManager.ts b/src/downloadManager.ts deleted file mode 100644 index 851a00103..000000000 --- a/src/downloadManager.ts +++ /dev/null @@ -1,133 +0,0 @@ - -import * as https from 'https'; -import * as http from 'http'; -import * as fs from 'fs'; -import * as vscode from 'vscode'; -import * as path from 'path'; -import * as stream from 'stream'; -import {Url, parse} from 'url'; - -const HttpProxyAgent = require('http-proxy-agent'); -const HttpsProxyAgent = require('https-proxy-agent'); -const tmp = require('tmp'); -const decompress = require('decompress'); -const progress = require('progress-stream'); - -let downloadProgressItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); -function closeDownloadProgressItem(){ - downloadProgressItem.hide(); - downloadProgressItem.dispose(); -} - -function download(urlString: string, proxy?: string, strictSSL?: boolean): Promise { - let url = parse(urlString); - const agent = getProxyAgent(url, proxy, strictSSL); - - let options: https.RequestOptions = { - host: url.host, - port: url.port ? parseInt(url.port) : (url.protocol === 'https:' ? 443 : 80), - path: url.path, - agent: agent, - rejectUnauthorized: strictSSL - }; - - return new Promise((resolve, reject) => { - var request; - var downloadExec = function(res : http.IncomingMessage) { - // handle redirection - if (res.statusCode === 302) { - return download(res.headers.location).then(is => resolve(is)).catch(err => reject(err)); - } - else if (res.statusCode !== 200) { - return reject(Error(`Download failed with code ${res.statusCode}.`)); - } - let len = parseInt(res.headers['content-length'], 10); - let progressStream = progress({ - length: len, - time: 500 - }); - downloadProgressItem.text = 'Completing Java installation'; - downloadProgressItem.show(); - progressStream.on('progress', function (progressData) { - downloadProgressItem.text = 'Completing Java installation ' + Number.parseInt(progressData.percentage) + '%'; - }); - return resolve(res.pipe(progressStream)); - - }; - if (url.protocol.startsWith('https')){ - request = https.get(options, downloadExec); - } else { - request = http.get(options, downloadExec); - } - request.setTimeout(30000, ()=>{request.abort();}); - return request; - }); -} - -function getSystemProxyURL(requestURL: Url): string { - if (requestURL.protocol === 'http:') { - return process.env.HTTP_PROXY || process.env.http_proxy || null; - } else if (requestURL.protocol === 'https:') { - return process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || null; - } - return null; -} - -function getProxyAgent(requestURL: Url, proxy?: string, strictSSL?: boolean): any { - const proxyURL = proxy || getSystemProxyURL(requestURL); - if (!proxyURL) { - return null; - } - const proxyEndpoint = parse(proxyURL); - - if (!/^https?:$/.test(proxyEndpoint.protocol)) { - return null; - } - - const opts = { - host: proxyEndpoint.hostname, - port: Number(proxyEndpoint.port), - auth: proxyEndpoint.auth, - rejectUnauthorized: strictSSL - }; - return requestURL.protocol === 'http:' ? new HttpProxyAgent(opts) : new HttpsProxyAgent(opts); -} - -export function downloadAndInstallServer() { - return new Promise((resolve, reject) => { - const config = vscode.workspace.getConfiguration(); - const proxy = config.get('http.proxy'); - const strictSSL = config.get('http.proxyStrictSSL', true); - const SERVER_FOLDER = path.resolve(__dirname, '../../server/'); - // const SERVER_ARCHIVE = "https://dl.bintray.com/gorkem/java-language-server/jdt-language-server-.tar.gz"; - // Always use HTTPS download for http adresses may not work over proxies. - const SERVER_ARCHIVE_CONFIG = require('../../server_archive.json'); - - return download(SERVER_ARCHIVE_CONFIG['production']['url'], proxy, strictSSL).then(is => { - tmp.file((err, tmpPath, fd, cleanupCallback) => { - const out = fs.createWriteStream(null, { fd: fd }); - // handle errors - out.once('error', err => { - closeDownloadProgressItem(); - reject(err); - }); - is.once('error', err => { - closeDownloadProgressItem(); - reject(err); - }); - out.once('finish', () => { - decompress(tmpPath, SERVER_FOLDER).then(files => { - closeDownloadProgressItem(); - return resolve(true); - }).catch(err => { - closeDownloadProgressItem(); - return reject(err); - }); - }); - is.pipe(out); - }); - }).catch(err => { - console.log(err); - }); - }); -} diff --git a/src/requirements.ts b/src/requirements.ts index aa4b29150..993e826f9 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -2,9 +2,7 @@ import { workspace, Uri } from 'vscode'; import * as cp from 'child_process'; -import * as fs from 'fs'; import * as path from 'path'; -import * as downloadManager from './downloadManager'; const pathExists = require('path-exists'); const expandHomeDir = require('expand-home-dir'); @@ -24,16 +22,15 @@ interface ErrorData { replaceClose: boolean; } /** - * Resolves the requirements needed to run the extension. - * Returns a promise that will resolve to a RequirementsData if - * all requirements are resolved, it will reject with ErrorData if + * Resolves the requirements needed to run the extension. + * Returns a promise that will resolve to a RequirementsData if + * all requirements are resolved, it will reject with ErrorData if * if any of the requirements fails to resolve. - * + * */ export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); let javaVersion = await checkJavaVersion(java_home); - await checkServerInstalled(); return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion}); } @@ -94,20 +91,6 @@ function checkJavaVersion(java_home: string): Promise { }); } -function checkServerInstalled(): Promise { - let pluginsPath = path.resolve(__dirname, '../../server/plugins'); - try { - let isDirectory = fs.lstatSync(pluginsPath); - if (isDirectory) { - return Promise.resolve(true); - } - } - catch (err) { - // Directory does not exist - } - return downloadManager.downloadAndInstallServer(); -} - function openJDKDownload(reject, cause) { let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/'; if (process.platform === 'darwin') { @@ -119,4 +102,4 @@ function openJDKDownload(reject, cause) { openUrl: Uri.parse(jdkUrl), replaceClose: false }); -} \ No newline at end of file +} diff --git a/test/downloadManager.test.ts b/test/downloadManager.test.ts deleted file mode 100644 index b80bb8979..000000000 --- a/test/downloadManager.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as assert from 'assert'; -import * as path from 'path'; -import * as fs from 'fs'; -import * as downloadManager from '../src/downloadManager'; - - -suite('Java Language Extension downloadManager tests', () => { - - // Defines a Mocha unit test - test('Download server', function() { - this.timeout(2*60*1000); - return downloadManager.downloadAndInstallServer() - .then(() => { - let pluginsPath = path.resolve(__dirname, '../../server/plugins'); - try { - console.log(pluginsPath); - let isDirectory = fs.lstatSync(pluginsPath); - assert.ok(isDirectory,'plugins folder is not found'); - } - catch (err) { - assert.ifError(err); - } - }); - }); -}); \ No newline at end of file From 5c106a3e57531158807ec4b4adbf8df9eefa55b1 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 18 Apr 2017 21:08:45 -0400 Subject: [PATCH 0129/1435] Update vscode/typescript versions to fix build Signed-off-by: Fred Bricon --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7d8555409..4742b5437 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.7.0" + "vscode": "^1.10.0" }, "repository": { "type": "git", @@ -119,7 +119,7 @@ "tslint": "./node_modules/.bin/gulp tslint" }, "devDependencies": { - "typescript": "^2.2.1", + "typescript": "^2.2.2", "vscode": "^1.0.3", "mocha": "^3.2.0", "@types/node": "^6.0.40", From 3c669b63faf0e52efa03c25c607597e4bc945671 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 18 Apr 2017 21:06:19 -0400 Subject: [PATCH 0130/1435] Use Maven wrapper to build server Signed-off-by: Fred Bricon --- gulpfile.js | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 114498737..1f135db99 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,7 +4,7 @@ const gulp_tslint = require('gulp-tslint'); const cp = require('child_process'); const decompress = require('gulp-decompress'); const download = require('gulp-download'); - +const server_dir = '../eclipse.jdt.ls'; //... gulp.task('tslint', () => { return gulp.src(['**/*.ts', '!**/*.d.ts', '!node_modules/**']) @@ -21,34 +21,47 @@ gulp.task('download_server', ()=> gulp.task('build_server', ()=> { - cp.execSync('mvn -f ../eclipse.jdt.ls/pom.xml -Pserver-distro clean package', {stdio:[0,1,2]} ); - gulp.src('../eclipse.jdt.ls/org.eclipse.jdt.ls.product/distro/*.tar.gz') + cp.execSync(mvnw()+ ' -Pserver-distro clean package', {cwd:server_dir, stdio:[0,1,2]} ); + gulp.src(server_dir + '/org.eclipse.jdt.ls.product/distro/*.tar.gz') .pipe(decompress()) .pipe(gulp.dest('./server')) }); gulp.task('dev_server', ()=> { - let isWin = /^win/.test(process.platform); - let isMac = /^darwin/.test(process.platform); - let isLinux = /^linux/.test(process.platform); - let command = 'mvn -f ../eclipse.jdt.ls/pom.xml -Pserver-distro,fast -o clean package '; - if(isLinux){ + let command = mvnw() +' -Pserver-distro,fast -o clean package '; + if(isLinux()){ command +='-Denvironment.os=linux -Denvironment.ws=gtk -Denvironment.arch=x86_64'; } - if(isMac){ + else if(isMac()){ command += '-Denvironment.os=macosx -Denvironment.ws=cocoa -Denvironment.arch=x86_64'; - }else - if(isWin){ + } + else if(isWin()){ command += '-Denvironment.os=win32 -Denvironment.ws=win32 -Denvironment.arch=x86_64'; } console.log('executing '+command); - cp.execSync(command, {stdio:[0,1,2]} ); - gulp.src('../eclipse.jdt.ls/org.eclipse.jdt.ls.product/distro/*.tar.gz') + cp.execSync(command, {cwd:server_dir, stdio:[0,1,2]} ); + gulp.src(server_dir +'/org.eclipse.jdt.ls.product/distro/*.tar.gz') .pipe(decompress()) .pipe(gulp.dest('./server')) }); gulp.task('watch_server',()=>{ - gulp.watch('../eclipse.jdt.ls/org.eclipse.jdt.ls.core/**/*.java',['dev_server']); -}) + gulp.watch(server_dir+'/org.eclipse.jdt.ls.core/**/*.java',['dev_server']); +}); + +function isWin() { + return /^win/.test(process.platform); +} + +function isMac() { + return /^darwin/.test(process.platform); +} + +function isLinux() { + return /^linux/.test(process.platform); +} + +function mvnw() { + return "./mvnw"+(isWin()?".cmd":""); +} From 024716a0e7270814360fa375d1b4c09b44126fd8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 18 Apr 2017 22:13:18 -0400 Subject: [PATCH 0131/1435] Update changelog for 0.2.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b051b715f..f5e5f0bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.2.0 (April 18th, 2017) +* enhancement - Extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). +* bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). +* bug - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). + + ## 0.1.0 (March 30th, 2017) * enhancement - Support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). * enhancement - add support for build-helper-maven-plugin. See [JLS#198](https://github.com/eclipse/eclipse.jdt.ls/issues/198). From 9a39e94ac62336883ab95e60561c28e4e4130f58 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 19 Apr 2017 08:42:37 -0400 Subject: [PATCH 0132/1435] ignore tar files when packaging --- .vscodeignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscodeignore b/.vscodeignore index c3412c211..079183c0b 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -12,3 +12,4 @@ undefined/** CONTRIBUTING.md .vscode-test/** **/**.vsix +**/**.tar.gz From 7fffb9a585c864d8874fb826a6f975bf30f5ee96 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Apr 2017 11:50:09 -0400 Subject: [PATCH 0133/1435] Update 0.2.0 release date Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5e5f0bd5..93450d302 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.2.0 (April 18th, 2017) +## 0.2.0 (April 19th, 2017) * enhancement - Extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). * bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). * bug - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). From 6714f003d7357e86162d1c87eee6ca3ede984dae Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Apr 2017 12:46:23 -0400 Subject: [PATCH 0134/1435] fix jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d711deb52..56c33f5ba 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -60,7 +60,7 @@ node('rhel7'){ } stage "Publish to Marketplace" - unstash vsix; + unstash 'vsix'; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') sh 'vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}' From f5ca7d4074023081c9da2766fb2a39cf962ae18d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Apr 2017 13:04:02 -0400 Subject: [PATCH 0135/1435] Fix publish step --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 56c33f5ba..087910334 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -63,7 +63,7 @@ node('rhel7'){ unstash 'vsix'; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') - sh 'vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}' + sh "vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}" } archive includes:"**.vsix" }//if publishMarketPlace From f2efa348d8982ab54582c22bc604bedb972e8761 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Apr 2017 14:17:25 -0400 Subject: [PATCH 0136/1435] Use Maven wrapper in Jenkinsfile --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 087910334..25c77d549 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,8 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - def mvnHome = tool 'maven-3.3.9' - sh "${mvnHome}/bin/mvn clean verify -B -U -fae -e -Pserver-distro" + sh "./mvnw clean verify -B -U -fae -e -Pserver-distro" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro',includes :files[0].path From b322b65bf304c1b669721f3bd150c49e419d925b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Apr 2017 14:18:02 -0400 Subject: [PATCH 0137/1435] Bump version to 0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4742b5437..6b1d2b430 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.2.0", + "version": "0.3.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 0166f41a6bcd62062c85750b1e0b7c99c4eca969 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 19 Apr 2017 15:55:26 -0400 Subject: [PATCH 0138/1435] remove more irrelevant files also fixes the Jenkins build for publish --- .vscodeignore | 1 + Jenkinsfile | 4 ++-- server_archive.json | 5 ----- 3 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 server_archive.json diff --git a/.vscodeignore b/.vscodeignore index 079183c0b..5468c0b96 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -6,6 +6,7 @@ src/** images/** **/*.map .gitignore +.github/** tsconfig.json vsc-extension-quickstart.md undefined/** diff --git a/Jenkinsfile b/Jenkinsfile index d711deb52..e1122e176 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -60,10 +60,10 @@ node('rhel7'){ } stage "Publish to Marketplace" - unstash vsix; + unstash 'vsix'; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') - sh 'vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}' + sh 'vsce publish -p ${TOKEN} --packagePath' + " ${vsix[0].path}" } archive includes:"**.vsix" }//if publishMarketPlace diff --git a/server_archive.json b/server_archive.json deleted file mode 100644 index 7b09f6603..000000000 --- a/server_archive.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "production":{ - "url": "https://download.jboss.org/jbosstools/static/vscode/jdt-language-server-0.1.0-201703172148.tar.gz" - } -} \ No newline at end of file From f678d3ecee69c93318b0519cf6897da5bfa46971 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 20 Apr 2017 22:58:50 -0400 Subject: [PATCH 0139/1435] Downversion to 0.2.1 to release fix for #189 Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b1d2b430..af4d5ef21 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.3.0", + "version": "0.2.1", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 262116cd13a903aa67e26014ad798854240a51de Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 21 Apr 2017 11:20:26 -0400 Subject: [PATCH 0140/1435] Update changelog for 0.2.1 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93450d302..c01a606ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.2.1 (April 21st, 2017) +* bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). + ## 0.2.0 (April 19th, 2017) * enhancement - Extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). * bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). From 9dff2bfad2d269775928f31cd91085497704e1c9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Sat, 22 Apr 2017 10:10:06 -0400 Subject: [PATCH 0141/1435] Update 0.2.1 release date Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- Jenkinsfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c01a606ca..ffe404a21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.2.1 (April 21st, 2017) +## 0.2.1 (April 22st, 2017) * bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). ## 0.2.0 (April 19th, 2017) diff --git a/Jenkinsfile b/Jenkinsfile index e8d9d095f..31dbd77d6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -55,7 +55,7 @@ node('rhel7'){ node('rhel7'){ if(publishToMarketPlace.equals('true')){ timeout(time:5, unit:'DAYS') { - input message:'Approve deployment?', submitter: 'bercan' + input message:'Approve deployment?', submitter: 'fbricon' } stage "Publish to Marketplace" From d0ddcf8ff9f4f6df4a49d4a1f79ba0f1199ae2a2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 09:42:45 -0400 Subject: [PATCH 0142/1435] New attempt at releasing 0.2.1 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffe404a21..f269c85cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.2.1 (April 22st, 2017) +## 0.2.1 (April 24th, 2017) * bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). ## 0.2.0 (April 19th, 2017) From 6aeda83739b83031dcd47bc25feb28f2130a7de2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 16:21:52 -0400 Subject: [PATCH 0143/1435] Trying to fix quotes in publishing step --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 31dbd77d6..8f53bef5e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ node('rhel7'){ unstash 'vsix'; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') - sh 'vsce publish -p ${TOKEN} --packagePath ${vsix[0].path}' + sh vsce publish -p '${TOKEN}' --packagePath "${vsix[0].path}" } archive includes:"**.vsix" }//if publishMarketPlace From 3783d4d90ccbcaebc5e414c703edf1faf5964f5c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 16:43:09 -0400 Subject: [PATCH 0144/1435] Trying to fix quotes in publishing step, take 2 --- Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8f53bef5e..4b2112b6c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -67,4 +67,3 @@ node('rhel7'){ archive includes:"**.vsix" }//if publishMarketPlace } - From a046c6fc993a68c1d3908e3df2eee488612952d6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 16:51:18 -0400 Subject: [PATCH 0145/1435] Disable p2 mirrors --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4b2112b6c..04e00a591 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -fae -e -Pserver-distro" + sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro',includes :files[0].path From 03005cf5c40ecada7b18ecd35d3c877e96e49280 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 17:44:13 -0400 Subject: [PATCH 0146/1435] Fix quotes, take 3 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 04e00a591..5d681be56 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ node('rhel7'){ unstash 'vsix'; withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') - sh vsce publish -p '${TOKEN}' --packagePath "${vsix[0].path}" + sh 'vsce publish -p ${TOKEN} --packagePath' + " ${vsix[0].path}" } archive includes:"**.vsix" }//if publishMarketPlace From 3338da80071c1f359a5ae98c78e18d6da596fe13 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 24 Apr 2017 17:57:16 -0400 Subject: [PATCH 0147/1435] Back to 0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af4d5ef21..6b1d2b430 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.2.1", + "version": "0.3.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 153e69fffbf8977f5b2c6f003ff7f982401e772c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 26 Apr 2017 10:43:51 -0400 Subject: [PATCH 0148/1435] Add option to open Wiki on incomplete classpath message Fixes #193 Signed-off-by: Fred Bricon --- src/commands.ts | 56 ++++++++++++++++++++++++++++++++++++++++++ src/extension.ts | 28 ++++++++++++--------- test/extension.test.ts | 15 ++++++----- 3 files changed, 82 insertions(+), 17 deletions(-) create mode 100644 src/commands.ts diff --git a/src/commands.ts b/src/commands.ts new file mode 100644 index 000000000..cfeea4aae --- /dev/null +++ b/src/commands.ts @@ -0,0 +1,56 @@ +'use strict'; + +/** + * Commonly used commands + */ +export namespace Commands { + /** + * Open Browser + */ + export const OPEN_BROWSER = 'vscode.open'; + + /** + * Open Output view + */ + export const OPEN_OUTPUT = 'java.open.output'; + + /** + * Show Java references + */ + export const SHOW_JAVA_REFERENCES = 'java.show.references'; + + /** + * Show editor references + */ + export const SHOW_REFERENCES = 'editor.action.showReferences'; + + /** + * Update project configuration + */ + export const CONFIGURATION_UPDATE = 'java.projectConfiguration.update'; + + /** + * Ignore "Incomplete Classpath" messages + */ + export const IGNORE_INCOMPLETE_CLASSPATH = 'java.ignoreIncompleteClasspath'; + + /** + * Open help for "Incomplete Classpath" message + */ + export const IGNORE_INCOMPLETE_CLASSPATH_HELP = 'java.ignoreIncompleteClasspath.help'; + + /** + * Reload VS Code window + */ + export const RELOAD_WINDOW = 'workbench.action.reloadWindow'; + + /** + * Set project configuration update mode + */ + export const PROJECT_CONFIGURATION_STATUS = 'java.projectConfiguration.status'; + + /** + * Apply Workspace Edit + */ + export const APPLY_WORKSPACE_EDIT = 'java.apply.workspaceEdit'; +} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index ddce867de..d44b03425 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,7 +10,8 @@ var electron = require('./electron_j'); var os = require('os'); var glob = require('glob'); import * as requirements from './requirements'; -import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification,FeatureStatus } from './protocol'; +import {Commands} from './commands'; +import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification,FeatureStatus,ActionableMessage } from './protocol'; declare var v8debug; @@ -24,7 +25,7 @@ function runJavaServer() : Thenable { //show error window.showErrorMessage(error.message, error.label).then((selection )=>{ if(error.label && error.label === selection && error.openUrl){ - commands.executeCommand('vscode.open', error.openUrl); + commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); } }); // rethrow to disrupt the chain. @@ -172,7 +173,7 @@ export function activate(context: ExtensionContext) { setTimeout(() => { item.text = lastStatus; }, 3000); break; } - item.command = 'java.open.output'; + item.command = Commands.OPEN_OUTPUT; item.tooltip = report.message; toggleItem(window.activeTextEditor, item); }); @@ -195,6 +196,7 @@ export function activate(context: ExtensionContext) { if (!show) { return; } + const titles = notification.commands.map(a => a.title); show(notification.message, ...titles).then((selection) => { @@ -210,20 +212,24 @@ export function activate(context: ExtensionContext) { }); - commands.registerCommand('java.open.output', ()=>{ + commands.registerCommand(Commands.OPEN_OUTPUT, ()=>{ languageClient.outputChannel.show(ViewColumn.Three); }); - commands.registerCommand('java.show.references', (uri:string, position: LSPosition, locations:LSLocation[])=>{ - commands.executeCommand('editor.action.showReferences', Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); + commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri:string, position: LSPosition, locations:LSLocation[])=>{ + commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); }); - commands.registerCommand('java.projectConfiguration.update', uri => projectConfigurationUpdate(languageClient, uri)); + commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); + + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?:any) => setIncompleteClasspathSeverity('ignore')); - commands.registerCommand('java.ignoreIncompleteClasspath', (data?:any) => setIncompleteClasspathSeverity('ignore')); + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?:any) => { + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) + }); - commands.registerCommand('java.projectConfiguration.status', (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); - commands.registerCommand('java.apply.workspaceEdit',(obj)=>{ + commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT,(obj)=>{ let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); if(edit){ workspace.applyEdit(edit); @@ -315,7 +321,7 @@ function onConfigurationChange() { if (hasJavaConfigChanged(oldConfig, newConfig)) { let msg = 'Java Language Server configuration changed, please restart VS Code.'; let action = 'Restart Now'; - let restartId = 'workbench.action.reloadWindow'; + let restartId = Commands.RELOAD_WINDOW; oldConfig = newConfig; window.showWarningMessage(msg,action).then((selection )=>{ if(action === selection) { diff --git a/test/extension.test.ts b/test/extension.test.ts index 9cf157f9c..6a28514ea 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -1,6 +1,7 @@ import * as assert from 'assert'; import * as vscode from 'vscode'; import * as java from '../src/extension'; +import {Commands} from '../src/commands'; suite('Java Language Extension', () => { @@ -18,12 +19,13 @@ suite('Java Language Extension', () => { return vscode.commands.getCommands(true).then((commands) => { const JAVA_COMMANDS = [ - 'java.open.output', - 'java.show.references', - 'java.projectConfiguration.update', - 'java.ignoreIncompleteClasspath', - 'java.projectConfiguration.status', - 'java.apply.workspaceEdit', + Commands.OPEN_OUTPUT, + Commands.SHOW_JAVA_REFERENCES, + Commands.CONFIGURATION_UPDATE, + Commands.IGNORE_INCOMPLETE_CLASSPATH, + Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, + Commands.PROJECT_CONFIGURATION_STATUS, + Commands.APPLY_WORKSPACE_EDIT, ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); @@ -56,4 +58,5 @@ suite('Java Language Extension', () => { assert.equal(vmArgs[1], '-Xbootclasspath/a:C:\\Program Files\\Java\\lombok.jar'); assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); }); + }); \ No newline at end of file From 59245d309110fdafe8c8c4751418efc9d0375541 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 1 May 2017 13:48:01 -0400 Subject: [PATCH 0149/1435] Enable String deduplication by default. Fixes #195 Signed-off-by: Fred Bricon --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6b1d2b430..1a1afaee1 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ }, "java.jdt.ls.vmargs": { "type": ["string", "null"], - "default": "-noverify -Xmx1G", - "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G` to bypass class verification and increase the heap size to 1GB" + "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", + "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" }, "java.errors.incompleteClasspath.severity": { "type": ["string"], From ef178d2c47072cc889c577ef6f9665e2a629a1b2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 3 May 2017 11:51:34 -0400 Subject: [PATCH 0150/1435] Add menus to update project config. Fixes #159 Signed-off-by: Fred Bricon --- package.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/package.json b/package.json index 1a1afaee1..eab360658 100644 --- a/package.json +++ b/package.json @@ -33,11 +33,45 @@ "id": "java", "extensions": [ ".class" ], "configuration": "./language-configuration.json" + },{ + "id": "maven", + "filenames": ["pom.xml"] + },{ + "id": "gradle", + "filenamePatterns": [ + "**/*.gradle" + ] }], "snippets": [{ "language": "java", "path": "./snippets/java.json" }], + "menus": { + "explorer/context": [ + { + "when": "resourceLangId == maven", + "command": "java.projectConfiguration.update", + "group": "1_modification" + }, + { + "when": "resourceLangId == gradle", + "command": "java.projectConfiguration.update", + "group": "1_modification" + } + ], + "editor/context": [ + { + "when": "resourceLangId == maven", + "command": "java.projectConfiguration.update", + "group": "1_modification" + }, + { + "when": "resourceLangId == gradle", + "command": "java.projectConfiguration.update", + "group": "1_modification" + } + ] + }, "configuration": { "type": "object", "title": "Java configuration", From e362b3ea89fb2ad9e5e4bfcc0d09ce6e395e7f08 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 3 May 2017 16:20:54 -0400 Subject: [PATCH 0151/1435] Update changelog for 0.3.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f269c85cd..8cf188757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## 0.3.0 (May 3rd, 2017) +* enhancement - Add `Update project configuration` menus on build files. See [#159](https://github.com/redhat-developer/vscode-java/issues/159). +* enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). +* enhancement - Enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). + ## 0.2.1 (April 24th, 2017) * bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). From 6766450efce30ba67a42e27374b133c3b029a842 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 3 May 2017 16:49:59 -0400 Subject: [PATCH 0152/1435] Revert "Add menus to update project config. Fixes #159" When putting gradle files into a new gradle language id syntax coloring is lost. Gradle files are already associated with the groovy language. This reverts commit ef178d2c47072cc889c577ef6f9665e2a629a1b2. --- CHANGELOG.md | 1 - package.json | 34 ---------------------------------- 2 files changed, 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cf188757..30cb5d27e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ # Change Log ## 0.3.0 (May 3rd, 2017) -* enhancement - Add `Update project configuration` menus on build files. See [#159](https://github.com/redhat-developer/vscode-java/issues/159). * enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). * enhancement - Enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). diff --git a/package.json b/package.json index eab360658..1a1afaee1 100644 --- a/package.json +++ b/package.json @@ -33,45 +33,11 @@ "id": "java", "extensions": [ ".class" ], "configuration": "./language-configuration.json" - },{ - "id": "maven", - "filenames": ["pom.xml"] - },{ - "id": "gradle", - "filenamePatterns": [ - "**/*.gradle" - ] }], "snippets": [{ "language": "java", "path": "./snippets/java.json" }], - "menus": { - "explorer/context": [ - { - "when": "resourceLangId == maven", - "command": "java.projectConfiguration.update", - "group": "1_modification" - }, - { - "when": "resourceLangId == gradle", - "command": "java.projectConfiguration.update", - "group": "1_modification" - } - ], - "editor/context": [ - { - "when": "resourceLangId == maven", - "command": "java.projectConfiguration.update", - "group": "1_modification" - }, - { - "when": "resourceLangId == gradle", - "command": "java.projectConfiguration.update", - "group": "1_modification" - } - ] - }, "configuration": { "type": "object", "title": "Java configuration", From f018d6f8be9b3a5ccd8f901030c1946b58b3b68e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 4 May 2017 09:28:53 -0400 Subject: [PATCH 0153/1435] Update release date for 0.3.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30cb5d27e..69fccf78c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.3.0 (May 3rd, 2017) +## 0.3.0 (May 4th, 2017) * enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). * enhancement - Enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). From 157fe4b7b6837d4b45cedef68c8318404ada93e8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 4 May 2017 11:00:05 -0400 Subject: [PATCH 0154/1435] Update version to 0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1a1afaee1..16ae4a770 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.3.0", + "version": "0.4.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From fc3de9fdaeef6f0a087138741b329f1e7ab44532 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 9 May 2017 18:07:34 -0400 Subject: [PATCH 0155/1435] remove bit about downloaded server --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c9c5f520..248fab212 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,7 @@ Quick Start 1. Install the Extension 2. If you do not have a _Java 8_ Development Kit correctly [set](#setting-the-jdk) * Download and install a Java 8 compatible development kit. -3. Extension is activated when you first access a Java file. - * Initial activation can be longer since it requires extension to download additional parts. +3. Extension is activated when you first access a Java file * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. Features From 69a966aa355e52bfb5e2962b6cb6b4099b471527 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 9 May 2017 23:29:41 -0400 Subject: [PATCH 0156/1435] remove unused npm dependencies Removes unused npm dependencies that were used for server download in the earlier releases. --- package.json | 4 +--- tslint.json | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 16ae4a770..b594c4dd5 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "@types/glob":"5.0.30", "gulp" :"^3.9.1", "gulp-tslint": "^7.1.0", - "tslint" : "^4.4.2", + "tslint" : "^5.2.0", "gulp-decompress":"2.0.1", "gulp-download":"0.0.1" }, @@ -135,8 +135,6 @@ "vscode-languageclient": "^3.2.0", "find-java-home": "0.1.4", "tmp" : "^0.0.31", - "decompress": "^4.0.0", - "progress-stream": "^1.2.0", "path-exists":"^3.0.0", "expand-home-dir":"^0.0.3", "glob":"^7.1.1" diff --git a/tslint.json b/tslint.json index 3233a4ed3..d73ae925e 100644 --- a/tslint.json +++ b/tslint.json @@ -10,4 +10,4 @@ "triple-equals": true, "quotemark": [true, "single", "avoid-escape"] } -} \ No newline at end of file +} From 9fd4ac659ca88189f944a708d123d4ee8c695a2b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 12 May 2017 12:28:45 -0400 Subject: [PATCH 0157/1435] Adding command to open server log. Fixes #209 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ README.md | 3 ++- package.json | 7 +++++++ src/commands.ts | 5 +++++ src/extension.ts | 31 ++++++++++++++++++++++++++++++- test/extension.test.ts | 1 + 6 files changed, 48 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69fccf78c..6038a68f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.4.0 (Mid-May, 2017) +* enhancement - New `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). + ## 0.3.0 (May 4th, 2017) * enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). * enhancement - Enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). diff --git a/README.md b/README.md index 248fab212..1973db1f9 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,8 @@ The path to the Java Development Kit is searched in the following order: Available commands ========================== The following command is available: -- Update Project configuration (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. +- `Java:Update Project configuration` (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. +- `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. Supported VS Code settings ========================== diff --git a/package.json b/package.json index b594c4dd5..64edebac9 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,8 @@ "onLanguage:java", "onCommand:java.show.references", "onCommand:java.open.output", + "onCommand:java.open.serverLog", + "onCommand:java.projectConfiguration.update", "workspaceContains:pom.xml", "workspaceContains:build.gradle" ], @@ -99,6 +101,11 @@ "command": "java.projectConfiguration.update", "title": "Update project configuration", "category": "Java" + }, + { + "command": "java.open.serverLog", + "title": "Open Java Language Server log file", + "category": "Java" } ], "keybindings": [{ diff --git a/src/commands.ts b/src/commands.ts index cfeea4aae..3bd64beb2 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -53,4 +53,9 @@ export namespace Commands { * Apply Workspace Edit */ export const APPLY_WORKSPACE_EDIT = 'java.apply.workspaceEdit'; + + /** + * Open Java Language Server Log file + */ + export const OPEN_SERVER_LOG = 'java.open.serverLog'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index d44b03425..e406215b2 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -17,6 +17,7 @@ import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateR declare var v8debug; const DEBUG = ( typeof v8debug === 'object') || startedInDebugMode(); var storagePath; +var serverLogFile: string | null = null; var oldConfig; var lastStatus; @@ -78,7 +79,8 @@ function runJavaServer() : Thenable { params.push('-data'); params.push(workspacePath); console.log('Executing '+ child + ' '+ params.join(' ')); - console.log('View server logs at '+ workspacePath + '/.metadata/plugins/.log'); + serverLogFile = path.join(workspacePath, '.metadata', '.log'); + console.log('View server logs at '+ serverLogFile); electron.fork(child, params, {}, function(err, result) { if(err) { reject(err); } @@ -236,6 +238,8 @@ export function activate(context: ExtensionContext) { } }); + commands.registerCommand(Commands.OPEN_SERVER_LOG,()=> openServerLogFile()); + window.onDidChangeActiveTextEditor((editor) =>{ toggleItem(editor, item); }); @@ -282,6 +286,9 @@ function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { resource = window.activeTextEditor.document.uri; } } + if (!resource) { + return window.showWarningMessage('No Java project to update!').then(() => false); + } if (isJavaConfigFile(resource.path)){ languageClient.sendNotification(ProjectConfigurationUpdateRequest.type, { uri: resource.toString() @@ -384,4 +391,26 @@ function startedInDebugMode(): boolean { function getJavaConfiguration():WorkspaceConfiguration { return workspace.getConfiguration('java'); +} + +function openServerLogFile(): Thenable { + if (!serverLogFile) { + return window.showWarningMessage('Java Language Server has not started logging.').then(() => false); + } + + return workspace.openTextDocument(serverLogFile) + .then(doc => { + if (!doc) { + return false; + } + return window.showTextDocument(doc, window.activeTextEditor ? + window.activeTextEditor.viewColumn : undefined) + .then(editor => !!editor); + }, () => false) + .then(didOpen => { + if (!didOpen) { + window.showWarningMessage('Could not open Java Language Server log file'); + } + return didOpen; + }); } \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index 6a28514ea..1260c1627 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -26,6 +26,7 @@ suite('Java Language Extension', () => { Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, Commands.PROJECT_CONFIGURATION_STATUS, Commands.APPLY_WORKSPACE_EDIT, + Commands.OPEN_SERVER_LOG ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 83c81b1a31a4b798d5406cedcd98af622c997df9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 15 May 2017 16:11:47 -0400 Subject: [PATCH 0158/1435] Update changelog for 0.4.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6038a68f9..4ca3a9b86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ # Change Log -## 0.4.0 (Mid-May, 2017) +## 0.4.0 (May 15th, 2017) * enhancement - New `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). +* enhancement - Expand workspace symbol search to all classes from classpath. See [#204](https://github.com/redhat-developer/vscode-java/issues/204). +* bug - fixed outline for classes from classpath. See [#206](https://github.com/redhat-developer/vscode-java/issues/206). +* bug - fixed ambiguous results from class outline. See [JLS#214](https://github.com/eclipse/eclipse.jdt.ls/issues/214). ## 0.3.0 (May 4th, 2017) * enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). From 351dfc96dacc0e2ac6adea5ab113ef835a76f1cc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 15 May 2017 23:34:06 -0400 Subject: [PATCH 0159/1435] Bump version to 0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64edebac9..c28bf6b21 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "SEE LICENSE IN LICENSE", - "version": "0.4.0", + "version": "0.5.0", "publisher": "redhat", "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 671b263e3154f73a06ea861ada1596f69ce481c7 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 18 May 2017 10:17:06 -0400 Subject: [PATCH 0160/1435] Use proper placeholder syntax in snippets. Fixes #217 Signed-off-by: Fred Bricon --- snippets/java.json | 48 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index 433b79744..800f4a0e4 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -25,8 +25,8 @@ "foreach": { "prefix": "foreach", "body": [ - "for (${type} ${var} : ${iterable}) {", - "\t$4", + "for (${0:type} ${1:var} : ${2:iterable}) {", + "\t$3", "}" ], "description": "Enhanced for loop" @@ -34,7 +34,7 @@ "Public constructor": { "prefix": "ctor", "body": [ - "public ${name}($1) {", + "public ${1:name}($2) {", "\tsuper();", "\t$0", "}" @@ -45,11 +45,11 @@ "prefix": "class", "body": [ "/**", - " * ${name}", + " * ${1:name}", " */", - "public class ${name} {", + "public class ${1:name} {", "", - "\tpublic ${name} (${parameters}) {", + "\tpublic ${1:name} (${2:parameters}) {", "\t\t$0", "\t}", "}" @@ -60,9 +60,9 @@ "prefix": "interface", "body": [ "/**", - " * ${name}", + " * ${1:name}", " */", - "public interface ${name} {", + "public interface ${1:name} {", "\t$0", "}" ], @@ -71,8 +71,8 @@ "if": { "prefix": "if", "body": [ - "if (${condition}) {", - "\t$2", + "if (${1:condition}) {", + "\t$0", "}" ], "description": "if statement" @@ -80,7 +80,7 @@ "ifelse": { "prefix": "ifelse", "body": [ - "if (${condition}) {", + "if (${1:condition}) {", "\t$2", "} else {", "\t$3", @@ -91,7 +91,7 @@ "ifnull": { "prefix": "ifnull", "body": [ - "if (${condition} == null) {", + "if (${1:condition} == null) {", "\t$2", "}" ], @@ -100,7 +100,7 @@ "ifnotnull": { "prefix": "ifnotnull", "body": [ - "if (${condition} != null) {", + "if (${1:condition} != null) {", "\t$2", "}" ], @@ -111,8 +111,8 @@ "body": [ "try {", "\t$1", - "} catch (${Exception} ${e}) {", - "\t$4//${TODO}: handle exception", + "} catch (${2:Exception} ${3:e}) {", + "\t$4//${5:TODO}: handle exception", "}" ], "description": "try/catch block" @@ -120,7 +120,7 @@ "private_method": { "prefix": "private_method", "body": [ - "private ${Type} ${name}(${3}) {", + "private ${1:Type} ${2:name}($3) {", "\t$4", "}" ], @@ -129,7 +129,7 @@ "Public method": { "prefix": "public_method", "body": [ - "public ${Type} ${name}(${3}) {", + "public ${1:Type} ${2:name}(${3}) {", "\t$4", "}" ], @@ -138,7 +138,7 @@ "Private static method": { "prefix": "private_static_method", "body": [ - "private static ${Type} ${name}(${3}) {", + "private static ${1:Type} ${2:name}(${3}) {", "\t$4", "}" ], @@ -147,7 +147,7 @@ "Public static method": { "prefix": "public_static_method", "body": [ - "public static ${Type} ${name}(${3}) {", + "public static ${1:Type} ${2:name}(${3}) {", "\t$4", "}" ], @@ -156,7 +156,7 @@ "Protected Method": { "prefix": "protected_method", "body": [ - "protected ${Type} ${name}(${3}) {", + "protected ${1:Type} ${2:name}(${3}) {", "\t$4", "}" ], @@ -165,8 +165,8 @@ "Switch Statement": { "prefix": "switch", "body": [ - "switch (${key}) {", - "\tcase ${value}:", + "switch (${1:key}) {", + "\tcase ${2:value}:", "\t\t$0", "\t\tbreak;", "", @@ -179,7 +179,7 @@ "While Statement": { "prefix": "while", "body": [ - "while (${condition}) {", + "while (${1:condition}) {", "\t$0", "}" ], @@ -190,7 +190,7 @@ "body": [ "do {", "\t$0", - "} while (${condition});" + "} while (${1:condition});" ], "description": "Do-While Statement" } From a55f4f221336400d6db9857da41b5a017d1b9568 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Thu, 25 May 2017 20:28:22 -0400 Subject: [PATCH 0161/1435] Add progress UI to the server startup Starts using the progress API for server startup. Also refactors the server starting code into its own file. --- package.json | 4 +- src/extension.ts | 501 ++++++++++++++++----------------------- src/javaServerStarter.ts | 111 +++++++++ test/extension.test.ts | 4 +- 4 files changed, 319 insertions(+), 301 deletions(-) create mode 100644 src/javaServerStarter.ts diff --git a/package.json b/package.json index c28bf6b21..c6556010e 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs" : "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.10.0" + "vscode": "^1.12.0" }, "repository": { "type": "git", @@ -127,7 +127,7 @@ }, "devDependencies": { "typescript": "^2.2.2", - "vscode": "^1.0.3", + "vscode": "^1.1.0", "mocha": "^3.2.0", "@types/node": "^6.0.40", "@types/mocha": "^2.2.39", diff --git a/src/extension.ts b/src/extension.ts index e406215b2..cfa6604ee 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,284 +2,216 @@ 'use strict'; import * as path from 'path'; -import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction } from 'vscode'; -import { LanguageClient, LanguageClientOptions, StreamInfo, Position as LSPosition, Location as LSLocation} from 'vscode-languageclient'; - - -var electron = require('./electron_j'); -var os = require('os'); -var glob = require('glob'); -import * as requirements from './requirements'; -import {Commands} from './commands'; -import { StatusNotification,ClassFileContentsRequest,ProjectConfigurationUpdateRequest,MessageType,ActionableNotification,FeatureStatus,ActionableMessage } from './protocol'; - - -declare var v8debug; -const DEBUG = ( typeof v8debug === 'object') || startedInDebugMode(); -var storagePath; -var serverLogFile: string | null = null; -var oldConfig; - -var lastStatus; -function runJavaServer() : Thenable { - return requirements.resolveRequirements().catch(error =>{ - //show error - window.showErrorMessage(error.message, error.label).then((selection )=>{ - if(error.label && error.label === selection && error.openUrl){ - commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); - } - }); - // rethrow to disrupt the chain. - throw error; - }) - .then(requirements => { - return new Promise(function(resolve, reject){ - let child = path.resolve (requirements.java_home + '/bin/java'); - let params = []; - let workspacePath = path.resolve( storagePath+'/jdt_ws'); - - if (DEBUG) { - params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044'); - // suspend=y is the default. Use this form if you need to debug the server startup code: - // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); - } - if (requirements.java_version > 8) { - params.push('--add-modules=ALL-SYSTEM'); - params.push('--add-opens'); - params.push('java.base/java.util=ALL-UNNAMED'); - params.push('--add-opens'); - params.push('java.base/java.lang=ALL-UNNAMED'); - } - params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); - params.push('-Dosgi.bundles.defaultStartLevel=4'); - params.push('-Declipse.product=org.eclipse.jdt.ls.core.product'); - if (DEBUG) { - params.push('-Dlog.protocol=true'); - params.push('-Dlog.level=ALL'); - } - - let vmargs = getJavaConfiguration().get('jdt.ls.vmargs',''); - parseVMargs(params, vmargs); - let server_home :string = path.resolve( __dirname,'../../server'); - let launchersFound:Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', {cwd: server_home }); - if( launchersFound.length ){ - params.push('-jar'); params.push(path.resolve(server_home,launchersFound[0])); - }else{ - reject('failed to find launcher'); - } +import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; +import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { runServer } from './javaServerStarter'; +import { Commands } from './commands'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; - //select configuration directory according to OS - let configDir = 'config_win'; - if (process.platform === 'darwin') { - configDir = 'config_mac'; - } else if (process.platform === 'linux') { - configDir = 'config_linux'; - } - params.push('-configuration'); params.push(path.resolve( __dirname ,'../../server',configDir)); - params.push('-data'); params.push(workspacePath); +let oldConfig; +let lastStatus; - console.log('Executing '+ child + ' '+ params.join(' ')); - serverLogFile = path.join(workspacePath, '.metadata', '.log'); - console.log('View server logs at '+ serverLogFile); +export function activate(context: ExtensionContext) { - electron.fork(child, params, {}, function(err, result) { - if(err) { reject(err); } - if(result){ resolve(result); } + window.withProgress({ location: ProgressLocation.Window, title: 'Starting Java Language Server' }, p => { + return new Promise((resolve, reject) => { + // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at + // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 + languages.setLanguageConfiguration('java', { + indentationRules: { + // ^(.*\*/)?\s*\}.*$ + decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/, + // ^.*\{[^}"']*$ + increaseIndentPattern: /^.*\{[^}"']*$/ + }, + wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, + onEnterRules: [ + { + // e.g. /** | */ + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + afterText: /^\s*\*\/$/, + action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' } + }, + { + // e.g. /** ...| + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + action: { indentAction: IndentAction.None, appendText: ' * ' } + }, + { + // e.g. * ...| + beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/, + action: { indentAction: IndentAction.None, appendText: '* ' } + }, + { + // e.g. */| + beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + }, + { + // e.g. *-----*/| + beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + } + ] }); - }); - }); -} -export function activate(context: ExtensionContext) { - // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at - // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 - languages.setLanguageConfiguration('java', { - indentationRules: { - // ^(.*\*/)?\s*\}.*$ - decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/, - // ^.*\{[^}"']*$ - increaseIndentPattern: /^.*\{[^}"']*$/ - }, - wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, - onEnterRules: [ - { - // e.g. /** | */ - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - afterText: /^\s*\*\/$/, - action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' } - }, - { - // e.g. /** ...| - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - action: { indentAction: IndentAction.None, appendText: ' * ' } - }, - { - // e.g. * ...| - beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/, - action: { indentAction: IndentAction.None, appendText: '* ' } - }, - { - // e.g. */| - beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 } - }, - { - // e.g. *-----*/| - beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 } + let storagePath = context.storagePath; + if (!storagePath) { + storagePath = getTempWorkspace(); } - ] - }); - + let workspacePath = path.resolve(storagePath + '/jdt_ws'); + let serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration() ); + + // Options to control the language client + let clientOptions: LanguageClientOptions = { + // Register the server for java + documentSelector: ['java'], + synchronize: { + configurationSection: 'java', + // Notify the server about file changes to .java files contain in the workspace + fileEvents: [ + workspace.createFileSystemWatcher('**/*.java'), + workspace.createFileSystemWatcher('**/pom.xml'), + workspace.createFileSystemWatcher('**/*.gradle') + ], + } + }; - storagePath = context.storagePath; - if (!storagePath) { - storagePath = getTempWorkspace(); - } - let serverOptions= runJavaServer; - - - // Options to control the language client - let clientOptions: LanguageClientOptions = { - // Register the server for java - documentSelector: ['java'], - synchronize: { - configurationSection: 'java', - // Notify the server about file changes to .java files contain in the workspace - fileEvents: [ - workspace.createFileSystemWatcher('**/*.java'), - workspace.createFileSystemWatcher('**/pom.xml'), - workspace.createFileSystemWatcher('**/*.gradle') - ], - } - }; - - let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - oldConfig = getJavaConfiguration(); - // Create the language client and start the client. - let languageClient = new LanguageClient('java','Language Support for Java', serverOptions, clientOptions); - languageClient.onReady().then(() => { - languageClient.onNotification(StatusNotification.type, (report) => { - console.log(report.message); - switch (report.type) { - case 'Started': - item.text = '$(thumbsup)'; - lastStatus = item.text; - break; - case 'Error': - item.text = '$(thumbsdown)'; - lastStatus = item.text; - break; - case 'Message': - item.text = report.message; - setTimeout(() => { item.text = lastStatus; }, 3000); - break; - } + let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); + item.text='$(rocket)'; item.command = Commands.OPEN_OUTPUT; - item.tooltip = report.message; - toggleItem(window.activeTextEditor, item); - }); - languageClient.onNotification(ActionableNotification.type, (notification) => { - let show = null; - switch (notification.severity) { - case MessageType.Log: - show = logNotification; - break; - case MessageType.Info: - show = window.showInformationMessage; - break; - case MessageType.Warning: - show = window.showWarningMessage; - break; - case MessageType.Error: - show = window.showErrorMessage; - break; - } - if (!show) { - return; - } - - const titles = notification.commands.map(a => a.title); - show(notification.message, ...titles).then((selection) => { - for (let action of notification.commands) { - if (action.title === selection) { - let args: any[] = (action.arguments) ? action.arguments : []; - commands.executeCommand(action.command, ...args); - break; + oldConfig = getJavaConfiguration(); + // Create the language client and start the client. + let languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); + languageClient.onReady().then(() => { + languageClient.onNotification(StatusNotification.type, (report) => { + switch (report.type) { + case 'Started': + item.text = '$(thumbsup)'; + p.report({ message: 'Finished' }); + lastStatus = item.text; + resolve(); + break; + case 'Error': + item.text = '$(thumbsdown)'; + lastStatus = item.text; + p.report({ message: 'Finished with Error' }); + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); + resolve(); + break; + case 'Starting': + p.report({ message: report.message }); + item.tooltip = report.message; + break; + case 'Message': + item.text = report.message; + setTimeout(() => { item.text = lastStatus; }, 3000); + break; } - } + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); + }); + languageClient.onNotification(ActionableNotification.type, (notification) => { + let show = null; + switch (notification.severity) { + case MessageType.Log: + show = logNotification; + break; + case MessageType.Info: + show = window.showInformationMessage; + break; + case MessageType.Warning: + show = window.showWarningMessage; + break; + case MessageType.Error: + show = window.showErrorMessage; + break; + } + if (!show) { + return; + } + const titles = notification.commands.map(a => a.title); + show(notification.message, ...titles).then((selection) => { + for (let action of notification.commands) { + if (action.title === selection) { + let args: any[] = (action.arguments) ? action.arguments : []; + commands.executeCommand(action.command, ...args); + break; + } + } + }); + }); }); - }); - }); - commands.registerCommand(Commands.OPEN_OUTPUT, ()=>{ - languageClient.outputChannel.show(ViewColumn.Three); - }); - commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri:string, position: LSPosition, locations:LSLocation[])=>{ - commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); - }); + commands.registerCommand(Commands.OPEN_OUTPUT, () => { + languageClient.outputChannel.show(ViewColumn.Three); + }); + commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { + commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); + }); - commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); + commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?:any) => setIncompleteClasspathSeverity('ignore')); + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore')); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?:any) => { - commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) - }); + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) + }); - commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); - commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT,(obj)=>{ - let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); - if(edit){ - workspace.applyEdit(edit); - } - }); - - commands.registerCommand(Commands.OPEN_SERVER_LOG,()=> openServerLogFile()); + commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { + let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); + if (edit) { + workspace.applyEdit(edit); + } + }); - window.onDidChangeActiveTextEditor((editor) =>{ - toggleItem(editor, item); - }); + commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); - let provider: TextDocumentContentProvider= { - onDidChange: null, - provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { - return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string):string => { - return v || ''; + window.onDidChangeActiveTextEditor((editor) => { + toggleItem(editor, item); }); - } - }; - workspace.registerTextDocumentContentProvider('jdt', provider); - - item.text = 'Starting Java Language Server...'; - toggleItem(window.activeTextEditor, item); - let disposable = languageClient.start(); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); - context.subscriptions.push(onConfigurationChange()); + let provider: TextDocumentContentProvider = { + onDidChange: null, + provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { + return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string): string => { + return v || ''; + }); + } + }; + workspace.registerTextDocumentContentProvider('jdt', provider); + let disposable = languageClient.start(); + + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation + context.subscriptions.push(disposable); + context.subscriptions.push(onConfigurationChange()); + toggleItem(window.activeTextEditor, item); + }); + }); } -function logNotification(message:string, ...items: string[]) { +function logNotification(message: string, ...items: string[]) { return new Promise((resolve, reject) => { - console.log(message); + console.log(message); }); } -function setIncompleteClasspathSeverity(severity:string) { +function setIncompleteClasspathSeverity(severity: string) { const config = getJavaConfiguration(); const section = 'errors.incompleteClasspath.severity'; config.update(section, severity, true).then( - () => console.log(section + ' globally set to '+severity), + () => console.log(section + ' globally set to ' + severity), (error) => console.log(error) ); } -function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { +function projectConfigurationUpdate(languageClient: LanguageClient, uri?: Uri) { let resource = uri; if (!(resource instanceof Uri)) { if (window.activeTextEditor) { @@ -289,20 +221,20 @@ function projectConfigurationUpdate(languageClient:LanguageClient, uri?: Uri) { if (!resource) { return window.showWarningMessage('No Java project to update!').then(() => false); } - if (isJavaConfigFile(resource.path)){ + if (isJavaConfigFile(resource.path)) { languageClient.sendNotification(ProjectConfigurationUpdateRequest.type, { uri: resource.toString() }); } } -function setProjectConfigurationUpdate(languageClient:LanguageClient, uri: Uri, status:FeatureStatus) { +function setProjectConfigurationUpdate(languageClient: LanguageClient, uri: Uri, status: FeatureStatus) { const config = getJavaConfiguration(); const section = 'configuration.updateBuildConfiguration'; const st = FeatureStatus[status]; config.update(section, st).then( - () => console.log(section + ' set to '+st), + () => console.log(section + ' set to ' + st), (error) => console.log(error) ); if (status !== FeatureStatus.disabled) { @@ -310,15 +242,15 @@ function setProjectConfigurationUpdate(languageClient:LanguageClient, uri: Uri, } } function toggleItem(editor: TextEditor, item) { - if(editor && editor.document && - (editor.document.languageId === 'java' || isJavaConfigFile(editor.document.uri.path))){ + if (editor && editor.document && + (editor.document.languageId === 'java' || isJavaConfigFile(editor.document.uri.path))) { item.show(); - } else{ + } else { item.hide(); } } -function isJavaConfigFile(path:String) { +function isJavaConfigFile(path: String) { return path.endsWith('pom.xml') || path.endsWith('.gradle'); } @@ -326,15 +258,15 @@ function onConfigurationChange() { return workspace.onDidChangeConfiguration(params => { let newConfig = getJavaConfiguration(); if (hasJavaConfigChanged(oldConfig, newConfig)) { - let msg = 'Java Language Server configuration changed, please restart VS Code.'; - let action = 'Restart Now'; - let restartId = Commands.RELOAD_WINDOW; - oldConfig = newConfig; - window.showWarningMessage(msg,action).then((selection )=>{ - if(action === selection) { - commands.executeCommand(restartId); - } - }); + let msg = 'Java Language Server configuration changed, please restart VS Code.'; + let action = 'Restart Now'; + let restartId = Commands.RELOAD_WINDOW; + oldConfig = newConfig; + window.showWarningMessage(msg, action).then((selection) => { + if (action === selection) { + commands.executeCommand(restartId); + } + }); } }); } @@ -348,52 +280,27 @@ function hasConfigKeyChanged(key, oldConfig, newConfig) { return oldConfig.get(key) !== newConfig.get(key); } -export function parseVMargs(params:any[], vmargsLine:string) { - if (!vmargsLine) { - return; - } - let vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); - if (vmargs === null) { - return; - } - vmargs.forEach (arg => { - //remove all standalone double quotes - arg = arg.replace( /(\\)?"/g, function ($0, $1) { return ($1 ? $0 : ''); }); - //unescape all escaped double quotes - arg = arg.replace( /(\\)"/g, '"'); - if (params.indexOf(arg) < 0) { - params.push(arg); - } - }); -} function getTempWorkspace() { - return path.resolve(os.tmpdir(),'vscodesws_'+makeRandomHexString(5)); + return path.resolve(os.tmpdir(), 'vscodesws_' + makeRandomHexString(5)); } function makeRandomHexString(length) { - var chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; - var result = ''; - for (var i = 0; i < length; i++) { - var idx = Math.floor(chars.length * Math.random()); - result += chars[idx]; - } - return result; -} - -function startedInDebugMode(): boolean { - let args = (process as any).execArgv; - if (args) { - return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg)); - }; - return false; + var chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; + var result = ''; + for (var i = 0; i < length; i++) { + var idx = Math.floor(chars.length * Math.random()); + result += chars[idx]; + } + return result; } -function getJavaConfiguration():WorkspaceConfiguration { +function getJavaConfiguration(): WorkspaceConfiguration { return workspace.getConfiguration('java'); } -function openServerLogFile(): Thenable { +function openServerLogFile(workspacePath): Thenable { + let serverLogFile = path.join(workspacePath, '.metadata', '.log'); if (!serverLogFile) { return window.showWarningMessage('Java Language Server has not started logging.').then(() => false); } @@ -404,7 +311,7 @@ function openServerLogFile(): Thenable { return false; } return window.showTextDocument(doc, window.activeTextEditor ? - window.activeTextEditor.viewColumn : undefined) + window.activeTextEditor.viewColumn : undefined) .then(editor => !!editor); }, () => false) .then(didOpen => { @@ -413,4 +320,4 @@ function openServerLogFile(): Thenable { } return didOpen; }); -} \ No newline at end of file +} diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts new file mode 100644 index 000000000..de6eeba3c --- /dev/null +++ b/src/javaServerStarter.ts @@ -0,0 +1,111 @@ + +import { window, commands, WorkspaceConfiguration, workspace } from 'vscode' +import { StreamInfo } from 'vscode-languageclient'; +import * as requirements from './requirements'; +import * as path from 'path'; +import { Commands } from './commands'; +const glob = require('glob'); +declare var v8debug; +const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); +let electron = require('./electron_j'); + +export function runServer(workspacePath, javaConfig): Thenable < StreamInfo > { + return requirements.resolveRequirements().catch(error => { + //show error + window.showErrorMessage(error.message, error.label).then((selection) => { + if (error.label && error.label === selection && error.openUrl) { + commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); + } + }); + // rethrow to disrupt the chain. + throw error; + }).then(requirements => { + return new Promise(function (resolve, reject) { + + let child = path.resolve(requirements.java_home + '/bin/java'); + let params = prepareParams(requirements,javaConfig, workspacePath); + if (!params) { + return reject('Can not determine Java launch parameters for server'); + } + console.log('Executing ' + child + ' ' + params.join(' ')); + + electron.fork(child, params, {}, function (err, result) { + if (err) { return reject(err); } + if (result) { return resolve(result); } + }); + }); + }); +} + +function prepareParams(requirements, javaConfiguration, workspacePath) { + let params = []; + if (DEBUG) { + params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044'); + // suspend=y is the default. Use this form if you need to debug the server startup code: + // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); + } + if (requirements.java_version > 8) { + params.push('--add-modules=ALL-SYSTEM'); + params.push('--add-opens'); + params.push('java.base/java.util=ALL-UNNAMED'); + params.push('--add-opens'); + params.push('java.base/java.lang=ALL-UNNAMED'); + } + params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); + params.push('-Dosgi.bundles.defaultStartLevel=4'); + params.push('-Declipse.product=org.eclipse.jdt.ls.core.product'); + if (DEBUG) { + params.push('-Dlog.protocol=true'); + params.push('-Dlog.level=ALL'); + } + + let vmargs = javaConfiguration.get('jdt.ls.vmargs', ''); + parseVMargs(params, vmargs); + let server_home: string = path.resolve(__dirname, '../../server'); + let launchersFound: Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', { cwd: server_home }); + if (launchersFound.length) { + params.push('-jar'); params.push(path.resolve(server_home, launchersFound[0])); + } else { + return null; + } + + //select configuration directory according to OS + let configDir = 'config_win'; + if (process.platform === 'darwin') { + configDir = 'config_mac'; + } else if (process.platform === 'linux') { + configDir = 'config_linux'; + } + params.push('-configuration'); params.push(path.resolve(__dirname, '../../server', configDir)); + params.push('-data'); params.push(workspacePath); + return params; +} + + +function startedInDebugMode(): boolean { + let args = (process as any).execArgv; + if (args) { + return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg)); + }; + return false; +} + +//exported for tests +export function parseVMargs(params: any[], vmargsLine: string) { + if (!vmargsLine) { + return; + } + let vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); + if (vmargs === null) { + return; + } + vmargs.forEach(arg => { + //remove all standalone double quotes + arg = arg.replace(/(\\)?"/g, function ($0, $1) { return ($1 ? $0 : ''); }); + //unescape all escaped double quotes + arg = arg.replace(/(\\)"/g, '"'); + if (params.indexOf(arg) < 0) { + params.push(arg); + } + }); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 1260c1627..2a1a9a5e4 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -1,6 +1,6 @@ import * as assert from 'assert'; import * as vscode from 'vscode'; -import * as java from '../src/extension'; +import * as java from '../src/javaServerStarter'; import {Commands} from '../src/commands'; suite('Java Language Extension', () => { @@ -60,4 +60,4 @@ suite('Java Language Extension', () => { assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); }); -}); \ No newline at end of file +}); From b76bd617a0b31e4cbf7533f7f6a34eca50a57bb3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 30 May 2017 13:39:15 -0400 Subject: [PATCH 0162/1435] List `Type search` as a feature --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1973db1f9..9e838ffae 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Features * As you type reporting of parsing and compilation errors * Code completion * Javadoc hovers +* Type search * Code outline * Code navigation * Code lens (references) From e8f081ed23adcfc1f632dc2301fd0d9089f1c45f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 31 May 2017 01:52:49 -0400 Subject: [PATCH 0163/1435] Fix build on Windows --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 1f135db99..62c7baf8d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -63,5 +63,5 @@ function isLinux() { } function mvnw() { - return "./mvnw"+(isWin()?".cmd":""); + return isWin()?"mvnw.cmd":"./mvnw"; } From 916195da40a3edb90311ab335e014dad9d69a7f2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 31 May 2017 10:18:29 -0400 Subject: [PATCH 0164/1435] Fix broken standalone file support Signed-off-by: Fred Bricon --- src/extension.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index cfa6604ee..3aa9ce2bf 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,6 +8,7 @@ import { runServer } from './javaServerStarter'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; +var os = require('os'); let oldConfig; let lastStatus; @@ -60,7 +61,7 @@ export function activate(context: ExtensionContext) { storagePath = getTempWorkspace(); } let workspacePath = path.resolve(storagePath + '/jdt_ws'); - let serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration() ); + let serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration()); // Options to control the language client let clientOptions: LanguageClientOptions = { @@ -78,7 +79,7 @@ export function activate(context: ExtensionContext) { }; let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - item.text='$(rocket)'; + item.text = '$(rocket)'; item.command = Commands.OPEN_OUTPUT; oldConfig = getJavaConfiguration(); From a1d18a9d8bd37d31f16cd5a93df20bd9e6b48707 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 31 May 2017 14:39:50 -0400 Subject: [PATCH 0165/1435] Update CHANGELOG.md for 0.5.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ca3a9b86..54cf37292 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log +## 0.5.0 (May 31st, 2017) +* enhancement - Enable support for CamelCase type search. See [JLS#219](https://github.com/eclipse/eclipse.jdt.ls/issues/219). +* enhancement - Server startup now uses progress UI. See [#225](https://github.com/redhat-developer/vscode-java/pull/225). +* bug - fixed autocomplete inserting classname+package text instead of classname. See [#175](https://github.com/redhat-developer/vscode-java/issues/175). +* bug - fixed `Timed out while retrieving the attached javadoc.` error. See [#176](https://github.com/redhat-developer/vscode-java/issues/176). +* bug - fixed autocompletion not cancelled on space. See [#187](https://github.com/redhat-developer/vscode-java/issues/187). +* bug - fixed Gradle import failing behind corporate proxy with authentication. See [#211](https://github.com/redhat-developer/vscode-java/issues/211). +* bug - fixed `Unable to locate secure storage module` error. See [#212](https://github.com/redhat-developer/vscode-java/issues/212). +* bug - fixed CancellationException in output log. See [#213](https://github.com/redhat-developer/vscode-java/issues/213). +* bug - fixed `Illegal argument, contents must be defined` error on hover. See [#214](https://github.com/redhat-developer/vscode-java/issues/214). +* bug - fixed code snippet appearing before completion results. See [#216](https://github.com/redhat-developer/vscode-java/issues/216). +* bug - fixed code snippet using deprecated syntax. See [#217](https://github.com/redhat-developer/vscode-java/issues/217). +* bug - fixed navigation from disassembled source code. See [#222](https://github.com/redhat-developer/vscode-java/issues/222). +* bug - fixed Javadoc missing from inherited methods. See [#226](https://github.com/redhat-developer/vscode-java/issues/226). +* bug - fixed `Problems encountered while copying resources. Resource '/jdt.ls-java-project/src/pom.xml' does not exist` error. See [#244](https://github.com/eclipse/eclipse.jdt.ls/issues/244). + ## 0.4.0 (May 15th, 2017) * enhancement - New `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). * enhancement - Expand workspace symbol search to all classes from classpath. See [#204](https://github.com/redhat-developer/vscode-java/issues/204). From e9155f266411adf0754617aabb3b57f6ccd2ce8c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 1 Jun 2017 12:29:52 -0400 Subject: [PATCH 0166/1435] Bump version to 0.6.0 --- package.json | 234 +++++++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 108 deletions(-) diff --git a/package.json b/package.json index c6556010e..42879065a 100644 --- a/package.json +++ b/package.json @@ -1,61 +1,75 @@ { - "name": "java", - "displayName": "Language Support for Java(TM) by Red Hat", - "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", - "author": "Red Hat", - "icon": "icons/icon128.png", - "license": "SEE LICENSE IN LICENSE", - "version": "0.5.0", - "publisher": "redhat", - "bugs" : "https://github.com/redhat-developer/vscode-java/issues", - "preview": true, - "engines": { - "vscode": "^1.12.0" - }, - "repository": { - "type": "git", - "url": "https://github.com/redhat-developer/vscode-java" - }, - "categories": [ - "Languages", - "Linters" - ], - "activationEvents": [ - "onLanguage:java", - "onCommand:java.show.references", - "onCommand:java.open.output", - "onCommand:java.open.serverLog", - "onCommand:java.projectConfiguration.update", - "workspaceContains:pom.xml", - "workspaceContains:build.gradle" - ], - "main": "./out/src/extension", - "contributes": { - "languages": [{ - "id": "java", - "extensions": [ ".class" ], - "configuration": "./language-configuration.json" - }], - "snippets": [{ - "language": "java", - "path": "./snippets/java.json" - }], - "configuration": { - "type": "object", - "title": "Java configuration", - "properties": { - "java.home": { - "type": ["string", "null"], - "default": null, - "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." - }, - "java.jdt.ls.vmargs": { - "type": ["string", "null"], - "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", - "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" - }, + "name": "java", + "displayName": "Language Support for Java(TM) by Red Hat", + "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", + "author": "Red Hat", + "icon": "icons/icon128.png", + "license": "See license in LICENSE file", + "version": "0.6.0", + "publisher": "redhat", + "bugs": "https://github.com/redhat-developer/vscode-java/issues", + "preview": true, + "engines": { + "vscode": "^1.12.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/vscode-java" + }, + "categories": [ + "Languages", + "Linters" + ], + "activationEvents": [ + "onLanguage:java", + "onCommand:java.show.references", + "onCommand:java.open.output", + "onCommand:java.open.serverLog", + "onCommand:java.projectConfiguration.update", + "workspaceContains:pom.xml", + "workspaceContains:build.gradle" + ], + "main": "./out/src/extension", + "contributes": { + "languages": [ + { + "id": "java", + "extensions": [ + ".class" + ], + "configuration": "./language-configuration.json" + } + ], + "snippets": [ + { + "language": "java", + "path": "./snippets/java.json" + } + ], + "configuration": { + "type": "object", + "title": "Java configuration", + "properties": { + "java.home": { + "type": [ + "string", + "null" + ], + "default": null, + "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." + }, + "java.jdt.ls.vmargs": { + "type": [ + "string", + "null" + ], + "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", + "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" + }, "java.errors.incompleteClasspath.severity": { - "type": ["string"], + "type": [ + "string" + ], "enum": [ "ignore", "info", @@ -66,7 +80,9 @@ "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" }, "java.configuration.updateBuildConfiguration": { - "type": ["string"], + "type": [ + "string" + ], "enum": [ "disabled", "interactive", @@ -95,55 +111,57 @@ "default": null, "description": "Absolute path to Maven's settings.xml" } - } - }, - "commands": [{ - "command": "java.projectConfiguration.update", - "title": "Update project configuration", - "category": "Java" - }, - { - "command": "java.open.serverLog", - "title": "Open Java Language Server log file", - "category": "Java" - } - ], - "keybindings": [{ - "command": "java.projectConfiguration.update", - "key": "ctrl+alt+u", - "mac": "cmd+alt+u", - "when": "editorFocus" - } - ] - }, - "scripts": { - "vscode:prepublish": "tsc -p ./", - "compile": "tsc -watch -p ./", - "postinstall": "node ./node_modules/vscode/bin/install", - "test": "node ./node_modules/vscode/bin/test", - "build-server": "./node_modules/.bin/gulp build_server", - "watch-server": "./node_modules/.bin/gulp watch_server", + } + }, + "commands": [ + { + "command": "java.projectConfiguration.update", + "title": "Update project configuration", + "category": "Java" + }, + { + "command": "java.open.serverLog", + "title": "Open Java Language Server log file", + "category": "Java" + } + ], + "keybindings": [ + { + "command": "java.projectConfiguration.update", + "key": "ctrl+alt+u", + "mac": "cmd+alt+u", + "when": "editorFocus" + } + ] + }, + "scripts": { + "vscode:prepublish": "tsc -p ./", + "compile": "tsc -watch -p ./", + "postinstall": "node ./node_modules/vscode/bin/install", + "test": "node ./node_modules/vscode/bin/test", + "build-server": "./node_modules/.bin/gulp build_server", + "watch-server": "./node_modules/.bin/gulp watch_server", "tslint": "./node_modules/.bin/gulp tslint" - }, - "devDependencies": { - "typescript": "^2.2.2", - "vscode": "^1.1.0", - "mocha": "^3.2.0", - "@types/node": "^6.0.40", - "@types/mocha": "^2.2.39", - "@types/glob":"5.0.30", - "gulp" :"^3.9.1", - "gulp-tslint": "^7.1.0", - "tslint" : "^5.2.0", - "gulp-decompress":"2.0.1", - "gulp-download":"0.0.1" - }, - "dependencies": { - "vscode-languageclient": "^3.2.0", - "find-java-home": "0.1.4", - "tmp" : "^0.0.31", - "path-exists":"^3.0.0", - "expand-home-dir":"^0.0.3", - "glob":"^7.1.1" - } -} + }, + "devDependencies": { + "typescript": "^2.2.2", + "vscode": "^1.1.0", + "mocha": "^3.2.0", + "@types/node": "^6.0.40", + "@types/mocha": "^2.2.39", + "@types/glob": "5.0.30", + "gulp": "^3.9.1", + "gulp-tslint": "^7.1.0", + "tslint": "^5.2.0", + "gulp-decompress": "2.0.1", + "gulp-download": "0.0.1" + }, + "dependencies": { + "vscode-languageclient": "^3.2.0", + "find-java-home": "0.1.4", + "tmp": "^0.0.31", + "path-exists": "^3.0.0", + "expand-home-dir": "^0.0.3", + "glob": "^7.1.1" + } +} \ No newline at end of file From 0384f7f03bd0b7f3880352c2a74d5ced08643554 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Jun 2017 11:48:14 -0400 Subject: [PATCH 0167/1435] Update typescript version, and license to SPDX value Signed-off-by: Fred Bricon --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 42879065a..2842c401d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", "author": "Red Hat", "icon": "icons/icon128.png", - "license": "See license in LICENSE file", + "license": "EPL-1.0", "version": "0.6.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", @@ -144,7 +144,7 @@ "tslint": "./node_modules/.bin/gulp tslint" }, "devDependencies": { - "typescript": "^2.2.2", + "typescript": "^2.3.4", "vscode": "^1.1.0", "mocha": "^3.2.0", "@types/node": "^6.0.40", From 837bafa7f27021d6b2b8e1f5578eb8fdbe4af838 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Jun 2017 11:54:30 -0400 Subject: [PATCH 0168/1435] Watch eclipse project files. Fixes #239 Signed-off-by: Fred Bricon --- src/extension.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 3aa9ce2bf..dc7f6772f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -69,11 +69,14 @@ export function activate(context: ExtensionContext) { documentSelector: ['java'], synchronize: { configurationSection: 'java', - // Notify the server about file changes to .java files contain in the workspace + // Notify the server about file changes to .java and project/build files contained in the workspace fileEvents: [ workspace.createFileSystemWatcher('**/*.java'), workspace.createFileSystemWatcher('**/pom.xml'), - workspace.createFileSystemWatcher('**/*.gradle') + workspace.createFileSystemWatcher('**/*.gradle'), + workspace.createFileSystemWatcher('**/.project'), + workspace.createFileSystemWatcher('**/.classpath'), + workspace.createFileSystemWatcher('**/settings/*.prefs') ], } }; From dee12283d8047e9739f49aefddea26d2c5ccc696 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Jun 2017 15:42:58 -0400 Subject: [PATCH 0169/1435] Update CHANGELOG.md for 0.6.0 release --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54cf37292..03676a814 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.6.0 (June 15th, 2017) +* enhancement - reduced extension size by ~25%. See [JLS#252](https://github.com/eclipse/eclipse.jdt.ls/issues/252). +* bug - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). +* bug - fixed changes in Eclipse settings file are ignored. See [#239](https://github.com/redhat-developer/vscode-java/pull/239). +* bug - `package` autocompletion should return only 1 package. See [#234](https://github.com/redhat-developer/vscode-java/pull/234). +* bug - Autocompletion on overridden methods should create the method body. See [#85](https://github.com/redhat-developer/vscode-java/pull/85). + ## 0.5.0 (May 31st, 2017) * enhancement - Enable support for CamelCase type search. See [JLS#219](https://github.com/eclipse/eclipse.jdt.ls/issues/219). * enhancement - Server startup now uses progress UI. See [#225](https://github.com/redhat-developer/vscode-java/pull/225). From ba1c3dfe912adc638cf706ee0434a6c4840a65f6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 16 Jun 2017 09:22:02 -0400 Subject: [PATCH 0170/1435] Bump version to 0.7.0 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03676a814..c3453dcbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.7.0 (TBD) + ## 0.6.0 (June 15th, 2017) * enhancement - reduced extension size by ~25%. See [JLS#252](https://github.com/eclipse/eclipse.jdt.ls/issues/252). * bug - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). diff --git a/package.json b/package.json index 2842c401d..a1fc457c9 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.6.0", + "version": "0.7.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 684e3e92f695a0d21ca6b18842f9330df9f8edb5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 27 Jun 2017 12:38:03 -0400 Subject: [PATCH 0171/1435] link to https'ed marketplace badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e838ffae..b36601b14 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](http://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) +[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Language support for Java ™ for Visual Studio Code ===================== From 349994e088b8c58c40575e234c617c9aad3b37ae Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 29 Jun 2017 16:14:55 -0400 Subject: [PATCH 0172/1435] Fix foreach template --- snippets/java.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index 800f4a0e4..3313a69bc 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -25,8 +25,8 @@ "foreach": { "prefix": "foreach", "body": [ - "for (${0:type} ${1:var} : ${2:iterable}) {", - "\t$3", + "for (${1:type} ${2:var} : ${3:iterable}) {", + "\t$4", "}" ], "description": "Enhanced for loop" From e9ef5b0fdc2a95c8bba42cba209408600b35a9f3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Jun 2017 17:21:22 -0400 Subject: [PATCH 0173/1435] Add changelog for 0.7.0 --- CHANGELOG.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3453dcbe..fee636058 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,23 @@ # Change Log -## 0.7.0 (TBD) +## 0.7.0 (June 30th, 2017) +* enhancement - enabled @formatter:on/off tags in source. See [#236](https://github.com/redhat-developer/vscode-java/issues/236). +* enhancement - improved error reporting in standalone java files. See [#242](https://github.com/redhat-developer/vscode-java/issues/242). +* enhancement - hover should show element signature. See [JLS#259](https://github.com/eclipse/eclipse.jdt.ls/issues/259). +* enhancement - code-action: add missing methods. See [JLS#177](https://github.com/eclipse/eclipse.jdt.ls/issues/177). +* enhancement - code-action: missing variables, fields, params. See [JLS#178](https://github.com/eclipse/eclipse.jdt.ls/issues/178). +* enhancement - code-action: organize imports. See [JLS#164](https://github.com/eclipse/eclipse.jdt.ls/issues/164). +* enhancement - code-action: rename type. See [JLS#264](https://github.com/eclipse/eclipse.jdt.ls/issues/264). +* enhancement - code-action: fix package declaration. See [JLS#265](https://github.com/eclipse/eclipse.jdt.ls/issues/265). +* enhancement - code-action: remove unnecessary Javadoc param. See [JLS#274](https://github.com/eclipse/eclipse.jdt.ls/issues/274). +* enhancement - code-action: add missing Javadoc params. See [JLS#275](https://github.com/eclipse/eclipse.jdt.ls/issues/275). +* enhancement - code-action: add missing Javadoc params. See [JLS#275](https://github.com/eclipse/eclipse.jdt.ls/issues/275). +* enhancement - code-action: fix type mismatch. See [JLS#276](https://github.com/eclipse/eclipse.jdt.ls/issues/276). +* enhancement - code-action: fix missing attribute in annotation. See [JLS#277](https://github.com/eclipse/eclipse.jdt.ls/issues/277). +* bug - fixed wrong URI set for diagnostics of standalone java files. See [JLS#268](https://github.com/eclipse/eclipse.jdt.ls/issues/268). +* bug - fixed `Error computing hover: **/package-summary.html not found in JavaDoc jar`. See [#248](https://github.com/redhat-developer/vscode-java/issues/248). +* bug - fixed `Invalid project description` thrown when reopening Eclipse projects. See [#244](https://github.com/redhat-developer/vscode-java/issues/244). + ## 0.6.0 (June 15th, 2017) * enhancement - reduced extension size by ~25%. See [JLS#252](https://github.com/eclipse/eclipse.jdt.ls/issues/252). From 141023665206aa4fba6be79f1a329663d00cdea2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 4 Jul 2017 10:28:27 -0400 Subject: [PATCH 0174/1435] Change 0.7.0 release date to 4th of July --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fee636058..98ad20ab4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.7.0 (June 30th, 2017) +## 0.7.0 (July 4th, 2017) * enhancement - enabled @formatter:on/off tags in source. See [#236](https://github.com/redhat-developer/vscode-java/issues/236). * enhancement - improved error reporting in standalone java files. See [#242](https://github.com/redhat-developer/vscode-java/issues/242). * enhancement - hover should show element signature. See [JLS#259](https://github.com/eclipse/eclipse.jdt.ls/issues/259). From 3ae0832aceb702a54cea1f7622692f5568cf177a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 4 Jul 2017 11:37:20 -0400 Subject: [PATCH 0175/1435] Bump version to 0.8.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ad20ab4..28bfbe681 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.8.0 (TBD) + ## 0.7.0 (July 4th, 2017) * enhancement - enabled @formatter:on/off tags in source. See [#236](https://github.com/redhat-developer/vscode-java/issues/236). * enhancement - improved error reporting in standalone java files. See [#242](https://github.com/redhat-developer/vscode-java/issues/242). diff --git a/package.json b/package.json index a1fc457c9..ea17ec2fc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.7.0", + "version": "0.8.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 694a29b926d034324684b0e226f757ad94d5e514 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 4 Jul 2017 23:45:26 +0800 Subject: [PATCH 0176/1435] Run with remote Java LS (#250) --- .vscode/launch.json | 18 ++++++++++++++++-- CONTRIBUTING.md | 17 +++++++++++++++++ src/extension.ts | 10 ++++++++-- src/javaServerStarter.ts | 26 ++++++++++++++++++++++++-- 4 files changed, 65 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 789a223a7..d2f1112f9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,21 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], "stopOnEntry": false, "sourceMaps": true, - "outDir": "${workspaceRoot}/out/src", + "outFiles": [ "${workspaceRoot}/out/src/**" ], + "preLaunchTask": "compile" + }, + { + "name": "Launch Extension - Remote Server", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": [ "${workspaceRoot}/out/src/**" ], + "env": { + "SERVER_PORT": "3333" + }, "preLaunchTask": "compile" }, { @@ -21,7 +35,7 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ], "stopOnEntry": false, "sourceMaps": true, - "outDir": "${workspaceRoot}/out/test", + "outFiles": ["${workspaceRoot}/out/test/**"], "preLaunchTask": "compile" } ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 39f1e6286..edd1c7168 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,6 +44,23 @@ This will build and place the binaries under the `server` folder. Alternately yo $ ./node_modules/.bin/gulp download_server ``` +## Run with a remote JDT language server + +While developping the language server and the extension, you don't need to deploy the server every time to try out changes. Instead you can run the language server out of its Eclipse workspace: + +- Open VSCode on the `vscode-java` folder +- In the debug viewlet, run the launch _Launch Extension - Remote Server_ +- The extension will open a socket on port 3333 and will wait for the JDT language server to connect +- In Eclipse, run the JDT language server as an Eclipse application. + - Create a debug configuration of type _Eclipse Application_. + - in the main tab of the debug configuration set the product to `org.eclipse.jdt.ls.core.product`. + - in the Environment tab, define a variable `CLIENT_PORT` with value `3333`. + - if your workspace contains 'org.eclipse.jdt.ui', use the Plug-Ins tab in the debug configuration to exclude the plug-in. The presence of 'org.eclipse.jdt.ui' will cause the language server to hang. +- In the debug console of VSCode you can see if the connection was sucessful. +- When the server is running breakpoints can be reached and hot code replace can be used to make fixes without restarting the server. +- You can modify `launch.json` to use a different port: + - Modify `SERVER_PORT` to specify the port the JST LS server should connect to. + ## Sideloading You can create a binary that you can sideload to your VS Code installation. diff --git a/src/extension.ts b/src/extension.ts index dc7f6772f..8953f2790 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,7 +4,7 @@ import * as path from 'path'; import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; -import { runServer } from './javaServerStarter'; +import { runServer, awaitServerConnection } from './javaServerStarter'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; @@ -61,7 +61,13 @@ export function activate(context: ExtensionContext) { storagePath = getTempWorkspace(); } let workspacePath = path.resolve(storagePath + '/jdt_ws'); - let serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration()); + let serverOptions; + let port = process.env['SERVER_PORT']; + if (!port) { + serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration()); + } else { + serverOptions = awaitServerConnection.bind(null, port); + } // Options to control the language client let clientOptions: LanguageClientOptions = { diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index de6eeba3c..0e2baffa8 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -1,15 +1,37 @@ import { window, commands, WorkspaceConfiguration, workspace } from 'vscode' import { StreamInfo } from 'vscode-languageclient'; +import { createClientPipeTransport } from 'vscode-jsonrpc'; import * as requirements from './requirements'; import * as path from 'path'; +import * as fs from 'fs'; +import * as net from 'net'; import { Commands } from './commands'; const glob = require('glob'); + declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); let electron = require('./electron_j'); -export function runServer(workspacePath, javaConfig): Thenable < StreamInfo > { +export function awaitServerConnection(port): Thenable { + let addr = parseInt(port); + return new Promise((res, rej) => { + let server = net.createServer(stream => { + server.close(); + console.log('JDT LS connection established on port ' + addr); + res({ reader: stream, writer: stream }); + }); + server.on('error', rej); + server.listen(addr, () => { + server.removeListener('error', rej); + console.log('Awaiting JDT LS connection on port ' + addr); + }); + return server; + }); +} + + +export function runServer(workspacePath, javaConfig): Thenable { return requirements.resolveRequirements().catch(error => { //show error window.showErrorMessage(error.message, error.label).then((selection) => { @@ -23,7 +45,7 @@ export function runServer(workspacePath, javaConfig): Thenable < StreamInfo > { return new Promise(function (resolve, reject) { let child = path.resolve(requirements.java_home + '/bin/java'); - let params = prepareParams(requirements,javaConfig, workspacePath); + let params = prepareParams(requirements, javaConfig, workspacePath); if (!params) { return reject('Can not determine Java launch parameters for server'); } From 532e488a460b2979f587bb744bba1b30fcc253f9 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Sat, 24 Jun 2017 21:48:53 +0200 Subject: [PATCH 0177/1435] Disable the keybinding of formatting document Signed-off-by: Snjezana Peco --- package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ea17ec2fc..3d4b23609 100644 --- a/package.json +++ b/package.json @@ -110,6 +110,11 @@ "type": "string", "default": null, "description": "Absolute path to Maven's settings.xml" + }, + "java.format.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable default Java formatter" } } }, @@ -164,4 +169,4 @@ "expand-home-dir": "^0.0.3", "glob": "^7.1.1" } -} \ No newline at end of file +} From fcdbb13d82cf929396325314b2b468bc6d8a834b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 6 Jul 2017 10:54:22 -0400 Subject: [PATCH 0178/1435] Fix vsix name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b36601b14..194619e25 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ This is an open source project open to anyone. Contributions are extremely welco For information on getting started, refer to the [CONTRIBUTING.md instructions](CONTRIBUTING.md). -Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `vscode-java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). Feedback =============== From 4d38fb94889bd335863be638999ecfd2427883b2 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Sat, 8 Jul 2017 21:43:34 +0200 Subject: [PATCH 0179/1435] Exclude folders from import via glob patterns Signed-off-by: Snjezana Peco --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 3d4b23609..475c52531 100644 --- a/package.json +++ b/package.json @@ -115,6 +115,11 @@ "type": "boolean", "default": true, "description": "Enable/disable default Java formatter" + }, + "java.import.exclusions": { + "type": "array", + "description": "Configure glob patterns for excluding folders", + "default": "['**/node_modules', '**/.metadata']" } } }, From 677a85fa899a2789740d5e4c78e0a3e7a36960b4 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Tue, 4 Jul 2017 20:42:02 +0800 Subject: [PATCH 0180/1435] Add signature help setting. Signed-off-by: Yaohai Zheng --- README.md | 1 + package.json | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 194619e25..e96b6d768 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ The following settings are supported: * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. * `java.trace.server` : Traces the communication between VS Code and the Java language server. * `java.referencesCodeLens.enabled` : Enable/disable the references code lens. +* `java.signatureHelp.enabled` : Enable/disable the signature help. * `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. diff --git a/package.json b/package.json index 475c52531..55d4e5217 100644 --- a/package.json +++ b/package.json @@ -106,6 +106,11 @@ "default": true, "description": "Enable/disable the references code lens." }, + "java.signatureHelp.enabled": { + "type": "boolean", + "default": false, + "description": "Enable/disable the signature help." + }, "java.configuration.maven.userSettings": { "type": "string", "default": null, From 118bf575697ed70d90ce91cd93722a5c48a40c61 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 14 Jul 2017 15:12:09 +0800 Subject: [PATCH 0181/1435] Test --- .vscode/tasks.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a5cbf8471..687036b0b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,5 +1,5 @@ // Available variables which can be used inside of strings. -// ${workspaceRoot}: the root folder of the team +// ${workspaceRoot}: the root folder of the team // ${file}: the current opened file // ${fileBasename}: the current opened file's basename // ${fileDirname}: the current opened file's dirname @@ -74,4 +74,4 @@ } } ] -} \ No newline at end of file +} From b48238597f82e1f75b8f217e1461424b0caae942 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 11 Jul 2017 14:07:29 +0200 Subject: [PATCH 0182/1435] CodeLens for Interfaces Signed-off-by: Snjezana Peco --- README.md | 3 +++ package.json | 6 ++++++ src/commands.ts | 5 +++++ src/extension.ts | 3 +++ test/extension.test.ts | 1 + 5 files changed, 18 insertions(+) diff --git a/README.md b/README.md index e96b6d768..8f5c843ac 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,10 @@ The following settings are supported: * `java.trace.server` : Traces the communication between VS Code and the Java language server. * `java.referencesCodeLens.enabled` : Enable/disable the references code lens. * `java.signatureHelp.enabled` : Enable/disable the signature help. +* `java.implementationsCodeLens.enabled` : Enable/disable the implementations code lens. * `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. +* `java.format.enabled` : Enable/disable default Java formatter. +* `java.import.exclusions` : Exclude folders from import via glob patterns. Troubleshooting diff --git a/package.json b/package.json index 55d4e5217..cd7efe1ae 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "activationEvents": [ "onLanguage:java", "onCommand:java.show.references", + "onCommand:java.show.implementations", "onCommand:java.open.output", "onCommand:java.open.serverLog", "onCommand:java.projectConfiguration.update", @@ -111,6 +112,11 @@ "default": false, "description": "Enable/disable the signature help." }, + "java.implementationsCodeLens.enabled": { + "type": "boolean", + "default": false, + "description": "Enable/disable the implementations code lens." + }, "java.configuration.maven.userSettings": { "type": "string", "default": null, diff --git a/src/commands.ts b/src/commands.ts index 3bd64beb2..4dccaf83f 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -19,6 +19,11 @@ export namespace Commands { */ export const SHOW_JAVA_REFERENCES = 'java.show.references'; + /** + * Show Java implementations + */ + export const SHOW_JAVA_IMPLEMENTATIONS = 'java.show.implementations'; + /** * Show editor references */ diff --git a/src/extension.ts b/src/extension.ts index 8953f2790..d01752efe 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -162,6 +162,9 @@ export function activate(context: ExtensionContext) { commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); }); + commands.registerCommand(Commands.SHOW_JAVA_IMPLEMENTATIONS, (uri: string, position: LSPosition, locations: LSLocation[]) => { + commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); + }); commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); diff --git a/test/extension.test.ts b/test/extension.test.ts index 2a1a9a5e4..523dc67ec 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -21,6 +21,7 @@ suite('Java Language Extension', () => { const JAVA_COMMANDS = [ Commands.OPEN_OUTPUT, Commands.SHOW_JAVA_REFERENCES, + Commands.SHOW_JAVA_IMPLEMENTATIONS, Commands.CONFIGURATION_UPDATE, Commands.IGNORE_INCOMPLETE_CLASSPATH, Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, From 8933fa655ef72447c9aa41d14fe3453cd5150e80 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 14 Jul 2017 14:36:25 +0800 Subject: [PATCH 0183/1435] Remove progress title --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index d01752efe..48168db4d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -14,7 +14,7 @@ let lastStatus; export function activate(context: ExtensionContext) { - window.withProgress({ location: ProgressLocation.Window, title: 'Starting Java Language Server' }, p => { + window.withProgress({ location: ProgressLocation.Window }, p => { return new Promise((resolve, reject) => { // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 From cbdbeaecb06990a0f36588e0fa11d96850ebf867 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 24 Jul 2017 22:06:44 -0400 Subject: [PATCH 0184/1435] updates tslint and adds more rules --- package.json | 6 +++--- src/extension.ts | 10 +++++----- test/extension.test.ts | 1 + tslint.json | 8 ++++++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index cd7efe1ae..a2dca9d5e 100644 --- a/package.json +++ b/package.json @@ -166,14 +166,14 @@ }, "devDependencies": { "typescript": "^2.3.4", - "vscode": "^1.1.0", + "vscode": "^1.1.4", "mocha": "^3.2.0", "@types/node": "^6.0.40", "@types/mocha": "^2.2.39", "@types/glob": "5.0.30", "gulp": "^3.9.1", - "gulp-tslint": "^7.1.0", - "tslint": "^5.2.0", + "gulp-tslint": "^8.1.1", + "tslint": "^5.5.0", "gulp-decompress": "2.0.1", "gulp-download": "0.0.1" }, diff --git a/src/extension.ts b/src/extension.ts index 48168db4d..88fa07fd9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,7 +8,7 @@ import { runServer, awaitServerConnection } from './javaServerStarter'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; -var os = require('os'); +let os = require('os'); let oldConfig; let lastStatus; @@ -299,10 +299,10 @@ function getTempWorkspace() { } function makeRandomHexString(length) { - var chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; - var result = ''; - for (var i = 0; i < length; i++) { - var idx = Math.floor(chars.length * Math.random()); + let chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; + let result = ''; + for (let i = 0; i < length; i++) { + let idx = Math.floor(chars.length * Math.random()); result += chars[idx]; } return result; diff --git a/test/extension.test.ts b/test/extension.test.ts index 523dc67ec..8ebe1b5f4 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -12,6 +12,7 @@ suite('Java Language Extension', () => { test('should activate', function () { this.timeout(1 * 60 * 1000); return vscode.extensions.getExtension('redhat.java').activate().then((api) => { + assert.ok(true); }); }); diff --git a/tslint.json b/tslint.json index d73ae925e..bd96fdfd4 100644 --- a/tslint.json +++ b/tslint.json @@ -2,12 +2,16 @@ "rules": { "no-unused-expression": true, "no-duplicate-variable": true, - "no-duplicate-key": true, "no-unused-variable": true, "curly": true, "class-name": true, "semicolon": ["always"], "triple-equals": true, - "quotemark": [true, "single", "avoid-escape"] + "quotemark": [true, "single", "avoid-escape"], + "no-console": ["log","error"], + "no-debugger": true, + "no-empty": true, + "no-var-keyword": true, + "no-unsafe-finally": true } } From 16d2246fb6ae27aeab234f8adcfdf72cc9e8100d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 31 Jul 2017 18:13:39 -0400 Subject: [PATCH 0185/1435] Add changelog for 0.8.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 16 ++++++++++++---- README.md | 8 ++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28bfbe681..64692704f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ # Change Log -## 0.8.0 (TBD) +## 0.8.0 (July 31st, 2017) +* enhancement - generate getters and setters from autocompletion. See [#100](https://github.com/redhat-developer/vscode-java/issues/100). +* enhancement - Enable/disable default Java formatter with the `java.format.enabled` preference. See [#186](https://github.com/redhat-developer/vscode-java/issues/186). +* enhancement - Exclude folders from Java project detection via glob patterns with the `java.import.exclusions` preference. See [#229](https://github.com/redhat-developer/vscode-java/issues/229). +* enhancement - Enable/disable signature help with the `java.signatureHelp.enabled` preference. See [#252](https://github.com/redhat-developer/vscode-java/issues/252). +* enhancement - Enable/disable the implementations code lens with the `java.implementationsCodeLens.enabled` preference. See [#257](https://github.com/redhat-developer/vscode-java/issues/257 ). +* bug fix - Gracefully handle deleted required eclipse settings files. See [#132](https://github.com/redhat-developer/vscode-java/issues/132). +* bug fix - Properly render documentation during code completion. See [#215](https://github.com/redhat-developer/vscode-java/issues/215). +* bug fix - fixed opening network folders on Windows. See [#259](https://github.com/redhat-developer/vscode-java/issues/259). +* bug fix - Diagnostics mismatch after applying code actions. See [JLS#279](https://github.com/eclipse/eclipse.jdt.ls/issues/279). +* bug fix - fixed Maven support running on JDK 9 and IBM JDK. See [JLS#315](https://github.com/eclipse/eclipse.jdt.ls/issues/315). +* bug fix - Keep logs clean from OperationCanceledException during code assist. See [JLS#317](https://github.com/eclipse/eclipse.jdt.ls/issues/317). ## 0.7.0 (July 4th, 2017) * enhancement - enabled @formatter:on/off tags in source. See [#236](https://github.com/redhat-developer/vscode-java/issues/236). @@ -20,7 +31,6 @@ * bug - fixed `Error computing hover: **/package-summary.html not found in JavaDoc jar`. See [#248](https://github.com/redhat-developer/vscode-java/issues/248). * bug - fixed `Invalid project description` thrown when reopening Eclipse projects. See [#244](https://github.com/redhat-developer/vscode-java/issues/244). - ## 0.6.0 (June 15th, 2017) * enhancement - reduced extension size by ~25%. See [JLS#252](https://github.com/eclipse/eclipse.jdt.ls/issues/252). * bug - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). @@ -62,7 +72,6 @@ * bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). * bug - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). - ## 0.1.0 (March 30th, 2017) * enhancement - Support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). * enhancement - add support for build-helper-maven-plugin. See [JLS#198](https://github.com/eclipse/eclipse.jdt.ls/issues/198). @@ -130,7 +139,6 @@ * bug fix - fix errors thrown when opening a standalone file. See [#55](https://github.com/redhat-developer/vscode-java/issues/55), [#67](https://github.com/redhat-developer/vscode-java/issues/67). * bug fix - fix JAVA_HOME detection mechanism. See [#74](https://github.com/redhat-developer/vscode-java/issues/74). - ## 0.0.5 (October 13th, 2016) * enhancement - configure extra VM arguments in VS Code settings, used to launch the Java Language Server. See [#25](https://github.com/redhat-developer/vscode-java/issues/25). * enhancement - configure java.home property in VS Code settings. See [#28](https://github.com/redhat-developer/vscode-java/issues/28). diff --git a/README.md b/README.md index 8f5c843ac..f958a6cf9 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,12 @@ The following settings are supported: * `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. * `java.trace.server` : Traces the communication between VS Code and the Java language server. -* `java.referencesCodeLens.enabled` : Enable/disable the references code lens. -* `java.signatureHelp.enabled` : Enable/disable the signature help. -* `java.implementationsCodeLens.enabled` : Enable/disable the implementations code lens. * `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. -* `java.format.enabled` : Enable/disable default Java formatter. * `java.import.exclusions` : Exclude folders from import via glob patterns. +* `java.referencesCodeLens.enabled` : Enable/disable the references code lenses. +* `java.implementationsCodeLens.enabled` : Enable/disable the implementations code lenses. +* `java.signatureHelp.enabled` : Enable/disable signature help support (triggered on `(`). +* `java.format.enabled` : Enable/disable the default Java formatter. Troubleshooting From 06b7e918c066c2fe8d987e857feb0ebedec25b04 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 31 Jul 2017 19:15:10 -0400 Subject: [PATCH 0186/1435] Bump version to 0.9.0 --- CHANGELOG.md | 2 ++ package.json | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64692704f..84ad49476 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.9.0 (August 31st, 2017 - Tentative) + ## 0.8.0 (July 31st, 2017) * enhancement - generate getters and setters from autocompletion. See [#100](https://github.com/redhat-developer/vscode-java/issues/100). * enhancement - Enable/disable default Java formatter with the `java.format.enabled` preference. See [#186](https://github.com/redhat-developer/vscode-java/issues/186). diff --git a/package.json b/package.json index a2dca9d5e..45ef5be54 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.8.0", + "version": "0.9.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -185,4 +185,4 @@ "expand-home-dir": "^0.0.3", "glob": "^7.1.1" } -} +} \ No newline at end of file From 23a04aa0ec438e6a03e4114ba125654c2f428139 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 8 Aug 2017 14:24:49 -0400 Subject: [PATCH 0187/1435] Switch to stdio as transport (#265) and registers commands when the language client is ready except the open log command which is available even when the language client fails to initialize. Fixes #201 --- src/electron_j.ts | 109 ------------ src/extension.ts | 371 ++++++++++++++++++++------------------- src/javaServerStarter.ts | 49 ++---- src/requirements.ts | 6 +- 4 files changed, 212 insertions(+), 323 deletions(-) delete mode 100644 src/electron_j.ts diff --git a/src/electron_j.ts b/src/electron_j.ts deleted file mode 100644 index 133a5f2e8..000000000 --- a/src/electron_j.ts +++ /dev/null @@ -1,109 +0,0 @@ - -'use strict'; -var path = require('path'); -var os = require('os'); -var net = require('net'); -var cp = require('child_process'); - -function makeRandomHexString(length) { - var chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; - var result = ''; - for (var i = 0; i < length; i++) { - var idx = Math.floor(chars.length * Math.random()); - result += chars[idx]; - } - return result; -} -function generatePipeName() { - var randomName = 'vscode-' + makeRandomHexString(5); - if (process.platform === 'win32') { - return '\\\\.\\pipe\\' + randomName + '-sock'; - } - // Mac/Unix: use socket file - return path.join(os.tmpdir(), randomName + '.sock'); -} -function generatePatchedEnv(env, stdInPipeName, stdOutPipeName) { - // Set the two unique pipe names and the electron flag as process env - var newEnv = {}; - for (var key in env) { - newEnv[key] = env[key]; - } - newEnv['STDIN_PIPE_NAME'] = stdInPipeName; - newEnv['STDOUT_PIPE_NAME'] = stdOutPipeName; - return newEnv; -} -function fork(modulePath, args, options, callback) { - var callbackCalled = false; - var resolve = function (result) { - if (callbackCalled) { - return; - } - callbackCalled = true; - callback(null, result); - }; - var reject = function (err) { - if (callbackCalled) { - return; - } - callbackCalled = true; - callback(err, null); - }; - - // Generate two unique pipe names - var stdInPipeName = generatePipeName(); - var stdOutPipeName = generatePipeName(); - - var newEnv = generatePatchedEnv(options.env || process.env, stdInPipeName, stdOutPipeName); - var childProcess; - let streamInfo = {writer : null, - reader: null} ; - // Begin listening to stdout pipe - var serverOut = net.createServer(function (stream) { - streamInfo.writer = stream; - if(streamInfo.reader !== null){ - resolve(streamInfo); - } - }); - - serverOut.listen(stdOutPipeName); - var serverIn = net.createServer(function (stream) { - streamInfo.reader = stream; - if(streamInfo.writer !== null ){ - resolve(streamInfo); - } - }); - serverIn.listen(stdInPipeName); - - - var serverClosed = false; - var closeServer = function () { - if (serverClosed) { - return; - } - serverClosed = true; - serverOut.close(); - serverIn.close(); - }; - // Create the process - childProcess = cp.spawn(modulePath, args, { - silent: true, - cwd: options.cwd, - env: newEnv, - execArgv: options.execArgv - }); - childProcess.stdout.on('data', function(data) { - console.log('stdout: ' + data); - }); - childProcess.stderr.on('data', function(data) { - console.log('stderr: ' + data); - }); - childProcess.once('error', function (err) { - closeServer(); - reject(err); - }); - childProcess.once('exit', function (err) { - closeServer(); - reject(err); - }); -} -exports.fork = fork; diff --git a/src/extension.ts b/src/extension.ts index 88fa07fd9..9efa37263 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,8 +3,9 @@ import * as path from 'path'; import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; -import { LanguageClient, LanguageClientOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; -import { runServer, awaitServerConnection } from './javaServerStarter'; +import { LanguageClient, LanguageClientOptions, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; +import * as requirements from './requirements'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; @@ -14,201 +15,217 @@ let lastStatus; export function activate(context: ExtensionContext) { - window.withProgress({ location: ProgressLocation.Window }, p => { - return new Promise((resolve, reject) => { - // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at - // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 - languages.setLanguageConfiguration('java', { - indentationRules: { - // ^(.*\*/)?\s*\}.*$ - decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/, - // ^.*\{[^}"']*$ - increaseIndentPattern: /^.*\{[^}"']*$/ - }, - wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, - onEnterRules: [ - { - // e.g. /** | */ - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - afterText: /^\s*\*\/$/, - action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' } - }, - { - // e.g. /** ...| - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - action: { indentAction: IndentAction.None, appendText: ' * ' } - }, - { - // e.g. * ...| - beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/, - action: { indentAction: IndentAction.None, appendText: '* ' } - }, - { - // e.g. */| - beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 } - }, - { - // e.g. *-----*/| - beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 } - } - ] - }); + enableJavadocSymbols(); - let storagePath = context.storagePath; - if (!storagePath) { - storagePath = getTempWorkspace(); - } - let workspacePath = path.resolve(storagePath + '/jdt_ws'); - let serverOptions; - let port = process.env['SERVER_PORT']; - if (!port) { - serverOptions = runServer.bind(null, workspacePath, getJavaConfiguration()); - } else { - serverOptions = awaitServerConnection.bind(null, port); + return requirements.resolveRequirements().catch(error => { + //show error + window.showErrorMessage(error.message, error.label).then((selection) => { + if (error.label && error.label === selection && error.openUrl) { + commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); } - - // Options to control the language client - let clientOptions: LanguageClientOptions = { - // Register the server for java - documentSelector: ['java'], - synchronize: { - configurationSection: 'java', - // Notify the server about file changes to .java and project/build files contained in the workspace - fileEvents: [ - workspace.createFileSystemWatcher('**/*.java'), - workspace.createFileSystemWatcher('**/pom.xml'), - workspace.createFileSystemWatcher('**/*.gradle'), - workspace.createFileSystemWatcher('**/.project'), - workspace.createFileSystemWatcher('**/.classpath'), - workspace.createFileSystemWatcher('**/settings/*.prefs') - ], + }); + // rethrow to disrupt the chain. + throw error; + }).then(requirements => { + return window.withProgress({ location: ProgressLocation.Window }, p => { + return new Promise((resolve, reject) => { + let storagePath = context.storagePath; + if (!storagePath) { + storagePath = getTempWorkspace(); } - }; - - let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - item.text = '$(rocket)'; - item.command = Commands.OPEN_OUTPUT; - - oldConfig = getJavaConfiguration(); - // Create the language client and start the client. - let languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); - languageClient.onReady().then(() => { - languageClient.onNotification(StatusNotification.type, (report) => { - switch (report.type) { - case 'Started': - item.text = '$(thumbsup)'; - p.report({ message: 'Finished' }); - lastStatus = item.text; - resolve(); - break; - case 'Error': - item.text = '$(thumbsdown)'; - lastStatus = item.text; - p.report({ message: 'Finished with Error' }); - item.tooltip = report.message; - toggleItem(window.activeTextEditor, item); - resolve(); - break; - case 'Starting': - p.report({ message: report.message }); - item.tooltip = report.message; - break; - case 'Message': - item.text = report.message; - setTimeout(() => { item.text = lastStatus; }, 3000); - break; - } - item.tooltip = report.message; - toggleItem(window.activeTextEditor, item); - }); - languageClient.onNotification(ActionableNotification.type, (notification) => { - let show = null; - switch (notification.severity) { - case MessageType.Log: - show = logNotification; - break; - case MessageType.Info: - show = window.showInformationMessage; - break; - case MessageType.Warning: - show = window.showWarningMessage; - break; - case MessageType.Error: - show = window.showErrorMessage; - break; - } - if (!show) { - return; + let workspacePath = path.resolve(storagePath + '/jdt_ws'); + + // Options to control the language client + let clientOptions: LanguageClientOptions = { + // Register the server for java + documentSelector: ['java'], + synchronize: { + configurationSection: 'java', + // Notify the server about file changes to .java and project/build files contained in the workspace + fileEvents: [ + workspace.createFileSystemWatcher('**/*.java'), + workspace.createFileSystemWatcher('**/pom.xml'), + workspace.createFileSystemWatcher('**/*.gradle'), + workspace.createFileSystemWatcher('**/.project'), + workspace.createFileSystemWatcher('**/.classpath'), + workspace.createFileSystemWatcher('**/settings/*.prefs') + ], } - const titles = notification.commands.map(a => a.title); - show(notification.message, ...titles).then((selection) => { - for (let action of notification.commands) { - if (action.title === selection) { - let args: any[] = (action.arguments) ? action.arguments : []; - commands.executeCommand(action.command, ...args); + }; + + let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); + item.text = '$(rocket)'; + item.command = Commands.OPEN_OUTPUT; + + oldConfig = getJavaConfiguration(); + let serverOptions; + let port = process.env['SERVER_PORT']; + if (!port) { + serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration()); + } else { + // used during development + serverOptions = awaitServerConnection.bind(null, port); + } + + // Create the language client and start the client. + let languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); + languageClient.onReady().then(() => { + languageClient.onNotification(StatusNotification.type, (report) => { + switch (report.type) { + case 'Started': + item.text = '$(thumbsup)'; + p.report({ message: 'Finished' }); + lastStatus = item.text; + resolve(); + break; + case 'Error': + item.text = '$(thumbsdown)'; + lastStatus = item.text; + p.report({ message: 'Finished with Error' }); + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); + resolve(); + break; + case 'Starting': + p.report({ message: report.message }); + item.tooltip = report.message; + break; + case 'Message': + item.text = report.message; + setTimeout(() => { item.text = lastStatus; }, 3000); break; - } } + item.tooltip = report.message; + toggleItem(window.activeTextEditor, item); + }); + languageClient.onNotification(ActionableNotification.type, (notification) => { + let show = null; + switch (notification.severity) { + case MessageType.Log: + show = logNotification; + break; + case MessageType.Info: + show = window.showInformationMessage; + break; + case MessageType.Warning: + show = window.showWarningMessage; + break; + case MessageType.Error: + show = window.showErrorMessage; + break; + } + if (!show) { + return; + } + const titles = notification.commands.map(a => a.title); + show(notification.message, ...titles).then((selection) => { + for (let action of notification.commands) { + if (action.title === selection) { + let args: any[] = (action.arguments) ? action.arguments : []; + commands.executeCommand(action.command, ...args); + break; + } + } + }); + }); + commands.registerCommand(Commands.OPEN_OUTPUT, () => { + languageClient.outputChannel.show(ViewColumn.Three); + }); + commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { + commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); + }); + commands.registerCommand(Commands.SHOW_JAVA_IMPLEMENTATIONS, (uri: string, position: LSPosition, locations: LSLocation[]) => { + commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); }); - }); - }); - - - commands.registerCommand(Commands.OPEN_OUTPUT, () => { - languageClient.outputChannel.show(ViewColumn.Three); - }); - commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { - commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); - }); - commands.registerCommand(Commands.SHOW_JAVA_IMPLEMENTATIONS, (uri: string, position: LSPosition, locations: LSLocation[]) => { - commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); - }); - commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); + commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore')); + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore')); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { - commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) - }); + commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) + }); - commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); - commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { - let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); - if (edit) { - workspace.applyEdit(edit); - } - }); + commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { + let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); + if (edit) { + workspace.applyEdit(edit); + } + }); - commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); + window.onDidChangeActiveTextEditor((editor) => { + toggleItem(editor, item); + }); - window.onDidChangeActiveTextEditor((editor) => { - toggleItem(editor, item); + let provider: TextDocumentContentProvider = { + onDidChange: null, + provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { + return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string): string => { + return v || ''; + }); + } + }; + workspace.registerTextDocumentContentProvider('jdt', provider); + }); + let disposable = languageClient.start(); + // Register commands here to make it available even when the language client fails + commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); + + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation + context.subscriptions.push(disposable); + context.subscriptions.push(onConfigurationChange()); + toggleItem(window.activeTextEditor, item); }); - let provider: TextDocumentContentProvider = { - onDidChange: null, - provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { - return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string): string => { - return v || ''; - }); - } - }; - workspace.registerTextDocumentContentProvider('jdt', provider); - let disposable = languageClient.start(); - - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); - context.subscriptions.push(onConfigurationChange()); - toggleItem(window.activeTextEditor, item); }); }); } +function enableJavadocSymbols() { + // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at + // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 + languages.setLanguageConfiguration('java', { + indentationRules: { + // ^(.*\*/)?\s*\}.*$ + decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/, + // ^.*\{[^}"']*$ + increaseIndentPattern: /^.*\{[^}"']*$/ + }, + wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, + onEnterRules: [ + { + // e.g. /** | */ + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + afterText: /^\s*\*\/$/, + action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' } + }, + { + // e.g. /** ...| + beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, + action: { indentAction: IndentAction.None, appendText: ' * ' } + }, + { + // e.g. * ...| + beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/, + action: { indentAction: IndentAction.None, appendText: '* ' } + }, + { + // e.g. */| + beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + }, + { + // e.g. *-----*/| + beforeText: /^(\t|(\ \ ))*\ \*[^/]*\*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 } + } + ] + }); +} + function logNotification(message: string, ...items: string[]) { return new Promise((resolve, reject) => { console.log(message); diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 0e2baffa8..5f0024df6 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -1,8 +1,8 @@ import { window, commands, WorkspaceConfiguration, workspace } from 'vscode' -import { StreamInfo } from 'vscode-languageclient'; +import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; import { createClientPipeTransport } from 'vscode-jsonrpc'; -import * as requirements from './requirements'; +import { RequirementsData } from './requirements'; import * as path from 'path'; import * as fs from 'fs'; import * as net from 'net'; @@ -11,8 +11,17 @@ const glob = require('glob'); declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); -let electron = require('./electron_j'); +export function prepareExecutable(requirements:RequirementsData, workspacePath, javaConfig): Executable { + let executable: Executable = Object.create(null); + let options: ExecutableOptions = Object.create(null); + options.env = process.env; + options.stdio = 'pipe'; + executable.options = options; + executable.command = path.resolve(requirements.java_home + '/bin/java'); + executable.args = prepareParams(requirements, javaConfig, workspacePath); + return executable; +} export function awaitServerConnection(port): Thenable { let addr = parseInt(port); return new Promise((res, rej) => { @@ -29,40 +38,12 @@ export function awaitServerConnection(port): Thenable { return server; }); } - - -export function runServer(workspacePath, javaConfig): Thenable { - return requirements.resolveRequirements().catch(error => { - //show error - window.showErrorMessage(error.message, error.label).then((selection) => { - if (error.label && error.label === selection && error.openUrl) { - commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); - } - }); - // rethrow to disrupt the chain. - throw error; - }).then(requirements => { - return new Promise(function (resolve, reject) { - - let child = path.resolve(requirements.java_home + '/bin/java'); - let params = prepareParams(requirements, javaConfig, workspacePath); - if (!params) { - return reject('Can not determine Java launch parameters for server'); - } - console.log('Executing ' + child + ' ' + params.join(' ')); - electron.fork(child, params, {}, function (err, result) { - if (err) { return reject(err); } - if (result) { return resolve(result); } - }); - }); - }); -} -function prepareParams(requirements, javaConfiguration, workspacePath) { - let params = []; +function prepareParams(requirements:RequirementsData, javaConfiguration, workspacePath): string[] { + let params: string[] = []; if (DEBUG) { - params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044'); + params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044,quiet=y'); // suspend=y is the default. Use this form if you need to debug the server startup code: // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); } diff --git a/src/requirements.ts b/src/requirements.ts index 993e826f9..a5498aa45 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -10,7 +10,7 @@ const findJavaHome = require('find-java-home'); const isWindows = process.platform.indexOf('win') === 0; const JAVAC_FILENAME = 'javac' + (isWindows?'.exe':''); -interface RequirementsData { +export interface RequirementsData { java_home: string; java_version: number; } @@ -34,7 +34,7 @@ export async function resolveRequirements(): Promise { return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion}); } -function checkJavaRuntime(): Promise { +function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { let source : string; let javaHome : string = readJavaConfig(); @@ -76,7 +76,7 @@ function readJavaConfig() : string { return config.get('java.home',null); } -function checkJavaVersion(java_home: string): Promise { +function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { if (stderr.indexOf('version "9') > -1){ From 3386138d3038fe8e8c3d01f490abb4048d5a26e4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 28 Aug 2017 11:32:33 -0400 Subject: [PATCH 0188/1435] fix grammar --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f958a6cf9..b60808503 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ The path to the Java Development Kit is searched in the following order: Available commands ========================== -The following command is available: +The following commands are available: - `Java:Update Project configuration` (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. - `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. From ef0b896e216daad12c0afbd3859f267dd86ed4b6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 28 Aug 2017 13:03:49 -0400 Subject: [PATCH 0189/1435] using trusty distro ... hoping that fixes Travis build failures --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 228695786..d5a1d5062 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ node_js: os: - osx - linux + dist: trusty before_install: - if [ $TRAVIS_OS_NAME == "linux" ]; then From 304f46f48ccae823a2312cefb01745ea2b41b33e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 28 Aug 2017 13:07:58 -0400 Subject: [PATCH 0190/1435] use matrix in .travis.yaml --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d5a1d5062..d8d757571 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,10 +4,11 @@ language: node_js node_js: - "6" -os: -- osx -- linux - dist: trusty +matrix: + include: + - os: linux + dist: trusty + - os: osx before_install: - if [ $TRAVIS_OS_NAME == "linux" ]; then From c066c34daccc6600cad917513fc58a34d94f3b47 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 31 Aug 2017 13:32:30 -0400 Subject: [PATCH 0191/1435] Check --inspect-brk as debug flag See https://github.com/Microsoft/vscode/issues/32529 Signed-off-by: Fred Bricon --- src/javaServerStarter.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 5f0024df6..5119c00eb 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -12,7 +12,7 @@ const glob = require('glob'); declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); -export function prepareExecutable(requirements:RequirementsData, workspacePath, javaConfig): Executable { +export function prepareExecutable(requirements: RequirementsData, workspacePath, javaConfig): Executable { let executable: Executable = Object.create(null); let options: ExecutableOptions = Object.create(null); options.env = process.env; @@ -40,7 +40,7 @@ export function awaitServerConnection(port): Thenable { } -function prepareParams(requirements:RequirementsData, javaConfiguration, workspacePath): string[] { +function prepareParams(requirements: RequirementsData, javaConfiguration, workspacePath): string[] { let params: string[] = []; if (DEBUG) { params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044,quiet=y'); @@ -88,7 +88,7 @@ function prepareParams(requirements:RequirementsData, javaConfiguration, workspa function startedInDebugMode(): boolean { let args = (process as any).execArgv; if (args) { - return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg)); + return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg) || /^--inspect-brk=?/.test(arg)); }; return false; } From 95a3a0f54b72c3b69890b06fd83d71ac9c195809 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 31 Aug 2017 13:37:16 -0400 Subject: [PATCH 0192/1435] Changelog for 0.9.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84ad49476..2e8761f53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log -## 0.9.0 (August 31st, 2017 - Tentative) +## 0.9.0 (August 31st, 2017) +* enhancement - rename symbols support (Doesn't rename files at the moment). See [#71](https://github.com/redhat-developer/vscode-java/issues/71). +* enhancement - use system's Gradle runtime when no wrapper found. See [#232](https://github.com/redhat-developer/vscode-java/issues/232). +* enhancement - code action: generate getters and setters. See [#263](https://github.com/redhat-developer/vscode-java/issues/263). +* enhancement - code action: add unimplemented methods. See [#270](https://github.com/redhat-developer/vscode-java/issues/270). +* bug fix - support 32-bit platforms. See [#201](https://github.com/redhat-developer/vscode-java/issues/201). +* bug fix - fixed implementor codelens showing <> when typing. See [#266](https://github.com/redhat-developer/vscode-java/issues/266). +* bug fix - fixed <> when invoking code actions. See [#288](https://github.com/redhat-developer/vscode-java/issues/288). +* bug fix - fixed `Index out of bounds` exceptions during code lens resolution, after document changes. See [JLS#340](https://github.com/eclipse/eclipse.jdt.ls/issues/340). ## 0.8.0 (July 31st, 2017) * enhancement - generate getters and setters from autocompletion. See [#100](https://github.com/redhat-developer/vscode-java/issues/100). From cbe0372f07595511026bb246c1a0802bf704db68 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 31 Aug 2017 14:45:25 -0400 Subject: [PATCH 0193/1435] fix escaped sequences --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e8761f53..0dd80b3be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ * enhancement - code action: generate getters and setters. See [#263](https://github.com/redhat-developer/vscode-java/issues/263). * enhancement - code action: add unimplemented methods. See [#270](https://github.com/redhat-developer/vscode-java/issues/270). * bug fix - support 32-bit platforms. See [#201](https://github.com/redhat-developer/vscode-java/issues/201). -* bug fix - fixed implementor codelens showing <> when typing. See [#266](https://github.com/redhat-developer/vscode-java/issues/266). -* bug fix - fixed <> when invoking code actions. See [#288](https://github.com/redhat-developer/vscode-java/issues/288). +* bug fix - fixed implementor codelens showing `<>` when typing. See [#266](https://github.com/redhat-developer/vscode-java/issues/266). +* bug fix - fixed `<>` when invoking code actions. See [#288](https://github.com/redhat-developer/vscode-java/issues/288). * bug fix - fixed `Index out of bounds` exceptions during code lens resolution, after document changes. See [JLS#340](https://github.com/eclipse/eclipse.jdt.ls/issues/340). ## 0.8.0 (July 31st, 2017) From 85da851f1c11d072bfb24b058afa420aa81e32ae Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 1 Sep 2017 01:40:00 -0400 Subject: [PATCH 0194/1435] Upversion to 0.10.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dd80b3be..62fe7b34e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.10.0 (TBD) + ## 0.9.0 (August 31st, 2017) * enhancement - rename symbols support (Doesn't rename files at the moment). See [#71](https://github.com/redhat-developer/vscode-java/issues/71). * enhancement - use system's Gradle runtime when no wrapper found. See [#232](https://github.com/redhat-developer/vscode-java/issues/232). diff --git a/package.json b/package.json index 45ef5be54..857a4e504 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.9.0", + "version": "0.10.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From a6e5999b9250ed3a331898e03c6404a022d45ea0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 11 Sep 2017 09:41:34 -0400 Subject: [PATCH 0195/1435] Update vscode engine requirement to 1.15.0 to fix CI build Signed-off-by: Fred Bricon --- package.json | 376 +++++++++++++++++++++++++-------------------------- 1 file changed, 188 insertions(+), 188 deletions(-) diff --git a/package.json b/package.json index 857a4e504..f98378d7c 100644 --- a/package.json +++ b/package.json @@ -1,188 +1,188 @@ -{ - "name": "java", - "displayName": "Language Support for Java(TM) by Red Hat", - "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", - "author": "Red Hat", - "icon": "icons/icon128.png", - "license": "EPL-1.0", - "version": "0.10.0", - "publisher": "redhat", - "bugs": "https://github.com/redhat-developer/vscode-java/issues", - "preview": true, - "engines": { - "vscode": "^1.12.0" - }, - "repository": { - "type": "git", - "url": "https://github.com/redhat-developer/vscode-java" - }, - "categories": [ - "Languages", - "Linters" - ], - "activationEvents": [ - "onLanguage:java", - "onCommand:java.show.references", - "onCommand:java.show.implementations", - "onCommand:java.open.output", - "onCommand:java.open.serverLog", - "onCommand:java.projectConfiguration.update", - "workspaceContains:pom.xml", - "workspaceContains:build.gradle" - ], - "main": "./out/src/extension", - "contributes": { - "languages": [ - { - "id": "java", - "extensions": [ - ".class" - ], - "configuration": "./language-configuration.json" - } - ], - "snippets": [ - { - "language": "java", - "path": "./snippets/java.json" - } - ], - "configuration": { - "type": "object", - "title": "Java configuration", - "properties": { - "java.home": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." - }, - "java.jdt.ls.vmargs": { - "type": [ - "string", - "null" - ], - "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", - "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" - }, - "java.errors.incompleteClasspath.severity": { - "type": [ - "string" - ], - "enum": [ - "ignore", - "info", - "warning", - "error" - ], - "default": "warning", - "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" - }, - "java.configuration.updateBuildConfiguration": { - "type": [ - "string" - ], - "enum": [ - "disabled", - "interactive", - "automatic" - ], - "default": "interactive", - "description": "Specifies how modifications on build files update the Java classpath/configuration" - }, - "java.trace.server": { - "type": "string", - "enum": [ - "off", - "messages", - "verbose" - ], - "default": "off", - "description": "Traces the communication between VS Code and the Java language server." - }, - "java.referencesCodeLens.enabled": { - "type": "boolean", - "default": true, - "description": "Enable/disable the references code lens." - }, - "java.signatureHelp.enabled": { - "type": "boolean", - "default": false, - "description": "Enable/disable the signature help." - }, - "java.implementationsCodeLens.enabled": { - "type": "boolean", - "default": false, - "description": "Enable/disable the implementations code lens." - }, - "java.configuration.maven.userSettings": { - "type": "string", - "default": null, - "description": "Absolute path to Maven's settings.xml" - }, - "java.format.enabled": { - "type": "boolean", - "default": true, - "description": "Enable/disable default Java formatter" - }, - "java.import.exclusions": { - "type": "array", - "description": "Configure glob patterns for excluding folders", - "default": "['**/node_modules', '**/.metadata']" - } - } - }, - "commands": [ - { - "command": "java.projectConfiguration.update", - "title": "Update project configuration", - "category": "Java" - }, - { - "command": "java.open.serverLog", - "title": "Open Java Language Server log file", - "category": "Java" - } - ], - "keybindings": [ - { - "command": "java.projectConfiguration.update", - "key": "ctrl+alt+u", - "mac": "cmd+alt+u", - "when": "editorFocus" - } - ] - }, - "scripts": { - "vscode:prepublish": "tsc -p ./", - "compile": "tsc -watch -p ./", - "postinstall": "node ./node_modules/vscode/bin/install", - "test": "node ./node_modules/vscode/bin/test", - "build-server": "./node_modules/.bin/gulp build_server", - "watch-server": "./node_modules/.bin/gulp watch_server", - "tslint": "./node_modules/.bin/gulp tslint" - }, - "devDependencies": { - "typescript": "^2.3.4", - "vscode": "^1.1.4", - "mocha": "^3.2.0", - "@types/node": "^6.0.40", - "@types/mocha": "^2.2.39", - "@types/glob": "5.0.30", - "gulp": "^3.9.1", - "gulp-tslint": "^8.1.1", - "tslint": "^5.5.0", - "gulp-decompress": "2.0.1", - "gulp-download": "0.0.1" - }, - "dependencies": { - "vscode-languageclient": "^3.2.0", - "find-java-home": "0.1.4", - "tmp": "^0.0.31", - "path-exists": "^3.0.0", - "expand-home-dir": "^0.0.3", - "glob": "^7.1.1" - } -} \ No newline at end of file +{ + "name": "java", + "displayName": "Language Support for Java(TM) by Red Hat", + "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", + "author": "Red Hat", + "icon": "icons/icon128.png", + "license": "EPL-1.0", + "version": "0.10.0", + "publisher": "redhat", + "bugs": "https://github.com/redhat-developer/vscode-java/issues", + "preview": true, + "engines": { + "vscode": "^1.15.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/vscode-java" + }, + "categories": [ + "Languages", + "Linters" + ], + "activationEvents": [ + "onLanguage:java", + "onCommand:java.show.references", + "onCommand:java.show.implementations", + "onCommand:java.open.output", + "onCommand:java.open.serverLog", + "onCommand:java.projectConfiguration.update", + "workspaceContains:pom.xml", + "workspaceContains:build.gradle" + ], + "main": "./out/src/extension", + "contributes": { + "languages": [ + { + "id": "java", + "extensions": [ + ".class" + ], + "configuration": "./language-configuration.json" + } + ], + "snippets": [ + { + "language": "java", + "path": "./snippets/java.json" + } + ], + "configuration": { + "type": "object", + "title": "Java configuration", + "properties": { + "java.home": { + "type": [ + "string", + "null" + ], + "default": null, + "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." + }, + "java.jdt.ls.vmargs": { + "type": [ + "string", + "null" + ], + "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", + "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" + }, + "java.errors.incompleteClasspath.severity": { + "type": [ + "string" + ], + "enum": [ + "ignore", + "info", + "warning", + "error" + ], + "default": "warning", + "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" + }, + "java.configuration.updateBuildConfiguration": { + "type": [ + "string" + ], + "enum": [ + "disabled", + "interactive", + "automatic" + ], + "default": "interactive", + "description": "Specifies how modifications on build files update the Java classpath/configuration" + }, + "java.trace.server": { + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VS Code and the Java language server." + }, + "java.referencesCodeLens.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the references code lens." + }, + "java.signatureHelp.enabled": { + "type": "boolean", + "default": false, + "description": "Enable/disable the signature help." + }, + "java.implementationsCodeLens.enabled": { + "type": "boolean", + "default": false, + "description": "Enable/disable the implementations code lens." + }, + "java.configuration.maven.userSettings": { + "type": "string", + "default": null, + "description": "Absolute path to Maven's settings.xml" + }, + "java.format.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable default Java formatter" + }, + "java.import.exclusions": { + "type": "array", + "description": "Configure glob patterns for excluding folders", + "default": "['**/node_modules', '**/.metadata']" + } + } + }, + "commands": [ + { + "command": "java.projectConfiguration.update", + "title": "Update project configuration", + "category": "Java" + }, + { + "command": "java.open.serverLog", + "title": "Open Java Language Server log file", + "category": "Java" + } + ], + "keybindings": [ + { + "command": "java.projectConfiguration.update", + "key": "ctrl+alt+u", + "mac": "cmd+alt+u", + "when": "editorFocus" + } + ] + }, + "scripts": { + "vscode:prepublish": "tsc -p ./", + "compile": "tsc -watch -p ./", + "postinstall": "node ./node_modules/vscode/bin/install", + "test": "node ./node_modules/vscode/bin/test", + "build-server": "./node_modules/.bin/gulp build_server", + "watch-server": "./node_modules/.bin/gulp watch_server", + "tslint": "./node_modules/.bin/gulp tslint" + }, + "devDependencies": { + "typescript": "^2.3.4", + "vscode": "^1.1.4", + "mocha": "^3.2.0", + "@types/node": "^6.0.40", + "@types/mocha": "^2.2.39", + "@types/glob": "5.0.30", + "gulp": "^3.9.1", + "gulp-tslint": "^8.1.1", + "tslint": "^5.5.0", + "gulp-decompress": "2.0.1", + "gulp-download": "0.0.1" + }, + "dependencies": { + "vscode-languageclient": "^3.2.0", + "find-java-home": "0.1.4", + "tmp": "^0.0.31", + "path-exists": "^3.0.0", + "expand-home-dir": "^0.0.3", + "glob": "^7.1.1" + } +} From 8da215fc1d8d02d6166e3a3fa287d2ea32d3350f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 11 Sep 2017 12:46:05 -0400 Subject: [PATCH 0196/1435] Disable reference codelenses by default. Fixes #293 Signed-off-by: Fred Bricon --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f98378d7c..6087b646a 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ }, "java.referencesCodeLens.enabled": { "type": "boolean", - "default": true, + "default": false, "description": "Enable/disable the references code lens." }, "java.signatureHelp.enabled": { @@ -185,4 +185,4 @@ "expand-home-dir": "^0.0.3", "glob": "^7.1.1" } -} +} \ No newline at end of file From 01f349269377e3fcdaf6b8c0a4bb92d3e851c738 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Wed, 13 Sep 2017 02:54:40 +0800 Subject: [PATCH 0197/1435] Load plugins to vscode java extension. (#283) Signed-off-by: Yaohai Zheng --- README.md | 2 ++ src/extension.ts | 6 +++++- src/plugin.ts | 22 ++++++++++++++++++++++ test/extension.test.ts | 19 +++++++++++++++++++ test/resources/packageExample.json | 22 ++++++++++++++++++++++ 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/plugin.ts create mode 100644 test/resources/packageExample.json diff --git a/README.md b/README.md index b60808503..33ce348b4 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ For information on getting started, refer to the [CONTRIBUTING.md instructions]( Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Also, you can contribute your own VSCode extension to enhance the existing features by following the instructions [here](https://github.com/redhat-developer/vscode-java/wiki/Contribute-a-Java-Extension). + Feedback =============== * File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues). diff --git a/src/extension.ts b/src/extension.ts index 9efa37263..93a977053 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,8 +2,9 @@ 'use strict'; import * as path from 'path'; -import { workspace, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; +import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { collectionJavaExtensions } from './plugin' import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; @@ -50,6 +51,9 @@ export function activate(context: ExtensionContext) { workspace.createFileSystemWatcher('**/.classpath'), workspace.createFileSystemWatcher('**/settings/*.prefs') ], + }, + initializationOptions: { + bundles: collectionJavaExtensions(extensions.all) } }; diff --git a/src/plugin.ts b/src/plugin.ts new file mode 100644 index 000000000..8d1460950 --- /dev/null +++ b/src/plugin.ts @@ -0,0 +1,22 @@ +'use strict'; + +import { Extension } from 'vscode'; +import * as path from 'path'; + +export function collectionJavaExtensions(extensions: Extension[]): string[] { + let result = []; + if (extensions && extensions.length) { + for (let extension of extensions) { + let contributesSection = extension.packageJSON['contributes']; + if (contributesSection) { + let javaExtensions = contributesSection['javaExtensions']; + if (Array.isArray(javaExtensions) && javaExtensions.length) { + for (let javaExtensionPath of javaExtensions) { + result.push(path.resolve(extension.extensionPath, javaExtensionPath)); + } + } + } + } + } + return result; +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 8ebe1b5f4..ee5550af7 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -1,5 +1,8 @@ import * as assert from 'assert'; import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as plugin from '../src/plugin'; import * as java from '../src/javaServerStarter'; import {Commands} from '../src/commands'; @@ -62,4 +65,20 @@ suite('Java Language Extension', () => { assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); }); + test('should collect java extensions', function () { + const packageJSON = JSON.parse(fs.readFileSync(path.join(__dirname, '../../test/resources/packageExample.json'), 'utf8')); + const fakedExtension = { + id: 'test', + extensionPath: '', + isActive: true, + packageJSON, + exports: '', + activate: null + }; + + const extensions = [fakedExtension]; + const result = plugin.collectionJavaExtensions(extensions); + assert(result.length === 1); + assert(result[0].endsWith(path.normalize('./bin/java.extend.jar'))); + }); }); diff --git a/test/resources/packageExample.json b/test/resources/packageExample.json new file mode 100644 index 000000000..d1513f145 --- /dev/null +++ b/test/resources/packageExample.json @@ -0,0 +1,22 @@ +{ + "name": "vscode-java-extension-example", + "displayName": "vscode-java-extension-example", + "description": "Example package to extend vscode java extension", + "version": "0.0.1", + "engines": { + "vscode": "^1.14.0" + }, + "categories": [], + "activationEvents": [ + "onLanguage:java" + ], + "main": "./out/src/extension", + "contributes": { + "javaExtensions": [ + "./bin/java.extend.jar" + ] + }, + "extensionDependencies": [ + "redhat.java" + ] +} \ No newline at end of file From f6e00e9965d93dc4591ea77c62acfafae75c626b Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Thu, 7 Sep 2017 10:20:52 +0800 Subject: [PATCH 0198/1435] Add workspace/executeCommand request Signed-off-by: Yaohai Zheng --- package.json | 1 + src/commands.ts | 7 ++++++- src/extension.ts | 10 +++++++++- test/extension.test.ts | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6087b646a..8fb55080a 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "onCommand:java.show.implementations", "onCommand:java.open.output", "onCommand:java.open.serverLog", + "onCommand:java.execute.workspaceCommand", "onCommand:java.projectConfiguration.update", "workspaceContains:pom.xml", "workspaceContains:build.gradle" diff --git a/src/commands.ts b/src/commands.ts index 4dccaf83f..463369801 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -59,7 +59,12 @@ export namespace Commands { */ export const APPLY_WORKSPACE_EDIT = 'java.apply.workspaceEdit'; - /** + /** + * Execute Workspace Command + */ + export const EXECUTE_WORKSPACE_COMMAND = 'java.execute.workspaceCommand'; + + /** * Open Java Language Server Log file */ export const OPEN_SERVER_LOG = 'java.open.serverLog'; diff --git a/src/extension.ts b/src/extension.ts index 93a977053..8c4a22abd 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; -import { LanguageClient, LanguageClientOptions, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin' import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; @@ -159,6 +159,14 @@ export function activate(context: ExtensionContext) { } }); + commands.registerCommand(Commands.EXECUTE_WORKSPACE_COMMAND, (command, ...rest) => { + const params: ExecuteCommandParams = { + command, + arguments: rest + } + return languageClient.sendRequest(ExecuteCommandRequest.type, params); + }); + window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); }); diff --git a/test/extension.test.ts b/test/extension.test.ts index ee5550af7..784bb3f4b 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -31,6 +31,7 @@ suite('Java Language Extension', () => { Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, Commands.PROJECT_CONFIGURATION_STATUS, Commands.APPLY_WORKSPACE_EDIT, + Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG ]; let foundJavaCommands = commands.filter(function(value){ From 6ad31049db537dfb11b9c43c020fc1af1e5379d4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Sep 2017 12:02:05 -0400 Subject: [PATCH 0199/1435] Changelog for the 0.10.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62fe7b34e..bc83786af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log -## 0.10.0 (TBD) +## 0.10.0 (September 15th, 2017) +* enhancement - enable 3rd party VS Code extensions to extend the JDT Language Server. See [#282](https://github.com/redhat-developer/vscode-java/issues/282). +* enhancement - add new `java.execute.workspaceCommand` command, for 3rd party VS Code extensions. See [#292](https://github.com/redhat-developer/vscode-java/issues/292). +* enhancement - References CodeLens disabled by default. See [#293](https://github.com/redhat-developer/vscode-java/issues/293). +* enhancement - add Types to symbols outline, to work with the [Code Outline](https://github.com/patrys/vscode-code-outline) extension. See [#294](https://github.com/redhat-developer/vscode-java/issues/294). +* bug fix - fixed content assist for Anonymous class creation. See [JLS#57](https://github.com/eclipse/eclipse.jdt.ls/issues/57). +* bug fix - fixed incorrect hover for unresolved types. See [JLS#333](https://github.com/eclipse/eclipse.jdt.ls/issues/333). + ## 0.9.0 (August 31st, 2017) * enhancement - rename symbols support (Doesn't rename files at the moment). See [#71](https://github.com/redhat-developer/vscode-java/issues/71). From b5a8d73fcd48e4eafc7d6f3410cf69c2b902f64c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Sep 2017 12:04:45 -0400 Subject: [PATCH 0200/1435] Formatting CHANGELOG.md Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc83786af..18ebe43f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,6 @@ * bug fix - fixed content assist for Anonymous class creation. See [JLS#57](https://github.com/eclipse/eclipse.jdt.ls/issues/57). * bug fix - fixed incorrect hover for unresolved types. See [JLS#333](https://github.com/eclipse/eclipse.jdt.ls/issues/333). - ## 0.9.0 (August 31st, 2017) * enhancement - rename symbols support (Doesn't rename files at the moment). See [#71](https://github.com/redhat-developer/vscode-java/issues/71). * enhancement - use system's Gradle runtime when no wrapper found. See [#232](https://github.com/redhat-developer/vscode-java/issues/232). From 6b3e1e0266d4f5c114686140f18f82245d877ff7 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 19 Sep 2017 10:37:06 -0400 Subject: [PATCH 0201/1435] Upversion to 0.11.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18ebe43f9..5f964ec8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.11.0 (TBD) + ## 0.10.0 (September 15th, 2017) * enhancement - enable 3rd party VS Code extensions to extend the JDT Language Server. See [#282](https://github.com/redhat-developer/vscode-java/issues/282). * enhancement - add new `java.execute.workspaceCommand` command, for 3rd party VS Code extensions. See [#292](https://github.com/redhat-developer/vscode-java/issues/292). diff --git a/package.json b/package.json index 8fb55080a..245f3bff1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.10.0", + "version": "0.11.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 6e3cc1545d29fb63bfafab5aa2b5d56cb92435f9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 27 Sep 2017 21:06:48 -0400 Subject: [PATCH 0202/1435] Invert header and badges to fix #309 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 33ce348b4..f1d01fafe 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ - -[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Language support for Java ™ for Visual Studio Code ===================== +[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Provides Java ™ language support via [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls), which utilizes From 62cf5cfbb5b5c3b2efba07b94a80e369ab54a588 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 2 Oct 2017 06:02:49 -0700 Subject: [PATCH 0203/1435] minor updates to readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f1d01fafe..3227d1aa1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Language support for Java ™ for Visual Studio Code ===================== -[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Waffle.io](https://img.shields.io/waffle/label/redhat-developer/vscode-java/in%20progress.svg?maxAge=2592000?style=plastic)](https://waffle.io/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) +[![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Provides Java ™ language support via [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls), which utilizes @@ -12,14 +12,13 @@ Quick Start 2. If you do not have a _Java 8_ Development Kit correctly [set](#setting-the-jdk) * Download and install a Java 8 compatible development kit. 3. Extension is activated when you first access a Java file - * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy, or to a lesser extent, simple Eclipse projects, i.e. containing .project and .classpath files. + * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy. Features ========= ![ screencast ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/vscode-java.0.0.1.gif) * Maven pom.xml project support -* Basic Eclipse Java project support * Basic Gradle Java project support * As you type reporting of parsing and compilation errors * Code completion @@ -28,6 +27,7 @@ Features * Code outline * Code navigation * Code lens (references) +* Code lens (implementation) * Highlights * Code formatting * Code snippets @@ -84,7 +84,7 @@ Contributing =============== This is an open source project open to anyone. Contributions are extremely welcome! -For information on getting started, refer to the [CONTRIBUTING.md instructions](CONTRIBUTING.md). +For information on getting started, refer to the [CONTRIBUTING instructions](CONTRIBUTING.md). Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). From 40b6f2136f97e4879c615900241db7a8c3b0e087 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 2 Oct 2017 17:32:11 -0400 Subject: [PATCH 0204/1435] Changelog for the 0.11.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 +++++++- README.md | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f964ec8f..aebe6475a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Change Log -## 0.11.0 (TBD) +## 0.11.0 (October 2nd, 2017) +* enhancement - external debugger now supported. See [#9](https://github.com/redhat-developer/vscode-java/issues/9). +* enhancement - code-action: handle exceptions with try/catch block or throws statement. See [#300](https://github.com/redhat-developer/vscode-java/issues/300). +* bug fix - fixed failing autocompletion when class name contains `$`. See [#301](https://github.com/redhat-developer/vscode-java/issues/301). +* bug fix - fixed OperationCanceledException on hover. See [#302](https://github.com/redhat-developer/vscode-java/issues/302). +* bug fix - fixed Index Out Of Bounds Exceptions during completion. See [#306](https://github.com/redhat-developer/vscode-java/issues/306). +* bug fix - fixed NPE in completion for package-less standalone classes. See [#312](https://github.com/redhat-developer/vscode-java/issues/312). ## 0.10.0 (September 15th, 2017) * enhancement - enable 3rd party VS Code extensions to extend the JDT Language Server. See [#282](https://github.com/redhat-developer/vscode-java/issues/282). diff --git a/README.md b/README.md index 3227d1aa1..250eaa193 100644 --- a/README.md +++ b/README.md @@ -22,18 +22,20 @@ Features * Basic Gradle Java project support * As you type reporting of parsing and compilation errors * Code completion +* Code actions * Javadoc hovers * Type search * Code outline * Code navigation -* Code lens (references) -* Code lens (implementation) +* Code lens (references/implementations) * Highlights * Code formatting * Code snippets Please note that [Gradle-based Android projects are not supported](https://github.com/redhat-developer/vscode-java/issues/10#issuecomment-268834749). +To launch and debug your Java programs, it's recommended you install *[Java Debug Extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug)*. + See the [changelog](CHANGELOG.md) for the latest release. You might also find useful information in the project [Wiki](https://github.com/redhat-developer/vscode-java/wiki). Setting the JDK From 9b0f0aca80cbefabad4c034fb5dd365d029f6170 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 2 Oct 2017 21:10:17 -0400 Subject: [PATCH 0205/1435] Upversion to 0.12.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aebe6475a..218770d6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.12.0 (TBD) + ## 0.11.0 (October 2nd, 2017) * enhancement - external debugger now supported. See [#9](https://github.com/redhat-developer/vscode-java/issues/9). * enhancement - code-action: handle exceptions with try/catch block or throws statement. See [#300](https://github.com/redhat-developer/vscode-java/issues/300). diff --git a/package.json b/package.json index 245f3bff1..67844c018 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.11.0", + "version": "0.12.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 7c35e7c5e67c2ea505388062c36053cc09a7c399 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 5 Oct 2017 18:33:47 -0400 Subject: [PATCH 0206/1435] Add region folding support Fixes #316 Signed-off-by: Fred Bricon --- language-configuration.json | 91 ++++++-- snippets/java.json | 404 +++++++++++++++++++----------------- 2 files changed, 283 insertions(+), 212 deletions(-) diff --git a/language-configuration.json b/language-configuration.json index 956c19193..45643733d 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -1,27 +1,84 @@ { "comments": { "lineComment": "//", - "blockComment": [ "/*", "*/" ] + "blockComment": [ + "/*", + "*/" + ] }, "brackets": [ - ["{", "}"], - ["[", "]"], - ["(", ")"] + [ + "{", + "}" + ], + [ + "[", + "]" + ], + [ + "(", + ")" + ] ], "autoClosingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"], - { "open": "/**", "close": " */", "notIn": ["string"] } + [ + "{", + "}" + ], + [ + "[", + "]" + ], + [ + "(", + ")" + ], + [ + "\"", + "\"" + ], + [ + "'", + "'" + ], + { + "open": "/**", + "close": " */", + "notIn": [ + "string" + ] + } ], "surroundingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"], - ["<", ">"] - ] + [ + "{", + "}" + ], + [ + "[", + "]" + ], + [ + "(", + ")" + ], + [ + "\"", + "\"" + ], + [ + "'", + "'" + ], + [ + "<", + ">" + ] + ], + "folding": { + "markers": { + "start": "^\\s*//\\s*(#?region)|( Date: Fri, 6 Oct 2017 10:21:46 -0400 Subject: [PATCH 0207/1435] Improve class/interface/ctor snippets with variable transformations Fixes #317 Signed-off-by: Fred Bricon --- snippets/java.json | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index f4969d326..1747b775d 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -34,9 +34,8 @@ "Public constructor": { "prefix": "ctor", "body": [ - "public ${1:name}($2) {", - "\tsuper();", - "\t$0", + "public ${1:${TM_FILENAME_BASE}}($2) {", + "\t${0:super();}", "}" ], "description": "Public constructor" @@ -45,13 +44,11 @@ "prefix": "class", "body": [ "/**", - " * ${1:name}", + " * ${1}", " */", - "public class ${1:name} {", + "public class ${1:${TM_FILENAME_BASE}} {", "", - "\tpublic ${1:name} (${2:parameters}) {", - "\t\t$0", - "\t}", + "\t$0", "}" ], "description": "Class Definition" @@ -60,9 +57,9 @@ "prefix": "interface", "body": [ "/**", - " * ${1:name}", + " * ${1}", " */", - "public interface ${1:name} {", + "public interface ${1:${TM_FILENAME_BASE}} {", "\t$0", "}" ], From 78f4d6662b2098a4255d0f33f1675244ee92a11c Mon Sep 17 00:00:00 2001 From: Brent Krone-Schmidt Date: Thu, 12 Oct 2017 12:56:24 -0700 Subject: [PATCH 0208/1435] Make intrusive Language Server output less intrusive (#326) Signed-off-by: Brent Krone-Schmidt --- src/extension.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 8c4a22abd..6b456b1fd 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; -import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin' import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; @@ -54,7 +54,8 @@ export function activate(context: ExtensionContext) { }, initializationOptions: { bundles: collectionJavaExtensions(extensions.all) - } + }, + revealOutputChannelOn: RevealOutputChannelOn.Never }; let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); From 2528898d0e630ff82cc1668306ea5bd82e432e64 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 12 Oct 2017 14:02:08 -0400 Subject: [PATCH 0209/1435] Consume signed server Fixes #307 Signed-off-by: Fred Bricon --- Jenkinsfile | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 5d681be56..eea5cef8e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,6 +13,11 @@ def buildVscodeExtension(){ } node('rhel7'){ + when { + expression { + return !publishToMarketPlace.equals('true') + } + } stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" @@ -21,6 +26,25 @@ node('rhel7'){ stash name: 'server_distro',includes :files[0].path } +node('rhel7'){ + when { + expression { + return publishToMarketPlace.equals('true') + } + } + stage 'Fetch latest JDT LS' + def serverRepo = "http://download.eclipse.org/jdtls/snapshots" + def server = new URL ("$serverRepo/latest.txt").getText() + + File binary = new File(server); + if (!binary.exists()) { + binary.withOutputStream { out -> + new URL("$serverRepo/$server").withInputStream { from -> out << from } + } + } + stash name: 'server_distro',includes :binary.path +} + node('rhel7'){ stage 'Checkout vscode-java code' From eb1ec0506e34d6ee4d90bd4e98731eff1ef6d09c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 13:42:53 -0400 Subject: [PATCH 0210/1435] Invert server packaging condition to test #307 Signed-off-by: Fred Bricon --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index eea5cef8e..41ef3aaf8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ when { expression { - return !publishToMarketPlace.equals('true') + return publishToMarketPlace.equals('true') } } stage 'Build JDT LS' @@ -29,7 +29,7 @@ node('rhel7'){ node('rhel7'){ when { expression { - return publishToMarketPlace.equals('true') + return !publishToMarketPlace.equals('true') } } stage 'Fetch latest JDT LS' From ba452607d4cbdb6e356b011fc90efe86d2ed5a2d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 13:49:05 -0400 Subject: [PATCH 0211/1435] Workaround Jenkins pipeline plugin limitation Signed-off-by: Fred Bricon --- Jenkinsfile | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 41ef3aaf8..08a462604 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,36 +13,24 @@ def buildVscodeExtension(){ } node('rhel7'){ - when { - expression { - return publishToMarketPlace.equals('true') - } - } - stage 'Build JDT LS' - git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" - - def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - stash name: 'server_distro',includes :files[0].path -} - -node('rhel7'){ - when { - expression { - return !publishToMarketPlace.equals('true') - } - } - stage 'Fetch latest JDT LS' - def serverRepo = "http://download.eclipse.org/jdtls/snapshots" - def server = new URL ("$serverRepo/latest.txt").getText() + stage 'Embed JDT LS' + if (return !publishToMarketPlace.equals('true')) { + git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' + sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + stash name: 'server_distro',includes :files[0].path + } else { + def serverRepo = "http://download.eclipse.org/jdtls/snapshots" + def server = new URL ("$serverRepo/latest.txt").getText() - File binary = new File(server); - if (!binary.exists()) { - binary.withOutputStream { out -> - new URL("$serverRepo/$server").withInputStream { from -> out << from } + File binary = new File(server); + if (!binary.exists()) { + binary.withOutputStream { out -> + new URL("$serverRepo/$server").withInputStream { from -> out << from } + } } + stash name: 'server_distro',includes :binary.path } - stash name: 'server_distro',includes :binary.path } node('rhel7'){ From 699ffb29cea4ba43909ea635f123b9368fbe7408 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 13:50:51 -0400 Subject: [PATCH 0212/1435] Workaround Jenkins pipeline plugin limitation. take 2 Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 08a462604..a5683f850 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Embed JDT LS' - if (return !publishToMarketPlace.equals('true')) { + if (!publishToMarketPlace.equals('true')) { git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') From 7284f4e2bf3f17d8d17dd279fc08270483c78dcc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 13:52:11 -0400 Subject: [PATCH 0213/1435] Invert server packaging condition to test #307, take 2 Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index a5683f850..b31990b6a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Embed JDT LS' - if (!publishToMarketPlace.equals('true')) { + if (publishToMarketPlace.equals('true')) { git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') From ac891cf56784508f3d87553212a6d5f46d770e22 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 14:21:56 -0400 Subject: [PATCH 0214/1435] Workaround Jenkins pipeline plugin limitation. take 3 Signed-off-by: Fred Bricon --- Jenkinsfile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b31990b6a..133554836 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,15 +21,14 @@ node('rhel7'){ stash name: 'server_distro',includes :files[0].path } else { def serverRepo = "http://download.eclipse.org/jdtls/snapshots" - def server = new URL ("$serverRepo/latest.txt").getText() - - File binary = new File(server); - if (!binary.exists()) { - binary.withOutputStream { out -> - new URL("$serverRepo/$server").withInputStream { from -> out << from } - } - } - stash name: 'server_distro',includes :binary.path + sh """ + v=curl `${serverRepo}/latest.txt`; + rm -rf downloads; + mkdir downloads; + curl `${serverRepo}/$v` -o downloads/$v; + """ + def files = findFiles(glob: 'downloads/**.tar.gz') + stash name: 'server_distro',includes :files[0].path } } From 45aad865a0a0d53bd35ba2f7aaab45a2aebfb96e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 14:28:16 -0400 Subject: [PATCH 0215/1435] Workaround Jenkins pipeline plugin limitation. take 4 Signed-off-by: Fred Bricon --- Jenkinsfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 133554836..ae84edc00 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,10 +22,13 @@ node('rhel7'){ } else { def serverRepo = "http://download.eclipse.org/jdtls/snapshots" sh """ - v=curl `${serverRepo}/latest.txt`; rm -rf downloads; mkdir downloads; - curl `${serverRepo}/$v` -o downloads/$v; + curl `${serverRepo}/latest.txt` -o downloads/latest.txt; + """ + def version = new File("downloads/latest.txt").text + sh """ + curl `${serverRepo}/${version}` -o downloads/${version}; """ def files = findFiles(glob: 'downloads/**.tar.gz') stash name: 'server_distro',includes :files[0].path From 80404343ecbbd44e5ddaefd27cea8233e645146f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 14:33:22 -0400 Subject: [PATCH 0216/1435] Workaround Jenkins pipeline plugin limitation. take 5 Signed-off-by: Fred Bricon --- Jenkinsfile | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ae84edc00..e6c0b6dfe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,15 +21,11 @@ node('rhel7'){ stash name: 'server_distro',includes :files[0].path } else { def serverRepo = "http://download.eclipse.org/jdtls/snapshots" - sh """ - rm -rf downloads; - mkdir downloads; - curl `${serverRepo}/latest.txt` -o downloads/latest.txt; - """ + sh "rm -rf downloads; mkdir downloads" + sh "curl ${serverRepo}/latest.txt -o downloads/latest.txt" def version = new File("downloads/latest.txt").text - sh """ - curl `${serverRepo}/${version}` -o downloads/${version}; - """ + sh "curl ${serverRepo}/${version} -o downloads/${version};" + def files = findFiles(glob: 'downloads/**.tar.gz') stash name: 'server_distro',includes :files[0].path } From ca9905e30b14276687198e94ddd04d28be16082e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 14:36:29 -0400 Subject: [PATCH 0217/1435] Workaround Jenkins pipeline plugin limitation. take 6 Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index e6c0b6dfe..b3797a5e4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,7 +23,7 @@ node('rhel7'){ def serverRepo = "http://download.eclipse.org/jdtls/snapshots" sh "rm -rf downloads; mkdir downloads" sh "curl ${serverRepo}/latest.txt -o downloads/latest.txt" - def version = new File("downloads/latest.txt").text + def version = readFile('downloads/latest.txt') sh "curl ${serverRepo}/${version} -o downloads/${version};" def files = findFiles(glob: 'downloads/**.tar.gz') From ec22f272ab2c976bb9ef84619e3059d2791742ea Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Oct 2017 16:22:19 -0400 Subject: [PATCH 0218/1435] Revert fix for ##307 because I suck Signed-off-by: Fred Bricon --- Jenkinsfile | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b3797a5e4..5d681be56 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,22 +13,12 @@ def buildVscodeExtension(){ } node('rhel7'){ - stage 'Embed JDT LS' - if (publishToMarketPlace.equals('true')) { - git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" - def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - stash name: 'server_distro',includes :files[0].path - } else { - def serverRepo = "http://download.eclipse.org/jdtls/snapshots" - sh "rm -rf downloads; mkdir downloads" - sh "curl ${serverRepo}/latest.txt -o downloads/latest.txt" - def version = readFile('downloads/latest.txt') - sh "curl ${serverRepo}/${version} -o downloads/${version};" + stage 'Build JDT LS' + git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' + sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" - def files = findFiles(glob: 'downloads/**.tar.gz') - stash name: 'server_distro',includes :files[0].path - } + def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + stash name: 'server_distro',includes :files[0].path } node('rhel7'){ From cf289a093fec2e0a4d0c1cd6b00cd7e2f7ae6d26 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 17 Oct 2017 14:51:05 -0400 Subject: [PATCH 0219/1435] Add new java.contentProvider.preferred preference Signed-off-by: Fred Bricon --- README.md | 2 +- package.json | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 250eaa193..ac3701073 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ The following settings are supported: * `java.implementationsCodeLens.enabled` : Enable/disable the implementations code lenses. * `java.signatureHelp.enabled` : Enable/disable signature help support (triggered on `(`). * `java.format.enabled` : Enable/disable the default Java formatter. - +* `java.contentProvider.preferred` : Preferred content provider (see 3rd party decompilers available in [vscode-java-decompiler](https://github.com/dgileadi/vscode-java-decompiler)). Troubleshooting =============== diff --git a/package.json b/package.json index 67844c018..77f13ca1c 100644 --- a/package.json +++ b/package.json @@ -132,6 +132,11 @@ "type": "array", "description": "Configure glob patterns for excluding folders", "default": "['**/node_modules', '**/.metadata']" + }, + "java.contentProvider.preferred": { + "type": "string", + "description": "Preferred content provider (a 3rd party decompiler id, usually)", + "default": null } } }, From 72ea774041a4d119a5784a60ac2b4e14bd8c18b5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 17 Oct 2017 20:38:22 -0400 Subject: [PATCH 0220/1435] Changelog for the 0.12.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 218770d6a..9d2a418d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Change Log -## 0.12.0 (TBD) +## 0.12.0 (October 17th, 2017) +* enhancement - experimental Java 9 support (for Maven and Eclipse projects). See [JLS#185](https://github.com/eclipse/eclipse.jdt.ls/issues/185). +* enhancement - add `Extract to method` refactoring. See [#303](https://github.com/redhat-developer/vscode-java/issues/303). +* enhancement - add region folding support. See [#316](https://github.com/redhat-developer/vscode-java/issues/316). +* enhancement - improved Java snippets with transformations. See [#317](https://github.com/redhat-developer/vscode-java/issues/317). +* enhancement - made Java language server output less intrusive. See [#326](https://github.com/redhat-developer/vscode-java/pull/326). +* enhancement - add 3rd party decompiler support. See [#334](https://github.com/redhat-developer/vscode-java/pull/334). +* bug fix - fixed inconsistent package error on standalone java files. See [#274](https://github.com/redhat-developer/vscode-java/issues/274). +* bug fix - fixed Javadoc not shown on hover, after saving a file. See [JLS#375](https://github.com/eclipse/eclipse.jdt.ls/issues/375). +* bug fix - fixed conflicts caused by 3rd party extensions updates. See [JLS#385](https://github.com/eclipse/eclipse.jdt.ls/pull/385); ## 0.11.0 (October 2nd, 2017) * enhancement - external debugger now supported. See [#9](https://github.com/redhat-developer/vscode-java/issues/9). From f8f9245deed8534cc37cef05005b81b3f4db5c2d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 18 Oct 2017 10:04:56 -0400 Subject: [PATCH 0221/1435] Upversion to 0.13.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d2a418d9..006f3abd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log + +## 0.13.0 (TBD) + + ## 0.12.0 (October 17th, 2017) * enhancement - experimental Java 9 support (for Maven and Eclipse projects). See [JLS#185](https://github.com/eclipse/eclipse.jdt.ls/issues/185). * enhancement - add `Extract to method` refactoring. See [#303](https://github.com/redhat-developer/vscode-java/issues/303). diff --git a/package.json b/package.json index 77f13ca1c..f9edc1d20 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.12.0", + "version": "0.13.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 28f0c61b46254404e7809d8542f1ce0b1c018abd Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Oct 2017 12:27:36 -0400 Subject: [PATCH 0222/1435] Change default 'update project configuration' shortcut to shift+alt+u Fixes #348 Signed-off-by: Fred Bricon --- README.md | 2 +- package.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ac3701073..8d77eca2a 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ The path to the Java Development Kit is searched in the following order: Available commands ========================== The following commands are available: -- `Java:Update Project configuration` (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. +- `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. - `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. Supported VS Code settings diff --git a/package.json b/package.json index f9edc1d20..070ab0bf6 100644 --- a/package.json +++ b/package.json @@ -155,8 +155,7 @@ "keybindings": [ { "command": "java.projectConfiguration.update", - "key": "ctrl+alt+u", - "mac": "cmd+alt+u", + "key": "shift+alt+u", "when": "editorFocus" } ] From 56c5256f04b2d64208ff5346399cf2e1f94405aa Mon Sep 17 00:00:00 2001 From: xuzho Date: Tue, 19 Sep 2017 10:24:15 +0800 Subject: [PATCH 0223/1435] Build workspace manually Signed-off-by: xuzho --- README.md | 1 + package.json | 11 ++++++++++- src/commands.ts | 2 ++ src/extension.ts | 31 ++++++++++++++++++++++++++++++- src/protocol.ts | 11 +++++++++++ test/extension.test.ts | 3 ++- test/index.ts | 2 +- 7 files changed, 57 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8d77eca2a..2d922e29b 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ Available commands The following commands are available: - `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. - `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. +- `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. Supported VS Code settings ========================== diff --git a/package.json b/package.json index 070ab0bf6..ab5a4bc22 100644 --- a/package.json +++ b/package.json @@ -150,6 +150,11 @@ "command": "java.open.serverLog", "title": "Open Java Language Server log file", "category": "Java" + }, + { + "command": "java.workspace.compile", + "title": "Force Java compilation", + "category": "Java" } ], "keybindings": [ @@ -157,6 +162,10 @@ "command": "java.projectConfiguration.update", "key": "shift+alt+u", "when": "editorFocus" + }, + { + "command": "java.workspace.compile", + "key": "shift+alt+b" } ] }, @@ -190,4 +199,4 @@ "expand-home-dir": "^0.0.3", "glob": "^7.1.1" } -} \ No newline at end of file +} diff --git a/src/commands.ts b/src/commands.ts index 463369801..d448c59f7 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -64,6 +64,8 @@ export namespace Commands { */ export const EXECUTE_WORKSPACE_COMMAND = 'java.execute.workspaceCommand'; + export const COMPILE_WORKSPACE = 'java.workspace.compile'; + /** * Open Java Language Server Log file */ diff --git a/src/extension.ts b/src/extension.ts index 6b456b1fd..3957cd957 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,7 +8,7 @@ import { collectionJavaExtensions } from './plugin' import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage } from './protocol'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus } from './protocol'; let os = require('os'); let oldConfig; @@ -168,6 +168,35 @@ export function activate(context: ExtensionContext) { return languageClient.sendRequest(ExecuteCommandRequest.type, params); }); + commands.registerCommand(Commands.COMPILE_WORKSPACE, () => { + window.withProgress({ location: ProgressLocation.Window }, p => { + return new Promise((resolve, reject) => { + p.report({ message: 'Compiling workspace...' }); + const start = new Date().getTime(); + languageClient.sendRequest(CompileWorkspaceRequest.type, true).then((s: CompileWorkspaceStatus) => { + const elapsed = new Date().getTime() - start; + const humanVisibleDelay = elapsed < 1000? 1000:0; + setTimeout(function () { // set a timeout so user would still see the message when build time is short + switch (s) { + case CompileWorkspaceStatus.CANCELLED: + reject(s); + break; + case CompileWorkspaceStatus.FAILED: + reject(s); + break; + case CompileWorkspaceStatus.WITHERROR: + reject(s); + break; + case CompileWorkspaceStatus.SUCCEED: + resolve(s); + break; + } + }, humanVisibleDelay); + }); + }); + }); + }) + window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); }); diff --git a/src/protocol.ts b/src/protocol.ts index 45c139f01..cad8b7af7 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -43,6 +43,13 @@ export enum FeatureStatus { automatic = 2, } +export enum CompileWorkspaceStatus { + FAILED = 0, + SUCCEED = 1, + WITHERROR = 2, + CANCELLED = 3, +} + export interface StatusReport { message: string; type: string; @@ -69,4 +76,8 @@ export namespace ProjectConfigurationUpdateRequest { export namespace ActionableNotification { export const type = new NotificationType('language/actionableNotification'); +} + +export namespace CompileWorkspaceRequest { + export const type = new RequestType('java/buildWorkspace'); } \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index 784bb3f4b..672a06e30 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -32,7 +32,8 @@ suite('Java Language Extension', () => { Commands.PROJECT_CONFIGURATION_STATUS, Commands.APPLY_WORKSPACE_EDIT, Commands.EXECUTE_WORKSPACE_COMMAND, - Commands.OPEN_SERVER_LOG + Commands.OPEN_SERVER_LOG, + Commands.COMPILE_WORKSPACE ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); diff --git a/test/index.ts b/test/index.ts index c438886b8..087abe8df 100644 --- a/test/index.ts +++ b/test/index.ts @@ -10,7 +10,7 @@ // to report the results back to the caller. When the tests are finished, return // a possible error to the callback or null if none. -var testRunner = require('vscode/lib/testrunner'); +let testRunner = require('vscode/lib/testrunner'); // You can directly control Mocha options by uncommenting the following lines // See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info From 977973499608ccd5e64115876b250c5dae062023 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Tue, 24 Oct 2017 14:56:23 +0800 Subject: [PATCH 0224/1435] Add organize imports command Signed-off-by: Yaohai Zheng --- README.md | 1 + package.json | 21 ++++++++++++++++++++- src/commands.ts | 16 ++++++++++++---- src/extension.ts | 24 +++++++++++++++++++++--- test/extension.test.ts | 3 ++- 5 files changed, 56 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2d922e29b..8a5f20c7b 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ The following commands are available: - `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. - `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. +- `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. Supported VS Code settings ========================== diff --git a/package.json b/package.json index ab5a4bc22..5a6a662f0 100644 --- a/package.json +++ b/package.json @@ -155,6 +155,11 @@ "command": "java.workspace.compile", "title": "Force Java compilation", "category": "Java" + }, + { + "command": "java.edit.organizeImports", + "title": "Organize Imports", + "category": "Java" } ], "keybindings": [ @@ -163,11 +168,25 @@ "key": "shift+alt+u", "when": "editorFocus" }, + { + "command": "java.edit.organizeImports", + "key": "shift+alt+o", + "when": "editorTextFocus && !editorReadnly" + }, { "command": "java.workspace.compile", "key": "shift+alt+b" } - ] + ], + "menus": { + "editor/context": [ + { + "command": "java.edit.organizeImports", + "when": "resourceLangId == java", + "group": "1_modification" + } + ] + } }, "scripts": { "vscode:prepublish": "tsc -p ./", diff --git a/src/commands.ts b/src/commands.ts index d448c59f7..f4ccf0d25 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -64,10 +64,18 @@ export namespace Commands { */ export const EXECUTE_WORKSPACE_COMMAND = 'java.execute.workspaceCommand'; + /** + * Execute Workspace build (compilation) + */ export const COMPILE_WORKSPACE = 'java.workspace.compile'; - /** - * Open Java Language Server Log file - */ - export const OPEN_SERVER_LOG = 'java.open.serverLog'; + /** + * Open Java Language Server Log file + */ + export const OPEN_SERVER_LOG = 'java.open.serverLog'; + + /** + * Organize Java file imports command from language server + */ + export const EDIT_ORGANIZE_IMPORTS = 'java.edit.organizeImports'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 3957cd957..1cf64eae0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -154,9 +154,18 @@ export function activate(context: ExtensionContext) { commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { - let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); - if (edit) { - workspace.applyEdit(edit); + applyWorkspaceEdit(obj); + }); + + commands.registerCommand(Commands.EDIT_ORGANIZE_IMPORTS, async () => { + let activeEditor = window.activeTextEditor; + if (!activeEditor || !activeEditor.document || activeEditor.document.languageId !== 'java') { + return; + } + + if (activeEditor.document.uri instanceof Uri) { + const obj = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.EDIT_ORGANIZE_IMPORTS, activeEditor.document.uri.toString()); + applyWorkspaceEdit(obj); } }); @@ -220,6 +229,13 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(disposable); context.subscriptions.push(onConfigurationChange()); toggleItem(window.activeTextEditor, item); + + function applyWorkspaceEdit(obj) { + let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); + if (edit) { + workspace.applyEdit(edit); + } + } }); }); @@ -393,3 +409,5 @@ function openServerLogFile(workspacePath): Thenable { return didOpen; }); } + + diff --git a/test/extension.test.ts b/test/extension.test.ts index 672a06e30..41504e18c 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -33,7 +33,8 @@ suite('Java Language Extension', () => { Commands.APPLY_WORKSPACE_EDIT, Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG, - Commands.COMPILE_WORKSPACE + Commands.COMPILE_WORKSPACE, + Commands.EDIT_ORGANIZE_IMPORTS ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 874b24332a5c266fff49c0cffec420638bebb424 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 1 Nov 2017 14:14:21 -0400 Subject: [PATCH 0225/1435] Ignore archetype-resources folder during import Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a6a662f0..bac0ca5da 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "java.import.exclusions": { "type": "array", "description": "Configure glob patterns for excluding folders", - "default": "['**/node_modules', '**/.metadata']" + "default": "['**/node_modules', '**/.metadata', '**/archetype-resources']" }, "java.contentProvider.preferred": { "type": "string", From f0413981d42c6c8f1e51f5ce0d31b4fd17c3a8ea Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 1 Nov 2017 18:58:52 -0400 Subject: [PATCH 0226/1435] Changelog for the 0.13.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 006f3abd2..6d3f0340b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,16 @@ # Change Log -## 0.13.0 (TBD) - +## 0.13.0 (November 2nd, 2017) +* enhancement - New `Force Java compilation` command (`Shift+Alt+b`). See [#277](https://github.com/redhat-developer/vscode-java/issues/277). +* enhancement - **significantly faster** startup for existing workspaces. See [#336](https://github.com/redhat-developer/vscode-java/issues/336). +* enhancement - New `Organize Imports` command (`Shift+Alt+o`). See [#341](https://github.com/redhat-developer/vscode-java/pull/341). +* bug fix - fixed highlight support in `module-info.java`. See [#256](https://github.com/redhat-developer/vscode-java/issues/256). +* bug fix - fixed inner pom.xml changes causing infinite update project loop. See [#331](https://github.com/redhat-developer/vscode-java/issues/331). +* bug fix - fixed keybinding for "Update project configuration" command conflicting with `AltGr+u` (now `Shift+Alt+u`). See [#348](https://github.com/redhat-developer/vscode-java/issues/348). +* bug fix - fixed autocompletion overwritting following characters. See [#352](https://github.com/redhat-developer/vscode-java/issues/352). +* bug fix - fixed hover not working when browsing *.class files. See [JLS#390](https://github.com/eclipse/eclipse.jdt.ls/issues/390). +* bug fix - fixed Java Model Exception when changing class name. See [JLS#400](https://github.com/eclipse/eclipse.jdt.ls/issues/400). ## 0.12.0 (October 17th, 2017) * enhancement - experimental Java 9 support (for Maven and Eclipse projects). See [JLS#185](https://github.com/eclipse/eclipse.jdt.ls/issues/185). From ce3eedb68f821e63aa50dae88f70eb72baecd839 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 Nov 2017 12:36:10 -0400 Subject: [PATCH 0227/1435] Upversion to 0.14.0 Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bac0ca5da..e7631ffc1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.13.0", + "version": "0.14.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 9bef499f54010a200afe6f88852d07a5c57ff819 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 6 Nov 2017 11:10:57 -0500 Subject: [PATCH 0228/1435] Improved Java version parsing Fixes #356 Signed-off-by: Fred Bricon --- src/requirements.ts | 34 +++++++++++++++++++++++++++------- test/extension.test.ts | 18 ++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/requirements.ts b/src/requirements.ts index a5498aa45..cb5f7a8ad 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -79,18 +79,38 @@ function readJavaConfig() : string { function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - if (stderr.indexOf('version "9') > -1){ - resolve(9); - } if (stderr.indexOf('1.8') < 0){ - openJDKDownload(reject, 'Java 8 is required to run. Please download and install a JDK 8.'); - } - else{ - resolve(8); + let javaVersion = parseMajorVersion(stderr); + if (javaVersion < 8){ + openJDKDownload(reject, 'Java 8 or more recent is required to run. Please download and install a recent JDK'); + } else{ + resolve(javaVersion); } }); }); } +export function parseMajorVersion(content:string):number { + let regexp = /version "(.*)"/g + let match = regexp.exec(content); + if (!match) { + return 0; + } + let version = match[1]; + //Ignore '1.' prefix for legacy Java versions + if (version.startsWith('1.')) { + version = version.substring(2); + } + + //look into the interesting bits now + regexp = /\d+/g + match = regexp.exec(version); + let javaVersion = 0; + if (match) { + javaVersion = parseInt(match[0]); + } + return javaVersion; +} + function openJDKDownload(reject, cause) { let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/'; if (process.platform === 'darwin') { diff --git a/test/extension.test.ts b/test/extension.test.ts index 41504e18c..f491733ad 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -4,6 +4,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as plugin from '../src/plugin'; import * as java from '../src/javaServerStarter'; +import * as requirements from '../src/requirements'; import {Commands} from '../src/commands'; suite('Java Language Extension', () => { @@ -84,4 +85,21 @@ suite('Java Language Extension', () => { assert(result.length === 1); assert(result[0].endsWith(path.normalize('./bin/java.extend.jar'))); }); + + test('should parse Java version', function () { + //Test boundaries + assert.equal(requirements.parseMajorVersion(null), 0); + assert.equal(requirements.parseMajorVersion(''), 0); + assert.equal(requirements.parseMajorVersion('foo'), 0); + assert.equal(requirements.parseMajorVersion('version'), 0); + assert.equal(requirements.parseMajorVersion('version ""'), 0); + assert.equal(requirements.parseMajorVersion('version "NaN"'), 0); + + //Test the real stuff + assert.equal(requirements.parseMajorVersion('version "1.7"'), 7); + assert.equal(requirements.parseMajorVersion('version "1.8.0_151"'), 8); + assert.equal(requirements.parseMajorVersion('version "9"'), 9); + assert.equal(requirements.parseMajorVersion('version "9.0.1"'), 9); + assert.equal(requirements.parseMajorVersion('version "10-ea"'), 10); + }); }); From d7cb375874665b826377c072a914623f03362f4d Mon Sep 17 00:00:00 2001 From: xuzho Date: Sat, 4 Nov 2017 20:25:48 +0800 Subject: [PATCH 0229/1435] fix compileworkspace command Signed-off-by: xuzho --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 1cf64eae0..c06cb1b07 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -178,7 +178,7 @@ export function activate(context: ExtensionContext) { }); commands.registerCommand(Commands.COMPILE_WORKSPACE, () => { - window.withProgress({ location: ProgressLocation.Window }, p => { + return window.withProgress({ location: ProgressLocation.Window }, p => { return new Promise((resolve, reject) => { p.report({ message: 'Compiling workspace...' }); const start = new Date().getTime(); From 5a0ef763fb52a3a886f6b24d65388d7643e827dc Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 1 Nov 2017 09:53:52 +0100 Subject: [PATCH 0230/1435] support workspace folders Signed-off-by: Martin Aeschlimann --- .vscode/launch.json | 6 ++-- .vscode/tasks.json | 83 +++++++-------------------------------------- package.json | 43 +++++++++++++++-------- src/extension.ts | 4 ++- 4 files changed, 48 insertions(+), 88 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d2f1112f9..0867d4377 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,7 +11,7 @@ "stopOnEntry": false, "sourceMaps": true, "outFiles": [ "${workspaceRoot}/out/src/**" ], - "preLaunchTask": "compile" + "preLaunchTask": "npm: watch" }, { "name": "Launch Extension - Remote Server", @@ -25,7 +25,7 @@ "env": { "SERVER_PORT": "3333" }, - "preLaunchTask": "compile" + "preLaunchTask": "npm: watch" }, { "name": "Launch Tests", @@ -36,7 +36,7 @@ "stopOnEntry": false, "sourceMaps": true, "outFiles": ["${workspaceRoot}/out/test/**"], - "preLaunchTask": "compile" + "preLaunchTask": "npm: watch" } ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 687036b0b..3f2783c3e 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,77 +1,20 @@ -// Available variables which can be used inside of strings. -// ${workspaceRoot}: the root folder of the team -// ${file}: the current opened file -// ${fileBasename}: the current opened file's basename -// ${fileDirname}: the current opened file's dirname -// ${fileExtname}: the current opened file's extension -// ${cwd}: the current working directory of the spawned process -// A task runner that calls a custom npm script that compiles the extension. +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format { - "version": "0.1.0", - // we want to run npm - "command": "npm", - // the command is a shell script - "isShellCommand": true, - // show the output window only if unrecognized errors occur. - "showOutput": "silent", - "suppressTaskName": true, + "version": "2.0.0", "tasks": [ { - "taskName": "compile", - // we run the custom script "compile" as defined in package.json - "args": [ - "run", - "compile", - "--loglevel", - "silent" - ], - // The tsc compiler is started in watching mode - "isWatching": true, - // use the standard tsc in watch mode problem matcher to find compile problems in the output. + "type": "npm", + "script": "watch", "problemMatcher": "$tsc-watch", - "isBuildCommand": true - }, - { - "taskName": "test", - "args": [ - "run", - "test" - ], - "isTestCommand": true - }, - { - "taskName": "build-server", - // we run the custom script "compile" as defined in package.json - "args": [ - "run", - "build-server", - "--loglevel", - "silent" - ], - // The tsc compiler is started in watching mode - "isWatching": false - }, - { - "taskName": "tslint", - "args": [ - "run", - "tslint" - ], - "problemMatcher": { - "owner": "tslint", - "fileLocation": [ - "relative", - "${workspaceRoot}" - ], - "severity": "warning", - "pattern": { - "regexp": "^(\\S.*)\\[(\\d+), (\\d+)\\]:\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "message": 4 - } + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true } } ] -} +} \ No newline at end of file diff --git a/package.json b/package.json index e7631ffc1..16b91966f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,9 @@ "Languages", "Linters" ], + "keywords": [ + "multi-root ready" + ], "activationEvents": [ "onLanguage:java", "onCommand:java.show.references", @@ -58,7 +61,8 @@ "null" ], "default": null, - "description": "Specifies the folder path to the JDK 8 used to launch the Java Language Server." + "description": "Specifies the folder path to the JDK (8 or more recent) used to launch the Java Language Server.", + "scope": "window" }, "java.jdt.ls.vmargs": { "type": [ @@ -66,7 +70,8 @@ "null" ], "default": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication", - "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector" + "description": "Specifies extra VM arguments used to launch the Java Language Server. Eg. use `-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication` to bypass class verification, increase the heap size to 1GB and enable String deduplication with the G1 Garbage collector", + "scope": "window" }, "java.errors.incompleteClasspath.severity": { "type": [ @@ -79,7 +84,8 @@ "error" ], "default": "warning", - "description": "Specifies the severity of the message when the classpath is incomplete for a Java file" + "description": "Specifies the severity of the message when the classpath is incomplete for a Java file", + "scope": "window" }, "java.configuration.updateBuildConfiguration": { "type": [ @@ -91,7 +97,8 @@ "automatic" ], "default": "interactive", - "description": "Specifies how modifications on build files update the Java classpath/configuration" + "description": "Specifies how modifications on build files update the Java classpath/configuration", + "scope": "window" }, "java.trace.server": { "type": "string", @@ -101,42 +108,50 @@ "verbose" ], "default": "off", - "description": "Traces the communication between VS Code and the Java language server." + "description": "Traces the communication between VS Code and the Java language server.", + "scope": "window" }, "java.referencesCodeLens.enabled": { "type": "boolean", "default": false, - "description": "Enable/disable the references code lens." + "description": "Enable/disable the references code lens.", + "scope": "window" }, "java.signatureHelp.enabled": { "type": "boolean", "default": false, - "description": "Enable/disable the signature help." + "description": "Enable/disable the signature help.", + "scope": "window" }, "java.implementationsCodeLens.enabled": { "type": "boolean", "default": false, - "description": "Enable/disable the implementations code lens." + "description": "Enable/disable the implementations code lens.", + "scope": "window" }, "java.configuration.maven.userSettings": { "type": "string", "default": null, - "description": "Absolute path to Maven's settings.xml" + "description": "Absolute path to Maven's settings.xml", + "scope": "window" }, "java.format.enabled": { "type": "boolean", "default": true, - "description": "Enable/disable default Java formatter" + "description": "Enable/disable default Java formatter", + "scope": "window" }, "java.import.exclusions": { "type": "array", "description": "Configure glob patterns for excluding folders", - "default": "['**/node_modules', '**/.metadata', '**/archetype-resources']" + "default": "['**/node_modules', '**/.metadata', '**/archetype-resources']", + "scope": "window" }, "java.contentProvider.preferred": { "type": "string", "description": "Preferred content provider (a 3rd party decompiler id, usually)", - "default": null + "default": null, + "scope": "window" } } }, @@ -190,7 +205,7 @@ }, "scripts": { "vscode:prepublish": "tsc -p ./", - "compile": "tsc -watch -p ./", + "watch": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", "build-server": "./node_modules/.bin/gulp build_server", @@ -211,7 +226,7 @@ "gulp-download": "0.0.1" }, "dependencies": { - "vscode-languageclient": "^3.2.0", + "vscode-languageclient": "^3.4.5", "find-java-home": "0.1.4", "tmp": "^0.0.31", "path-exists": "^3.0.0", diff --git a/src/extension.ts b/src/extension.ts index c06cb1b07..6edcd4903 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -53,7 +53,8 @@ export function activate(context: ExtensionContext) { ], }, initializationOptions: { - bundles: collectionJavaExtensions(extensions.all) + bundles: collectionJavaExtensions(extensions.all), + workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null }, revealOutputChannelOn: RevealOutputChannelOn.Never }; @@ -74,6 +75,7 @@ export function activate(context: ExtensionContext) { // Create the language client and start the client. let languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); + languageClient.registerProposedFeatures(); languageClient.onReady().then(() => { languageClient.onNotification(StatusNotification.type, (report) => { switch (report.type) { From af41973bb2b59d8cb91e107845d707ee27401986 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 9 Nov 2017 09:11:51 -0500 Subject: [PATCH 0231/1435] Changelog for the 0.14.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 91 +++++++++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d3f0340b..bab267f5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,15 @@ # Change Log +## 0.14.0 (November 9th, 2017) +* enhancement - add CodeLens support from .class files. See [#343](https://github.com/redhat-developer/vscode-java/issues/343). +* enhancement - new multi-root support. See [#347](https://github.com/redhat-developer/vscode-java/pull/347). +* bug fix - fixed starting jdt.ls with JDK 10-ea. See [#356](https://github.com/redhat-developer/vscode-java/issues/356). +* bug fix - fixed 'java.workspace.compile' command to be invoked by the debugger. See [#357](https://github.com/redhat-developer/vscode-java/pull/357). ## 0.13.0 (November 2nd, 2017) -* enhancement - New `Force Java compilation` command (`Shift+Alt+b`). See [#277](https://github.com/redhat-developer/vscode-java/issues/277). +* enhancement - new `Force Java compilation` command (`Shift+Alt+b`). See [#277](https://github.com/redhat-developer/vscode-java/issues/277). * enhancement - **significantly faster** startup for existing workspaces. See [#336](https://github.com/redhat-developer/vscode-java/issues/336). -* enhancement - New `Organize Imports` command (`Shift+Alt+o`). See [#341](https://github.com/redhat-developer/vscode-java/pull/341). +* enhancement - new `Organize Imports` command (`Shift+Alt+o`). See [#341](https://github.com/redhat-developer/vscode-java/pull/341). * bug fix - fixed highlight support in `module-info.java`. See [#256](https://github.com/redhat-developer/vscode-java/issues/256). * bug fix - fixed inner pom.xml changes causing infinite update project loop. See [#331](https://github.com/redhat-developer/vscode-java/issues/331). * bug fix - fixed keybinding for "Update project configuration" command conflicting with `AltGr+u` (now `Shift+Alt+u`). See [#348](https://github.com/redhat-developer/vscode-java/issues/348). @@ -51,16 +56,16 @@ ## 0.8.0 (July 31st, 2017) * enhancement - generate getters and setters from autocompletion. See [#100](https://github.com/redhat-developer/vscode-java/issues/100). -* enhancement - Enable/disable default Java formatter with the `java.format.enabled` preference. See [#186](https://github.com/redhat-developer/vscode-java/issues/186). -* enhancement - Exclude folders from Java project detection via glob patterns with the `java.import.exclusions` preference. See [#229](https://github.com/redhat-developer/vscode-java/issues/229). -* enhancement - Enable/disable signature help with the `java.signatureHelp.enabled` preference. See [#252](https://github.com/redhat-developer/vscode-java/issues/252). -* enhancement - Enable/disable the implementations code lens with the `java.implementationsCodeLens.enabled` preference. See [#257](https://github.com/redhat-developer/vscode-java/issues/257 ). -* bug fix - Gracefully handle deleted required eclipse settings files. See [#132](https://github.com/redhat-developer/vscode-java/issues/132). -* bug fix - Properly render documentation during code completion. See [#215](https://github.com/redhat-developer/vscode-java/issues/215). +* enhancement - enable/disable default Java formatter with the `java.format.enabled` preference. See [#186](https://github.com/redhat-developer/vscode-java/issues/186). +* enhancement - exclude folders from Java project detection via glob patterns with the `java.import.exclusions` preference. See [#229](https://github.com/redhat-developer/vscode-java/issues/229). +* enhancement - enable/disable signature help with the `java.signatureHelp.enabled` preference. See [#252](https://github.com/redhat-developer/vscode-java/issues/252). +* enhancement - enable/disable the implementations code lens with the `java.implementationsCodeLens.enabled` preference. See [#257](https://github.com/redhat-developer/vscode-java/issues/257 ). +* bug fix - gracefully handle deleted required eclipse settings files. See [#132](https://github.com/redhat-developer/vscode-java/issues/132). +* bug fix - properly render documentation during code completion. See [#215](https://github.com/redhat-developer/vscode-java/issues/215). * bug fix - fixed opening network folders on Windows. See [#259](https://github.com/redhat-developer/vscode-java/issues/259). -* bug fix - Diagnostics mismatch after applying code actions. See [JLS#279](https://github.com/eclipse/eclipse.jdt.ls/issues/279). +* bug fix - diagnostics mismatch after applying code actions. See [JLS#279](https://github.com/eclipse/eclipse.jdt.ls/issues/279). * bug fix - fixed Maven support running on JDK 9 and IBM JDK. See [JLS#315](https://github.com/eclipse/eclipse.jdt.ls/issues/315). -* bug fix - Keep logs clean from OperationCanceledException during code assist. See [JLS#317](https://github.com/eclipse/eclipse.jdt.ls/issues/317). +* bug fix - keep logs clean from OperationCanceledException during code assist. See [JLS#317](https://github.com/eclipse/eclipse.jdt.ls/issues/317). ## 0.7.0 (July 4th, 2017) * enhancement - enabled @formatter:on/off tags in source. See [#236](https://github.com/redhat-developer/vscode-java/issues/236). @@ -85,11 +90,11 @@ * bug - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). * bug - fixed changes in Eclipse settings file are ignored. See [#239](https://github.com/redhat-developer/vscode-java/pull/239). * bug - `package` autocompletion should return only 1 package. See [#234](https://github.com/redhat-developer/vscode-java/pull/234). -* bug - Autocompletion on overridden methods should create the method body. See [#85](https://github.com/redhat-developer/vscode-java/pull/85). +* bug - autocompletion on overridden methods should create the method body. See [#85](https://github.com/redhat-developer/vscode-java/pull/85). ## 0.5.0 (May 31st, 2017) -* enhancement - Enable support for CamelCase type search. See [JLS#219](https://github.com/eclipse/eclipse.jdt.ls/issues/219). -* enhancement - Server startup now uses progress UI. See [#225](https://github.com/redhat-developer/vscode-java/pull/225). +* enhancement - enable support for CamelCase type search. See [JLS#219](https://github.com/eclipse/eclipse.jdt.ls/issues/219). +* enhancement - server startup now uses progress UI. See [#225](https://github.com/redhat-developer/vscode-java/pull/225). * bug - fixed autocomplete inserting classname+package text instead of classname. See [#175](https://github.com/redhat-developer/vscode-java/issues/175). * bug - fixed `Timed out while retrieving the attached javadoc.` error. See [#176](https://github.com/redhat-developer/vscode-java/issues/176). * bug - fixed autocompletion not cancelled on space. See [#187](https://github.com/redhat-developer/vscode-java/issues/187). @@ -104,77 +109,77 @@ * bug - fixed `Problems encountered while copying resources. Resource '/jdt.ls-java-project/src/pom.xml' does not exist` error. See [#244](https://github.com/eclipse/eclipse.jdt.ls/issues/244). ## 0.4.0 (May 15th, 2017) -* enhancement - New `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). -* enhancement - Expand workspace symbol search to all classes from classpath. See [#204](https://github.com/redhat-developer/vscode-java/issues/204). +* enhancement - new `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). +* enhancement - expand workspace symbol search to all classes from classpath. See [#204](https://github.com/redhat-developer/vscode-java/issues/204). * bug - fixed outline for classes from classpath. See [#206](https://github.com/redhat-developer/vscode-java/issues/206). * bug - fixed ambiguous results from class outline. See [JLS#214](https://github.com/eclipse/eclipse.jdt.ls/issues/214). ## 0.3.0 (May 4th, 2017) -* enhancement - Reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). -* enhancement - Enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). +* enhancement - reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). +* enhancement - enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). ## 0.2.1 (April 24th, 2017) * bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). ## 0.2.0 (April 19th, 2017) -* enhancement - Extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). +* enhancement - extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). * bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). * bug - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). ## 0.1.0 (March 30th, 2017) -* enhancement - Support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). +* enhancement - support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). * enhancement - add support for build-helper-maven-plugin. See [JLS#198](https://github.com/eclipse/eclipse.jdt.ls/issues/198). * enhancement - add support for Maven compilerIds jdt, eclipse, javac-with-errorprone. See [JLS#196](https://github.com/eclipse/eclipse.jdt.ls/issues/196). * enhancement - log Server's stderr/sdout in VS Code's console, to help troubleshooting. See [#172](https://github.com/redhat-developer/vscode-java/pull/172/). * bug fix - [tentative] prevent workspace corruption on shutdown. See [JLS#199](https://github.com/eclipse/eclipse.jdt.ls/pull/199). -* bug fix - Opening standalone Java files fails to initialize the server. See [JLS#194](https://github.com/eclipse/eclipse.jdt.ls/issues/194). -* bug fix - Intellisense fails on package-less classes. See [#166](https://github.com/redhat-developer/vscode-java/issues/166). +* bug fix - opening standalone Java files fails to initialize the server. See [JLS#194](https://github.com/eclipse/eclipse.jdt.ls/issues/194). +* bug fix - intellisense fails on package-less classes. See [#166](https://github.com/redhat-developer/vscode-java/issues/166). ## 0.0.13 (March 17th, 2017) -* bug fix - Java projects are no longer imported. See [#167](https://github.com/redhat-developer/vscode-java/issues/167). +* bug fix - java projects are no longer imported. See [#167](https://github.com/redhat-developer/vscode-java/issues/167). ## 0.0.12 (March 16th, 2017) -* enhancement - New `java.configuration.maven.userSettings` preference to set Maven's user settings.xml. See [JLS#184](https://github.com/eclipse/eclipse.jdt.ls/issues/184). -* enhancement - Adopt new VS Code SnippetString API. See [#99](https://github.com/redhat-developer/vscode-java/issues/99). -* bug fix - Saving a file doesn't update compilation errors on dependent classes. See [JLS#187](https://github.com/eclipse/eclipse.jdt.ls/issues/187). +* enhancement - new `java.configuration.maven.userSettings` preference to set Maven's user settings.xml. See [JLS#184](https://github.com/eclipse/eclipse.jdt.ls/issues/184). +* enhancement - adopt new VS Code SnippetString API. See [#99](https://github.com/redhat-developer/vscode-java/issues/99). +* bug fix - saving a file doesn't update compilation errors on dependent classes. See [JLS#187](https://github.com/eclipse/eclipse.jdt.ls/issues/187). ## 0.0.11 (March 2nd, 2017) -* build - Now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). -* enhancement - Maven errors are reported. See [JLS#85](https://github.com/eclipse/eclipse.jdt.ls/issues/85). -* enhancement - Code Actions for adding missing quote, removing unused import and superfluous semicolon. See [JLS#15](https://github.com/eclipse/eclipse.jdt.ls/issues/15). +* build - now uses [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) under the hood. See [#152](https://github.com/redhat-developer/vscode-java/issues/152). +* enhancement - maven errors are reported. See [JLS#85](https://github.com/eclipse/eclipse.jdt.ls/issues/85). +* enhancement - code Actions for adding missing quote, removing unused import and superfluous semicolon. See [JLS#15](https://github.com/eclipse/eclipse.jdt.ls/issues/15). * bug fix - correct Javadoc highlighting. See [#94](https://github.com/redhat-developer/vscode-java/issues/94) ## 0.0.10 (February 08th, 2017) -* enhancement - Improve intellisense performance. See [#121](https://github.com/redhat-developer/vscode-java/issues/121). -* enhancement - Document server tracing capabilities. See [#145](https://github.com/redhat-developer/vscode-java/issues/145). -* enhancement - Disable reference code lenses with `java.referencesCodeLens.enabled`. See [#148](https://github.com/redhat-developer/vscode-java/issues/148). +* enhancement - improve intellisense performance. See [#121](https://github.com/redhat-developer/vscode-java/issues/121). +* enhancement - document server tracing capabilities. See [#145](https://github.com/redhat-developer/vscode-java/issues/145). +* enhancement - disable reference code lenses with `java.referencesCodeLens.enabled`. See [#148](https://github.com/redhat-developer/vscode-java/issues/148). * bug fix - fix dubious intellisense relevance. See [#142](https://github.com/redhat-developer/vscode-java/issues/142). * bug fix - fix broken autocompletion on constructors. See [#143](https://github.com/redhat-developer/vscode-java/issues/143). * bug fix - fix brackets/parentheses autoclosing. See [#144](https://github.com/redhat-developer/vscode-java/issues/144). ## 0.0.9 (January 16th, 2017) -* enhancement - Autoclose Javadoc statements, adding `*` on new lines. See [#139](https://github.com/redhat-developer/vscode-java/issues/139). +* enhancement - autoclose Javadoc statements, adding `*` on new lines. See [#139](https://github.com/redhat-developer/vscode-java/issues/139). * bug fix - fix Error when `Go to definition` performed on non-code portion. See [#124](https://github.com/redhat-developer/vscode-java/issues/124). * bug fix - fix saving `java.errors.incompleteClasspath.severity` preference. See [#128](https://github.com/redhat-developer/vscode-java/issues/128). * bug fix - fix NPE occurring when clicking on comment section of a Java file. See [#131](https://github.com/redhat-developer/vscode-java/issues/131). * bug fix - fix JAVA_HOME detection on MacOS. See [#134](https://github.com/redhat-developer/vscode-java/issues/134). * bug fix - fix support for quoted VM arguments. See [#135](https://github.com/redhat-developer/vscode-java/issues/135). -* bug fix - Don't display Code Lenses from Lombok-generated code. See [#137](https://github.com/redhat-developer/vscode-java/issues/137). +* bug fix - don't display Code Lenses from Lombok-generated code. See [#137](https://github.com/redhat-developer/vscode-java/issues/137). * bug fix - remove langserver.log file generation under home directory. See [#140](https://github.com/redhat-developer/vscode-java/issues/140). ## 0.0.8 (December 22nd, 2016) -* enhancement - Add basic Java Gradle support (Android not supported). See [#10](https://github.com/redhat-developer/vscode-java/issues/10). -* enhancement - Disable warning about `Incomplete Classpath`. See [#107](https://github.com/redhat-developer/vscode-java/issues/107). +* enhancement - add basic Java Gradle support (Android not supported). See [#10](https://github.com/redhat-developer/vscode-java/issues/10). +* enhancement - disable warning about `Incomplete Classpath`. See [#107](https://github.com/redhat-developer/vscode-java/issues/107). * enhancement - new `Update project configuration` command (`Ctrl+Alt+U` or `Cmd+Alt+U` on MacOS). See [#113](https://github.com/redhat-developer/vscode-java/issues/113). -* enhancement - Automatically update java classpath/configuration on build file change. See [#122](https://github.com/redhat-developer/vscode-java/issues/122). +* enhancement - automatically update java classpath/configuration on build file change. See [#122](https://github.com/redhat-developer/vscode-java/issues/122). * bug fix - fix completion on import statements. See [#68](https://github.com/redhat-developer/vscode-java/issues/68). * bug fix - fix errors when modifying eclipse configuration files. See [#105](https://github.com/redhat-developer/vscode-java/issues/105). * bug fix - fix errors when restoring deleted files from git. See [#109](https://github.com/redhat-developer/vscode-java/issues/109). * bug fix - invalid locations for Workspace-wide errors. See [JLS#107](https://github.com/gorkem/java-language-server/issues/107). ## 0.0.7 (November 23rd, 2016) -* enhancement - Basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). -* enhancement - Start Java Language Server when pom.xml is detected. See [#84](https://github.com/redhat-developer/vscode-java/issues/84). +* enhancement - basic Java support for standalone Java files. See [#27](https://github.com/redhat-developer/vscode-java/issues/27). +* enhancement - start Java Language Server when pom.xml is detected. See [#84](https://github.com/redhat-developer/vscode-java/issues/84). * bug fix - fix out of synch error markers. See [#87](https://github.com/redhat-developer/vscode-java/issues/87) * bug fix - fix missing generic types in autocompletion. See [#69](https://github.com/redhat-developer/vscode-java/issues/69). * bug fix - fix ignored `jdt.ls.vmargs`. See [#88](https://github.com/redhat-developer/vscode-java/pull/88). @@ -182,7 +187,7 @@ ## 0.0.6 (November 1st, 2016) * enhancement - auto-import packages referenced by code complete. See [#50](https://github.com/gorkem/java-language-server/issues/50). * enhancement – report Java errors for all files project in the project. See [58](https://github.com/gorkem/java-language-server/issues/58). -* enhancement – Display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). +* enhancement – display package names on code completion proposals for Types [#47] (https://github.com/gorkem/java-language-server/issues/47). * enhancement - add support for the JDK_HOME environment variable in VS Code settings. See [#65](https://github.com/redhat-developer/vscode-java/issues/65). * enhancement - add Java code snippets. See [#83](https://github.com/redhat-developer/vscode-java/issues/83). * bug fix - fix errors thrown when opening a standalone file. See [#55](https://github.com/redhat-developer/vscode-java/issues/55), [#67](https://github.com/redhat-developer/vscode-java/issues/67). @@ -210,10 +215,10 @@ * bug fix - fix project import reporting progress > 100%. See [JLS#67](https://github.com/gorkem/java-language-server/issues/67). ## 0.0.3 (September 16th, 2016) -* enhancement - In addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). -* enhancement - Go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code -* enhancement - Code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). -* bug fix - Opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). +* enhancement - in addition to maven, we now support basic Eclipse projects. See [JLS#37](https://github.com/gorkem/java-language-server/issues/37). +* enhancement - go to Definition (F12) is enabled for libraries and can display Java code that is not part of project's source code +* enhancement - code complete triggers are added for `.#@` characters. See [#19](https://github.com/redhat-developer/vscode-java/issues/19). +* bug fix - opening a Maven project a 2nd time doesn't work. See [JLS#66](https://github.com/gorkem/java-language-server/issues/66). ## 0.0.2 (September 14th, 2016) * enhancement - download the Java Language Server through HTTPS. From 49d5633448d223659869ec19bf770814b242b8d2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 9 Nov 2017 15:26:02 -0500 Subject: [PATCH 0232/1435] Upversion to 0.15.0 Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 16b91966f..e2960c426 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.14.0", + "version": "0.15.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From c789f2b7187dd076a8de864ff43f855697572952 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Tue, 7 Nov 2017 09:28:43 +0800 Subject: [PATCH 0233/1435] Add package-lock.json file Signed-off-by: Yaohai Zheng --- .travis.yml | 2 +- package-lock.json | 4377 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4378 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/.travis.yml b/.travis.yml index d8d757571..1de77e9f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ sudo: false language: node_js node_js: -- "6" +- "node" matrix: include: diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..6caffe28a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4377 @@ +{ + "name": "java", + "version": "0.14.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/glob": { + "version": "5.0.30", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", + "dev": true, + "requires": { + "@types/minimatch": "3.0.1", + "@types/node": "6.0.90" + } + }, + "@types/minimatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.1.tgz", + "integrity": "sha512-rUO/jz10KRSyA9SHoCWQ8WX9BICyj5jZYu1/ucKEJKb4KzLZCKMURdYbadP157Q6Zl1x0vHsrU+Z/O0XlhYQDw==", + "dev": true + }, + "@types/mocha": { + "version": "2.2.44", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz", + "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==", + "dev": true + }, + "@types/node": { + "version": "6.0.90", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz", + "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==", + "dev": true + }, + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "dev": true, + "requires": { + "file-type": "3.9.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "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.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.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", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "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.2", + "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", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "buffer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "ieee754": "1.1.8", + "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 + } + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "through2": "2.0.3" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.5.4" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.2.5" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.9.1" + } + }, + "deep-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.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": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "1.3.3" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + }, + "dependencies": { + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + } + } + }, + "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.1" + } + }, + "expand-home-dir": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/expand-home-dir/-/expand-home-dir-0.0.3.tgz", + "integrity": "sha1-ct6KBIbMKKO71wRjU5iCW1tign0=" + }, + "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.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "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" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-java-home": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.1.4.tgz", + "integrity": "sha1-7OvcYZFKmJLiPlXoWseYSUW30AI=", + "requires": { + "which": "1.0.9", + "winreg": "1.2.4" + } + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + } + } + }, + "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 + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "dev": true + }, + "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.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "0.1.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "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 + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.1" + } + }, + "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.1" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.4.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "0.5.2" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "0.1.1" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.3.0" + }, + "dependencies": { + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "1.1.0" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "1.0.0", + "chalk": "1.1.3", + "deprecated": "0.0.1", + "gulp-util": "3.0.8", + "interpret": "1.0.4", + "liftoff": "2.3.0", + "minimist": "1.2.0", + "orchestrator": "0.3.8", + "pretty-hrtime": "1.0.3", + "semver": "4.3.6", + "tildify": "1.2.0", + "v8flags": "2.1.1", + "vinyl-fs": "0.3.14" + } + }, + "gulp-chmod": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz", + "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", + "dev": true, + "requires": { + "deep-assign": "1.0.0", + "stat-mode": "0.2.2", + "through2": "2.0.3" + } + }, + "gulp-decompress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-2.0.1.tgz", + "integrity": "sha1-EAKYk66NzSkrO2Ojb8+GFOPSe90=", + "dev": true, + "requires": { + "archive-type": "3.2.0", + "decompress": "4.2.0", + "gulp-util": "3.0.8", + "readable-stream": "2.3.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "gulp-download": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/gulp-download/-/gulp-download-0.0.1.tgz", + "integrity": "sha1-VKMBj8YZs0HM9kkWBvet8L08c5c=", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "request": "2.83.0", + "request-progress": "3.0.0", + "through": "2.3.8" + }, + "dependencies": { + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + } + } + }, + "gulp-filter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.0.1.tgz", + "integrity": "sha512-5olRzAhFdXB2klCu1lnazP65aO9YdA/5WfC9VdInIc8PrUeDIoZfaA3Edb0yUBGhVdHv4eHKL9Fg5tUoEJ9z5A==", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "multimatch": "2.1.0", + "streamfilter": "1.0.5" + } + }, + "gulp-gunzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz", + "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", + "dev": true, + "requires": { + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "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=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "gulp-remote-src": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz", + "integrity": "sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "node.extend": "1.1.6", + "request": "2.79.0", + "through2": "2.0.3", + "vinyl": "2.0.2" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "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 + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.11.0", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "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", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "vinyl": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz", + "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=", + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "is-stream": "1.1.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "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.5.0", + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "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.1" + } + }, + "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.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-symdest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz", + "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "mkdirp": "0.5.1", + "queue": "3.1.0", + "vinyl-fs": "2.4.4" + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "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=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "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.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.3", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + } + } + } + }, + "gulp-tslint": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.2.tgz", + "integrity": "sha512-0RNGqbp2TKPdbG+sWU3mNMXEMuF/noY1KS4+jd5lOStkvuFINkFL29dHX3IT1u+vVFD4Glwf+lkcdR2QMVNMzA==", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "map-stream": "0.0.7", + "through": "2.3.8" + } + }, + "gulp-untar": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.6.tgz", + "integrity": "sha1-1r3v3n6ajgVMnxYjhaB4LEvnQAA=", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "gulp-util": "3.0.8", + "streamifier": "0.1.1", + "tar": "2.2.1", + "through2": "2.0.3" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + } + }, + "gulp-vinyl-zip": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.0.tgz", + "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "queue": "4.4.2", + "through2": "2.0.3", + "vinyl": "2.1.0", + "vinyl-fs": "2.4.4", + "yauzl": "2.9.1", + "yazl": "2.4.3" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "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 + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "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=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.3" + } + }, + "queue": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", + "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.3", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "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.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.3.0", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "interpret": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "dev": true + }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true, + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-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": "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" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "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.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true, + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-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=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "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", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "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" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "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.6" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.5.0" + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "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.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "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.3.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "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.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "dev": true + }, + "node.extend": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", + "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", + "dev": true, + "requires": { + "is": "3.2.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.0.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "dev": true, + "requires": { + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, + "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.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + }, + "queue": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", + "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.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.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.5.0" + } + }, + "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-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "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", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "2.8.1" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamfilter": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.5.tgz", + "integrity": "sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "streamifier": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", + "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" + } + }, + "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" + }, + "dependencies": { + "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.1" + } + } + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-stream": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.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": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.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.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "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=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tslib": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", + "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", + "dev": true + }, + "tslint": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz", + "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.0", + "commander": "2.11.0", + "diff": "3.2.0", + "glob": "7.1.2", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.4.1", + "tslib": "1.8.0", + "tsutils": "2.12.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "tsutils": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.2.tgz", + "integrity": "sha1-rVikhl0X7D3bZjG2ylO+FKVlb/M=", + "dev": true, + "requires": { + "tslib": "1.8.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "typescript": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", + "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", + "dev": true + }, + "unbzip2-stream": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", + "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "dev": true, + "requires": { + "buffer": "3.6.0", + "through": "2.3.8" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "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=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "vinyl-source-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz", + "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=", + "dev": true, + "requires": { + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "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=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "vscode": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.6.tgz", + "integrity": "sha1-Ru0a+iwbnWifY5TI8WvR1xkPdfs=", + "dev": true, + "requires": { + "glob": "7.1.2", + "gulp-chmod": "2.0.0", + "gulp-filter": "5.0.1", + "gulp-gunzip": "1.0.0", + "gulp-remote-src": "0.4.3", + "gulp-symdest": "1.1.0", + "gulp-untar": "0.0.6", + "gulp-vinyl-zip": "2.1.0", + "mocha": "4.0.1", + "request": "2.83.0", + "semver": "5.4.1", + "source-map-support": "0.5.0", + "url-parse": "1.2.0", + "vinyl-source-stream": "1.1.0" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "mocha": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", + "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "vscode-jsonrpc": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.4.1.tgz", + "integrity": "sha1-4uC54SH3GitUSAWKNKOu+DdqXpE=" + }, + "vscode-languageclient": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.4.5.tgz", + "integrity": "sha1-YjAHKrB3IIXQm0j5m3nnxCHd+7c=", + "requires": { + "vscode-languageserver-protocol": "3.4.4" + } + }, + "vscode-languageserver-protocol": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.4.4.tgz", + "integrity": "sha1-A4e7Sb0PgF6QSMaVmX29Qw1uyig=", + "requires": { + "vscode-jsonrpc": "3.4.1", + "vscode-languageserver-types": "3.4.0" + } + }, + "vscode-languageserver-types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.4.0.tgz", + "integrity": "sha1-UEOuR+5KwWrwe7PQylYSNeDA0vo=" + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=" + }, + "winreg": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", + "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "fd-slicer": "1.0.1" + } + }, + "yazl": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz", + "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13" + } + } + } +} From 2ae50afa02081e0f05b9da144da26351fe159544 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 10 Nov 2017 10:54:07 -0500 Subject: [PATCH 0234/1435] Update version in package-lock.json Signed-off-by: Fred Bricon --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 6caffe28a..2d8263360 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.14.0", + "version": "0.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { From dba81dffa53632f655761089ff9a3bd534d95d25 Mon Sep 17 00:00:00 2001 From: Xuan Zhou Date: Sat, 18 Nov 2017 05:32:40 +0800 Subject: [PATCH 0235/1435] Add option to choose full compile/incremental compile (#364) Signed-off-by: xuzho --- src/extension.ts | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 6edcd4903..a16261b08 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -179,31 +179,25 @@ export function activate(context: ExtensionContext) { return languageClient.sendRequest(ExecuteCommandRequest.type, params); }); - commands.registerCommand(Commands.COMPILE_WORKSPACE, () => { - return window.withProgress({ location: ProgressLocation.Window }, p => { + commands.registerCommand(Commands.COMPILE_WORKSPACE, (isFullCompile : boolean) => { + return window.withProgress({ location: ProgressLocation.Window }, async p => { + if (typeof isFullCompile !== 'boolean') { + const selection = await window.showQuickPick(['Incremental', 'Full'], {'placeHolder' : 'please choose compile type:'}); + isFullCompile = selection !== 'Incremental'; + } + p.report({ message: 'Compiling workspace...' }); + const start = new Date().getTime(); + const res = await languageClient.sendRequest(CompileWorkspaceRequest.type, isFullCompile); + const elapsed = new Date().getTime() - start; + const humanVisibleDelay = elapsed < 1000? 1000:0; return new Promise((resolve, reject) => { - p.report({ message: 'Compiling workspace...' }); - const start = new Date().getTime(); - languageClient.sendRequest(CompileWorkspaceRequest.type, true).then((s: CompileWorkspaceStatus) => { - const elapsed = new Date().getTime() - start; - const humanVisibleDelay = elapsed < 1000? 1000:0; - setTimeout(function () { // set a timeout so user would still see the message when build time is short - switch (s) { - case CompileWorkspaceStatus.CANCELLED: - reject(s); - break; - case CompileWorkspaceStatus.FAILED: - reject(s); - break; - case CompileWorkspaceStatus.WITHERROR: - reject(s); - break; - case CompileWorkspaceStatus.SUCCEED: - resolve(s); - break; - } - }, humanVisibleDelay); - }); + setTimeout(() => { // set a timeout so user would still see the message when build time is short + if (res === CompileWorkspaceStatus.SUCCEED) { + resolve(res); + } else { + reject(res); + } + }, humanVisibleDelay); }); }); }) From 883b870b38a4fbf38842dd65e2130a6f1ab9ed83 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 17 Nov 2017 16:49:17 -0500 Subject: [PATCH 0236/1435] Copy vscode region folding patterns This immediately fixes the issue in #369, but region patterns will be removed in vscode-java 0.16.0, to avoid duplication. Signed-off-by: Fred Bricon --- language-configuration.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language-configuration.json b/language-configuration.json index 45643733d..db8f7671d 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -77,8 +77,8 @@ ], "folding": { "markers": { - "start": "^\\s*//\\s*(#?region)|())" } } } \ No newline at end of file From ec4d005b48bc7ffeb36c2a1546ee5a59a080dba1 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Fri, 24 Nov 2017 19:15:32 +0000 Subject: [PATCH 0237/1435] Add Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8a5f20c7b..9c643e0bd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ Language support for Java ™ for Visual Studio Code ===================== + +[![Join the chat at https://gitter.im/redhat-developer/vscode-java](https://badges.gitter.im/redhat-developer/vscode-java.svg)](https://gitter.im/redhat-developer/vscode-java?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/redhat-developer/vscode-java.svg?branch=master)](https://travis-ci.org/redhat-developer/vscode-java) [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/redhat.java.svg "Current Release")](https://marketplace.visualstudio.com/items?itemName=redhat.java) Provides Java ™ language support via From d18fe252907ddec460c3f8cca03d780b1a8a121e Mon Sep 17 00:00:00 2001 From: Snjeza Date: Mon, 27 Nov 2017 17:26:22 +0100 Subject: [PATCH 0238/1435] config 'java.import.exclusions' should be a real array not a string (#378) Signed-off-by: Snjezana Peco --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e2960c426..e3dd87609 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "java.import.exclusions": { "type": "array", "description": "Configure glob patterns for excluding folders", - "default": "['**/node_modules', '**/.metadata', '**/archetype-resources']", + "default": ["**/node_modules", "**/.metadata", "**/archetype-resources"], "scope": "window" }, "java.contentProvider.preferred": { From 0655718836c94add9da32bcb1130ca5c0b52ed77 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 28 Nov 2017 08:56:14 -0500 Subject: [PATCH 0239/1435] Add link to new twitter account --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c643e0bd..9d229b5da 100644 --- a/README.md +++ b/README.md @@ -98,8 +98,9 @@ Also, you can contribute your own VSCode extension to enhance the existing featu Feedback =============== -* File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues). -* [Tweet](https://twitter.com/GorkemErcan) [us](https://twitter.com/fbricon) with other feedback. +* File a bug in [GitHub Issues](https://github.com/redhat-developer/vscode-java/issues), +* Chat with us on [Gitter](https://gitter.im/redhat-developer/vscode-java), +* [Tweet us](https://twitter.com/VSCodeJava/) with other feedback. License From 14854899d23ff00af261a9fe3087f615c7ab8c43 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Nov 2017 15:25:01 -0500 Subject: [PATCH 0240/1435] Changelog for the 0.15.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bab267f5e..f7a4ed17d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Change Log +## 0.15.0 (November 30th, 2017) +* enhancement - add Java 9 support for Gradle projects. See [#321](https://github.com/redhat-developer/vscode-java/issues/321). +* enhancement - add option to choose between full and incremental compilation. See [#364](https://github.com/redhat-developer/vscode-java/pull/364). +* enhancement - improve code completion/diagnostic reports performance. See [#381](https://github.com/redhat-developer/vscode-java/issues/381). +* enhancement - log errors when compiling standalone java files. See [#462](https://github.com/eclipse/eclipse.jdt.ls/pull/462). +* enhancement - code action: remove unused code. See [JLS#448](https://github.com/eclipse/eclipse.jdt.ls/issues/448). +* enhancement - code action: change return type of a method. See [JLS#435](https://github.com/eclipse/eclipse.jdt.ls/issues/435). +* enhancement - **significantly faster** startup for existing workspaces with Gradle projects. See[JLS#451](https://github.com/eclipse/eclipse.jdt.ls/issues/451). +* enhancement - delay symbols queries until server is ready. See [JLS#452](https://github.com/eclipse/eclipse.jdt.ls/issues/452). +* bug fix - fixed duplicate imports on "Organize imports" action. See [#253](https://github.com/redhat-developer/vscode-java/issues/253). +* bug fix - fixed autocompletion overwriting the following characters. See [#352](https://github.com/redhat-developer/vscode-java/issues/352). +* bug fix - do not report errors for Java files outside their project's classpath. See [#456](https://github.com/eclipse/eclipse.jdt.ls/pull/456). +* bug fix - fixed high CPU usage on Windows. See [JLS#378](https://github.com/eclipse/eclipse.jdt.ls/issues/378). +* bug fix - return SymbolKind.Method instead of SymbolKind.Function for methods. See [JLS#422](https://github.com/eclipse/eclipse.jdt.ls/issues/422). +* bug fix - fixed java extensions started twice. See [JLS#450](https://github.com/eclipse/eclipse.jdt.ls/issues/450). +* bug fix - fixed NPEs occurring during code action computation. See [JLS#453](https://github.com/eclipse/eclipse.jdt.ls/issues/453) and [JLS#470](https://github.com/eclipse/eclipse.jdt.ls/issues/470) . + ## 0.14.0 (November 9th, 2017) * enhancement - add CodeLens support from .class files. See [#343](https://github.com/redhat-developer/vscode-java/issues/343). * enhancement - new multi-root support. See [#347](https://github.com/redhat-developer/vscode-java/pull/347). @@ -8,7 +25,7 @@ ## 0.13.0 (November 2nd, 2017) * enhancement - new `Force Java compilation` command (`Shift+Alt+b`). See [#277](https://github.com/redhat-developer/vscode-java/issues/277). -* enhancement - **significantly faster** startup for existing workspaces. See [#336](https://github.com/redhat-developer/vscode-java/issues/336). +* enhancement - **significantly faster** startup for existing workspaces with Maven projects. See [#336](https://github.com/redhat-developer/vscode-java/issues/336). * enhancement - new `Organize Imports` command (`Shift+Alt+o`). See [#341](https://github.com/redhat-developer/vscode-java/pull/341). * bug fix - fixed highlight support in `module-info.java`. See [#256](https://github.com/redhat-developer/vscode-java/issues/256). * bug fix - fixed inner pom.xml changes causing infinite update project loop. See [#331](https://github.com/redhat-developer/vscode-java/issues/331). From da54ad1023469dfc2692dfaf56fa509a709b691d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 30 Nov 2017 20:28:56 -0500 Subject: [PATCH 0241/1435] Upversion to 0.16.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a4ed17d..718224d40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.16.0 (TBD) + ## 0.15.0 (November 30th, 2017) * enhancement - add Java 9 support for Gradle projects. See [#321](https://github.com/redhat-developer/vscode-java/issues/321). * enhancement - add option to choose between full and incremental compilation. See [#364](https://github.com/redhat-developer/vscode-java/pull/364). diff --git a/package.json b/package.json index e3dd87609..11fb9c902 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.15.0", + "version": "0.16.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 3c0a46b8cc7684300b7fe3e456eff3cbb70770ce Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 1 Dec 2017 09:47:12 -0500 Subject: [PATCH 0242/1435] Remove unnecessary region support ...since this is now provided by upstream VSCode. Fixes #369 Signed-off-by: Fred Bricon --- language-configuration.json | 8 +------- snippets/java.json | 14 -------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/language-configuration.json b/language-configuration.json index db8f7671d..bf48f2fc8 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -74,11 +74,5 @@ "<", ">" ] - ], - "folding": { - "markers": { - "start": "^\\s*//\\s*(?:(?:#?region\\b)|(?:))" - } - } + ] } \ No newline at end of file diff --git a/snippets/java.json b/snippets/java.json index 1747b775d..11fb81718 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -190,19 +190,5 @@ "} while (${1:condition});" ], "description": "Do-While Statement" - }, - "Region Start": { - "prefix": "#region", - "body": [ - "//#region $0" - ], - "description": "Folding Region Start" - }, - "Region End": { - "prefix": "#endregion", - "body": [ - "//#endregion" - ], - "description": "Folding Region End" } } \ No newline at end of file From 36f593079f6ef176d56ea31a878908d1fbe422f5 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 12 Dec 2017 23:13:24 +0100 Subject: [PATCH 0243/1435] Provide mechanism to disable buildship Signed-off-by: Snjezana Peco --- README.md | 2 ++ package.json | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/README.md b/README.md index 9d229b5da..ee074c006 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,8 @@ The following settings are supported: * `java.signatureHelp.enabled` : Enable/disable signature help support (triggered on `(`). * `java.format.enabled` : Enable/disable the default Java formatter. * `java.contentProvider.preferred` : Preferred content provider (see 3rd party decompilers available in [vscode-java-decompiler](https://github.com/dgileadi/vscode-java-decompiler)). +* `java.import.gradle.enabled` : Enable/disable the Gradle importer. +* `java.import.maven.enabled` : Enable/disable the Maven importer. Troubleshooting =============== diff --git a/package.json b/package.json index 11fb9c902..cec79c018 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,18 @@ "description": "Traces the communication between VS Code and the Java language server.", "scope": "window" }, + "java.import.gradle.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the Gradle importer.", + "scope": "window" + }, + "java.import.maven.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the Maven importer.", + "scope": "window" + }, "java.referencesCodeLens.enabled": { "type": "boolean", "default": false, From 820ee7ce9b3c555a941088f4853bf00acb8490d5 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Sun, 10 Dec 2017 21:01:37 -0500 Subject: [PATCH 0244/1435] clean up tslint errors Adds new tslint rules and fixes the existing problems --- src/extension.ts | 11 +++++------ src/javaServerStarter.ts | 12 ++++++------ src/requirements.ts | 10 +++++----- tslint.json | 11 ++++++++--- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index a16261b08..9cefd1d3e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,16 +1,15 @@ - 'use strict'; import * as path from 'path'; +import * as os from 'os'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; -import { collectionJavaExtensions } from './plugin' +import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus } from './protocol'; -let os = require('os'); let oldConfig; let lastStatus; @@ -150,7 +149,7 @@ export function activate(context: ExtensionContext) { commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore')); commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { - commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')) + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')); }); commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); @@ -175,7 +174,7 @@ export function activate(context: ExtensionContext) { const params: ExecuteCommandParams = { command, arguments: rest - } + }; return languageClient.sendRequest(ExecuteCommandRequest.type, params); }); @@ -200,7 +199,7 @@ export function activate(context: ExtensionContext) { }, humanVisibleDelay); }); }); - }) + }); window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 5119c00eb..6f7b70eb0 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -1,13 +1,13 @@ -import { window, commands, WorkspaceConfiguration, workspace } from 'vscode' -import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; -import { createClientPipeTransport } from 'vscode-jsonrpc'; -import { RequirementsData } from './requirements'; import * as path from 'path'; import * as fs from 'fs'; import * as net from 'net'; +import * as glob from 'glob'; +import { window, commands, WorkspaceConfiguration, workspace } from 'vscode'; +import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; +import { createClientPipeTransport } from 'vscode-jsonrpc'; +import { RequirementsData } from './requirements'; import { Commands } from './commands'; -const glob = require('glob'); declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); @@ -89,7 +89,7 @@ function startedInDebugMode(): boolean { let args = (process as any).execArgv; if (args) { return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg) || /^--inspect-brk=?/.test(arg)); - }; + } return false; } diff --git a/src/requirements.ts b/src/requirements.ts index cb5f7a8ad..e62afaf37 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -3,10 +3,10 @@ import { workspace, Uri } from 'vscode'; import * as cp from 'child_process'; import * as path from 'path'; +import * as pathExists from 'path-exists'; +import * as expandHomeDir from 'expand-home-dir'; +import * as findJavaHome from 'find-java-home'; -const pathExists = require('path-exists'); -const expandHomeDir = require('expand-home-dir'); -const findJavaHome = require('find-java-home'); const isWindows = process.platform.indexOf('win') === 0; const JAVAC_FILENAME = 'javac' + (isWindows?'.exe':''); @@ -90,7 +90,7 @@ function checkJavaVersion(java_home: string): Promise { } export function parseMajorVersion(content:string):number { - let regexp = /version "(.*)"/g + let regexp = /version "(.*)"/g; let match = regexp.exec(content); if (!match) { return 0; @@ -102,7 +102,7 @@ export function parseMajorVersion(content:string):number { } //look into the interesting bits now - regexp = /\d+/g + regexp = /\d+/g; match = regexp.exec(version); let javaVersion = 0; if (match) { diff --git a/tslint.json b/tslint.json index bd96fdfd4..8f366acbe 100644 --- a/tslint.json +++ b/tslint.json @@ -5,13 +5,18 @@ "no-unused-variable": true, "curly": true, "class-name": true, - "semicolon": ["always"], + "semicolon": true, "triple-equals": true, "quotemark": [true, "single", "avoid-escape"], - "no-console": ["log","error"], "no-debugger": true, "no-empty": true, "no-var-keyword": true, - "no-unsafe-finally": true + "no-unsafe-finally": true, + "new-parens":true, + "no-duplicate-imports": true, + "deprecation":true, + "no-unsafe-any":true, + "no-string-throw":true, + "no-require-imports": true } } From 56b785d489b9fb1c11d73c8f01db4a203dc1176e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Dec 2017 11:48:15 -0500 Subject: [PATCH 0245/1435] Update changelog for the 0.16.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 718224d40..34fd3d5b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log -## 0.16.0 (TBD) +## 0.16.0 (December 15th, 2017) +* bug fix - fixed renaming/creating java files requireing a restart. See [#380](https://github.com/redhat-developer/vscode-java/issues/380). +* bug fix - fixed `-DGRADLE_HOME` parameter being ignored by jdt.ls. See [#383](https://github.com/redhat-developer/vscode-java/issues/383). +* task - removed region folding support as it's now provided by VS Code directly. See [#369](https://github.com/redhat-developer/vscode-java/issues/369). ## 0.15.0 (November 30th, 2017) * enhancement - add Java 9 support for Gradle projects. See [#321](https://github.com/redhat-developer/vscode-java/issues/321). From 7600dd89f957d122bc8fdaf50024acb36e6a7de7 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Dec 2017 14:08:16 -0500 Subject: [PATCH 0246/1435] Update changelog for the 0.16.0 release, take 2 Signed-off-by: Fred Bricon --- CHANGELOG.md | 6 ++++-- README.md | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34fd3d5b9..8046c3fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,10 @@ # Change Log ## 0.16.0 (December 15th, 2017) -* bug fix - fixed renaming/creating java files requireing a restart. See [#380](https://github.com/redhat-developer/vscode-java/issues/380). -* bug fix - fixed `-DGRADLE_HOME` parameter being ignored by jdt.ls. See [#383](https://github.com/redhat-developer/vscode-java/issues/383). +* enhancement - add preferences to disable Maven (`java.import.maven.enabled`) and Gradle (`java.import.gradle.enabled`) imports (import as Eclipse instead). See [#388](https://github.com/redhat-developer/vscode-java/pull/388). +* bug fix - fixed `java.import.exclusions` preference should be a real array. See [#371](https://github.com/redhat-developer/vscode-java/issues/371). +* bug fix - fixed renaming/creating java files requiring a restart. See [#380](https://github.com/redhat-developer/vscode-java/issues/380). +* bug fix - fixed `-DGRADLE_HOME` parameter in `java.jdt.ls.vmargs` being ignored by jdt.ls. See [#383](https://github.com/redhat-developer/vscode-java/issues/383). * task - removed region folding support as it's now provided by VS Code directly. See [#369](https://github.com/redhat-developer/vscode-java/issues/369). ## 0.15.0 (November 30th, 2017) diff --git a/README.md b/README.md index ee074c006..3018a7e33 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ Provides Java ™ language support via Quick Start ============ 1. Install the Extension -2. If you do not have a _Java 8_ Development Kit correctly [set](#setting-the-jdk) - * Download and install a Java 8 compatible development kit. +2. If you do not have a _Java_ Development Kit correctly [set](#setting-the-jdk) + * Download and install a Java 8 or 9 compatible development kit. 3. Extension is activated when you first access a Java file * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy. From 8a08f3c2d989c2da88a085a86e0ebc589e9d50c5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Dec 2017 14:15:39 -0500 Subject: [PATCH 0247/1435] Update changelog for the 0.16.0 release, take 3 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8046c3fc1..336587157 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 0.16.0 (December 15th, 2017) * enhancement - add preferences to disable Maven (`java.import.maven.enabled`) and Gradle (`java.import.gradle.enabled`) imports (import as Eclipse instead). See [#388](https://github.com/redhat-developer/vscode-java/pull/388). +* enhancement - remove redundant diagnostics reports. See [JLS#468](https://github.com/eclipse/eclipse.jdt.ls/issues/468). +* enhancement - code action: handle unreachable catch blocks. See [JLS#381](https://github.com/eclipse/eclipse.jdt.ls/pull/481). * bug fix - fixed `java.import.exclusions` preference should be a real array. See [#371](https://github.com/redhat-developer/vscode-java/issues/371). * bug fix - fixed renaming/creating java files requiring a restart. See [#380](https://github.com/redhat-developer/vscode-java/issues/380). * bug fix - fixed `-DGRADLE_HOME` parameter in `java.jdt.ls.vmargs` being ignored by jdt.ls. See [#383](https://github.com/redhat-developer/vscode-java/issues/383). From 2220f95613d9022adac0079d5c61a4f067f05436 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 15 Dec 2017 16:03:50 -0500 Subject: [PATCH 0248/1435] Upversion to 0.17.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2d8263360..1d02f4968 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.15.0", + "version": "0.17.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index cec79c018..810fc135c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.16.0", + "version": "0.17.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 12573e1365e217af66f0ee3a751294e125ef5895 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 9 Jan 2018 15:04:57 -0500 Subject: [PATCH 0249/1435] Add template to create a new Object Signed-off-by: Fred Bricon --- snippets/java.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/snippets/java.json b/snippets/java.json index 11fb81718..9801c118e 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -190,5 +190,12 @@ "} while (${1:condition});" ], "description": "Do-While Statement" + }, + "newObject": { + "prefix": "new", + "body": [ + "${1:Object} ${2:foo} = new ${1:Object}();" + ], + "description": "Create new Object" } } \ No newline at end of file From 8f8be1dad2dcad3ba63e7f8692ac65530dbd8a8e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 16 Jan 2018 17:20:32 -0500 Subject: [PATCH 0250/1435] Changelog for the 0.17.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 336587157..ac3752d9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.17.0 (January 16th, 2018) +* enhancement - code-action: add missing serialVersionUID field. See [#401](https://github.com/redhat-developer/vscode-java/issues/401). +* enhancement - add `new` template to create a new Object. See [#407](https://github.com/redhat-developer/vscode-java/pull/407). +* bug fix - fixed autocompletion issues caused by changing the JDK used to run the server. See [#392](https://github.com/redhat-developer/vscode-java/issues/392). +* bug fix - fixed encoding issues when saving UTF-8 files containing Chinese characters. See [#394](https://github.com/redhat-developer/vscode-java/issues/394). +* bug fix - fixed server startup status never ending after an error. See [#403](https://github.com/redhat-developer/vscode-java/issues/403). + + ## 0.16.0 (December 15th, 2017) * enhancement - add preferences to disable Maven (`java.import.maven.enabled`) and Gradle (`java.import.gradle.enabled`) imports (import as Eclipse instead). See [#388](https://github.com/redhat-developer/vscode-java/pull/388). * enhancement - remove redundant diagnostics reports. See [JLS#468](https://github.com/eclipse/eclipse.jdt.ls/issues/468). From f7e7c9ed1dfda70b4c0ff7403d1d3372f1eaca4d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 17 Jan 2018 09:54:05 -0500 Subject: [PATCH 0251/1435] Upversion to 0.18.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac3752d9e..47fc5c6e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.18.0 (TBD) + ## 0.17.0 (January 16th, 2018) * enhancement - code-action: add missing serialVersionUID field. See [#401](https://github.com/redhat-developer/vscode-java/issues/401). * enhancement - add `new` template to create a new Object. See [#407](https://github.com/redhat-developer/vscode-java/pull/407). diff --git a/package-lock.json b/package-lock.json index 1d02f4968..424af02ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.17.0", + "version": "0.18.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 810fc135c..5b7ccf009 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.17.0", + "version": "0.18.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 7793516ec8414aea59a7ef248bfc10937ae8a694 Mon Sep 17 00:00:00 2001 From: btstream Date: Wed, 17 Jan 2018 09:29:06 -0600 Subject: [PATCH 0252/1435] Add auto organize imports action to save action. (#402) Signed-off-by: Zichen Liu --- package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package.json b/package.json index 5b7ccf009..7f755c303 100644 --- a/package.json +++ b/package.json @@ -153,6 +153,12 @@ "description": "Enable/disable default Java formatter", "scope": "window" }, + "java.saveActions.organizeImports": { + "type": "boolean", + "default": false, + "description": "Enable/disable auto organize imports on save action", + "scope": "window" + }, "java.import.exclusions": { "type": "array", "description": "Configure glob patterns for excluding folders", From dd0aa6e9daad7cd73713cd849ae72ca99b7494d7 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Thu, 18 Jan 2018 20:50:57 +0100 Subject: [PATCH 0253/1435] Provide an option to disable the 'auto build' Signed-off-by: Snjezana Peco --- README.md | 1 + package.json | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index 3018a7e33..9ae829b76 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ The following settings are supported: * `java.contentProvider.preferred` : Preferred content provider (see 3rd party decompilers available in [vscode-java-decompiler](https://github.com/dgileadi/vscode-java-decompiler)). * `java.import.gradle.enabled` : Enable/disable the Gradle importer. * `java.import.maven.enabled` : Enable/disable the Maven importer. +* `java.autobuild.enabled` : Enable/disable the 'auto build'. Troubleshooting =============== diff --git a/package.json b/package.json index 7f755c303..883a30818 100644 --- a/package.json +++ b/package.json @@ -170,6 +170,12 @@ "description": "Preferred content provider (a 3rd party decompiler id, usually)", "default": null, "scope": "window" + }, + "java.autobuild.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the 'auto build'", + "scope": "window" } } }, From f8aec8f1cc79f969e6197918955bd7406c25c1fc Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 30 Jan 2018 02:38:46 +0100 Subject: [PATCH 0254/1435] Favorite imports Signed-off-by: Snjezana Peco --- README.md | 1 + package.json | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/README.md b/README.md index 9ae829b76..aae6decd9 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ The following settings are supported: * `java.import.gradle.enabled` : Enable/disable the Gradle importer. * `java.import.maven.enabled` : Enable/disable the Maven importer. * `java.autobuild.enabled` : Enable/disable the 'auto build'. +* `java.completion.favoriteStaticMembers` : Define a list of static members or types with static members. Troubleshooting =============== diff --git a/package.json b/package.json index 883a30818..a0466fb6a 100644 --- a/package.json +++ b/package.json @@ -176,6 +176,19 @@ "default": true, "description": "Enable/disable the 'auto build'", "scope": "window" + }, + "java.completion.favoriteStaticMembers": { + "type": "array", + "description": "Define a list of static members or types with static members. Content assist will propose those static members even if the import is missing.", + "default": [ + "org.junit.Assert.*", + "org.junit.Assume.*", + "org.junit.jupiter.api.Assertions.*", + "org.junit.jupiter.api.Assumptions.*", + "org.junit.jupiter.api.DynamicContainer.*", + "org.junit.jupiter.api.DynamicTest.*" + ], + "scope": "window" } } }, From 65d322a6bf42315a659b717847c602b67973b6ed Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 30 Jan 2018 02:31:46 +0100 Subject: [PATCH 0255/1435] Add the java.completion.importOrder property Signed-off-by: Snjezana Peco --- README.md | 3 ++- package.json | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aae6decd9..1a296d90e 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,8 @@ The following settings are supported: * `java.import.gradle.enabled` : Enable/disable the Gradle importer. * `java.import.maven.enabled` : Enable/disable the Maven importer. * `java.autobuild.enabled` : Enable/disable the 'auto build'. -* `java.completion.favoriteStaticMembers` : Define a list of static members or types with static members. +* `java.completion.favoriteStaticMembers` : Defines a list of static members or types with static members. +* `java.completion.importOrder` : Defines the sorting order of import statements. Troubleshooting =============== diff --git a/package.json b/package.json index a0466fb6a..e77b3c00a 100644 --- a/package.json +++ b/package.json @@ -179,7 +179,7 @@ }, "java.completion.favoriteStaticMembers": { "type": "array", - "description": "Define a list of static members or types with static members. Content assist will propose those static members even if the import is missing.", + "description": "Defines a list of static members or types with static members. Content assist will propose those static members even if the import is missing.", "default": [ "org.junit.Assert.*", "org.junit.Assume.*", @@ -189,6 +189,12 @@ "org.junit.jupiter.api.DynamicTest.*" ], "scope": "window" + }, + "java.completion.importOrder": { + "type": "array", + "description": "Defines the sorting order of import statements. A package or type name prefix (e.g. 'org.eclipse') is a valid entry. An import is always added to the most specific group.", + "default": ["java", "javax", "com", "org"], + "scope": "window" } } }, From ce007c59e12bcfc4c55a5dd26a2051799c403397 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 31 Jan 2018 09:55:48 -0500 Subject: [PATCH 0256/1435] Changelog for the 0.18.0 release --- CHANGELOG.md | 10 +++++++++- README.md | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47fc5c6e6..fbadfcc21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log -## 0.18.0 (TBD) +## 0.18.0 (January 31st, 2018) +* enhancement - New `java.completion.favoriteStaticMembers` preference to define static members to be automatically imported. See [#368](https://github.com/redhat-developer/vscode-java/issues/368). +* enhancement - Store method parameters in compiled classes, for Maven projects configured with the `-parameters` compiler parameter. See [#391](https://github.com/redhat-developer/vscode-java/issues/391). +* enhancement - New `java.saveActions.organizeImports` preference to enable `Organize imports` as a save action. See [#402](https://github.com/redhat-developer/vscode-java/pull/402). +* enhancement - New `java.autobuild.enabled` preference to enable/disable the 'auto build'. See [#406](https://github.com/redhat-developer/vscode-java/issues/406). +* enhancement - New `java.completion.importOrder` preference to customize imports order. See [#420](https://github.com/redhat-developer/vscode-java/issues/420). +* bug - fix hover/navigation for types in module-info.java. See [JLS#397](https://github.com/eclipse/eclipse.jdt.ls/issues/397). +* bug - **fix proper test classpath isolation**. Test classes are no longer available to main code for Maven and pure Eclipse projects. See [JLS#526](https://github.com/eclipse/eclipse.jdt.ls/issues/526). +* bug - fix autocompletion/hover performance for Java 9 projects. See [#398](https://github.com/redhat-developer/vscode-java/issues/398). ## 0.17.0 (January 16th, 2018) * enhancement - code-action: add missing serialVersionUID field. See [#401](https://github.com/redhat-developer/vscode-java/issues/401). diff --git a/README.md b/README.md index 1a296d90e..50f62036d 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Features * Code completion * Code actions * Javadoc hovers +* Organize imports * Type search * Code outline * Code navigation @@ -53,7 +54,7 @@ Available commands ========================== The following commands are available: - `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. -- `Java:Open Java Language Server log file` (since 0.4.0): opens the Java Language Server log file, useful for troubleshooting problems. +- `Java:Open Java Language Server log file`: opens the Java Language Server log file, useful for troubleshooting problems. - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. From 58a9f95c95f8abc51756ba2dc39d0a6c56f60b6d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 31 Jan 2018 22:45:58 -0500 Subject: [PATCH 0257/1435] Upversion to 0.18.1 --- CHANGELOG.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbadfcc21..30b218531 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.18.1 (January 31st, 2018) +* bug - Restore missing "Add unimplemented methods" code action. See [#426](https://github.com/redhat-developer/vscode-java/issues/426). + ## 0.18.0 (January 31st, 2018) * enhancement - New `java.completion.favoriteStaticMembers` preference to define static members to be automatically imported. See [#368](https://github.com/redhat-developer/vscode-java/issues/368). * enhancement - Store method parameters in compiled classes, for Maven projects configured with the `-parameters` compiler parameter. See [#391](https://github.com/redhat-developer/vscode-java/issues/391). diff --git a/package.json b/package.json index e77b3c00a..de207ae07 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.18.0", + "version": "0.18.1", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 2b7aa3727b2a8bff6143c52e490961007617382c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 2 Feb 2018 15:07:32 -0500 Subject: [PATCH 0258/1435] Upversion to 0.19.0 --- CHANGELOG.md | 3 +++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30b218531..d22604435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.19.0 (TBD) + + ## 0.18.1 (January 31st, 2018) * bug - Restore missing "Add unimplemented methods" code action. See [#426](https://github.com/redhat-developer/vscode-java/issues/426). diff --git a/package-lock.json b/package-lock.json index 424af02ac..80e0543bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.18.0", + "version": "0.19.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index de207ae07..916134ee3 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.18.1", + "version": "0.19.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 43c2af5ffc5a43c19bb2330b50d6fc865f3049b8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 2 Feb 2018 16:50:46 -0500 Subject: [PATCH 0259/1435] Use void as default return value for method templates Signed-off-by: Fred Bricon --- snippets/java.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index 9801c118e..f0f2a0750 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -117,7 +117,7 @@ "private_method": { "prefix": "private_method", "body": [ - "private ${1:Type} ${2:name}($3) {", + "private ${1:void} ${2:name}($3) {", "\t$4", "}" ], @@ -126,7 +126,7 @@ "Public method": { "prefix": "public_method", "body": [ - "public ${1:Type} ${2:name}(${3}) {", + "public ${1:void} ${2:name}(${3}) {", "\t$4", "}" ], @@ -144,7 +144,7 @@ "Public static method": { "prefix": "public_static_method", "body": [ - "public static ${1:Type} ${2:name}(${3}) {", + "public static ${1:void} ${2:name}(${3}) {", "\t$4", "}" ], @@ -153,7 +153,7 @@ "Protected Method": { "prefix": "protected_method", "body": [ - "protected ${1:Type} ${2:name}(${3}) {", + "protected ${1:void} ${2:name}(${3}) {", "\t$4", "}" ], From e2acaa0a1a5f44fb222c00e00d3afc4da3a4c68a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 5 Feb 2018 18:46:19 -0500 Subject: [PATCH 0260/1435] Add java.projectConfiguration.update command to explorer & editor menus, on build files Requires vscode 1.20. Fixes #159 Signed-off-by: Fred Bricon --- package.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 916134ee3..4dd724fac 100644 --- a/package.json +++ b/package.json @@ -237,11 +237,23 @@ } ], "menus": { + "explorer/context": [ + { + "command": "java.projectConfiguration.update", + "when": "resourceFilename =~ /(.*\\.gradle)|(pom.xml)$/", + "group": "1_javaactions" + } + ], "editor/context": [ { "command": "java.edit.organizeImports", "when": "resourceLangId == java", - "group": "1_modification" + "group": "1_javaactions" + }, + { + "command": "java.projectConfiguration.update", + "when": "resourceFilename =~ /(.*\\.gradle)|(pom.xml)$/", + "group": "1_javaactions" } ] } From 829df9663df74555d936d053069997dec26d6365 Mon Sep 17 00:00:00 2001 From: Rui Ventura Date: Fri, 9 Feb 2018 20:18:03 +0000 Subject: [PATCH 0261/1435] Add regular for loop snippet (#434) * Add regular for loop snippet Signed-off-by: Rui Ventura --- snippets/java.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/snippets/java.json b/snippets/java.json index f0f2a0750..484cb6025 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -22,6 +22,15 @@ ], "description": "Print to standard err" }, + "fori": { + "prefix": "fori", + "body": [ + "for (${1:int} ${2:i} = ${3:0}; $2 < ${4:max}; $2++) {", + "\t$5", + "}" + ], + "description": "Indexed for loop" + }, "foreach": { "prefix": "foreach", "body": [ From a14154db2e1466dcb2ea41fcbf87cab4d99caf16 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Feb 2018 16:53:02 -0500 Subject: [PATCH 0262/1435] Display size of generated visx --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1de77e9f1..eea525d07 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,6 +27,7 @@ install: - npm run vscode:prepublish - npm install -g vsce - vsce package +- ls -ll java-*vsix script: - npm test --silent From 16a8f101157c910c68abf640d79ad62c738af7bf Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 14 Feb 2018 17:57:34 -0500 Subject: [PATCH 0263/1435] Run tests *after* packaging The goal is to avoid packaging unnecessary files in the extension/server/config_linux/ See #438 --- Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5d681be56..5487c67c8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,15 +37,15 @@ node('rhel7'){ sh "mkdir ./server" sh "tar -xvzf ${files[0].path} -C ./server" - stage 'Test vscode-java for staging' - wrap([$class: 'Xvnc']) { - sh "npm test --silent" - } - stage "Package vscode-java" def packageJson = readJSON file: 'package.json' sh "vsce package -o java-${packageJson.version}-${env.BUILD_NUMBER}.vsix" + stage 'Test vscode-java for staging' + wrap([$class: 'Xvnc']) { + sh "npm test --silent" + } + stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" From 2a993d38e8e4f7c2ed454b8266df13d1fd88e863 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 14 Feb 2018 21:07:19 -0500 Subject: [PATCH 0264/1435] Improve java.home description wrt to Windows paths Signed-off-by: Fred Bricon --- package.json | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 4dd724fac..deedf8b26 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "null" ], "default": null, - "description": "Specifies the folder path to the JDK (8 or more recent) used to launch the Java Language Server.", + "description": "Specifies the folder path to the JDK (8 or more recent) used to launch the Java Language Server.\nOn Windows, backslashes must be escaped, i.e.\n\"java.home\":\"C:\\\\Program Files\\\\Java\\\\jdk1.8.0_161\"", "scope": "window" }, "java.jdt.ls.vmargs": { @@ -162,7 +162,11 @@ "java.import.exclusions": { "type": "array", "description": "Configure glob patterns for excluding folders", - "default": ["**/node_modules", "**/.metadata", "**/archetype-resources"], + "default": [ + "**/node_modules", + "**/.metadata", + "**/archetype-resources" + ], "scope": "window" }, "java.contentProvider.preferred": { @@ -193,7 +197,12 @@ "java.completion.importOrder": { "type": "array", "description": "Defines the sorting order of import statements. A package or type name prefix (e.g. 'org.eclipse') is a valid entry. An import is always added to the most specific group.", - "default": ["java", "javax", "com", "org"], + "default": [ + "java", + "javax", + "com", + "org" + ], "scope": "window" } } From 7b4d2cb6b7b5cdc6dfc04a36d8b45f30c3b0e98a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Feb 2018 16:04:18 -0500 Subject: [PATCH 0265/1435] Exclude **/META-INF/maven/** folders from import Signed-off-by: Fred Bricon --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index deedf8b26..72cdea087 100644 --- a/package.json +++ b/package.json @@ -163,9 +163,10 @@ "type": "array", "description": "Configure glob patterns for excluding folders", "default": [ - "**/node_modules", - "**/.metadata", - "**/archetype-resources" + "**/node_modules/**", + "**/.metadata/**", + "**/archetype-resources/**", + "**/META-INF/maven/**" ], "scope": "window" }, From 537c322e60633feeb79ec77afb60c4c1264b6be9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Feb 2018 18:54:11 -0500 Subject: [PATCH 0266/1435] Changelog for the 0.19.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 67 +++++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d22604435..262e9fa3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,17 @@ # Change Log -## 0.19.0 (TBD) - +## 0.19.0 (February 15th, 2018) +* enhancement - added `java.projectConfiguration.update` command to the explorer menu, for build files. See [#159](https://github.com/redhat-developer/vscode-java/issues/159). +* enhancement - use `void` as default return value for method templates. See [#429](https://github.com/redhat-developer/vscode-java/pull/429). +* enhancement - new "Indexed for loop" template, triggered by the `fori` keyword. See [#434](https://github.com/redhat-developer/vscode-java/pull/434). +* enhancement - during import, only trigger "update project configuration" on Maven projects if necessary. See [JLS#544](https://github.com/eclipse/eclipse.jdt.ls/issues/544). +* bug fix - removed unnecessary files from the vscode-java distribution, reducing its size from 45MB to 34MB. See [#438](https://github.com/redhat-developer/vscode-java/issues/438). +* bug fix - fixed `Organize imports` command removing all imports in module-info.java. See [#430](https://github.com/redhat-developer/vscode-java/issues/430). +* bug fix - fixed flaky reporting of test imports in main code. See [JLS#528](https://github.com/eclipse/eclipse.jdt.ls/issues/528). +* bug fix - ignore `**/META-INF/maven/**` paths during import. See [JLS#539](https://github.com/eclipse/eclipse.jdt.ls/issues/539). ## 0.18.1 (January 31st, 2018) -* bug - Restore missing "Add unimplemented methods" code action. See [#426](https://github.com/redhat-developer/vscode-java/issues/426). +* bug fix - Restore missing "Add unimplemented methods" code action. See [#426](https://github.com/redhat-developer/vscode-java/issues/426). ## 0.18.0 (January 31st, 2018) * enhancement - New `java.completion.favoriteStaticMembers` preference to define static members to be automatically imported. See [#368](https://github.com/redhat-developer/vscode-java/issues/368). @@ -12,9 +19,9 @@ * enhancement - New `java.saveActions.organizeImports` preference to enable `Organize imports` as a save action. See [#402](https://github.com/redhat-developer/vscode-java/pull/402). * enhancement - New `java.autobuild.enabled` preference to enable/disable the 'auto build'. See [#406](https://github.com/redhat-developer/vscode-java/issues/406). * enhancement - New `java.completion.importOrder` preference to customize imports order. See [#420](https://github.com/redhat-developer/vscode-java/issues/420). -* bug - fix hover/navigation for types in module-info.java. See [JLS#397](https://github.com/eclipse/eclipse.jdt.ls/issues/397). -* bug - **fix proper test classpath isolation**. Test classes are no longer available to main code for Maven and pure Eclipse projects. See [JLS#526](https://github.com/eclipse/eclipse.jdt.ls/issues/526). -* bug - fix autocompletion/hover performance for Java 9 projects. See [#398](https://github.com/redhat-developer/vscode-java/issues/398). +* bug fix - fixed hover/navigation for types in module-info.java. See [JLS#397](https://github.com/eclipse/eclipse.jdt.ls/issues/397). +* bug fix - **fixed proper test classpath isolation**. Test classes are no longer available to main code for Maven and pure Eclipse projects. See [JLS#526](https://github.com/eclipse/eclipse.jdt.ls/issues/526). +* bug fix - fixed autocompletion/hover performance for Java 9 projects. See [#398](https://github.com/redhat-developer/vscode-java/issues/398). ## 0.17.0 (January 16th, 2018) * enhancement - code-action: add missing serialVersionUID field. See [#401](https://github.com/redhat-developer/vscode-java/issues/401). @@ -131,50 +138,50 @@ * enhancement - code-action: add missing Javadoc params. See [JLS#275](https://github.com/eclipse/eclipse.jdt.ls/issues/275). * enhancement - code-action: fix type mismatch. See [JLS#276](https://github.com/eclipse/eclipse.jdt.ls/issues/276). * enhancement - code-action: fix missing attribute in annotation. See [JLS#277](https://github.com/eclipse/eclipse.jdt.ls/issues/277). -* bug - fixed wrong URI set for diagnostics of standalone java files. See [JLS#268](https://github.com/eclipse/eclipse.jdt.ls/issues/268). -* bug - fixed `Error computing hover: **/package-summary.html not found in JavaDoc jar`. See [#248](https://github.com/redhat-developer/vscode-java/issues/248). -* bug - fixed `Invalid project description` thrown when reopening Eclipse projects. See [#244](https://github.com/redhat-developer/vscode-java/issues/244). +* bug fix - fixed wrong URI set for diagnostics of standalone java files. See [JLS#268](https://github.com/eclipse/eclipse.jdt.ls/issues/268). +* bug fix - fixed `Error computing hover: **/package-summary.html not found in JavaDoc jar`. See [#248](https://github.com/redhat-developer/vscode-java/issues/248). +* bug fix - fixed `Invalid project description` thrown when reopening Eclipse projects. See [#244](https://github.com/redhat-developer/vscode-java/issues/244). ## 0.6.0 (June 15th, 2017) * enhancement - reduced extension size by ~25%. See [JLS#252](https://github.com/eclipse/eclipse.jdt.ls/issues/252). -* bug - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). -* bug - fixed changes in Eclipse settings file are ignored. See [#239](https://github.com/redhat-developer/vscode-java/pull/239). -* bug - `package` autocompletion should return only 1 package. See [#234](https://github.com/redhat-developer/vscode-java/pull/234). -* bug - autocompletion on overridden methods should create the method body. See [#85](https://github.com/redhat-developer/vscode-java/pull/85). +* bug fix - fixed OperationCanceledException during completion. See [JLS#240](https://github.com/eclipse/eclipse.jdt.ls/issues/240). +* bug fix - fixed changes in Eclipse settings file are ignored. See [#239](https://github.com/redhat-developer/vscode-java/pull/239). +* bug fix - `package` autocompletion should return only 1 package. See [#234](https://github.com/redhat-developer/vscode-java/pull/234). +* bug fix - autocompletion on overridden methods should create the method body. See [#85](https://github.com/redhat-developer/vscode-java/pull/85). ## 0.5.0 (May 31st, 2017) * enhancement - enable support for CamelCase type search. See [JLS#219](https://github.com/eclipse/eclipse.jdt.ls/issues/219). * enhancement - server startup now uses progress UI. See [#225](https://github.com/redhat-developer/vscode-java/pull/225). -* bug - fixed autocomplete inserting classname+package text instead of classname. See [#175](https://github.com/redhat-developer/vscode-java/issues/175). -* bug - fixed `Timed out while retrieving the attached javadoc.` error. See [#176](https://github.com/redhat-developer/vscode-java/issues/176). -* bug - fixed autocompletion not cancelled on space. See [#187](https://github.com/redhat-developer/vscode-java/issues/187). -* bug - fixed Gradle import failing behind corporate proxy with authentication. See [#211](https://github.com/redhat-developer/vscode-java/issues/211). -* bug - fixed `Unable to locate secure storage module` error. See [#212](https://github.com/redhat-developer/vscode-java/issues/212). -* bug - fixed CancellationException in output log. See [#213](https://github.com/redhat-developer/vscode-java/issues/213). -* bug - fixed `Illegal argument, contents must be defined` error on hover. See [#214](https://github.com/redhat-developer/vscode-java/issues/214). -* bug - fixed code snippet appearing before completion results. See [#216](https://github.com/redhat-developer/vscode-java/issues/216). -* bug - fixed code snippet using deprecated syntax. See [#217](https://github.com/redhat-developer/vscode-java/issues/217). -* bug - fixed navigation from disassembled source code. See [#222](https://github.com/redhat-developer/vscode-java/issues/222). -* bug - fixed Javadoc missing from inherited methods. See [#226](https://github.com/redhat-developer/vscode-java/issues/226). -* bug - fixed `Problems encountered while copying resources. Resource '/jdt.ls-java-project/src/pom.xml' does not exist` error. See [#244](https://github.com/eclipse/eclipse.jdt.ls/issues/244). +* bug fix - fixed autocomplete inserting classname+package text instead of classname. See [#175](https://github.com/redhat-developer/vscode-java/issues/175). +* bug fix - fixed `Timed out while retrieving the attached javadoc.` error. See [#176](https://github.com/redhat-developer/vscode-java/issues/176). +* bug fix - fixed autocompletion not cancelled on space. See [#187](https://github.com/redhat-developer/vscode-java/issues/187). +* bug fix - fixed Gradle import failing behind corporate proxy with authentication. See [#211](https://github.com/redhat-developer/vscode-java/issues/211). +* bug fix - fixed `Unable to locate secure storage module` error. See [#212](https://github.com/redhat-developer/vscode-java/issues/212). +* bug fix - fixed CancellationException in output log. See [#213](https://github.com/redhat-developer/vscode-java/issues/213). +* bug fix - fixed `Illegal argument, contents must be defined` error on hover. See [#214](https://github.com/redhat-developer/vscode-java/issues/214). +* bug fix - fixed code snippet appearing before completion results. See [#216](https://github.com/redhat-developer/vscode-java/issues/216). +* bug fix - fixed code snippet using deprecated syntax. See [#217](https://github.com/redhat-developer/vscode-java/issues/217). +* bug fix - fixed navigation from disassembled source code. See [#222](https://github.com/redhat-developer/vscode-java/issues/222). +* bug fix - fixed Javadoc missing from inherited methods. See [#226](https://github.com/redhat-developer/vscode-java/issues/226). +* bug fix - fixed `Problems encountered while copying resources. Resource '/jdt.ls-java-project/src/pom.xml' does not exist` error. See [#244](https://github.com/eclipse/eclipse.jdt.ls/issues/244). ## 0.4.0 (May 15th, 2017) * enhancement - new `Open Java Language Server log file` command. See [#209](https://github.com/redhat-developer/vscode-java/issues/209). * enhancement - expand workspace symbol search to all classes from classpath. See [#204](https://github.com/redhat-developer/vscode-java/issues/204). -* bug - fixed outline for classes from classpath. See [#206](https://github.com/redhat-developer/vscode-java/issues/206). -* bug - fixed ambiguous results from class outline. See [JLS#214](https://github.com/eclipse/eclipse.jdt.ls/issues/214). +* bug fix - fixed outline for classes from classpath. See [#206](https://github.com/redhat-developer/vscode-java/issues/206). +* bug fix - fixed ambiguous results from class outline. See [JLS#214](https://github.com/eclipse/eclipse.jdt.ls/issues/214). ## 0.3.0 (May 4th, 2017) * enhancement - reduce confusion about "Classpath is incomplete" warning by providing a link to the wiki page. See [#193](https://github.com/redhat-developer/vscode-java/issues/193). * enhancement - enable String deduplication on G1 Garbage collector by default, to improve memory footprint. See [#195](https://github.com/redhat-developer/vscode-java/issues/195). ## 0.2.1 (April 24th, 2017) -* bug - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). +* bug fix - fix excessive 'Unable to get documentation under 500ms' logging. See [#189](https://github.com/redhat-developer/vscode-java/issues/189). ## 0.2.0 (April 19th, 2017) * enhancement - extension now embeds the Java Language Server. See [#178](https://github.com/redhat-developer/vscode-java/issues/178). -* bug - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). -* bug - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). +* bug fix - fixed Java Language Server status update on startup. See [#179](https://github.com/redhat-developer/vscode-java/issues/179). +* bug fix - fixed detection of nested Gradle projects. See [#165](https://github.com/redhat-developer/vscode-java/issues/165). ## 0.1.0 (March 30th, 2017) * enhancement - support starting the Java Language Server with JDK 9. See [#43](https://github.com/redhat-developer/vscode-java/issues/43). From 7bed5e65c8c3e8260688a139c8ac1d593e974532 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 20 Feb 2018 19:06:02 +0100 Subject: [PATCH 0267/1435] java.import.exclusions preference is ignored during server startup Signed-off-by: Snjezana Peco --- src/extension.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 9cefd1d3e..4555742b1 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -53,7 +53,8 @@ export function activate(context: ExtensionContext) { }, initializationOptions: { bundles: collectionJavaExtensions(extensions.all), - workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null + workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null, + settings: { java: getJavaConfiguration() } }, revealOutputChannelOn: RevealOutputChannelOn.Never }; From f5620c6ff691eddeb22557b852371ebaed7d18fb Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 14 Feb 2018 10:37:54 -0500 Subject: [PATCH 0268/1435] Do not apply edits on organize imports command jdt.ls changed its implmentation to use workspace/applyEdit to commit the changes. There is no need for the command to explictly apply them later. Signed-off-by: Gorkem Ercan --- package-lock.json | 110 +++++++++++++++++++++++----------------------- package.json | 2 +- src/extension.ts | 4 +- 3 files changed, 58 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80e0543bf..4097d1d5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "array-differ": { @@ -232,7 +232,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -431,7 +431,7 @@ "boom": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", "dev": true, "requires": { "hoek": "4.2.0" @@ -490,7 +490,7 @@ "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", "dev": true, "requires": { "file-type": "5.2.0", @@ -509,7 +509,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", "dev": true, "requires": { "decompress-tar": "4.1.1", @@ -522,7 +522,7 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", "dev": true } } @@ -530,7 +530,7 @@ "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", "dev": true, "requires": { "decompress-tar": "4.1.1", @@ -1040,7 +1040,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -1323,7 +1323,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -1812,7 +1812,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -2073,7 +2073,7 @@ "queue": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", + "integrity": "sha1-Wpcz2ai4vRs26TS8nFWribKOKcc=", "dev": true, "requires": { "inherits": "2.0.3" @@ -2103,7 +2103,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -2252,7 +2252,7 @@ "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", "dev": true, "requires": { "boom": "4.3.1", @@ -2344,7 +2344,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-dotfile": { @@ -2419,7 +2419,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "3.0.1" @@ -2646,7 +2646,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -2915,7 +2915,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -2962,7 +2962,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "1.1.8" } @@ -2993,7 +2993,7 @@ "mocha": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "integrity": "sha1-HgSA/jbS2lhY0etqzDhBiybqog0=", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -3334,7 +3334,7 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=", "dev": true }, "querystringify": { @@ -3355,7 +3355,7 @@ "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "dev": true, "requires": { "is-number": "3.0.0", @@ -3417,7 +3417,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -3450,7 +3450,7 @@ "request": { "version": "2.83.0", "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", "dev": true, "requires": { "aws-sign2": "0.7.0", @@ -3495,7 +3495,7 @@ "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", "dev": true, "requires": { "path-parse": "1.0.5" @@ -3514,7 +3514,7 @@ "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { "glob": "7.1.2" @@ -3523,7 +3523,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", "dev": true }, "seek-bzip": { @@ -3556,7 +3556,7 @@ "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", "dev": true, "requires": { "hoek": "4.2.0" @@ -3737,7 +3737,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", "dev": true, "requires": { "is-natural-number": "4.0.1" @@ -3859,7 +3859,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -4026,7 +4026,7 @@ "unbzip2-stream": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", - "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "integrity": "sha1-c6AzpWe7veWWVLGTxE1Ip+T0PEc=", "dev": true, "requires": { "buffer": "3.6.0", @@ -4048,7 +4048,7 @@ "url-parse": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", - "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "integrity": "sha1-OhnoqqbQI93SfcxEy0/I9/7COYY=", "dev": true, "requires": { "querystringify": "1.0.0", @@ -4306,33 +4306,35 @@ } } }, - "vscode-jsonrpc": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.4.1.tgz", - "integrity": "sha1-4uC54SH3GitUSAWKNKOu+DdqXpE=" - }, "vscode-languageclient": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.4.5.tgz", - "integrity": "sha1-YjAHKrB3IIXQm0j5m3nnxCHd+7c=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.0.tgz", + "integrity": "sha1-NtAswYaoNlpEZ3GaKQ+yAKmuSQo=", "requires": { - "vscode-languageserver-protocol": "3.4.4" - } - }, - "vscode-languageserver-protocol": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.4.4.tgz", - "integrity": "sha1-A4e7Sb0PgF6QSMaVmX29Qw1uyig=", - "requires": { - "vscode-jsonrpc": "3.4.1", - "vscode-languageserver-types": "3.4.0" + "vscode-languageserver-protocol": "3.5.0" + }, + "dependencies": { + "vscode-jsonrpc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.5.0.tgz", + "integrity": "sha1-hyOdnhZrLXNSJFuKgTWXgEwdY6o=" + }, + "vscode-languageserver-protocol": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.0.tgz", + "integrity": "sha1-Bnxcvidwl5U5jRGWksl+u6FFIgk=", + "requires": { + "vscode-jsonrpc": "3.5.0", + "vscode-languageserver-types": "3.5.0" + } + }, + "vscode-languageserver-types": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz", + "integrity": "sha1-5I15li8LjgLelV4/UkkI4rGcA3Q=" + } } }, - "vscode-languageserver-types": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.4.0.tgz", - "integrity": "sha1-UEOuR+5KwWrwe7PQylYSNeDA0vo=" - }, "which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", diff --git a/package.json b/package.json index 72cdea087..7cd0a42d2 100644 --- a/package.json +++ b/package.json @@ -291,7 +291,7 @@ "gulp-download": "0.0.1" }, "dependencies": { - "vscode-languageclient": "^3.4.5", + "vscode-languageclient": "^3.5.0", "find-java-home": "0.1.4", "tmp": "^0.0.31", "path-exists": "^3.0.0", diff --git a/src/extension.ts b/src/extension.ts index 4555742b1..184f0415d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -164,10 +164,8 @@ export function activate(context: ExtensionContext) { if (!activeEditor || !activeEditor.document || activeEditor.document.languageId !== 'java') { return; } - if (activeEditor.document.uri instanceof Uri) { - const obj = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.EDIT_ORGANIZE_IMPORTS, activeEditor.document.uri.toString()); - applyWorkspaceEdit(obj); + await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.EDIT_ORGANIZE_IMPORTS, activeEditor.document.uri.toString()); } }); From 36da57f52e1ae33e41417c4637efc0f68f042643 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 27 Feb 2018 20:30:14 -0500 Subject: [PATCH 0269/1435] remove unused imports that are causing confusion Signed-off-by: Gorkem Ercan --- src/javaServerStarter.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 6f7b70eb0..6988a8c1d 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -1,13 +1,9 @@ import * as path from 'path'; -import * as fs from 'fs'; import * as net from 'net'; import * as glob from 'glob'; -import { window, commands, WorkspaceConfiguration, workspace } from 'vscode'; import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; -import { createClientPipeTransport } from 'vscode-jsonrpc'; import { RequirementsData } from './requirements'; -import { Commands } from './commands'; declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); From b13a70bbd145ff0d32e46a672147446c82acb969 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 28 Feb 2018 14:27:58 -0500 Subject: [PATCH 0270/1435] Upversion to 0.20.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4097d1d5b..b07853a7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.19.0", + "version": "0.20.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7cd0a42d2..a08c32c83 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.19.0", + "version": "0.20.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 2261122ccaaf492c419d1014017022ce494e62ce Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 28 Feb 2018 16:08:25 -0500 Subject: [PATCH 0271/1435] Changelog for the 0.20.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 262e9fa3d..e16458317 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 0.20.0 (February 28th, 2018) +* enhancement - incremental (i.e. faster) build triggered on startup, instead of a clean (i.e. slower) build. See [#451](https://github.com/redhat-developer/vscode-java/issues/451). +* enhancement - code action: remove unreachable code. See [JLS#437](https://github.com/eclipse/eclipse.jdt.ls/issues/437). +* bug fix - fixed `java.import.exclusions` preference being ignored during server startup. See [#444](https://github.com/redhat-developer/vscode-java/issues/444). +* bug fix - fixed stub sources being returned even though proper sources were downloaded. See [#447](https://github.com/redhat-developer/vscode-java/issues/447). +* bug fix - fixed attached javadoc being ignored on hover. See [JLS#517](https://github.com/eclipse/eclipse.jdt.ls/issues/517). +* bug fix - fixed broken `Organize imports` in module-info.java. See [JLS#549](https://github.com/eclipse/eclipse.jdt.ls/issues/549). +* bug fix - fixed multiline errors. See [JLS#567](https://github.com/eclipse/eclipse.jdt.ls/pull/567). + ## 0.19.0 (February 15th, 2018) * enhancement - added `java.projectConfiguration.update` command to the explorer menu, for build files. See [#159](https://github.com/redhat-developer/vscode-java/issues/159). * enhancement - use `void` as default return value for method templates. See [#429](https://github.com/redhat-developer/vscode-java/pull/429). From d5d7f8f02a01536aa502c7bbf88c998eb840e6db Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 28 Feb 2018 21:26:32 -0500 Subject: [PATCH 0272/1435] Bump version to 0.21.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b07853a7a..8a421b6ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.20.0", + "version": "0.21.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a08c32c83..d7d3e6fb9 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.20.0", + "version": "0.21.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From be55f12a760ef883723799177cf41ad22ce59de6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Mar 2018 21:12:16 -0400 Subject: [PATCH 0273/1435] Watch files under **/src/** Signed-off-by: Fred Bricon --- src/extension.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 184f0415d..df247d973 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -48,7 +48,8 @@ export function activate(context: ExtensionContext) { workspace.createFileSystemWatcher('**/*.gradle'), workspace.createFileSystemWatcher('**/.project'), workspace.createFileSystemWatcher('**/.classpath'), - workspace.createFileSystemWatcher('**/settings/*.prefs') + workspace.createFileSystemWatcher('**/settings/*.prefs'), + workspace.createFileSystemWatcher('**/src/**') ], }, initializationOptions: { From a577d40dd1f641af41f78d2dfbfbcc20ae9d343b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Mar 2018 22:04:45 -0400 Subject: [PATCH 0274/1435] Changelog for 0.21.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e16458317..cbca634f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.21.0 (March 15th, 2018) +* enhancement - process non-java resources. See [#400](https://github.com/redhat-developer/vscode-java/issues/400). +* enhancement - code action: extract variables. See [#459](https://github.com/redhat-developer/vscode-java/issues/459). +* enhancement - [Maven] automatically update module path when required modules changes in module-info.java. See [#465](https://github.com/redhat-developer/vscode-java/issues/465). +* enhancement - should warn about unstable automatic module name in module-info.java. See [#467](https://github.com/redhat-developer/vscode-java/issues/467). +* bug fix - fixed organize import ignoring certain classes. See [JLS#552](https://github.com/eclipse/eclipse.jdt.ls/issues/552). + ## 0.20.0 (February 28th, 2018) * enhancement - incremental (i.e. faster) build triggered on startup, instead of a clean (i.e. slower) build. See [#451](https://github.com/redhat-developer/vscode-java/issues/451). * enhancement - code action: remove unreachable code. See [JLS#437](https://github.com/eclipse/eclipse.jdt.ls/issues/437). From 73b766ad2b4561ac33c55a0ebbca72451fe7a067 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 20 Mar 2018 11:19:27 -0700 Subject: [PATCH 0275/1435] Only enable organize imports command in java files Fixes #473 Signed-off-by: Matt Bierner --- package.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d7d3e6fb9..ddf34e6db 100644 --- a/package.json +++ b/package.json @@ -239,7 +239,7 @@ { "command": "java.edit.organizeImports", "key": "shift+alt+o", - "when": "editorTextFocus && !editorReadnly" + "when": "editorTextFocus && !editorReadonly && editorLangId == java" }, { "command": "java.workspace.compile", @@ -265,6 +265,12 @@ "when": "resourceFilename =~ /(.*\\.gradle)|(pom.xml)$/", "group": "1_javaactions" } + ], + "commandPalette": [ + { + "command": "java.edit.organizeImports", + "when": "!editorReadonly && editorLangId == java" + } ] } }, From af9e11166b3611a7f831a8df78da9d2e99138864 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 6 Dec 2017 14:59:39 -0500 Subject: [PATCH 0276/1435] Add progress report support Signed-off-by: Fred Bricon --- package.json | 6 ++++++ src/extension.ts | 18 +++++++++++++++--- src/protocol.ts | 20 +++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ddf34e6db..2d4925356 100644 --- a/package.json +++ b/package.json @@ -205,6 +205,12 @@ "org" ], "scope": "window" + }, + "java.progressReports.enabled": { + "type": "boolean", + "description": "[Experimental] Enable/disable progress reports from background processes on the server.", + "default": true, + "scope": "window" } } }, diff --git a/src/extension.ts b/src/extension.ts index df247d973..02531d25b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,7 +8,7 @@ import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus } from './protocol'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification } from './protocol'; let oldConfig; let lastStatus; @@ -55,7 +55,10 @@ export function activate(context: ExtensionContext) { initializationOptions: { bundles: collectionJavaExtensions(extensions.all), workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null, - settings: { java: getJavaConfiguration() } + settings: { java: getJavaConfiguration() }, + extendedClientCapabilities:{ + progressReportProvider:getJavaConfiguration().get('progressReports.enabled') + } }, revealOutputChannelOn: RevealOutputChannelOn.Never }; @@ -63,6 +66,7 @@ export function activate(context: ExtensionContext) { let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); item.text = '$(rocket)'; item.command = Commands.OPEN_OUTPUT; + let progressBar = window.createStatusBarItem(StatusBarAlignment.Left, Number.MIN_VALUE+1); oldConfig = getJavaConfiguration(); let serverOptions; @@ -106,6 +110,13 @@ export function activate(context: ExtensionContext) { item.tooltip = report.message; toggleItem(window.activeTextEditor, item); }); + languageClient.onNotification(ProgressReportNotification.type, (progress) => { + progressBar.show(); + progressBar.text = progress.status; + if (progress.complete) { + setTimeout(() => { progressBar.hide(); }, 500); + } + }); languageClient.onNotification(ActionableNotification.type, (notification) => { let show = null; switch (notification.severity) { @@ -356,7 +367,8 @@ function onConfigurationChange() { function hasJavaConfigChanged(oldConfig, newConfig) { return hasConfigKeyChanged('home', oldConfig, newConfig) - || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig); + || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig) + || hasConfigKeyChanged('progressReports.enabled', oldConfig, newConfig); } function hasConfigKeyChanged(key, oldConfig, newConfig) { diff --git a/src/protocol.ts b/src/protocol.ts index cad8b7af7..0232c6ecb 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -44,9 +44,9 @@ export enum FeatureStatus { } export enum CompileWorkspaceStatus { - FAILED = 0, - SUCCEED = 1, - WITHERROR = 2, + FAILED = 0, + SUCCEED = 1, + WITHERROR = 2, CANCELLED = 3, } @@ -55,6 +55,16 @@ export interface StatusReport { type: string; } +export interface ProgressReport { + id: string; + task: string; + subTask: string; + status: string; + workDone: number; + totalWork: number; + complete: boolean; +} + export interface ActionableMessage { severity: MessageType; message: string; @@ -66,6 +76,10 @@ export namespace StatusNotification { export const type = new NotificationType('language/status'); } +export namespace ProgressReportNotification { + export const type = new NotificationType('language/progressReport'); +} + export namespace ClassFileContentsRequest { export const type= new RequestType ('java/classFileContents'); } From 08234b4593fc8ee793e4b63a17564c6cd69adad1 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 23 Mar 2018 16:02:14 -0700 Subject: [PATCH 0277/1435] Experimental execute client-side command protocol extension (#476) Signed-off-by: Kris De Volder --- src/extension.ts | 5 ++++- src/protocol.ts | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 02531d25b..41e3355a1 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,7 +8,7 @@ import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification } from './protocol'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest } from './protocol'; let oldConfig; let lastStatus; @@ -147,6 +147,9 @@ export function activate(context: ExtensionContext) { } }); }); + languageClient.onRequest(ExecuteClientCommandRequest.type, (params) => { + return commands.executeCommand(params.command, ...params.arguments); + }); commands.registerCommand(Commands.OPEN_OUTPUT, () => { languageClient.outputChannel.show(ViewColumn.Three); }); diff --git a/src/protocol.ts b/src/protocol.ts index 0232c6ecb..437b9fea0 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,6 +1,6 @@ 'use strict'; -import { RequestType, NotificationType, TextDocumentIdentifier} from 'vscode-languageclient'; +import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams } from 'vscode-languageclient'; import { Command } from 'vscode'; /** @@ -94,4 +94,8 @@ export namespace ActionableNotification { export namespace CompileWorkspaceRequest { export const type = new RequestType('java/buildWorkspace'); +} + +export namespace ExecuteClientCommandRequest { + export const type = new RequestType('workspace/executeClientCommand'); } \ No newline at end of file From b8a0a95d2a3294b0895fa40db3b6a63d473af3b0 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Wed, 28 Mar 2018 21:41:28 -0400 Subject: [PATCH 0278/1435] Add a reference parameter to openJDK download url (#482) Signed-off-by: Gorkem Ercan --- src/requirements.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/requirements.ts b/src/requirements.ts index e62afaf37..a915a65d7 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -112,7 +112,7 @@ export function parseMajorVersion(content:string):number { } function openJDKDownload(reject, cause) { - let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/'; + let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/?from=vscode'; if (process.platform === 'darwin') { jdkUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/index.html'; } From ca68a38c571f58a8e5a0befc6a55d47428367409 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 29 Mar 2018 15:35:11 -0400 Subject: [PATCH 0279/1435] Bump version to 0.22.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2d4925356..719793cfb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.21.0", + "version": "0.22.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From f555fd04c15973306ff6cf235323db6f591ed2ed Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Fri, 30 Mar 2018 13:59:42 -0400 Subject: [PATCH 0280/1435] remove unused environment variable log.protocol is no longer in effect. also simplified the parameters calls. Signed-off-by: Gorkem Ercan --- src/javaServerStarter.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 6988a8c1d..e9768e7c1 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -44,17 +44,16 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp // params.push('-agentlib:jdwp=transport=dt_socket,server=y,address=1044'); } if (requirements.java_version > 8) { - params.push('--add-modules=ALL-SYSTEM'); - params.push('--add-opens'); - params.push('java.base/java.util=ALL-UNNAMED'); - params.push('--add-opens'); - params.push('java.base/java.lang=ALL-UNNAMED'); + params.push('--add-modules=ALL-SYSTEM', + '--add-opens', + 'java.base/java.util=ALL-UNNAMED', + '--add-opens', + 'java.base/java.lang=ALL-UNNAMED'); } - params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1'); - params.push('-Dosgi.bundles.defaultStartLevel=4'); - params.push('-Declipse.product=org.eclipse.jdt.ls.core.product'); + params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1', + '-Dosgi.bundles.defaultStartLevel=4', + '-Declipse.product=org.eclipse.jdt.ls.core.product'); if (DEBUG) { - params.push('-Dlog.protocol=true'); params.push('-Dlog.level=ALL'); } From 200e9473aef260175954e8d312250f64af4dda36 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 4 Apr 2018 18:34:39 -0400 Subject: [PATCH 0281/1435] Changelog for 0.22.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 11 +++++++++++ README.md | 1 + package-lock.json | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbca634f3..30d06ce2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ # Change Log +## 0.21.0 (April 4th, 2018) +* enhancement - add progress report for background tasks. Controlled with the `java.progressReports.enabled` preference. See [#488](https://github.com/redhat-developer/vscode-java/issues/484). +* enhancement - add experimental Java 10 support. See [#489](https://github.com/redhat-developer/vscode-java/issues/489). +* enhancement - notification mechanism for 3rd party extensions. See [JLS#595](https://github.com/eclipse/eclipse.jdt.ls/issues/595). +* enhancement - Javadoc {@links} should be functional. See [JLS#76](https://github.com/eclipse/eclipse.jdt.ls/issues/76). +* enhancement - code action: abstract classes/methods fixes. See [JLS#447](https://github.com/eclipse/eclipse.jdt.ls/issues/447). +* enhancement - watch files from all source folders. See [JLS#583](https://github.com/eclipse/eclipse.jdt.ls/issues/583). +* bug fix - fixed "Organize Import" command should not be active on non-java files. See [#489](https://github.com/redhat-developer/vscode-java/issues/473). +* bug fix - fixed test imports should not be proposed in main code. See [JLS#529](https://github.com/eclipse/eclipse.jdt.ls/issues/529). +* bug fix - fixed broken package Javadoc on Java 9/10. See [JLS#612](https://github.com/eclipse/eclipse.jdt.ls/issues/612). + ## 0.21.0 (March 15th, 2018) * enhancement - process non-java resources. See [#400](https://github.com/redhat-developer/vscode-java/issues/400). diff --git a/README.md b/README.md index 50f62036d..9cb49ae68 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ The following settings are supported: * `java.autobuild.enabled` : Enable/disable the 'auto build'. * `java.completion.favoriteStaticMembers` : Defines a list of static members or types with static members. * `java.completion.importOrder` : Defines the sorting order of import statements. +* `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. Troubleshooting =============== diff --git a/package-lock.json b/package-lock.json index 8a421b6ec..4e9d33eb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.21.0", + "version": "0.22.0", "lockfileVersion": 1, "requires": true, "dependencies": { From ca3bc60ff1bdaf00c1152ef2b6d20516b5ea8e6b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 4 Apr 2018 18:49:22 -0400 Subject: [PATCH 0282/1435] Fix version in changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30d06ce2a..c8a51707f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # Change Log -## 0.21.0 (April 4th, 2018) +## 0.22.0 (April 4th, 2018) * enhancement - add progress report for background tasks. Controlled with the `java.progressReports.enabled` preference. See [#488](https://github.com/redhat-developer/vscode-java/issues/484). * enhancement - add experimental Java 10 support. See [#489](https://github.com/redhat-developer/vscode-java/issues/489). * enhancement - notification mechanism for 3rd party extensions. See [JLS#595](https://github.com/eclipse/eclipse.jdt.ls/issues/595). From 1514b1915a5f19d6c33a41a4110502756732a286 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 5 Apr 2018 00:14:30 -0400 Subject: [PATCH 0283/1435] Upversion to 0.23.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8a51707f..ef5c3358a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ # Change Log + +## 0.23.0 (TBD) + ## 0.22.0 (April 4th, 2018) * enhancement - add progress report for background tasks. Controlled with the `java.progressReports.enabled` preference. See [#488](https://github.com/redhat-developer/vscode-java/issues/484). * enhancement - add experimental Java 10 support. See [#489](https://github.com/redhat-developer/vscode-java/issues/489). diff --git a/package-lock.json b/package-lock.json index 4e9d33eb4..c857833f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.22.0", + "version": "0.23.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 719793cfb..3e7b603cb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.22.0", + "version": "0.23.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From daa4dc6caba9c13fa468aed17efecdb65bab949d Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Thu, 5 Apr 2018 15:44:08 -0700 Subject: [PATCH 0284/1435] Restricting language services on file scheme (#492) Signed-off-by: Jonathan Carter --- src/extension.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 41e3355a1..506ca0531 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -38,7 +38,11 @@ export function activate(context: ExtensionContext) { // Options to control the language client let clientOptions: LanguageClientOptions = { // Register the server for java - documentSelector: ['java'], + documentSelector: [ + { scheme: 'file', language: 'java' }, + { scheme: 'jdt', language: 'java' }, + { scheme: 'untitled', language: 'java' } + ], synchronize: { configurationSection: 'java', // Notify the server about file changes to .java and project/build files contained in the workspace From c9e7a27b7a904da975021f7b90465a10bf583c62 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 10 Apr 2018 00:09:45 +0200 Subject: [PATCH 0285/1435] Second argument is replaced upon completing the first argument in a method call Signed-off-by: Snjezana Peco --- README.md | 1 + package.json | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index 9cb49ae68..912bbcaf4 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ The following settings are supported: * `java.completion.favoriteStaticMembers` : Defines a list of static members or types with static members. * `java.completion.importOrder` : Defines the sorting order of import statements. * `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. +* `java.completion.overwrite` : When set to true, code completion overwrites the current text. When set to false, code is simply added instead. Troubleshooting =============== diff --git a/package.json b/package.json index 3e7b603cb..289d5626f 100644 --- a/package.json +++ b/package.json @@ -182,6 +182,12 @@ "description": "Enable/disable the 'auto build'", "scope": "window" }, + "java.completion.overwrite": { + "type": "boolean", + "default": true, + "description": "When set to true, code completion overwrites the current text. When set to false, code is simply added instead.", + "scope": "window" + }, "java.completion.favoriteStaticMembers": { "type": "array", "description": "Defines a list of static members or types with static members. Content assist will propose those static members even if the import is missing.", From 0244d6e80d3c572275fcfb2381595dd998665e76 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 16 Apr 2018 18:33:53 -0400 Subject: [PATCH 0286/1435] Changelog for 0.23.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef5c3358a..1b0b79435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log -## 0.23.0 (TBD) +## 0.23.0 (April 16th, 2018) +* enhancement - added `java.completion.overwrite` preference. When set to true, code completion overwrites the current text. Else, code is simply added instead. See [#462](https://github.com/redhat-developer/vscode-java/issues/462). +* enhancement - restricted language service on file scheme, for [Live Share](https://code.visualstudio.com/visual-studio-live-share) compatibility. See [#492](https://github.com/redhat-developer/vscode-java/pull/492). +* enhancement - code actions: invalid modifiers. See [JLS#445](https://github.com/eclipse/eclipse.jdt.ls/issues/445). +* enhancement - improve build file change detection. See [JLS#547](https://github.com/eclipse/eclipse.jdt.ls/pull/547). +* enhancement - do not refresh workspace before build. See [JLS#627](https://github.com/eclipse/eclipse.jdt.ls/pull/627). +* bug fix - fixed potential NPE during completion resolution. See [JLS#629](https://github.com/eclipse/eclipse.jdt.ls/issues/629). + ## 0.22.0 (April 4th, 2018) * enhancement - add progress report for background tasks. Controlled with the `java.progressReports.enabled` preference. See [#488](https://github.com/redhat-developer/vscode-java/issues/484). From b47708dca469d084bc2e869dd0f85ff99a4b31b9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 17 Apr 2018 10:09:47 -0400 Subject: [PATCH 0287/1435] Bump version to 0.24.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c857833f2..398b0d5a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.23.0", + "version": "0.24.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 289d5626f..be14b481a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.23.0", + "version": "0.24.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -17,7 +17,7 @@ "url": "https://github.com/redhat-developer/vscode-java" }, "categories": [ - "Languages", + "Programming Languages", "Linters" ], "keywords": [ From 6b7640aab14b5cc5bc8d0fead4412eafb26c6fb9 Mon Sep 17 00:00:00 2001 From: Snjeza Date: Mon, 30 Apr 2018 22:59:36 +0200 Subject: [PATCH 0288/1435] Add support for external Eclipse formatter settings Signed-off-by: Snjezana Peco --- README.md | 3 +++ package.json | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/README.md b/README.md index 912bbcaf4..4b12b49a2 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,9 @@ The following settings are supported: * `java.completion.importOrder` : Defines the sorting order of import statements. * `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. * `java.completion.overwrite` : When set to true, code completion overwrites the current text. When set to false, code is simply added instead. +* `java.format.settings.url` : Specifies the url or file path to the formatter xml file. +* `java.format.settings.profile` : Specifies the formatter profile name. +* `java.format.comments.enabled` : Includes the comments during the formatting. Troubleshooting =============== diff --git a/package.json b/package.json index be14b481a..df4c22dea 100644 --- a/package.json +++ b/package.json @@ -217,6 +217,24 @@ "description": "[Experimental] Enable/disable progress reports from background processes on the server.", "default": true, "scope": "window" + }, + "java.format.settings.url": { + "type": "string", + "description": "Specifies the url or file path to the formatter xml file.", + "default": null, + "scope": "window" + }, + "java.format.settings.profile": { + "type": "string", + "description": "Specifies the formatter profile name.", + "default": null, + "scope": "window" + }, + "java.format.comments.enabled": { + "type": "boolean", + "description": "Includes the comments during the formatting.", + "default": true, + "scope": "window" } } }, From 1dd1f24f02fe7c15bf4dc430c7e17d773e050f91 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 30 Apr 2018 17:14:09 -0400 Subject: [PATCH 0289/1435] Small updates to new preference descriptions Signed-off-by: Fred Bricon --- README.md | 11 +++++++---- package.json | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4b12b49a2..2a6bc2278 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Features * Basic Gradle Java project support * As you type reporting of parsing and compilation errors * Code completion -* Code actions +* Code actions / Refactoring * Javadoc hovers * Organize imports * Type search @@ -81,9 +81,12 @@ The following settings are supported: * `java.completion.importOrder` : Defines the sorting order of import statements. * `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. * `java.completion.overwrite` : When set to true, code completion overwrites the current text. When set to false, code is simply added instead. -* `java.format.settings.url` : Specifies the url or file path to the formatter xml file. -* `java.format.settings.profile` : Specifies the formatter profile name. -* `java.format.comments.enabled` : Includes the comments during the formatting. + +*New in 0.24.0:* + +* `java.format.settings.url` : Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings). +* `java.format.settings.profile` : Optional formatter profile name from the Eclipse formatter settings. +* `java.format.comments.enabled` : Includes the comments during code formatting. Troubleshooting =============== diff --git a/package.json b/package.json index df4c22dea..7114adc9d 100644 --- a/package.json +++ b/package.json @@ -220,19 +220,19 @@ }, "java.format.settings.url": { "type": "string", - "description": "Specifies the url or file path to the formatter xml file.", + "description": "Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings).", "default": null, "scope": "window" }, "java.format.settings.profile": { "type": "string", - "description": "Specifies the formatter profile name.", + "description": "Optional formatter profile name from the Eclipse formatter settings.", "default": null, "scope": "window" }, "java.format.comments.enabled": { "type": "boolean", - "description": "Includes the comments during the formatting.", + "description": "Includes the comments during code formatting.", "default": true, "scope": "window" } From 163569254495422d213f48924f09d81524323813 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 30 Apr 2018 17:27:01 -0400 Subject: [PATCH 0290/1435] Changelog for 0.24.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b0b79435..ff0d8c629 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.24.0 (April 30th, 2018) +* enhancement - added support for external Eclipse formatter settings. See [#2](https://github.com/redhat-developer/vscode-java/issues/2); +* enhancement - code action: override static method from an instance method. See [JLS#444](https://github.com/eclipse/eclipse.jdt.ls/issues/444). +* enhancement - code action: override final methods. See [JLS#639](https://github.com/eclipse/eclipse.jdt.ls/pull/639). +* bug fix - fixed flaky diagnostics for TODO markers. See [#457](https://github.com/redhat-developer/vscode-java/issues/457). +* bug fix - fixed Java 10's `var`'s inferred type not shown in enhanced for-loops. See [#515](https://github.com/redhat-developer/vscode-java/issues/515). +* bug fix - fixed random exception thrown during _Code Actions_ resolution. See [JLS#642](https://github.com/eclipse/eclipse.jdt.ls/issues/642). + ## 0.23.0 (April 16th, 2018) * enhancement - added `java.completion.overwrite` preference. When set to true, code completion overwrites the current text. Else, code is simply added instead. See [#462](https://github.com/redhat-developer/vscode-java/issues/462). * enhancement - restricted language service on file scheme, for [Live Share](https://code.visualstudio.com/visual-studio-live-share) compatibility. See [#492](https://github.com/redhat-developer/vscode-java/pull/492). From f5e273057cce72bf39dfbebde9071abcc1482ac4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 1 May 2018 10:52:44 -0400 Subject: [PATCH 0291/1435] Upversion to 0.25.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff0d8c629..6ba4327d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.25.0 (TBD) + ## 0.24.0 (April 30th, 2018) * enhancement - added support for external Eclipse formatter settings. See [#2](https://github.com/redhat-developer/vscode-java/issues/2); * enhancement - code action: override static method from an instance method. See [JLS#444](https://github.com/eclipse/eclipse.jdt.ls/issues/444). diff --git a/package-lock.json b/package-lock.json index 398b0d5a8..ef9d47338 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.24.0", + "version": "0.25.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7114adc9d..735365c84 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.24.0", + "version": "0.25.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 5ac249b8b84b576e996a38e303a0dc5891d2ee61 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 1 May 2018 11:16:22 -0400 Subject: [PATCH 0292/1435] Update package description Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 735365c84..358e4b20f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "java", "displayName": "Language Support for Java(TM) by Red Hat", - "description": "Language Support for Java(TM) for Visual Studio Code provided by Red Hat", + "description": "Java Linting, Intellisense, formatting, refactoring, Maven/Gradle support and more...", "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", From 1a506be9c1fe9c69092073f4541513785f9d3817 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Tue, 1 May 2018 12:22:38 -0400 Subject: [PATCH 0293/1435] Updates find-java-home dependency updates the find-java-home dependency to pickup a windows registry fix. Also takes the latest tslint into use. Signed-off-by: Gorkem Ercan --- package-lock.json | 1714 +++++++++++++++++++++++++-------------------- package.json | 6 +- 2 files changed, 945 insertions(+), 775 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef9d47338..6bbbc51ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,14 +4,20 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==", + "dev": true + }, "@types/glob": { "version": "5.0.30", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", "dev": true, "requires": { - "@types/minimatch": "3.0.1", - "@types/node": "6.0.90" + "@types/minimatch": "*", + "@types/node": "*" } }, "@types/minimatch": { @@ -38,10 +44,28 @@ "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" } }, "ansi-regex": { @@ -56,13 +80,19 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, "archive-type": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", "dev": true, "requires": { - "file-type": "3.9.0" + "file-type": "^3.1.0" } }, "archy": { @@ -71,13 +101,22 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "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.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -86,6 +125,12 @@ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", @@ -110,7 +155,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -143,6 +188,12 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -167,9 +218,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "balanced-match": { @@ -190,7 +241,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "beeper": { @@ -205,7 +256,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.5" }, "dependencies": { "isarray": { @@ -220,13 +271,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -235,7 +286,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -246,7 +297,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -255,7 +306,7 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "brace-expansion": { @@ -263,7 +314,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -273,9 +324,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-stdout": { @@ -291,8 +342,8 @@ "dev": true, "requires": { "base64-js": "0.0.8", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" }, "dependencies": { "isarray": { @@ -327,11 +378,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "clone": { @@ -358,9 +409,9 @@ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", "dev": true, "requires": { - "inherits": "2.0.3", - "process-nextick-args": "1.0.7", - "through2": "2.0.3" + "inherits": "^2.0.1", + "process-nextick-args": "^1.0.6", + "through2": "^2.0.1" } }, "co": { @@ -370,12 +421,12 @@ "dev": true }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -384,13 +435,19 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -399,7 +456,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -425,7 +482,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -434,7 +491,7 @@ "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } @@ -445,7 +502,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "dateformat": { @@ -469,14 +526,14 @@ "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "decompress-tarbz2": "4.1.1", - "decompress-targz": "4.1.1", - "decompress-unzip": "4.0.1", - "graceful-fs": "4.1.11", - "make-dir": "1.1.0", - "pify": "2.3.0", - "strip-dirs": "2.1.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" }, "dependencies": { "graceful-fs": { @@ -493,9 +550,9 @@ "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", "dev": true, "requires": { - "file-type": "5.2.0", - "is-stream": "1.1.0", - "tar-stream": "1.5.4" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" }, "dependencies": { "file-type": { @@ -512,11 +569,11 @@ "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "6.2.0", - "is-stream": "1.1.0", - "seek-bzip": "1.0.5", - "unbzip2-stream": "1.2.5" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { "file-type": { @@ -533,9 +590,9 @@ "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", "dev": true, "requires": { - "decompress-tar": "4.1.1", - "file-type": "5.2.0", - "is-stream": "1.1.0" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" }, "dependencies": { "file-type": { @@ -552,10 +609,10 @@ "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "dev": true, "requires": { - "file-type": "3.9.0", - "get-stream": "2.3.1", - "pify": "2.3.0", - "yauzl": "2.9.1" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" } }, "deep-assign": { @@ -564,7 +621,7 @@ "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "defaults": { @@ -573,7 +630,7 @@ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "1.0.2" + "clone": "^1.0.2" } }, "delayed-stream": { @@ -594,7 +651,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "0.1.0" + "fs-exists-sync": "^0.1.0" } }, "diff": { @@ -615,7 +672,7 @@ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "readable-stream": "~1.1.9" } }, "duplexify": { @@ -624,10 +681,10 @@ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", "dev": true, "requires": { - "end-of-stream": "1.4.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "end-of-stream": { @@ -636,7 +693,7 @@ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "isarray": { @@ -651,13 +708,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -666,7 +723,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -678,7 +735,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "end-of-stream": { @@ -687,7 +744,7 @@ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", "dev": true, "requires": { - "once": "1.3.3" + "once": "~1.3.0" }, "dependencies": { "once": { @@ -696,7 +753,7 @@ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } } } @@ -707,6 +764,12 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -719,13 +782,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" }, "dependencies": { "map-stream": { @@ -742,7 +805,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-home-dir": { @@ -756,7 +819,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expand-tilde": { @@ -765,7 +828,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.1" } }, "extend": { @@ -780,7 +843,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "extglob": { @@ -789,7 +852,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -804,8 +867,8 @@ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", "dev": true, "requires": { - "chalk": "1.1.3", - "time-stamp": "1.1.0" + "chalk": "^1.1.1", + "time-stamp": "^1.0.0" } }, "fast-deep-equal": { @@ -826,7 +889,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "file-type": { @@ -847,11 +910,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-index": { @@ -861,12 +924,12 @@ "dev": true }, "find-java-home": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.1.4.tgz", - "integrity": "sha1-7OvcYZFKmJLiPlXoWseYSUW30AI=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.2.0.tgz", + "integrity": "sha512-nq5PFOHxE1VSEbdDVkLoA2bAcRnG4ETqJO8ipFq3glIWA52hdWCXYX3emuUyMAQfaqFU4Ea85gqcgaPmOApEPA==", "requires": { - "which": "1.0.9", - "winreg": "1.2.4" + "which": "~1.0.5", + "winreg": "~1.2.2" } }, "findup-sync": { @@ -875,10 +938,10 @@ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "dev": true, "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" } }, "fined": { @@ -887,11 +950,11 @@ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.1" + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" }, "dependencies": { "expand-tilde": { @@ -900,7 +963,7 @@ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "homedir-polyfill": "^1.0.1" } } } @@ -929,7 +992,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -944,9 +1007,9 @@ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "from": { @@ -972,10 +1035,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "dependencies": { "graceful-fs": { @@ -992,7 +1055,7 @@ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", "dev": true, "requires": { - "globule": "0.1.0" + "globule": "~0.1.0" } }, "generate-function": { @@ -1007,7 +1070,7 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "get-stream": { @@ -1016,8 +1079,8 @@ "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" }, "dependencies": { "object-assign": { @@ -1034,7 +1097,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -1042,12 +1105,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -1056,8 +1119,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -1066,7 +1129,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "glob-stream": { @@ -1075,12 +1138,12 @@ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dev": true, "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" }, "dependencies": { "glob": { @@ -1089,10 +1152,10 @@ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" } }, "minimatch": { @@ -1101,7 +1164,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.0.0" } }, "readable-stream": { @@ -1110,10 +1173,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -1122,8 +1185,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1134,7 +1197,7 @@ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { - "gaze": "0.5.2" + "gaze": "^0.5.1" } }, "glob2base": { @@ -1143,7 +1206,7 @@ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", "dev": true, "requires": { - "find-index": "0.1.1" + "find-index": "^0.1.1" } }, "global-modules": { @@ -1152,8 +1215,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" } }, "global-prefix": { @@ -1162,10 +1225,10 @@ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "homedir-polyfill": "1.0.1", - "ini": "1.3.4", - "is-windows": "0.2.0", - "which": "1.3.0" + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" }, "dependencies": { "which": { @@ -1185,9 +1248,9 @@ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dev": true, "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" }, "dependencies": { "glob": { @@ -1196,9 +1259,9 @@ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" } }, "graceful-fs": { @@ -1219,8 +1282,8 @@ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "lru-cache": "2", + "sigmund": "~1.0.0" } } } @@ -1231,7 +1294,7 @@ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "graceful-fs": { @@ -1240,7 +1303,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "1.1.0" + "natives": "^1.1.0" } }, "graceful-readlink": { @@ -1261,19 +1324,19 @@ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.0.4", - "liftoff": "2.3.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" } }, "gulp-chmod": { @@ -1282,9 +1345,9 @@ "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", "dev": true, "requires": { - "deep-assign": "1.0.0", - "stat-mode": "0.2.2", - "through2": "2.0.3" + "deep-assign": "^1.0.0", + "stat-mode": "^0.2.0", + "through2": "^2.0.0" } }, "gulp-decompress": { @@ -1293,10 +1356,10 @@ "integrity": "sha1-EAKYk66NzSkrO2Ojb8+GFOPSe90=", "dev": true, "requires": { - "archive-type": "3.2.0", - "decompress": "4.2.0", - "gulp-util": "3.0.8", - "readable-stream": "2.3.3" + "archive-type": "^3.0.0", + "decompress": "^4.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -1311,13 +1374,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1326,7 +1389,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1337,10 +1400,10 @@ "integrity": "sha1-VKMBj8YZs0HM9kkWBvet8L08c5c=", "dev": true, "requires": { - "gulp-util": "3.0.8", - "request": "2.83.0", - "request-progress": "3.0.0", - "through": "2.3.8" + "gulp-util": "latest", + "request": "latest", + "request-progress": "latest", + "through": "latest" }, "dependencies": { "gulp-util": { @@ -1349,24 +1412,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.0", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "through2": "^2.0.0", + "vinyl": "^0.5.0" } }, "through": { @@ -1383,9 +1446,9 @@ "integrity": "sha512-5olRzAhFdXB2klCu1lnazP65aO9YdA/5WfC9VdInIc8PrUeDIoZfaA3Edb0yUBGhVdHv4eHKL9Fg5tUoEJ9z5A==", "dev": true, "requires": { - "gulp-util": "3.0.8", - "multimatch": "2.1.0", - "streamfilter": "1.0.5" + "gulp-util": "^3.0.6", + "multimatch": "^2.0.0", + "streamfilter": "^1.0.5" } }, "gulp-gunzip": { @@ -1394,8 +1457,8 @@ "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", "dev": true, "requires": { - "through2": "0.6.5", - "vinyl": "0.4.6" + "through2": "~0.6.5", + "vinyl": "~0.4.6" }, "dependencies": { "clone": { @@ -1410,10 +1473,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -1422,8 +1485,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -1432,8 +1495,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -1444,11 +1507,11 @@ "integrity": "sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=", "dev": true, "requires": { - "event-stream": "3.3.4", - "node.extend": "1.1.6", - "request": "2.79.0", - "through2": "2.0.3", - "vinyl": "2.0.2" + "event-stream": "~3.3.4", + "node.extend": "~1.1.2", + "request": "~2.79.0", + "through2": "~2.0.3", + "vinyl": "~2.0.1" }, "dependencies": { "assert-plus": { @@ -1469,7 +1532,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "caseless": { @@ -1496,7 +1559,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -1505,9 +1568,9 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-validator": { @@ -1516,10 +1579,10 @@ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.1", - "pinkie-promise": "2.0.1" + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" } }, "hawk": { @@ -1528,10 +1591,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -1546,9 +1609,9 @@ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "qs": { @@ -1569,26 +1632,26 @@ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "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", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" } }, "sntp": { @@ -1597,7 +1660,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "tunnel-agent": { @@ -1612,13 +1675,13 @@ "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=", "dev": true, "requires": { - "clone": "1.0.2", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.0.0", - "is-stream": "1.1.0", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^1.0.0", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "is-stream": "^1.1.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -1629,11 +1692,11 @@ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "dev": true, "requires": { - "convert-source-map": "1.5.0", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "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": { "graceful-fs": { @@ -1648,7 +1711,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "vinyl": { @@ -1657,8 +1720,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1670,10 +1733,10 @@ "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", "dev": true, "requires": { - "event-stream": "3.3.4", - "mkdirp": "0.5.1", - "queue": "3.1.0", - "vinyl-fs": "2.4.4" + "event-stream": "^3.3.1", + "mkdirp": "^0.5.1", + "queue": "^3.1.0", + "vinyl-fs": "^2.4.3" }, "dependencies": { "glob": { @@ -1682,11 +1745,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -1695,8 +1758,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "glob-stream": { @@ -1705,14 +1768,14 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "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", + "unique-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -1727,10 +1790,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -1745,8 +1808,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1769,7 +1832,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "isarray": { @@ -1790,8 +1853,8 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "dev": true, "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.3" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "readable-stream": { @@ -1800,13 +1863,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1815,7 +1878,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-bom": { @@ -1824,7 +1887,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "unique-stream": { @@ -1833,8 +1896,8 @@ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } }, "vinyl": { @@ -1843,8 +1906,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -1854,36 +1917,87 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.1", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.3", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.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", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" } } } }, "gulp-tslint": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.2.tgz", - "integrity": "sha512-0RNGqbp2TKPdbG+sWU3mNMXEMuF/noY1KS4+jd5lOStkvuFINkFL29dHX3IT1u+vVFD4Glwf+lkcdR2QMVNMzA==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.3.tgz", + "integrity": "sha512-KEP350N5B9Jg6o6jnyCyKVBPemJePYpMsGfIQq0G0ErvY7tw4Lrfb/y3L4WRf7ek0OsaE8nnj86w+lcLXW8ovw==", "dev": true, "requires": { - "gulp-util": "3.0.8", - "map-stream": "0.0.7", - "through": "2.3.8" + "@types/fancy-log": "1.3.0", + "chalk": "2.3.1", + "fancy-log": "1.3.2", + "map-stream": "~0.0.7", + "plugin-error": "1.0.1", + "through": "~2.3.8" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.2.0" + } + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "gulp-untar": { @@ -1892,11 +2006,11 @@ "integrity": "sha1-1r3v3n6ajgVMnxYjhaB4LEvnQAA=", "dev": true, "requires": { - "event-stream": "3.3.4", - "gulp-util": "3.0.8", - "streamifier": "0.1.1", - "tar": "2.2.1", - "through2": "2.0.3" + "event-stream": "~3.3.4", + "gulp-util": "~3.0.8", + "streamifier": "~0.1.1", + "tar": "^2.2.1", + "through2": "~2.0.3" } }, "gulp-util": { @@ -1905,24 +2019,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.0", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "through2": "^2.0.0", + "vinyl": "^0.5.0" } }, "gulp-vinyl-zip": { @@ -1931,13 +2045,13 @@ "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", "dev": true, "requires": { - "event-stream": "3.3.4", - "queue": "4.4.2", - "through2": "2.0.3", - "vinyl": "2.1.0", - "vinyl-fs": "2.4.4", - "yauzl": "2.9.1", - "yazl": "2.4.3" + "event-stream": "^3.3.1", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^2.0.0", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" }, "dependencies": { "clone": { @@ -1958,11 +2072,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -1971,8 +2085,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "glob-stream": { @@ -1981,14 +2095,14 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "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", + "unique-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -2003,10 +2117,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -2021,8 +2135,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -2045,7 +2159,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "isarray": { @@ -2066,8 +2180,8 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "dev": true, "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.3" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "queue": { @@ -2076,7 +2190,7 @@ "integrity": "sha1-Wpcz2ai4vRs26TS8nFWribKOKcc=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "readable-stream": { @@ -2085,13 +2199,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "replace-ext": { @@ -2106,7 +2220,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-bom": { @@ -2115,7 +2229,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "unique-stream": { @@ -2124,8 +2238,8 @@ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } }, "vinyl": { @@ -2134,12 +2248,12 @@ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "dev": true, "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.0.0", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "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" } }, "vinyl-fs": { @@ -2148,23 +2262,23 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.1", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.3", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.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", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "clone": { @@ -2191,8 +2305,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -2206,7 +2320,7 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "1.0.0" + "glogg": "^1.0.0" } }, "har-schema": { @@ -2221,8 +2335,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.3.0", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -2231,7 +2345,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2246,7 +2360,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "hawk": { @@ -2255,10 +2369,10 @@ "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "he": { @@ -2279,7 +2393,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" } }, "http-signature": { @@ -2288,9 +2402,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "ieee754": { @@ -2304,8 +2418,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2337,8 +2451,8 @@ "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", "dev": true, "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" + "is-relative": "^0.2.1", + "is-windows": "^0.2.0" } }, "is-buffer": { @@ -2359,7 +2473,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -2380,7 +2494,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-my-json-valid": { @@ -2389,10 +2503,10 @@ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-natural-number": { @@ -2407,7 +2521,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-obj": { @@ -2422,7 +2536,7 @@ "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -2457,7 +2571,7 @@ "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", "dev": true, "requires": { - "is-unc-path": "0.1.2" + "is-unc-path": "^0.1.1" } }, "is-stream": { @@ -2478,7 +2592,7 @@ "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", "dev": true, "requires": { - "unc-path-regex": "0.1.2" + "unc-path-regex": "^0.1.0" } }, "is-utf8": { @@ -2540,6 +2654,16 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "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==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -2565,7 +2689,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2610,7 +2734,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazystream": { @@ -2619,7 +2743,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.5" }, "dependencies": { "isarray": { @@ -2634,13 +2758,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -2649,7 +2773,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -2660,15 +2784,15 @@ "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", "dev": true, "requires": { - "extend": "3.0.1", - "findup-sync": "0.4.3", - "fined": "1.1.0", - "flagged-respawn": "0.3.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mapvalues": "4.6.0", - "rechoir": "0.6.2", - "resolve": "1.5.0" + "extend": "^3.0.0", + "findup-sync": "^0.4.2", + "fined": "^1.0.1", + "flagged-respawn": "^0.3.2", + "lodash.isplainobject": "^4.0.4", + "lodash.isstring": "^4.0.1", + "lodash.mapvalues": "^4.4.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" } }, "lodash": { @@ -2683,8 +2807,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -2753,9 +2877,9 @@ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.escape": { @@ -2764,7 +2888,7 @@ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "lodash._root": "3.0.1" + "lodash._root": "^3.0.0" } }, "lodash.isarguments": { @@ -2803,9 +2927,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.mapvalues": { @@ -2826,15 +2950,15 @@ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" } }, "lodash.templatesettings": { @@ -2843,8 +2967,8 @@ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" } }, "lru-cache": { @@ -2859,7 +2983,7 @@ "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -2888,7 +3012,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.1" }, "dependencies": { "isarray": { @@ -2903,13 +3027,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -2918,7 +3042,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -2929,19 +3053,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "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" } }, "mime-db": { @@ -2956,7 +3080,7 @@ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -2964,7 +3088,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3016,7 +3140,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "glob": { @@ -3025,12 +3149,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "supports-color": { @@ -3039,7 +3163,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -3056,10 +3180,10 @@ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "multipipe": { @@ -3083,7 +3207,7 @@ "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", "dev": true, "requires": { - "is": "3.2.1" + "is": "^3.1.0" } }, "normalize-path": { @@ -3092,7 +3216,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "oauth-sign": { @@ -3113,10 +3237,10 @@ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", "dev": true, "requires": { - "array-each": "1.0.1", - "array-slice": "1.0.0", - "for-own": "1.0.0", - "isobject": "3.0.1" + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { "for-own": { @@ -3125,7 +3249,7 @@ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "isobject": { @@ -3142,8 +3266,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -3152,7 +3276,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -3168,7 +3292,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "orchestrator": { @@ -3177,9 +3301,9 @@ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", "dev": true, "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.0" + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" } }, "ordered-read-streams": { @@ -3205,9 +3329,9 @@ "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", "dev": true, "requires": { - "is-absolute": "0.2.6", - "map-cache": "0.2.2", - "path-root": "0.1.1" + "is-absolute": "^0.2.3", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" } }, "parse-glob": { @@ -3216,10 +3340,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-passwd": { @@ -3256,7 +3380,7 @@ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", "dev": true, "requires": { - "path-root-regex": "0.1.2" + "path-root-regex": "^0.1.0" } }, "path-root-regex": { @@ -3271,7 +3395,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pend": { @@ -3304,7 +3428,46 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, "preserve": { @@ -3349,7 +3512,7 @@ "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "randomatic": { @@ -3358,8 +3521,8 @@ "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -3368,7 +3531,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3377,7 +3540,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3388,7 +3551,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3399,10 +3562,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "rechoir": { @@ -3411,7 +3574,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.5.0" + "resolve": "^1.1.6" } }, "regex-cache": { @@ -3420,7 +3583,7 @@ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -3453,28 +3616,28 @@ "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "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", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "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", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-progress": { @@ -3483,7 +3646,7 @@ "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", "dev": true, "requires": { - "throttleit": "1.0.0" + "throttleit": "^1.0.0" } }, "requires-port": { @@ -3498,7 +3661,7 @@ "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-dir": { @@ -3507,8 +3670,8 @@ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" } }, "rimraf": { @@ -3517,7 +3680,7 @@ "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -3532,7 +3695,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "2.8.1" + "commander": "~2.8.1" } }, "semver": { @@ -3559,7 +3722,7 @@ "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "source-map": { @@ -3574,7 +3737,7 @@ "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" } }, "sparkles": { @@ -3589,23 +3752,29 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "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.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "stat-mode": { @@ -3620,7 +3789,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-consume": { @@ -3641,7 +3810,7 @@ "integrity": "sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -3656,13 +3825,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -3671,7 +3840,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -3700,7 +3869,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -3709,8 +3878,8 @@ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "is-utf8": "0.2.1" + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" } }, "strip-bom-stream": { @@ -3719,8 +3888,8 @@ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" }, "dependencies": { "strip-bom": { @@ -3729,7 +3898,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -3740,7 +3909,7 @@ "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", "dev": true, "requires": { - "is-natural-number": "4.0.1" + "is-natural-number": "^4.0.1" } }, "supports-color": { @@ -3755,9 +3924,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-stream": { @@ -3766,10 +3935,10 @@ "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" }, "dependencies": { "end-of-stream": { @@ -3778,7 +3947,7 @@ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "isarray": { @@ -3793,13 +3962,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -3808,7 +3977,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -3831,8 +4000,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "isarray": { @@ -3847,13 +4016,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -3862,7 +4031,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -3873,8 +4042,8 @@ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", "dev": true, "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, "tildify": { @@ -3883,7 +4052,7 @@ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "time-stamp": { @@ -3897,7 +4066,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } }, "to-absolute-glob": { @@ -3906,7 +4075,7 @@ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" } }, "tough-cookie": { @@ -3915,90 +4084,91 @@ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", "dev": true }, "tslint": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz", - "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.3.0", - "commander": "2.11.0", - "diff": "3.2.0", - "glob": "7.1.2", - "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.4.1", - "tslib": "1.8.0", - "tsutils": "2.12.2" + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^3.0.0" } } } }, "tsutils": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.2.tgz", - "integrity": "sha1-rVikhl0X7D3bZjG2ylO+FKVlb/M=", + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.2.tgz", + "integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==", "dev": true, "requires": { - "tslib": "1.8.0" + "tslib": "^1.8.1" } }, "tunnel-agent": { @@ -4007,7 +4177,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -4029,8 +4199,8 @@ "integrity": "sha1-c6AzpWe7veWWVLGTxE1Ip+T0PEc=", "dev": true, "requires": { - "buffer": "3.6.0", - "through": "2.3.8" + "buffer": "^3.0.1", + "through": "^2.3.6" } }, "unc-path-regex": { @@ -4051,8 +4221,8 @@ "integrity": "sha1-OhnoqqbQI93SfcxEy0/I9/7COYY=", "dev": true, "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" + "querystringify": "~1.0.0", + "requires-port": "~1.0.0" } }, "user-home": { @@ -4079,7 +4249,7 @@ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "1.1.1" + "user-home": "^1.1.1" } }, "vali-date": { @@ -4094,9 +4264,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vinyl": { @@ -4105,8 +4275,8 @@ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -4116,14 +4286,14 @@ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", "dev": true, "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" }, "dependencies": { "clone": { @@ -4138,10 +4308,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -4150,8 +4320,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -4160,8 +4330,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -4172,8 +4342,8 @@ "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=", "dev": true, "requires": { - "through2": "0.6.5", - "vinyl": "0.4.6" + "through2": "^0.6.1", + "vinyl": "^0.4.3" }, "dependencies": { "clone": { @@ -4188,10 +4358,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -4200,8 +4370,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -4222,20 +4392,20 @@ "integrity": "sha1-Ru0a+iwbnWifY5TI8WvR1xkPdfs=", "dev": true, "requires": { - "glob": "7.1.2", - "gulp-chmod": "2.0.0", - "gulp-filter": "5.0.1", + "glob": "^7.1.2", + "gulp-chmod": "^2.0.0", + "gulp-filter": "^5.0.1", "gulp-gunzip": "1.0.0", - "gulp-remote-src": "0.4.3", - "gulp-symdest": "1.1.0", - "gulp-untar": "0.0.6", - "gulp-vinyl-zip": "2.1.0", - "mocha": "4.0.1", - "request": "2.83.0", - "semver": "5.4.1", - "source-map-support": "0.5.0", - "url-parse": "1.2.0", - "vinyl-source-stream": "1.1.0" + "gulp-remote-src": "^0.4.3", + "gulp-symdest": "^1.1.0", + "gulp-untar": "^0.0.6", + "gulp-vinyl-zip": "^2.1.0", + "mocha": "^4.0.1", + "request": "^2.83.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "url-parse": "^1.1.9", + "vinyl-source-stream": "^1.1.0" }, "dependencies": { "commander": { @@ -4311,7 +4481,7 @@ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.0.tgz", "integrity": "sha1-NtAswYaoNlpEZ3GaKQ+yAKmuSQo=", "requires": { - "vscode-languageserver-protocol": "3.5.0" + "vscode-languageserver-protocol": "^3.5.0" }, "dependencies": { "vscode-jsonrpc": { @@ -4324,8 +4494,8 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.0.tgz", "integrity": "sha1-Bnxcvidwl5U5jRGWksl+u6FFIgk=", "requires": { - "vscode-jsonrpc": "3.5.0", - "vscode-languageserver-types": "3.5.0" + "vscode-jsonrpc": "^3.5.0", + "vscode-languageserver-types": "^3.5.0" } }, "vscode-languageserver-types": { @@ -4362,8 +4532,8 @@ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" } }, "yazl": { @@ -4372,7 +4542,7 @@ "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=", "dev": true, "requires": { - "buffer-crc32": "0.2.13" + "buffer-crc32": "~0.2.3" } } } diff --git a/package.json b/package.json index 358e4b20f..85614c49c 100644 --- a/package.json +++ b/package.json @@ -321,14 +321,14 @@ "@types/mocha": "^2.2.39", "@types/glob": "5.0.30", "gulp": "^3.9.1", - "gulp-tslint": "^8.1.1", - "tslint": "^5.5.0", + "gulp-tslint": "^8.1.3", + "tslint": "^5.9.1", "gulp-decompress": "2.0.1", "gulp-download": "0.0.1" }, "dependencies": { "vscode-languageclient": "^3.5.0", - "find-java-home": "0.1.4", + "find-java-home": "0.2.0", "tmp": "^0.0.31", "path-exists": "^3.0.0", "expand-home-dir": "^0.0.3", From dd96808ee87738ffe5d422043c7a7d0f9cf4ac9e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 7 May 2018 14:40:28 -0400 Subject: [PATCH 0294/1435] Add on-type formatting Signed-off-by: Fred Bricon --- package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package.json b/package.json index 85614c49c..d6b3817ba 100644 --- a/package.json +++ b/package.json @@ -235,6 +235,12 @@ "description": "Includes the comments during code formatting.", "default": true, "scope": "window" + }, + "java.format.onType.enabled": { + "type": "boolean", + "description": "Enable/disable automatic block formatting when typing `;`, `` or `}`", + "default": true, + "scope": "window" } } }, From 239965703a6d9d27c533f91d41bc35a3ecff5f50 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Sun, 6 May 2018 21:36:07 -0400 Subject: [PATCH 0295/1435] Update vscode-language-client and vscode upates to new versions Signed-off-by: Gorkem Ercan --- package-lock.json | 1008 +++++++++++++++++++-------------------------- package.json | 10 +- 2 files changed, 439 insertions(+), 579 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6bbbc51ea..1ebee6f5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,10 +39,9 @@ "dev": true }, "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -59,6 +58,15 @@ "ansi-wrap": "^0.1.0" } }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", @@ -68,17 +76,24 @@ "ansi-wrap": "0.1.0" } }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "ansi-wrap": { "version": "0.1.0", @@ -134,8 +149,7 @@ "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" }, "array-each": { "version": "1.0.1", @@ -161,8 +175,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.2.1", @@ -179,14 +192,12 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -197,20 +208,17 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "babel-code-frame": { "version": "6.26.0", @@ -238,7 +246,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -247,8 +254,7 @@ "beeper": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" }, "bl": { "version": "1.2.1", @@ -304,7 +310,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, "requires": { "hoek": "4.x.x" } @@ -360,6 +365,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -369,14 +380,12 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -388,8 +397,7 @@ "clone": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" }, "clone-buffer": { "version": "1.0.0", @@ -400,25 +408,61 @@ "clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" }, "cloneable-readable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", - "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "dev": true, "requires": { "inherits": "^2.0.1", - "process-nextick-args": "^1.0.6", - "through2": "^2.0.1" + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + } } }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "color-convert": { "version": "1.9.1", @@ -442,10 +486,9 @@ "dev": true }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "~1.0.0" } @@ -465,22 +508,20 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, "requires": { "boom": "5.x.x" }, @@ -488,8 +529,7 @@ "boom": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", - "dev": true, + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { "hoek": "4.x.x" } @@ -500,7 +540,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -508,8 +547,7 @@ "dateformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" }, "debug": { "version": "2.6.8", @@ -636,8 +674,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "deprecated": { "version": "0.0.1", @@ -670,15 +707,14 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, "requires": { "readable-stream": "~1.1.9" } }, "duplexify": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", - "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -688,9 +724,9 @@ }, "dependencies": { "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "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" @@ -702,25 +738,31 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "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" @@ -732,7 +774,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" @@ -761,8 +802,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { "version": "4.0.0", @@ -778,7 +818,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -834,16 +874,23 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "kind-of": "^1.1.0" + }, + "dependencies": { + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + } } }, "extglob": { @@ -858,30 +905,26 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fancy-log": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", - "dev": true, "requires": { "chalk": "^1.1.1", "time-stamp": "^1.0.0" } }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fd-slicer": { "version": "1.0.1", @@ -998,17 +1041,15 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "dev": true, + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", + "combined-stream": "1.0.6", "mime-types": "^2.1.12" } }, @@ -1058,21 +1099,6 @@ "globule": "~0.1.0" } }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, "get-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", @@ -1095,7 +1121,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -1237,7 +1262,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } } } @@ -1292,7 +1317,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true, "requires": { "sparkles": "^1.0.0" } @@ -1399,18 +1423,11 @@ "resolved": "https://registry.npmjs.org/gulp-download/-/gulp-download-0.0.1.tgz", "integrity": "sha1-VKMBj8YZs0HM9kkWBvet8L08c5c=", "dev": true, - "requires": { - "gulp-util": "latest", - "request": "latest", - "request-progress": "latest", - "through": "latest" - }, "dependencies": { "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, "requires": { "array-differ": "^1.0.0", "array-uniq": "^1.0.2", @@ -1432,23 +1449,88 @@ "vinyl": "^0.5.0" } }, + "request": { + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "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", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" } } }, "gulp-filter": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.0.1.tgz", - "integrity": "sha512-5olRzAhFdXB2klCu1lnazP65aO9YdA/5WfC9VdInIc8PrUeDIoZfaA3Edb0yUBGhVdHv4eHKL9Fg5tUoEJ9z5A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz", + "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", "dev": true, "requires": { - "gulp-util": "^3.0.6", "multimatch": "^2.0.0", + "plugin-error": "^0.1.2", "streamfilter": "^1.0.5" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } } }, "gulp-gunzip": { @@ -1501,44 +1583,23 @@ } } }, - "gulp-remote-src": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz", - "integrity": "sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=", + "gulp-remote-src-vscode": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.0.tgz", + "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", "dev": true, "requires": { - "event-stream": "~3.3.4", - "node.extend": "~1.1.2", - "request": "~2.79.0", - "through2": "~2.0.3", - "vinyl": "~2.0.1" + "event-stream": "^3.3.4", + "node.extend": "^1.1.2", + "request": "^2.79.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" }, "dependencies": { - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", "dev": true }, "clone-stats": { @@ -1547,139 +1608,22 @@ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", "dev": true }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "qs": "~6.3.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1", - "uuid": "^3.0.0" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - }, "vinyl": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz", - "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "dev": true, "requires": { - "clone": "^1.0.0", + "clone": "^2.1.1", "clone-buffer": "^1.0.0", "clone-stats": "^1.0.0", "cloneable-readable": "^1.0.0", - "is-stream": "^1.1.0", "remove-trailing-separator": "^1.0.1", "replace-ext": "^1.0.0" } @@ -1857,25 +1801,31 @@ "readable-stream": "^2.0.1" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "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" @@ -2184,27 +2134,33 @@ "readable-stream": "^2.0.1" } }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "queue": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha1-Wpcz2ai4vRs26TS8nFWribKOKcc=", + "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", "dev": true, "requires": { "inherits": "~2.0.0" } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2215,9 +2171,9 @@ "dev": true }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "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" @@ -2282,9 +2238,9 @@ }, "dependencies": { "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, "clone-stats": { @@ -2318,7 +2274,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, "requires": { "glogg": "^1.0.0" } @@ -2326,14 +2281,12 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "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=", - "dev": true, "requires": { "ajv": "^5.1.0", "har-schema": "^2.0.0" @@ -2343,7 +2296,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2358,7 +2310,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, "requires": { "sparkles": "^1.0.0" } @@ -2366,8 +2317,7 @@ "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", - "dev": true, + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { "boom": "4.x.x", "cryptiles": "3.x.x", @@ -2382,10 +2332,9 @@ "dev": true }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", - "dev": true + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, "homedir-polyfill": { "version": "1.0.1", @@ -2400,7 +2349,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -2497,18 +2445,6 @@ "is-extglob": "^1.0.0" } }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -2559,12 +2495,6 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-relative": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", @@ -2583,8 +2513,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-unc-path": { "version": "0.1.2", @@ -2616,8 +2545,7 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -2645,8 +2573,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-tokens": { "version": "3.0.2", @@ -2668,20 +2595,17 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true + "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=", - "dev": true + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, "json-stable-stringify": { "version": "1.0.1", @@ -2695,8 +2619,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { "version": "3.3.2", @@ -2710,17 +2633,10 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -2752,25 +2668,31 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "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" @@ -2814,8 +2736,7 @@ "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, "lodash._basecreate": { "version": "3.0.3", @@ -2826,50 +2747,42 @@ "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" }, "lodash._basevalues": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" }, "lodash._reescape": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" }, "lodash._reevaluate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "lodash._root": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" }, "lodash.create": { "version": "3.1.1", @@ -2886,7 +2799,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, "requires": { "lodash._root": "^3.0.0" } @@ -2894,14 +2806,12 @@ "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, "lodash.isequal": { "version": "4.5.0", @@ -2925,7 +2835,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, "requires": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", @@ -2941,14 +2850,12 @@ "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, "lodash.template": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, "requires": { "lodash._basecopy": "^3.0.0", "lodash._basetostring": "^3.0.0", @@ -2965,7 +2872,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.escape": "^3.0.0" @@ -3021,25 +2927,31 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "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" @@ -3069,18 +2981,16 @@ } }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true + "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==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, + "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==", "requires": { - "mime-db": "~1.30.0" + "mime-db": "~1.33.0" } }, "minimatch": { @@ -3094,8 +3004,7 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mkdirp": { "version": "0.5.1", @@ -3190,7 +3099,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, "requires": { "duplexer2": "0.0.2" } @@ -3222,14 +3130,12 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" }, "object.defaults": { "version": "1.1.0", @@ -3407,8 +3313,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { "version": "2.3.0", @@ -3485,25 +3390,22 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=", - "dev": true + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", "dev": true }, "queue": { @@ -3560,7 +3462,6 @@ "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -3607,13 +3508,12 @@ "replace-ext": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -3640,15 +3540,6 @@ "uuid": "^3.1.0" } }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "dev": true, - "requires": { - "throttleit": "^1.0.0" - } - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -3677,7 +3568,7 @@ "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -3686,8 +3577,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", - "dev": true + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" }, "seek-bzip": { "version": "1.0.5", @@ -3719,8 +3609,7 @@ "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", - "dev": true, + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { "hoek": "4.x.x" } @@ -3732,19 +3621,19 @@ "dev": true }, "source-map-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", - "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sparkles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" }, "split": { "version": "0.3.3", @@ -3762,10 +3651,9 @@ "dev": true }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -3805,9 +3693,9 @@ "dev": true }, "streamfilter": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.5.tgz", - "integrity": "sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", + "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -3819,25 +3707,31 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "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" @@ -3854,20 +3748,17 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3915,8 +3806,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "tar": { "version": "2.2.1", @@ -3982,12 +3872,6 @@ } } }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3998,7 +3882,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" @@ -4007,14 +3890,12 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4029,7 +3910,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -4058,8 +3938,7 @@ "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" }, "tmp": { "version": "0.0.31", @@ -4076,13 +3955,23 @@ "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" + } + } } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "^1.4.1" } @@ -4175,7 +4064,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -4184,7 +4072,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, "optional": true }, "typescript": { @@ -4216,13 +4103,13 @@ "dev": true }, "url-parse": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", - "integrity": "sha1-OhnoqqbQI93SfcxEy0/I9/7COYY=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", "dev": true, "requires": { - "querystringify": "~1.0.0", - "requires-port": "~1.0.0" + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" } }, "user-home": { @@ -4234,14 +4121,12 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "v8flags": { "version": "2.1.1", @@ -4262,7 +4147,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -4273,7 +4157,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, "requires": { "clone": "^1.0.0", "clone-stats": "^0.0.1", @@ -4337,12 +4220,12 @@ } }, "vinyl-source-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz", - "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", + "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", "dev": true, "requires": { - "through2": "^0.6.1", + "through2": "^2.0.3", "vinyl": "^0.4.3" }, "dependencies": { @@ -4352,51 +4235,29 @@ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", "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=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, "vinyl": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } }, "vscode": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.6.tgz", - "integrity": "sha1-Ru0a+iwbnWifY5TI8WvR1xkPdfs=", + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.17.tgz", + "integrity": "sha512-yNMyrgEua2qyW7+trNNYhA6PeldRrBcwtLtlazkdtzcmkHMKECM/08bPF8HF2ZFuwHgD+8FQsdqd/DvJYQYjJg==", "dev": true, "requires": { "glob": "^7.1.2", "gulp-chmod": "^2.0.0", "gulp-filter": "^5.0.1", "gulp-gunzip": "1.0.0", - "gulp-remote-src": "^0.4.3", + "gulp-remote-src-vscode": "^0.5.0", "gulp-symdest": "^1.1.0", "gulp-untar": "^0.0.6", "gulp-vinyl-zip": "^2.1.0", @@ -4442,9 +4303,9 @@ "dev": true }, "mocha": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", - "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -4460,9 +4321,9 @@ } }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "supports-color": { @@ -4471,40 +4332,38 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } }, + "vscode-jsonrpc": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.1.tgz", + "integrity": "sha512-+Eb+Dxf2kC2h079msx61hkblxAKE0S2j78+8QpnigLAO2aIIjkCwTIH34etBrU8E8VItRinec7YEwULx9at5bQ==" + }, "vscode-languageclient": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.0.tgz", - "integrity": "sha1-NtAswYaoNlpEZ3GaKQ+yAKmuSQo=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.1.3.tgz", + "integrity": "sha512-3tu79B56apocobPGkHm7YWobjhNKCU7H4cUk+rkVFCNoOSAm2wZlN2J6HdC15/ONALY4ai25BeyQ+aQaFmM1Jg==", "requires": { - "vscode-languageserver-protocol": "^3.5.0" - }, - "dependencies": { - "vscode-jsonrpc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.5.0.tgz", - "integrity": "sha1-hyOdnhZrLXNSJFuKgTWXgEwdY6o=" - }, - "vscode-languageserver-protocol": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.0.tgz", - "integrity": "sha1-Bnxcvidwl5U5jRGWksl+u6FFIgk=", - "requires": { - "vscode-jsonrpc": "^3.5.0", - "vscode-languageserver-types": "^3.5.0" - } - }, - "vscode-languageserver-types": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz", - "integrity": "sha1-5I15li8LjgLelV4/UkkI4rGcA3Q=" - } + "vscode-languageserver-protocol": "^3.7.0" + } + }, + "vscode-languageserver-protocol": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.7.1.tgz", + "integrity": "sha512-AKX9XQ49m/lpiDLZJBypFNc5eAXNlSecunYU5m4o5WIwGgW86TWnXVdziuFm47W2SdigDa/jVbxLPSNUeut9fQ==", + "requires": { + "vscode-jsonrpc": "^3.6.0", + "vscode-languageserver-types": "^3.7.0" } }, + "vscode-languageserver-types": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.7.1.tgz", + "integrity": "sha512-ftGfU79AnnI3OHCG7kzCCN47jNI7BjECPAH2yhddtYTiQk0bnFbuFeQKvpXQcyNI3GsKEx5b6kSiBYshTiep6w==" + }, "which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", @@ -4523,8 +4382,7 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "yauzl": { "version": "2.9.1", diff --git a/package.json b/package.json index d6b3817ba..36f2361b1 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.15.0" + "vscode": "^1.22.0" }, "repository": { "type": "git", @@ -18,7 +18,9 @@ }, "categories": [ "Programming Languages", - "Linters" + "Linters", + "Formatters", + "Snippets" ], "keywords": [ "multi-root ready" @@ -321,7 +323,7 @@ }, "devDependencies": { "typescript": "^2.3.4", - "vscode": "^1.1.4", + "vscode": "^1.1.17", "mocha": "^3.2.0", "@types/node": "^6.0.40", "@types/mocha": "^2.2.39", @@ -333,7 +335,7 @@ "gulp-download": "0.0.1" }, "dependencies": { - "vscode-languageclient": "^3.5.0", + "vscode-languageclient": "^4.1.3", "find-java-home": "0.2.0", "tmp": "^0.0.31", "path-exists": "^3.0.0", From 8413386f6dd9860846521ea70658516d0c1c2eb4 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 15 May 2018 13:09:27 -0400 Subject: [PATCH 0296/1435] Declare classFileContents support Signed-off-by: Fred Bricon --- src/extension.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 506ca0531..5c0a92111 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -61,7 +61,8 @@ export function activate(context: ExtensionContext) { workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null, settings: { java: getJavaConfiguration() }, extendedClientCapabilities:{ - progressReportProvider:getJavaConfiguration().get('progressReports.enabled') + progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), + classFileContentsSupport:true } }, revealOutputChannelOn: RevealOutputChannelOn.Never From dc8594489a3d11de561ee3ce202e40ebe38dc4ca Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 15 May 2018 18:05:06 -0400 Subject: [PATCH 0297/1435] Update package-lock.json Signed-off-by: Fred Bricon --- package-lock.json | 259 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 192 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ebee6f5a..702759698 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -88,12 +89,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "ansi-wrap": { "version": "0.1.0", @@ -149,7 +152,8 @@ "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true }, "array-each": { "version": "1.0.1", @@ -175,7 +179,8 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true }, "array-unique": { "version": "0.2.1", @@ -192,12 +197,14 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -208,17 +215,20 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", @@ -246,6 +256,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -254,7 +265,8 @@ "beeper": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true }, "bl": { "version": "1.2.1", @@ -310,6 +322,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, "requires": { "hoek": "4.x.x" } @@ -380,12 +393,14 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -397,7 +412,8 @@ "clone": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true }, "clone-buffer": { "version": "1.0.0", @@ -408,7 +424,8 @@ "clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true }, "cloneable-readable": { "version": "1.1.2", @@ -462,7 +479,8 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "color-convert": { "version": "1.9.1", @@ -489,6 +507,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -516,12 +535,14 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, "requires": { "boom": "5.x.x" }, @@ -530,6 +551,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, "requires": { "hoek": "4.x.x" } @@ -540,6 +562,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -547,7 +570,8 @@ "dateformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true }, "debug": { "version": "2.6.8", @@ -674,7 +698,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "deprecated": { "version": "0.0.1", @@ -707,6 +732,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, "requires": { "readable-stream": "~1.1.9" } @@ -774,6 +800,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" @@ -802,7 +829,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.0", @@ -874,7 +902,8 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true }, "extend-shallow": { "version": "1.1.4", @@ -905,12 +934,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fancy-log": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true, "requires": { "chalk": "^1.1.1", "time-stamp": "^1.0.0" @@ -919,12 +950,14 @@ "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=" + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fd-slicer": { "version": "1.0.1", @@ -1041,12 +1074,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "1.0.6", @@ -1121,6 +1156,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -1317,6 +1353,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, "requires": { "sparkles": "^1.0.0" } @@ -1423,11 +1460,18 @@ "resolved": "https://registry.npmjs.org/gulp-download/-/gulp-download-0.0.1.tgz", "integrity": "sha1-VKMBj8YZs0HM9kkWBvet8L08c5c=", "dev": true, + "requires": { + "gulp-util": "latest", + "request": "latest", + "request-progress": "latest", + "through": "latest" + }, "dependencies": { "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, "requires": { "array-differ": "^1.0.0", "array-uniq": "^1.0.2", @@ -1450,9 +1494,10 @@ } }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.86.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", + "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.6.0", @@ -1472,7 +1517,6 @@ "performance-now": "^2.1.0", "qs": "~6.5.1", "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" @@ -1481,7 +1525,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true } } }, @@ -2274,6 +2319,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, "requires": { "glogg": "^1.0.0" } @@ -2281,12 +2327,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, "requires": { "ajv": "^5.1.0", "har-schema": "^2.0.0" @@ -2296,6 +2344,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2310,6 +2359,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, "requires": { "sparkles": "^1.0.0" } @@ -2318,6 +2368,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, "requires": { "boom": "4.x.x", "cryptiles": "3.x.x", @@ -2334,7 +2385,8 @@ "hoek": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true }, "homedir-polyfill": { "version": "1.0.1", @@ -2349,6 +2401,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -2513,7 +2566,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-unc-path": { "version": "0.1.2", @@ -2545,7 +2599,8 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -2573,7 +2628,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", @@ -2595,17 +2651,20 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "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=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "json-stable-stringify": { "version": "1.0.1", @@ -2619,7 +2678,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -2637,6 +2697,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -2736,7 +2797,8 @@ "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true }, "lodash._basecreate": { "version": "3.0.3", @@ -2747,42 +2809,50 @@ "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true }, "lodash._basevalues": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true }, "lodash._reescape": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true }, "lodash._reevaluate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true }, "lodash._root": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true }, "lodash.create": { "version": "3.1.1", @@ -2799,6 +2869,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, "requires": { "lodash._root": "^3.0.0" } @@ -2806,12 +2877,14 @@ "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true }, "lodash.isequal": { "version": "4.5.0", @@ -2835,6 +2908,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, "requires": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", @@ -2850,12 +2924,14 @@ "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true }, "lodash.template": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, "requires": { "lodash._basecopy": "^3.0.0", "lodash._basetostring": "^3.0.0", @@ -2872,6 +2948,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.escape": "^3.0.0" @@ -2983,12 +3060,14 @@ "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==" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true }, "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==", + "dev": true, "requires": { "mime-db": "~1.33.0" } @@ -3004,7 +3083,8 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true }, "mkdirp": { "version": "0.5.1", @@ -3099,6 +3179,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, "requires": { "duplexer2": "0.0.2" } @@ -3130,12 +3211,14 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true }, "object.defaults": { "version": "1.1.0", @@ -3313,7 +3396,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "2.3.0", @@ -3390,17 +3474,20 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "querystringify": { "version": "2.0.0", @@ -3462,6 +3549,7 @@ "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -3508,7 +3596,8 @@ "replace-ext": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true }, "request": { "version": "2.85.0", @@ -3540,6 +3629,15 @@ "uuid": "^3.1.0" } }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -3577,7 +3675,8 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "dev": true }, "seek-bzip": { "version": "1.0.5", @@ -3610,6 +3709,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, "requires": { "hoek": "4.x.x" } @@ -3633,7 +3733,8 @@ "sparkles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true }, "split": { "version": "0.3.3", @@ -3654,6 +3755,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -3748,17 +3850,20 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3806,7 +3911,8 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tar": { "version": "2.2.1", @@ -3872,6 +3978,12 @@ } } }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3882,6 +3994,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" @@ -3890,12 +4003,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3910,6 +4025,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -3938,7 +4054,8 @@ "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true }, "tmp": { "version": "0.0.31", @@ -3972,6 +4089,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, "requires": { "punycode": "^1.4.1" } @@ -4064,6 +4182,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -4072,6 +4191,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "typescript": { @@ -4121,12 +4241,14 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true }, "v8flags": { "version": "2.1.1", @@ -4147,6 +4269,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -4157,6 +4280,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, "requires": { "clone": "^1.0.0", "clone-stats": "^0.0.1", @@ -4382,7 +4506,8 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true }, "yauzl": { "version": "2.9.1", From f1dcafceb22283ea50f61385a4dba4457f2f3cd1 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 15 May 2018 19:22:16 -0400 Subject: [PATCH 0298/1435] Add changelog for 0.25.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 ++++- README.md | 14 ++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ba4327d0..48f008574 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log -## 0.25.0 (TBD) +## 0.25.0 (May 15th, 2018) +* enhancement - automatically enable Annotation Processing for Maven projects, based on [m2e-apt](https://github.com/jbosstools/m2e-apt). See [#339](https://github.com/redhat-developer/vscode-java/issues/339). +* enhancement - adds support for on-type formatting. See [#530](https://github.com/redhat-developer/vscode-java/pull/530) +* bug fix - improve JAVA_HOME detection on Windows. See [#524](https://github.com/redhat-developer/vscode-java/pull/524/). ## 0.24.0 (April 30th, 2018) * enhancement - added support for external Eclipse formatter settings. See [#2](https://github.com/redhat-developer/vscode-java/issues/2); diff --git a/README.md b/README.md index 2a6bc2278..77e46d90f 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ Quick Start ============ 1. Install the Extension 2. If you do not have a _Java_ Development Kit correctly [set](#setting-the-jdk) - * Download and install a Java 8 or 9 compatible development kit. + * Download and install a Java 8, 9, 10 compatible development kit. 3. Extension is activated when you first access a Java file - * Recognizes projects with *maven* or *gradle* build files in the directory hierarchy. + * Recognizes projects with *Maven* or *Gradle* build files in the directory hierarchy. Features ========= @@ -32,8 +32,9 @@ Features * Code navigation * Code lens (references/implementations) * Highlights -* Code formatting +* Code formatting (on-type/selection/file) * Code snippets +* Annotation processing support (automatic for Maven projects) Please note that [Gradle-based Android projects are not supported](https://github.com/redhat-developer/vscode-java/issues/10#issuecomment-268834749). @@ -81,13 +82,14 @@ The following settings are supported: * `java.completion.importOrder` : Defines the sorting order of import statements. * `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. * `java.completion.overwrite` : When set to true, code completion overwrites the current text. When set to false, code is simply added instead. - -*New in 0.24.0:* - * `java.format.settings.url` : Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings). * `java.format.settings.profile` : Optional formatter profile name from the Eclipse formatter settings. * `java.format.comments.enabled` : Includes the comments during code formatting. +*New in 0.25.0:* +* `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). + + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). From c4d0b39f67edf93f957788487bab7be5c9789bf1 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 16 May 2018 10:05:14 -0400 Subject: [PATCH 0299/1435] Upversion to 0.26.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 702759698..b619b53dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.25.0", + "version": "0.26.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 36f2361b1..976b2d857 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.25.0", + "version": "0.26.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 761a52a7e32bd2b17f91608021a9bec61605b74e Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Thu, 3 May 2018 22:52:27 +0200 Subject: [PATCH 0300/1435] Add command to create new Java formatter settings Signed-off-by: Snjezana Peco --- README.md | 1 + formatters/eclipse-formatter.xml | 315 +++++++++++++++++++++++++++++++ package.json | 5 + src/commands.ts | 4 + src/extension.ts | 129 ++++++++++++- 5 files changed, 453 insertions(+), 1 deletion(-) create mode 100644 formatters/eclipse-formatter.xml diff --git a/README.md b/README.md index 77e46d90f..e1bffe37f 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ The following commands are available: - `Java:Open Java Language Server log file`: opens the Java Language Server log file, useful for troubleshooting problems. - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. +- `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. Supported VS Code settings ========================== diff --git a/formatters/eclipse-formatter.xml b/formatters/eclipse-formatter.xml new file mode 100644 index 000000000..0f7be6f29 --- /dev/null +++ b/formatters/eclipse-formatter.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index 976b2d857..08c00c2d9 100644 --- a/package.json +++ b/package.json @@ -266,6 +266,11 @@ "command": "java.edit.organizeImports", "title": "Organize Imports", "category": "Java" + }, + { + "command": "java.open.formatter.settings", + "title": "Open Java formatter settings", + "category": "Java" } ], "keybindings": [ diff --git a/src/commands.ts b/src/commands.ts index f4ccf0d25..f28bb1d8f 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -78,4 +78,8 @@ export namespace Commands { * Organize Java file imports command from language server */ export const EDIT_ORGANIZE_IMPORTS = 'java.edit.organizeImports'; + /** + * Open Java formatter settings + */ + export const OPEN_FORMATTER = 'java.open.formatter.settings'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 5c0a92111..1e7e7ef08 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,7 +2,8 @@ import * as path from 'path'; import * as os from 'os'; -import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress } from 'vscode'; +import * as fs from 'fs'; +import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress, Position, Range, InputBoxOptions } from 'vscode'; import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; @@ -238,6 +239,9 @@ export function activate(context: ExtensionContext) { // Register commands here to make it available even when the language client fails commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); + let extensionPath = context.extensionPath; + commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath)); + // Push the disposable to the context's subscriptions so that the // client can be deactivated on extension deactivation context.subscriptions.push(disposable); @@ -425,4 +429,127 @@ function openServerLogFile(workspacePath): Thenable { }); } +async function openFormatter(extensionPath) { + let defaultFormatter = extensionPath + '/formatters/eclipse-formatter.xml'; + let formatterUrl: string = getJavaConfiguration().get('format.settings.url'); + if (formatterUrl && formatterUrl.length > 0) { + if (isRemote(formatterUrl)) { + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse(formatterUrl)); + } else { + let document = getPath(formatterUrl); + if (document && fs.existsSync(document)) { + return openDocument(extensionPath, document, defaultFormatter, null); + } + } + } + let global = workspace.workspaceFolders === undefined; + let fileName = formatterUrl || 'eclipse-formatter.xml'; + let file; + let relativePath; + if (!global) { + file = path.join(workspace.workspaceFolders[0].uri.path, fileName); + relativePath = fileName; + } else { + let root = path.join(extensionPath, '..', 'redhat.java'); + if (!fs.existsSync(root)) { + fs.mkdirSync(root); + } + file = path.join(root, fileName); + } + if (!fs.existsSync(file)) { + addFormatter(extensionPath, file, defaultFormatter, relativePath); + } else { + if (formatterUrl) { + getJavaConfiguration().update('format.settings.url', (relativePath !== null ? relativePath : file), global); + openDocument(extensionPath, file, file, defaultFormatter); + } else { + addFormatter(extensionPath, file, defaultFormatter, relativePath); + } + } +} + +function getPath(f) { + if (workspace.workspaceFolders && !path.isAbsolute(f)) { + workspace.workspaceFolders.forEach(wf => { + let file = path.resolve(wf.uri.path, f); + if (fs.existsSync(file)) { + return file; + } + }); + } else { + return path.resolve(f); + } + return null; +} + +function openDocument(extensionPath, formatterUrl, defaultFormatter, relativePath) { + return workspace.openTextDocument(formatterUrl) + .then(doc => { + if (!doc) { + addFormatter(extensionPath, formatterUrl, defaultFormatter, relativePath); + } + return window.showTextDocument(doc, window.activeTextEditor ? + window.activeTextEditor.viewColumn : undefined) + .then(editor => !!editor); + }, () => false) + .then(didOpen => { + if (!didOpen) { + window.showWarningMessage('Could not open Formatter Settings file'); + addFormatter(extensionPath, formatterUrl, defaultFormatter, relativePath); + } else { + return didOpen; + } + }); +} + +function isRemote(f) { + return f !== null && f.startsWith('http:/') || f.startsWith('https:/'); +} + +async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relativePath) { + const options: InputBoxOptions = { + value: (relativePath ? relativePath : formatterUrl), + prompt: 'please enter URL or Path:', + ignoreFocusOut: true + }; + await window.showInputBox(options).then(f => { + if (f) { + let global = workspace.workspaceFolders === undefined; + if (isRemote(f)) { + commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse(f)); + getJavaConfiguration().update('format.settings.url', f, global); + } else { + if (!path.isAbsolute(f)) { + let fileName = f; + if (!global) { + f = path.join(workspace.workspaceFolders[0].uri.path, fileName); + relativePath = fileName; + } else { + let root = path.join(extensionPath, '..', 'redhat.java'); + if (!fs.existsSync(root)) { + fs.mkdirSync(root); + } + f = path.join(root, fileName); + } + } + getJavaConfiguration().update('format.settings.url', (relativePath !== null ? relativePath : f), global); + if (!fs.existsSync(f)) { + let name = relativePath !== null ? relativePath : f; + let msg = '\'' + name + '\' does not exist. Do you want to create it?'; + let action = 'Yes'; + window.showWarningMessage(msg, action, 'No').then((selection) => { + if (action === selection) { + fs.createReadStream(defaultFormatter).pipe(fs.createWriteStream(f)); + openDocument(extensionPath, formatterUrl, defaultFormatter, relativePath); + } + }); + } else { + openDocument(extensionPath, formatterUrl, defaultFormatter, relativePath); + } + } + } + }); +} + + From daf1b05fb5cc2abeadc43250635df2f8e86146dc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 25 May 2018 15:21:49 -0400 Subject: [PATCH 0301/1435] Fix failing test Signed-off-by: Fred Bricon --- test/extension.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/extension.test.ts b/test/extension.test.ts index f491733ad..7fc7b8af9 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -35,7 +35,8 @@ suite('Java Language Extension', () => { Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG, Commands.COMPILE_WORKSPACE, - Commands.EDIT_ORGANIZE_IMPORTS + Commands.EDIT_ORGANIZE_IMPORTS, + Commands.OPEN_FORMATTER ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 73022c99efcb14f00ff228cf55a1c26b3dd9dc1b Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Mon, 28 May 2018 10:02:41 +0800 Subject: [PATCH 0302/1435] disable organize imports to be shown in the output channel Signed-off-by: Sheng Chen --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08c00c2d9..ee13f0005 100644 --- a/package.json +++ b/package.json @@ -300,7 +300,7 @@ "editor/context": [ { "command": "java.edit.organizeImports", - "when": "resourceLangId == java", + "when": "editorLangId == java", "group": "1_javaactions" }, { From af8ade52d38afc9888c8632ee201d98918e1e70a Mon Sep 17 00:00:00 2001 From: Summer Sun Date: Mon, 28 May 2018 09:45:50 +0800 Subject: [PATCH 0303/1435] move class&interface snippets to server side Signed-off-by: Summer Sun --- snippets/java.json | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index 484cb6025..72bbc23cb 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -49,31 +49,6 @@ ], "description": "Public constructor" }, - "Class Definition": { - "prefix": "class", - "body": [ - "/**", - " * ${1}", - " */", - "public class ${1:${TM_FILENAME_BASE}} {", - "", - "\t$0", - "}" - ], - "description": "Class Definition" - }, - "Interface Definition": { - "prefix": "interface", - "body": [ - "/**", - " * ${1}", - " */", - "public interface ${1:${TM_FILENAME_BASE}} {", - "\t$0", - "}" - ], - "description": "Interface Definition" - }, "if": { "prefix": "if", "body": [ From 9cc9f5910188b73946e62ab31d2344fd43c36ad5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 31 May 2018 19:10:40 -0400 Subject: [PATCH 0304/1435] Add changelog for 0.26.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48f008574..c26dbea26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.26.0 (May 31th, 2018) +* enhancement - now returns documentation as Markdown during completion. See [#318](https://github.com/redhat-developer/vscode-java/issues/318). +* enhancement - improved class/interface snippets, now adding the package, if necessary. See [#505](https://github.com/redhat-developer/vscode-java/issues/505). +* enhancement - added command to open/create Eclipse formatter settings. See [#521](https://github.com/redhat-developer/vscode-java/issues/521). +* bug fix - fixed `Organize imports` menu showing in the output panel. See [#539](https://github.com/redhat-developer/vscode-java/issues/539). +* bug fix - fixed missing documentation for methods with parameters, during completion. See [JLS#669](https://github.com/eclipse/eclipse.jdt.ls/issues/669). + ## 0.25.0 (May 15th, 2018) * enhancement - automatically enable Annotation Processing for Maven projects, based on [m2e-apt](https://github.com/jbosstools/m2e-apt). See [#339](https://github.com/redhat-developer/vscode-java/issues/339). * enhancement - adds support for on-type formatting. See [#530](https://github.com/redhat-developer/vscode-java/pull/530) From c9dfa7ffc743aec6188a879f033dfb918c744333 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 1 Jun 2018 10:59:01 -0400 Subject: [PATCH 0305/1435] Upversion to 0.27.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b619b53dd..bca30f5c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.26.0", + "version": "0.27.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ee13f0005..8aa4c2908 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.26.0", + "version": "0.27.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 694f13a7089501bbe157ec34114ed9ce59371f6b Mon Sep 17 00:00:00 2001 From: nickboldt Date: Tue, 5 Jun 2018 11:48:26 -0400 Subject: [PATCH 0306/1435] add step to publish to static when publishing to Marketplace externalize tools@ to Jenkins param Signed-off-by: nickboldt --- Jenkinsfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5487c67c8..a8b3b79c7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,11 +18,10 @@ node('rhel7'){ sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') - stash name: 'server_distro',includes :files[0].path + stash name: 'server_distro', includes :files[0].path } node('rhel7'){ - stage 'Checkout vscode-java code' deleteDir() git url: 'https://github.com/redhat-developer/vscode-java.git' @@ -48,7 +47,7 @@ node('rhel7'){ stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') - sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} tools@10.5.105.197:/downloads_htdocs/jbosstools/jdt.ls/staging" + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} ${UPLOAD_LOCATION}/jdt.ls/staging" stash name:'vsix', includes:files[0].path } @@ -59,11 +58,16 @@ node('rhel7'){ } stage "Publish to Marketplace" - unstash 'vsix'; + unstash 'vsix' withCredentials([[$class: 'StringBinding', credentialsId: 'vscode_java_marketplace', variable: 'TOKEN']]) { def vsix = findFiles(glob: '**.vsix') sh 'vsce publish -p ${TOKEN} --packagePath' + " ${vsix[0].path}" } archive includes:"**.vsix" - }//if publishMarketPlace + + stage "Publish to http://download.jboss.org/jbosstools/static/jdt.ls/stable/" + // copy this stable build to Akamai-mirrored /static/ URL, so staging can be cleaned out more easily + def vsix = findFiles(glob: '**.vsix') + sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} ${UPLOAD_LOCATION}/static/jdt.ls/stable/" + }// if publishToMarketPlace } From 7a0baf4c673a85f5ea65ec766d8de23756d7c926 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 12 Jun 2018 21:46:09 +0200 Subject: [PATCH 0307/1435] Could not open Formatter Settings file Signed-off-by: Snjezana Peco --- src/extension.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 1e7e7ef08..4de99cce9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -531,6 +531,8 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat } f = path.join(root, fileName); } + } else { + relativePath = null; } getJavaConfiguration().update('format.settings.url', (relativePath !== null ? relativePath : f), global); if (!fs.existsSync(f)) { @@ -540,11 +542,11 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat window.showWarningMessage(msg, action, 'No').then((selection) => { if (action === selection) { fs.createReadStream(defaultFormatter).pipe(fs.createWriteStream(f)); - openDocument(extensionPath, formatterUrl, defaultFormatter, relativePath); + openDocument(extensionPath, f, defaultFormatter, relativePath); } }); } else { - openDocument(extensionPath, formatterUrl, defaultFormatter, relativePath); + openDocument(extensionPath, f, defaultFormatter, relativePath); } } } From 6f16de69371a8ed9684ba8793e289df6750d1423 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 13 Jun 2018 15:52:56 -0400 Subject: [PATCH 0308/1435] Use more direct OpenJDK download url. Fixes #564 Signed-off-by: Fred Bricon --- src/requirements.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/requirements.ts b/src/requirements.ts index a915a65d7..6cdba3701 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -112,13 +112,13 @@ export function parseMajorVersion(content:string):number { } function openJDKDownload(reject, cause) { - let jdkUrl = 'http://developers.redhat.com/products/openjdk/overview/?from=vscode'; + let jdkUrl = 'https://developers.redhat.com/products/openjdk/download/?sc_cid=701f2000000RWTnAAO'; if (process.platform === 'darwin') { jdkUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/index.html'; } reject({ message: cause, - label: 'Get Java Development Kit', + label: 'Get the Java Development Kit', openUrl: Uri.parse(jdkUrl), replaceClose: false }); From 1f545a60d2b94add3afcd0ce6af21c3081815b36 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 18 Jun 2018 15:26:41 -0400 Subject: [PATCH 0309/1435] Changelog for 0.27.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++++ README.md | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c26dbea26..c105a8516 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.27.0 (June 18th, 2018) +* enhancement - use more direct OpenJDK download link. See [#564](https://github.com/redhat-developer/vscode-java/issues/564). +* enhancement - code action: access non visible references by changing modifiers or through accessors. See [JLS#446](https://github.com/eclipse/eclipse.jdt.ls/issues/446). +* bug fix - fixed formatter file failing to open. See [#548](https://github.com/redhat-developer/vscode-java/issues/548). +* bug fix - fixed `class` and `interface` snippets should be proposed according to context. See [JLS#681](https://github.com/eclipse/eclipse.jdt.ls/issues/681). +* build - vscode-java-*vsix releases are now archived to http://download.jboss.org/jbosstools/static/jdt.ls/stable/. See [#552](https://github.com/redhat-developer/vscode-java/pull/552). + ## 0.26.0 (May 31th, 2018) * enhancement - now returns documentation as Markdown during completion. See [#318](https://github.com/redhat-developer/vscode-java/issues/318). * enhancement - improved class/interface snippets, now adding the package, if necessary. See [#505](https://github.com/redhat-developer/vscode-java/issues/505). diff --git a/README.md b/README.md index e1bffe37f..5bc22f2e9 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,8 @@ This is an open source project open to anyone. Contributions are extremely welco For information on getting started, refer to the [CONTRIBUTING instructions](CONTRIBUTING.md). -Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Stable releases are archived under http://download.jboss.org/jbosstools/static/jdt.ls/stable/. Also, you can contribute your own VSCode extension to enhance the existing features by following the instructions [here](https://github.com/redhat-developer/vscode-java/wiki/Contribute-a-Java-Extension). From 01957953244273cb8747982464078f8d672fdb59 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 19 Jun 2018 09:18:18 -0400 Subject: [PATCH 0310/1435] Upversion to 0.28.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index bca30f5c7..ff2ece9cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.27.0", + "version": "0.28.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8aa4c2908..07bd77d6c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.27.0", + "version": "0.28.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From e8716fd827061b5d96b2483734279b6d76694fe3 Mon Sep 17 00:00:00 2001 From: Snjeza Date: Mon, 25 Jun 2018 23:09:30 +0200 Subject: [PATCH 0311/1435] Completion option - insert best guessed arguments (#569) Signed-off-by: Snjezana Peco --- README.md | 3 +++ package.json | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 5bc22f2e9..e0234d37a 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,9 @@ The following settings are supported: *New in 0.25.0:* * `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). +*New in 0.28.0:* +* `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. + Troubleshooting =============== diff --git a/package.json b/package.json index 07bd77d6c..028786b3e 100644 --- a/package.json +++ b/package.json @@ -190,6 +190,12 @@ "description": "When set to true, code completion overwrites the current text. When set to false, code is simply added instead.", "scope": "window" }, + "java.completion.guessMethodArguments": { + "type": "boolean", + "default": false, + "description": "When set to true, method arguments are guessed when a method is selected from as list of code assist proposals.", + "scope": "window" + }, "java.completion.favoriteStaticMembers": { "type": "array", "description": "Defines a list of static members or types with static members. Content assist will propose those static members even if the import is missing.", From 69d1b0a78441edc8117c23b9d5d962ed65c19678 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 3 Jul 2018 16:07:20 -0400 Subject: [PATCH 0312/1435] Changelog for 0.28.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 ++++ README.md | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c105a8516..43f7b7114 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 0.28.0 (July 3rd, 2018) +* enhancement - new `java.completion.guessMethodArguments` preference to insert best guessed arguments during method completion. See [#569](https://github.com/redhat-developer/vscode-java/pull/569). + + ## 0.27.0 (June 18th, 2018) * enhancement - use more direct OpenJDK download link. See [#564](https://github.com/redhat-developer/vscode-java/issues/564). * enhancement - code action: access non visible references by changing modifiers or through accessors. See [JLS#446](https://github.com/eclipse/eclipse.jdt.ls/issues/446). diff --git a/README.md b/README.md index e0234d37a..560efe585 100644 --- a/README.md +++ b/README.md @@ -86,8 +86,6 @@ The following settings are supported: * `java.format.settings.url` : Specifies the url or file path to the [Eclipse formatter xml settings](https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings). * `java.format.settings.profile` : Optional formatter profile name from the Eclipse formatter settings. * `java.format.comments.enabled` : Includes the comments during code formatting. - -*New in 0.25.0:* * `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). *New in 0.28.0:* From 2e1faabe37f138ac6a565792772338a750d4fe22 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Jul 2018 17:14:28 -0400 Subject: [PATCH 0313/1435] Changelog for 0.29.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43f7b7114..3112edc0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 0.29.0 (July 31rd, 2018) +* enhancement - code action: convert from `var` to the appropriate type (Java 10+). See [JLS#696](https://github.com/eclipse/eclipse.jdt.ls/issues/696). +* enhancement - code action: convert from type to `var` (Java 10+). See [JLS#697](https://github.com/eclipse/eclipse.jdt.ls/issues/697). +* enhancement - Java 9+ versions no longer leak their API by default. See [JLS#620](https://github.com/eclipse/eclipse.jdt.ls/issues/620). +* enhancement - add links to completion items' documentation. See [JLS#731](https://github.com/eclipse/eclipse.jdt.ls/issues/731). +* bug fix - fix build errors after renaming standalone Java files. See [#578](https://github.com/redhat-developer/vscode-java/issues/578). +* bug fix - fixed extracting to method incorrectly adding the `static` keyword in nested classes. See [JLS#709](https://github.com/eclipse/eclipse.jdt.ls/issues/709). + + ## 0.28.0 (July 3rd, 2018) * enhancement - new `java.completion.guessMethodArguments` preference to insert best guessed arguments during method completion. See [#569](https://github.com/redhat-developer/vscode-java/pull/569). From a757a3bfdb97b4757d1c29dfce244441313688fa Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Jul 2018 17:32:56 -0400 Subject: [PATCH 0314/1435] Update package version to 0.29.0 Signed-off-by: Fred Bricon --- package-lock.json | 35 +++++++++++++++++------------------ package.json | 2 +- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff2ece9cb..ef2a137c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.28.0", + "version": "0.29.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1461,10 +1461,10 @@ "integrity": "sha1-VKMBj8YZs0HM9kkWBvet8L08c5c=", "dev": true, "requires": { - "gulp-util": "latest", - "request": "latest", - "request-progress": "latest", - "through": "latest" + "gulp-util": "^3.0.8", + "request": "^2.87.0", + "request-progress": "^3.0.0", + "through": "^2.3.8" }, "dependencies": { "gulp-util": { @@ -1494,9 +1494,9 @@ } }, "request": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", - "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -1507,7 +1507,6 @@ "forever-agent": "~0.6.1", "form-data": "~2.3.1", "har-validator": "~5.0.3", - "hawk": "~6.0.2", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -1522,6 +1521,15 @@ "uuid": "^3.1.0" } }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3629,15 +3637,6 @@ "uuid": "^3.1.0" } }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "dev": true, - "requires": { - "throttleit": "^1.0.0" - } - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", diff --git a/package.json b/package.json index 028786b3e..15516cef9 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.28.0", + "version": "0.29.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From c7be468a9cf48a2581c9a8fc5e8e8b20ce0b9f6f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Jul 2018 17:34:34 -0400 Subject: [PATCH 0315/1435] Make jenkins build fail faster Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index a8b3b79c7..eeb1dcfe9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -fae -e -Pserver-distro -DdisableP2Mirrors=true" + sh "./mvnw clean verify -B -U -e -Pserver-distro -DdisableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro', includes :files[0].path From 7673456ad917b2098a8e290e4b1e1e88a69095bc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Jul 2018 18:00:31 -0400 Subject: [PATCH 0316/1435] Lock vscode-languageclient version to patch changes Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15516cef9..28a4b91d5 100644 --- a/package.json +++ b/package.json @@ -346,7 +346,7 @@ "gulp-download": "0.0.1" }, "dependencies": { - "vscode-languageclient": "^4.1.3", + "vscode-languageclient": "~4.1.3", "find-java-home": "0.2.0", "tmp": "^0.0.31", "path-exists": "^3.0.0", From 7ec523fee4e9dc870bc65b8339f40f3e8e6213ef Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 31 Jul 2018 18:06:44 -0400 Subject: [PATCH 0317/1435] Fix vulnerabilities found by npm audit Signed-off-by: Fred Bricon --- package-lock.json | 4972 ++++++++++++++++++++++++++++++++++++++------- package.json | 16 +- 2 files changed, 4220 insertions(+), 768 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef2a137c3..22d9c8936 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ "dev": true }, "@types/mocha": { - "version": "2.2.44", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz", - "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", + "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, "@types/node": { @@ -104,6 +104,331 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, "archive-type": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", @@ -137,12 +462,30 @@ "arr-flatten": "^1.0.1" } }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -161,12 +504,66 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "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 + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "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 + } + } + }, "array-slice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", - "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", "dev": true }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -212,12 +609,45 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^1.0.7", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -241,11 +671,95 @@ "js-tokens": "^3.0.2" } }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, "base64-js": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", @@ -268,6 +782,12 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, "bl": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", @@ -318,15 +838,6 @@ "inherits": "~2.0.0" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -378,10 +889,16 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, - "buffer-from": { + "buffer-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "builtin-modules": { @@ -390,6 +907,37 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -409,6 +957,165 @@ "supports-color": "^2.0.0" } }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "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" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, "clone": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", @@ -482,6 +1189,44 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -521,41 +1266,102 @@ "graceful-readlink": ">= 1.0.0" } }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + } + } + }, "convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "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==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - } + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -574,14 +1380,26 @@ "dev": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "decompress": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", @@ -686,66 +1504,134 @@ "is-obj": "^1.0.0" } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delayed-stream": { + "default-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", "dev": true, "requires": { - "fs-exists-sync": "^0.1.0" + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", "dev": true }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "readable-stream": "~1.1.9" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" }, "dependencies": { @@ -796,6 +1682,16 @@ } } }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -807,23 +1703,65 @@ } }, "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "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.3.0" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1" - } - } + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-string-regexp": { @@ -891,12 +1829,12 @@ } }, "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "os-homedir": "^1.0.1" + "homedir-polyfill": "^1.0.1" } }, "extend": { @@ -981,24 +1919,18 @@ "dev": true }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "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": "^1.1.3", + "randomatic": "^3.0.0", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, "find-java-home": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.2.0.tgz", @@ -1008,177 +1940,1113 @@ "winreg": "~1.2.2" } }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "dev": true, - "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" - } - }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "pinkie-promise": "^2.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 - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "dev": true - }, - "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=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true - } - } - }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", - "dev": true, - "requires": { - "globule": "~0.1.0" - } - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true - } - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "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 + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + } + } + }, + "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" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": 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-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-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" @@ -1194,108 +3062,136 @@ } }, "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", "dev": true, "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" + "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" }, "dependencies": { - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "is-extglob": "^2.1.0" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + }, + "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" } } } }, "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "dev": true, - "requires": { - "gaze": "^0.5.1" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.1.tgz", + "integrity": "sha512-fK92r2COMC199WCyGUblrZKhjra3cyVMDiypDdqg1vsSDmexnbYivK1kNR4QItiNXLKmGlqan469ks67RtNa2g==", "dev": true, "requires": { - "find-index": "^0.1.1" + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" } }, "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" } }, "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.0", + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "dependencies": { "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -1303,52 +3199,6 @@ } } }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "dev": true, - "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - } - } - }, "glogg": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", @@ -1359,13 +3209,10 @@ } }, "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true }, "graceful-readlink": { "version": "1.0.1", @@ -1374,30 +3221,66 @@ "dev": true }, "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", "dev": true, "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" + "glob-watcher": "^5.0.0", + "gulp-cli": "^2.0.0", + "undertaker": "^1.0.0", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^2.5.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "gulp-chmod": { @@ -1668,9 +3551,9 @@ "dev": true }, "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "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": "^2.1.1", @@ -2004,16 +3887,29 @@ } }, "gulp-untar": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.6.tgz", - "integrity": "sha1-1r3v3n6ajgVMnxYjhaB4LEvnQAA=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz", + "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", "dev": true, "requires": { "event-stream": "~3.3.4", - "gulp-util": "~3.0.8", "streamifier": "~0.1.1", "tar": "^2.2.1", - "through2": "~2.0.3" + "through2": "~2.0.3", + "vinyl": "^1.2.0" + }, + "dependencies": { + "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-util": { @@ -2252,9 +4148,9 @@ } }, "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "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": "^2.1.1", @@ -2358,9 +4254,9 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-gulplog": { @@ -2372,16 +4268,70 @@ "sparkles": "^1.0.0" } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "he": { @@ -2390,12 +4340,6 @@ "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==", - "dev": true - }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", @@ -2405,6 +4349,12 @@ "parse-passwd": "^1.0.0" } }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -2437,15 +4387,21 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is": { @@ -2455,13 +4411,37 @@ "dev": true }, "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "is-relative": "^0.2.1", - "is-windows": "^0.2.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2470,6 +4450,43 @@ "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -2497,6 +4514,15 @@ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -2512,6 +4538,12 @@ "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", "dev": true }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "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", @@ -2557,12 +4589,12 @@ "dev": true }, "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "requires": { - "is-unc-path": "^0.1.1" + "is-unc-path": "^1.0.0" } }, "is-stream": { @@ -2578,12 +4610,12 @@ "dev": true }, "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "requires": { - "unc-path-regex": "^0.1.0" + "unc-path-regex": "^0.1.2" } }, "is-utf8": { @@ -2599,9 +4631,9 @@ "dev": true }, "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { @@ -2689,12 +4721,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -2713,6 +4739,12 @@ "verror": "1.10.0" } }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2722,6 +4754,16 @@ "is-buffer": "^1.1.5" } }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -2769,37 +4811,51 @@ } } }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, "liftoff": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", - "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", "dev": true, "requires": { "extend": "^3.0.0", - "findup-sync": "^0.4.2", + "findup-sync": "^2.0.0", "fined": "^1.0.1", - "flagged-respawn": "^0.3.2", - "lodash.isplainobject": "^4.0.4", - "lodash.isstring": "^4.0.1", - "lodash.mapvalues": "^4.4.0", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", "rechoir": "^0.6.2", "resolve": "^1.1.7" } }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "lodash._basecopy": { @@ -2808,12 +4864,6 @@ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", @@ -2862,16 +4912,11 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true }, "lodash.escape": { "version": "3.2.0", @@ -2900,18 +4945,6 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -2923,12 +4956,6 @@ "lodash.isarray": "^3.0.0" } }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", @@ -2962,12 +4989,6 @@ "lodash.escape": "^3.0.0" } }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, "make-dir": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", @@ -2979,22 +5000,372 @@ "dependencies": { "pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "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 + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", "dev": true }, "merge-stream": { @@ -3094,6 +5465,27 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -3112,55 +5504,49 @@ } }, "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha1-HgSA/jbS2lhY0etqzDhBiybqog0=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", + "glob": "7.1.2", + "growl": "1.10.5", "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "3.1.2" + "supports-color": "5.4.0" }, "dependencies": { + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } } } @@ -3192,10 +5578,81 @@ "duplexer2": "0.0.2" } }, - "natives": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", - "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "mute-stdout": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.0.tgz", + "integrity": "sha1-WzLqB+tDyd7WEwQ0z5JvRrKn/U0=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "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 + } + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "node.extend": { @@ -3207,27 +5664,111 @@ "is": "^3.1.0" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -3257,6 +5798,27 @@ } } }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -3284,6 +5846,27 @@ } } }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3292,28 +5875,61 @@ "wrappy": "1" } }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "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": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" + "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 + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + } } }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -3321,12 +5937,12 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", "dev": true, "requires": { - "is-absolute": "^0.2.3", + "is-absolute": "^1.0.0", "map-cache": "^0.2.0", "path-root": "^0.1.1" } @@ -3343,12 +5959,27 @@ "is-glob": "^2.0.0" } }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -3386,6 +6017,17 @@ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -3467,6 +6109,12 @@ } } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -3485,6 +6133,27 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "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" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -3513,46 +6182,51 @@ } }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "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": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", @@ -3565,22 +6239,124 @@ "string_decoder": "~0.10.x" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "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" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", "dev": true, "requires": { - "resolve": "^1.1.6" + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" } }, "remove-trailing-separator": { @@ -3607,10 +6383,21 @@ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", "dev": true }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -3621,7 +6408,6 @@ "forever-agent": "~0.6.1", "form-data": "~2.3.1", "har-validator": "~5.0.3", - "hawk": "~6.0.2", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -3631,12 +6417,23 @@ "performance-now": "^2.1.0", "qs": "~6.5.1", "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -3653,15 +6450,36 @@ } }, "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", "dev": true, "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" + "value-or-function": "^3.0.0" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -3677,6 +6495,15 @@ "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -3687,30 +6514,176 @@ } }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "sigmund": { + "set-immediate-shim": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "hoek": "4.x.x" + "kind-of": "^3.2.0" } }, "source-map": { @@ -3719,22 +6692,73 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, "sparkles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", "dev": true }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -3744,6 +6768,36 @@ "through": "2" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3766,12 +6820,39 @@ "tweetnacl": "~0.14.0" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, "stat-mode": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -3781,10 +6862,10 @@ "duplexer": "~0.1.1" } }, - "stream-consume": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, "stream-shift": { @@ -3846,18 +6927,23 @@ "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", "dev": true }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -3868,12 +6954,11 @@ } }, "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "first-chunk-stream": "^1.0.0", "is-utf8": "^0.2.0" } }, @@ -3913,6 +6998,16 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "tar": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", @@ -4041,15 +7136,6 @@ "xtend": "~4.0.0" } }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -4061,29 +7147,101 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "~1.0.1" + } + }, + "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=", + "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" + } + } + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "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=", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "extend-shallow": "^2.0.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "kind-of": "^3.0.2" } } } }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", @@ -4193,6 +7351,12 @@ "dev": true, "optional": true }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typescript": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", @@ -4215,26 +7379,152 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "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" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", "dev": true, "requires": { "querystringify": "^2.0.0", "requires-port": "^1.0.0" } }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, "util-deprecate": { @@ -4250,12 +7540,12 @@ "dev": true }, "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", + "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", "dev": true, "requires": { - "user-home": "^1.1.1" + "homedir-polyfill": "^1.0.1" } }, "vali-date": { @@ -4264,6 +7554,22 @@ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -4287,57 +7593,102 @@ } }, "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" + "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" }, "dependencies": { "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "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 + }, + "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 + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "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=", + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "safe-buffer": "~5.1.0" } }, "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "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": "^0.2.0", - "clone-stats": "^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" } } } @@ -4370,10 +7721,59 @@ } } }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "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 + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "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": "^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" + } + } + } + }, "vscode": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.17.tgz", - "integrity": "sha512-yNMyrgEua2qyW7+trNNYhA6PeldRrBcwtLtlazkdtzcmkHMKECM/08bPF8HF2ZFuwHgD+8FQsdqd/DvJYQYjJg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.18.tgz", + "integrity": "sha512-SyDw4qFwZ+WthZX7RWp71PNiWLF7VhpM65j2oryY/6jtSORd8qH6J8vclwWZJ6Jvu0EH7JamO2RWNfBfsMR9Zw==", "dev": true, "requires": { "glob": "^7.1.2", @@ -4382,7 +7782,7 @@ "gulp-gunzip": "1.0.0", "gulp-remote-src-vscode": "^0.5.0", "gulp-symdest": "^1.1.0", - "gulp-untar": "^0.0.6", + "gulp-untar": "^0.0.7", "gulp-vinyl-zip": "^2.1.0", "mocha": "^4.0.1", "request": "^2.83.0", @@ -4492,11 +7892,27 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=" }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, "winreg": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4508,6 +7924,42 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + }, "yauzl": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", diff --git a/package.json b/package.json index 28a4b91d5..5c4f48ef2 100644 --- a/package.json +++ b/package.json @@ -333,17 +333,17 @@ "tslint": "./node_modules/.bin/gulp tslint" }, "devDependencies": { - "typescript": "^2.3.4", - "vscode": "^1.1.17", - "mocha": "^3.2.0", - "@types/node": "^6.0.40", - "@types/mocha": "^2.2.39", "@types/glob": "5.0.30", - "gulp": "^3.9.1", + "@types/mocha": "^5.2.5", + "@types/node": "^6.0.40", + "gulp": "^4.0.0", + "gulp-decompress": "2.0.1", + "gulp-download": "0.0.1", "gulp-tslint": "^8.1.3", + "mocha": "^5.2.0", "tslint": "^5.9.1", - "gulp-decompress": "2.0.1", - "gulp-download": "0.0.1" + "typescript": "^2.3.4", + "vscode": "^1.1.18" }, "dependencies": { "vscode-languageclient": "~4.1.3", From d3c0e241846928f938b21e7fa47de33f449c7609 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 1 Aug 2018 11:07:07 -0400 Subject: [PATCH 0318/1435] Upversion to 0.30.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22d9c8936..27a80e04a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.29.0", + "version": "0.30.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5c4f48ef2..774389206 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.29.0", + "version": "0.30.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 1f6783957c699e261a33d05702f2da356017458d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 1 Aug 2018 15:22:09 -0400 Subject: [PATCH 0319/1435] Update gulpfile after move to gulp 4.0.0 Signed-off-by: Fred Bricon --- gulpfile.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 62c7baf8d..94e4e40ad 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -12,23 +12,22 @@ gulp.task('tslint', () => { .pipe(gulp_tslint.report()); }); -gulp.task('download_server', ()=> -{ +gulp.task('download_server', function(done) { download("http://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz") .pipe(decompress()) - .pipe(gulp.dest('./server')) + .pipe(gulp.dest('./server')); + done(); }); -gulp.task('build_server', ()=> -{ +gulp.task('build_server', function(done) { cp.execSync(mvnw()+ ' -Pserver-distro clean package', {cwd:server_dir, stdio:[0,1,2]} ); gulp.src(server_dir + '/org.eclipse.jdt.ls.product/distro/*.tar.gz') .pipe(decompress()) - .pipe(gulp.dest('./server')) + .pipe(gulp.dest('./server')); + done(); }); -gulp.task('dev_server', ()=> -{ +gulp.task('dev_server', function(done) { let command = mvnw() +' -Pserver-distro,fast -o clean package '; if(isLinux()){ command +='-Denvironment.os=linux -Denvironment.ws=gtk -Denvironment.arch=x86_64'; @@ -44,10 +43,12 @@ gulp.task('dev_server', ()=> gulp.src(server_dir +'/org.eclipse.jdt.ls.product/distro/*.tar.gz') .pipe(decompress()) .pipe(gulp.dest('./server')) + done(); }); -gulp.task('watch_server',()=>{ +gulp.task('watch_server',function(done) { gulp.watch(server_dir+'/org.eclipse.jdt.ls.core/**/*.java',['dev_server']); + done(); }); function isWin() { From b283fb987af3c238ff84f8c2aeddbe134cf2b19c Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Thu, 23 Aug 2018 02:45:01 +0800 Subject: [PATCH 0320/1435] fix the issue that cannot generate the format setting file (#613) Signed-off-by: Sheng Chen --- src/extension.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 4de99cce9..d20e603e6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -430,7 +430,7 @@ function openServerLogFile(workspacePath): Thenable { } async function openFormatter(extensionPath) { - let defaultFormatter = extensionPath + '/formatters/eclipse-formatter.xml'; + let defaultFormatter = path.join(extensionPath, 'formatters', 'eclipse-formatter.xml'); let formatterUrl: string = getJavaConfiguration().get('format.settings.url'); if (formatterUrl && formatterUrl.length > 0) { if (isRemote(formatterUrl)) { @@ -447,7 +447,7 @@ async function openFormatter(extensionPath) { let file; let relativePath; if (!global) { - file = path.join(workspace.workspaceFolders[0].uri.path, fileName); + file = path.join(workspace.workspaceFolders[0].uri.fsPath, fileName); relativePath = fileName; } else { let root = path.join(extensionPath, '..', 'redhat.java'); @@ -522,7 +522,7 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat if (!path.isAbsolute(f)) { let fileName = f; if (!global) { - f = path.join(workspace.workspaceFolders[0].uri.path, fileName); + f = path.join(workspace.workspaceFolders[0].uri.fsPath, fileName); relativePath = fileName; } else { let root = path.join(extensionPath, '..', 'redhat.java'); @@ -541,8 +541,9 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat let action = 'Yes'; window.showWarningMessage(msg, action, 'No').then((selection) => { if (action === selection) { - fs.createReadStream(defaultFormatter).pipe(fs.createWriteStream(f)); - openDocument(extensionPath, f, defaultFormatter, relativePath); + fs.createReadStream(defaultFormatter) + .pipe(fs.createWriteStream(f)) + .on('finish', () => openDocument(extensionPath, f, defaultFormatter, relativePath)); } }); } else { From e4959064eb0c63a6dd3367a629f9c7340e685eff Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Thu, 30 Aug 2018 02:39:36 +0800 Subject: [PATCH 0321/1435] Request formatting after applying WorkspaceEdits (#617) Signed-off-by: Sheng Chen --- src/extension.ts | 53 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index d20e603e6..91b46f998 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; -import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, Progress, Position, Range, InputBoxOptions } from 'vscode'; +import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position } from 'vscode'; import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; @@ -177,7 +177,7 @@ export function activate(context: ExtensionContext) { commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { - applyWorkspaceEdit(obj); + applyWorkspaceEdit(obj, languageClient); }); commands.registerCommand(Commands.EDIT_ORGANIZE_IMPORTS, async () => { @@ -247,15 +247,7 @@ export function activate(context: ExtensionContext) { context.subscriptions.push(disposable); context.subscriptions.push(onConfigurationChange()); toggleItem(window.activeTextEditor, item); - - function applyWorkspaceEdit(obj) { - let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); - if (edit) { - workspace.applyEdit(edit); - } - } }); - }); }); } @@ -554,5 +546,44 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat }); } +async function applyWorkspaceEdit(obj, languageClient) { + let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); + if (edit) { + await workspace.applyEdit(edit); + // By executing the range formatting command to correct the indention according to the VS Code editor settings. + // More details, see: https://github.com/redhat-developer/vscode-java/issues/557 + try { + let currentEditor = window.activeTextEditor; + // If the Uri path of the edit change is not equal to that of the active editor, we will skip the range formatting + if (currentEditor.document.uri.fsPath !== edit.entries()[0][0].fsPath) { + return; + } + let cursorPostion = currentEditor.selection.active; + // Get the array of all the changes + let changes = edit.entries()[0][1]; + // Get the position information of the first change + let startPosition = new Position(changes[0].range.start.line, changes[0].range.start.character); + let lineOffsets = changes[0].newText.split(/\r?\n/).length - 1; + for (let i = 1; i < changes.length; i++) { + // When it comes to a discontinuous range, execute the range formatting and record the new start position + if (changes[i].range.start.line !== startPosition.line) { + await executeRangeFormat(currentEditor, startPosition, lineOffsets); + startPosition = new Position(changes[i].range.start.line, changes[i].range.start.character); + lineOffsets = 0; + } + lineOffsets += changes[i].newText.split(/\r?\n/).length - 1; + } + await executeRangeFormat(currentEditor, startPosition, lineOffsets); + // Recover the cursor's original position + currentEditor.selection = new Selection(cursorPostion, cursorPostion); + } catch (error) { + languageClient.error(error); + } + } +} - +async function executeRangeFormat(editor, startPosition, lineOffset) { + let endPosition = editor.document.positionAt(editor.document.offsetAt(new Position(startPosition.line + lineOffset + 1, 0)) - 1); + editor.selection = new Selection(startPosition, endPosition); + await commands.executeCommand('editor.action.formatSelection'); +} From 5db5b7b53eb55124fd843797c2defbbb04a9635b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 31 Aug 2018 18:45:32 -0400 Subject: [PATCH 0322/1435] Add changelog for 0.30.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3112edc0e..3048d711d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Change Log +## 0.30.0 (August 31rd, 2018) +* enhancement - add support for `Go to implementation`. See [#446](https://github.com/redhat-developer/vscode-java/issues/446). +* enhancement - automatically generate params in Javadoc. See [#228](https://github.com/redhat-developer/vscode-java/issues/228). +* enhancement - publish diagnostic information at the project level. See [#608](https://github.com/redhat-developer/vscode-java/issues/608). +* enhancement - prevent unnecessary build when reopening workspace. See [JLS#756](https://github.com/eclipse/eclipse.jdt.ls/pull/756). +* enhancement - update m2e to 1.9.1 See [JLS#761](https://github.com/eclipse/eclipse.jdt.ls/issues/761). +* enhancement - lower severity of m2e's `Project configuration is not up-to-date...` diagnostics. See [JLS#763](https://github.com/eclipse/eclipse.jdt.ls/issues/763). +* enhancement - add quickfix for removing unused local var and all assignments. See [JLS#769](https://github.com/eclipse/eclipse.jdt.ls/issues/769). +* bug fix - fixed indentation preferences being ignored after completions/refactoring. See [557](https://github.com/redhat-developer/vscode-java/issues/557). +* bug fix - fixed timestamps in logs. See [JLS#742](https://github.com/eclipse/eclipse.jdt.ls/issues/742). +* bug fix - don't send notifications for gradle files modified under the build directory. See [JLS#768](https://github.com/eclipse/eclipse.jdt.ls/issues/768). +* bug fix - fixed Tabs being ignored during formatting requests. See [JLS#775](https://github.com/eclipse/eclipse.jdt.ls/issues/775). + ## 0.29.0 (July 31rd, 2018) * enhancement - code action: convert from `var` to the appropriate type (Java 10+). See [JLS#696](https://github.com/eclipse/eclipse.jdt.ls/issues/696). * enhancement - code action: convert from type to `var` (Java 10+). See [JLS#697](https://github.com/eclipse/eclipse.jdt.ls/issues/697). From 7887ef605563bd7fc452fdd5f502d62e9e3752f2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 3 Sep 2018 11:33:50 -0400 Subject: [PATCH 0323/1435] Upversion to 0.31.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27a80e04a..8255bab01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.30.0", + "version": "0.31.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 774389206..441e85858 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.30.0", + "version": "0.31.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 6c97673157efc0c150ca9cf4ee59f21f6e7befbf Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Thu, 6 Sep 2018 03:39:47 +0800 Subject: [PATCH 0324/1435] Allow max 5 seconds for server to shutdown. (#628) Signed-off-by: Yaohai Zheng --- src/extension.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 91b46f998..f1f603f17 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,6 +13,7 @@ import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdat let oldConfig; let lastStatus; +let languageClient : LanguageClient; export function activate(context: ExtensionContext) { @@ -85,7 +86,7 @@ export function activate(context: ExtensionContext) { } // Create the language client and start the client. - let languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); + languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); languageClient.registerProposedFeatures(); languageClient.onReady().then(() => { languageClient.onNotification(StatusNotification.type, (report) => { @@ -235,16 +236,13 @@ export function activate(context: ExtensionContext) { }; workspace.registerTextDocumentContentProvider('jdt', provider); }); - let disposable = languageClient.start(); + languageClient.start(); // Register commands here to make it available even when the language client fails commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); let extensionPath = context.extensionPath; commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath)); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); context.subscriptions.push(onConfigurationChange()); toggleItem(window.activeTextEditor, item); }); @@ -252,6 +250,13 @@ export function activate(context: ExtensionContext) { }); } +export function deactivate(): Thenable { + if (!languageClient) { + return undefined; + } + return languageClient.stop(); +} + function enableJavadocSymbols() { // Let's enable Javadoc symbols autocompletion, shamelessly copied from MIT licensed code at // https://github.com/Microsoft/vscode/blob/9d611d4dfd5a4a101b5201b8c9e21af97f06e7a7/extensions/typescript/src/typescriptMain.ts#L186 From 1239f2d4a10bc7cebfee2acecd83ecff353cbdd0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 7 Sep 2018 17:37:18 -0400 Subject: [PATCH 0325/1435] Add 'java.completion.enabled' preference Signed-off-by: Fred Bricon --- README.md | 7 ++++--- package.json | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 560efe585..7f1f4ec4a 100644 --- a/README.md +++ b/README.md @@ -87,10 +87,11 @@ The following settings are supported: * `java.format.settings.profile` : Optional formatter profile name from the Eclipse formatter settings. * `java.format.comments.enabled` : Includes the comments during code formatting. * `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). - -*New in 0.28.0:* * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. +*New in 0.31.0:* +* `java.completion.enabled` : Enable/disable code completion support. + Troubleshooting =============== @@ -110,7 +111,7 @@ This is an open source project open to anyone. Contributions are extremely welco For information on getting started, refer to the [CONTRIBUTING instructions](CONTRIBUTING.md). -Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). Stable releases are archived under http://download.jboss.org/jbosstools/static/jdt.ls/stable/. Also, you can contribute your own VSCode extension to enhance the existing features by following the instructions [here](https://github.com/redhat-developer/vscode-java/wiki/Contribute-a-Java-Extension). diff --git a/package.json b/package.json index 441e85858..91f88938c 100644 --- a/package.json +++ b/package.json @@ -184,6 +184,12 @@ "description": "Enable/disable the 'auto build'", "scope": "window" }, + "java.completion.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable code completion support", + "scope": "window" + }, "java.completion.overwrite": { "type": "boolean", "default": true, From ba4112d29815b6ef4ecca1954d57e275ea06e692 Mon Sep 17 00:00:00 2001 From: Nikolas Komonen <32624665+NikolasKomonen@users.noreply.github.com> Date: Tue, 11 Sep 2018 16:36:53 -0400 Subject: [PATCH 0326/1435] Spelling error in CONTRIBUTIONS.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index edd1c7168..e063814ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Contributions are essential for keeping this extension great. We try to keep it as easy as possible to contribute changes and we are -open to suggesstions for making it even easier. +open to suggestions for making it even easier. There are only a few guidelines that we need contributors to follow. ## vscode-java vs eclipse.jdt.ls From 93742d409e2c0a081e34e61a6a4d88eade30be38 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Wed, 12 Sep 2018 14:55:16 +0800 Subject: [PATCH 0327/1435] Adopt the send notification to avoid deadlock. (#637) Signed-off-by: Yaohai Zheng --- src/extension.ts | 7 ++++++- src/protocol.ts | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index f1f603f17..4cea9a240 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -9,7 +9,7 @@ import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest } from './protocol'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest } from './protocol'; let oldConfig; let lastStatus; @@ -157,6 +157,11 @@ export function activate(context: ExtensionContext) { languageClient.onRequest(ExecuteClientCommandRequest.type, (params) => { return commands.executeCommand(params.command, ...params.arguments); }); + + languageClient.onRequest(SendNotificationRequest.type, (params) => { + return commands.executeCommand(params.command, ...params.arguments); + }); + commands.registerCommand(Commands.OPEN_OUTPUT, () => { languageClient.outputChannel.show(ViewColumn.Three); }); diff --git a/src/protocol.ts b/src/protocol.ts index 437b9fea0..0b55a48f4 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -98,4 +98,9 @@ export namespace CompileWorkspaceRequest { export namespace ExecuteClientCommandRequest { export const type = new RequestType('workspace/executeClientCommand'); +} + + +export namespace SendNotificationRequest { + export const type = new RequestType('workspace/notify'); } \ No newline at end of file From c45cd9b69534dda60f0036593979a14e03a6642d Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Mon, 17 Sep 2018 12:16:39 +0800 Subject: [PATCH 0328/1435] Return the java requirments info as the return value of extension activate function Signed-off-by: Jinbo Wang --- src/extension.api.ts | 6 ++++++ src/extension.ts | 15 +++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/extension.api.ts diff --git a/src/extension.api.ts b/src/extension.api.ts new file mode 100644 index 000000000..6ef66e657 --- /dev/null +++ b/src/extension.api.ts @@ -0,0 +1,6 @@ +import { RequirementsData } from './requirements'; + +export interface ExtensionAPI { + readonly apiVersion: string; + readonly javaRequirement: RequirementsData; +} diff --git a/src/extension.ts b/src/extension.ts index 4cea9a240..ffc61b9cb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,12 +10,13 @@ import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest } from './protocol'; +import { ExtensionAPI } from './extension.api'; let oldConfig; let lastStatus; let languageClient : LanguageClient; -export function activate(context: ExtensionContext) { +export function activate(context: ExtensionContext): Promise { enableJavadocSymbols(); @@ -29,7 +30,7 @@ export function activate(context: ExtensionContext) { // rethrow to disrupt the chain. throw error; }).then(requirements => { - return window.withProgress({ location: ProgressLocation.Window }, p => { + return window.withProgress({ location: ProgressLocation.Window }, p => { return new Promise((resolve, reject) => { let storagePath = context.storagePath; if (!storagePath) { @@ -95,7 +96,10 @@ export function activate(context: ExtensionContext) { item.text = '$(thumbsup)'; p.report({ message: 'Finished' }); lastStatus = item.text; - resolve(); + resolve({ + apiVersion: '0.1', + javaRequirement: requirements, + }); break; case 'Error': item.text = '$(thumbsdown)'; @@ -103,7 +107,10 @@ export function activate(context: ExtensionContext) { p.report({ message: 'Finished with Error' }); item.tooltip = report.message; toggleItem(window.activeTextEditor, item); - resolve(); + resolve({ + apiVersion: '0.1', + javaRequirement: requirements, + }); break; case 'Starting': p.report({ message: report.message }); From 92a49c29722404051fbd831f39d84de119c628b2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Sep 2018 15:47:46 -0400 Subject: [PATCH 0329/1435] Update vscode client to enable hierarchical outline Fixes #586 Signed-off-by: Fred Bricon --- package-lock.json | 599 ++++++++++++++++++++++------------------------ package.json | 10 +- 2 files changed, 296 insertions(+), 313 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8255bab01..0fe0ad3af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -454,12 +454,21 @@ } }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + }, + "dependencies": { + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + } } }, "arr-filter": { @@ -1603,14 +1612,14 @@ "dev": true }, "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -1771,9 +1780,9 @@ "dev": true }, "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 }, "esutils": { @@ -1783,26 +1792,19 @@ "dev": true }, "event-stream": { - "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - }, - "dependencies": { - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - } + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", + "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "flatmap-stream": "^0.1.0", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" } }, "expand-brackets": { @@ -1867,6 +1869,14 @@ "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": { @@ -2319,6 +2329,12 @@ "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", "dev": true }, + "flatmap-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", + "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", + "dev": true + }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -2974,14 +2990,6 @@ "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } } }, "function-bind": { @@ -3050,15 +3058,42 @@ "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": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "glob-stream": { @@ -3432,28 +3467,12 @@ "streamfilter": "^1.0.5" }, "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, "arr-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", "dev": true }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -3487,7 +3506,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3533,9 +3552,9 @@ }, "dependencies": { "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-stats": { @@ -3579,21 +3598,6 @@ "vinyl": "^1.0.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "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" - } - }, "vinyl": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", @@ -3632,16 +3636,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, "glob-stream": { "version": "5.3.5", "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", @@ -3666,7 +3660,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3694,27 +3688,6 @@ } } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3745,7 +3718,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": { @@ -3767,25 +3740,6 @@ "safe-buffer": "~5.1.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" - } - }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "dev": true, - "requires": { - "json-stable-stringify": "^1.0.0", - "through2-filter": "^2.0.0" - } - }, "vinyl": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", @@ -3954,9 +3908,9 @@ }, "dependencies": { "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-stats": { @@ -3978,16 +3932,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, "glob-stream": { "version": "5.3.5", "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", @@ -4012,7 +3956,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -4040,27 +3984,6 @@ } } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4090,9 +4013,9 @@ "dev": true }, "queue": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.0.tgz", + "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==", "dev": true, "requires": { "inherits": "~2.0.0" @@ -4100,7 +4023,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": { @@ -4128,25 +4051,6 @@ "safe-buffer": "~5.1.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" - } - }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "dev": true, - "requires": { - "json-stable-stringify": "^1.0.0", - "through2-filter": "^2.0.0" - } - }, "vinyl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", @@ -4509,9 +4413,9 @@ "dev": true }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { @@ -4524,12 +4428,12 @@ } }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "^2.1.0" } }, "is-natural-number": { @@ -4555,7 +4459,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -4678,9 +4582,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.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -5391,7 +5295,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": { @@ -5434,6 +5338,32 @@ "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" + } + } } }, "mime-db": { @@ -5957,6 +5887,23 @@ "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" + } + } } }, "parse-json": { @@ -6030,7 +5977,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -6133,6 +6080,12 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", @@ -6182,9 +6135,9 @@ } }, "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { "is-number": "^4.0.0", @@ -6301,7 +6254,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -6395,31 +6348,98 @@ } }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "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", + "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", - "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": { + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + } } }, "require-directory": { @@ -6516,8 +6536,7 @@ "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "semver-greatest-satisfied-range": { "version": "1.1.0", @@ -6706,9 +6725,9 @@ } }, "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -6760,9 +6779,9 @@ "dev": true }, "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" @@ -6854,12 +6873,13 @@ } }, "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "version": "0.2.2", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { - "duplexer": "~0.1.1" + "duplexer": "~0.1.1", + "through": "~2.3.4" } }, "stream-exhaust": { @@ -6897,7 +6917,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": { @@ -6970,17 +6990,6 @@ "requires": { "first-chunk-stream": "^1.0.0", "strip-bom": "^2.0.0" - }, - "dependencies": { - "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-dirs": { @@ -7252,15 +7261,15 @@ } }, "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "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.9.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", - "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "dev": true, "requires": { "babel-code-frame": "^6.22.0", @@ -7274,7 +7283,7 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.12.1" + "tsutils": "^2.27.2" }, "dependencies": { "ansi-styles": { @@ -7298,27 +7307,15 @@ } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", "dev": true }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7327,9 +7324,9 @@ } }, "tsutils": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.2.tgz", - "integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==", + "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" @@ -7358,9 +7355,9 @@ "dev": true }, "typescript": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", - "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", + "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", "dev": true }, "unbzip2-stream": { @@ -7771,9 +7768,9 @@ } }, "vscode": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.18.tgz", - "integrity": "sha512-SyDw4qFwZ+WthZX7RWp71PNiWLF7VhpM65j2oryY/6jtSORd8qH6J8vclwWZJ6Jvu0EH7JamO2RWNfBfsMR9Zw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.21.tgz", + "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==", "dev": true, "requires": { "glob": "^7.1.2", @@ -7788,7 +7785,7 @@ "request": "^2.83.0", "semver": "^5.4.1", "source-map-support": "^0.5.0", - "url-parse": "^1.1.9", + "url-parse": "^1.4.3", "vinyl-source-stream": "^1.1.0" }, "dependencies": { @@ -7798,15 +7795,6 @@ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -7843,12 +7831,6 @@ "supports-color": "4.4.0" } }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", @@ -7861,31 +7843,32 @@ } }, "vscode-jsonrpc": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.1.tgz", - "integrity": "sha512-+Eb+Dxf2kC2h079msx61hkblxAKE0S2j78+8QpnigLAO2aIIjkCwTIH34etBrU8E8VItRinec7YEwULx9at5bQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" }, "vscode-languageclient": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.1.3.tgz", - "integrity": "sha512-3tu79B56apocobPGkHm7YWobjhNKCU7H4cUk+rkVFCNoOSAm2wZlN2J6HdC15/ONALY4ai25BeyQ+aQaFmM1Jg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.1.0.tgz", + "integrity": "sha512-Z95Kps8UqD4o17HE3uCkZuvenOsxHVH46dKmaGVpGixEFZigPaVuVxLM/JWeIY9aRenoC0ZD9CK1O7L4jpffKg==", "requires": { - "vscode-languageserver-protocol": "^3.7.0" + "semver": "^5.5.0", + "vscode-languageserver-protocol": "3.13.0" } }, "vscode-languageserver-protocol": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.7.1.tgz", - "integrity": "sha512-AKX9XQ49m/lpiDLZJBypFNc5eAXNlSecunYU5m4o5WIwGgW86TWnXVdziuFm47W2SdigDa/jVbxLPSNUeut9fQ==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz", + "integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==", "requires": { - "vscode-jsonrpc": "^3.6.0", - "vscode-languageserver-types": "^3.7.0" + "vscode-jsonrpc": "^4.0.0", + "vscode-languageserver-types": "3.13.0" } }, "vscode-languageserver-types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.7.1.tgz", - "integrity": "sha512-ftGfU79AnnI3OHCG7kzCCN47jNI7BjECPAH2yhddtYTiQk0bnFbuFeQKvpXQcyNI3GsKEx5b6kSiBYshTiep6w==" + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", + "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" }, "which": { "version": "1.0.9", diff --git a/package.json b/package.json index 91f88938c..7a58561f4 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.22.0" + "vscode": "^1.27.0" }, "repository": { "type": "git", @@ -347,12 +347,12 @@ "gulp-download": "0.0.1", "gulp-tslint": "^8.1.3", "mocha": "^5.2.0", - "tslint": "^5.9.1", - "typescript": "^2.3.4", - "vscode": "^1.1.18" + "tslint": "^5.11.0", + "typescript": "^3.0.3", + "vscode": "^1.1.21" }, "dependencies": { - "vscode-languageclient": "~4.1.3", + "vscode-languageclient": "~5.1.0", "find-java-home": "0.2.0", "tmp": "^0.0.31", "path-exists": "^3.0.0", From 0f8e2dceaca63cfa7143988402d95ca431c05d7e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Sep 2018 19:23:05 -0400 Subject: [PATCH 0330/1435] Changelog for 0.31.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3048d711d..855105642 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 0.31.0 (September 16th, 2018) +* enhancement - added Outline support. See [#586](https://github.com/redhat-developer/vscode-java/issues/586). +* enhancement - new `java.completion.enabled` preference to disable auto-completion. See [#631](https://github.com/redhat-developer/vscode-java/pull/631). +* enhancement - export the utility method requirements.resolveRequirements() as extension API. See [#639](https://github.com/redhat-developer/vscode-java/issues/639). +* enhancement - new code-action: Convert anonymous class to lambda expression. See [JLS#658](https://github.com/eclipse/eclipse.jdt.ls/issues/658). +* bug fix - fixed 'Updating Maven projects' showing progress above 100%. See [#605](https://github.com/redhat-developer/vscode-java/issues/605). +* bug fix - give more time to shut down the server properly. See [#628](https://github.com/redhat-developer/vscode-java/pull/628). +* bug fix - fixed BadLocationExceptions thrown during `textDocument/documentSymbol` invocations. See [JLS#794](https://github.com/eclipse/eclipse.jdt.ls/issues/794). + ## 0.30.0 (August 31rd, 2018) * enhancement - add support for `Go to implementation`. See [#446](https://github.com/redhat-developer/vscode-java/issues/446). * enhancement - automatically generate params in Javadoc. See [#228](https://github.com/redhat-developer/vscode-java/issues/228). From 27dec72ae61afe5c41f14d085463f802f45623fd Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Sep 2018 19:34:17 -0400 Subject: [PATCH 0331/1435] Update logo Signed-off-by: Fred Bricon --- icons/icon128.png | Bin 4121 -> 10612 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/icon128.png b/icons/icon128.png index a55ca4fd9f277919c7857d69d87b394e1218329e..adb4470a5d72edd31e2b184a16c7b542ec9cf36e 100644 GIT binary patch literal 10612 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
4MkMOVM5ahkI5<0*85rfD%7ccdJ!-mxU>=^5Ub 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 NB>zdSUdAl^{{Rfhgf{>H literal 4121 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 S52yU%0HZ4=dR4j(;r|B|p-Axn From b78027427fca1c4b7291af8006821e6d38867bdb Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Sep 2018 23:30:35 -0400 Subject: [PATCH 0332/1435] Upversion to 0.32.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0fe0ad3af..00c5f5155 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.31.0", + "version": "0.32.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7a58561f4..0227f1536 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.31.0", + "version": "0.32.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 65617ff21a65bc3441f22cefa88ff602d604fc58 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Fri, 21 Sep 2018 18:39:30 +0200 Subject: [PATCH 0333/1435] Create a launch configuration for https://github.com/eclipse/eclipse.jdt.ls/pull/799 Signed-off-by: Snjezana Peco --- .vscode/launch.json | 14 ++++++++++++++ src/extension.ts | 20 ++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 0867d4377..750deb08e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -27,6 +27,20 @@ }, "preLaunchTask": "npm: watch" }, + { + "name": "Launch Extension - JDTLS Client", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": [ "${workspaceRoot}/out/src/**" ], + "env": { + "JDTLS_CLIENT_PORT": "5036" + }, + "preLaunchTask": "npm: watch" + }, { "name": "Launch Tests", "type": "extensionHost", diff --git a/src/extension.ts b/src/extension.ts index ffc61b9cb..87b20ac3a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,13 +4,14 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position } from 'vscode'; -import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation, StreamInfo } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest } from './protocol'; import { ExtensionAPI } from './extension.api'; +import * as net from 'net'; let oldConfig; let lastStatus; @@ -80,7 +81,22 @@ export function activate(context: ExtensionContext): Promise { let serverOptions; let port = process.env['SERVER_PORT']; if (!port) { - serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration()); + let lsPort = process.env['JDTLS_CLIENT_PORT']; + if (!lsPort) { + serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration()); + } else { + let connectionInfo = { + port: lsPort + }; + serverOptions = () => { + let socket = net.connect(connectionInfo); + let result: StreamInfo = { + writer: socket, + reader: socket + }; + return Promise.resolve(result); + }; + } } else { // used during development serverOptions = awaitServerConnection.bind(null, port); From 43f9c3407a91c52220a1ccf43639d6bead2e7908 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 28 Sep 2018 20:51:51 -0400 Subject: [PATCH 0334/1435] Update NodeJS requirement on Jenkins Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index eeb1dcfe9..0867e6b63 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,7 @@ #!/usr/bin/env groovy def installBuildRequirements(){ - def nodeHome = tool 'nodejs-7.7.4' + def nodeHome = tool 'nodejs-10.9.0' env.PATH="${env.PATH}:${nodeHome}/bin" sh "npm install -g typescript" sh "npm install -g vsce" From 722ce80cde1a1c3c3fc4135a35dc6b16cf4676ee Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 2 Oct 2018 15:09:24 -0400 Subject: [PATCH 0335/1435] Add changelog for the 0.32.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++++ README.md | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 855105642..8facf3158 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.32.0 (October 2nd, 2018) +* enhancement - new Java 11 support for Maven, Gradle and Eclipse projects. See [#625](https://github.com/redhat-developer/vscode-java/issues/625) and [#653](https://github.com/redhat-developer/vscode-java/issues/653). +* enhancement - cascade "Update project configuration" command to child Maven projects. See [#638](https://github.com/redhat-developer/vscode-java/issues/638). +* enhancement - bind `Project configuration is not up-to-date with pom.xml` diagnostics to pom.xml. See [JLS#797](https://github.com/eclipse/eclipse.jdt.ls/issues/797). +* enhancement - ignore `Unknown referenced nature` warnings. See [JLS#812](https://github.com/eclipse/eclipse.jdt.ls/issues/812). +* bug fix - fixed `Force Java Compilation` command failing due to `Project configuration is not up-to-date with pom.xml` errors. See [JLS#813](https://github.com/eclipse/eclipse.jdt.ls/issues/813). + ## 0.31.0 (September 16th, 2018) * enhancement - added Outline support. See [#586](https://github.com/redhat-developer/vscode-java/issues/586). * enhancement - new `java.completion.enabled` preference to disable auto-completion. See [#631](https://github.com/redhat-developer/vscode-java/pull/631). diff --git a/README.md b/README.md index 7f1f4ec4a..d008c0471 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Quick Start ============ 1. Install the Extension 2. If you do not have a _Java_ Development Kit correctly [set](#setting-the-jdk) - * Download and install a Java 8, 9, 10 compatible development kit. + * Download and install a Java 8, 9, 10 or 11 compatible development kit. 3. Extension is activated when you first access a Java file * Recognizes projects with *Maven* or *Gradle* build files in the directory hierarchy. @@ -88,8 +88,6 @@ The following settings are supported: * `java.format.comments.enabled` : Includes the comments during code formatting. * `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. - -*New in 0.31.0:* * `java.completion.enabled` : Enable/disable code completion support. From 95fb8d8a1e57e59172537424cc07f8038af18655 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 2 Oct 2018 19:18:55 -0400 Subject: [PATCH 0336/1435] Upversion to 0.33.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00c5f5155..acc3dd871 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.32.0", + "version": "0.33.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0227f1536..d3bccd51c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.32.0", + "version": "0.33.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 7b0e8845d90c4a956fde066fa2b5422835fb64b2 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Fri, 5 Oct 2018 20:47:50 +0200 Subject: [PATCH 0337/1435] Add new command to clean the server workspace Signed-off-by: Snjezana Peco --- README.md | 4 ++++ package.json | 5 +++++ src/commands.ts | 4 ++++ src/extension.ts | 40 +++++++++++++++++++++++++++++++++++++++- test/extension.test.ts | 3 ++- 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d008c0471..7e84f42d0 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ The following commands are available: - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. - `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. +- `Java:Clean the Java language server workspace`: Clean the Java language server workspace. Supported VS Code settings ========================== @@ -90,6 +91,9 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. +*New in 0.33.0:* +* `java.clean.workspace` : Clean the Java language server workspace. + Troubleshooting =============== diff --git a/package.json b/package.json index d3bccd51c..6a9f97a21 100644 --- a/package.json +++ b/package.json @@ -283,6 +283,11 @@ "command": "java.open.formatter.settings", "title": "Open Java formatter settings", "category": "Java" + }, + { + "command": "java.clean.workspace", + "title": "Clean the Java language server workspace", + "category": "Java" } ], "keybindings": [ diff --git a/src/commands.ts b/src/commands.ts index f28bb1d8f..60ddecc90 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -82,4 +82,8 @@ export namespace Commands { * Open Java formatter settings */ export const OPEN_FORMATTER = 'java.open.formatter.settings'; + /** + * Clean the Java language server workspace + */ + export const CLEAN_WORKSPACE = 'java.clean.workspace'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 87b20ac3a..b50edc7f4 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,7 +15,8 @@ import * as net from 'net'; let oldConfig; let lastStatus; -let languageClient : LanguageClient; +let languageClient: LanguageClient; +const cleanWorkspaceFileName = '.cleanWorkspace'; export function activate(context: ExtensionContext): Promise { @@ -264,6 +265,16 @@ export function activate(context: ExtensionContext): Promise { }; workspace.registerTextDocumentContentProvider('jdt', provider); }); + + let cleanWorkspaceExists = fs.existsSync( path.join(workspacePath, cleanWorkspaceFileName)); + if (cleanWorkspaceExists) { + try { + deleteDirectory(workspacePath); + } catch (error) { + window.showErrorMessage('Failed to delete ' + workspacePath + ': ' + error); + } + } + languageClient.start(); // Register commands here to make it available even when the language client fails commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); @@ -271,6 +282,8 @@ export function activate(context: ExtensionContext): Promise { let extensionPath = context.extensionPath; commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath)); + commands.registerCommand(Commands.CLEAN_WORKSPACE, () => cleanWorkspace(workspacePath)); + context.subscriptions.push(onConfigurationChange()); toggleItem(window.activeTextEditor, item); }); @@ -431,6 +444,31 @@ function getJavaConfiguration(): WorkspaceConfiguration { return workspace.getConfiguration('java'); } +async function cleanWorkspace(workspacePath) { + const doIt = 'Restart and delete'; + window.showWarningMessage('Are you sure you want to clean the Java language server workspace?', 'Cancel', doIt).then(selection => { + if (selection === doIt) { + const file = path.join(workspacePath, cleanWorkspaceFileName); + fs.closeSync(fs.openSync(file, 'w')); + commands.executeCommand(Commands.RELOAD_WINDOW); + } + }); +} + +function deleteDirectory(dir) { + if (fs.existsSync(dir)) { + fs.readdirSync(dir).forEach(function (child) { + let entry = path.join(dir, child); + if (fs.lstatSync(entry).isDirectory()) { + deleteDirectory(entry); + } else { + fs.unlinkSync(entry); + } + }); + fs.rmdirSync(dir); + } +} + function openServerLogFile(workspacePath): Thenable { let serverLogFile = path.join(workspacePath, '.metadata', '.log'); if (!serverLogFile) { diff --git a/test/extension.test.ts b/test/extension.test.ts index 7fc7b8af9..c41ab315c 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -36,7 +36,8 @@ suite('Java Language Extension', () => { Commands.OPEN_SERVER_LOG, Commands.COMPILE_WORKSPACE, Commands.EDIT_ORGANIZE_IMPORTS, - Commands.OPEN_FORMATTER + Commands.OPEN_FORMATTER, + Commands.CLEAN_WORKSPACE ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From e4b19d4ef1edbb6a46de58270f0a01dedce5390b Mon Sep 17 00:00:00 2001 From: Alexander Olsson Date: Thu, 18 Oct 2018 08:58:54 +0200 Subject: [PATCH 0338/1435] Add mockito as static imports [Mockito](https://site.mockito.org/) is a very widely used mocking framework for java. Just like JUnit itself, it promotes using static imports for many of its features. This PR adds some common Mockito static imports so you can easily import them Signed-off-by: Alexander Olsson --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6a9f97a21..ef7bcbd4b 100644 --- a/package.json +++ b/package.json @@ -211,7 +211,10 @@ "org.junit.jupiter.api.Assertions.*", "org.junit.jupiter.api.Assumptions.*", "org.junit.jupiter.api.DynamicContainer.*", - "org.junit.jupiter.api.DynamicTest.*" + "org.junit.jupiter.api.DynamicTest.*", + "org.mockito.Mockito.*", + "org.mockito.ArgumentMatchers.*", + "org.mockito.Answers.*" ], "scope": "window" }, From 59fbdf68408ca57bd5206ef14ec787bb9b76d06a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Sun, 21 Oct 2018 12:00:29 -0400 Subject: [PATCH 0339/1435] Update link to CI builds Signed-off-by: Fred Bricon --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e84f42d0..96f39fa6f 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ This is an open source project open to anyone. Contributions are extremely welco For information on getting started, refer to the [CONTRIBUTING instructions](CONTRIBUTING.md). -Continuous Integration builds can be installed from http://download.jboss.org/jbosstools/jdt.ls/staging/. Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). +Continuous Integration builds can be installed from [http://download.jboss.org/jbosstools/jdt.ls/staging/](http://download.jboss.org/jbosstools/jdt.ls/staging/?C=M;O=D). Download the most recent `java-.vsix` file and install it by following the instructions [here](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix). Stable releases are archived under http://download.jboss.org/jbosstools/static/jdt.ls/stable/. Also, you can contribute your own VSCode extension to enhance the existing features by following the instructions [here](https://github.com/redhat-developer/vscode-java/wiki/Contribute-a-Java-Extension). From 703f9abc6d0cb45fa1a70409d98b370ffae9b358 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 22 Oct 2018 22:05:13 -0700 Subject: [PATCH 0340/1435] Changelog for the 0.33.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ README.md | 6 ++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8facf3158..9faa3c360 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.33.0 (October 23rd, 2018) +* enhancement - add new command to clean the server workspace. See [#655](https://github.com/redhat-developer/vscode-java/issues/655). +* enhancement - add Mockito static imports by default. See [#679](https://github.com/redhat-developer/vscode-java/pull/679). +* bug fix - fixed "Busy loop " when running Java 11. See [#664](https://github.com/redhat-developer/vscode-java/issues/664). +* bug fix - fixed Maven diagnostics showing up and disappearing on save. See [#669](https://github.com/redhat-developer/vscode-java/issues/669). +* bug fix - ignore multiple code lenses for lombok generated methods. See [#674](https://github.com/redhat-developer/vscode-java/issues/674). + + ## 0.32.0 (October 2nd, 2018) * enhancement - new Java 11 support for Maven, Gradle and Eclipse projects. See [#625](https://github.com/redhat-developer/vscode-java/issues/625) and [#653](https://github.com/redhat-developer/vscode-java/issues/653). * enhancement - cascade "Update project configuration" command to child Maven projects. See [#638](https://github.com/redhat-developer/vscode-java/issues/638). diff --git a/README.md b/README.md index 96f39fa6f..819a7af18 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,8 @@ The following commands are available: - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. - `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. + +*New in 0.33.0:* - `Java:Clean the Java language server workspace`: Clean the Java language server workspace. Supported VS Code settings @@ -91,10 +93,6 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. -*New in 0.33.0:* -* `java.clean.workspace` : Clean the Java language server workspace. - - Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). From c70f219799f0dd6cec23a98327a68a67a5d6daa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Pupier?= Date: Wed, 7 Nov 2018 18:14:27 +0100 Subject: [PATCH 0341/1435] fix typos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Aurélien Pupier --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e063814ce..26380678e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,7 +46,7 @@ This will build and place the binaries under the `server` folder. Alternately yo ## Run with a remote JDT language server -While developping the language server and the extension, you don't need to deploy the server every time to try out changes. Instead you can run the language server out of its Eclipse workspace: +While developing the language server and the extension, you don't need to deploy the server every time to try out changes. Instead you can run the language server out of its Eclipse workspace: - Open VSCode on the `vscode-java` folder - In the debug viewlet, run the launch _Launch Extension - Remote Server_ @@ -56,7 +56,7 @@ While developping the language server and the extension, you don't need to deplo - in the main tab of the debug configuration set the product to `org.eclipse.jdt.ls.core.product`. - in the Environment tab, define a variable `CLIENT_PORT` with value `3333`. - if your workspace contains 'org.eclipse.jdt.ui', use the Plug-Ins tab in the debug configuration to exclude the plug-in. The presence of 'org.eclipse.jdt.ui' will cause the language server to hang. -- In the debug console of VSCode you can see if the connection was sucessful. +- In the debug console of VSCode you can see if the connection was successful. - When the server is running breakpoints can be reached and hot code replace can be used to make fixes without restarting the server. - You can modify `launch.json` to use a different port: - Modify `SERVER_PORT` to specify the port the JST LS server should connect to. From e8c35516100e76662fced4cfc636ff927825666a Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Wed, 14 Nov 2018 08:04:01 +0800 Subject: [PATCH 0342/1435] Add context menu to update source attachment for the binary classfile (#699) Signed-off-by: Jinbo Wang --- package.json | 14 +++++++++++ src/commands.ts | 8 +++++++ src/extension.ts | 53 ++++++++++++++++++++++++++++++++++++++---- src/protocol.ts | 17 ++++++++++++++ test/extension.test.ts | 3 ++- 5 files changed, 90 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ef7bcbd4b..74ae1aaeb 100644 --- a/package.json +++ b/package.json @@ -291,6 +291,11 @@ "command": "java.clean.workspace", "title": "Clean the Java language server workspace", "category": "Java" + }, + { + "command": "java.project.updateSourceAttachment", + "title": "Attach Source", + "category": "Java" } ], "keybindings": [ @@ -323,6 +328,11 @@ "when": "editorLangId == java", "group": "1_javaactions" }, + { + "command": "java.project.updateSourceAttachment", + "when": "editorReadonly && editorLangId == java", + "group": "1_javaactions" + }, { "command": "java.projectConfiguration.update", "when": "resourceFilename =~ /(.*\\.gradle)|(pom.xml)$/", @@ -333,6 +343,10 @@ { "command": "java.edit.organizeImports", "when": "!editorReadonly && editorLangId == java" + }, + { + "command": "java.project.updateSourceAttachment", + "when": "false" } ] } diff --git a/src/commands.ts b/src/commands.ts index 60ddecc90..7e546bd8d 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -86,4 +86,12 @@ export namespace Commands { * Clean the Java language server workspace */ export const CLEAN_WORKSPACE = 'java.clean.workspace'; + /** + * Update the source attachment for the selected class file + */ + export const UPDATE_SOURCE_ATTACHMENT = 'java.project.updateSourceAttachment'; + /** + * Resolve the source attachment information for the selected class file + */ + export const RESOLVE_SOURCE_ATTACHMENT = 'java.project.resolveSourceAttachment'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index b50edc7f4..e50ed2458 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,19 +3,21 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; -import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position } from 'vscode'; -import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation, StreamInfo } from 'vscode-languageclient'; +import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter } from 'vscode'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest } from './protocol'; +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, +SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } from './protocol'; import { ExtensionAPI } from './extension.api'; import * as net from 'net'; let oldConfig; let lastStatus; let languageClient: LanguageClient; +let jdtEventEmitter = new EventEmitter(); const cleanWorkspaceFileName = '.cleanWorkspace'; export function activate(context: ExtensionContext): Promise { @@ -251,12 +253,55 @@ export function activate(context: ExtensionContext): Promise { }); }); + commands.registerCommand(Commands.UPDATE_SOURCE_ATTACHMENT, async (classFileUri: Uri): Promise => { + const resolveRequest: SourceAttachmentRequest = { + classFileUri: classFileUri.toString(), + }; + const resolveResult: SourceAttachmentResult = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.RESOLVE_SOURCE_ATTACHMENT, JSON.stringify(resolveRequest)); + if (resolveResult.errorMessage) { + window.showErrorMessage(resolveResult.errorMessage); + return false; + } + + const attributes: SourceAttachmentAttribute = resolveResult.attributes || {}; + const defaultPath = attributes.sourceAttachmentPath || attributes.jarPath; + const sourceFileUris: Uri[] = await window.showOpenDialog({ + defaultUri: defaultPath ? Uri.file(defaultPath) : null, + openLabel: "Select Source File", + canSelectFiles: true, + canSelectFolders: false, + canSelectMany: false, + filters: { + "Source files": ["jar", "zip"] + }, + }); + + if (sourceFileUris && sourceFileUris.length) { + const updateRequest: SourceAttachmentRequest = { + classFileUri: classFileUri.toString(), + attributes: { + ...attributes, + sourceAttachmentPath: sourceFileUris[0].fsPath + }, + }; + const updateResult: SourceAttachmentResult = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.UPDATE_SOURCE_ATTACHMENT, JSON.stringify(updateRequest)); + if (updateResult.errorMessage) { + window.showErrorMessage(updateResult.errorMessage); + return false; + } + + // Notify jdt content provider to rerender the classfile contents. + jdtEventEmitter.fire(classFileUri); + return true; + } + }); + window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); }); let provider: TextDocumentContentProvider = { - onDidChange: null, + onDidChange: jdtEventEmitter.event, provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string): string => { return v || ''; diff --git a/src/protocol.ts b/src/protocol.ts index 0b55a48f4..7c2daf3f4 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -103,4 +103,21 @@ export namespace ExecuteClientCommandRequest { export namespace SendNotificationRequest { export const type = new RequestType('workspace/notify'); +} + +export interface SourceAttachmentRequest { + classFileUri: string; + attributes?: SourceAttachmentAttribute; +} + +export interface SourceAttachmentResult { + errorMessage?: string; + attributes?: SourceAttachmentAttribute; +} + +export interface SourceAttachmentAttribute { + jarPath?: string; + sourceAttachmentPath?: string; + sourceAttachmentEncoding?: string; + canEditEncoding?: boolean; } \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index c41ab315c..ea5bf4fbf 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -37,7 +37,8 @@ suite('Java Language Extension', () => { Commands.COMPILE_WORKSPACE, Commands.EDIT_ORGANIZE_IMPORTS, Commands.OPEN_FORMATTER, - Commands.CLEAN_WORKSPACE + Commands.CLEAN_WORKSPACE, + Commands.UPDATE_SOURCE_ATTACHMENT ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 3c527bef670d2e8c3e778ed4d5b79e0ae136584b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 13 Nov 2018 19:09:32 -0500 Subject: [PATCH 0343/1435] Upversion to version 0.34.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index acc3dd871..1cf699110 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 74ae1aaeb..b67f9ea20 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.33.0", + "version": "0.34.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -214,7 +214,7 @@ "org.junit.jupiter.api.DynamicTest.*", "org.mockito.Mockito.*", "org.mockito.ArgumentMatchers.*", - "org.mockito.Answers.*" + "org.mockito.Answers.*" ], "scope": "window" }, From 6ab6018743efef32473935416e032eea8034beae Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Wed, 14 Nov 2018 15:03:11 +0800 Subject: [PATCH 0344/1435] Add the new command 'Attach Source' to the readme (#713) Signed-off-by: Jinbo Wang --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 819a7af18..c4b58b593 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,11 @@ The following commands are available: - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. - `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. - -*New in 0.33.0:* - `Java:Clean the Java language server workspace`: Clean the Java language server workspace. +*New in 0.34.0:* +- `Java:Attach Source`: Attach a jar/zip source to the currently opened binary class file. This command is only available in the editor context menu. + Supported VS Code settings ========================== The following settings are supported: From 32f6f896c0c170a0f724fc5582c0080e9d99719f Mon Sep 17 00:00:00 2001 From: Snjeza Date: Thu, 15 Nov 2018 23:05:37 +0100 Subject: [PATCH 0345/1435] Server should understand ~/.m2/settings.xml (#715) Signed-off-by: Snjezana Peco --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c4b58b593..146a37f39 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ The following settings are supported: * `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. * `java.trace.server` : Traces the communication between VS Code and the Java language server. -* `java.configuration.maven.userSettings` : Absolute path to Maven's settings.xml. +* `java.configuration.maven.userSettings` : Path to Maven's settings.xml. * `java.import.exclusions` : Exclude folders from import via glob patterns. * `java.referencesCodeLens.enabled` : Enable/disable the references code lenses. * `java.implementationsCodeLens.enabled` : Enable/disable the implementations code lenses. diff --git a/package.json b/package.json index b67f9ea20..3a09bc1b7 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,7 @@ "java.configuration.maven.userSettings": { "type": "string", "default": null, - "description": "Absolute path to Maven's settings.xml", + "description": "Path to Maven's settings.xml", "scope": "window" }, "java.format.enabled": { From b4195332761d3d2ce88a94ec701826d681744248 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 16 Nov 2018 17:18:59 -0500 Subject: [PATCH 0346/1435] Changelog for the 0.34.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9faa3c360..5f9409e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.34.0 (November 16th, 2018) +* enhancement - add ability to attach missing sources. See [#837](https://github.com/redhat-developer/vscode-java/issues/233). +* enhancement - adopt new CodeAction and CodeActionKind. See [JLS#800](https://github.com/eclipse/eclipse.jdt.ls/pull/800). +* enhancement - resolve `~/` paths for `java.configuration.maven.userSettings`. See [JLS#848](https://github.com/eclipse/eclipse.jdt.ls/issues/848). +* bug fix - fixed import failure when parent project is missing. See [#702](https://github.com/redhat-developer/vscode-java/issues/702). +* bug fix - fixed NPE in Outline view when no source is attached. See [JLS#851](https://github.com/eclipse/eclipse.jdt.ls/pull/851). +* bug fix - fixed detection of projects under linked folders. See [JLS#831](https://github.com/eclipse/eclipse.jdt.ls/pull/836). + ## 0.33.0 (October 23rd, 2018) * enhancement - add new command to clean the server workspace. See [#655](https://github.com/redhat-developer/vscode-java/issues/655). * enhancement - add Mockito static imports by default. See [#679](https://github.com/redhat-developer/vscode-java/pull/679). From 696d9ee4eb5fefb70a5aa3fc6a33b49d9337a92e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 16 Nov 2018 17:29:26 -0500 Subject: [PATCH 0347/1435] Changelog for the 0.34.0 release - take 2 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f9409e47..785739ff2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## 0.34.0 (November 16th, 2018) * enhancement - add ability to attach missing sources. See [#837](https://github.com/redhat-developer/vscode-java/issues/233). * enhancement - adopt new CodeAction and CodeActionKind. See [JLS#800](https://github.com/eclipse/eclipse.jdt.ls/pull/800). -* enhancement - resolve `~/` paths for `java.configuration.maven.userSettings`. See [JLS#848](https://github.com/eclipse/eclipse.jdt.ls/issues/848). +* enhancement - resolve `~/` paths for `java.configuration.maven.userSettings`. See [715](https://github.com/redhat-developer/vscode-java/pull/715). * bug fix - fixed import failure when parent project is missing. See [#702](https://github.com/redhat-developer/vscode-java/issues/702). * bug fix - fixed NPE in Outline view when no source is attached. See [JLS#851](https://github.com/eclipse/eclipse.jdt.ls/pull/851). * bug fix - fixed detection of projects under linked folders. See [JLS#831](https://github.com/eclipse/eclipse.jdt.ls/pull/836). From 98eb5ab8eaa684cf1d3ac158fc5156a305a18ada Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 19 Nov 2018 08:50:46 -0500 Subject: [PATCH 0348/1435] Upversion to 0.35.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cf699110..c598f29e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.34.0", + "version": "0.35.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3a09bc1b7..8e6c4613b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.34.0", + "version": "0.35.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 452296b2e63879bc61e7f98363f181481eb96c64 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Thu, 22 Nov 2018 00:33:39 +0800 Subject: [PATCH 0349/1435] Use common VSCode UI for organize imports (#722) Signed-off-by: Yaohai Zheng --- README.md | 7 ++++--- package.json | 19 ------------------- src/commands.ts | 4 ---- src/extension.ts | 10 ---------- test/extension.test.ts | 1 - 5 files changed, 4 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 146a37f39..755c8b808 100644 --- a/README.md +++ b/README.md @@ -57,13 +57,14 @@ The following commands are available: - `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. - `Java:Open Java Language Server log file`: opens the Java Language Server log file, useful for troubleshooting problems. - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. -- `Java:Organize imports` (`Shift+Alt+O`): Organize imports in the currently opened Java file. - `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. - `Java:Clean the Java language server workspace`: Clean the Java language server workspace. - -*New in 0.34.0:* - `Java:Attach Source`: Attach a jar/zip source to the currently opened binary class file. This command is only available in the editor context menu. +*Changes in 0.35.0:* +- `Java:Organize imports` command has been removed from the editor context menu. It is now a code action item of the standard context menu `Source Action...`. Its default shortcut (`Shift+Alt+O`) is unchanged. See this [link](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions) about how to customize keybindings for code actions. + + Supported VS Code settings ========================== The following settings are supported: diff --git a/package.json b/package.json index 8e6c4613b..a273c83a8 100644 --- a/package.json +++ b/package.json @@ -277,11 +277,6 @@ "title": "Force Java compilation", "category": "Java" }, - { - "command": "java.edit.organizeImports", - "title": "Organize Imports", - "category": "Java" - }, { "command": "java.open.formatter.settings", "title": "Open Java formatter settings", @@ -304,11 +299,6 @@ "key": "shift+alt+u", "when": "editorFocus" }, - { - "command": "java.edit.organizeImports", - "key": "shift+alt+o", - "when": "editorTextFocus && !editorReadonly && editorLangId == java" - }, { "command": "java.workspace.compile", "key": "shift+alt+b" @@ -323,11 +313,6 @@ } ], "editor/context": [ - { - "command": "java.edit.organizeImports", - "when": "editorLangId == java", - "group": "1_javaactions" - }, { "command": "java.project.updateSourceAttachment", "when": "editorReadonly && editorLangId == java", @@ -340,10 +325,6 @@ } ], "commandPalette": [ - { - "command": "java.edit.organizeImports", - "when": "!editorReadonly && editorLangId == java" - }, { "command": "java.project.updateSourceAttachment", "when": "false" diff --git a/src/commands.ts b/src/commands.ts index 7e546bd8d..d473c6797 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -74,10 +74,6 @@ export namespace Commands { */ export const OPEN_SERVER_LOG = 'java.open.serverLog'; - /** - * Organize Java file imports command from language server - */ - export const EDIT_ORGANIZE_IMPORTS = 'java.edit.organizeImports'; /** * Open Java formatter settings */ diff --git a/src/extension.ts b/src/extension.ts index e50ed2458..c86d9e73c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -212,16 +212,6 @@ export function activate(context: ExtensionContext): Promise { applyWorkspaceEdit(obj, languageClient); }); - commands.registerCommand(Commands.EDIT_ORGANIZE_IMPORTS, async () => { - let activeEditor = window.activeTextEditor; - if (!activeEditor || !activeEditor.document || activeEditor.document.languageId !== 'java') { - return; - } - if (activeEditor.document.uri instanceof Uri) { - await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.EDIT_ORGANIZE_IMPORTS, activeEditor.document.uri.toString()); - } - }); - commands.registerCommand(Commands.EXECUTE_WORKSPACE_COMMAND, (command, ...rest) => { const params: ExecuteCommandParams = { command, diff --git a/test/extension.test.ts b/test/extension.test.ts index ea5bf4fbf..2e54032c4 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -35,7 +35,6 @@ suite('Java Language Extension', () => { Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG, Commands.COMPILE_WORKSPACE, - Commands.EDIT_ORGANIZE_IMPORTS, Commands.OPEN_FORMATTER, Commands.CLEAN_WORKSPACE, Commands.UPDATE_SOURCE_ATTACHMENT From 4649c080d9874ba498c39f5bb1ede71453968d4d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Nov 2018 15:35:41 -0500 Subject: [PATCH 0350/1435] Update changelog for the 0.35.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 785739ff2..7676a1ab1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.35.0 (November 30th, 2018) +* enhancement - `Organize imports` moved to `Source Action...` menu. See [#513](https://github.com/redhat-developer/vscode-java/issues/513). +* enhancement - rename refactoring now supports file operations (rename/move file). See [JLS#43](https://github.com/eclipse/eclipse.jdt.ls/issues/43). +* bug fix - fixed broken import autocompletion. See [JLS#591](https://github.com/eclipse/eclipse.jdt.ls/issues/591). +* bug fix - fixed diagnostics not being reset after closing a file. See [JLS#867](https://github.com/eclipse/eclipse.jdt.ls/issues/867). + ## 0.34.0 (November 16th, 2018) * enhancement - add ability to attach missing sources. See [#837](https://github.com/redhat-developer/vscode-java/issues/233). * enhancement - adopt new CodeAction and CodeActionKind. See [JLS#800](https://github.com/eclipse/eclipse.jdt.ls/pull/800). From b532c43bd4e0d068693d091dff37f943e7d3eb2b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Nov 2018 16:07:47 -0500 Subject: [PATCH 0351/1435] Update package-lock.json Signed-off-by: Fred Bricon --- package-lock.json | 393 +++++++++++++++++++++++++++++++--------------- 1 file changed, 265 insertions(+), 128 deletions(-) diff --git a/package-lock.json b/package-lock.json index c598f29e8..76db5537b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -663,12 +663,6 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", - "dev": true - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2464,24 +2458,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -2491,12 +2489,14 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -2505,34 +2505,40 @@ }, "chownr": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": false, + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, "requires": { @@ -2541,25 +2547,29 @@ }, "deep-extend": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -2568,13 +2578,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -2590,7 +2602,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "optional": true, "requires": { @@ -2604,13 +2617,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "bundled": true, + "resolved": false, + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "optional": true, "requires": { @@ -2619,7 +2634,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -2628,7 +2644,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -2638,18 +2655,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -2657,13 +2677,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2671,12 +2693,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { "version": "2.2.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -2685,7 +2709,8 @@ }, "minizlib": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "dev": true, "optional": true, "requires": { @@ -2694,7 +2719,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -2702,13 +2728,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "optional": true, "requires": { @@ -2719,7 +2747,8 @@ }, "node-pre-gyp": { "version": "0.10.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "dev": true, "optional": true, "requires": { @@ -2737,7 +2766,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -2747,13 +2777,15 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "bundled": true, + "resolved": false, + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "dev": true, "optional": true, "requires": { @@ -2763,7 +2795,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -2775,18 +2808,21 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -2794,19 +2830,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -2816,19 +2855,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "bundled": true, + "resolved": false, + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "optional": true, "requires": { @@ -2840,7 +2882,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -2848,7 +2891,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -2863,7 +2907,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "optional": true, "requires": { @@ -2872,42 +2917,49 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2917,7 +2969,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -2926,7 +2979,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -2934,13 +2988,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "dev": true, "optional": true, "requires": { @@ -2955,13 +3011,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -2970,12 +3028,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true } } @@ -3380,11 +3440,29 @@ "dev": true, "requires": { "gulp-util": "^3.0.8", - "request": "^2.87.0", + "request": "^2.88.0", "request-progress": "^3.0.0", "through": "^2.3.8" }, "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==", + "dev": true, + "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" + } + }, + "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=", + "dev": true + }, "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -3411,46 +3489,110 @@ "vinyl": "^0.5.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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==", + "dev": true + }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "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", + "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", - "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" - } - }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "dev": true, - "requires": { - "throttleit": "^1.0.0" + "uuid": "^3.3.2" + }, + "dependencies": { + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + } } }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true } @@ -4138,16 +4280,6 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -5630,12 +5762,6 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", @@ -6442,6 +6568,15 @@ } } }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7251,15 +7386,6 @@ "through2": "^2.0.3" } }, - "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==", - "dev": true, - "requires": { - "punycode": "^1.4.1" - } - }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -7502,6 +7628,23 @@ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "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==", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -7530,12 +7673,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - }, "v8flags": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", From bd454a958a6720d6117f192531624c7c9d5c30b2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Nov 2018 16:34:42 -0500 Subject: [PATCH 0352/1435] Update package-lock.json, take 2 Signed-off-by: Fred Bricon --- package-lock.json | 4497 +++++++++++++-------------------------------- 1 file changed, 1273 insertions(+), 3224 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76db5537b..d79920bcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ }, "@types/glob": { "version": "5.0.30", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "resolved": "http://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", "dev": true, "requires": { @@ -21,9 +21,9 @@ } }, "@types/minimatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.1.tgz", - "integrity": "sha512-rUO/jz10KRSyA9SHoCWQ8WX9BICyj5jZYu1/ucKEJKb4KzLZCKMURdYbadP157Q6Zl1x0vHsrU+Z/O0XlhYQDw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, "@types/mocha": { @@ -33,26 +33,26 @@ "dev": true }, "@types/node": { - "version": "6.0.90", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz", - "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.2.tgz", + "integrity": "sha512-JWB3xaVfsfnFY8Ofc9rTB/op0fqqTSqy4vBcVk1LuRJvta7KTX+D//fCkiTMeLGhdr2EbFZzQjC97gvmPilk9Q==", "dev": true }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", "dev": true, "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-colors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -112,312 +112,6 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } } }, "append-buffer": { @@ -454,22 +148,10 @@ } }, "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "dependencies": { - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-filter": { "version": "1.1.2", @@ -483,7 +165,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-map": { @@ -589,9 +271,9 @@ "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { @@ -601,10 +283,13 @@ "dev": true }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -652,9 +337,9 @@ "dev": true }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "aws-sign2": { @@ -663,6 +348,12 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -748,18 +439,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 } } }, @@ -770,11 +449,10 @@ "dev": true }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -786,50 +464,19 @@ "dev": true }, "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", "dev": true }, "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "version": "1.2.2", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.0.5" - }, - "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.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "block-stream": { @@ -842,50 +489,76 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "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=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "buffer": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "dev": true, "requires": { "base64-js": "0.0.8", "ieee754": "^1.1.4", "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 - } } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -898,6 +571,12 @@ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "dev": true }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -925,14 +604,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "camelcase": { @@ -949,7 +620,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -979,104 +650,6 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0", "upath": "^1.0.5" - }, - "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "class-utils": { @@ -1099,12 +672,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -1120,9 +687,9 @@ } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-buffer": { @@ -1132,9 +699,9 @@ "dev": true }, "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "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 }, "cloneable-readable": { @@ -1148,50 +715,14 @@ "readable-stream": "^2.3.5" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "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" - } } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1207,17 +738,6 @@ "arr-map": "^2.0.2", "for-own": "^1.0.0", "make-iterator": "^1.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } } }, "collection-visit": { @@ -1231,12 +751,12 @@ } }, "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==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -1252,9 +772,9 @@ "dev": true }, "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==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -1262,7 +782,7 @@ }, "commander": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -1290,51 +810,16 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - } } }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, "copy-descriptor": { "version": "0.1.1", @@ -1360,7 +845,7 @@ }, "d": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { @@ -1383,9 +868,9 @@ "dev": true }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -1417,20 +902,12 @@ "make-dir": "^1.0.0", "pify": "^2.3.0", "strip-dirs": "^2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } } }, "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "requires": { "file-type": "^5.2.0", @@ -1449,7 +926,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "requires": { "decompress-tar": "^4.1.0", @@ -1462,7 +939,7 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", "dev": true } } @@ -1470,7 +947,7 @@ "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "requires": { "decompress-tar": "^4.1.1", @@ -1500,7 +977,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1531,13 +1008,12 @@ "dev": true }, "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "object-keys": "^1.0.12" } }, "define-property": { @@ -1578,18 +1054,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 } } }, @@ -1624,67 +1088,46 @@ "dev": true, "requires": { "readable-stream": "~1.1.9" - } - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" }, "dependencies": { - "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" - } - }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "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==", + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "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" + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "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" - } + "version": "0.10.31", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true } } }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "each-props": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", @@ -1696,13 +1139,13 @@ } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "end-of-stream": { @@ -1724,9 +1167,9 @@ } }, "es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -1786,28 +1229,61 @@ "dev": true }, "event-stream": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", - "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "flatmap-stream": "^0.1.0", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" + "version": "3.3.4", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + }, + "dependencies": { + "map-stream": { + "version": "0.1.0", + "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + } } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "expand-home-dir": { @@ -1817,16 +1293,58 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "resolved": "http://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" - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { @@ -1834,42 +1352,94 @@ } }, "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==", "dev": true }, "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "kind-of": "^1.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } } } }, "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "is-extglob": { + "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, @@ -1880,19 +1450,21 @@ "dev": true }, "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "dev": true, "requires": { - "chalk": "^1.1.1", + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", "time-stamp": "^1.0.0" } }, "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=", "dev": true }, "fast-json-stable-stringify": { @@ -1902,9 +1474,9 @@ "dev": true }, "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { "pend": "~1.2.0" @@ -1912,7 +1484,7 @@ }, "file-type": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", "dev": true }, @@ -1923,16 +1495,26 @@ "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "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" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "find-java-home": { @@ -1977,263 +1559,6 @@ "resolve-dir": "^1.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", @@ -2242,59 +1567,6 @@ "requires": { "is-extglob": "^2.1.0" } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } } } }, @@ -2323,12 +1595,6 @@ "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", "dev": true }, - "flatmap-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", - "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", - "dev": true - }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -2337,44 +1603,6 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.4" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - } } }, "for-in": { @@ -2384,20 +1612,14 @@ "dev": true }, "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2405,13 +1627,13 @@ "dev": true }, "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==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, @@ -2430,6 +1652,12 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", @@ -2458,28 +1686,24 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": false, - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2489,14 +1713,12 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -2505,40 +1727,34 @@ }, "chownr": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": false, - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2547,29 +1763,25 @@ }, "deep-extend": { "version": "0.5.1", - "resolved": false, - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": false, - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2578,15 +1790,13 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2602,8 +1812,7 @@ }, "glob": { "version": "7.1.2", - "resolved": false, - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2617,15 +1826,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "resolved": false, - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2634,8 +1841,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": false, - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2644,8 +1850,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2655,21 +1860,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -2677,15 +1879,13 @@ }, "isarray": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2693,14 +1893,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "minipass": { "version": "2.2.4", - "resolved": false, - "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -2709,8 +1907,7 @@ }, "minizlib": { "version": "1.1.0", - "resolved": false, - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2719,8 +1916,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -2728,15 +1924,13 @@ }, "ms": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "resolved": false, - "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2747,8 +1941,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": false, - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2766,8 +1959,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2777,15 +1969,13 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": false, - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "resolved": false, - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2795,8 +1985,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": false, - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2808,21 +1997,18 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -2830,22 +2016,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2855,22 +2038,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": false, - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "resolved": false, - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2882,8 +2062,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -2891,8 +2070,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2907,8 +2085,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": false, - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2917,49 +2094,42 @@ }, "safe-buffer": { "version": "5.1.1", - "resolved": false, - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "resolved": false, - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2969,8 +2139,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2979,8 +2148,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -2988,15 +2156,13 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "resolved": false, - "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -3011,15 +2177,13 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "resolved": false, - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -3028,14 +2192,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "yallist": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "bundled": true, "dev": true } } @@ -3066,20 +2228,12 @@ }, "get-stream": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "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 - } } }, "get-value": { @@ -3098,9 +2252,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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", @@ -3152,109 +2306,49 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "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" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - }, - "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=", + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "is-extglob": "^2.1.0" } } } }, + "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" + } + }, "glob-watcher": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.1.tgz", - "integrity": "sha512-fK92r2COMC199WCyGUblrZKhjra3cyVMDiypDdqg1vsSDmexnbYivK1kNR4QItiNXLKmGlqan469ks67RtNa2g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", "dev": true, "requires": { + "anymatch": "^2.0.0", "async-done": "^1.2.0", "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", "just-debounce": "^1.0.0", "object.defaults": "^1.1.0" } @@ -3295,18 +2389,18 @@ } }, "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", "dev": true, "requires": { "sparkles": "^1.0.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==", "dev": true }, "graceful-readlink": { @@ -3333,17 +2427,6 @@ "vinyl-fs": "^3.0.0" }, "dependencies": { - "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "time-stamp": "^1.0.0" - } - }, "gulp-cli": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", @@ -3369,12 +2452,6 @@ "v8flags": "^3.0.1", "yargs": "^7.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -3399,38 +2476,6 @@ "decompress": "^4.0.0", "gulp-util": "^3.0.1", "readable-stream": "^2.0.2" - }, - "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.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "gulp-download": { @@ -3445,22 +2490,16 @@ "through": "^2.3.8" }, "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==", - "dev": true, - "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" - } + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true }, - "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=", + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", "dev": true }, "gulp-util": { @@ -3489,112 +2528,34 @@ "vinyl": "^0.5.0" } }, - "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==", + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", "dev": true }, - "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==", + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", "dev": true }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.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" - }, - "dependencies": { - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "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==", - "dev": true, - "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==", - "dev": true - } - } - }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } } } }, @@ -3609,12 +2570,43 @@ "streamfilter": "^1.0.5" }, "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, "arr-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", "dev": true }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -3646,6 +2638,18 @@ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", "dev": true }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "readable-stream": { "version": "1.0.34", "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -3658,9 +2662,15 @@ "string_decoder": "~0.10.x" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3681,50 +2691,16 @@ } }, "gulp-remote-src-vscode": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.0.tgz", - "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.1.tgz", + "integrity": "sha512-mw4OGjtC/jlCWJFhbcAlel4YPvccChlpsl3JceNiB/DLJi24/UPxXt53/N26lgI3dknEqd4ErfdHrO8sJ5bATQ==", "dev": true, "requires": { - "event-stream": "^3.3.4", + "event-stream": "3.3.4", "node.extend": "^1.1.2", "request": "^2.79.0", "through2": "^2.0.3", "vinyl": "^2.0.1" - }, - "dependencies": { - "clone": { - "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 - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "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": "^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" - } - } } }, "gulp-sourcemaps": { @@ -3740,6 +2716,24 @@ "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 + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "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", @@ -3754,17 +2748,82 @@ } }, "gulp-symdest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz", - "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", + "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.1", + "event-stream": "3.3.4", "mkdirp": "^0.5.1", "queue": "^3.1.0", "vinyl-fs": "^2.4.3" }, "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" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "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" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", @@ -3794,12 +2853,6 @@ "unique-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, "readable-stream": { "version": "1.0.34", "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -3812,15 +2865,9 @@ "string_decoder": "~0.10.x" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3830,18 +2877,63 @@ } } }, - "isarray": { + "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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" + } + }, + "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=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, + "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" + } + }, + "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" + } + }, "ordered-read-streams": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", @@ -3852,34 +2944,25 @@ "readable-stream": "^2.0.1" } }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", "dev": true }, - "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==", + "version": "0.10.31", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "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=", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "extend-shallow": "^2.0.1" } }, "vinyl": { @@ -3945,7 +3028,7 @@ }, "chalk": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "dev": true, "requires": { @@ -3965,16 +3048,10 @@ "time-stamp": "^1.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3995,6 +3072,24 @@ "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 + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "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", @@ -4032,235 +3127,67 @@ "replace-ext": "0.0.1", "through2": "^2.0.0", "vinyl": "^0.5.0" - } - }, - "gulp-vinyl-zip": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.0.tgz", - "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", - "dev": true, - "requires": { - "event-stream": "^3.3.1", - "queue": "^4.2.1", - "through2": "^2.0.3", - "vinyl": "^2.0.2", - "vinyl-fs": "^2.0.0", - "yauzl": "^2.2.1", - "yazl": "^2.2.1" }, "dependencies": { "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "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 - }, - "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" - } - }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "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", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", "dev": true }, "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "is-stream": "^1.0.1", - "readable-stream": "^2.0.1" - } - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", "dev": true }, - "queue": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.0.tgz", - "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==", - "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" - } - }, "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "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", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "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" + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + } + } + }, + "gulp-vinyl-zip": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz", + "integrity": "sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q==", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^3.0.3", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" + }, + "dependencies": { + "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": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", - "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "^0.3.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", - "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.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 - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "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" - } - } + "inherits": "~2.0.0" } } } @@ -4280,6 +3207,25 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -4319,14 +3265,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -4339,26 +3277,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -4403,9 +3321,9 @@ } }, "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", "dev": true }, "inflight": { @@ -4463,6 +3381,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-arrayish": { @@ -4483,12 +3412,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -4502,6 +3431,17 @@ "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-descriptor": { @@ -4560,12 +3500,12 @@ } }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-natural-number": { @@ -4581,12 +3521,23 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -4598,18 +3549,10 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "is-posix-bracket": { @@ -4661,9 +3604,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": { @@ -4673,9 +3616,9 @@ "dev": true }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { @@ -4685,21 +3628,10 @@ "dev": true }, "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 - } - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isstream": { "version": "0.1.2", @@ -4727,8 +3659,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true }, "json-schema": { "version": "0.2.3", @@ -4737,9 +3668,9 @@ "dev": true }, "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==", "dev": true }, "json-stable-stringify": { @@ -4782,13 +3713,10 @@ "dev": true }, "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" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "last-run": { "version": "1.1.1", @@ -4807,44 +3735,6 @@ "dev": true, "requires": { "readable-stream": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - } } }, "lcid": { @@ -4883,7 +3773,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -5026,9 +3916,9 @@ } }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "^3.0.0" @@ -5049,14 +3939,6 @@ "dev": true, "requires": { "kind-of": "^6.0.2" - }, - "dependencies": { - "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 - } } }, "map-cache": { @@ -5075,327 +3957,21 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" } }, "math-random": { @@ -5411,119 +3987,55 @@ "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 - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "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" - } - } } }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "^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" - } - } + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "mime-db": { - "version": "1.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.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", "dev": true }, "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.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.37.0" } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -5550,7 +4062,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -5559,7 +4071,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -5584,23 +4096,34 @@ "supports-color": "5.4.0" }, "dependencies": { - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, "commander": { "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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" + } }, "supports-color": { "version": "5.4.0", @@ -5641,15 +4164,15 @@ } }, "mute-stdout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.0.tgz", - "integrity": "sha1-WzLqB+tDyd7WEwQ0z5JvRrKn/U0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", "dev": true }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", "dev": true, "optional": true }, @@ -5670,60 +4193,22 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "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 - } } }, "next-tick": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "node.extend": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", - "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", + "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", "dev": true, "requires": { - "is": "^3.1.0" + "has": "^1.0.3", + "is": "^3.2.1" } }, "normalize-package-data": { @@ -5762,10 +4247,16 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { @@ -5787,6 +4278,15 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, @@ -5803,14 +4303,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.assign": { @@ -5835,23 +4327,6 @@ "array-slice": "^1.0.0", "for-own": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.map": { @@ -5862,17 +4337,6 @@ "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } } }, "object.omit": { @@ -5883,39 +4347,12 @@ "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" }, "dependencies": { "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "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" @@ -5923,64 +4360,45 @@ } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { - "wrappy": "1" + "isobject": "^3.0.1" } }, - "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" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - } + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "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" } }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -5989,7 +4407,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-filepath": { @@ -6041,6 +4459,12 @@ "error-ex": "^1.2.0" } }, + "parse-node-version": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", + "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", + "dev": true + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -6066,13 +4490,13 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "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 }, "path-root": { @@ -6124,7 +4548,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -6153,33 +4577,6 @@ "arr-diff": "^4.0.0", "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "posix-character-classes": { @@ -6196,7 +4593,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -6234,9 +4631,9 @@ } }, "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==", "dev": true }, "qs": { @@ -6246,14 +4643,14 @@ "dev": true }, "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", "dev": true }, "queue": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", + "resolved": "http://registry.npmjs.org/queue/-/queue-3.1.0.tgz", "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "dev": true, "requires": { @@ -6261,9 +4658,9 @@ } }, "randomatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", - "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "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", @@ -6276,12 +4673,6 @@ "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 } } }, @@ -6307,67 +4698,39 @@ } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "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" - } } } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -6394,27 +4757,6 @@ "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "remove-bom-buffer": { @@ -6445,9 +4787,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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": { @@ -6457,9 +4799,9 @@ "dev": true }, "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, "replace-homedir": { @@ -6499,73 +4841,6 @@ "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "dev": true, - "requires": { - "mime-db": "~1.36.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "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==", - "dev": true, - "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==", - "dev": true - } } }, "request-progress": { @@ -6596,9 +4871,9 @@ "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -6645,20 +4920,26 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -6669,9 +4950,9 @@ } }, "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==" }, "semver-greatest-satisfied-range": { "version": "1.1.0", @@ -6688,12 +4969,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -6733,15 +5008,6 @@ "use": "^3.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -6759,12 +5025,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -6816,18 +5076,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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 } } }, @@ -6838,12 +5086,23 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { @@ -6867,6 +5126,14 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-url": { @@ -6876,15 +5143,15 @@ "dev": true }, "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", "dev": true }, "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -6892,9 +5159,9 @@ } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { @@ -6908,15 +5175,15 @@ } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", "dev": true }, "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "version": "0.3.3", + "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { "through": "2" @@ -6929,27 +5196,6 @@ "dev": true, "requires": { "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "sprintf-js": { @@ -6959,9 +5205,9 @@ "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.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -6971,6 +5217,7 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, @@ -7008,13 +5255,12 @@ } }, "stream-combiner": { - "version": "0.2.2", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" + "duplexer": "~0.1.1" } }, "stream-exhaust": { @@ -7028,52 +5274,14 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true - }, - "streamfilter": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", - "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "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" - } - } + }, + "streamfilter": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", + "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" } }, "streamifier": { @@ -7094,14 +5302,17 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "version": "1.1.1", + "resolved": "http://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" + } }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -7130,7 +5341,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "dev": true, "requires": { "is-natural-number": "^4.0.1" @@ -7154,7 +5365,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { @@ -7164,56 +5375,18 @@ } }, "tar-stream": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "dev": true, "requires": { "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", "end-of-stream": "^1.0.0", - "readable-stream": "^2.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", "xtend": "^4.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true, - "requires": { - "once": "^1.4.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": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "throttleit": { @@ -7224,50 +5397,18 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.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.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "through2-filter": { @@ -7295,25 +5436,21 @@ } }, "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-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -7321,6 +5458,17 @@ "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" + } + } } }, "to-regex": { @@ -7333,27 +5481,6 @@ "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "to-regex-range": { @@ -7364,17 +5491,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, "to-through": { @@ -7386,6 +5502,24 @@ "through2": "^2.0.3" } }, + "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==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -7433,9 +5567,9 @@ } }, "commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, "supports-color": { @@ -7471,8 +5605,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "typedarray": { "version": "0.0.6", @@ -7481,15 +5614,15 @@ "dev": true }, "typescript": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", - "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.1.tgz", + "integrity": "sha512-jw7P2z/h6aPT4AENXDGjcfHTu5CSqzsbZc6YlUIebTyBAq8XaKp78x7VcSh30xwSCcsu5irZkYZUSFP1MrAMbg==", "dev": true }, "unbzip2-stream": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", - "integrity": "sha1-c6AzpWe7veWWVLGTxE1Ip+T0PEc=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.1.tgz", + "integrity": "sha512-fIZnvdjblYs7Cru/xC6tCPVhz7JkYcVQQkePwMLyQELzYTds2Xn8QefPVnvdVhhZqubxNA1cASXEH5wcK0Bucw==", "dev": true, "requires": { "buffer": "^3.0.1", @@ -7607,18 +5740,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -7635,14 +5756,6 @@ "dev": true, "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==", - "dev": true - } } }, "urix": { @@ -7652,9 +5765,9 @@ "dev": true }, "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", "dev": true, "requires": { "querystringify": "^2.0.0", @@ -7673,6 +5786,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, "v8flags": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", @@ -7689,9 +5808,9 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -7716,14 +5835,17 @@ } }, "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "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" } }, "vinyl-fs": { @@ -7749,82 +5871,6 @@ "value-or-function": "^3.0.0", "vinyl": "^2.0.0", "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "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 - }, - "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 - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "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" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "vinyl": { - "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": "^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" - } - } } }, "vinyl-source-stream": { @@ -7843,6 +5889,12 @@ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", "dev": true }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, "vinyl": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", @@ -7868,56 +5920,22 @@ "now-and-later": "^2.0.0", "remove-bom-buffer": "^3.0.0", "vinyl": "^2.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "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 - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "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": "^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" - } - } } }, "vscode": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.21.tgz", - "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==", + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.22.tgz", + "integrity": "sha512-G/zu7PRAN1yF80wg+l6ebIexDflU3uXXeabacJuLearTIfObKw4JaI8aeHwDEmpnCkc3MkIr3Bclkju2gtEz6A==", "dev": true, "requires": { "glob": "^7.1.2", "gulp-chmod": "^2.0.0", "gulp-filter": "^5.0.1", "gulp-gunzip": "1.0.0", - "gulp-remote-src-vscode": "^0.5.0", - "gulp-symdest": "^1.1.0", + "gulp-remote-src-vscode": "^0.5.1", + "gulp-symdest": "^1.1.1", "gulp-untar": "^0.0.7", - "gulp-vinyl-zip": "^2.1.0", + "gulp-vinyl-zip": "^2.1.2", "mocha": "^4.0.1", "request": "^2.83.0", "semver": "^5.4.1", @@ -7926,12 +5944,27 @@ "vinyl-source-stream": "^1.1.0" }, "dependencies": { + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -7966,6 +5999,22 @@ "he": "1.1.1", "mkdirp": "0.5.1", "supports-color": "4.4.0" + }, + "dependencies": { + "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" + } + } } }, "supports-color": { @@ -7985,9 +6034,9 @@ "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" }, "vscode-languageclient": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.1.0.tgz", - "integrity": "sha512-Z95Kps8UqD4o17HE3uCkZuvenOsxHVH46dKmaGVpGixEFZigPaVuVxLM/JWeIY9aRenoC0ZD9CK1O7L4jpffKg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.1.1.tgz", + "integrity": "sha512-jMxshi+BPRQFNG8GB00dJv7ldqMda0be26laYYll/udtJuHbog6RqK10GSxHWDN0PgY0b0m5fePyTk3bq8a0TA==", "requires": { "semver": "^5.5.0", "vscode-languageserver-protocol": "3.13.0" @@ -8025,7 +6074,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -8081,19 +6130,19 @@ } }, "yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.0.1" + "fd-slicer": "~1.1.0" } }, "yazl": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz", - "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.0.tgz", + "integrity": "sha512-rgptqKwX/f1/7bIRF1FHb4HGsP5k11QyxBpDl1etUDfNpTa7CNjDOYNPFnIaEzZ9dRq0c47IEJS+sy+T39JCLw==", "dev": true, "requires": { "buffer-crc32": "~0.2.3" From ebbd70d485f80e4b1928f967d14b1745312b7406 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Nov 2018 17:01:37 -0500 Subject: [PATCH 0353/1435] New attempt at fixing the build Signed-off-by: Fred Bricon --- package-lock.json | 8 ++++---- package.json | 10 +++++----- src/extension.ts | 7 ++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index d79920bcf..886f7d808 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5428,11 +5428,11 @@ "dev": true }, "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "~1.0.2" } }, "to-absolute-glob": { diff --git a/package.json b/package.json index a273c83a8..9900bdeb3 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.27.0" + "vscode": "^1.28.0" }, "repository": { "type": "git", @@ -352,14 +352,14 @@ "mocha": "^5.2.0", "tslint": "^5.11.0", "typescript": "^3.0.3", - "vscode": "^1.1.21" + "vscode": "^1.1.22" }, "dependencies": { - "vscode-languageclient": "~5.1.0", + "vscode-languageclient": "~5.1.1", "find-java-home": "0.2.0", - "tmp": "^0.0.31", + "tmp": "^0.0.33", "path-exists": "^3.0.0", "expand-home-dir": "^0.0.3", - "glob": "^7.1.1" + "glob": "^7.1.3" } } diff --git a/src/extension.ts b/src/extension.ts index c86d9e73c..148d18ba6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -88,11 +88,8 @@ export function activate(context: ExtensionContext): Promise { if (!lsPort) { serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration()); } else { - let connectionInfo = { - port: lsPort - }; serverOptions = () => { - let socket = net.connect(connectionInfo); + let socket = net.connect(lsPort); let result: StreamInfo = { writer: socket, reader: socket @@ -270,7 +267,7 @@ export function activate(context: ExtensionContext): Promise { const updateRequest: SourceAttachmentRequest = { classFileUri: classFileUri.toString(), attributes: { - ...attributes, + ...attributes, sourceAttachmentPath: sourceFileUris[0].fsPath }, }; From 68d4bede335b194e8d8f44add1d868e3250cda22 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 30 Nov 2018 22:59:12 -0500 Subject: [PATCH 0354/1435] Upversion to 0.36.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 886f7d808..d5c66cec8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.35.0", + "version": "0.36.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9900bdeb3..2cce70eae 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.35.0", + "version": "0.36.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 4a2e449843371bfeb1a815bcfb8461be9efdcd9d Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 4 Dec 2018 15:45:21 +0800 Subject: [PATCH 0355/1435] Add the java files that trigger LS to the initialization parameters Signed-off-by: Jinbo Wang --- src/extension.ts | 55 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 148d18ba6..490f2bd4a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -70,7 +70,8 @@ export function activate(context: ExtensionContext): Promise { extendedClientCapabilities:{ progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), classFileContentsSupport:true - } + }, + triggerFiles: getTriggerFiles() }, revealOutputChannelOn: RevealOutputChannelOn.Never }; @@ -690,3 +691,55 @@ async function executeRangeFormat(editor, startPosition, lineOffset) { editor.selection = new Selection(startPosition, endPosition); await commands.executeCommand('editor.action.formatSelection'); } + +function getTriggerFiles(): string[] { + const openedJavaFiles = []; + const activeJavaFile = getJavaFilePathOfTextEditor(window.activeTextEditor); + if (activeJavaFile) { + openedJavaFiles.push(Uri.file(activeJavaFile).toString()); + } + + if (!workspace.workspaceFolders) { + return openedJavaFiles; + } + + for (const rootFolder of workspace.workspaceFolders) { + if (rootFolder.uri.scheme !== "file") { + continue; + } + + const rootPath = path.normalize(rootFolder.uri.fsPath); + if (isPrefix(rootPath, activeJavaFile)) { + continue; + } + + for (const textEditor of window.visibleTextEditors) { + const javaFileInTextEditor = getJavaFilePathOfTextEditor(textEditor); + if (isPrefix(rootPath, javaFileInTextEditor)) { + openedJavaFiles.push(Uri.file(javaFileInTextEditor).toString()); + break; + } + } + } + + return openedJavaFiles; +} + +function getJavaFilePathOfTextEditor(editor: TextEditor): string | undefined { + if (editor) { + const resource = editor.document.uri; + if (resource.scheme === "file" && resource.fsPath.endsWith(".java")) { + return path.normalize(resource.fsPath); + } + } + + return undefined; +} + +function isPrefix(parentPath: string, childPath: string): boolean { + if (!childPath) { + return false; + } + const relative = path.relative(parentPath, childPath); + return !!relative && !relative.startsWith('..') && !path.isAbsolute(relative); +} \ No newline at end of file From 5ceb732d2e5cace8fe51e1bd3e201307d94b7945 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Tue, 11 Dec 2018 15:51:34 +0800 Subject: [PATCH 0356/1435] Add parallel build settings. Signed-off-by: Yaohai Zheng --- CHANGELOG.md | 3 ++ README.md | 8 ++--- package-lock.json | 82 +++++++++++++++++++++++------------------------ package.json | 7 ++++ 4 files changed, 55 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7676a1ab1..db6cb1b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.36.0 (TBD) +* enhancement - new `java.maxConcurrentBuilds` preference to set max simultaneous project builds. See [#741](https://github.com/redhat-developer/vscode-java/pull/741). + ## 0.35.0 (November 30th, 2018) * enhancement - `Organize imports` moved to `Source Action...` menu. See [#513](https://github.com/redhat-developer/vscode-java/issues/513). * enhancement - rename refactoring now supports file operations (rename/move file). See [JLS#43](https://github.com/eclipse/eclipse.jdt.ls/issues/43). diff --git a/README.md b/README.md index 755c8b808..b48ba67eb 100644 --- a/README.md +++ b/README.md @@ -61,10 +61,6 @@ The following commands are available: - `Java:Clean the Java language server workspace`: Clean the Java language server workspace. - `Java:Attach Source`: Attach a jar/zip source to the currently opened binary class file. This command is only available in the editor context menu. -*Changes in 0.35.0:* -- `Java:Organize imports` command has been removed from the editor context menu. It is now a code action item of the standard context menu `Source Action...`. Its default shortcut (`Shift+Alt+O`) is unchanged. See this [link](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions) about how to customize keybindings for code actions. - - Supported VS Code settings ========================== The following settings are supported: @@ -95,6 +91,10 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. +*New in 0.36.0:* +* `java.maxConcurrentBuilds`: Set max simultaneous project builds. + + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package-lock.json b/package-lock.json index d5c66cec8..59065738f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ }, "@types/glob": { "version": "5.0.30", - "resolved": "http://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", "dev": true, "requires": { @@ -52,7 +52,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -165,7 +165,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-map": { @@ -534,7 +534,7 @@ }, "buffer": { "version": "3.6.0", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "dev": true, "requires": { @@ -620,7 +620,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -782,7 +782,7 @@ }, "commander": { "version": "2.8.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -845,7 +845,7 @@ }, "d": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { @@ -907,7 +907,7 @@ "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", "dev": true, "requires": { "file-type": "^5.2.0", @@ -926,7 +926,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", "dev": true, "requires": { "decompress-tar": "^4.1.0", @@ -939,7 +939,7 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", "dev": true } } @@ -947,7 +947,7 @@ "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", "dev": true, "requires": { "decompress-tar": "^4.1.1", @@ -977,7 +977,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1293,7 +1293,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { @@ -1484,7 +1484,7 @@ }, "file-type": { "version": "3.9.0", - "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", "dev": true }, @@ -2228,7 +2228,7 @@ }, "get-stream": { "version": "2.3.1", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { @@ -2542,7 +2542,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -2670,7 +2670,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -2867,7 +2867,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3028,7 +3028,7 @@ }, "chalk": { "version": "2.3.1", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "dev": true, "requires": { @@ -3412,12 +3412,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -3549,7 +3549,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -3773,7 +3773,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -4028,14 +4028,14 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -4062,7 +4062,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -4071,7 +4071,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -4098,7 +4098,7 @@ "dependencies": { "commander": { "version": "2.15.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, @@ -4197,7 +4197,7 @@ }, "next-tick": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, @@ -4398,7 +4398,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=", "dev": true, "requires": { @@ -4407,7 +4407,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-filepath": { @@ -4490,7 +4490,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { @@ -4548,7 +4548,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -4593,7 +4593,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -4650,7 +4650,7 @@ }, "queue": { "version": "3.1.0", - "resolved": "http://registry.npmjs.org/queue/-/queue-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "dev": true, "requires": { @@ -4927,7 +4927,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -5312,7 +5312,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5341,7 +5341,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", "dev": true, "requires": { "is-natural-number": "^4.0.1" @@ -5365,7 +5365,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { @@ -5397,7 +5397,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -6074,7 +6074,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=", "dev": true, "requires": { diff --git a/package.json b/package.json index 2cce70eae..c8258b3b8 100644 --- a/package.json +++ b/package.json @@ -184,6 +184,13 @@ "description": "Enable/disable the 'auto build'", "scope": "window" }, + "java.maxConcurrentBuilds": { + "type": "integer", + "default": 1, + "description": "Max simultaneous project builds", + "scope": "window", + "minimum": 1 + }, "java.completion.enabled": { "type": "boolean", "default": true, From 7207f40c2b83a4964fbb79d3c693f5b388608957 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Mon, 17 Dec 2018 13:50:37 +0800 Subject: [PATCH 0357/1435] Add command to add/remove/list the project's source path (#724) Signed-off-by: Jinbo Wang --- package.json | 33 ++++++++++++++++++++++++ src/buildpath.ts | 58 ++++++++++++++++++++++++++++++++++++++++++ src/commands.ts | 12 +++++++++ src/extension.ts | 4 +++ test/extension.test.ts | 5 +++- 5 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 src/buildpath.ts diff --git a/package.json b/package.json index c8258b3b8..7d919bb07 100644 --- a/package.json +++ b/package.json @@ -298,6 +298,21 @@ "command": "java.project.updateSourceAttachment", "title": "Attach Source", "category": "Java" + }, + { + "command": "java.project.addToSourcePath", + "title": "Add Folder to Java Source Path", + "category": "Java" + }, + { + "command": "java.project.removeFromSourcePath", + "title": "Remove Folder from Java Source Path", + "category": "Java" + }, + { + "command": "java.project.listSourcePaths", + "title": "List all Java source paths", + "category": "Java" } ], "keybindings": [ @@ -317,6 +332,16 @@ "command": "java.projectConfiguration.update", "when": "resourceFilename =~ /(.*\\.gradle)|(pom.xml)$/", "group": "1_javaactions" + }, + { + "when": "explorerResourceIsFolder&&javaLSReady", + "command": "java.project.addToSourcePath", + "group": "1_javaactions@1" + }, + { + "when": "explorerResourceIsFolder&&javaLSReady", + "command": "java.project.removeFromSourcePath", + "group": "1_javaactions@2" } ], "editor/context": [ @@ -335,6 +360,14 @@ { "command": "java.project.updateSourceAttachment", "when": "false" + }, + { + "command": "java.project.addToSourcePath", + "when": "false" + }, + { + "command": "java.project.removeFromSourcePath", + "when": "false" } ] } diff --git a/src/buildpath.ts b/src/buildpath.ts new file mode 100644 index 000000000..c3a04d011 --- /dev/null +++ b/src/buildpath.ts @@ -0,0 +1,58 @@ +'use strict'; + +import { window, commands, Uri } from 'vscode'; +import { Commands } from './commands'; + +interface Result { + status: boolean; + message: string; +} + +interface SourcePath { + path: string; + displayPath: string; + projectName: string; + projectType: string; +} + +interface ListCommandResult extends Result { + data?: SourcePath[]; +} + +export function registerCommands() { + commands.registerCommand(Commands.ADD_TO_SOURCEPATH, async (uri: Uri) => { + const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.ADD_TO_SOURCEPATH, uri.toString()); + if (result.status) { + window.showInformationMessage(result.message ? result.message : "Successfully added the folder to the source path."); + } else { + window.showErrorMessage(result.message); + } + }); + + commands.registerCommand(Commands.REMOVE_FROM_SOURCEPATH, async (uri: Uri) => { + const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.REMOVE_FROM_SOURCEPATH, uri.toString()); + if (result.status) { + window.showInformationMessage(result.message ? result.message : "Successfully removed the folder from the source path."); + } else { + window.showErrorMessage(result.message); + } + }); + + commands.registerCommand(Commands.LIST_SOURCEPATHS, async() => { + const result: ListCommandResult = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.LIST_SOURCEPATHS); + if (result.status) { + if (!result.data || !result.data.length) { + window.showInformationMessage("No Java source directories found in the workspace, please use the command 'Add Folder to Java Source Path' first."); + } else { + window.showQuickPick(result.data.map(sourcePath => { + return { + label: sourcePath.displayPath, + detail: `$(file-directory) ${sourcePath.projectType} Project: ${sourcePath.projectName}`, + }; + }), { placeHolder: "All Java source directories recognized by the workspace."}); + } + } else { + window.showErrorMessage(result.message); + } + }); +} diff --git a/src/commands.ts b/src/commands.ts index d473c6797..f225b68b1 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -90,4 +90,16 @@ export namespace Commands { * Resolve the source attachment information for the selected class file */ export const RESOLVE_SOURCE_ATTACHMENT = 'java.project.resolveSourceAttachment'; + /** + * Mark the folder as the source root of the closest project. + */ + export const ADD_TO_SOURCEPATH = 'java.project.addToSourcePath'; + /** + * Unmark the folder as the source root of the project. + */ + export const REMOVE_FROM_SOURCEPATH = 'java.project.removeFromSourcePath'; + /** + * List all recognized source roots in the workspace. + */ + export const LIST_SOURCEPATHS = 'java.project.listSourcePaths'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 490f2bd4a..d03a30841 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,6 +12,7 @@ import { Commands } from './commands'; import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } from './protocol'; import { ExtensionAPI } from './extension.api'; +import * as buildpath from './buildpath'; import * as net from 'net'; let oldConfig; @@ -113,6 +114,7 @@ export function activate(context: ExtensionContext): Promise { item.text = '$(thumbsup)'; p.report({ message: 'Finished' }); lastStatus = item.text; + commands.executeCommand('setContext', 'javaLSReady', true); resolve({ apiVersion: '0.1', javaRequirement: requirements, @@ -284,6 +286,8 @@ export function activate(context: ExtensionContext): Promise { } }); + buildpath.registerCommands(); + window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); }); diff --git a/test/extension.test.ts b/test/extension.test.ts index 2e54032c4..c9d8e0781 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -37,7 +37,10 @@ suite('Java Language Extension', () => { Commands.COMPILE_WORKSPACE, Commands.OPEN_FORMATTER, Commands.CLEAN_WORKSPACE, - Commands.UPDATE_SOURCE_ATTACHMENT + Commands.UPDATE_SOURCE_ATTACHMENT, + Commands.ADD_TO_SOURCEPATH, + Commands.REMOVE_FROM_SOURCEPATH, + Commands.LIST_SOURCEPATHS, ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 744e80e9d2b26f35469c3a6af0b0f6a901617860 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 17 Dec 2018 23:30:45 -0500 Subject: [PATCH 0358/1435] Changelog for the 0.36.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db6cb1b8a..76085498d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,16 @@ # Change Log -## 0.36.0 (TBD) +## 0.36.0 (December 18th, 2018) +* enhancement - reworked standalone files support. Now maps root folders to an invisible project under the hood. See [#508](https://github.com/redhat-developer/vscode-java/issues/508), [#620](https://github.com/redhat-developer/vscode-java/issues/620), [#739](https://github.com/redhat-developer/vscode-java/issues/739). +* enhancement - added commands to add/remove/list source folders of Eclipse projects. See [#619](https://github.com/redhat-developer/vscode-java/issues/619). +* enhancement - mapped `extract` refactorings to new code action kinds (helps with key mapping). See [#714](https://github.com/redhat-developer/vscode-java/issues/714). * enhancement - new `java.maxConcurrentBuilds` preference to set max simultaneous project builds. See [#741](https://github.com/redhat-developer/vscode-java/pull/741). +* enhancement - source action to generate Getters/Setters for all fields. See [JLS#163](https://github.com/eclipse/eclipse.jdt.ls/issues/163). +* bug fix - fixed project reference when navigating to JDK classes. See [JLS#842](https://github.com/eclipse/eclipse.jdt.ls/issues/842). +* bug fix - fixed potential NPE on hover. See [#723](https://github.com/redhat-developer/vscode-java/issues/723). +* bug fix - don't display unnecessary code actions. See [JLS#894](https://github.com/eclipse/eclipse.jdt.ls/issues/894). +* build - removed Guava 15 from the distribution, saving 2MB. See [JLS#484](https://github.com/eclipse/eclipse.jdt.ls/issues/484). +* build - migrated to Buildship 3.0. See [JLS#875](https://github.com/eclipse/eclipse.jdt.ls/issues/875). ## 0.35.0 (November 30th, 2018) * enhancement - `Organize imports` moved to `Source Action...` menu. See [#513](https://github.com/redhat-developer/vscode-java/issues/513). From 42d311ac8b5f1b763b6d30eb358414a310e91b83 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 19 Dec 2018 19:11:37 -0500 Subject: [PATCH 0359/1435] Upversion to 0.37.0 Signed-off-by: Fred Bricon --- package-lock.json | 84 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 59065738f..1b25b1b34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.36.0", + "version": "0.37.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -12,7 +12,7 @@ }, "@types/glob": { "version": "5.0.30", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "resolved": "http://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", "dev": true, "requires": { @@ -52,7 +52,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -165,7 +165,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-map": { @@ -534,7 +534,7 @@ }, "buffer": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "dev": true, "requires": { @@ -620,7 +620,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -782,7 +782,7 @@ }, "commander": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -845,7 +845,7 @@ }, "d": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { @@ -907,7 +907,7 @@ "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "requires": { "file-type": "^5.2.0", @@ -926,7 +926,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "requires": { "decompress-tar": "^4.1.0", @@ -939,7 +939,7 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", "dev": true } } @@ -947,7 +947,7 @@ "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "requires": { "decompress-tar": "^4.1.1", @@ -977,7 +977,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1293,7 +1293,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { @@ -1484,7 +1484,7 @@ }, "file-type": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", "dev": true }, @@ -2228,7 +2228,7 @@ }, "get-stream": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { @@ -2542,7 +2542,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -2670,7 +2670,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -2867,7 +2867,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3028,7 +3028,7 @@ }, "chalk": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "dev": true, "requires": { @@ -3412,12 +3412,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -3549,7 +3549,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -3773,7 +3773,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -4028,14 +4028,14 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -4062,7 +4062,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -4071,7 +4071,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -4098,7 +4098,7 @@ "dependencies": { "commander": { "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, @@ -4197,7 +4197,7 @@ }, "next-tick": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, @@ -4398,7 +4398,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -4407,7 +4407,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-filepath": { @@ -4490,7 +4490,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { @@ -4548,7 +4548,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -4593,7 +4593,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -4650,7 +4650,7 @@ }, "queue": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", + "resolved": "http://registry.npmjs.org/queue/-/queue-3.1.0.tgz", "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "dev": true, "requires": { @@ -4927,7 +4927,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -5312,7 +5312,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5341,7 +5341,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "dev": true, "requires": { "is-natural-number": "^4.0.1" @@ -5365,7 +5365,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { @@ -5397,7 +5397,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -6074,7 +6074,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { diff --git a/package.json b/package.json index 7d919bb07..df5482922 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.36.0", + "version": "0.37.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 024f51c502e29843631a95c2b6160c8f1830f699 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Thu, 20 Dec 2018 12:24:17 +0800 Subject: [PATCH 0360/1435] Add webpack support for vscode java extension. (#751) * Add webpack support for vscode java extension. Signed-off-by: Yaohai Zheng * Address review feedback. Signed-off-by: Yaohai Zheng --- .gitignore | 1 + .travis.yml | 1 + .vscode/launch.json | 8 +- .vscode/tasks.json | 49 +- .vscodeignore | 10 +- package-lock.json | 1794 +++++++++++++++++++++++++++++++++++++- package.json | 15 +- src/buildpath.ts | 6 +- src/extension.ts | 8 +- src/javaServerStarter.ts | 4 +- test/index.ts | 1 + tslint.json | 2 +- webpack.config.js | 38 + 13 files changed, 1899 insertions(+), 38 deletions(-) create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index 80d4e0335..0fa2a50ce 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules .vscode-test undefined target +dist diff --git a/.travis.yml b/.travis.yml index eea525d07..d606e7068 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,7 @@ install: - tar -xvzf jdt-language-server-latest.tar.gz -C ./server - rm jdt-language-server-latest.tar.gz - npm install +- npm run compile - npm run vscode:prepublish - npm install -g vsce - vsce package diff --git a/.vscode/launch.json b/.vscode/launch.json index 750deb08e..14f578dcd 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,7 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], "stopOnEntry": false, "sourceMaps": true, - "outFiles": [ "${workspaceRoot}/out/src/**" ], + "outFiles": [ "${workspaceRoot}/dist/**/*.js" ], "preLaunchTask": "npm: watch" }, { @@ -21,7 +21,7 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], "stopOnEntry": false, "sourceMaps": true, - "outFiles": [ "${workspaceRoot}/out/src/**" ], + "outFiles": [ "${workspaceRoot}/dist/**/*.js" ], "env": { "SERVER_PORT": "3333" }, @@ -35,7 +35,7 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], "stopOnEntry": false, "sourceMaps": true, - "outFiles": [ "${workspaceRoot}/out/src/**" ], + "outFiles": [ "${workspaceRoot}/dist/**/*.js" ], "env": { "JDTLS_CLIENT_PORT": "5036" }, @@ -50,7 +50,7 @@ "stopOnEntry": false, "sourceMaps": true, "outFiles": ["${workspaceRoot}/out/test/**"], - "preLaunchTask": "npm: watch" + "preLaunchTask": "npm: compile" } ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 3f2783c3e..f35d360c2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,20 +1,35 @@ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format { - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "watch", - "problemMatcher": "$tsc-watch", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "group": { - "kind": "build", - "isDefault": true - } - } - ] -} \ No newline at end of file + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": { + "owner": "typescript", + "pattern":[ + { + "regexp": "\\[tsl\\] ERROR", + "file": 1, + "location": 2, + "message": 3 + } + ], + "background": { + "activeOnStart": true, + "beginsPattern": "Compilation \\w+ starting…", + "endsPattern": "Compilation\\s+finished" + } + }, + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/.vscodeignore b/.vscodeignore index 5468c0b96..11d309abb 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,6 +1,6 @@ .vscode/** typings/** -out/test/** +out/** test/** src/** images/** @@ -14,3 +14,11 @@ CONTRIBUTING.md .vscode-test/** **/**.vsix **/**.tar.gz +dist/**/*.map +webpack.*.json +node_modules +.editorconfig +.travis.yml +gulpfile.jsonJenkinsfile +tslint.json +webpack.config.js diff --git a/package-lock.json b/package-lock.json index 1b25b1b34..9ce8f273f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,205 @@ "integrity": "sha512-JWB3xaVfsfnFY8Ofc9rTB/op0fqqTSqy4vBcVk1LuRJvta7KTX+D//fCkiTMeLGhdr2EbFZzQjC97gvmPilk9Q==", "dev": true }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, "ajv": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", @@ -50,6 +249,18 @@ "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, "ansi-colors": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -123,6 +334,12 @@ "buffer-equal": "^1.0.0" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, "archive-type": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", @@ -291,6 +508,43 @@ "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -463,6 +717,12 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, "binary-extensions": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", @@ -488,6 +748,18 @@ "inherits": "~2.0.0" } }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -526,12 +798,89 @@ } } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "buffer": { "version": "3.6.0", "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", @@ -583,12 +932,54 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz", + "integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "figgy-pudding": "^3.1.0", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.3", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.0", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -652,6 +1043,31 @@ "upath": "^1.0.5" } }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -789,6 +1205,12 @@ "graceful-readlink": ">= 1.0.0" } }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -812,6 +1234,21 @@ "typedarray": "^0.0.6" } }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -821,6 +1258,20 @@ "safe-buffer": "~5.1.1" } }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -843,6 +1294,92 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, "d": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -861,6 +1398,12 @@ "assert-plus": "^1.0.0" } }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, "dateformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", @@ -1063,6 +1606,16 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -1075,6 +1628,23 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "duplexer": { "version": "0.1.1", "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -1148,6 +1718,27 @@ "safer-buffer": "^2.1.0" } }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -1157,6 +1748,26 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1216,12 +1827,37 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -1251,6 +1887,45 @@ } } }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1482,6 +2157,12 @@ "pend": "~1.2.0" } }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, "file-type": { "version": "3.9.0", "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", @@ -1517,6 +2198,17 @@ } } }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, "find-java-home": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.2.0.tgz", @@ -1652,6 +2344,16 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -1668,6 +2370,18 @@ "through2": "^2.0.3" } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2364,6 +3078,12 @@ "resolve-dir": "^1.0.0" } }, + "global-modules-path": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz", + "integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==", + "dev": true + }, "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", @@ -3288,12 +4008,43 @@ } } }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", @@ -3320,12 +4071,46 @@ "sshpk": "^1.7.0" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3661,6 +4446,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3688,6 +4479,12 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -3784,6 +4581,33 @@ "strip-bom": "^2.0.0" } }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", @@ -3915,6 +4739,16 @@ "lodash.escape": "^3.0.0" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -3941,6 +4775,15 @@ "kind-of": "^6.0.2" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -3980,6 +4823,38 @@ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", "dev": true }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "merge-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", @@ -4010,6 +4885,16 @@ "to-regex": "^3.0.2" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, "mime-db": { "version": "1.37.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", @@ -4025,6 +4910,24 @@ "mime-db": "~1.37.0" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4039,6 +4942,36 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -4136,6 +5069,20 @@ } } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4195,12 +5142,80 @@ "to-regex": "^3.0.1" } }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, "next-tick": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, "node.extend": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", @@ -4241,6 +5256,15 @@ "once": "^1.3.2" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4396,6 +5420,12 @@ "readable-stream": "^2.0.1" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-locale": { "version": "1.4.0", "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -4410,6 +5440,78 @@ "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pako": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", + "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -4477,6 +5579,12 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -4493,6 +5601,12 @@ "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -4534,6 +5648,19 @@ "through": "~2.3" } }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -4567,7 +5694,27 @@ "pinkie": "^2.0.0" } }, - "plugin-error": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", @@ -4597,18 +5744,56 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.1.29", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", @@ -4642,6 +5827,18 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, "querystringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", @@ -4676,6 +5873,25 @@ } } }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4879,6 +6095,15 @@ "path-parse": "^1.0.5" } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -4889,6 +6114,12 @@ "global-modules": "^1.0.0" } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, "resolve-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", @@ -4919,6 +6150,25 @@ "glob": "^7.0.5" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -4940,6 +6190,16 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, "seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -4963,6 +6223,12 @@ "sver-compat": "^1.5.0" } }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -4992,6 +6258,43 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5099,6 +6402,12 @@ } } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5221,6 +6530,15 @@ "tweetnacl": "~0.14.0" } }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -5254,6 +6572,16 @@ } } }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, "stream-combiner": { "version": "0.0.4", "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -5263,12 +6591,35 @@ "duplexer": "~0.1.1" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, "stream-exhaust": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "stream-shift": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", @@ -5347,6 +6698,12 @@ "is-natural-number": "^4.0.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -5363,6 +6720,12 @@ "es6-symbol": "^3.1.1" } }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "dev": true + }, "tar": { "version": "2.2.1", "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", @@ -5389,6 +6752,66 @@ "xtend": "^4.0.0" } }, + "terser": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.11.0.tgz", + "integrity": "sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz", + "integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.8.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -5427,6 +6850,15 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -5445,6 +6877,12 @@ "is-negated-glob": "^1.0.0" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", @@ -5520,6 +6958,50 @@ } } }, + "ts-loader": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.1.tgz", + "integrity": "sha512-fDDgpBH3SR8xlt2MasLdz3Yy611PQ/UY/KGyo7TgXhTRU/6sS8uGG0nJYnU1OdFBNKcoYbId1UTNaAOUn+i41g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -5592,6 +7074,12 @@ "tslib": "^1.8.1" } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -5693,6 +7181,24 @@ } } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unique-stream": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", @@ -5764,6 +7270,24 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "url-parse": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", @@ -5780,6 +7304,15 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5792,6 +7325,12 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, "v8flags": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", @@ -5922,6 +7461,15 @@ "vinyl": "^2.0.0" } }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, "vscode": { "version": "1.1.22", "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.22.tgz", @@ -6056,6 +7604,235 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.27.1.tgz", + "integrity": "sha512-WArHiLvHrlfyRM8i7f+2SFbr/XbQ0bXqTkPF8JpHOzub5482Y3wx7rEO8stuLGOKOgZJcqcisLhD7LrM/+fVMw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", + "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", @@ -6072,6 +7849,15 @@ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -6099,6 +7885,12 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yargs": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", diff --git a/package.json b/package.json index df5482922..2ff8adf8b 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "workspaceContains:pom.xml", "workspaceContains:build.gradle" ], - "main": "./out/src/extension", + "main": "./dist/extension", "contributes": { "languages": [ { @@ -373,13 +373,15 @@ } }, "scripts": { - "vscode:prepublish": "tsc -p ./", - "watch": "tsc -watch -p ./", + "vscode:prepublish": "webpack --mode production", + "compile": "tsc -p ./", + "watch": "webpack --mode development --watch --info-verbosity verbose", "postinstall": "node ./node_modules/vscode/bin/install", "test": "node ./node_modules/vscode/bin/test", "build-server": "./node_modules/.bin/gulp build_server", "watch-server": "./node_modules/.bin/gulp watch_server", - "tslint": "./node_modules/.bin/gulp tslint" + "tslint": "./node_modules/.bin/gulp tslint", + "webpack": "webpack --mode development" }, "devDependencies": { "@types/glob": "5.0.30", @@ -390,9 +392,12 @@ "gulp-download": "0.0.1", "gulp-tslint": "^8.1.3", "mocha": "^5.2.0", + "ts-loader": "^5.3.1", "tslint": "^5.11.0", "typescript": "^3.0.3", - "vscode": "^1.1.22" + "vscode": "^1.1.22", + "webpack": "^4.27.1", + "webpack-cli": "^3.1.2" }, "dependencies": { "vscode-languageclient": "~5.1.1", diff --git a/src/buildpath.ts b/src/buildpath.ts index c3a04d011..6302fe00b 100644 --- a/src/buildpath.ts +++ b/src/buildpath.ts @@ -23,7 +23,7 @@ export function registerCommands() { commands.registerCommand(Commands.ADD_TO_SOURCEPATH, async (uri: Uri) => { const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.ADD_TO_SOURCEPATH, uri.toString()); if (result.status) { - window.showInformationMessage(result.message ? result.message : "Successfully added the folder to the source path."); + window.showInformationMessage(result.message ? result.message : 'Successfully added the folder to the source path.'); } else { window.showErrorMessage(result.message); } @@ -32,7 +32,7 @@ export function registerCommands() { commands.registerCommand(Commands.REMOVE_FROM_SOURCEPATH, async (uri: Uri) => { const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.REMOVE_FROM_SOURCEPATH, uri.toString()); if (result.status) { - window.showInformationMessage(result.message ? result.message : "Successfully removed the folder from the source path."); + window.showInformationMessage(result.message ? result.message : 'Successfully removed the folder from the source path.'); } else { window.showErrorMessage(result.message); } @@ -49,7 +49,7 @@ export function registerCommands() { label: sourcePath.displayPath, detail: `$(file-directory) ${sourcePath.projectType} Project: ${sourcePath.projectName}`, }; - }), { placeHolder: "All Java source directories recognized by the workspace."}); + }), { placeHolder: 'All Java source directories recognized by the workspace.'}); } } else { window.showErrorMessage(result.message); diff --git a/src/extension.ts b/src/extension.ts index d03a30841..d7c4fd088 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -257,12 +257,12 @@ export function activate(context: ExtensionContext): Promise { const defaultPath = attributes.sourceAttachmentPath || attributes.jarPath; const sourceFileUris: Uri[] = await window.showOpenDialog({ defaultUri: defaultPath ? Uri.file(defaultPath) : null, - openLabel: "Select Source File", + openLabel: 'Select Source File', canSelectFiles: true, canSelectFolders: false, canSelectMany: false, filters: { - "Source files": ["jar", "zip"] + 'Source files': ['jar', 'zip'] }, }); @@ -708,7 +708,7 @@ function getTriggerFiles(): string[] { } for (const rootFolder of workspace.workspaceFolders) { - if (rootFolder.uri.scheme !== "file") { + if (rootFolder.uri.scheme !== 'file') { continue; } @@ -732,7 +732,7 @@ function getTriggerFiles(): string[] { function getJavaFilePathOfTextEditor(editor: TextEditor): string | undefined { if (editor) { const resource = editor.document.uri; - if (resource.scheme === "file" && resource.fsPath.endsWith(".java")) { + if (resource.scheme === 'file' && resource.fsPath.endsWith('.java')) { return path.normalize(resource.fsPath); } } diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index e9768e7c1..3cf4540da 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -59,7 +59,7 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp let vmargs = javaConfiguration.get('jdt.ls.vmargs', ''); parseVMargs(params, vmargs); - let server_home: string = path.resolve(__dirname, '../../server'); + let server_home: string = path.resolve(__dirname, '../server'); let launchersFound: Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', { cwd: server_home }); if (launchersFound.length) { params.push('-jar'); params.push(path.resolve(server_home, launchersFound[0])); @@ -74,7 +74,7 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp } else if (process.platform === 'linux') { configDir = 'config_linux'; } - params.push('-configuration'); params.push(path.resolve(__dirname, '../../server', configDir)); + params.push('-configuration'); params.push(path.resolve(__dirname, '../server', configDir)); params.push('-data'); params.push(workspacePath); return params; } diff --git a/test/index.ts b/test/index.ts index 087abe8df..f38dc9ddd 100644 --- a/test/index.ts +++ b/test/index.ts @@ -10,6 +10,7 @@ // to report the results back to the caller. When the tests are finished, return // a possible error to the callback or null if none. +// tslint:disable-next-line:no-require-imports let testRunner = require('vscode/lib/testrunner'); // You can directly control Mocha options by uncommenting the following lines diff --git a/tslint.json b/tslint.json index 8f366acbe..f17c0afe2 100644 --- a/tslint.json +++ b/tslint.json @@ -1,8 +1,8 @@ { + "defaultSeverity": "error", "rules": { "no-unused-expression": true, "no-duplicate-variable": true, - "no-unused-variable": true, "curly": true, "class-name": true, "semicolon": true, diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..733da6f21 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +//@ts-check +const path = require('path'); + +/**@type {import('webpack').Configuration}*/ +const config = { + target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + node: { + __dirname: false, + __filename: false, + }, + entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: "commonjs2", + devtoolModuleFilenameTemplate: "../[resource-path]", + }, + externals: { + vscode: "commonjs vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + }, + devtool: 'source-map', + resolve: { // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader + extensions: ['.ts', '.js'], + }, + module: { + rules: [{ + test: /\.ts$/, + exclude: /node_modules/, + use: [{ + loader: 'ts-loader', + }] + }] + }, +} +module.exports = config; From c2d0dfc5415b13371655f8bb09eaca0fc35d5bf9 Mon Sep 17 00:00:00 2001 From: Gabriel Basilio Brito Date: Sat, 12 Jan 2019 11:02:54 -0400 Subject: [PATCH 0361/1435] Changing "JDK 8" to just "JDK" in README I Just found out JDK 11 is fully compatible so i used "java.home" with my JDK 11 folder and it works with no problems. That's why i'm doing this fix in the README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b48ba67eb..a8dd5866b 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Supported VS Code settings ========================== The following settings are supported: -* `java.home` : Absolute path to JDK 8 home folder used to launch the Java Language Server. Requires VS Code restart. +* `java.home` : Absolute path to JDK home folder used to launch the Java Language Server. Requires VS Code restart. * `java.jdt.ls.vmargs` : Extra VM arguments used to launch the Java Language Server. Requires VS Code restart. * `java.configuration.updateBuildConfiguration` : Specifies how modifications on build files update the Java classpath/configuration. Supported values are `disabled` (nothing happens), `interactive` (asks about updating on every modification), `automatic` (updating is automatically triggered). * `java.errors.incompleteClasspath.severity` : Specifies the severity of the message when the classpath is incomplete for a Java file. Supported values are `ignore`, `info`, `warning`, `error`. From 810dfb9831c844191c0dfcdf6980b149cf0749ad Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Wed, 16 Jan 2019 07:53:55 +0800 Subject: [PATCH 0362/1435] Adopt JDT.LS test project for client side test plan. (#748) Signed-off-by: Yaohai Zheng --- .gitignore | 1 + test/Test Plan.md | 58 ++++++ .../projects/eclipse/simple-app/.classpath | 6 + .../projects/eclipse/simple-app/.project | 17 ++ .../.settings/org.eclipse.jdt.core.prefs | 7 + .../eclipse/simple-app/src/app/App.java | 7 + .../eclipse/simple-app/src/app/Bar.java | 12 ++ .../eclipse/simple-app/src/app/Foo.java | 0 .../projects/gradle/gradle-11/build.gradle | 13 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 56177 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../projects/gradle/gradle-11/gradlew | 172 ++++++++++++++++++ .../projects/gradle/gradle-11/gradlew.bat | 84 +++++++++ .../projects/gradle/gradle-11/settings.gradle | 10 + .../gradle-11/src/main/java/foo/bar/Foo.java | 23 +++ .../gradle/simple-gradle/build.gradle | 6 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 56177 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../projects/gradle/simple-gradle/gradlew | 172 ++++++++++++++++++ .../projects/gradle/simple-gradle/gradlew.bat | 84 +++++++++ .../gradle/simple-gradle/settings.gradle | 10 + .../src/main/java/foo/bar/Foo.java | 23 +++ .../maven/multimodule/module1/pom.xml | 24 +++ .../module1/src/main/java/module1/Foo.java | 9 + .../maven/multimodule/module2/pom.xml | 24 +++ .../module2/src/main/java/module2/Foo.java | 9 + .../projects/maven/multimodule/pom.xml | 23 +++ .../projects/maven/salut-java11/pom.xml | 25 +++ .../src/main/java/org/sample/Bar.java | 22 +++ test/resources/projects/maven/salut/pom.xml | 26 +++ .../maven/salut/src/main/java/java/Foo.java | 17 ++ .../maven/salut/src/main/java/java/Foo2.java | 56 ++++++ .../maven/salut/src/main/java/java/Foo3.java | 21 +++ .../salut/src/main/java/org/sample/Bar.java | 21 +++ .../src/main/java/org/sample/TestJavadoc.java | 21 +++ .../salut/src/main/resources/test.properties | 0 .../resources/projects/singlefile/Single.java | 7 + .../projects/singlefile/WithError.java | 6 + 38 files changed, 1026 insertions(+) create mode 100644 test/Test Plan.md create mode 100644 test/resources/projects/eclipse/simple-app/.classpath create mode 100644 test/resources/projects/eclipse/simple-app/.project create mode 100644 test/resources/projects/eclipse/simple-app/.settings/org.eclipse.jdt.core.prefs create mode 100644 test/resources/projects/eclipse/simple-app/src/app/App.java create mode 100644 test/resources/projects/eclipse/simple-app/src/app/Bar.java create mode 100644 test/resources/projects/eclipse/simple-app/src/app/Foo.java create mode 100644 test/resources/projects/gradle/gradle-11/build.gradle create mode 100644 test/resources/projects/gradle/gradle-11/gradle/wrapper/gradle-wrapper.jar create mode 100644 test/resources/projects/gradle/gradle-11/gradle/wrapper/gradle-wrapper.properties create mode 100644 test/resources/projects/gradle/gradle-11/gradlew create mode 100644 test/resources/projects/gradle/gradle-11/gradlew.bat create mode 100644 test/resources/projects/gradle/gradle-11/settings.gradle create mode 100644 test/resources/projects/gradle/gradle-11/src/main/java/foo/bar/Foo.java create mode 100644 test/resources/projects/gradle/simple-gradle/build.gradle create mode 100644 test/resources/projects/gradle/simple-gradle/gradle/wrapper/gradle-wrapper.jar create mode 100644 test/resources/projects/gradle/simple-gradle/gradle/wrapper/gradle-wrapper.properties create mode 100644 test/resources/projects/gradle/simple-gradle/gradlew create mode 100644 test/resources/projects/gradle/simple-gradle/gradlew.bat create mode 100644 test/resources/projects/gradle/simple-gradle/settings.gradle create mode 100644 test/resources/projects/gradle/simple-gradle/src/main/java/foo/bar/Foo.java create mode 100644 test/resources/projects/maven/multimodule/module1/pom.xml create mode 100644 test/resources/projects/maven/multimodule/module1/src/main/java/module1/Foo.java create mode 100644 test/resources/projects/maven/multimodule/module2/pom.xml create mode 100644 test/resources/projects/maven/multimodule/module2/src/main/java/module2/Foo.java create mode 100644 test/resources/projects/maven/multimodule/pom.xml create mode 100644 test/resources/projects/maven/salut-java11/pom.xml create mode 100644 test/resources/projects/maven/salut-java11/src/main/java/org/sample/Bar.java create mode 100644 test/resources/projects/maven/salut/pom.xml create mode 100644 test/resources/projects/maven/salut/src/main/java/java/Foo.java create mode 100644 test/resources/projects/maven/salut/src/main/java/java/Foo2.java create mode 100644 test/resources/projects/maven/salut/src/main/java/java/Foo3.java create mode 100644 test/resources/projects/maven/salut/src/main/java/org/sample/Bar.java create mode 100644 test/resources/projects/maven/salut/src/main/java/org/sample/TestJavadoc.java create mode 100644 test/resources/projects/maven/salut/src/main/resources/test.properties create mode 100644 test/resources/projects/singlefile/Single.java create mode 100644 test/resources/projects/singlefile/WithError.java diff --git a/.gitignore b/.gitignore index 0fa2a50ce..355c66f37 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ node_modules undefined target dist +bin/ diff --git a/test/Test Plan.md b/test/Test Plan.md new file mode 100644 index 000000000..9b0474dbb --- /dev/null +++ b/test/Test Plan.md @@ -0,0 +1,58 @@ +# Test platform + +## Windows 10/maxOS/Linux + +# Scenarios + +## Basic + 1. Open .\resources\eclipse\simple-app. After the language server is initialized, check the status bar icon is :thumbsup:, and the problems view has two errors. + 2. Select Foo.java file, invoke `class` code snippet to generate code as below and the problem view error number is reduced to 1. + + ```java + package app; + + /** + * Foo + */ + public class Foo { + + + } + ``` +3. Click the remain error in the diagnostic window, the code action icon should pop up both on the problems view and the side bar of the editor. Select the code action of `Create method 'call()' in type 'Foo'` to fix the error. +4. Save all the files, and invoke VSCode command "Java: Force Java compilation". There should be no errors. +5. Typing the following file of code into the App.main method, the completion should work for File and there should be two errors in the problem view. + ```java + File f = new File("demo.txt"); + ``` +6. Invoke the context menu command `Source Action...` ==> `Organize Imports`, there should be only one warning remains in the problem view. + +## Maven + 1. Open .\resources\maven\salut. After the language server is initialized, check the status bar icon is :thumbsup:, and the problems views has several warnings but without errors. + 2. Editing experience is correctly working including diagnostics, code completion and code actions. + +## Maven - Multimodule +1. Open .\resources\maven\multimodule. After the language server is initialized, check the status bar icon is :thumbsup:, and there should be no errors/warning in the problems view. +2. Open Foo.java file, make sure the editing experience is correctly working including diagnostics, code completion and code action on both modules. + - module1\Foo.java + - module2\Foo.java + +## Gradle + 1. Open .\resources\gradle\simple-gradle. After the language server is initialized, check the status bar icon is :thumbsup:, and there should be no errors/problems in the problems view. + 2. Open Foo.java file, make sure the editing experience is correctly working including diagnostics, code completion and code action + +## Maven - Java 11 +1. Install JDK 11, and change the VSCode java.home to the JDK 11 path. +2. Open .\resources\maven\salut-java11. After the language server is initialized, check the status bar icon is :thumbsup:, and there should be no errors/problems in the problems view. +3. Open Bar.java, make sure the editing experience is correctly working including diagnostics, code completion and code action + +## Gradle - Java 11 +1. Install JDK 11. +2. Open .\resources\gradle\gradle-11. After the language server is initialized, check the status bar icon is :thumbsup:, and there should be no errors/problems in the problems view. +2. Open Foo.java file, make sure the editing experience is correctly working including diagnostics, code completion and code action. + +## Single file +1. Open/Create an empty folder +2. Add a new Java file, name it Test.java. Check the language server is initialized, and the status bar icon is :thumbsup: after that. +3. Type code snippet `class` to generate the class body, type `main` to generate the main methods. +4. In the Test.java file, make sure the editing experience is correctly working including diagnostics, code completion and code action. diff --git a/test/resources/projects/eclipse/simple-app/.classpath b/test/resources/projects/eclipse/simple-app/.classpath new file mode 100644 index 000000000..51a8bbad8 --- /dev/null +++ b/test/resources/projects/eclipse/simple-app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/test/resources/projects/eclipse/simple-app/.project b/test/resources/projects/eclipse/simple-app/.project new file mode 100644 index 000000000..9a2895aaa --- /dev/null +++ b/test/resources/projects/eclipse/simple-app/.project @@ -0,0 +1,17 @@ + + + simple-app + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + \ No newline at end of file diff --git a/test/resources/projects/eclipse/simple-app/.settings/org.eclipse.jdt.core.prefs b/test/resources/projects/eclipse/simple-app/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..0c68a61dc --- /dev/null +++ b/test/resources/projects/eclipse/simple-app/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/test/resources/projects/eclipse/simple-app/src/app/App.java b/test/resources/projects/eclipse/simple-app/src/app/App.java new file mode 100644 index 000000000..0518caa26 --- /dev/null +++ b/test/resources/projects/eclipse/simple-app/src/app/App.java @@ -0,0 +1,7 @@ +package app; + +public class App { + public static void main(String[] args) throws Exception { + System.out.println("Hello Java"); + } +} \ No newline at end of file diff --git a/test/resources/projects/eclipse/simple-app/src/app/Bar.java b/test/resources/projects/eclipse/simple-app/src/app/Bar.java new file mode 100644 index 000000000..4de602ad4 --- /dev/null +++ b/test/resources/projects/eclipse/simple-app/src/app/Bar.java @@ -0,0 +1,12 @@ +package app; + +/** + * Bar + */ +public class Bar { + + public void name() { + Foo f = new Foo(); + f.call(); + } +} \ No newline at end of file diff --git a/test/resources/projects/eclipse/simple-app/src/app/Foo.java b/test/resources/projects/eclipse/simple-app/src/app/Foo.java new file mode 100644 index 000000000..e69de29bb diff --git a/test/resources/projects/gradle/gradle-11/build.gradle b/test/resources/projects/gradle/gradle-11/build.gradle new file mode 100644 index 000000000..18262e0dd --- /dev/null +++ b/test/resources/projects/gradle/gradle-11/build.gradle @@ -0,0 +1,13 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This is a general purpose Gradle build. + * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/ + */ + plugins { + id 'java' + } + + sourceCompatibility = '11' + targetCompatibility = '11' + version = '0.0.1-SNAPSHOT' diff --git a/test/resources/projects/gradle/gradle-11/gradle/wrapper/gradle-wrapper.jar b/test/resources/projects/gradle/gradle-11/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..29953ea141f55e3b8fc691d31b5ca8816d89fa87 GIT binary patch literal 56177 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 i;x|p)^~-yfPOPa3(|vBayXKz \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/test/resources/projects/gradle/gradle-11/gradlew.bat b/test/resources/projects/gradle/gradle-11/gradlew.bat new file mode 100644 index 000000000..e95643d6a --- /dev/null +++ b/test/resources/projects/gradle/gradle-11/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/test/resources/projects/gradle/gradle-11/settings.gradle b/test/resources/projects/gradle/gradle-11/settings.gradle new file mode 100644 index 000000000..b34ef0add --- /dev/null +++ b/test/resources/projects/gradle/gradle-11/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/4.10.2/userguide/multi_project_builds.html + */ + +rootProject.name = 'gradle-11' diff --git a/test/resources/projects/gradle/gradle-11/src/main/java/foo/bar/Foo.java b/test/resources/projects/gradle/gradle-11/src/main/java/foo/bar/Foo.java new file mode 100644 index 000000000..21788ab86 --- /dev/null +++ b/test/resources/projects/gradle/gradle-11/src/main/java/foo/bar/Foo.java @@ -0,0 +1,23 @@ +package foo.bar; + +/** + * It's a Foo class + */ +public class Foo { + + /** + * It's a Bar interface + */ + interface Bar { + void something(Foo i, Bar j); + } + + public static void main(String[] args) { + Bar bar = (var i, var j) -> System.out.println(i.bar() + j.toString()); + System.out.print(bar); + } + + public String bar() { + return toString(); + } +} diff --git a/test/resources/projects/gradle/simple-gradle/build.gradle b/test/resources/projects/gradle/simple-gradle/build.gradle new file mode 100644 index 000000000..ebae0f6a6 --- /dev/null +++ b/test/resources/projects/gradle/simple-gradle/build.gradle @@ -0,0 +1,6 @@ +apply plugin: 'java' + + +sourceSets { + main.java.srcDirs = ['src/main/java'] +} \ No newline at end of file diff --git a/test/resources/projects/gradle/simple-gradle/gradle/wrapper/gradle-wrapper.jar b/test/resources/projects/gradle/simple-gradle/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..29953ea141f55e3b8fc691d31b5ca8816d89fa87 GIT binary patch literal 56177 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 i;x|p)^~-yfPOPa3(|vBayXKz \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/test/resources/projects/gradle/simple-gradle/gradlew.bat b/test/resources/projects/gradle/simple-gradle/gradlew.bat new file mode 100644 index 000000000..e95643d6a --- /dev/null +++ b/test/resources/projects/gradle/simple-gradle/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/test/resources/projects/gradle/simple-gradle/settings.gradle b/test/resources/projects/gradle/simple-gradle/settings.gradle new file mode 100644 index 000000000..168c74082 --- /dev/null +++ b/test/resources/projects/gradle/simple-gradle/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/4.10.2/userguide/multi_project_builds.html + */ + +rootProject.name = 'simple-gradle' diff --git a/test/resources/projects/gradle/simple-gradle/src/main/java/foo/bar/Foo.java b/test/resources/projects/gradle/simple-gradle/src/main/java/foo/bar/Foo.java new file mode 100644 index 000000000..60b555ce7 --- /dev/null +++ b/test/resources/projects/gradle/simple-gradle/src/main/java/foo/bar/Foo.java @@ -0,0 +1,23 @@ +package foo.bar; + +/** + * It's a Foo class + */ +public class Foo { + + /** + * It's a Bar interface + */ + interface Bar { + void something(Foo i, Bar j); + } + + public static void main(String[] args) { + Bar bar = (Foo i, Bar j) -> System.out.println(i.bar() + j.toString()); + System.out.print(bar); + } + + public String bar() { + return toString(); + } +} diff --git a/test/resources/projects/maven/multimodule/module1/pom.xml b/test/resources/projects/maven/multimodule/module1/pom.xml new file mode 100644 index 000000000..deb68ec2c --- /dev/null +++ b/test/resources/projects/maven/multimodule/module1/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + foo.bar + module1 + 0.0.1-SNAPSHOT + jar + + foo.bar + multimodule + 0.0.1-SNAPSHOT + + + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/test/resources/projects/maven/multimodule/module1/src/main/java/module1/Foo.java b/test/resources/projects/maven/multimodule/module1/src/main/java/module1/Foo.java new file mode 100644 index 000000000..1888b399f --- /dev/null +++ b/test/resources/projects/maven/multimodule/module1/src/main/java/module1/Foo.java @@ -0,0 +1,9 @@ +package module1; + +/** + * Foo + */ +public class Foo { + + +} \ No newline at end of file diff --git a/test/resources/projects/maven/multimodule/module2/pom.xml b/test/resources/projects/maven/multimodule/module2/pom.xml new file mode 100644 index 000000000..3f588321f --- /dev/null +++ b/test/resources/projects/maven/multimodule/module2/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + foo.bar + module2 + 0.0.1-SNAPSHOT + jar + + foo.bar + multimodule + 0.0.1-SNAPSHOT + + + + + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/test/resources/projects/maven/multimodule/module2/src/main/java/module2/Foo.java b/test/resources/projects/maven/multimodule/module2/src/main/java/module2/Foo.java new file mode 100644 index 000000000..2c21f4f87 --- /dev/null +++ b/test/resources/projects/maven/multimodule/module2/src/main/java/module2/Foo.java @@ -0,0 +1,9 @@ +package module2; + +/** + * Foo + */ +public class Foo { + + +} \ No newline at end of file diff --git a/test/resources/projects/maven/multimodule/pom.xml b/test/resources/projects/maven/multimodule/pom.xml new file mode 100644 index 000000000..cdb2c465e --- /dev/null +++ b/test/resources/projects/maven/multimodule/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + foo.bar + multimodule + 0.0.1-SNAPSHOT + pom + + module1 + module2 + + + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/test/resources/projects/maven/salut-java11/pom.xml b/test/resources/projects/maven/salut-java11/pom.xml new file mode 100644 index 000000000..e5f845376 --- /dev/null +++ b/test/resources/projects/maven/salut-java11/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + foo.bar + salut-java11 + 0.0.1-SNAPSHOT + + + + maven-compiler-plugin + 3.8.0 + + 11 + + + + + + + org.apache.commons + commons-lang3 + 3.5 + + + \ No newline at end of file diff --git a/test/resources/projects/maven/salut-java11/src/main/java/org/sample/Bar.java b/test/resources/projects/maven/salut-java11/src/main/java/org/sample/Bar.java new file mode 100644 index 000000000..1ce0200d7 --- /dev/null +++ b/test/resources/projects/maven/salut-java11/src/main/java/org/sample/Bar.java @@ -0,0 +1,22 @@ +package org.sample; + +/** + * This is Bar + */ +public class Bar { + + public static void main(String[] args) { + var foo = "Hello world! from "+Bar.class; + System.out.print( foo ); + } + + public static interface MyInterface { + + void foo(); + } + + public static class MyClass { + + void bar() {} + } +} diff --git a/test/resources/projects/maven/salut/pom.xml b/test/resources/projects/maven/salut/pom.xml new file mode 100644 index 000000000..fc21445ab --- /dev/null +++ b/test/resources/projects/maven/salut/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + foo.bar + salut + 0.0.1-SNAPSHOT + + + + maven-compiler-plugin + 3.5.1 + + 1.7 + 1.7 + + + + + + + org.apache.commons + commons-lang3 + 3.5 + + + \ No newline at end of file diff --git a/test/resources/projects/maven/salut/src/main/java/java/Foo.java b/test/resources/projects/maven/salut/src/main/java/java/Foo.java new file mode 100644 index 000000000..c32db88a1 --- /dev/null +++ b/test/resources/projects/maven/salut/src/main/java/java/Foo.java @@ -0,0 +1,17 @@ +package java; + +import org.apache.commons.lang3.StringUtils; + +/** + * This is foo + */ +public class Foo { + + public static void main(String[] args) { + System.out.print( StringUtils.capitalize("Hello world! from "+Foo.class)); + } + + public void linkedFromFoo2() { + + } +} \ No newline at end of file diff --git a/test/resources/projects/maven/salut/src/main/java/java/Foo2.java b/test/resources/projects/maven/salut/src/main/java/java/Foo2.java new file mode 100644 index 000000000..f9d02b8a7 --- /dev/null +++ b/test/resources/projects/maven/salut/src/main/java/java/Foo2.java @@ -0,0 +1,56 @@ +package java; + +import java.io.IOException; + +import org.apache.commons.lang3.AnnotationUtils; + +public class Foo2 { + + + /** + * {@value #mySimpleString} is a simple String + */ + public static final String mySimpleString = + "SimpleStringData"; + + /** + * {@link #newMethodBeingLinkedToo} + */ + public void javadocLinkToMethodInClass() { + + } + + private void newMethodBeingLinkedToo() { + + } + + /** + * {@link Foo#linkedFromFoo2()} + */ + private void javadocLinkToMethodInOtherClass() { + + } + + /** + * This Javadoc contains a link to + * {@link #newMethodBeingLinkedToo} + * @see Online docs for java + * @param someString the string to enter + * @since 0.0.1 + * @version 0.0.1 + * @author jpinkney + * @return String + * @throws IOException + */ + private String javadocLink(String someString) throws IOException { + return null; + } + + /** + * This link doesnt work {@link LinkToSomethingNotFound} + */ + private void linkDoesNotExist() { + + } + +} diff --git a/test/resources/projects/maven/salut/src/main/java/java/Foo3.java b/test/resources/projects/maven/salut/src/main/java/java/Foo3.java new file mode 100644 index 000000000..7f92770e5 --- /dev/null +++ b/test/resources/projects/maven/salut/src/main/java/java/Foo3.java @@ -0,0 +1,21 @@ +package java; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; + +public class Foo3 { + + private Set properties; + + public Foo3() { + this.properties = new HashSet(); + } + + public void localVariable() { + StringUtils util = new StringUtils(); + System.out.println(this.properties); + System.out.println(util); + } +} diff --git a/test/resources/projects/maven/salut/src/main/java/org/sample/Bar.java b/test/resources/projects/maven/salut/src/main/java/org/sample/Bar.java new file mode 100644 index 000000000..3f456c759 --- /dev/null +++ b/test/resources/projects/maven/salut/src/main/java/org/sample/Bar.java @@ -0,0 +1,21 @@ +package org.sample; + +/** + * This is Bar + */ +public class Bar { + + public static void main(String[] args) { + System.out.print( "Hello world! from "+Bar.class); + } + + public static interface MyInterface { + + void foo(); + } + + public static class MyClass { + + void bar() {} + } +} diff --git a/test/resources/projects/maven/salut/src/main/java/org/sample/TestJavadoc.java b/test/resources/projects/maven/salut/src/main/java/org/sample/TestJavadoc.java new file mode 100644 index 000000000..5782454d3 --- /dev/null +++ b/test/resources/projects/maven/salut/src/main/java/org/sample/TestJavadoc.java @@ -0,0 +1,21 @@ +package org.sample; +import org.apache.commons.lang3.text.WordUtils; +public class TestJavadoc { + + private String foo() { + Inner inner = new Inner(); + return inner.test; + } + + public class Inner { + /** Test */ + public String test; + } + + /** + * Uses {@link WordUtils} + */ + public void commonsLang() { + + } +} \ No newline at end of file diff --git a/test/resources/projects/maven/salut/src/main/resources/test.properties b/test/resources/projects/maven/salut/src/main/resources/test.properties new file mode 100644 index 000000000..e69de29bb diff --git a/test/resources/projects/singlefile/Single.java b/test/resources/projects/singlefile/Single.java new file mode 100644 index 000000000..2327e4609 --- /dev/null +++ b/test/resources/projects/singlefile/Single.java @@ -0,0 +1,7 @@ +public class Single { + public static void main(String[] args) + { + String s = "1"; + System.out.println("Hello World!" + s); + } +} \ No newline at end of file diff --git a/test/resources/projects/singlefile/WithError.java b/test/resources/projects/singlefile/WithError.java new file mode 100644 index 000000000..84a8e819b --- /dev/null +++ b/test/resources/projects/singlefile/WithError.java @@ -0,0 +1,6 @@ +public class WrongName { + public static void main(String[] args) + { + String s = "1"; + System.out.println("Hello World!" + s); +} \ No newline at end of file From d586a9c9a759a663c3046a1d01a0f9fb0a3f7229 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 15 Jan 2019 19:19:05 -0500 Subject: [PATCH 0363/1435] Update changelog for 0.37.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76085498d..8f8a028f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 0.37.0 (January 16th, 2018) +* enhancement - improve extension loading time by using webpack. See [#732](https://github.com/redhat-developer/vscode-java/issues/732). +* bug fix - fixed annotation processing for Micronaut projects. See [#693](https://github.com/redhat-developer/vscode-java/issues/693). +* bug fix - fixed regression with "Add parentheses around cast" code action. See [JLS#907](https://github.com/eclipse/eclipse.jdt.ls/issues/907). +* bug fix - ignore circular links during project import. See [JLS#911](https://github.com/eclipse/eclipse.jdt.ls/pull/911). +* documentation - Changing "JDK 8" to just "JDK" in README.md. See [#763](https://github.com/redhat-developer/vscode-java/pull/763). +* build - adopt test plan. See [#748](https://github.com/redhat-developer/vscode-java/pull/748). + + ## 0.36.0 (December 18th, 2018) * enhancement - reworked standalone files support. Now maps root folders to an invisible project under the hood. See [#508](https://github.com/redhat-developer/vscode-java/issues/508), [#620](https://github.com/redhat-developer/vscode-java/issues/620), [#739](https://github.com/redhat-developer/vscode-java/issues/739). * enhancement - added commands to add/remove/list source folders of Eclipse projects. See [#619](https://github.com/redhat-developer/vscode-java/issues/619). From de3b609446cd0a117cf70a9c1658babb54b2cced Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 16 Jan 2019 17:24:56 -0500 Subject: [PATCH 0364/1435] Remove existing out/ dir to ensure tests compile Signed-off-by: Fred Bricon --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 0867e6b63..3f5a38fb7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -33,6 +33,7 @@ node('rhel7'){ buildVscodeExtension() unstash 'server_distro' def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') + sh "rm -rf ./out" sh "mkdir ./server" sh "tar -xvzf ${files[0].path} -C ./server" From 1839e428f9438198718e84a9700c8a03cd6e0f6c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 17 Jan 2019 00:19:03 -0500 Subject: [PATCH 0365/1435] Ensure test code compiles before running on Jenkins Signed-off-by: Fred Bricon --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 3f5a38fb7..c30c9159b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -43,6 +43,7 @@ node('rhel7'){ stage 'Test vscode-java for staging' wrap([$class: 'Xvnc']) { + sh "npm run compile" //compile the test code too sh "npm test --silent" } From f48d6362e4f87374b2978223c88737c4874b794d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 17 Jan 2019 00:21:26 -0500 Subject: [PATCH 0366/1435] Update changelog for the 0.37.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f8a028f3..bedbd7f2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.37.0 (January 16th, 2018) +## 0.37.0 (January 17th, 2018) * enhancement - improve extension loading time by using webpack. See [#732](https://github.com/redhat-developer/vscode-java/issues/732). * bug fix - fixed annotation processing for Micronaut projects. See [#693](https://github.com/redhat-developer/vscode-java/issues/693). * bug fix - fixed regression with "Add parentheses around cast" code action. See [JLS#907](https://github.com/eclipse/eclipse.jdt.ls/issues/907). From 2339185f9dfc831dcaeec54700a140149257e430 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 17 Jan 2019 12:04:08 -0500 Subject: [PATCH 0367/1435] Upversion to 0.38.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 2 ++ package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bedbd7f2b..e75b08c02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +## 0.38.0 (TBD) + ## 0.37.0 (January 17th, 2018) * enhancement - improve extension loading time by using webpack. See [#732](https://github.com/redhat-developer/vscode-java/issues/732). * bug fix - fixed annotation processing for Micronaut projects. See [#693](https://github.com/redhat-developer/vscode-java/issues/693). diff --git a/package-lock.json b/package-lock.json index 9ce8f273f..bd37d6ff8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.37.0", + "version": "0.38.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1520,7 +1520,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1647,7 +1647,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -1866,7 +1866,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -1881,7 +1881,7 @@ "dependencies": { "map-stream": { "version": "0.1.0", - "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", "dev": true } @@ -3323,7 +3323,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", "dev": true }, @@ -3372,7 +3372,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3384,13 +3384,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -4327,7 +4327,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -5641,7 +5641,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -6491,7 +6491,7 @@ }, "split": { "version": "0.3.3", - "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { @@ -6584,7 +6584,7 @@ }, "stream-combiner": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { @@ -6728,7 +6728,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { diff --git a/package.json b/package.json index 2ff8adf8b..dd29f2668 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.37.0", + "version": "0.38.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From f7d787ee52258d7cdce43feded9b35bd68506e43 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 17 Jan 2019 17:27:41 -0500 Subject: [PATCH 0368/1435] Use a stop tab for client-side snippets (#769) Signed-off-by: Fred Bricon --- snippets/java.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/snippets/java.json b/snippets/java.json index 72bbc23cb..2269dcdab 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -3,7 +3,7 @@ "prefix": "main", "body": [ "public static void main(String[] args) {", - "\t$1", + "\t$0", "}" ], "description": "Public static main method" @@ -11,14 +11,14 @@ "sysout": { "prefix": "sysout", "body": [ - "System.out.println($1);" + "System.out.println($0);" ], "description": "Print to standard out" }, "syserr": { "prefix": "syserr", "body": [ - "System.err.println($1);" + "System.err.println($0);" ], "description": "Print to standard err" }, @@ -26,7 +26,7 @@ "prefix": "fori", "body": [ "for (${1:int} ${2:i} = ${3:0}; $2 < ${4:max}; $2++) {", - "\t$5", + "\t$0", "}" ], "description": "Indexed for loop" @@ -35,7 +35,7 @@ "prefix": "foreach", "body": [ "for (${1:type} ${2:var} : ${3:iterable}) {", - "\t$4", + "\t$0", "}" ], "description": "Enhanced for loop" @@ -64,7 +64,7 @@ "if (${1:condition}) {", "\t$2", "} else {", - "\t$3", + "\t$0", "}" ], "description": "if/else statement" @@ -73,7 +73,7 @@ "prefix": "ifnull", "body": [ "if (${1:condition} == null) {", - "\t$2", + "\t$0", "}" ], "description": "if statement checking for null" @@ -82,7 +82,7 @@ "prefix": "ifnotnull", "body": [ "if (${1:condition} != null) {", - "\t$2", + "\t$0", "}" ], "description": "if statement checking for not null" @@ -93,7 +93,7 @@ "try {", "\t$1", "} catch (${2:Exception} ${3:e}) {", - "\t$4//${5:TODO}: handle exception", + "\t$4//${0:TODO}: handle exception", "}" ], "description": "try/catch block" @@ -102,7 +102,7 @@ "prefix": "private_method", "body": [ "private ${1:void} ${2:name}($3) {", - "\t$4", + "\t$0", "}" ], "description": "private method" @@ -111,7 +111,7 @@ "prefix": "public_method", "body": [ "public ${1:void} ${2:name}(${3}) {", - "\t$4", + "\t$0", "}" ], "description": "public method" @@ -120,7 +120,7 @@ "prefix": "private_static_method", "body": [ "private static ${1:Type} ${2:name}(${3}) {", - "\t$4", + "\t$0", "}" ], "description": "private static method" @@ -129,7 +129,7 @@ "prefix": "public_static_method", "body": [ "public static ${1:void} ${2:name}(${3}) {", - "\t$4", + "\t$0", "}" ], "description": "public static method" @@ -138,7 +138,7 @@ "prefix": "protected_method", "body": [ "protected ${1:void} ${2:name}(${3}) {", - "\t$4", + "\t$0", "}" ], "description": "Protected method" @@ -178,7 +178,7 @@ "newObject": { "prefix": "new", "body": [ - "${1:Object} ${2:foo} = new ${1:Object}();" + "${0:Object} ${1:foo} = new ${0:Object}();" ], "description": "Create new Object" } From 38bdd7a546f7e0156700ec8773533c7bae14330a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 17 Jan 2019 18:52:46 -0500 Subject: [PATCH 0369/1435] Fix 0.37.0 release year --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e75b08c02..890d3ba0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.38.0 (TBD) -## 0.37.0 (January 17th, 2018) +## 0.37.0 (January 17th, 2019) * enhancement - improve extension loading time by using webpack. See [#732](https://github.com/redhat-developer/vscode-java/issues/732). * bug fix - fixed annotation processing for Micronaut projects. See [#693](https://github.com/redhat-developer/vscode-java/issues/693). * bug fix - fixed regression with "Add parentheses around cast" code action. See [JLS#907](https://github.com/eclipse/eclipse.jdt.ls/issues/907). From df180a654f9cb78e91037fb29d00d8cc427ffe8f Mon Sep 17 00:00:00 2001 From: Snjeza Date: Wed, 23 Jan 2019 17:43:52 +0100 Subject: [PATCH 0370/1435] Updates to gradle properties should be picked up when doing full build (#773) Signed-off-by: Snjezana Peco --- src/extension.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/extension.ts b/src/extension.ts index d7c4fd088..89d10d46e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -58,6 +58,7 @@ export function activate(context: ExtensionContext): Promise { workspace.createFileSystemWatcher('**/*.java'), workspace.createFileSystemWatcher('**/pom.xml'), workspace.createFileSystemWatcher('**/*.gradle'), + workspace.createFileSystemWatcher('**/gradle.properties'), workspace.createFileSystemWatcher('**/.project'), workspace.createFileSystemWatcher('**/.classpath'), workspace.createFileSystemWatcher('**/settings/*.prefs'), From 6857425595e5035295be917adf4a814daee7ab69 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Mon, 28 Jan 2019 22:44:10 +0800 Subject: [PATCH 0371/1435] Remove useless code (#771) Signed-off-by: Sheng Chen --- src/extension.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 89d10d46e..6711be092 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,12 +4,12 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter } from 'vscode'; -import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier } from 'vscode-languageclient'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier } from 'vscode-languageclient'; import { collectionJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, +import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } from './protocol'; import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; @@ -125,7 +125,6 @@ export function activate(context: ExtensionContext): Promise { item.text = '$(thumbsdown)'; lastStatus = item.text; p.report({ message: 'Finished with Error' }); - item.tooltip = report.message; toggleItem(window.activeTextEditor, item); resolve({ apiVersion: '0.1', @@ -134,7 +133,6 @@ export function activate(context: ExtensionContext): Promise { break; case 'Starting': p.report({ message: report.message }); - item.tooltip = report.message; break; case 'Message': item.text = report.message; From ac332c68841299c5d957cdb28a1ed1885ca9bf8d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 30 Jan 2019 00:26:09 -0500 Subject: [PATCH 0372/1435] Update changelog for the 0.38.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 890d3ba0d..be7b32083 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log -## 0.38.0 (TBD) +## 0.38.0 (January 30th, 2019) +* bug fix - pick up gradle properties updates when doing full build. See [#758](https://github.com/redhat-developer/vscode-java/issues/758). +* bug fix - fixed inactive autocompletion after inserting a snippet in some cases. See [#768](https://github.com/redhat-developer/vscode-java/issues/768). + ## 0.37.0 (January 17th, 2019) * enhancement - improve extension loading time by using webpack. See [#732](https://github.com/redhat-developer/vscode-java/issues/732). From cffba7e4c08fbfb1aa7702056d6aa187c9960368 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Fri, 1 Feb 2019 00:53:54 +0800 Subject: [PATCH 0373/1435] Hide java project setting files by default. (#776) Signed-off-by: Yaohai Zheng --- CHANGELOG.md | 3 +- README.md | 5 ++- package-lock.json | 54 +++++++++++++++--------- package.json | 6 +++ src/extension.ts | 38 ++--------------- src/settings.ts | 104 ++++++++++++++++++++++++++++++++++++++++++++++ src/utils.ts | 7 ++++ 7 files changed, 160 insertions(+), 57 deletions(-) create mode 100644 src/settings.ts create mode 100644 src/utils.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index be7b32083..32fad5c15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Change Log -## 0.38.0 (January 30th, 2019) +## 0.38.0 (January 31st, 2019) +* enhancement - new dialog asking to hide java project settings files on startup. See [#776](https://github.com/redhat-developer/vscode-java/pull/776). * bug fix - pick up gradle properties updates when doing full build. See [#758](https://github.com/redhat-developer/vscode-java/issues/758). * bug fix - fixed inactive autocompletion after inserting a snippet in some cases. See [#768](https://github.com/redhat-developer/vscode-java/issues/768). diff --git a/README.md b/README.md index a8dd5866b..a4d28af5b 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ The following settings are supported: * `java.import.gradle.enabled` : Enable/disable the Gradle importer. * `java.import.maven.enabled` : Enable/disable the Maven importer. * `java.autobuild.enabled` : Enable/disable the 'auto build'. +* `java.maxConcurrentBuilds`: Set max simultaneous project builds. * `java.completion.favoriteStaticMembers` : Defines a list of static members or types with static members. * `java.completion.importOrder` : Defines the sorting order of import statements. * `java.progressReports.enabled` : [Experimental] Enable/disable progress reports from background processes on the server. @@ -91,8 +92,8 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. -*New in 0.36.0:* -* `java.maxConcurrentBuilds`: Set max simultaneous project builds. +*New in 0.38.0:* +* `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. Troubleshooting diff --git a/package-lock.json b/package-lock.json index bd37d6ff8..ba19ca751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1520,7 +1520,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1647,7 +1647,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -1866,7 +1866,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -1881,7 +1881,7 @@ "dependencies": { "map-stream": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", "dev": true } @@ -2428,12 +2428,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2448,17 +2450,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2575,7 +2580,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2587,6 +2593,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2601,6 +2608,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2608,12 +2616,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2632,6 +2642,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2712,7 +2723,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2724,6 +2736,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2845,6 +2858,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3323,7 +3337,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", "dev": true }, @@ -3372,7 +3386,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3384,13 +3398,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -4327,7 +4341,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -5641,7 +5655,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -6491,7 +6505,7 @@ }, "split": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { @@ -6584,7 +6598,7 @@ }, "stream-combiner": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { @@ -6728,7 +6742,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { diff --git a/package.json b/package.json index dd29f2668..99393335d 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,12 @@ "description": "Specifies the severity of the message when the classpath is incomplete for a Java file", "scope": "window" }, + "java.configuration.checkProjectSettingsExclusions": { + "type": "boolean", + "default": true, + "description": "Checks if the extension-generated project settings files (.project, .classpath, .factorypath, .settings/) should be excluded from the file explorer.", + "scope": "window" + }, "java.configuration.updateBuildConfiguration": { "type": [ "string" diff --git a/src/extension.ts b/src/extension.ts index 6711be092..f923e6fde 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -14,8 +14,9 @@ SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } fro import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; import * as net from 'net'; +import { getJavaConfiguration } from './utils'; +import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; -let oldConfig; let lastStatus; let languageClient: LanguageClient; let jdtEventEmitter = new EventEmitter(); @@ -83,7 +84,6 @@ export function activate(context: ExtensionContext): Promise { item.command = Commands.OPEN_OUTPUT; let progressBar = window.createStatusBarItem(StatusBarAlignment.Left, Number.MIN_VALUE+1); - oldConfig = getJavaConfiguration(); let serverOptions; let port = process.env['SERVER_PORT']; if (!port) { @@ -300,6 +300,7 @@ export function activate(context: ExtensionContext): Promise { } }; workspace.registerTextDocumentContentProvider('jdt', provider); + excludeProjectSettingsFiles(); }); let cleanWorkspaceExists = fs.existsSync( path.join(workspacePath, cleanWorkspaceFileName)); @@ -434,34 +435,6 @@ function isJavaConfigFile(path: String) { return path.endsWith('pom.xml') || path.endsWith('.gradle'); } -function onConfigurationChange() { - return workspace.onDidChangeConfiguration(params => { - let newConfig = getJavaConfiguration(); - if (hasJavaConfigChanged(oldConfig, newConfig)) { - let msg = 'Java Language Server configuration changed, please restart VS Code.'; - let action = 'Restart Now'; - let restartId = Commands.RELOAD_WINDOW; - oldConfig = newConfig; - window.showWarningMessage(msg, action).then((selection) => { - if (action === selection) { - commands.executeCommand(restartId); - } - }); - } - }); -} - -function hasJavaConfigChanged(oldConfig, newConfig) { - return hasConfigKeyChanged('home', oldConfig, newConfig) - || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig) - || hasConfigKeyChanged('progressReports.enabled', oldConfig, newConfig); -} - -function hasConfigKeyChanged(key, oldConfig, newConfig) { - return oldConfig.get(key) !== newConfig.get(key); -} - - function getTempWorkspace() { return path.resolve(os.tmpdir(), 'vscodesws_' + makeRandomHexString(5)); } @@ -476,9 +449,6 @@ function makeRandomHexString(length) { return result; } -function getJavaConfiguration(): WorkspaceConfiguration { - return workspace.getConfiguration('java'); -} async function cleanWorkspace(workspacePath) { const doIt = 'Restart and delete'; @@ -745,4 +715,4 @@ function isPrefix(parentPath: string, childPath: string): boolean { } const relative = path.relative(parentPath, childPath); return !!relative && !relative.startsWith('..') && !path.isAbsolute(relative); -} \ No newline at end of file +} diff --git a/src/settings.ts b/src/settings.ts new file mode 100644 index 000000000..2f2351489 --- /dev/null +++ b/src/settings.ts @@ -0,0 +1,104 @@ +'use strict'; + +import { window, Uri, workspace, WorkspaceConfiguration, commands, ConfigurationTarget } from 'vscode'; +import { LanguageClient } from 'vscode-languageclient'; +import { Commands } from './commands'; +import { getJavaConfiguration } from './utils'; + + +const DEFAULT_HIDDEN_FILES: string[] = ['**/.classpath', '**/.project', '**/.settings', '**/.factorypath']; + +const changeItem = { + global: 'Exclude globally', + workspace: 'Exclude in workspace', + never: 'Never' +}; + +const EXCLUDE_FILE_CONFIG = 'configuration.checkProjectSettingsExclusions'; + +let oldConfig: WorkspaceConfiguration = getJavaConfiguration(); + +export function onConfigurationChange() { + return workspace.onDidChangeConfiguration(params => { + if (!params.affectsConfiguration('java')) { + return; + } + let newConfig = getJavaConfiguration(); + if (newConfig.get(EXCLUDE_FILE_CONFIG)) { + excludeProjectSettingsFiles(); + } + if (hasJavaConfigChanged(oldConfig, newConfig)) { + let msg = 'Java Language Server configuration changed, please restart VS Code.'; + let action = 'Restart Now'; + let restartId = Commands.RELOAD_WINDOW; + oldConfig = newConfig; + window.showWarningMessage(msg, action).then((selection) => { + if (action === selection) { + commands.executeCommand(restartId); + } + }); + } + }); +} + +export function excludeProjectSettingsFiles() { + if (workspace.workspaceFolders && workspace.workspaceFolders.length) { + workspace.workspaceFolders.forEach((folder) => { + excludeProjectSettingsFilesForWorkspace(folder.uri); + }); + } +} + +function excludeProjectSettingsFilesForWorkspace(workspaceUri: Uri) { + const excudedConfig = getJavaConfiguration().get(EXCLUDE_FILE_CONFIG); + if (excudedConfig) { + const config = workspace.getConfiguration('files', workspaceUri); + const excludedValue: Object = config.get('exclude'); + const needExcludeFiles: string[] = []; + + let needUpdate = false; + for (const hiddenFile of DEFAULT_HIDDEN_FILES) { + if (!excludedValue.hasOwnProperty(hiddenFile)) { + needExcludeFiles.push(hiddenFile); + needUpdate = true; + } + } + if (needUpdate) { + const excludedInspectedValue = config.inspect('exclude'); + const items = [changeItem.workspace, changeItem.never]; + // Workspace file.exclude is undefined + if (!excludedInspectedValue.workspaceValue) { + items.unshift(changeItem.global); + } + + window.showInformationMessage('Do you want to exclude the VS Code Java project settings files (.classpath, .project. .settings, .factorypath) from the file explorer?', ...items).then((result) => { + if (result === changeItem.global) { + excludedInspectedValue.globalValue = excludedInspectedValue.globalValue || {}; + for (const hiddenFile of needExcludeFiles) { + excludedInspectedValue.globalValue[hiddenFile] = true; + } + config.update('exclude', excludedInspectedValue.globalValue, ConfigurationTarget.Global); + } if (result === changeItem.workspace) { + excludedInspectedValue.workspaceValue = excludedInspectedValue.workspaceValue || {}; + for (const hiddenFile of needExcludeFiles) { + excludedInspectedValue.workspaceValue[hiddenFile] = true; + } + config.update('exclude', excludedInspectedValue.workspaceValue, ConfigurationTarget.Workspace); + } else if (result === changeItem.never) { + const storeInWorkspace = getJavaConfiguration().inspect(EXCLUDE_FILE_CONFIG).workspaceValue; + getJavaConfiguration().update(EXCLUDE_FILE_CONFIG, false, storeInWorkspace?ConfigurationTarget.Workspace:ConfigurationTarget.Global); + } + }); + } + } +} + +function hasJavaConfigChanged(oldConfig: WorkspaceConfiguration, newConfig: WorkspaceConfiguration) { + return hasConfigKeyChanged('home', oldConfig, newConfig) + || hasConfigKeyChanged('jdt.ls.vmargs', oldConfig, newConfig) + || hasConfigKeyChanged('progressReports.enabled', oldConfig, newConfig); +} + +function hasConfigKeyChanged(key, oldConfig, newConfig) { + return oldConfig.get(key) !== newConfig.get(key); +} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 000000000..9e53cb116 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,7 @@ +'use strict'; + +import { workspace, WorkspaceConfiguration } from 'vscode'; + +export function getJavaConfiguration(): WorkspaceConfiguration { + return workspace.getConfiguration('java'); +} From a72a01f01a5bb6b044c6a22e6365d79156772410 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 31 Jan 2019 14:42:28 -0500 Subject: [PATCH 0374/1435] Upversion to 0.39.0 Signed-off-by: Fred Bricon --- package-lock.json | 56 ++++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba19ca751..8f3a56f8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.38.0", + "version": "0.39.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1520,7 +1520,7 @@ }, "deep-assign": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { @@ -1647,7 +1647,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -1866,7 +1866,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -1881,7 +1881,7 @@ "dependencies": { "map-stream": { "version": "0.1.0", - "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", "dev": true } @@ -2428,14 +2428,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2450,20 +2448,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2580,8 +2575,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2593,7 +2587,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2608,7 +2601,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2616,14 +2608,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2642,7 +2632,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2723,8 +2712,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2736,7 +2724,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2858,7 +2845,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3337,7 +3323,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", "dev": true }, @@ -3386,7 +3372,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3398,13 +3384,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -4341,7 +4327,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -5655,7 +5641,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -6505,7 +6491,7 @@ }, "split": { "version": "0.3.3", - "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { @@ -6598,7 +6584,7 @@ }, "stream-combiner": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { @@ -6742,7 +6728,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { diff --git a/package.json b/package.json index 99393335d..73b3324eb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.38.0", + "version": "0.39.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From b5e63308dd3de98911fe21b56d312d3c33f54d41 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 12 Feb 2019 19:24:20 -0500 Subject: [PATCH 0375/1435] Start server with -Dfile.encoding=[vscode's file encoding] by default (#790) Start server with -Dfile.encoding=[vscode file encoding (UTF-8)] by default --- src/javaServerStarter.ts | 7 +++++++ src/settings.ts | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 3cf4540da..fd352064b 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -4,6 +4,7 @@ import * as net from 'net'; import * as glob from 'glob'; import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; import { RequirementsData } from './requirements'; +import { getJavaEncoding } from './settings'; declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); @@ -50,6 +51,7 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp '--add-opens', 'java.base/java.lang=ALL-UNNAMED'); } + params.push('-Declipse.application=org.eclipse.jdt.ls.core.id1', '-Dosgi.bundles.defaultStartLevel=4', '-Declipse.product=org.eclipse.jdt.ls.core.product'); @@ -58,6 +60,11 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp } let vmargs = javaConfiguration.get('jdt.ls.vmargs', ''); + const encodingKey = '-Dfile.encoding='; + if (vmargs.indexOf(encodingKey) < 0) { + params.push(encodingKey + getJavaEncoding()); + } + parseVMargs(params, vmargs); let server_home: string = path.resolve(__dirname, '../server'); let launchersFound: Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', { cwd: server_home }); diff --git a/src/settings.ts b/src/settings.ts index 2f2351489..4cdafc72a 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -102,3 +102,16 @@ function hasJavaConfigChanged(oldConfig: WorkspaceConfiguration, newConfig: Work function hasConfigKeyChanged(key, oldConfig, newConfig) { return oldConfig.get(key) !== newConfig.get(key); } + +export function getJavaEncoding(): string { + const config = workspace.getConfiguration(); + const languageConfig = config.get('[java]') + let javaEncoding = null; + if (languageConfig != null) { + javaEncoding = languageConfig['files.encoding']; + } + if (javaEncoding == null) { + javaEncoding = config.get('files.encoding', 'UTF-8'); + } + return javaEncoding; +} \ No newline at end of file From 4dc398e112bedd4c2ad6883eeef66d8c282a7e7b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 20 Feb 2019 20:13:04 -0500 Subject: [PATCH 0376/1435] properly disable p2 mirrors Signed-off-by: Fred Bricon --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c30c9159b..1143ee663 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -e -Pserver-distro -DdisableP2Mirrors=true" + sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro', includes :files[0].path @@ -46,7 +46,7 @@ node('rhel7'){ sh "npm run compile" //compile the test code too sh "npm test --silent" } - + stage 'Upload vscode-java to staging' def vsix = findFiles(glob: '**.vsix') sh "rsync -Pzrlt --rsh=ssh --protocol=28 ${vsix[0].path} ${UPLOAD_LOCATION}/jdt.ls/staging" From 0ba6148a794b8f1cea97db87c44b987ec1733b81 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 20 Feb 2019 21:06:36 -0500 Subject: [PATCH 0377/1435] Changelog for 0.39.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 6 ++++++ README.md | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32fad5c15..955488b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.39.0 (February 21st, 2019) +* enhancement - automatically detect jars in `lib/` folder next to standalone Java files. See [#501](https://github.com/redhat-developer/vscode-java/issues/501). +* bug fix - fixed default hover/source encoding. See [#788](https://github.com/redhat-developer/vscode-java/issues/788). +* bug fix - fixed file handle/memory leak on Windows when idling. See [#789](https://github.com/redhat-developer/vscode-java/issues/789). +* build - use Eclipse 2019-03 M2 bits. See [JLS#934](https://github.com/eclipse/eclipse.jdt.ls/pull/934). + ## 0.38.0 (January 31st, 2019) * enhancement - new dialog asking to hide java project settings files on startup. See [#776](https://github.com/redhat-developer/vscode-java/pull/776). * bug fix - pick up gradle properties updates when doing full build. See [#758](https://github.com/redhat-developer/vscode-java/issues/758). diff --git a/README.md b/README.md index a4d28af5b..c803d5d4a 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,10 @@ Features * Maven pom.xml project support * Basic Gradle Java project support -* As you type reporting of parsing and compilation errors +* Standalone Java files support +* As-you-type reporting of parsing and compilation errors * Code completion -* Code actions / Refactoring +* Code/Source actions / Refactoring * Javadoc hovers * Organize imports * Type search @@ -91,8 +92,6 @@ The following settings are supported: * `java.format.onType.enabled` : Enable/disable on-type formatting (triggered on `;`, `}` or ``). * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. - -*New in 0.38.0:* * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. From 4d278595c7ab30008067141035a9fa8c2c585b17 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 25 Feb 2019 18:20:49 -0500 Subject: [PATCH 0378/1435] Upversion to 0.40.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f3a56f8e..f5efda756 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.39.0", + "version": "0.40.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 73b3324eb..3ef450adc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.39.0", + "version": "0.40.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 7ac9a3337d28508b8af3b742f339586da441ae76 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 26 Feb 2019 07:42:23 +0800 Subject: [PATCH 0379/1435] Enable Source Action 'Override/Implement Methods' with prompt (#749) Signed-off-by: Jinbo Wang --- src/commands.ts | 4 ++++ src/extension.ts | 7 ++++-- src/protocol.ts | 29 ++++++++++++++++++++++- src/sourceAction.ts | 54 ++++++++++++++++++++++++++++++++++++++++++ test/extension.test.ts | 1 + 5 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 src/sourceAction.ts diff --git a/src/commands.ts b/src/commands.ts index f225b68b1..27d71f8f6 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -102,4 +102,8 @@ export namespace Commands { * List all recognized source roots in the workspace. */ export const LIST_SOURCEPATHS = 'java.project.listSourcePaths'; + /** + * Override or implements the methods from the supertypes. + */ + export const OVERRIDE_METHODS_PROMPT = 'java.action.overrideMethodsPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index f923e6fde..1febd5a23 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,6 +13,7 @@ import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdat SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } from './protocol'; import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; +import * as sourceAction from './sourceAction'; import * as net from 'net'; import { getJavaConfiguration } from './utils'; import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; @@ -72,7 +73,8 @@ export function activate(context: ExtensionContext): Promise { settings: { java: getJavaConfiguration() }, extendedClientCapabilities:{ progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), - classFileContentsSupport:true + classFileContentsSupport:true, + overrideMethodsPromptSupport:true }, triggerFiles: getTriggerFiles() }, @@ -286,6 +288,7 @@ export function activate(context: ExtensionContext): Promise { }); buildpath.registerCommands(); + sourceAction.registerCommands(languageClient); window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); @@ -623,7 +626,7 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat }); } -async function applyWorkspaceEdit(obj, languageClient) { +export async function applyWorkspaceEdit(obj, languageClient) { let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); if (edit) { await workspace.applyEdit(edit); diff --git a/src/protocol.ts b/src/protocol.ts index 7c2daf3f4..fdeaca7e5 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,6 +1,6 @@ 'use strict'; -import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams } from 'vscode-languageclient'; +import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit } from 'vscode-languageclient'; import { Command } from 'vscode'; /** @@ -120,4 +120,31 @@ export interface SourceAttachmentAttribute { sourceAttachmentPath?: string; sourceAttachmentEncoding?: string; canEditEncoding?: boolean; +} + +export interface OverridableMethod { + key: string; + name: string; + parameters: string[]; + unimplemented: boolean; + declaringClass: string; + declaringClassType: string; +} + +export interface OverridableMethodsResponse { + type: string; + methods: OverridableMethod[]; +} + +export namespace ListOverridableMethodsRequest { + export const type = new RequestType('java/listOverridableMethods'); +} + +export interface AddOverridableMethodParams { + context: CodeActionParams; + overridableMethods: OverridableMethod[]; +} + +export namespace AddOverridableMethodsRequest { + export const type = new RequestType('java/addOverridableMethods'); } \ No newline at end of file diff --git a/src/sourceAction.ts b/src/sourceAction.ts new file mode 100644 index 000000000..dffeafae2 --- /dev/null +++ b/src/sourceAction.ts @@ -0,0 +1,54 @@ +'use strict'; + +import { commands, window } from 'vscode'; +import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; +import { Commands } from './commands'; +import { applyWorkspaceEdit } from './extension'; +import { ListOverridableMethodsRequest, AddOverridableMethodsRequest } from './protocol'; + +export function registerCommands(languageClient: LanguageClient) { + commands.registerCommand(Commands.OVERRIDE_METHODS_PROMPT, async (params: CodeActionParams) => { + const result = await languageClient.sendRequest(ListOverridableMethodsRequest.type, params); + if (!result || !result.methods || !result.methods.length) { + window.showWarningMessage('No overridable methods found in the super type.'); + return; + } + + result.methods.sort((a, b) => { + const declaringClass = a.declaringClass.localeCompare(b.declaringClass); + if (declaringClass !== 0) { + return declaringClass; + } + + const methodName = a.name.localeCompare(b.name); + if (methodName !== 0) { + return methodName; + } + + return a.parameters.length - b.parameters.length; + }); + + const quickPickItems = result.methods.map(method => { + return { + label: `${method.name}(${method.parameters.join(',')})`, + description: `${method.declaringClassType}: ${method.declaringClass}`, + picked: method.unimplemented, + originalMethod: method, + }; + }); + + const selectedItems = await window.showQuickPick(quickPickItems, { + canPickMany: true, + placeHolder: `Select methods to override or implement in ${result.type}` + }); + if (!selectedItems.length) { + return; + } + + const workspaceEdit = await languageClient.sendRequest(AddOverridableMethodsRequest.type, { + context: params, + overridableMethods: selectedItems.map((item) => item.originalMethod), + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + }); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index c9d8e0781..da9302ffa 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -41,6 +41,7 @@ suite('Java Language Extension', () => { Commands.ADD_TO_SOURCEPATH, Commands.REMOVE_FROM_SOURCEPATH, Commands.LIST_SOURCEPATHS, + Commands.OVERRIDE_METHODS_PROMPT, ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 23a3a52c3a42fba6c1af3d0a11be530622d2ace0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 27 Feb 2019 23:14:38 -0500 Subject: [PATCH 0380/1435] Changelog for 0.40.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 955488b35..d832c8e9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## 0.40.0 (February 28th, 2019) +* enhancement - new source action: `Override/Implement Methods...`. See [749](https://github.com/redhat-developer/vscode-java/pull/749). +* enhancement - attaching sources now use a project relative path, when possible. See [JLS#906](https://github.com/eclipse/eclipse.jdt.ls/issues/906). +* bug fix - definitely fixed the file handle/memory leak on Windows when idling (when using Java 9+), also reduced CPU usage. See [JLS#936](https://github.com/eclipse/eclipse.jdt.ls/pull/936). + ## 0.39.0 (February 21st, 2019) * enhancement - automatically detect jars in `lib/` folder next to standalone Java files. See [#501](https://github.com/redhat-developer/vscode-java/issues/501). * bug fix - fixed default hover/source encoding. See [#788](https://github.com/redhat-developer/vscode-java/issues/788). From 149570b8d3d198fffd9082838cd576388d9f2dcc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 1 Mar 2019 09:55:45 -0500 Subject: [PATCH 0381/1435] Upversion to 0.41.0 Signed-off-by: Fred Bricon --- package-lock.json | 629 ++++------------------------------------------ package.json | 4 +- 2 files changed, 47 insertions(+), 586 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5efda756..84e047e54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.40.0", + "version": "0.41.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1966,57 +1966,6 @@ "resolved": "https://registry.npmjs.org/expand-home-dir/-/expand-home-dir-0.0.3.tgz", "integrity": "sha1-ct6KBIbMKKO71wRjU5iCW1tign0=" }, - "expand-range": { - "version": "1.8.2", - "resolved": "http://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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -2169,12 +2118,6 @@ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", "dev": true }, - "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": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2275,12 +2218,6 @@ "parse-filepath": "^1.0.1" } }, - "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 - }, "flagged-respawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", @@ -2407,7 +2344,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2428,12 +2366,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2448,17 +2388,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2575,7 +2518,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2587,6 +2531,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2601,6 +2546,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2608,12 +2554,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2632,6 +2580,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2712,7 +2661,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2724,6 +2674,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2809,7 +2760,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2845,6 +2797,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2864,6 +2817,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2907,12 +2861,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2978,42 +2934,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", @@ -3423,306 +3343,6 @@ "vinyl": "^2.0.1" } }, - "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 - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "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" - }, - "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" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "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" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "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", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.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" - } - }, - "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=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "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=", - "dev": true, - "requires": { - "is-stream": "^1.0.1", - "readable-stream": "^2.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": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1" - } - }, - "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" - } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", - "dev": true, - "requires": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", - "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "^0.3.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", - "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.0.0", - "vinyl": "^1.0.0" - } - } - } - }, "gulp-tslint": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.3.tgz", @@ -3899,17 +3519,6 @@ "vinyl-fs": "^3.0.3", "yauzl": "^2.2.1", "yazl": "^2.2.1" - }, - "dependencies": { - "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" - } - } } }, "gulplog": { @@ -4144,9 +3753,9 @@ "dev": true }, "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": { @@ -4248,21 +3857,6 @@ } } }, - "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", @@ -4340,18 +3934,6 @@ "isobject": "^3.0.1" } }, - "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", @@ -4689,12 +4271,6 @@ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, - "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.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -4817,12 +4393,6 @@ "stack-trace": "0.0.10" } }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4855,15 +4425,6 @@ "readable-stream": "^2.0.1" } }, - "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" - } - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -5363,27 +4924,6 @@ "make-iterator": "^1.0.0" } }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -5523,35 +5063,6 @@ "path-root": "^0.1.1" } }, - "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" - } - } - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -5732,12 +5243,6 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "pretty-hrtime": { "version": "1.0.3", "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -5846,33 +5351,14 @@ "dev": true }, "queue": { - "version": "3.1.0", - "resolved": "http://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 - } - } - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -5956,15 +5442,6 @@ "resolve": "^1.1.6" } }, - "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" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6679,16 +6156,6 @@ "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-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -7340,12 +6807,6 @@ "homedir-polyfill": "^1.0.1" } }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7471,9 +6932,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", @@ -7481,14 +6942,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" }, "dependencies": { @@ -7932,9 +7393,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 3ef450adc..56b1a8b46 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.40.0", + "version": "0.41.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, @@ -401,7 +401,7 @@ "ts-loader": "^5.3.1", "tslint": "^5.11.0", "typescript": "^3.0.3", - "vscode": "^1.1.22", + "vscode": "^1.1.30", "webpack": "^4.27.1", "webpack-cli": "^3.1.2" }, From 73addbd31a893b946b2c560844795359433a1709 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 1 Mar 2019 18:34:06 -0500 Subject: [PATCH 0382/1435] Update vscode engine to 1.30.0 to fix the build Signed-off-by: Fred Bricon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 56b1a8b46..f0ed69863 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.28.0" + "vscode": "^1.30.0" }, "repository": { "type": "git", From ca29cb2b22d2c2c5b7e44ae697c8d385607da6d7 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 6 Mar 2019 09:50:59 -0500 Subject: [PATCH 0383/1435] Deactivate slow Red Hat repos on Jenkins to speed up the build Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1143ee663..2f9fda581 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true" + sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true -P!jboss-maven-repos,!redhat-ga-repository,!redhat-ea-repository" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro', includes :files[0].path From d8cc49d4b339f332d6e5f3a38037ab7c928dbc5d Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 12 Mar 2019 05:35:25 +0800 Subject: [PATCH 0384/1435] Enable generate hashCode and equals source action (#814) Signed-off-by: Jinbo Wang --- README.md | 5 ++++- package.json | 24 ++++++++++++++++++++ src/commands.ts | 4 ++++ src/extension.ts | 3 ++- src/protocol.ts | 26 ++++++++++++++++++++++ src/sourceAction.ts | 50 +++++++++++++++++++++++++++++++++++++++++- test/extension.test.ts | 1 + 7 files changed, 110 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c803d5d4a..b24b7aa0d 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,10 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. - +* `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. +* `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. +* `java.codeGeneration.hashCodeEquals.useBlocks`: Use blocks in 'if' statements when generating the hashCode and equals methods. Defaults to `false`. +* `java.codeGeneration.hashCodeEquals.generateComments`: Generate method comments when generating the hashCode and equals methods. Defaults to `false`. Troubleshooting =============== diff --git a/package.json b/package.json index f0ed69863..87844a553 100644 --- a/package.json +++ b/package.json @@ -271,6 +271,30 @@ "description": "Enable/disable automatic block formatting when typing `;`, `` or `}`", "default": true, "scope": "window" + }, + "java.codeGeneration.hashCodeEquals.useJava7Objects": { + "type": "boolean", + "description": "Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher.", + "default": false, + "scope": "window" + }, + "java.codeGeneration.hashCodeEquals.useInstanceof": { + "type": "boolean", + "description": "Use 'instanceof' to compare types when generating the hashCode and equals methods.", + "default": false, + "scope": "window" + }, + "java.codeGeneration.hashCodeEquals.useBlocks": { + "type": "boolean", + "description": "Use blocks in 'if' statements when generating the hashCode and equals methods.", + "default": false, + "scope": "window" + }, + "java.codeGeneration.hashCodeEquals.generateComments": { + "type": "boolean", + "description": "Generate method comments when generating the hashCode and equals methods.", + "default": false, + "scope": "window" } } }, diff --git a/src/commands.ts b/src/commands.ts index 27d71f8f6..f5a524f7d 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -106,4 +106,8 @@ export namespace Commands { * Override or implements the methods from the supertypes. */ export const OVERRIDE_METHODS_PROMPT = 'java.action.overrideMethodsPrompt'; + /** + * Generate hashCode() and equals(). + */ + export const HASHCODE_EQUALS_PROMPT = 'java.action.hashCodeEqualsPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 1febd5a23..740e1dfc0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -74,7 +74,8 @@ export function activate(context: ExtensionContext): Promise { extendedClientCapabilities:{ progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), classFileContentsSupport:true, - overrideMethodsPromptSupport:true + overrideMethodsPromptSupport:true, + hashCodeEqualsPromptSupport:true }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index fdeaca7e5..45ec32a5f 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -147,4 +147,30 @@ export interface AddOverridableMethodParams { export namespace AddOverridableMethodsRequest { export const type = new RequestType('java/addOverridableMethods'); +} + +export interface VariableField { + bindingKey: string; + name: string; + type: string; +} + +export interface CheckHashCodeEqualsResponse { + type: string; + fields: VariableField[]; + existingMethods: string[]; +} + +export namespace CheckHashCodeEqualsStatusRequest { + export const type = new RequestType('java/checkHashCodeEqualsStatus'); +} + +export interface GenerateHashCodeEqualsParams { + context: CodeActionParams; + fields: VariableField[]; + regenerate: boolean; +} + +export namespace GenerateHashCodeEqualsRequest { + export const type = new RequestType('java/generateHashCodeEquals'); } \ No newline at end of file diff --git a/src/sourceAction.ts b/src/sourceAction.ts index dffeafae2..3c98aff71 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -4,9 +4,14 @@ import { commands, window } from 'vscode'; import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; -import { ListOverridableMethodsRequest, AddOverridableMethodsRequest } from './protocol'; +import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest } from './protocol'; export function registerCommands(languageClient: LanguageClient) { + registerOverrideMethodsCommand(languageClient); + registerHashCodeEqualsCommand(languageClient); +} + +function registerOverrideMethodsCommand(languageClient: LanguageClient): void { commands.registerCommand(Commands.OVERRIDE_METHODS_PROMPT, async (params: CodeActionParams) => { const result = await languageClient.sendRequest(ListOverridableMethodsRequest.type, params); if (!result || !result.methods || !result.methods.length) { @@ -52,3 +57,46 @@ export function registerCommands(languageClient: LanguageClient) { applyWorkspaceEdit(workspaceEdit, languageClient); }); } + +function registerHashCodeEqualsCommand(languageClient: LanguageClient): void { + commands.registerCommand(Commands.HASHCODE_EQUALS_PROMPT, async (params: CodeActionParams) => { + const result = await languageClient.sendRequest(CheckHashCodeEqualsStatusRequest.type, params); + if (!result || !result.fields || !result.fields.length) { + window.showErrorMessage(`The operation is not applicable to the type ${result.type}.`); + return; + } + + let regenerate = false; + if (result.existingMethods && result.existingMethods.length) { + const ans = await window.showInformationMessage(`Methods ${result.existingMethods.join(' and ')} already ${result.existingMethods.length === 1 ? 'exists' : 'exist'} in the Class '${result.type}'. ` + + 'Do you want to regenerate the implementation?', 'Regenerate', 'Cancel'); + if (ans !== 'Regenerate') { + return; + } + + regenerate = true; + } + + const fieldItems = result.fields.map((field) => { + return { + label: `${field.name}: ${field.type}`, + picked: true, + originalField: field + }; + }); + const selectedFields = await window.showQuickPick(fieldItems, { + canPickMany: true, + placeHolder: 'Select the fields to include in the hashCode() and equals() methods.' + }); + if (!selectedFields.length) { + return; + } + + const workspaceEdit = await languageClient.sendRequest(GenerateHashCodeEqualsRequest.type, { + context: params, + fields: selectedFields.map((item) => item.originalField), + regenerate + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + }); +} \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index da9302ffa..70880f1d7 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -42,6 +42,7 @@ suite('Java Language Extension', () => { Commands.REMOVE_FROM_SOURCEPATH, Commands.LIST_SOURCEPATHS, Commands.OVERRIDE_METHODS_PROMPT, + Commands.HASHCODE_EQUALS_PROMPT ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From b6b922cedc2d0c7e859aedb4792427e9b4ba52a4 Mon Sep 17 00:00:00 2001 From: Florent Benoit Date: Tue, 12 Mar 2019 14:48:08 +0100 Subject: [PATCH 0385/1435] API that is returning Disposable should be added to subscriptions so they're disposed during the stop lifecycle of the plug-in. handle it for registerCommand and workspace.registerTextDocumentContentProvider and window.onDidChangeActiveTextEditor Change-Id: I10e3f0b96337e69c91d0d98590722f1f4364e4aa Signed-off-by: Florent Benoit --- src/buildpath.ts | 16 +++++++------- src/extension.ts | 54 ++++++++++++++++++++++----------------------- src/sourceAction.ts | 22 +++++++++--------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/buildpath.ts b/src/buildpath.ts index 6302fe00b..9a00529aa 100644 --- a/src/buildpath.ts +++ b/src/buildpath.ts @@ -1,6 +1,6 @@ 'use strict'; -import { window, commands, Uri } from 'vscode'; +import { window, commands, ExtensionContext, Uri } from 'vscode'; import { Commands } from './commands'; interface Result { @@ -19,26 +19,26 @@ interface ListCommandResult extends Result { data?: SourcePath[]; } -export function registerCommands() { - commands.registerCommand(Commands.ADD_TO_SOURCEPATH, async (uri: Uri) => { +export function registerCommands(context: ExtensionContext) { + context.subscriptions.push(commands.registerCommand(Commands.ADD_TO_SOURCEPATH, async (uri: Uri) => { const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.ADD_TO_SOURCEPATH, uri.toString()); if (result.status) { window.showInformationMessage(result.message ? result.message : 'Successfully added the folder to the source path.'); } else { window.showErrorMessage(result.message); } - }); + })); - commands.registerCommand(Commands.REMOVE_FROM_SOURCEPATH, async (uri: Uri) => { + context.subscriptions.push(commands.registerCommand(Commands.REMOVE_FROM_SOURCEPATH, async (uri: Uri) => { const result = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.REMOVE_FROM_SOURCEPATH, uri.toString()); if (result.status) { window.showInformationMessage(result.message ? result.message : 'Successfully removed the folder from the source path.'); } else { window.showErrorMessage(result.message); } - }); + })); - commands.registerCommand(Commands.LIST_SOURCEPATHS, async() => { + context.subscriptions.push(commands.registerCommand(Commands.LIST_SOURCEPATHS, async() => { const result: ListCommandResult = await commands.executeCommand(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.LIST_SOURCEPATHS); if (result.status) { if (!result.data || !result.data.length) { @@ -54,5 +54,5 @@ export function registerCommands() { } else { window.showErrorMessage(result.message); } - }); + })); } diff --git a/src/extension.ts b/src/extension.ts index 740e1dfc0..42e6d5dd5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -190,39 +190,39 @@ export function activate(context: ExtensionContext): Promise { return commands.executeCommand(params.command, ...params.arguments); }); - commands.registerCommand(Commands.OPEN_OUTPUT, () => { + context.subscriptions.push(commands.registerCommand(Commands.OPEN_OUTPUT, () => { languageClient.outputChannel.show(ViewColumn.Three); - }); - commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { + })); + context.subscriptions.push(commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); - }); - commands.registerCommand(Commands.SHOW_JAVA_IMPLEMENTATIONS, (uri: string, position: LSPosition, locations: LSLocation[]) => { + })); + context.subscriptions.push(commands.registerCommand(Commands.SHOW_JAVA_IMPLEMENTATIONS, (uri: string, position: LSPosition, locations: LSLocation[]) => { commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); - }); + })); - commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri)); + context.subscriptions.push(commands.registerCommand(Commands.CONFIGURATION_UPDATE, uri => projectConfigurationUpdate(languageClient, uri))); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore')); + context.subscriptions.push(commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH, (data?: any) => setIncompleteClasspathSeverity('ignore'))); - commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { + context.subscriptions.push(commands.registerCommand(Commands.IGNORE_INCOMPLETE_CLASSPATH_HELP, (data?: any) => { commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse('https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning')); - }); + })); - commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status)); + context.subscriptions.push(commands.registerCommand(Commands.PROJECT_CONFIGURATION_STATUS, (uri, status) => setProjectConfigurationUpdate(languageClient, uri, status))); - commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { + context.subscriptions.push(commands.registerCommand(Commands.APPLY_WORKSPACE_EDIT, (obj) => { applyWorkspaceEdit(obj, languageClient); - }); + })); - commands.registerCommand(Commands.EXECUTE_WORKSPACE_COMMAND, (command, ...rest) => { + context.subscriptions.push(commands.registerCommand(Commands.EXECUTE_WORKSPACE_COMMAND, (command, ...rest) => { const params: ExecuteCommandParams = { command, arguments: rest }; return languageClient.sendRequest(ExecuteCommandRequest.type, params); - }); + })); - commands.registerCommand(Commands.COMPILE_WORKSPACE, (isFullCompile : boolean) => { + context.subscriptions.push(commands.registerCommand(Commands.COMPILE_WORKSPACE, (isFullCompile : boolean) => { return window.withProgress({ location: ProgressLocation.Window }, async p => { if (typeof isFullCompile !== 'boolean') { const selection = await window.showQuickPick(['Incremental', 'Full'], {'placeHolder' : 'please choose compile type:'}); @@ -243,9 +243,9 @@ export function activate(context: ExtensionContext): Promise { }, humanVisibleDelay); }); }); - }); + })); - commands.registerCommand(Commands.UPDATE_SOURCE_ATTACHMENT, async (classFileUri: Uri): Promise => { + context.subscriptions.push(commands.registerCommand(Commands.UPDATE_SOURCE_ATTACHMENT, async (classFileUri: Uri): Promise => { const resolveRequest: SourceAttachmentRequest = { classFileUri: classFileUri.toString(), }; @@ -286,14 +286,14 @@ export function activate(context: ExtensionContext): Promise { jdtEventEmitter.fire(classFileUri); return true; } - }); + })); - buildpath.registerCommands(); - sourceAction.registerCommands(languageClient); + buildpath.registerCommands(context); + sourceAction.registerCommands(languageClient, context); - window.onDidChangeActiveTextEditor((editor) => { + context.subscriptions.push(window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); - }); + })); let provider: TextDocumentContentProvider = { onDidChange: jdtEventEmitter.event, @@ -303,7 +303,7 @@ export function activate(context: ExtensionContext): Promise { }); } }; - workspace.registerTextDocumentContentProvider('jdt', provider); + context.subscriptions.push(workspace.registerTextDocumentContentProvider('jdt', provider)); excludeProjectSettingsFiles(); }); @@ -318,12 +318,12 @@ export function activate(context: ExtensionContext): Promise { languageClient.start(); // Register commands here to make it available even when the language client fails - commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath)); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath))); let extensionPath = context.extensionPath; - commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath)); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath))); - commands.registerCommand(Commands.CLEAN_WORKSPACE, () => cleanWorkspace(workspacePath)); + context.subscriptions.push(commands.registerCommand(Commands.CLEAN_WORKSPACE, () => cleanWorkspace(workspacePath))); context.subscriptions.push(onConfigurationChange()); toggleItem(window.activeTextEditor, item); diff --git a/src/sourceAction.ts b/src/sourceAction.ts index 3c98aff71..40631e782 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -1,18 +1,18 @@ 'use strict'; -import { commands, window } from 'vscode'; +import { commands, window, ExtensionContext } from 'vscode'; import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest } from './protocol'; -export function registerCommands(languageClient: LanguageClient) { - registerOverrideMethodsCommand(languageClient); - registerHashCodeEqualsCommand(languageClient); +export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { + registerOverrideMethodsCommand(languageClient, context); + registerHashCodeEqualsCommand(languageClient, context); } -function registerOverrideMethodsCommand(languageClient: LanguageClient): void { - commands.registerCommand(Commands.OVERRIDE_METHODS_PROMPT, async (params: CodeActionParams) => { +function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.OVERRIDE_METHODS_PROMPT, async (params: CodeActionParams) => { const result = await languageClient.sendRequest(ListOverridableMethodsRequest.type, params); if (!result || !result.methods || !result.methods.length) { window.showWarningMessage('No overridable methods found in the super type.'); @@ -55,11 +55,11 @@ function registerOverrideMethodsCommand(languageClient: LanguageClient): void { overridableMethods: selectedItems.map((item) => item.originalMethod), }); applyWorkspaceEdit(workspaceEdit, languageClient); - }); + })); } -function registerHashCodeEqualsCommand(languageClient: LanguageClient): void { - commands.registerCommand(Commands.HASHCODE_EQUALS_PROMPT, async (params: CodeActionParams) => { +function registerHashCodeEqualsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.HASHCODE_EQUALS_PROMPT, async (params: CodeActionParams) => { const result = await languageClient.sendRequest(CheckHashCodeEqualsStatusRequest.type, params); if (!result || !result.fields || !result.fields.length) { window.showErrorMessage(`The operation is not applicable to the type ${result.type}.`); @@ -98,5 +98,5 @@ function registerHashCodeEqualsCommand(languageClient: LanguageClient): void { regenerate }); applyWorkspaceEdit(workspaceEdit, languageClient); - }); -} \ No newline at end of file + })); +} From 1e84b3530b31cfe9d3e6ed9e141dc1939536228e Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Fri, 15 Mar 2019 00:41:35 +0800 Subject: [PATCH 0386/1435] Reload prompt when extension bundle changed. (#822) Signed-off-by: Yaohai Zheng --- .gitignore | 3 +++ package-lock.json | 13 ++++--------- package.json | 2 +- src/extension.ts | 7 +++++-- src/plugin.ts | 39 ++++++++++++++++++++++++++++++++++++--- test/extension.test.ts | 2 +- 6 files changed, 50 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 355c66f37..905e4094b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,6 @@ undefined target dist bin/ +.settings +.classpath +.project diff --git a/package-lock.json b/package-lock.json index 84e047e54..0b2622101 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2344,8 +2344,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2760,8 +2759,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2817,7 +2815,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2861,14 +2858,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 87844a553..99ea4042c 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, "engines": { - "vscode": "^1.30.0" + "vscode": "^1.31.0" }, "repository": { "type": "git", diff --git a/src/extension.ts b/src/extension.ts index 42e6d5dd5..553c1e8f8 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,7 +5,7 @@ import * as os from 'os'; import * as fs from 'fs'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter } from 'vscode'; import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier } from 'vscode-languageclient'; -import { collectionJavaExtensions } from './plugin'; +import { onExtensionChange, collectJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; @@ -68,7 +68,7 @@ export function activate(context: ExtensionContext): Promise { ], }, initializationOptions: { - bundles: collectionJavaExtensions(extensions.all), + bundles: collectJavaExtensions(extensions.all), workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null, settings: { java: getJavaConfiguration() }, extendedClientCapabilities:{ @@ -304,6 +304,9 @@ export function activate(context: ExtensionContext): Promise { } }; context.subscriptions.push(workspace.registerTextDocumentContentProvider('jdt', provider)); + extensions.onDidChange(() => { + onExtensionChange(extensions.all); + }); excludeProjectSettingsFiles(); }); diff --git a/src/plugin.ts b/src/plugin.ts index 8d1460950..b15cf98df 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,10 +1,13 @@ 'use strict'; -import { Extension } from 'vscode'; +import * as vscode from 'vscode'; import * as path from 'path'; +import { Commands } from './commands'; -export function collectionJavaExtensions(extensions: Extension[]): string[] { - let result = []; +let existingExtensions: Array; + +export function collectJavaExtensions(extensions: vscode.Extension[]): string[] { + const result = []; if (extensions && extensions.length) { for (let extension of extensions) { let contributesSection = extension.packageJSON['contributes']; @@ -18,5 +21,35 @@ export function collectionJavaExtensions(extensions: Extension[]): string[] } } } + // Make a copy of extensions: + existingExtensions = result.slice(); return result; } + +export function onExtensionChange(extensions: vscode.Extension[]) { + if (!existingExtensions) { + return; + } + const oldExtensions = new Set(existingExtensions.slice()); + const newExtensions = collectJavaExtensions(extensions); + let hasChanged = ( oldExtensions.size != newExtensions.length); + if (!hasChanged) { + for (const newExtension of newExtensions) { + if (!oldExtensions.has(newExtension)) { + hasChanged = true; + break; + } + } + } + + if (hasChanged) { + const msg = 'Extensions to the Java Language Server changed, reloading Visual Studio Code is required for the changes to take effect.'; + const action = 'Reload'; + const restartId = Commands.RELOAD_WINDOW; + vscode.window.showWarningMessage(msg, action).then((selection) => { + if (action === selection) { + vscode.commands.executeCommand(restartId); + } + }); + } +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 70880f1d7..ab2ddf4e0 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -88,7 +88,7 @@ suite('Java Language Extension', () => { }; const extensions = [fakedExtension]; - const result = plugin.collectionJavaExtensions(extensions); + const result = plugin.collectJavaExtensions(extensions); assert(result.length === 1); assert(result[0].endsWith(path.normalize('./bin/java.extend.jar'))); }); From 6bccceab4eda659d03c149daf17a686f85d70158 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 14 Mar 2019 16:08:01 -0400 Subject: [PATCH 0387/1435] Marginally improve failed Java home detection - display detected path - check if java home ends with `bin` - opens settings.json if java.home preference is invalid Signed-off-by: Fred Bricon --- package-lock.json | 13 ++++--- src/commands.ts | 6 +++- src/extension.ts | 4 +-- src/requirements.ts | 77 +++++++++++++++++++++++++++--------------- test/extension.test.ts | 3 +- 5 files changed, 67 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b2622101..84e047e54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2344,7 +2344,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2759,7 +2760,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2815,6 +2817,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2858,12 +2861,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/commands.ts b/src/commands.ts index f5a524f7d..b28c59e89 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -109,5 +109,9 @@ export namespace Commands { /** * Generate hashCode() and equals(). */ - export const HASHCODE_EQUALS_PROMPT = 'java.action.hashCodeEqualsPrompt'; + export const HASHCODE_EQUALS_PROMPT = 'java.action.hashCodeEqualsPrompt'; + /** + * Open settings.json + */ + export const OPEN_JSON_SETTINGS = 'workbench.action.openSettingsJson'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 553c1e8f8..c2f0d51d5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -30,8 +30,8 @@ export function activate(context: ExtensionContext): Promise { return requirements.resolveRequirements().catch(error => { //show error window.showErrorMessage(error.message, error.label).then((selection) => { - if (error.label && error.label === selection && error.openUrl) { - commands.executeCommand(Commands.OPEN_BROWSER, error.openUrl); + if (error.label && error.label === selection && error.command) { + commands.executeCommand(error.command, error.commandParam); } }); // rethrow to disrupt the chain. diff --git a/src/requirements.ts b/src/requirements.ts index 6cdba3701..57c2c99c0 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -6,9 +6,10 @@ import * as path from 'path'; import * as pathExists from 'path-exists'; import * as expandHomeDir from 'expand-home-dir'; import * as findJavaHome from 'find-java-home'; +import { Commands } from './commands'; const isWindows = process.platform.indexOf('win') === 0; -const JAVAC_FILENAME = 'javac' + (isWindows?'.exe':''); +const JAVAC_FILENAME = 'javac' + (isWindows ? '.exe' : ''); export interface RequirementsData { java_home: string; @@ -18,8 +19,8 @@ export interface RequirementsData { interface ErrorData { message: string; label: string; - openUrl: Uri; - replaceClose: boolean; + command: string; + commandParam: any; } /** * Resolves the requirements needed to run the extension. @@ -31,65 +32,71 @@ interface ErrorData { export async function resolveRequirements(): Promise { let java_home = await checkJavaRuntime(); let javaVersion = await checkJavaVersion(java_home); - return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion}); + return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion }); } function checkJavaRuntime(): Promise { return new Promise((resolve, reject) => { - let source : string; - let javaHome : string = readJavaConfig(); + let source: string; + let javaHome: string = readJavaConfig(); if (javaHome) { - source = 'The java.home variable defined in VS Code settings'; + source = 'java.home variable defined in VS Code settings'; } else { javaHome = process.env['JDK_HOME']; if (javaHome) { - source = 'The JDK_HOME environment variable'; + source = 'JDK_HOME environment variable'; } else { javaHome = process.env['JAVA_HOME']; - source = 'The JAVA_HOME environment variable'; + source = 'JAVA_HOME environment variable'; } } - if(javaHome ){ + if (javaHome) { javaHome = expandHomeDir(javaHome); - if(!pathExists.sync(javaHome)){ - openJDKDownload(reject, source+' points to a missing folder'); + if (!pathExists.sync(javaHome)) { + invalidJavaHome(reject, `The ${source} points to a missing or inaccessible folder (${javaHome})`); } - if(!pathExists.sync(path.resolve(javaHome, 'bin', JAVAC_FILENAME))){ - openJDKDownload(reject, source+ ' does not point to a JDK.'); + else if (!pathExists.sync(path.resolve(javaHome, 'bin', JAVAC_FILENAME))) { + let msg: string; + if (pathExists.sync(path.resolve(javaHome, JAVAC_FILENAME))) { + msg = `'bin' should be removed from the ${source} (${javaHome})`; + } else { + msg = `The ${source} (${javaHome}) does not point to a JDK.` + } + invalidJavaHome(reject, msg); } return resolve(javaHome); } //No settings, let's try to detect as last resort. findJavaHome(function (err, home) { - if (err){ - openJDKDownload(reject,'Java runtime could not be located'); - } - else { - resolve(home); - } - }); + if (err) { + openJDKDownload(reject, 'Java runtime (JDK, not JRE) could not be located'); + } + else { + resolve(home); + } + }); }); } -function readJavaConfig() : string { +function readJavaConfig(): string { const config = workspace.getConfiguration(); - return config.get('java.home',null); + return config.get('java.home', null); } function checkJavaVersion(java_home: string): Promise { return new Promise((resolve, reject) => { cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { let javaVersion = parseMajorVersion(stderr); - if (javaVersion < 8){ + if (javaVersion < 8) { openJDKDownload(reject, 'Java 8 or more recent is required to run. Please download and install a recent JDK'); - } else{ + } else { resolve(javaVersion); } }); }); } -export function parseMajorVersion(content:string):number { +export function parseMajorVersion(content: string): number { let regexp = /version "(.*)"/g; let match = regexp.exec(content); if (!match) { @@ -119,7 +126,21 @@ function openJDKDownload(reject, cause) { reject({ message: cause, label: 'Get the Java Development Kit', - openUrl: Uri.parse(jdkUrl), - replaceClose: false + command: Commands.OPEN_BROWSER, + commandParam: Uri.parse(jdkUrl), }); } + +function invalidJavaHome(reject, cause: string) { + if (cause.indexOf("java.home") > -1) { + reject({ + message: cause, + label: 'Open settings', + command: Commands.OPEN_JSON_SETTINGS + }); + } else { + reject({ + message: cause, + }); + } +} diff --git a/test/extension.test.ts b/test/extension.test.ts index ab2ddf4e0..fd5abbf61 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -42,7 +42,8 @@ suite('Java Language Extension', () => { Commands.REMOVE_FROM_SOURCEPATH, Commands.LIST_SOURCEPATHS, Commands.OVERRIDE_METHODS_PROMPT, - Commands.HASHCODE_EQUALS_PROMPT + Commands.HASHCODE_EQUALS_PROMPT, + Commands.OPEN_JSON_SETTINGS ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 449846820fc179a62ad45dc322c50b4a08890192 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 14 Mar 2019 18:15:07 -0400 Subject: [PATCH 0388/1435] Add status to ExtensionAPI Signed-off-by: Fred Bricon --- src/extension.api.ts | 3 ++- src/extension.ts | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/extension.api.ts b/src/extension.api.ts index 6ef66e657..c269c5dd0 100644 --- a/src/extension.api.ts +++ b/src/extension.api.ts @@ -2,5 +2,6 @@ import { RequirementsData } from './requirements'; export interface ExtensionAPI { readonly apiVersion: string; - readonly javaRequirement: RequirementsData; + readonly javaRequirement: RequirementsData; + readonly status: "Started" | "Error"; } diff --git a/src/extension.ts b/src/extension.ts index c2f0d51d5..7b885ba70 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -120,8 +120,9 @@ export function activate(context: ExtensionContext): Promise { lastStatus = item.text; commands.executeCommand('setContext', 'javaLSReady', true); resolve({ - apiVersion: '0.1', + apiVersion: '0.2', javaRequirement: requirements, + status: report.type }); break; case 'Error': @@ -130,8 +131,9 @@ export function activate(context: ExtensionContext): Promise { p.report({ message: 'Finished with Error' }); toggleItem(window.activeTextEditor, item); resolve({ - apiVersion: '0.1', + apiVersion: '0.2', javaRequirement: requirements, + status: report.type }); break; case 'Starting': From 78235f21d46b1c30b2e88d56059ca4096792d52b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 14 Mar 2019 20:06:20 -0400 Subject: [PATCH 0389/1435] Changelog got the 0.41.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d832c8e9a..9a80da654 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 0.41.0 (March 15th, 2019) +* enhancement - added `Generate hashcode() and equals()...` source action. See [814](https://github.com/redhat-developer/vscode-java/pull/814). +* enhancement - added reload prompt when extension bundles changed. See [#822](https://github.com/redhat-developer/vscode-java/pull/822). +* enhancement - added status to ExtensionAPI. See [#830](https://github.com/redhat-developer/vscode-java/issues/830). +* enhancement - improved failed JDK detection diagnostic. See [#835](https://github.com/redhat-developer/vscode-java/issues/835). +* bug fix - fixed the mechanism to resolve the package name of an empty java file. See [#750](https://github.com/redhat-developer/vscode-java/issues/750). +* bug fix - fixed server stopping when idling. See [#815](https://github.com/redhat-developer/vscode-java/issues/815). +* bug fix - signature help should select the 1st parameter after the opening round bracket. See [JLS#947](https://github.com/eclipse/eclipse.jdt.ls/issues/947). +* debt - subscribe all disposables to the extension's context. See [#832](https://github.com/redhat-developer/vscode-java/pull/832). + ## 0.40.0 (February 28th, 2019) * enhancement - new source action: `Override/Implement Methods...`. See [749](https://github.com/redhat-developer/vscode-java/pull/749). * enhancement - attaching sources now use a project relative path, when possible. See [JLS#906](https://github.com/eclipse/eclipse.jdt.ls/issues/906). From 0e011efd6b838fcf1c556821a62b629e8305fab1 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 18 Mar 2019 16:39:12 -0400 Subject: [PATCH 0390/1435] Upversion to 0.42.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84e047e54..66cbf0c02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.41.0", + "version": "0.42.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 99ea4042c..eab1afde8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.41.0", + "version": "0.42.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 093ff56bdfabbecb00b1af19425973999423ff03 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Mon, 18 Mar 2019 22:31:34 +0100 Subject: [PATCH 0391/1435] Exclude ParentProcessWatcher by default Signed-off-by: Snjezana Peco --- src/javaServerStarter.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index fd352064b..57c7a884e 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -64,6 +64,10 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp if (vmargs.indexOf(encodingKey) < 0) { params.push(encodingKey + getJavaEncoding()); } + const watchParentProcess = '-DwatchParentProcess='; + if (vmargs.indexOf(watchParentProcess) < 0) { + params.push(watchParentProcess + 'false'); + } parseVMargs(params, vmargs); let server_home: string = path.resolve(__dirname, '../server'); From 74f76655fe621c86596104b9fb0cd7b31ab885dd Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Tue, 19 Mar 2019 22:02:53 +0100 Subject: [PATCH 0392/1435] Exclude ParentProcessWatcher on Windows by default Signed-off-by: Snjezana Peco --- src/javaServerStarter.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 57c7a884e..9c4d244bc 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -2,6 +2,7 @@ import * as path from 'path'; import * as net from 'net'; import * as glob from 'glob'; +import * as os from 'os'; import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; import { RequirementsData } from './requirements'; import { getJavaEncoding } from './settings'; @@ -64,9 +65,11 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp if (vmargs.indexOf(encodingKey) < 0) { params.push(encodingKey + getJavaEncoding()); } - const watchParentProcess = '-DwatchParentProcess='; - if (vmargs.indexOf(watchParentProcess) < 0) { - params.push(watchParentProcess + 'false'); + if (os.platform() == 'win32') { + const watchParentProcess = '-DwatchParentProcess='; + if (vmargs.indexOf(watchParentProcess) < 0) { + params.push(watchParentProcess + 'false'); + } } parseVMargs(params, vmargs); From e07d2daf162eeb56279fd307678ba713963a7488 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Tue, 26 Mar 2019 20:51:30 +0800 Subject: [PATCH 0393/1435] Add folding range setting. (#844) Signed-off-by: Yaohai Zheng --- README.md | 5 ++++- package-lock.json | 41 +++++++++++------------------------------ package.json | 6 ++++++ 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index b24b7aa0d..f4a927a05 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Quick Start ============ 1. Install the Extension 2. If you do not have a _Java_ Development Kit correctly [set](#setting-the-jdk) - * Download and install a Java 8, 9, 10 or 11 compatible development kit. + * Download and install a recent Java Development Kit (latest Java 8 is the minimum requirement). 3. Extension is activated when you first access a Java file * Recognizes projects with *Maven* or *Gradle* build files in the directory hierarchy. @@ -98,6 +98,9 @@ The following settings are supported: * `java.codeGeneration.hashCodeEquals.useBlocks`: Use blocks in 'if' statements when generating the hashCode and equals methods. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.generateComments`: Generate method comments when generating the hashCode and equals methods. Defaults to `false`. +*New in 0.42.0:* +* `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package-lock.json b/package-lock.json index 66cbf0c02..da39f4a36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2344,8 +2344,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2366,14 +2365,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2388,20 +2385,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2518,8 +2512,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2531,7 +2524,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2546,7 +2538,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2554,14 +2545,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2580,7 +2569,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2661,8 +2649,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2674,7 +2661,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2760,8 +2746,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2797,7 +2782,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2817,7 +2801,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2861,14 +2844,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index eab1afde8..f63c82845 100644 --- a/package.json +++ b/package.json @@ -242,6 +242,12 @@ ], "scope": "window" }, + "java.foldingRange.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code.", + "scope": "window" + }, "java.progressReports.enabled": { "type": "boolean", "description": "[Experimental] Enable/disable progress reports from background processes on the server.", From afe9660675041742e4132a6fb1af134c47624c91 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 26 Mar 2019 23:57:43 +0800 Subject: [PATCH 0394/1435] Support advanced organizeImports to resolve ambiguous imports (#850) Signed-off-by: Jinbo Wang --- src/commands.ts | 8 ++++++ src/extension.ts | 3 +- src/protocol.ts | 16 ++++++++++- src/sourceAction.ts | 62 ++++++++++++++++++++++++++++++++++++++++-- test/extension.test.ts | 4 ++- 5 files changed, 88 insertions(+), 5 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index b28c59e89..663dcb72e 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -114,4 +114,12 @@ export namespace Commands { * Open settings.json */ export const OPEN_JSON_SETTINGS = 'workbench.action.openSettingsJson'; + /** + * Organize imports. + */ + export const ORGANIZE_IMPORTS = "java.action.organizeImports"; + /** + * Choose type to import. + */ + export const CHOOSE_IMPORTS = "java.action.organizeImports.chooseImports"; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 7b885ba70..da4a1f3ef 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -75,7 +75,8 @@ export function activate(context: ExtensionContext): Promise { progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), classFileContentsSupport:true, overrideMethodsPromptSupport:true, - hashCodeEqualsPromptSupport:true + hashCodeEqualsPromptSupport:true, + advancedOrganizeImportsSupport:true }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index 45ec32a5f..bb38540c8 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,7 +1,7 @@ 'use strict'; import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit } from 'vscode-languageclient'; -import { Command } from 'vscode'; +import { Command, Range } from 'vscode'; /** * The message type. Copied from vscode protocol @@ -173,4 +173,18 @@ export interface GenerateHashCodeEqualsParams { export namespace GenerateHashCodeEqualsRequest { export const type = new RequestType('java/generateHashCodeEquals'); +} + +export namespace OrganizeImportsRequest { + export const type = new RequestType('java/organizeImports'); +} + +export interface ImportCandidate { + fullyQualifiedName: string; + id: string; +} + +export interface ImportSelection { + candidates: ImportCandidate[]; + range: Range; } \ No newline at end of file diff --git a/src/sourceAction.ts b/src/sourceAction.ts index 40631e782..e9f066a90 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -1,14 +1,17 @@ 'use strict'; -import { commands, window, ExtensionContext } from 'vscode'; +import { commands, window, ExtensionContext, Range, ViewColumn, Uri, Disposable} from 'vscode'; import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; -import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest } from './protocol'; +import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest, +OrganizeImportsRequest, ImportCandidate, ImportSelection } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerOverrideMethodsCommand(languageClient, context); registerHashCodeEqualsCommand(languageClient, context); + registerOrganizeImportsCommand(languageClient, context); + registerChooseImportCommand(context); } function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { @@ -100,3 +103,58 @@ function registerHashCodeEqualsCommand(languageClient: LanguageClient, context: applyWorkspaceEdit(workspaceEdit, languageClient); })); } + +function registerOrganizeImportsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.ORGANIZE_IMPORTS, async (params: CodeActionParams) => { + const workspaceEdit = await languageClient.sendRequest(OrganizeImportsRequest.type, params); + applyWorkspaceEdit(workspaceEdit, languageClient); + })); +} + +function registerChooseImportCommand(context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.CHOOSE_IMPORTS, async (uri: string, selections: ImportSelection[]) => { + const chosen: ImportCandidate[] = []; + const fileUri: Uri = Uri.parse(uri); + for (let i = 0; i < selections.length; i++) { + const selection : ImportSelection = selections[i]; + // Move the cursor to the code line with ambiguous import choices. + await window.showTextDocument(fileUri, { preserveFocus: true, selection: selection.range, viewColumn: ViewColumn.One }); + const candidates: ImportCandidate[] = selection.candidates; + const items = candidates.map((item) => { + return { + label: item.fullyQualifiedName, + origin: item + }; + }); + + const fullyQualifiedName = candidates[0].fullyQualifiedName; + const typeName = fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1); + const disposables: Disposable[] = []; + try { + const pick = await new Promise((resolve, reject) => { + const input = window.createQuickPick(); + input.title = "Organize Imports"; + input.step = i + 1; + input.totalSteps = selections.length; + input.placeholder = `Choose type '${typeName}' to import`; + input.items = items; + disposables.push( + input.onDidChangeSelection(items => resolve(items[0])), + input.onDidHide(() => { + reject(undefined); + }), + input + ); + input.show(); + }); + chosen.push(pick ? pick.origin : null); + } catch (err) { + break; + } finally { + disposables.forEach(d => d.dispose()); + } + } + + return chosen; + })); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index fd5abbf61..12d123cca 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -43,7 +43,9 @@ suite('Java Language Extension', () => { Commands.LIST_SOURCEPATHS, Commands.OVERRIDE_METHODS_PROMPT, Commands.HASHCODE_EQUALS_PROMPT, - Commands.OPEN_JSON_SETTINGS + Commands.OPEN_JSON_SETTINGS, + Commands.ORGANIZE_IMPORTS, + Commands.CHOOSE_IMPORTS ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 84215cb839de077cc719752802d634cb2c52bb9d Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 27 Mar 2019 19:12:57 -0400 Subject: [PATCH 0395/1435] Changelog for the 0.42.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 9 +++++++++ README.md | 2 ++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a80da654..75f5247f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 0.42.0 (March 29th, 2019) +* enhancement - added "imports" folding support. See [#555](https://github.com/redhat-developer/vscode-java/issues/555). +* enhancement - added UI to manage anbiguous imports. See [#673](https://github.com/redhat-developer/vscode-java/issues/673). +* enhancement - added `Convert to static import` code actions. See [#796](https://github.com/redhat-developer/vscode-java/issues/796). +* enhancement - eliminated CPU usage when idling on Windows. See [#843](https://github.com/redhat-developer/vscode-java/pull/843). +* enhancement - added Java 12 support. See [#671](https://github.com/redhat-developer/vscode-java/issues/671). +* bug fix - fixed occasional NPE when navigating to class, on Linux. See [#963](https://github.com/eclipse/eclipse.jdt.ls/issues/963). + + ## 0.41.0 (March 15th, 2019) * enhancement - added `Generate hashcode() and equals()...` source action. See [814](https://github.com/redhat-developer/vscode-java/pull/814). * enhancement - added reload prompt when extension bundles changed. See [#822](https://github.com/redhat-developer/vscode-java/pull/822). diff --git a/README.md b/README.md index f4a927a05..20332714a 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Features ========= ![ screencast ](https://raw.githubusercontent.com/redhat-developer/vscode-java/master/images/vscode-java.0.0.1.gif) +* Supports code from Java 1.5 to Java 12 * Maven pom.xml project support * Basic Gradle Java project support * Standalone Java files support @@ -30,6 +31,7 @@ Features * Organize imports * Type search * Code outline +* Code folding * Code navigation * Code lens (references/implementations) * Highlights From 7867d96e98a497315c8cea3ca631a4ffda887211 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 27 Mar 2019 21:10:05 -0400 Subject: [PATCH 0396/1435] Remove extra line in changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75f5247f4..964f6b805 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,6 @@ * enhancement - added Java 12 support. See [#671](https://github.com/redhat-developer/vscode-java/issues/671). * bug fix - fixed occasional NPE when navigating to class, on Linux. See [#963](https://github.com/eclipse/eclipse.jdt.ls/issues/963). - ## 0.41.0 (March 15th, 2019) * enhancement - added `Generate hashcode() and equals()...` source action. See [814](https://github.com/redhat-developer/vscode-java/pull/814). * enhancement - added reload prompt when extension bundles changed. See [#822](https://github.com/redhat-developer/vscode-java/pull/822). From 4df7c1f93343ee853783f4bd0eb7a530417c70e3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 27 Mar 2019 23:27:55 -0400 Subject: [PATCH 0397/1435] Fix typo in changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 964f6b805..4162cd8e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ # Change Log ## 0.42.0 (March 29th, 2019) -* enhancement - added "imports" folding support. See [#555](https://github.com/redhat-developer/vscode-java/issues/555). -* enhancement - added UI to manage anbiguous imports. See [#673](https://github.com/redhat-developer/vscode-java/issues/673). -* enhancement - added `Convert to static import` code actions. See [#796](https://github.com/redhat-developer/vscode-java/issues/796). -* enhancement - eliminated CPU usage when idling on Windows. See [#843](https://github.com/redhat-developer/vscode-java/pull/843). -* enhancement - added Java 12 support. See [#671](https://github.com/redhat-developer/vscode-java/issues/671). +* enhancement - added "imports" folding support. See [#694](https://github.com/eclipse/eclipse.jdt.ls/issues/694). +* enhancement - added `Convert to static import` code actions. See [#958](https://github.com/eclipse/eclipse.jdt.ls/pull/958). +* enhancement - added Java 12 support. See [#959](https://github.com/eclipse/eclipse.jdt.ls/issues/959). +* enhancement - eliminated CPU usage when idling on Windows. See [#960](https://github.com/eclipse/eclipse.jdt.ls/issues/960). +* enhancement - added UI to manage ambiguous imports. See [#966](https://github.com/eclipse/eclipse.jdt.ls/pull/966). * bug fix - fixed occasional NPE when navigating to class, on Linux. See [#963](https://github.com/eclipse/eclipse.jdt.ls/issues/963). ## 0.41.0 (March 15th, 2019) From d05978e974d2b891f90d4173ad46645af2458d1f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 29 Mar 2019 10:13:00 -0400 Subject: [PATCH 0398/1435] Log startup command Signed-off-by: Fred Bricon --- src/javaServerStarter.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 9c4d244bc..2c226e19f 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -18,6 +18,7 @@ export function prepareExecutable(requirements: RequirementsData, workspacePath, executable.options = options; executable.command = path.resolve(requirements.java_home + '/bin/java'); executable.args = prepareParams(requirements, javaConfig, workspacePath); + console.log('Starting Java server with: ' + executable.command + ' ' + executable.args.join(' ')); return executable; } export function awaitServerConnection(port): Thenable { From 4d9c84b43ac5baf8ec10efd97938deaf70cc12a2 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 29 Mar 2019 11:23:04 -0400 Subject: [PATCH 0399/1435] Prevent Theia from crashing by checking if extensions.onDidChange exists Signed-off-by: Fred Bricon --- src/extension.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index da4a1f3ef..53d81dd3b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -307,9 +307,11 @@ export function activate(context: ExtensionContext): Promise { } }; context.subscriptions.push(workspace.registerTextDocumentContentProvider('jdt', provider)); - extensions.onDidChange(() => { - onExtensionChange(extensions.all); - }); + if (extensions.onDidChange) {//Theia doesn't support this API yet + extensions.onDidChange(() => { + onExtensionChange(extensions.all); + }); + } excludeProjectSettingsFiles(); }); From 5b5ea2d196bd5221793a8cdf1e15b5ac7e0e7d54 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 1 Apr 2019 17:27:51 -0400 Subject: [PATCH 0400/1435] Upversion to 0.42.1 Signed-off-by: Fred Bricon --- CHANGELOG.md | 3 +++ package-lock.json | 43 +++++++++++++++++++++++++++++++------------ package.json | 2 +- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4162cd8e5..6afba4244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## 0.42.1 (April 1st, 2019) +* bug fix - fixed java.lang.UnsupportedClassVersionError when trying to run/test standalone code. See [#801](https://github.com/redhat-developer/vscode-java/issues/801). + ## 0.42.0 (March 29th, 2019) * enhancement - added "imports" folding support. See [#694](https://github.com/eclipse/eclipse.jdt.ls/issues/694). * enhancement - added `Convert to static import` code actions. See [#958](https://github.com/eclipse/eclipse.jdt.ls/pull/958). diff --git a/package-lock.json b/package-lock.json index da39f4a36..cbb460e0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.42.0", + "version": "0.42.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2344,7 +2344,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2365,12 +2366,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2385,17 +2388,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2512,7 +2518,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2524,6 +2531,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2538,6 +2546,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2545,12 +2554,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2569,6 +2580,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2649,7 +2661,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2661,6 +2674,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2746,7 +2760,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2782,6 +2797,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2801,6 +2817,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2844,12 +2861,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index f63c82845..1c6b28333 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.42.0", + "version": "0.42.1", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 4128a48613472851014b9f6baa524fe8a72a8c3e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 2 Apr 2019 18:47:41 -0400 Subject: [PATCH 0401/1435] Upversion to 0.43.0 Signed-off-by: Fred Bricon --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbb460e0e..006551bea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.42.1", + "version": "0.43.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4013,9 +4013,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "dev": true, "requires": { "argparse": "^1.0.7", diff --git a/package.json b/package.json index 1c6b28333..b7a034805 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.42.1", + "version": "0.43.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From b75e568346e63ae878e6c5a3d56757366a46bd00 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Mon, 8 Apr 2019 17:22:26 +0200 Subject: [PATCH 0402/1435] Download java sources lazily Signed-off-by: Snjezana Peco --- README.md | 3 +++ package.json | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 20332714a..2015e81c9 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,9 @@ The following settings are supported: *New in 0.42.0:* * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. +*New in 0.43.0:* +* `java.maven.downloadSources`: Enable/disable eager download of Maven source artifacts. + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index b7a034805..2dd41f409 100644 --- a/package.json +++ b/package.json @@ -131,6 +131,12 @@ "description": "Enable/disable the Maven importer.", "scope": "window" }, + "java.maven.downloadSources": { + "type": "boolean", + "default": false, + "description": "Enable/disable eager download of Maven source artifacts.", + "scope": "window" + }, "java.referencesCodeLens.enabled": { "type": "boolean", "default": false, From 3c4e6821cf9add77279c27345c46f7589d80f928 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 9 Apr 2019 14:18:54 -0400 Subject: [PATCH 0403/1435] Update readme Signed-off-by: Fred Bricon --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 2015e81c9..12eafedd5 100644 --- a/README.md +++ b/README.md @@ -99,8 +99,6 @@ The following settings are supported: * `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.useBlocks`: Use blocks in 'if' statements when generating the hashCode and equals methods. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.generateComments`: Generate method comments when generating the hashCode and equals methods. Defaults to `false`. - -*New in 0.42.0:* * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. *New in 0.43.0:* From a24945453092e1c39267eac9367c759a6c7b0497 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Fri, 5 Apr 2019 19:53:51 +0200 Subject: [PATCH 0404/1435] Optimize server initialization Signed-off-by: Snjezana Peco --- src/extension.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 53d81dd3b..f1446fb83 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -55,17 +55,6 @@ export function activate(context: ExtensionContext): Promise { ], synchronize: { configurationSection: 'java', - // Notify the server about file changes to .java and project/build files contained in the workspace - fileEvents: [ - workspace.createFileSystemWatcher('**/*.java'), - workspace.createFileSystemWatcher('**/pom.xml'), - workspace.createFileSystemWatcher('**/*.gradle'), - workspace.createFileSystemWatcher('**/gradle.properties'), - workspace.createFileSystemWatcher('**/.project'), - workspace.createFileSystemWatcher('**/.classpath'), - workspace.createFileSystemWatcher('**/settings/*.prefs'), - workspace.createFileSystemWatcher('**/src/**') - ], }, initializationOptions: { bundles: collectJavaExtensions(extensions.all), From 61aa1006512b475b6dd432c6aafaa504f3f175a4 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 16 Apr 2019 07:03:32 +0800 Subject: [PATCH 0405/1435] Add Code Action: Generate toString()... (#873) Signed-off-by: Jinbo Wang --- README.md | 9 ++++++-- package.json | 48 ++++++++++++++++++++++++++++++++++++++---- src/commands.ts | 6 +++++- src/extension.ts | 3 ++- src/protocol.ts | 19 +++++++++++++++++ src/sourceAction.ts | 46 +++++++++++++++++++++++++++++++++++++++- test/extension.test.ts | 3 ++- 7 files changed, 124 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 12eafedd5..b1629616a 100644 --- a/README.md +++ b/README.md @@ -97,12 +97,17 @@ The following settings are supported: * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. * `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. -* `java.codeGeneration.hashCodeEquals.useBlocks`: Use blocks in 'if' statements when generating the hashCode and equals methods. Defaults to `false`. -* `java.codeGeneration.hashCodeEquals.generateComments`: Generate method comments when generating the hashCode and equals methods. Defaults to `false`. * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. *New in 0.43.0:* * `java.maven.downloadSources`: Enable/disable eager download of Maven source artifacts. +* `java.codeGeneration.useBlocks`: Use blocks in 'if' statements when generating the methods. Defaults to `false`. +* `java.codeGeneration.generateComments`: Generate method comments when generating the methods. Defaults to `false`. +* `java.codeGeneration.toString.template`: The template for generating the toString method. Defaults to `${object.className} [${member.name()}=${member.value}, ${otherMembers}]`. +* `java.codeGeneration.toString.codeStyle`: The code style for generating the toString method. Defaults to `STRING_CONCATENATION`. +* `java.codeGeneration.toString.skipNullValues`: Skip null values when generating the toString method. Defaults to `false`. +* `java.codeGeneration.toString.listArrayContents`: List contents of arrays instead of using native toString(). Defaults to `true`. +* `java.codeGeneration.toString.limitElements`: Limit number of items in arrays/collections/maps to list, if 0 then list all. Defaults to `0`. Troubleshooting =============== diff --git a/package.json b/package.json index 2dd41f409..b8ed5eb27 100644 --- a/package.json +++ b/package.json @@ -296,17 +296,57 @@ "default": false, "scope": "window" }, - "java.codeGeneration.hashCodeEquals.useBlocks": { + "java.codeGeneration.useBlocks": { "type": "boolean", - "description": "Use blocks in 'if' statements when generating the hashCode and equals methods.", + "description": "Use blocks in 'if' statements when generating the methods.", "default": false, "scope": "window" }, - "java.codeGeneration.hashCodeEquals.generateComments": { + "java.codeGeneration.generateComments": { "type": "boolean", - "description": "Generate method comments when generating the hashCode and equals methods.", + "description": "Generate method comments when generating the methods.", "default": false, "scope": "window" + }, + "java.codeGeneration.toString.template": { + "type": "string", + "description": "The template for generating the toString method.", + "default": "${object.className} [${member.name()}=${member.value}, ${otherMembers}]" + }, + "java.codeGeneration.toString.codeStyle": { + "type": "string", + "enum": [ + "STRING_CONCATENATION", + "STRING_BUILDER", + "STRING_BUILDER_CHAINED", + "STRING_FORMAT" + ], + "enumDescriptions": [ + "String concatenation", + "StringBuilder/StringBuffer", + "StringBuilder/StringBuffer - chained call", + "String.format/MessageFormat" + ], + "description": "The code style for generating the toString method.", + "default": "STRING_CONCATENATION" + }, + "java.codeGeneration.toString.skipNullValues": { + "type": "boolean", + "description": "Skip null values when generating the toString method.", + "default": false, + "scope": "window" + }, + "java.codeGeneration.toString.listArrayContents": { + "type": "boolean", + "description": "List contents of arrays instead of using native toString().", + "default": true, + "scope": "window" + }, + "java.codeGeneration.toString.limitElements": { + "type": "integer", + "description": "Limit number of items in arrays/collections/maps to list, if 0 then list all.", + "default": 0, + "scope": "window" } } }, diff --git a/src/commands.ts b/src/commands.ts index 663dcb72e..71517710a 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -109,7 +109,7 @@ export namespace Commands { /** * Generate hashCode() and equals(). */ - export const HASHCODE_EQUALS_PROMPT = 'java.action.hashCodeEqualsPrompt'; + export const HASHCODE_EQUALS_PROMPT = 'java.action.hashCodeEqualsPrompt'; /** * Open settings.json */ @@ -122,4 +122,8 @@ export namespace Commands { * Choose type to import. */ export const CHOOSE_IMPORTS = "java.action.organizeImports.chooseImports"; + /** + * Generate toString(). + */ + export const GENERATE_TOSTRING_PROMPT = 'java.action.generateToStringPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index f1446fb83..562275918 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -65,7 +65,8 @@ export function activate(context: ExtensionContext): Promise { classFileContentsSupport:true, overrideMethodsPromptSupport:true, hashCodeEqualsPromptSupport:true, - advancedOrganizeImportsSupport:true + advancedOrganizeImportsSupport:true, + generateToStringPromptSupport:true }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index bb38540c8..b87474ffd 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -187,4 +187,23 @@ export interface ImportCandidate { export interface ImportSelection { candidates: ImportCandidate[]; range: Range; +} + +export interface CheckToStringResponse { + type: string; + fields: VariableField[]; + exists: boolean; +} + +export namespace CheckToStringStatusRequest { + export const type = new RequestType('java/checkToStringStatus'); +} + +export interface GenerateToStringParams { + context: CodeActionParams; + fields: VariableField[]; +} + +export namespace GenerateToStringRequest { + export const type = new RequestType('java/generateToString'); } \ No newline at end of file diff --git a/src/sourceAction.ts b/src/sourceAction.ts index e9f066a90..a7d437291 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -5,13 +5,14 @@ import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest, -OrganizeImportsRequest, ImportCandidate, ImportSelection } from './protocol'; +OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableField } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerOverrideMethodsCommand(languageClient, context); registerHashCodeEqualsCommand(languageClient, context); registerOrganizeImportsCommand(languageClient, context); registerChooseImportCommand(context); + registerGenerateToStringCommand(languageClient, context); } function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { @@ -158,3 +159,46 @@ function registerChooseImportCommand(context: ExtensionContext): void { return chosen; })); } + +function registerGenerateToStringCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.GENERATE_TOSTRING_PROMPT, async (params: CodeActionParams) => { + const result = await languageClient.sendRequest(CheckToStringStatusRequest.type, params); + if (!result) { + return; + } + + if (result.exists) { + const ans = await window.showInformationMessage(`Method 'toString()' already exists in the Class '${result.type}'. ` + + 'Do you want to replace the implementation?', 'Replace', 'Cancel'); + if (ans !== 'Replace') { + return; + } + } + + let fields: VariableField[] = []; + if (result.fields && result.fields.length) { + const fieldItems = result.fields.map((field) => { + return { + label: `${field.name}: ${field.type}`, + picked: true, + originalField: field + }; + }); + const selectedFields = await window.showQuickPick(fieldItems, { + canPickMany: true, + placeHolder: 'Select the fields to include in the toString() method.' + }); + if (!selectedFields) { + return; + } + + fields = selectedFields.map((item) => item.originalField); + } + + const workspaceEdit = await languageClient.sendRequest(GenerateToStringRequest.type, { + context: params, + fields, + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + })); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 12d123cca..c9ad7b20e 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -45,7 +45,8 @@ suite('Java Language Extension', () => { Commands.HASHCODE_EQUALS_PROMPT, Commands.OPEN_JSON_SETTINGS, Commands.ORGANIZE_IMPORTS, - Commands.CHOOSE_IMPORTS + Commands.CHOOSE_IMPORTS, + Commands.GENERATE_TOSTRING_PROMPT ]; let foundJavaCommands = commands.filter(function(value){ return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 831f44f4c930b4328622448104b6513a0bbead75 Mon Sep 17 00:00:00 2001 From: Gorkem Ercan Date: Mon, 1 Apr 2019 17:07:35 -0400 Subject: [PATCH 0406/1435] Updates tslint configuration Several changes related to tslint. 1. tslint is now invoked as as a typescript plugin, and the gulp function related to tslint is removed. 2. updated tslint.json with rules. 3. fixed reported tslint error Signed-off-by: Gorkem Ercan --- gulpfile.js | 8 +- package-lock.json | 820 ++++++++++----------------------------- package.json | 7 +- src/buildpath.ts | 2 +- src/extension.ts | 113 +++--- src/javaServerStarter.ts | 38 +- src/plugin.ts | 10 +- src/protocol.ts | 9 +- src/requirements.ts | 22 +- src/settings.ts | 19 +- src/sourceAction.ts | 4 +- test/extension.test.ts | 18 +- tsconfig.json | 5 +- tslint.json | 75 +++- 14 files changed, 380 insertions(+), 770 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 94e4e40ad..93450e0d2 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,16 +1,10 @@ 'use strict'; const gulp = require('gulp'); -const gulp_tslint = require('gulp-tslint'); const cp = require('child_process'); const decompress = require('gulp-decompress'); const download = require('gulp-download'); const server_dir = '../eclipse.jdt.ls'; //... -gulp.task('tslint', () => { - return gulp.src(['**/*.ts', '!**/*.d.ts', '!node_modules/**']) - .pipe(gulp_tslint()) - .pipe(gulp_tslint.report()); -}); gulp.task('download_server', function(done) { download("http://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz") @@ -34,7 +28,7 @@ gulp.task('dev_server', function(done) { } else if(isMac()){ command += '-Denvironment.os=macosx -Denvironment.ws=cocoa -Denvironment.arch=x86_64'; - } + } else if(isWin()){ command += '-Denvironment.os=win32 -Denvironment.ws=win32 -Denvironment.arch=x86_64'; } diff --git a/package-lock.json b/package-lock.json index 006551bea..3aa44f582 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,12 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==", - "dev": true - }, "@types/glob": { "version": "5.0.30", "resolved": "http://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", @@ -237,6 +231,15 @@ "acorn": "^5.0.0" } }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, "ajv": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", @@ -270,15 +273,6 @@ "ansi-wrap": "^0.1.0" } }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", @@ -288,15 +282,6 @@ "ansi-wrap": "0.1.0" } }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -472,15 +457,6 @@ } } }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", @@ -493,12 +469,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -536,7 +506,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -731,7 +701,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { @@ -739,15 +709,6 @@ "safe-buffer": "^5.1.1" } }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, "bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", @@ -812,7 +773,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -849,7 +810,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -1198,7 +1159,7 @@ }, "commander": { "version": "2.8.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -1306,7 +1267,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -1319,7 +1280,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -1518,15 +1479,6 @@ "yauzl": "^2.4.2" } }, - "deep-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", - "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -1630,7 +1582,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -1645,12 +1597,6 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, "duplexer2": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", @@ -1799,6 +1745,21 @@ "es6-symbol": "^3.1.1" } }, + "es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -1864,29 +1825,6 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - }, - "dependencies": { - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - } - } - }, "events": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -2275,12 +2213,6 @@ "map-cache": "^0.2.2" } }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2325,9 +2257,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, "optional": true, "requires": { @@ -2354,7 +2286,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -2380,7 +2312,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -2419,7 +2351,7 @@ } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -2468,7 +2400,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -2488,12 +2420,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -2558,17 +2490,17 @@ "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -2592,7 +2524,7 @@ "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.2.4", "bundled": true, "dev": true, "optional": true, @@ -2603,18 +2535,18 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.3", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -2631,13 +2563,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.5", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true, @@ -2714,12 +2646,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2749,16 +2681,16 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, "dev": true, "optional": true @@ -2776,7 +2708,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true, "optional": true @@ -2829,17 +2761,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -2850,12 +2782,12 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -2865,25 +2797,13 @@ "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true } } }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -2898,7 +2818,7 @@ }, "get-stream": { "version": "2.3.1", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dev": true, "requires": { @@ -3095,17 +3015,6 @@ } } }, - "gulp-chmod": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz", - "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", - "dev": true, - "requires": { - "deep-assign": "^1.0.0", - "stat-mode": "^0.2.0", - "through2": "^2.0.0" - } - }, "gulp-decompress": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-2.0.1.tgz", @@ -3199,250 +3108,6 @@ } } }, - "gulp-filter": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz", - "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", - "dev": true, - "requires": { - "multimatch": "^2.0.0", - "plugin-error": "^0.1.2", - "streamfilter": "^1.0.5" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - } - } - }, - "gulp-gunzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz", - "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", - "dev": true, - "requires": { - "through2": "~0.6.5", - "vinyl": "~0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "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=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "gulp-remote-src-vscode": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.1.tgz", - "integrity": "sha512-mw4OGjtC/jlCWJFhbcAlel4YPvccChlpsl3JceNiB/DLJi24/UPxXt53/N26lgI3dknEqd4ErfdHrO8sJ5bATQ==", - "dev": true, - "requires": { - "event-stream": "3.3.4", - "node.extend": "^1.1.2", - "request": "^2.79.0", - "through2": "^2.0.3", - "vinyl": "^2.0.1" - } - }, - "gulp-tslint": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.3.tgz", - "integrity": "sha512-KEP350N5B9Jg6o6jnyCyKVBPemJePYpMsGfIQq0G0ErvY7tw4Lrfb/y3L4WRf7ek0OsaE8nnj86w+lcLXW8ovw==", - "dev": true, - "requires": { - "@types/fancy-log": "1.3.0", - "chalk": "2.3.1", - "fancy-log": "1.3.2", - "map-stream": "~0.0.7", - "plugin-error": "1.0.1", - "through": "~2.3.8" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.3.1", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", - "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.2.0" - } - }, - "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "time-stamp": "^1.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "gulp-untar": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz", - "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", - "dev": true, - "requires": { - "event-stream": "~3.3.4", - "streamifier": "~0.1.1", - "tar": "^2.2.1", - "through2": "~2.0.3", - "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 - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "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-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -3506,21 +3171,6 @@ } } }, - "gulp-vinyl-zip": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz", - "integrity": "sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q==", - "dev": true, - "requires": { - "event-stream": "3.3.4", - "queue": "^4.2.1", - "through2": "^2.0.3", - "vinyl": "^2.0.2", - "vinyl-fs": "^3.0.3", - "yauzl": "^2.2.1", - "yazl": "^2.2.1" - } - }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -3546,15 +3196,6 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3669,6 +3310,27 @@ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3686,6 +3348,33 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", @@ -3752,12 +3441,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", - "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", - "dev": true - }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -3919,12 +3602,6 @@ } } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4013,9 +3690,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", - "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -4366,12 +4043,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -4630,6 +4301,16 @@ } } }, + "mock-require": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mock-require/-/mock-require-3.0.3.tgz", + "integrity": "sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==", + "dev": true, + "requires": { + "get-caller-file": "^1.0.2", + "normalize-path": "^2.1.1" + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -4650,18 +4331,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, "multipipe": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", @@ -4760,7 +4429,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -4777,16 +4446,6 @@ } } }, - "node.extend": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", - "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", - "dev": true, - "requires": { - "has": "^1.0.3", - "is": "^3.2.1" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -5092,7 +4751,7 @@ }, "path-browserify": { "version": "0.0.0", - "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, @@ -5150,15 +4809,6 @@ "pinkie-promise": "^2.0.0" } }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -5225,18 +4875,6 @@ } } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5345,20 +4983,11 @@ "dev": true }, "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, - "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" - } - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -5743,7 +5372,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -5966,15 +5595,6 @@ "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", "dev": true }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -6022,12 +5642,6 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, - "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", - "dev": true - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6059,15 +5673,6 @@ "readable-stream": "^2.0.2" } }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "~0.1.1" - } - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -6103,21 +5708,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "streamfilter": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", - "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "streamifier": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", - "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -6167,7 +5757,7 @@ }, "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=", "dev": true }, @@ -6193,17 +5783,6 @@ "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", "dev": true }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, "tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", @@ -6287,7 +5866,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -6543,7 +6122,7 @@ }, "tty-browserify": { "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, @@ -6569,11 +6148,22 @@ "dev": true }, "typescript": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.1.tgz", - "integrity": "sha512-jw7P2z/h6aPT4AENXDGjcfHTu5CSqzsbZc6YlUIebTyBAq8XaKp78x7VcSh30xwSCcsu5irZkYZUSFP1MrAMbg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.1.tgz", + "integrity": "sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q==", "dev": true }, + "typescript-tslint-plugin": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/typescript-tslint-plugin/-/typescript-tslint-plugin-0.3.1.tgz", + "integrity": "sha512-h8HEPBm36UEs901ld1x6m5eY/UFb4mF+A0nvERr4BWMww5wnV5nfcm9ZFt18foYL0GQ5NVMt1Tb3466WUU8dRQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4", + "mock-require": "^3.0.2", + "vscode-languageserver": "^5.1.0" + } + }, "unbzip2-stream": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.1.tgz", @@ -6756,9 +6346,9 @@ } }, "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.6.tgz", + "integrity": "sha512-/B8AD9iQ01seoXmXf9z/MjLZQIdOoYl/+gvsQF6+mpnxaTfG9P7srYaiqaDMyKkR36XMXfhqSHss5MyFAO8lew==", "dev": true, "requires": { "querystringify": "^2.0.0", @@ -6873,40 +6463,6 @@ "vinyl-sourcemap": "^1.1.0" } }, - "vinyl-source-stream": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", - "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", - "dev": true, - "requires": { - "through2": "^2.0.3", - "vinyl": "^0.4.3" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, "vinyl-sourcemap": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", @@ -6924,7 +6480,7 @@ }, "vm-browserify": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", "dev": true, "requires": { @@ -6932,25 +6488,18 @@ } }, "vscode": { - "version": "1.1.30", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.30.tgz", - "integrity": "sha512-YDj5w0TGOcS8XLIdekT4q6LlLV6hv1ZvuT2aGT3KJll4gMz6dUPDgo2VVAf0i0E8igbbZthwvmaUGRwW9yPIaw==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.33.tgz", + "integrity": "sha512-sXedp2oF6y4ZvqrrFiZpeMzaCLSWV+PpYkIxjG/iYquNZ9KrLL2LujltGxPLvzn49xu2sZkyC+avVNFgcJD1Iw==", "dev": true, "requires": { "glob": "^7.1.2", - "gulp-chmod": "^2.0.0", - "gulp-filter": "^5.0.1", - "gulp-gunzip": "1.0.0", - "gulp-remote-src-vscode": "^0.5.1", - "gulp-untar": "^0.0.7", - "gulp-vinyl-zip": "^2.1.2", "mocha": "^4.0.1", "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" + "url-parse": "^1.4.4", + "vscode-test": "^0.1.4" }, "dependencies": { "browser-stdout": { @@ -7051,6 +6600,34 @@ "vscode-languageserver-protocol": "3.13.0" } }, + "vscode-languageserver": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz", + "integrity": "sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A==", + "dev": true, + "requires": { + "vscode-languageserver-protocol": "3.14.1", + "vscode-uri": "^1.0.6" + }, + "dependencies": { + "vscode-languageserver-protocol": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz", + "integrity": "sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g==", + "dev": true, + "requires": { + "vscode-jsonrpc": "^4.0.0", + "vscode-languageserver-types": "3.14.0" + } + }, + "vscode-languageserver-types": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", + "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==", + "dev": true + } + } + }, "vscode-languageserver-protocol": { "version": "3.13.0", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz", @@ -7065,6 +6642,22 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" }, + "vscode-test": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.1.5.tgz", + "integrity": "sha512-s+lbF1Dtasc0yXVB9iQTexBe2JK6HJAUJe3fWezHKIjq+xRw5ZwCMEMBaonFIPy7s95qg2HPTRDR5W4h4kbxGw==", + "dev": true, + "requires": { + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1" + } + }, + "vscode-uri": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.6.tgz", + "integrity": "sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==", + "dev": true + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -7391,15 +6984,6 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } - }, - "yazl": { - "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 b8ed5eb27..836b13f89 100644 --- a/package.json +++ b/package.json @@ -462,7 +462,6 @@ "test": "node ./node_modules/vscode/bin/test", "build-server": "./node_modules/.bin/gulp build_server", "watch-server": "./node_modules/.bin/gulp watch_server", - "tslint": "./node_modules/.bin/gulp tslint", "webpack": "webpack --mode development" }, "devDependencies": { @@ -472,12 +471,12 @@ "gulp": "^4.0.0", "gulp-decompress": "2.0.1", "gulp-download": "0.0.1", - "gulp-tslint": "^8.1.3", "mocha": "^5.2.0", "ts-loader": "^5.3.1", "tslint": "^5.11.0", - "typescript": "^3.0.3", - "vscode": "^1.1.30", + "typescript": "^3.4.1", + "typescript-tslint-plugin": "^0.3.1", + "vscode": "^1.1.33", "webpack": "^4.27.1", "webpack-cli": "^3.1.2" }, diff --git a/src/buildpath.ts b/src/buildpath.ts index 9a00529aa..3463b04de 100644 --- a/src/buildpath.ts +++ b/src/buildpath.ts @@ -47,7 +47,7 @@ export function registerCommands(context: ExtensionContext) { window.showQuickPick(result.data.map(sourcePath => { return { label: sourcePath.displayPath, - detail: `$(file-directory) ${sourcePath.projectType} Project: ${sourcePath.projectName}`, + detail: `$(file-directory) ${sourcePath.projectType} Project: ${sourcePath.projectName}`, }; }), { placeHolder: 'All Java source directories recognized by the workspace.'}); } diff --git a/src/extension.ts b/src/extension.ts index 562275918..e8523d819 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -9,8 +9,10 @@ import { onExtensionChange, collectJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; import { Commands } from './commands'; -import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, -SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute } from './protocol'; +import { + StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest, + SourceAttachmentRequest, SourceAttachmentResult, SourceAttachmentAttribute +} from './protocol'; import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; import * as sourceAction from './sourceAction'; @@ -20,7 +22,7 @@ import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; let lastStatus; let languageClient: LanguageClient; -let jdtEventEmitter = new EventEmitter(); +const jdtEventEmitter = new EventEmitter(); const cleanWorkspaceFileName = '.cleanWorkspace'; export function activate(context: ExtensionContext): Promise { @@ -28,7 +30,7 @@ export function activate(context: ExtensionContext): Promise { enableJavadocSymbols(); return requirements.resolveRequirements().catch(error => { - //show error + // show error window.showErrorMessage(error.message, error.label).then((selection) => { if (error.label && error.label === selection && error.command) { commands.executeCommand(error.command, error.commandParam); @@ -43,10 +45,10 @@ export function activate(context: ExtensionContext): Promise { if (!storagePath) { storagePath = getTempWorkspace(); } - let workspacePath = path.resolve(storagePath + '/jdt_ws'); + const workspacePath = path.resolve(storagePath + '/jdt_ws'); // Options to control the language client - let clientOptions: LanguageClientOptions = { + const clientOptions: LanguageClientOptions = { // Register the server for java documentSelector: [ { scheme: 'file', language: 'java' }, @@ -60,34 +62,34 @@ export function activate(context: ExtensionContext): Promise { bundles: collectJavaExtensions(extensions.all), workspaceFolders: workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.toString()) : null, settings: { java: getJavaConfiguration() }, - extendedClientCapabilities:{ + extendedClientCapabilities: { progressReportProvider: getJavaConfiguration().get('progressReports.enabled'), - classFileContentsSupport:true, - overrideMethodsPromptSupport:true, - hashCodeEqualsPromptSupport:true, - advancedOrganizeImportsSupport:true, - generateToStringPromptSupport:true + classFileContentsSupport: true, + overrideMethodsPromptSupport: true, + hashCodeEqualsPromptSupport: true, + advancedOrganizeImportsSupport: true, + generateToStringPromptSupport: true }, triggerFiles: getTriggerFiles() }, revealOutputChannelOn: RevealOutputChannelOn.Never }; - let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); + const item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); item.text = '$(rocket)'; item.command = Commands.OPEN_OUTPUT; - let progressBar = window.createStatusBarItem(StatusBarAlignment.Left, Number.MIN_VALUE+1); + const progressBar = window.createStatusBarItem(StatusBarAlignment.Left, Number.MIN_VALUE + 1); let serverOptions; - let port = process.env['SERVER_PORT']; + const port = process.env['SERVER_PORT']; if (!port) { - let lsPort = process.env['JDTLS_CLIENT_PORT']; + const lsPort = process.env['JDTLS_CLIENT_PORT']; if (!lsPort) { serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration()); } else { serverOptions = () => { - let socket = net.connect(lsPort); - let result: StreamInfo = { + const socket = net.connect(lsPort); + const result: StreamInfo = { writer: socket, reader: socket }; @@ -166,9 +168,9 @@ export function activate(context: ExtensionContext): Promise { } const titles = notification.commands.map(a => a.title); show(notification.message, ...titles).then((selection) => { - for (let action of notification.commands) { + for (const action of notification.commands) { if (action.title === selection) { - let args: any[] = (action.arguments) ? action.arguments : []; + const args: any[] = (action.arguments) ? action.arguments : []; commands.executeCommand(action.command, ...args); break; } @@ -215,17 +217,17 @@ export function activate(context: ExtensionContext): Promise { return languageClient.sendRequest(ExecuteCommandRequest.type, params); })); - context.subscriptions.push(commands.registerCommand(Commands.COMPILE_WORKSPACE, (isFullCompile : boolean) => { + context.subscriptions.push(commands.registerCommand(Commands.COMPILE_WORKSPACE, (isFullCompile: boolean) => { return window.withProgress({ location: ProgressLocation.Window }, async p => { if (typeof isFullCompile !== 'boolean') { - const selection = await window.showQuickPick(['Incremental', 'Full'], {'placeHolder' : 'please choose compile type:'}); + const selection = await window.showQuickPick(['Incremental', 'Full'], { placeHolder: 'please choose compile type:' }); isFullCompile = selection !== 'Incremental'; } p.report({ message: 'Compiling workspace...' }); const start = new Date().getTime(); const res = await languageClient.sendRequest(CompileWorkspaceRequest.type, isFullCompile); const elapsed = new Date().getTime() - start; - const humanVisibleDelay = elapsed < 1000? 1000:0; + const humanVisibleDelay = elapsed < 1000 ? 1000 : 0; return new Promise((resolve, reject) => { setTimeout(() => { // set a timeout so user would still see the message when build time is short if (res === CompileWorkspaceStatus.SUCCEED) { @@ -288,7 +290,7 @@ export function activate(context: ExtensionContext): Promise { toggleItem(editor, item); })); - let provider: TextDocumentContentProvider = { + const provider: TextDocumentContentProvider = { onDidChange: jdtEventEmitter.event, provideTextDocumentContent: (uri: Uri, token: CancellationToken): Thenable => { return languageClient.sendRequest(ClassFileContentsRequest.type, { uri: uri.toString() }, token).then((v: string): string => { @@ -297,7 +299,7 @@ export function activate(context: ExtensionContext): Promise { } }; context.subscriptions.push(workspace.registerTextDocumentContentProvider('jdt', provider)); - if (extensions.onDidChange) {//Theia doesn't support this API yet + if (extensions.onDidChange) {// Theia doesn't support this API yet extensions.onDidChange(() => { onExtensionChange(extensions.all); }); @@ -305,12 +307,12 @@ export function activate(context: ExtensionContext): Promise { excludeProjectSettingsFiles(); }); - let cleanWorkspaceExists = fs.existsSync( path.join(workspacePath, cleanWorkspaceFileName)); + const cleanWorkspaceExists = fs.existsSync(path.join(workspacePath, cleanWorkspaceFileName)); if (cleanWorkspaceExists) { try { deleteDirectory(workspacePath); } catch (error) { - window.showErrorMessage('Failed to delete ' + workspacePath + ': ' + error); + window.showErrorMessage(`Failed to delete ${workspacePath}: ${error}`); } } @@ -318,7 +320,7 @@ export function activate(context: ExtensionContext): Promise { // Register commands here to make it available even when the language client fails context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath))); - let extensionPath = context.extensionPath; + const extensionPath = context.extensionPath; context.subscriptions.push(commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath))); context.subscriptions.push(commands.registerCommand(Commands.CLEAN_WORKSPACE, () => cleanWorkspace(workspacePath))); @@ -389,7 +391,7 @@ function setIncompleteClasspathSeverity(severity: string) { const config = getJavaConfiguration(); const section = 'errors.incompleteClasspath.severity'; config.update(section, severity, true).then( - () => console.log(section + ' globally set to ' + severity), + () => console.log(`${section} globally set to ${severity}`), (error) => console.log(error) ); } @@ -417,7 +419,7 @@ function setProjectConfigurationUpdate(languageClient: LanguageClient, uri: Uri, const st = FeatureStatus[status]; config.update(section, st).then( - () => console.log(section + ' set to ' + st), + () => console.log(`${section} set to ${st}`), (error) => console.log(error) ); if (status !== FeatureStatus.disabled) { @@ -442,16 +444,15 @@ function getTempWorkspace() { } function makeRandomHexString(length) { - let chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; + const chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; let result = ''; for (let i = 0; i < length; i++) { - let idx = Math.floor(chars.length * Math.random()); + const idx = Math.floor(chars.length * Math.random()); result += chars[idx]; } return result; } - async function cleanWorkspace(workspacePath) { const doIt = 'Restart and delete'; window.showWarningMessage('Are you sure you want to clean the Java language server workspace?', 'Cancel', doIt).then(selection => { @@ -465,8 +466,8 @@ async function cleanWorkspace(workspacePath) { function deleteDirectory(dir) { if (fs.existsSync(dir)) { - fs.readdirSync(dir).forEach(function (child) { - let entry = path.join(dir, child); + fs.readdirSync(dir).forEach((child) => { + const entry = path.join(dir, child); if (fs.lstatSync(entry).isDirectory()) { deleteDirectory(entry); } else { @@ -478,7 +479,7 @@ function deleteDirectory(dir) { } function openServerLogFile(workspacePath): Thenable { - let serverLogFile = path.join(workspacePath, '.metadata', '.log'); + const serverLogFile = path.join(workspacePath, '.metadata', '.log'); if (!serverLogFile) { return window.showWarningMessage('Java Language Server has not started logging.').then(() => false); } @@ -501,27 +502,27 @@ function openServerLogFile(workspacePath): Thenable { } async function openFormatter(extensionPath) { - let defaultFormatter = path.join(extensionPath, 'formatters', 'eclipse-formatter.xml'); - let formatterUrl: string = getJavaConfiguration().get('format.settings.url'); + const defaultFormatter = path.join(extensionPath, 'formatters', 'eclipse-formatter.xml'); + const formatterUrl: string = getJavaConfiguration().get('format.settings.url'); if (formatterUrl && formatterUrl.length > 0) { if (isRemote(formatterUrl)) { commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse(formatterUrl)); } else { - let document = getPath(formatterUrl); + const document = getPath(formatterUrl); if (document && fs.existsSync(document)) { return openDocument(extensionPath, document, defaultFormatter, null); } } } - let global = workspace.workspaceFolders === undefined; - let fileName = formatterUrl || 'eclipse-formatter.xml'; + const global = workspace.workspaceFolders === undefined; + const fileName = formatterUrl || 'eclipse-formatter.xml'; let file; let relativePath; if (!global) { file = path.join(workspace.workspaceFolders[0].uri.fsPath, fileName); relativePath = fileName; } else { - let root = path.join(extensionPath, '..', 'redhat.java'); + const root = path.join(extensionPath, '..', 'redhat.java'); if (!fs.existsSync(root)) { fs.mkdirSync(root); } @@ -542,7 +543,7 @@ async function openFormatter(extensionPath) { function getPath(f) { if (workspace.workspaceFolders && !path.isAbsolute(f)) { workspace.workspaceFolders.forEach(wf => { - let file = path.resolve(wf.uri.path, f); + const file = path.resolve(wf.uri.path, f); if (fs.existsSync(file)) { return file; } @@ -585,18 +586,18 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat }; await window.showInputBox(options).then(f => { if (f) { - let global = workspace.workspaceFolders === undefined; + const global = workspace.workspaceFolders === undefined; if (isRemote(f)) { commands.executeCommand(Commands.OPEN_BROWSER, Uri.parse(f)); getJavaConfiguration().update('format.settings.url', f, global); } else { if (!path.isAbsolute(f)) { - let fileName = f; + const fileName = f; if (!global) { f = path.join(workspace.workspaceFolders[0].uri.fsPath, fileName); relativePath = fileName; } else { - let root = path.join(extensionPath, '..', 'redhat.java'); + const root = path.join(extensionPath, '..', 'redhat.java'); if (!fs.existsSync(root)) { fs.mkdirSync(root); } @@ -607,14 +608,14 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat } getJavaConfiguration().update('format.settings.url', (relativePath !== null ? relativePath : f), global); if (!fs.existsSync(f)) { - let name = relativePath !== null ? relativePath : f; - let msg = '\'' + name + '\' does not exist. Do you want to create it?'; - let action = 'Yes'; + const name = relativePath !== null ? relativePath : f; + const msg = `' ${name} ' does not exist. Do you want to create it?`; + const action = 'Yes'; window.showWarningMessage(msg, action, 'No').then((selection) => { if (action === selection) { fs.createReadStream(defaultFormatter) - .pipe(fs.createWriteStream(f)) - .on('finish', () => openDocument(extensionPath, f, defaultFormatter, relativePath)); + .pipe(fs.createWriteStream(f)) + .on('finish', () => openDocument(extensionPath, f, defaultFormatter, relativePath)); } }); } else { @@ -626,20 +627,20 @@ async function addFormatter(extensionPath, formatterUrl, defaultFormatter, relat } export async function applyWorkspaceEdit(obj, languageClient) { - let edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); + const edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(obj); if (edit) { await workspace.applyEdit(edit); // By executing the range formatting command to correct the indention according to the VS Code editor settings. // More details, see: https://github.com/redhat-developer/vscode-java/issues/557 try { - let currentEditor = window.activeTextEditor; + const currentEditor = window.activeTextEditor; // If the Uri path of the edit change is not equal to that of the active editor, we will skip the range formatting if (currentEditor.document.uri.fsPath !== edit.entries()[0][0].fsPath) { return; } - let cursorPostion = currentEditor.selection.active; + const cursorPostion = currentEditor.selection.active; // Get the array of all the changes - let changes = edit.entries()[0][1]; + const changes = edit.entries()[0][1]; // Get the position information of the first change let startPosition = new Position(changes[0].range.start.line, changes[0].range.start.character); let lineOffsets = changes[0].newText.split(/\r?\n/).length - 1; @@ -662,7 +663,7 @@ export async function applyWorkspaceEdit(obj, languageClient) { } async function executeRangeFormat(editor, startPosition, lineOffset) { - let endPosition = editor.document.positionAt(editor.document.offsetAt(new Position(startPosition.line + lineOffset + 1, 0)) - 1); + const endPosition = editor.document.positionAt(editor.document.offsetAt(new Position(startPosition.line + lineOffset + 1, 0)) - 1); editor.selection = new Selection(startPosition, endPosition); await commands.executeCommand('editor.action.formatSelection'); } diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 2c226e19f..633001fc9 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -11,20 +11,20 @@ declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); export function prepareExecutable(requirements: RequirementsData, workspacePath, javaConfig): Executable { - let executable: Executable = Object.create(null); - let options: ExecutableOptions = Object.create(null); + const executable: Executable = Object.create(null); + const options: ExecutableOptions = Object.create(null); options.env = process.env; options.stdio = 'pipe'; executable.options = options; executable.command = path.resolve(requirements.java_home + '/bin/java'); executable.args = prepareParams(requirements, javaConfig, workspacePath); - console.log('Starting Java server with: ' + executable.command + ' ' + executable.args.join(' ')); + console.log(`Starting Java server with: ${executable.command} ${executable.args.join(' ')}`); return executable; } export function awaitServerConnection(port): Thenable { - let addr = parseInt(port); + const addr = parseInt(port); return new Promise((res, rej) => { - let server = net.createServer(stream => { + const server = net.createServer(stream => { server.close(); console.log('JDT LS connection established on port ' + addr); res({ reader: stream, writer: stream }); @@ -38,9 +38,8 @@ export function awaitServerConnection(port): Thenable { }); } - function prepareParams(requirements: RequirementsData, javaConfiguration, workspacePath): string[] { - let params: string[] = []; + const params: string[] = []; if (DEBUG) { params.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044,quiet=y'); // suspend=y is the default. Use this form if you need to debug the server startup code: @@ -61,12 +60,12 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp params.push('-Dlog.level=ALL'); } - let vmargs = javaConfiguration.get('jdt.ls.vmargs', ''); + const vmargs = javaConfiguration.get('jdt.ls.vmargs', ''); const encodingKey = '-Dfile.encoding='; if (vmargs.indexOf(encodingKey) < 0) { params.push(encodingKey + getJavaEncoding()); } - if (os.platform() == 'win32') { + if (os.platform() === 'win32') { const watchParentProcess = '-DwatchParentProcess='; if (vmargs.indexOf(watchParentProcess) < 0) { params.push(watchParentProcess + 'false'); @@ -74,15 +73,15 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp } parseVMargs(params, vmargs); - let server_home: string = path.resolve(__dirname, '../server'); - let launchersFound: Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', { cwd: server_home }); + const serverHome: string = path.resolve(__dirname, '../server'); + const launchersFound: Array = glob.sync('**/plugins/org.eclipse.equinox.launcher_*.jar', { cwd: serverHome }); if (launchersFound.length) { - params.push('-jar'); params.push(path.resolve(server_home, launchersFound[0])); + params.push('-jar'); params.push(path.resolve(serverHome, launchersFound[0])); } else { return null; } - //select configuration directory according to OS + // select configuration directory according to OS let configDir = 'config_win'; if (process.platform === 'darwin') { configDir = 'config_mac'; @@ -94,28 +93,27 @@ function prepareParams(requirements: RequirementsData, javaConfiguration, worksp return params; } - function startedInDebugMode(): boolean { - let args = (process as any).execArgv; + const args = (process as any).execArgv; if (args) { return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg) || /^--inspect-brk=?/.test(arg)); } return false; } -//exported for tests +// exported for tests export function parseVMargs(params: any[], vmargsLine: string) { if (!vmargsLine) { return; } - let vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); + const vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g); if (vmargs === null) { return; } vmargs.forEach(arg => { - //remove all standalone double quotes - arg = arg.replace(/(\\)?"/g, function ($0, $1) { return ($1 ? $0 : ''); }); - //unescape all escaped double quotes + // remove all standalone double quotes + arg = arg.replace(/(\\)?"/g, ($0, $1) => { return ($1 ? $0 : ''); }); + // unescape all escaped double quotes arg = arg.replace(/(\\)"/g, '"'); if (params.indexOf(arg) < 0) { params.push(arg); diff --git a/src/plugin.ts b/src/plugin.ts index b15cf98df..b930e230e 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -9,12 +9,12 @@ let existingExtensions: Array; export function collectJavaExtensions(extensions: vscode.Extension[]): string[] { const result = []; if (extensions && extensions.length) { - for (let extension of extensions) { - let contributesSection = extension.packageJSON['contributes']; + for (const extension of extensions) { + const contributesSection = extension.packageJSON['contributes']; if (contributesSection) { - let javaExtensions = contributesSection['javaExtensions']; + const javaExtensions = contributesSection['javaExtensions']; if (Array.isArray(javaExtensions) && javaExtensions.length) { - for (let javaExtensionPath of javaExtensions) { + for (const javaExtensionPath of javaExtensions) { result.push(path.resolve(extension.extensionPath, javaExtensionPath)); } } @@ -32,7 +32,7 @@ export function onExtensionChange(extensions: vscode.Extension[]) { } const oldExtensions = new Set(existingExtensions.slice()); const newExtensions = collectJavaExtensions(extensions); - let hasChanged = ( oldExtensions.size != newExtensions.length); + let hasChanged = ( oldExtensions.size !== newExtensions.length); if (!hasChanged) { for (const newExtension of newExtensions) { if (!oldExtensions.has(newExtension)) { diff --git a/src/protocol.ts b/src/protocol.ts index b87474ffd..06e4a9440 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -73,15 +73,15 @@ export interface ActionableMessage { } export namespace StatusNotification { - export const type = new NotificationType('language/status'); + export const type = new NotificationType('language/status'); } export namespace ProgressReportNotification { - export const type = new NotificationType('language/progressReport'); + export const type = new NotificationType('language/progressReport'); } export namespace ClassFileContentsRequest { - export const type= new RequestType ('java/classFileContents'); + export const type = new RequestType ('java/classFileContents'); } export namespace ProjectConfigurationUpdateRequest { @@ -100,7 +100,6 @@ export namespace ExecuteClientCommandRequest { export const type = new RequestType('workspace/executeClientCommand'); } - export namespace SendNotificationRequest { export const type = new RequestType('workspace/notify'); } @@ -206,4 +205,4 @@ export interface GenerateToStringParams { export namespace GenerateToStringRequest { export const type = new RequestType('java/generateToString'); -} \ No newline at end of file +} diff --git a/src/requirements.ts b/src/requirements.ts index 57c2c99c0..0c6a684d0 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -30,9 +30,9 @@ interface ErrorData { * */ export async function resolveRequirements(): Promise { - let java_home = await checkJavaRuntime(); - let javaVersion = await checkJavaVersion(java_home); - return Promise.resolve({ 'java_home': java_home, 'java_version': javaVersion }); + const javaHome = await checkJavaRuntime(); + const javaVersion = await checkJavaVersion(javaHome); + return Promise.resolve({ java_home: javaHome, java_version: javaVersion }); } function checkJavaRuntime(): Promise { @@ -60,14 +60,14 @@ function checkJavaRuntime(): Promise { if (pathExists.sync(path.resolve(javaHome, JAVAC_FILENAME))) { msg = `'bin' should be removed from the ${source} (${javaHome})`; } else { - msg = `The ${source} (${javaHome}) does not point to a JDK.` + msg = `The ${source} (${javaHome}) does not point to a JDK.`; } invalidJavaHome(reject, msg); } return resolve(javaHome); } - //No settings, let's try to detect as last resort. - findJavaHome(function (err, home) { + // No settings, let's try to detect as last resort. + findJavaHome((err, home) => { if (err) { openJDKDownload(reject, 'Java runtime (JDK, not JRE) could not be located'); } @@ -83,10 +83,10 @@ function readJavaConfig(): string { return config.get('java.home', null); } -function checkJavaVersion(java_home: string): Promise { +function checkJavaVersion(javaHome: string): Promise { return new Promise((resolve, reject) => { - cp.execFile(java_home + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { - let javaVersion = parseMajorVersion(stderr); + cp.execFile(javaHome + '/bin/java', ['-version'], {}, (error, stdout, stderr) => { + const javaVersion = parseMajorVersion(stderr); if (javaVersion < 8) { openJDKDownload(reject, 'Java 8 or more recent is required to run. Please download and install a recent JDK'); } else { @@ -103,12 +103,12 @@ export function parseMajorVersion(content: string): number { return 0; } let version = match[1]; - //Ignore '1.' prefix for legacy Java versions + // Ignore '1.' prefix for legacy Java versions if (version.startsWith('1.')) { version = version.substring(2); } - //look into the interesting bits now + // look into the interesting bits now regexp = /\d+/g; match = regexp.exec(version); let javaVersion = 0; diff --git a/src/settings.ts b/src/settings.ts index 4cdafc72a..3cf0b2562 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -5,7 +5,6 @@ import { LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { getJavaConfiguration } from './utils'; - const DEFAULT_HIDDEN_FILES: string[] = ['**/.classpath', '**/.project', '**/.settings', '**/.factorypath']; const changeItem = { @@ -23,14 +22,14 @@ export function onConfigurationChange() { if (!params.affectsConfiguration('java')) { return; } - let newConfig = getJavaConfiguration(); + const newConfig = getJavaConfiguration(); if (newConfig.get(EXCLUDE_FILE_CONFIG)) { excludeProjectSettingsFiles(); } if (hasJavaConfigChanged(oldConfig, newConfig)) { - let msg = 'Java Language Server configuration changed, please restart VS Code.'; - let action = 'Restart Now'; - let restartId = Commands.RELOAD_WINDOW; + const msg = 'Java Language Server configuration changed, please restart VS Code.'; + const action = 'Restart Now'; + const restartId = Commands.RELOAD_WINDOW; oldConfig = newConfig; window.showWarningMessage(msg, action).then((selection) => { if (action === selection) { @@ -86,7 +85,7 @@ function excludeProjectSettingsFilesForWorkspace(workspaceUri: Uri) { config.update('exclude', excludedInspectedValue.workspaceValue, ConfigurationTarget.Workspace); } else if (result === changeItem.never) { const storeInWorkspace = getJavaConfiguration().inspect(EXCLUDE_FILE_CONFIG).workspaceValue; - getJavaConfiguration().update(EXCLUDE_FILE_CONFIG, false, storeInWorkspace?ConfigurationTarget.Workspace:ConfigurationTarget.Global); + getJavaConfiguration().update(EXCLUDE_FILE_CONFIG, false, storeInWorkspace?ConfigurationTarget.Workspace: ConfigurationTarget.Global); } }); } @@ -105,13 +104,13 @@ function hasConfigKeyChanged(key, oldConfig, newConfig) { export function getJavaEncoding(): string { const config = workspace.getConfiguration(); - const languageConfig = config.get('[java]') + const languageConfig = config.get('[java]'); let javaEncoding = null; - if (languageConfig != null) { + if (languageConfig) { javaEncoding = languageConfig['files.encoding']; } - if (javaEncoding == null) { + if (!javaEncoding) { javaEncoding = config.get('files.encoding', 'UTF-8'); } return javaEncoding; -} \ No newline at end of file +} diff --git a/src/sourceAction.ts b/src/sourceAction.ts index a7d437291..5b9ce55ae 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -1,6 +1,6 @@ 'use strict'; -import { commands, window, ExtensionContext, Range, ViewColumn, Uri, Disposable} from 'vscode'; +import { commands, window, ExtensionContext, Range, ViewColumn, Uri, Disposable } from 'vscode'; import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; @@ -117,7 +117,7 @@ function registerChooseImportCommand(context: ExtensionContext): void { const chosen: ImportCandidate[] = []; const fileUri: Uri = Uri.parse(uri); for (let i = 0; i < selections.length; i++) { - const selection : ImportSelection = selections[i]; + const selection: ImportSelection = selections[i]; // Move the cursor to the code line with ambiguous import choices. await window.showTextDocument(fileUri, { preserveFocus: true, selection: selection.range, viewColumn: ViewColumn.One }); const candidates: ImportCandidate[] = selection.candidates; diff --git a/test/extension.test.ts b/test/extension.test.ts index c9ad7b20e..eac830f1d 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -5,7 +5,7 @@ import * as path from 'path'; import * as plugin from '../src/plugin'; import * as java from '../src/javaServerStarter'; import * as requirements from '../src/requirements'; -import {Commands} from '../src/commands'; +import { Commands } from '../src/commands'; suite('Java Language Extension', () => { @@ -48,16 +48,16 @@ suite('Java Language Extension', () => { Commands.CHOOSE_IMPORTS, Commands.GENERATE_TOSTRING_PROMPT ]; - let foundJavaCommands = commands.filter(function(value){ + const foundJavaCommands = commands.filter(function(value) { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); }); - assert.equal(foundJavaCommands.length ,JAVA_COMMANDS.length, 'Some Java commands are not registered properly or a new command is not added to the test'); + assert.equal(foundJavaCommands.length , JAVA_COMMANDS.length, 'Some Java commands are not registered properly or a new command is not added to the test'); }); }); test('should parse VM arguments', function () { - let userArgs = '-Xmx512m -noverify -Dfoo=\"something with blank\" '; - let vmArgs = ['-noverify', 'foo']; + const userArgs = '-Xmx512m -noverify -Dfoo=\"something with blank\" '; + const vmArgs = ['-noverify', 'foo']; java.parseVMargs(vmArgs, userArgs); @@ -69,8 +69,8 @@ suite('Java Language Extension', () => { }); test('should parse VM arguments with spaces', function () { - let userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"'; - let vmArgs = []; + const userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"'; + const vmArgs = []; java.parseVMargs(vmArgs, userArgs); @@ -98,7 +98,7 @@ suite('Java Language Extension', () => { }); test('should parse Java version', function () { - //Test boundaries + // Test boundaries assert.equal(requirements.parseMajorVersion(null), 0); assert.equal(requirements.parseMajorVersion(''), 0); assert.equal(requirements.parseMajorVersion('foo'), 0); @@ -106,7 +106,7 @@ suite('Java Language Extension', () => { assert.equal(requirements.parseMajorVersion('version ""'), 0); assert.equal(requirements.parseMajorVersion('version "NaN"'), 0); - //Test the real stuff + // Test the real stuff assert.equal(requirements.parseMajorVersion('version "1.7"'), 7); assert.equal(requirements.parseMajorVersion('version "1.8.0_151"'), 8); assert.equal(requirements.parseMajorVersion('version "9"'), 9); diff --git a/tsconfig.json b/tsconfig.json index 4f5c0d087..e3f76fb10 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,11 +7,12 @@ "module": "commonjs", "moduleResolution": "node", "outDir": "out", - "sourceMap": true + "sourceMap": true, + "plugins": [{ "name": "typescript-tslint-plugin" }] }, "exclude": [ "node_modules", "server", ".vscode-test" ] -} \ No newline at end of file +} diff --git a/tslint.json b/tslint.json index f17c0afe2..7898c2182 100644 --- a/tslint.json +++ b/tslint.json @@ -1,22 +1,57 @@ { - "defaultSeverity": "error", - "rules": { - "no-unused-expression": true, - "no-duplicate-variable": true, - "curly": true, - "class-name": true, - "semicolon": true, - "triple-equals": true, - "quotemark": [true, "single", "avoid-escape"], - "no-debugger": true, - "no-empty": true, - "no-var-keyword": true, - "no-unsafe-finally": true, - "new-parens":true, - "no-duplicate-imports": true, - "deprecation":true, - "no-unsafe-any":true, - "no-string-throw":true, - "no-require-imports": true - } + "rules": { + "encoding": true, + "only-arrow-functions": [ + true, "allow-declarations", "allow-named-functions" + ], + "no-var-keyword": true, + "object-literal-key-quotes": [ + true, "as-needed" + ], + "comment-format": [true, "check-space"], + "curly": [true, "ignore-same-line"], + "triple-equals": true, + "prefer-const": true, + "prefer-for-of": true, + "variable-name": [ + true, + "allow-leading-underscore", + "allow-pascal-case", + "ban-keywords", + "check-format" + ], + "switch-final-break": [true, "always"], + "prefer-template": [true, "allow-single-concat"], + "semicolon": [true, "always"], + "no-consecutive-blank-lines": true, + "no-boolean-literal-compare": true, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-module", + "check-separator", + "check-type", + "check-preblock" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ], + "no-trailing-whitespace": true, + "no-debugger": true + } } From bc2909b43204a7522329870920078280d29ebce6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 15 Apr 2019 23:15:04 -0400 Subject: [PATCH 0407/1435] Add changelog for 0.43.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6afba4244..57bcdb972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log + +## 0.43.0 (April 16th, 2019) +* enhancement - optimize server initialization. See [#869](https://github.com/redhat-developer/vscode-java/pull/869). +* enhancement - download Java sources lazily for Maven projects. See [#870](https://github.com/redhat-developer/vscode-java/pull/870). +* enhancement - added `Generate toString()...` source action. See [#873](https://github.com/redhat-developer/vscode-java/pull/873). +* bug fix - completion cache resets after file recompilation resulting in slow code completion. See [JLS#847](https://github.com/eclipse/eclipse.jdt.ls/issues/847). + ## 0.42.1 (April 1st, 2019) * bug fix - fixed java.lang.UnsupportedClassVersionError when trying to run/test standalone code. See [#801](https://github.com/redhat-developer/vscode-java/issues/801). From b2db0b14b5fc66585171b8d6ce5e8a146f349f9b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 16 Apr 2019 18:22:27 -0400 Subject: [PATCH 0408/1435] Update changelog for the 0.43.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57bcdb972..17a420e4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ # Change Log -## 0.43.0 (April 16th, 2019) +## 0.43.0 (April 17th, 2019) * enhancement - optimize server initialization. See [#869](https://github.com/redhat-developer/vscode-java/pull/869). * enhancement - download Java sources lazily for Maven projects. See [#870](https://github.com/redhat-developer/vscode-java/pull/870). * enhancement - added `Generate toString()...` source action. See [#873](https://github.com/redhat-developer/vscode-java/pull/873). +* enhancement - show more detailed progress report on startup. See [#883](https://github.com/redhat-developer/vscode-java/issues/883). * bug fix - completion cache resets after file recompilation resulting in slow code completion. See [JLS#847](https://github.com/eclipse/eclipse.jdt.ls/issues/847). +* bug fix - fix jar detection on windows, for invisible projects. See [#882](https://github.com/redhat-developer/vscode-java/issues/882). ## 0.42.1 (April 1st, 2019) * bug fix - fixed java.lang.UnsupportedClassVersionError when trying to run/test standalone code. See [#801](https://github.com/redhat-developer/vscode-java/issues/801). From cf34bd31df0918ef38717753298c96d385beba6f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 29 Apr 2019 16:49:53 -0400 Subject: [PATCH 0409/1435] Upversion to 0.44.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3aa44f582..f8caad710 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.43.0", + "version": "0.44.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 836b13f89..a121dc879 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.43.0", + "version": "0.44.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 668699636953a3c644f18154d011164cbd77c4cc Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Mon, 29 Apr 2019 14:09:56 +0800 Subject: [PATCH 0410/1435] Enable advanced "Generate getters and setters..." source action Signed-off-by: Jinbo Wang --- src/commands.ts | 4 ++++ src/extension.ts | 3 ++- src/protocol.ts | 20 ++++++++++++++++++++ src/sourceAction.ts | 40 +++++++++++++++++++++++++++++++++++++++- test/extension.test.ts | 3 ++- 5 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index 71517710a..4f92c2894 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -126,4 +126,8 @@ export namespace Commands { * Generate toString(). */ export const GENERATE_TOSTRING_PROMPT = 'java.action.generateToStringPrompt'; + /** + * Generate Getters and Setters. + */ + export const GENERATE_ACCESSORS_PROMPT = 'java.action.generateAccessorsPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index e8523d819..c3962cd58 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -68,7 +68,8 @@ export function activate(context: ExtensionContext): Promise { overrideMethodsPromptSupport: true, hashCodeEqualsPromptSupport: true, advancedOrganizeImportsSupport: true, - generateToStringPromptSupport: true + generateToStringPromptSupport: true, + advancedGenerateAccessorsSupport: true, }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index 06e4a9440..3b15c2a2e 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -206,3 +206,23 @@ export interface GenerateToStringParams { export namespace GenerateToStringRequest { export const type = new RequestType('java/generateToString'); } + +export interface AccessorField { + fieldName: string; + isStatic: boolean; + generateGetter: boolean; + generateSetter: boolean; +} + +export namespace ResolveUnimplementedAccessorsRequest { + export const type = new RequestType('java/resolveUnimplementedAccessors'); +} + +export interface GenerateAccessorsParams { + context: CodeActionParams; + accessors: AccessorField[]; +} + +export namespace GenerateAccessorsRequest { + export const type = new RequestType('java/generateAccessors'); +} diff --git a/src/sourceAction.ts b/src/sourceAction.ts index 5b9ce55ae..e5b346030 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -5,7 +5,7 @@ import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest, -OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableField } from './protocol'; +OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableField, ResolveUnimplementedAccessorsRequest, GenerateAccessorsRequest } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerOverrideMethodsCommand(languageClient, context); @@ -13,6 +13,7 @@ export function registerCommands(languageClient: LanguageClient, context: Extens registerOrganizeImportsCommand(languageClient, context); registerChooseImportCommand(context); registerGenerateToStringCommand(languageClient, context); + registerGenerateAccessorsCommand(languageClient, context); } function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { @@ -202,3 +203,40 @@ function registerGenerateToStringCommand(languageClient: LanguageClient, context applyWorkspaceEdit(workspaceEdit, languageClient); })); } + +function registerGenerateAccessorsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.GENERATE_ACCESSORS_PROMPT, async (params: CodeActionParams) => { + const accessors = await languageClient.sendRequest(ResolveUnimplementedAccessorsRequest.type, params); + if (!accessors || !accessors.length) { + return; + } + + const accessorItems = accessors.map((accessor) => { + const description = []; + if (accessor.generateGetter) { + description.push('getter'); + } + if (accessor.generateSetter) { + description.push('setter'); + } + return { + label: accessor.fieldName, + description: (accessor.isStatic?'static ':'')+ description.join(', '), + originalField: accessor, + }; + }); + const selectedAccessors = await window.showQuickPick(accessorItems, { + canPickMany: true, + placeHolder: 'Select the fields to generate getters and setters.' + }); + if (!selectedAccessors.length) { + return; + } + + const workspaceEdit = await languageClient.sendRequest(GenerateAccessorsRequest.type, { + context: params, + accessors: selectedAccessors.map((item) => item.originalField), + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + })); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index eac830f1d..3c963246a 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -46,7 +46,8 @@ suite('Java Language Extension', () => { Commands.OPEN_JSON_SETTINGS, Commands.ORGANIZE_IMPORTS, Commands.CHOOSE_IMPORTS, - Commands.GENERATE_TOSTRING_PROMPT + Commands.GENERATE_TOSTRING_PROMPT, + Commands.GENERATE_ACCESSORS_PROMPT ]; const foundJavaCommands = commands.filter(function(value) { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 5bc3ebc709a535a80a172a14d54d9afe894a43f3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 2 May 2019 15:35:23 -0400 Subject: [PATCH 0411/1435] Changelog for the 0.44.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17a420e4d..96c0fc188 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Change Log +## 0.44.0 (May 2nd, 2019) +* enhancement - show more progress details of workspace jobs. See [#896](https://github.com/redhat-developer/vscode-java/issues/896). +* enhancement - added advanced `Generate getters and setters...` source action. See [#907](https://github.com/redhat-developer/vscode-java/pull/907). +* enhancement - batch Maven project imports when available ram < 1.5GB and number of projects > 50, to reduce memory consumption. See [JLS#982](https://github.com/eclipse/eclipse.jdt.ls/issues/982). +* enhancement - tentative workaround for poor resource refresh performance on Windows. See [JLS#1001](https://github.com/eclipse/eclipse.jdt.ls/pull/1001). +* enhancement - log resource path and line number of build errors. See [JLS#1013](https://github.com/eclipse/eclipse.jdt.ls/issues/1013). +* bug fix - update classpath when jar files are modified. See [#775](https://github.com/redhat-developer/vscode-java/issues/775). +* bug fix - remove ellipsis on `Create getter and setter for` label. See [#908](https://github.com/redhat-developer/vscode-java/issues/908). +* bug fix - fixed NPE when peeking implementation on generic types. See [JLS#1004](https://github.com/eclipse/eclipse.jdt.ls/issues/1004). +* bug fix - only return signature help on method invocation and javadoc reference. See [JLS#1009](https://github.com/eclipse/eclipse.jdt.ls/issues/1009). +* bug fix - properly detect active signature in signature help. See [JLS#1017](https://github.com/eclipse/eclipse.jdt.ls/issues/1017). +* bug fix - use proper kinds for interfaces, enums and constants, in completion and document symbols. See [JLS#1012](https://github.com/eclipse/eclipse.jdt.ls/issues/1012). ## 0.43.0 (April 17th, 2019) * enhancement - optimize server initialization. See [#869](https://github.com/redhat-developer/vscode-java/pull/869). From 5c01423a2cb7cf7eb19a4da40bdcd510f3d12535 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 7 May 2019 11:33:44 -0400 Subject: [PATCH 0412/1435] Rework command and extension activation conditions - early registration of `open output command`. Fixes #914 - activate extension when .classpath is found at the root - only activate some commands in the palette if the server is started - removed extension activation by commands needing the server to be started in the 1st place - fixed check for non-existing server log, in the `open server log` command Signed-off-by: Fred Bricon --- package.json | 21 ++++++++++++++------- src/extension.ts | 9 +++++---- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index a121dc879..d8442a54b 100644 --- a/package.json +++ b/package.json @@ -27,14 +27,9 @@ ], "activationEvents": [ "onLanguage:java", - "onCommand:java.show.references", - "onCommand:java.show.implementations", - "onCommand:java.open.output", - "onCommand:java.open.serverLog", - "onCommand:java.execute.workspaceCommand", - "onCommand:java.projectConfiguration.update", "workspaceContains:pom.xml", - "workspaceContains:build.gradle" + "workspaceContains:build.gradle", + "workspaceContains:.classpath" ], "main": "./dist/extension", "contributes": { @@ -439,6 +434,18 @@ } ], "commandPalette": [ + { + "command": "java.projectConfiguration.update", + "when": "javaLSReady" + }, + { + "command": "java.workspace.compile", + "when": "javaLSReady" + }, + { + "command": "java.project.listSourcePaths", + "when": "javaLSReady" + }, { "command": "java.project.updateSourceAttachment", "when": "false" diff --git a/src/extension.ts b/src/extension.ts index c3962cd58..90345b1fb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -105,6 +105,7 @@ export function activate(context: ExtensionContext): Promise { // Create the language client and start the client. languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); languageClient.registerProposedFeatures(); + languageClient.onReady().then(() => { languageClient.onNotification(StatusNotification.type, (report) => { switch (report.type) { @@ -186,9 +187,6 @@ export function activate(context: ExtensionContext): Promise { return commands.executeCommand(params.command, ...params.arguments); }); - context.subscriptions.push(commands.registerCommand(Commands.OPEN_OUTPUT, () => { - languageClient.outputChannel.show(ViewColumn.Three); - })); context.subscriptions.push(commands.registerCommand(Commands.SHOW_JAVA_REFERENCES, (uri: string, position: LSPosition, locations: LSLocation[]) => { commands.executeCommand(Commands.SHOW_REFERENCES, Uri.parse(uri), languageClient.protocol2CodeConverter.asPosition(position), locations.map(languageClient.protocol2CodeConverter.asLocation)); })); @@ -319,6 +317,9 @@ export function activate(context: ExtensionContext): Promise { languageClient.start(); // Register commands here to make it available even when the language client fails + + context.subscriptions.push(commands.registerCommand(Commands.OPEN_OUTPUT, () => languageClient.outputChannel.show(ViewColumn.Three))); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath))); const extensionPath = context.extensionPath; @@ -481,7 +482,7 @@ function deleteDirectory(dir) { function openServerLogFile(workspacePath): Thenable { const serverLogFile = path.join(workspacePath, '.metadata', '.log'); - if (!serverLogFile) { + if (!fs.existsSync(serverLogFile)) { return window.showWarningMessage('Java Language Server has not started logging.').then(() => false); } From 91e7e42ffeb2f00ae801c124bdfc030d12279ae5 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 9 May 2019 11:12:37 -0400 Subject: [PATCH 0413/1435] Ensure build uses latest JDK Signed-off-by: Fred Bricon --- Jenkinsfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 2f9fda581..117d3556f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,6 +14,11 @@ def buildVscodeExtension(){ node('rhel7'){ stage 'Build JDT LS' + + env.JAVA_HOME="${tool 'openjdk-1.8'}" + env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" + sh 'java -version' + git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true -P!jboss-maven-repos,!redhat-ga-repository,!redhat-ea-repository" From a1519cfa0d0231e9fe62df5c1d1301bd31e67a14 Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Wed, 8 May 2019 19:33:05 +0200 Subject: [PATCH 0414/1435] Optionally disable loading gradle from gradle wrapper Signed-off-by: Snjezana Peco --- README.md | 4 ++++ package.json | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1629616a..4d2b5e8b4 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,10 @@ The following settings are supported: * `java.codeGeneration.toString.listArrayContents`: List contents of arrays instead of using native toString(). Defaults to `true`. * `java.codeGeneration.toString.limitElements`: Limit number of items in arrays/collections/maps to list, if 0 then list all. Defaults to `0`. +*New in 0.45.0:* +* `java.import.gradle.wrapper.enabled`: Enable/disable the Gradle wrapper. +* `java.import.gradle.version`: Gradle version, used if the gradle wrapper is missing or disabled. + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index d8442a54b..7a6cd0d17 100644 --- a/package.json +++ b/package.json @@ -114,16 +114,28 @@ "description": "Traces the communication between VS Code and the Java language server.", "scope": "window" }, + "java.import.maven.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable the Maven importer.", + "scope": "window" + }, "java.import.gradle.enabled": { "type": "boolean", "default": true, "description": "Enable/disable the Gradle importer.", "scope": "window" }, - "java.import.maven.enabled": { + "java.import.gradle.wrapper.enabled": { "type": "boolean", "default": true, - "description": "Enable/disable the Maven importer.", + "description": "Enable/disable the Gradle wrapper.", + "scope": "window" + }, + "java.import.gradle.version": { + "type": "string", + "default": null, + "description": "Gradle version, used if the gradle wrapper is missing or disabled.", "scope": "window" }, "java.maven.downloadSources": { From b502b193248483380b6c78b5d3c57a59048df34b Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 14 May 2019 21:16:54 -0400 Subject: [PATCH 0415/1435] Changelog for the 0.45.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96c0fc188..1c1388271 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 0.45.0 (May 15th, 2019) +* enhancement - optionally disable loading Gradle from wrapper and use a specific Gradle version. See [#875](https://github.com/redhat-developer/vscode-java/issues/875). +* enhancement - added `Assign parameters to new fields` source actions. See [JLS#167](https://github.com/eclipse/eclipse.jdt.ls/issues/167). +* enhancement - added code action for adding non existing constructor from super class. See [JLS#767](https://github.com/eclipse/eclipse.jdt.ls/issues/767). +* enhancement - use the `java.codeGeneration.generateComments` preference to generate comments for getter and setter. See [JLS#1024](https://github.com/eclipse/eclipse.jdt.ls/pull/1024). +* bug fix - fixed extension activation conditions causing some issues. See [#914](https://github.com/redhat-developer/vscode-java/issues/914) and [#915](https://github.com/redhat-developer/vscode-java/pull/915). +* bug fix - fixed failing build caused by a bad formatter URL. See [#916](https://github.com/redhat-developer/vscode-java/issues/916). +* bug fix - fixed NPE when closing a renamed file. See [JLS#993](https://github.com/eclipse/eclipse.jdt.ls/issues/993). +* bug fix - fixed Signature Help for constructors. See [JLS#1030](https://github.com/eclipse/eclipse.jdt.ls/issues/1030). + ## 0.44.0 (May 2nd, 2019) * enhancement - show more progress details of workspace jobs. See [#896](https://github.com/redhat-developer/vscode-java/issues/896). * enhancement - added advanced `Generate getters and setters...` source action. See [#907](https://github.com/redhat-developer/vscode-java/pull/907). From 3c6c2a5ca92a6ebe6ede990b71aa7d2543a74422 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 15 May 2019 18:18:12 -0400 Subject: [PATCH 0416/1435] Forgot to upversion to 0.45.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8caad710..31158451d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.44.0", + "version": "0.45.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7a6cd0d17..897edbc9c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.44.0", + "version": "0.45.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From f3f7d7ef6716e547e8c04aca7997baa8909876bd Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 May 2019 10:56:32 -0400 Subject: [PATCH 0417/1435] Upversion to 0.46.0 Signed-off-by: Fred Bricon --- README.md | 11 ++++------- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4d2b5e8b4..0e0df4500 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,8 @@ The following settings are supported: * `java.format.enabled` : Enable/disable the default Java formatter. * `java.contentProvider.preferred` : Preferred content provider (see 3rd party decompilers available in [vscode-java-decompiler](https://github.com/dgileadi/vscode-java-decompiler)). * `java.import.gradle.enabled` : Enable/disable the Gradle importer. +* `java.import.gradle.wrapper.enabled`: Enable/disable the Gradle wrapper. +* `java.import.gradle.version`: Gradle version, used if the gradle wrapper is missing or disabled. * `java.import.maven.enabled` : Enable/disable the Maven importer. * `java.autobuild.enabled` : Enable/disable the 'auto build'. * `java.maxConcurrentBuilds`: Set max simultaneous project builds. @@ -95,12 +97,10 @@ The following settings are supported: * `java.completion.guessMethodArguments` : When set to true, method arguments are guessed when a method is selected from as list of code assist proposals. * `java.completion.enabled` : Enable/disable code completion support. * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. -* `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. -* `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. - -*New in 0.43.0:* * `java.maven.downloadSources`: Enable/disable eager download of Maven source artifacts. +* `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. +* `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. * `java.codeGeneration.useBlocks`: Use blocks in 'if' statements when generating the methods. Defaults to `false`. * `java.codeGeneration.generateComments`: Generate method comments when generating the methods. Defaults to `false`. * `java.codeGeneration.toString.template`: The template for generating the toString method. Defaults to `${object.className} [${member.name()}=${member.value}, ${otherMembers}]`. @@ -109,9 +109,6 @@ The following settings are supported: * `java.codeGeneration.toString.listArrayContents`: List contents of arrays instead of using native toString(). Defaults to `true`. * `java.codeGeneration.toString.limitElements`: Limit number of items in arrays/collections/maps to list, if 0 then list all. Defaults to `0`. -*New in 0.45.0:* -* `java.import.gradle.wrapper.enabled`: Enable/disable the Gradle wrapper. -* `java.import.gradle.version`: Gradle version, used if the gradle wrapper is missing or disabled. Troubleshooting =============== diff --git a/package-lock.json b/package-lock.json index 31158451d..4bad5b7c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.45.0", + "version": "0.46.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 897edbc9c..3a01bdb96 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.45.0", + "version": "0.46.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 8437dbafbb1d3cc9b0aa5e966368f2eed42ded91 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 16 May 2019 11:11:31 -0400 Subject: [PATCH 0418/1435] Skip jdt.ls tests as it's already tested in jdt.ls's own build process Signed-off-by: Fred Bricon --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 117d3556f..c05591030 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,7 +20,7 @@ node('rhel7'){ sh 'java -version' git url: 'https://github.com/eclipse/eclipse.jdt.ls.git' - sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true -P!jboss-maven-repos,!redhat-ga-repository,!redhat-ea-repository" + sh "./mvnw clean verify -B -U -e -Pserver-distro -Dtycho.disableP2Mirrors=true -DskipTests -P!jboss-maven-repos,!redhat-ga-repository,!redhat-ea-repository" def files = findFiles(glob: '**/org.eclipse.jdt.ls.product/distro/**.tar.gz') stash name: 'server_distro', includes :files[0].path From e93092ca61cd3e96228b684ad29d7464a47465d7 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 14 May 2019 17:35:25 +0800 Subject: [PATCH 0419/1435] Enable Source Action: Generate Constructors Signed-off-by: Jinbo Wang --- src/commands.ts | 4 +++ src/extension.ts | 1 + src/protocol.ts | 35 +++++++++++++++++++++---- src/sourceAction.ts | 59 ++++++++++++++++++++++++++++++++++++++++-- test/extension.test.ts | 3 ++- 5 files changed, 94 insertions(+), 8 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index 4f92c2894..8ba67a83c 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -130,4 +130,8 @@ export namespace Commands { * Generate Getters and Setters. */ export const GENERATE_ACCESSORS_PROMPT = 'java.action.generateAccessorsPrompt'; + /** + * Generate Constructors. + */ + export const GENERATE_CONSTRUCTORS_PROMPT = 'java.action.generateConstructorsPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 90345b1fb..524e59217 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -70,6 +70,7 @@ export function activate(context: ExtensionContext): Promise { advancedOrganizeImportsSupport: true, generateToStringPromptSupport: true, advancedGenerateAccessorsSupport: true, + generateConstructorsPromptSupport: true, }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index 3b15c2a2e..9aa562333 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -148,7 +148,7 @@ export namespace AddOverridableMethodsRequest { export const type = new RequestType('java/addOverridableMethods'); } -export interface VariableField { +export interface VariableBinding { bindingKey: string; name: string; type: string; @@ -156,7 +156,7 @@ export interface VariableField { export interface CheckHashCodeEqualsResponse { type: string; - fields: VariableField[]; + fields: VariableBinding[]; existingMethods: string[]; } @@ -166,7 +166,7 @@ export namespace CheckHashCodeEqualsStatusRequest { export interface GenerateHashCodeEqualsParams { context: CodeActionParams; - fields: VariableField[]; + fields: VariableBinding[]; regenerate: boolean; } @@ -190,7 +190,7 @@ export interface ImportSelection { export interface CheckToStringResponse { type: string; - fields: VariableField[]; + fields: VariableBinding[]; exists: boolean; } @@ -200,7 +200,7 @@ export namespace CheckToStringStatusRequest { export interface GenerateToStringParams { context: CodeActionParams; - fields: VariableField[]; + fields: VariableBinding[]; } export namespace GenerateToStringRequest { @@ -226,3 +226,28 @@ export interface GenerateAccessorsParams { export namespace GenerateAccessorsRequest { export const type = new RequestType('java/generateAccessors'); } + +export interface MethodBinding { + bindingKey: string; + name: string; + parameters: string[]; +} + +export interface CheckConstructorsResponse { + constructors: MethodBinding[]; + fields: VariableBinding[]; +} + +export namespace CheckConstructorStatusRequest { + export const type = new RequestType('java/checkConstructorsStatus'); +} + +export interface GenerateConstructorsParams { + context: CodeActionParams; + constructors: MethodBinding[]; + fields: VariableBinding[]; +} + +export namespace GenerateConstructorsRequest { + export const type = new RequestType('java/generateConstructors'); +} diff --git a/src/sourceAction.ts b/src/sourceAction.ts index e5b346030..88bc1b8e9 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -5,7 +5,7 @@ import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest, -OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableField, ResolveUnimplementedAccessorsRequest, GenerateAccessorsRequest } from './protocol'; +OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableBinding, ResolveUnimplementedAccessorsRequest, GenerateAccessorsRequest, CheckConstructorStatusRequest, GenerateConstructorsRequest } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerOverrideMethodsCommand(languageClient, context); @@ -14,6 +14,7 @@ export function registerCommands(languageClient: LanguageClient, context: Extens registerChooseImportCommand(context); registerGenerateToStringCommand(languageClient, context); registerGenerateAccessorsCommand(languageClient, context); + registerGenerateConstructorsCommand(languageClient, context); } function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { @@ -176,7 +177,7 @@ function registerGenerateToStringCommand(languageClient: LanguageClient, context } } - let fields: VariableField[] = []; + let fields: VariableBinding[] = []; if (result.fields && result.fields.length) { const fieldItems = result.fields.map((field) => { return { @@ -240,3 +241,57 @@ function registerGenerateAccessorsCommand(languageClient: LanguageClient, contex applyWorkspaceEdit(workspaceEdit, languageClient); })); } + +function registerGenerateConstructorsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.GENERATE_CONSTRUCTORS_PROMPT, async (params: CodeActionParams) => { + const status = await languageClient.sendRequest(CheckConstructorStatusRequest.type, params); + if (!status || !status.constructors || !status.constructors.length) { + return; + } + + let selectedConstructors = status.constructors; + let selectedFields = []; + if (status.constructors.length > 1) { + const constructorItems = status.constructors.map((constructor) => { + return { + label: `${constructor.name}(${constructor.parameters.join(',')})`, + originalConstructor: constructor, + }; + }); + const selectedConstructorItems = await window.showQuickPick(constructorItems, { + canPickMany: true, + placeHolder: 'Select super class constructor(s).', + }); + if (!selectedConstructorItems || !selectedConstructorItems.length) { + return; + } + + selectedConstructors = selectedConstructorItems.map(item => item.originalConstructor); + } + + if (status.fields.length) { + const fieldItems = status.fields.map((field) => { + return { + label: `${field.name}: ${field.type}`, + originalField: field, + }; + }); + const selectedFieldItems = await window.showQuickPick(fieldItems, { + canPickMany: true, + placeHolder: 'Select fields to initialize by constructor(s).', + }); + if (!selectedFieldItems) { + return; + } + + selectedFields = selectedFieldItems.map(item => item.originalField); + } + + const workspaceEdit = await languageClient.sendRequest(GenerateConstructorsRequest.type, { + context: params, + constructors: selectedConstructors, + fields: selectedFields, + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + })); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 3c963246a..635b652e6 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -47,7 +47,8 @@ suite('Java Language Extension', () => { Commands.ORGANIZE_IMPORTS, Commands.CHOOSE_IMPORTS, Commands.GENERATE_TOSTRING_PROMPT, - Commands.GENERATE_ACCESSORS_PROMPT + Commands.GENERATE_ACCESSORS_PROMPT, + Commands.GENERATE_CONSTRUCTORS_PROMPT, ]; const foundJavaCommands = commands.filter(function(value) { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From c70ba525c77406e9d1940ce56f80042b940a9faa Mon Sep 17 00:00:00 2001 From: Meir Blachman Date: Tue, 21 May 2019 17:10:21 +0300 Subject: [PATCH 0420/1435] add try-resources snippet Signed-off-by: Meir Blachman --- snippets/java.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/snippets/java.json b/snippets/java.json index 2269dcdab..7b3293888 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -98,6 +98,16 @@ ], "description": "try/catch block" }, + "tryresources": { + "prefix": "try_resources", + "body": [ + "try ($1) {", + "\t$2", + "} catch (${3:Exception} ${4:e}) {", + "\t$5//${0:TODO}: handle exception", + "}" + ] + }, "private_method": { "prefix": "private_method", "body": [ From fd23af542c5e41881b06ebcab435e65cf1ffacaa Mon Sep 17 00:00:00 2001 From: Yan Zhang Date: Fri, 17 May 2019 13:58:06 +0800 Subject: [PATCH 0421/1435] update loading icon in status bar Signed-off-by: Yan Zhang --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 524e59217..8e532985d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -78,7 +78,7 @@ export function activate(context: ExtensionContext): Promise { }; const item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); - item.text = '$(rocket)'; + item.text = '$(sync~spin)'; item.command = Commands.OPEN_OUTPUT; const progressBar = window.createStatusBarItem(StatusBarAlignment.Left, Number.MIN_VALUE + 1); From 1012a568fca29979ce4cf6ba6e8edb0a57a79fb9 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 21 May 2019 16:16:12 -0400 Subject: [PATCH 0422/1435] New 'private field' snippet, triggered by prf Signed-off-by: Fred Bricon --- snippets/java.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/snippets/java.json b/snippets/java.json index 7b3293888..2890ef175 100644 --- a/snippets/java.json +++ b/snippets/java.json @@ -191,5 +191,12 @@ "${0:Object} ${1:foo} = new ${0:Object}();" ], "description": "Create new Object" + }, + "Private field": { + "prefix": "prf", + "body": [ + "private ${1:String} ${2:name};" + ], + "description": "Private field" } } \ No newline at end of file From 0d81470c5fc088fd2cd642c21cff4abd81509cb9 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Fri, 24 May 2019 07:02:10 +0800 Subject: [PATCH 0423/1435] Enable code action: Generate Delegate Methods... (#930) Signed-off-by: Jinbo Wang --- src/commands.ts | 4 +++ src/extension.ts | 1 + src/protocol.ts | 27 ++++++++++++++++++ src/sourceAction.ts | 64 +++++++++++++++++++++++++++++++++++++++++- test/extension.test.ts | 1 + 5 files changed, 96 insertions(+), 1 deletion(-) diff --git a/src/commands.ts b/src/commands.ts index 8ba67a83c..9a94d9ddf 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -134,4 +134,8 @@ export namespace Commands { * Generate Constructors. */ export const GENERATE_CONSTRUCTORS_PROMPT = 'java.action.generateConstructorsPrompt'; + /** + * Generate Delegate Methods. + */ + export const GENERATE_DELEGATE_METHODS_PROMPT = 'java.action.generateDelegateMethodsPrompt'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 8e532985d..750583ed9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -71,6 +71,7 @@ export function activate(context: ExtensionContext): Promise { generateToStringPromptSupport: true, advancedGenerateAccessorsSupport: true, generateConstructorsPromptSupport: true, + generateDelegateMethodsPromptSupport: true, }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index 9aa562333..ded572394 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -251,3 +251,30 @@ export interface GenerateConstructorsParams { export namespace GenerateConstructorsRequest { export const type = new RequestType('java/generateConstructors'); } + +export interface DelegateField { + field: VariableBinding; + delegateMethods: MethodBinding[]; +} + +export interface CheckDelegateMethodsResponse { + delegateFields: DelegateField[]; +} + +export namespace CheckDelegateMethodsStatusRequest { + export const type = new RequestType('java/checkDelegateMethodsStatus'); +} + +export interface DelegateEntry { + field: VariableBinding; + delegateMethod: MethodBinding; +} + +export interface GenerateDelegateMethodsParams { + context: CodeActionParams; + delegateEntries: DelegateEntry[]; +} + +export namespace GenerateDelegateMethodsRequest { + export const type = new RequestType('java/generateDelegateMethods'); +} diff --git a/src/sourceAction.ts b/src/sourceAction.ts index 88bc1b8e9..21f0c8b9a 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -5,7 +5,7 @@ import { CodeActionParams, LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { applyWorkspaceEdit } from './extension'; import { ListOverridableMethodsRequest, AddOverridableMethodsRequest, CheckHashCodeEqualsStatusRequest, GenerateHashCodeEqualsRequest, -OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableBinding, ResolveUnimplementedAccessorsRequest, GenerateAccessorsRequest, CheckConstructorStatusRequest, GenerateConstructorsRequest } from './protocol'; +OrganizeImportsRequest, ImportCandidate, ImportSelection, GenerateToStringRequest, CheckToStringStatusRequest, VariableBinding, ResolveUnimplementedAccessorsRequest, GenerateAccessorsRequest, CheckConstructorStatusRequest, GenerateConstructorsRequest, CheckDelegateMethodsStatusRequest, GenerateDelegateMethodsRequest } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerOverrideMethodsCommand(languageClient, context); @@ -15,6 +15,7 @@ export function registerCommands(languageClient: LanguageClient, context: Extens registerGenerateToStringCommand(languageClient, context); registerGenerateAccessorsCommand(languageClient, context); registerGenerateConstructorsCommand(languageClient, context); + registerGenerateDelegateMethodsCommand(languageClient, context); } function registerOverrideMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { @@ -295,3 +296,64 @@ function registerGenerateConstructorsCommand(languageClient: LanguageClient, con applyWorkspaceEdit(workspaceEdit, languageClient); })); } + +function registerGenerateDelegateMethodsCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(Commands.GENERATE_DELEGATE_METHODS_PROMPT, async (params: CodeActionParams) => { + const status = await languageClient.sendRequest(CheckDelegateMethodsStatusRequest.type, params); + if (!status || !status.delegateFields || !status.delegateFields.length) { + window.showWarningMessage("All delegatable methods are already implemented."); + return; + } + + let selectedDelegateField = status.delegateFields[0]; + if (status.delegateFields.length > 1) { + const fieldItems = status.delegateFields.map((delegateField) => { + return { + label: `${delegateField.field.name}: ${delegateField.field.type}`, + originalField: delegateField, + }; + }); + const selectedFieldItem = await window.showQuickPick(fieldItems, { + placeHolder: 'Select target to generate delegates for.', + }); + if (!selectedFieldItem) { + return; + } + + selectedDelegateField = selectedFieldItem.originalField; + } + + let delegateEntryItems = selectedDelegateField.delegateMethods.map(delegateMethod => { + return { + label: `${selectedDelegateField.field.name}.${delegateMethod.name}(${delegateMethod.parameters.join(',')})`, + originalField: selectedDelegateField.field, + originalMethod: delegateMethod, + } + }); + + if (!delegateEntryItems.length) { + window.showWarningMessage("All delegatable methods are already implemented."); + return; + } + + const selectedDelegateEntryItems = await window.showQuickPick(delegateEntryItems, { + canPickMany: true, + placeHolder: 'Select methods to generate delegates for.', + }); + if (!selectedDelegateEntryItems || !selectedDelegateEntryItems.length) { + return; + } + + const delegateEntries = selectedDelegateEntryItems.map(item => { + return { + field: item.originalField, + delegateMethod: item.originalMethod, + }; + }); + const workspaceEdit = await languageClient.sendRequest(GenerateDelegateMethodsRequest.type, { + context: params, + delegateEntries, + }); + applyWorkspaceEdit(workspaceEdit, languageClient); + })); +} \ No newline at end of file diff --git a/test/extension.test.ts b/test/extension.test.ts index 635b652e6..3d5904b82 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -49,6 +49,7 @@ suite('Java Language Extension', () => { Commands.GENERATE_TOSTRING_PROMPT, Commands.GENERATE_ACCESSORS_PROMPT, Commands.GENERATE_CONSTRUCTORS_PROMPT, + Commands.GENERATE_DELEGATE_METHODS_PROMPT, ]; const foundJavaCommands = commands.filter(function(value) { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From ff8144b0fda3ed6f818008e3b3de140f93dc6ef2 Mon Sep 17 00:00:00 2001 From: Yaohai Zheng Date: Thu, 30 May 2019 10:58:26 +0800 Subject: [PATCH 0424/1435] Enable proposed API. Signed-off-by: Yaohai Zheng --- package-lock.json | 41 +++++++++++------------------------------ package.json | 1 + 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4bad5b7c5..291fe8aa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2276,8 +2276,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2298,14 +2297,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2320,20 +2317,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2450,8 +2444,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2463,7 +2456,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2478,7 +2470,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2486,14 +2477,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2512,7 +2501,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2593,8 +2581,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2606,7 +2593,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2692,8 +2678,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2729,7 +2714,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2749,7 +2733,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2793,14 +2776,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 3a01bdb96..a5394ca17 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, + "enableProposedApi": true, "engines": { "vscode": "^1.31.0" }, From 3b0fdfd708f2f9da428ae223857451dd48826ca8 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 3 Jun 2019 22:21:48 -0400 Subject: [PATCH 0425/1435] Changelog for 0.46.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c1388271..4a5327b58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Change Log +## 0.46.0 (June 5th, 2019) +* enhancement - new 'try with resources' snippet, triggered by `try_resources`. See [#932](https://github.com/redhat-developer/vscode-java/pull/932). +* enhancement - new 'private field' snippet, triggered by `prf`. See [#933](https://github.com/redhat-developer/vscode-java/pull/933). +* enhancement - new spinning icon in status bar, when server is loading. Good bye rocket. See [#929](https://github.com/redhat-developer/vscode-java/pull/929). +* enhancement - enabled proposed API. See [#942](https://github.com/redhat-developer/vscode-java/pull/942). +* enhancement - added code action to generate constructors. See [#921](https://github.com/redhat-developer/vscode-java/pull/921). +* enhancement - added code action to generate delegate methods. See [#930](https://github.com/redhat-developer/vscode-java/pull/930). +* enhancement - updated buildship to 3.1.0. See [Buildship changelog](https://discuss.gradle.org/t/buildship-3-1-is-now-available/31600). +* enhancement - updated m2e to 1.12 (now embeds Maven 3.6.1). See [m2e changelog](https://projects.eclipse.org/projects/technology.m2e/releases/1.12/bugs). +* enhancement - provide more info on hover for constant fields. See [JLS#1049](https://github.com/eclipse/eclipse.jdt.ls/issues/1049). +* bug fix - fixed Signature Help not matching active parameter per type. See [JLS#1037](https://github.com/eclipse/eclipse.jdt.ls/issues/1037). +* bug fix - fixed disabling Gradle wrapper in certain cases. See [JLS#1044](https://github.com/eclipse/eclipse.jdt.ls/issues/1044). + ## 0.45.0 (May 15th, 2019) * enhancement - optionally disable loading Gradle from wrapper and use a specific Gradle version. See [#875](https://github.com/redhat-developer/vscode-java/issues/875). * enhancement - added `Assign parameters to new fields` source actions. See [JLS#167](https://github.com/eclipse/eclipse.jdt.ls/issues/167). From c945683b1266b925cc89a520973712995b76ef1e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 5 Jun 2019 14:47:31 -0400 Subject: [PATCH 0426/1435] Revert #942 - Enable proposed API The VS Code Marketplace prevents extensions from publishing with enableProposedApi:true: ERROR Extensions using proposed API (enableProposedApi: true) can't be published to the Marketplace Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 - package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5327b58..c51fb8838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ * enhancement - new 'try with resources' snippet, triggered by `try_resources`. See [#932](https://github.com/redhat-developer/vscode-java/pull/932). * enhancement - new 'private field' snippet, triggered by `prf`. See [#933](https://github.com/redhat-developer/vscode-java/pull/933). * enhancement - new spinning icon in status bar, when server is loading. Good bye rocket. See [#929](https://github.com/redhat-developer/vscode-java/pull/929). -* enhancement - enabled proposed API. See [#942](https://github.com/redhat-developer/vscode-java/pull/942). * enhancement - added code action to generate constructors. See [#921](https://github.com/redhat-developer/vscode-java/pull/921). * enhancement - added code action to generate delegate methods. See [#930](https://github.com/redhat-developer/vscode-java/pull/930). * enhancement - updated buildship to 3.1.0. See [Buildship changelog](https://discuss.gradle.org/t/buildship-3-1-is-now-available/31600). diff --git a/package.json b/package.json index a5394ca17..997dd1c62 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, - "enableProposedApi": true, + "enableProposedApi": false, "engines": { "vscode": "^1.31.0" }, From 2c7f35a50e85937c2a6f293c81c4c0949a96ca3c Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 5 Jun 2019 19:48:03 -0400 Subject: [PATCH 0427/1435] Upversion to 0.47.0 Signed-off-by: Fred Bricon --- package-lock.json | 43 +++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 291fe8aa4..a5f87e500 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.46.0", + "version": "0.47.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2276,7 +2276,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2297,12 +2298,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2317,17 +2320,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2444,7 +2450,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2456,6 +2463,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2470,6 +2478,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2477,12 +2486,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2501,6 +2512,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2581,7 +2593,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2593,6 +2606,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2678,7 +2692,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2714,6 +2729,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2733,6 +2749,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2776,12 +2793,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index 997dd1c62..77a9a45f3 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.46.0", + "version": "0.47.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 0eab5e43a59f6c95114556b91ceb667f9f53e98a Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Mon, 17 Jun 2019 20:42:18 +0200 Subject: [PATCH 0428/1435] Cannot set up dev environment following contributing instruction Signed-off-by: Snjezana Peco --- CONTRIBUTING.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 26380678e..2dba41456 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,18 +48,29 @@ This will build and place the binaries under the `server` folder. Alternately yo While developing the language server and the extension, you don't need to deploy the server every time to try out changes. Instead you can run the language server out of its Eclipse workspace: +### _Launch Extension - Remote Server_ + - Open VSCode on the `vscode-java` folder - In the debug viewlet, run the launch _Launch Extension - Remote Server_ - The extension will open a socket on port 3333 and will wait for the JDT language server to connect - In Eclipse, run the JDT language server as an Eclipse application. - - Create a debug configuration of type _Eclipse Application_. + - Create a debug configuration of type _Eclipse Application_. - in the main tab of the debug configuration set the product to `org.eclipse.jdt.ls.core.product`. - in the Environment tab, define a variable `CLIENT_PORT` with value `3333`. - if your workspace contains 'org.eclipse.jdt.ui', use the Plug-Ins tab in the debug configuration to exclude the plug-in. The presence of 'org.eclipse.jdt.ui' will cause the language server to hang. + - You can also use the `jdt.ls.remote.server` launch configuration. + - In the debug console of VSCode you can see if the connection was successful. - When the server is running breakpoints can be reached and hot code replace can be used to make fixes without restarting the server. - You can modify `launch.json` to use a different port: - - Modify `SERVER_PORT` to specify the port the JST LS server should connect to. + - Modify `SERVER_PORT` to specify the port the JDT LS server should connect to. + +### _Launch Extension - JDTLS Client_ + +- start the `jdt.ls.socket-stream` launch configuration in Eclipse +- start the _Launch Extension - JDTLS Client_ in VS Code +- You can modify `launch.json` to use a different port: + - Modify `JDTLS_CLIENT_PORT` to specify the port VS Code should connect to. ## Sideloading From d5d77cb7c26672d3f909ef4b724079e2f6654261 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Thu, 27 Jun 2019 15:26:47 +0800 Subject: [PATCH 0429/1435] Add rename after 'extract to variable/constant/method' refactoring (#965) Signed-off-by: Jinbo Wang --- src/commands.ts | 8 +++++ src/extension.ts | 3 ++ src/protocol.ts | 23 +++++++++++++- src/refactorAction.ts | 69 ++++++++++++++++++++++++++++++++++++++++++ test/extension.test.ts | 2 ++ 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 src/refactorAction.ts diff --git a/src/commands.ts b/src/commands.ts index 9a94d9ddf..a2ab5f6f0 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -138,4 +138,12 @@ export namespace Commands { * Generate Delegate Methods. */ export const GENERATE_DELEGATE_METHODS_PROMPT = 'java.action.generateDelegateMethodsPrompt'; + /** + * Apply Refactoring Command. + */ + export const APPLY_REFACTORING_COMMAND = 'java.action.applyRefactoringCommand'; + /** + * Rename Command. + */ + export const RENAME_COMMAND = 'java.action.rename'; } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 750583ed9..e91c7a79f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -16,6 +16,7 @@ import { import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; import * as sourceAction from './sourceAction'; +import * as refactorAction from './refactorAction'; import * as net from 'net'; import { getJavaConfiguration } from './utils'; import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; @@ -72,6 +73,7 @@ export function activate(context: ExtensionContext): Promise { advancedGenerateAccessorsSupport: true, generateConstructorsPromptSupport: true, generateDelegateMethodsPromptSupport: true, + advancedExtractRefactoringSupport: true, }, triggerFiles: getTriggerFiles() }, @@ -286,6 +288,7 @@ export function activate(context: ExtensionContext): Promise { buildpath.registerCommands(context); sourceAction.registerCommands(languageClient, context); + refactorAction.registerCommands(languageClient, context); context.subscriptions.push(window.onDidChangeActiveTextEditor((editor) => { toggleItem(editor, item); diff --git a/src/protocol.ts b/src/protocol.ts index ded572394..bf0de4dc6 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,6 +1,6 @@ 'use strict'; -import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit } from 'vscode-languageclient'; +import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit, FormattingOptions } from 'vscode-languageclient'; import { Command, Range } from 'vscode'; /** @@ -278,3 +278,24 @@ export interface GenerateDelegateMethodsParams { export namespace GenerateDelegateMethodsRequest { export const type = new RequestType('java/generateDelegateMethods'); } + +export interface RenamePosition { + uri: string; + offset: number; + length: number; +} + +export interface RefactorWorkspaceEdit { + edit: WorkspaceEdit; + command?: Command; +} + +export interface GetRefactorEditParams { + command: string; + context: CodeActionParams; + options: FormattingOptions; +} + +export namespace GetRefactorEditRequest { + export const type = new RequestType('java/getRefactorEdit'); +} diff --git a/src/refactorAction.ts b/src/refactorAction.ts new file mode 100644 index 000000000..220011dbe --- /dev/null +++ b/src/refactorAction.ts @@ -0,0 +1,69 @@ +'use strict'; + +import { commands, window, ExtensionContext, workspace, Position, Uri, TextDocument } from 'vscode'; +import { LanguageClient, FormattingOptions } from 'vscode-languageclient'; +import { Commands as javaCommands } from './commands'; +import { GetRefactorEditRequest, RefactorWorkspaceEdit, RenamePosition } from './protocol'; + +export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { + registerApplyRefactorCommand(languageClient, context); +} + +function registerApplyRefactorCommand(languageClient: LanguageClient, context: ExtensionContext): void { + context.subscriptions.push(commands.registerCommand(javaCommands.RENAME_COMMAND, async (position: RenamePosition) => { + try { + const uri: Uri = Uri.parse(position.uri); + const document: TextDocument = await workspace.openTextDocument(uri); + if (document == null) { + return; + } + + const renamePosition: Position = document.positionAt(position.offset); + await commands.executeCommand('editor.action.rename', [ + document.uri, + renamePosition, + ]); + } catch (error) { + // do nothing. + } + })); + + context.subscriptions.push(commands.registerCommand(javaCommands.APPLY_REFACTORING_COMMAND, async (command: string, params: any) => { + if (command === 'extractVariable' + || command === 'extractVariableAllOccurrence' + || command === 'extractConstant' + || command === 'extractMethod') { + const currentEditor = window.activeTextEditor; + if (!currentEditor || !currentEditor.options) { + return; + } + + const formattingOptions: FormattingOptions = { + tabSize: currentEditor.options.tabSize, + insertSpaces: currentEditor.options.insertSpaces, + }; + const result: RefactorWorkspaceEdit = await languageClient.sendRequest(GetRefactorEditRequest.type, { + command, + context: params, + options: formattingOptions, + }); + + if (!result || !result.edit) { + return; + } + + const edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(result.edit); + if (edit) { + await workspace.applyEdit(edit); + } + + if (result.command) { + if (result.command.arguments) { + await commands.executeCommand(result.command.command, ...result.command.arguments); + } else { + await commands.executeCommand(result.command.command); + } + } + } + })); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 3d5904b82..79bb155c8 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -50,6 +50,8 @@ suite('Java Language Extension', () => { Commands.GENERATE_ACCESSORS_PROMPT, Commands.GENERATE_CONSTRUCTORS_PROMPT, Commands.GENERATE_DELEGATE_METHODS_PROMPT, + Commands.APPLY_REFACTORING_COMMAND, + Commands.RENAME_COMMAND ]; const foundJavaCommands = commands.filter(function(value) { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From d8d86ee838740438456f5e00dbe5290efcce0ab5 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Wed, 3 Jul 2019 11:12:01 +0800 Subject: [PATCH 0430/1435] Enable refactoring: Extract to field Signed-off-by: Jinbo Wang --- src/protocol.ts | 1 + src/refactorAction.ts | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/protocol.ts b/src/protocol.ts index bf0de4dc6..aad0512cb 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -294,6 +294,7 @@ export interface GetRefactorEditParams { command: string; context: CodeActionParams; options: FormattingOptions; + commandArguments: any[]; } export namespace GetRefactorEditRequest { diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 220011dbe..658e8e082 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -28,11 +28,13 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E } })); - context.subscriptions.push(commands.registerCommand(javaCommands.APPLY_REFACTORING_COMMAND, async (command: string, params: any) => { + context.subscriptions.push(commands.registerCommand(javaCommands.APPLY_REFACTORING_COMMAND, async (command: string, params: any, commandInfo: any) => { if (command === 'extractVariable' || command === 'extractVariableAllOccurrence' || command === 'extractConstant' - || command === 'extractMethod') { + || command === 'extractMethod' + || command === 'extractField' + || command === 'convertVariableToField') { const currentEditor = window.activeTextEditor; if (!currentEditor || !currentEditor.options) { return; @@ -42,10 +44,32 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E tabSize: currentEditor.options.tabSize, insertSpaces: currentEditor.options.insertSpaces, }; + const commandArguments: any[] = []; + if (command === 'extractField' || command === 'convertVariableToField') { + if (commandInfo.initializedScopes && Array.isArray(commandInfo.initializedScopes)) { + const scopes: any[] = commandInfo.initializedScopes; + let initializeIn: string; + if (scopes.length === 1) { + initializeIn = scopes[0]; + } else if (scopes.length > 1) { + initializeIn = await window.showQuickPick(scopes, { + placeHolder: "Initialize the field in", + }); + + if (!initializeIn) { + return; + } + } + + commandArguments.push(initializeIn); + } + } + const result: RefactorWorkspaceEdit = await languageClient.sendRequest(GetRefactorEditRequest.type, { command, context: params, options: formattingOptions, + commandArguments, }); if (!result || !result.edit) { From 21bdfec66fd6d2726582410c41cdd6fac0a191fd Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Mon, 8 Jul 2019 17:45:09 +0200 Subject: [PATCH 0431/1435] Add additional Gradle preferences Signed-off-by: Snjezana Peco --- README.md | 6 ++++++ package.json | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/README.md b/README.md index 0e0df4500..205b5a496 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,12 @@ The following settings are supported: * `java.codeGeneration.toString.listArrayContents`: List contents of arrays instead of using native toString(). Defaults to `true`. * `java.codeGeneration.toString.limitElements`: Limit number of items in arrays/collections/maps to list, if 0 then list all. Defaults to `0`. +*New in 0.47.0* + +* `java.import.gradle.arguments`: Arguments to pass to Gradle. +* `java.import.gradle.jvmArguments`: JVM arguments to pass to Gradle. +* `java.import.gradle.home`: setting for GRADLE_HOME. + Troubleshooting =============== diff --git a/package.json b/package.json index 77a9a45f3..8ce3587cd 100644 --- a/package.json +++ b/package.json @@ -139,6 +139,24 @@ "description": "Gradle version, used if the gradle wrapper is missing or disabled.", "scope": "window" }, + "java.import.gradle.arguments": { + "type": "string", + "default": null, + "description": "Arguments to pass to Gradle.", + "scope": "window" + }, + "java.import.gradle.jvmArguments": { + "type": "string", + "default": null, + "description": "JVM arguments to pass to Gradle.", + "scope": "window" + }, + "java.import.gradle.home": { + "type": "string", + "default": null, + "description": "Setting for GRADLE_HOME.", + "scope": "window" + }, "java.maven.downloadSources": { "type": "boolean", "default": false, From 89d3921d6bea902ac4f8626bff165e120c534c25 Mon Sep 17 00:00:00 2001 From: Rome Li Date: Fri, 12 Jul 2019 16:52:04 +0800 Subject: [PATCH 0432/1435] Support "textDocument/selectionRange" (#976) Signed-off-by: Rome Li --- README.md | 3 +- package-lock.json | 168 +++++++++++++--------------------------------- package.json | 12 +++- 3 files changed, 57 insertions(+), 126 deletions(-) diff --git a/README.md b/README.md index 205b5a496..6bf5cbaa0 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ The following settings are supported: * `java.completion.enabled` : Enable/disable code completion support. * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. +* `java.selectionRange.enabled`: Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection. * `java.maven.downloadSources`: Enable/disable eager download of Maven source artifacts. * `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. @@ -114,7 +115,7 @@ The following settings are supported: * `java.import.gradle.arguments`: Arguments to pass to Gradle. * `java.import.gradle.jvmArguments`: JVM arguments to pass to Gradle. * `java.import.gradle.home`: setting for GRADLE_HOME. - +* `java.selectionRange.enabled`: Setting for Smart Selection support for Java. When it's on, Expand/Shrink Selection works better for Java code. Troubleshooting =============== diff --git a/package-lock.json b/package-lock.json index a5f87e500..b043500b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -232,9 +232,9 @@ } }, "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { "es6-promisify": "^5.0.0" @@ -1746,9 +1746,9 @@ } }, "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-promisify": { @@ -3349,12 +3349,12 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" }, "dependencies": { @@ -3368,9 +3368,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -6346,12 +6346,12 @@ } }, "url-parse": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.6.tgz", - "integrity": "sha512-/B8AD9iQ01seoXmXf9z/MjLZQIdOoYl/+gvsQF6+mpnxaTfG9P7srYaiqaDMyKkR36XMXfhqSHss5MyFAO8lew==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "dev": true, "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -6488,116 +6488,33 @@ } }, "vscode": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.33.tgz", - "integrity": "sha512-sXedp2oF6y4ZvqrrFiZpeMzaCLSWV+PpYkIxjG/iYquNZ9KrLL2LujltGxPLvzn49xu2sZkyC+avVNFgcJD1Iw==", + "version": "1.1.35", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.35.tgz", + "integrity": "sha512-xPnxzQU40LOS2yPyzWW+WKpTV6qA3z16TcgpZ9O38UWLA157Zz4GxUx5H7Gd07pxzw0GqvusbF4D+5GBgNxvEQ==", "dev": true, "requires": { "glob": "^7.1.2", - "mocha": "^4.0.1", + "mocha": "^5.2.0", "request": "^2.88.0", "semver": "^5.4.1", "source-map-support": "^0.5.0", "url-parse": "^1.4.4", - "vscode-test": "^0.1.4" - }, - "dependencies": { - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "diff": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", - "dev": true - }, - "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "mocha": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", - "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.11.0", - "debug": "3.1.0", - "diff": "3.3.1", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.3", - "he": "1.1.1", - "mkdirp": "0.5.1", - "supports-color": "4.4.0" - }, - "dependencies": { - "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" - } - } - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - } + "vscode-test": "^0.4.1" } }, "vscode-jsonrpc": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", - "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==", + "dev": true }, "vscode-languageclient": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.1.1.tgz", - "integrity": "sha512-jMxshi+BPRQFNG8GB00dJv7ldqMda0be26laYYll/udtJuHbog6RqK10GSxHWDN0PgY0b0m5fePyTk3bq8a0TA==", + "version": "5.3.0-next.6", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.3.0-next.6.tgz", + "integrity": "sha512-DxT8+gkenjCjJV6ArcP75/AQfx6HP6m6kHIbacPCpffMeoE1YMLKj6ZixA9J87yr0fMtBmqumLmDeGe7MIF2bw==", "requires": { "semver": "^5.5.0", - "vscode-languageserver-protocol": "3.13.0" + "vscode-languageserver-protocol": "^3.15.0-next.6" } }, "vscode-languageserver": { @@ -6629,23 +6546,30 @@ } }, "vscode-languageserver-protocol": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz", - "integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==", + "version": "3.15.0-next.6", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz", + "integrity": "sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==", "requires": { - "vscode-jsonrpc": "^4.0.0", - "vscode-languageserver-types": "3.13.0" + "vscode-jsonrpc": "^4.1.0-next.2", + "vscode-languageserver-types": "^3.15.0-next.2" + }, + "dependencies": { + "vscode-jsonrpc": { + "version": "4.1.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz", + "integrity": "sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==" + } } }, "vscode-languageserver-types": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", - "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" + "version": "3.15.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz", + "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==" }, "vscode-test": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.1.5.tgz", - "integrity": "sha512-s+lbF1Dtasc0yXVB9iQTexBe2JK6HJAUJe3fWezHKIjq+xRw5ZwCMEMBaonFIPy7s95qg2HPTRDR5W4h4kbxGw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", + "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", "dev": true, "requires": { "http-proxy-agent": "^2.1.0", diff --git a/package.json b/package.json index 8ce3587cd..e7d6734d4 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "preview": true, "enableProposedApi": false, "engines": { - "vscode": "^1.31.0" + "vscode": "^1.33.0" }, "repository": { "type": "git", @@ -373,6 +373,12 @@ "description": "Limit number of items in arrays/collections/maps to list, if 0 then list all.", "default": 0, "scope": "window" + }, + "java.selectionRange.enabled": { + "type": "boolean", + "default": true, + "description": "Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection.", + "scope": "window" } } }, @@ -514,12 +520,12 @@ "tslint": "^5.11.0", "typescript": "^3.4.1", "typescript-tslint-plugin": "^0.3.1", - "vscode": "^1.1.33", + "vscode": "^1.1.35", "webpack": "^4.27.1", "webpack-cli": "^3.1.2" }, "dependencies": { - "vscode-languageclient": "~5.1.1", + "vscode-languageclient": "5.3.0-next.6", "find-java-home": "0.2.0", "tmp": "^0.0.33", "path-exists": "^3.0.0", From cf1fbe19f4317f574f996421d89577cf114b2ab9 Mon Sep 17 00:00:00 2001 From: Rome Li Date: Wed, 17 Jul 2019 17:01:56 +0800 Subject: [PATCH 0433/1435] Migrate to 'vscode-test' (#981) Signed-off-by: Rome Li --- .vscode/launch.json | 4 ++-- package-lock.json | 49 ++++++++---------------------------------- package.json | 14 ++++++------ src/plugin.ts | 4 ++-- test/extension.test.ts | 15 +++++++------ test/index.ts | 49 +++++++++++++++++++++++++++++++----------- test/runtest.ts | 23 ++++++++++++++++++++ 7 files changed, 88 insertions(+), 70 deletions(-) create mode 100644 test/runtest.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 14f578dcd..3a337dd88 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -49,8 +49,8 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ], "stopOnEntry": false, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/out/test/**"], + "outFiles": ["${workspaceRoot}/out/**/*.js"], "preLaunchTask": "npm: compile" } ] -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index b043500b8..854cf57f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,12 @@ "integrity": "sha512-JWB3xaVfsfnFY8Ofc9rTB/op0fqqTSqy4vBcVk1LuRJvta7KTX+D//fCkiTMeLGhdr2EbFZzQjC97gvmPilk9Q==", "dev": true }, + "@types/vscode": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.36.0.tgz", + "integrity": "sha512-SbHR3Q5g/C3N+Ila3KrRf1rSZiyHxWdOZ7X3yFHXzw6HrvRLuVZrxnwEX0lTBMRpH9LkwZdqRTgXW+D075jxkg==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -4982,12 +4988,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "dev": true - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -5186,12 +5186,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -6345,16 +6339,6 @@ } } }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -6487,21 +6471,6 @@ "indexof": "0.0.1" } }, - "vscode": { - "version": "1.1.35", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.35.tgz", - "integrity": "sha512-xPnxzQU40LOS2yPyzWW+WKpTV6qA3z16TcgpZ9O38UWLA157Zz4GxUx5H7Gd07pxzw0GqvusbF4D+5GBgNxvEQ==", - "dev": true, - "requires": { - "glob": "^7.1.2", - "mocha": "^5.2.0", - "request": "^2.88.0", - "semver": "^5.4.1", - "source-map-support": "^0.5.0", - "url-parse": "^1.4.4", - "vscode-test": "^0.4.1" - } - }, "vscode-jsonrpc": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", @@ -6567,9 +6536,9 @@ "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==" }, "vscode-test": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", - "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.0.0.tgz", + "integrity": "sha512-RnZUhxEXYCozHtBAQwX/UISlw0JPqlv1I9LLl4++vcPDIvjs2Zfz2Inp8haxixS1sOTftHJ9kiecrwWF9S3taQ==", "dev": true, "requires": { "http-proxy-agent": "^2.1.0", diff --git a/package.json b/package.json index e7d6734d4..6e6f42ab7 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "preview": true, "enableProposedApi": false, "engines": { - "vscode": "^1.33.0" + "vscode": "^1.36.0" }, "repository": { "type": "git", @@ -500,18 +500,18 @@ }, "scripts": { "vscode:prepublish": "webpack --mode production", - "compile": "tsc -p ./", + "compile": "tsc -p ./&webpack --mode development", "watch": "webpack --mode development --watch --info-verbosity verbose", - "postinstall": "node ./node_modules/vscode/bin/install", - "test": "node ./node_modules/vscode/bin/test", + "pretest": "npm run compile", + "test": "node ./out/test/runtest.js", "build-server": "./node_modules/.bin/gulp build_server", - "watch-server": "./node_modules/.bin/gulp watch_server", - "webpack": "webpack --mode development" + "watch-server": "./node_modules/.bin/gulp watch_server" }, "devDependencies": { "@types/glob": "5.0.30", "@types/mocha": "^5.2.5", "@types/node": "^6.0.40", + "@types/vscode": "^1.36.0", "gulp": "^4.0.0", "gulp-decompress": "2.0.1", "gulp-download": "0.0.1", @@ -520,7 +520,7 @@ "tslint": "^5.11.0", "typescript": "^3.4.1", "typescript-tslint-plugin": "^0.3.1", - "vscode": "^1.1.35", + "vscode-test": "^1.0.0", "webpack": "^4.27.1", "webpack-cli": "^3.1.2" }, diff --git a/src/plugin.ts b/src/plugin.ts index b930e230e..a88b1f58e 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -6,7 +6,7 @@ import { Commands } from './commands'; let existingExtensions: Array; -export function collectJavaExtensions(extensions: vscode.Extension[]): string[] { +export function collectJavaExtensions(extensions: readonly vscode.Extension[]): string[] { const result = []; if (extensions && extensions.length) { for (const extension of extensions) { @@ -26,7 +26,7 @@ export function collectJavaExtensions(extensions: vscode.Extension[]): stri return result; } -export function onExtensionChange(extensions: vscode.Extension[]) { +export function onExtensionChange(extensions: readonly vscode.Extension[]) { if (!existingExtensions) { return; } diff --git a/test/extension.test.ts b/test/extension.test.ts index 79bb155c8..687048186 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -20,7 +20,7 @@ suite('Java Language Extension', () => { }); }); - test('should register all java commands', function () { + test('should register all java commands', () => { return vscode.commands.getCommands(true).then((commands) => { const JAVA_COMMANDS = [ @@ -53,14 +53,14 @@ suite('Java Language Extension', () => { Commands.APPLY_REFACTORING_COMMAND, Commands.RENAME_COMMAND ]; - const foundJavaCommands = commands.filter(function(value) { + const foundJavaCommands = commands.filter((value) => { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); }); assert.equal(foundJavaCommands.length , JAVA_COMMANDS.length, 'Some Java commands are not registered properly or a new command is not added to the test'); }); }); - test('should parse VM arguments', function () { + test('should parse VM arguments', () => { const userArgs = '-Xmx512m -noverify -Dfoo=\"something with blank\" '; const vmArgs = ['-noverify', 'foo']; @@ -73,7 +73,7 @@ suite('Java Language Extension', () => { assert.equal('-Dfoo=something with blank', vmArgs[3]); }); - test('should parse VM arguments with spaces', function () { + test('should parse VM arguments with spaces', () => { const userArgs = '-javaagent:"C:\\Program Files\\Java\\lombok.jar" -Xbootclasspath/a:"C:\\Program Files\\Java\\lombok.jar" -Dfoo="Some \\"crazy\\" stuff"'; const vmArgs = []; @@ -85,7 +85,7 @@ suite('Java Language Extension', () => { assert.equal(vmArgs[2], '-Dfoo=Some "crazy" stuff'); }); - test('should collect java extensions', function () { + test('should collect java extensions', () => { const packageJSON = JSON.parse(fs.readFileSync(path.join(__dirname, '../../test/resources/packageExample.json'), 'utf8')); const fakedExtension = { id: 'test', @@ -93,7 +93,8 @@ suite('Java Language Extension', () => { isActive: true, packageJSON, exports: '', - activate: null + activate: null, + extensionKind: vscode.ExtensionKind.Workspace }; const extensions = [fakedExtension]; @@ -102,7 +103,7 @@ suite('Java Language Extension', () => { assert(result[0].endsWith(path.normalize('./bin/java.extend.jar'))); }); - test('should parse Java version', function () { + test('should parse Java version', () => { // Test boundaries assert.equal(requirements.parseMajorVersion(null), 0); assert.equal(requirements.parseMajorVersion(''), 0); diff --git a/test/index.ts b/test/index.ts index f38dc9ddd..8275646bf 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,23 +1,48 @@ -// -// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING +// +// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING // // This file is providing the test runner to use when running extension tests. // By default the test runner in use is Mocha based. -// +// // You can provide your own test runner if you want to override it by exporting // a function run(testRoot: string, clb: (error:Error) => void) that the extension // host can call to run the tests. The test runner is expected to use console.log // to report the results back to the caller. When the tests are finished, return // a possible error to the callback or null if none. -// tslint:disable-next-line:no-require-imports -let testRunner = require('vscode/lib/testrunner'); +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; + +export function run(): Promise { + const mocha = new Mocha({ + ui: 'tdd', + useColors: true + }); + + const testsRoot = path.resolve(__dirname, '..'); + + return new Promise((c, e) => { + glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) { + return e(err); + } -// You can directly control Mocha options by uncommenting the following lines -// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info -testRunner.configure({ - ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.) - useColors: true // colored output from test results -}); + // Add files to the test suite + files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); -module.exports = testRunner; \ No newline at end of file + try { + // Run the mocha test + mocha.run(failures => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + e(err); + } + }); + }); +} diff --git a/test/runtest.ts b/test/runtest.ts new file mode 100644 index 000000000..e48da460f --- /dev/null +++ b/test/runtest.ts @@ -0,0 +1,23 @@ +import * as path from 'path'; + +import { runTests } from 'vscode-test'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../..'); + + // The path to the extension test script + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests'); + process.exit(1); + } +} + +main(); From 1445ee101e611c9c567cfa0a91a7f9b93841b8ed Mon Sep 17 00:00:00 2001 From: Rome Li Date: Wed, 17 Jul 2019 21:21:23 +0800 Subject: [PATCH 0434/1435] Log file to record client errors Signed-off-by: Rome Li --- package-lock.json | 213 +++++++++++++++++++++++++++++++++++---- package.json | 4 +- src/extension.ts | 22 ++-- src/javaServerStarter.ts | 7 +- src/log.ts | 21 ++++ 5 files changed, 235 insertions(+), 32 deletions(-) create mode 100644 src/log.ts diff --git a/package-lock.json b/package-lock.json index 854cf57f5..804c2b5e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,15 @@ "integrity": "sha512-SbHR3Q5g/C3N+Ila3KrRf1rSZiyHxWdOZ7X3yFHXzw6HrvRLuVZrxnwEX0lTBMRpH9LkwZdqRTgXW+D075jxkg==", "dev": true }, + "@types/winston": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz", + "integrity": "sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw==", + "dev": true, + "requires": { + "winston": "*" + } + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -533,6 +542,14 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, "async-done": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", @@ -1133,11 +1150,19 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -1145,8 +1170,16 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "color-support": { "version": "1.1.3", @@ -1154,6 +1187,25 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -1258,8 +1310,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { "version": "4.0.3", @@ -1580,6 +1631,16 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -1691,6 +1752,14 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "requires": { + "env-variable": "0.0.x" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -1711,6 +1780,11 @@ "tapable": "^1.0.0" } }, + "env-variable": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -2041,6 +2115,11 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "fast-safe-stringify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -2050,6 +2129,11 @@ "pend": "~1.2.0" } }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -3629,8 +3713,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-typedarray": { "version": "1.0.0", @@ -3668,8 +3751,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -3780,6 +3862,14 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "requires": { + "colornames": "^1.1.1" + } + }, "last-run": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", @@ -3873,6 +3963,11 @@ "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", @@ -3998,6 +4093,25 @@ "lodash.escape": "^3.0.0" } }, + "logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -4616,6 +4730,11 @@ "wrappy": "1" } }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" + }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -5032,7 +5151,6 @@ "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", @@ -5046,8 +5164,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" } } }, @@ -5272,8 +5389,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -5395,6 +5511,21 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5633,8 +5764,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, "static-extend": { "version": "0.1.2", @@ -5717,7 +5847,6 @@ "version": "1.1.1", "resolved": "http://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" } @@ -5852,6 +5981,11 @@ } } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -5998,6 +6132,11 @@ } } }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, "ts-loader": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.1.tgz", @@ -6357,8 +6496,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "3.3.2", @@ -6796,6 +6934,43 @@ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" }, + "winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "requires": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "requires": { + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" + } + }, "worker-farm": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", diff --git a/package.json b/package.json index 6e6f42ab7..8985efb82 100644 --- a/package.json +++ b/package.json @@ -512,6 +512,7 @@ "@types/mocha": "^5.2.5", "@types/node": "^6.0.40", "@types/vscode": "^1.36.0", + "@types/winston": "^2.4.4", "gulp": "^4.0.0", "gulp-decompress": "2.0.1", "gulp-download": "0.0.1", @@ -530,6 +531,7 @@ "tmp": "^0.0.33", "path-exists": "^3.0.0", "expand-home-dir": "^0.0.3", - "glob": "^7.1.3" + "glob": "^7.1.3", + "winston": "^3.2.1" } } diff --git a/src/extension.ts b/src/extension.ts index e91c7a79f..16f28279a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -20,6 +20,7 @@ import * as refactorAction from './refactorAction'; import * as net from 'net'; import { getJavaConfiguration } from './utils'; import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; +import { logger, initializeLogFile } from './log'; let lastStatus; let languageClient: LanguageClient; @@ -28,6 +29,13 @@ const cleanWorkspaceFileName = '.cleanWorkspace'; export function activate(context: ExtensionContext): Promise { + let storagePath = context.storagePath; + if (!storagePath) { + storagePath = getTempWorkspace(); + } + + initializeLogFile(path.join(storagePath, 'client.log')); + enableJavadocSymbols(); return requirements.resolveRequirements().catch(error => { @@ -42,10 +50,6 @@ export function activate(context: ExtensionContext): Promise { }).then(requirements => { return window.withProgress({ location: ProgressLocation.Window }, p => { return new Promise((resolve, reject) => { - let storagePath = context.storagePath; - if (!storagePath) { - storagePath = getTempWorkspace(); - } const workspacePath = path.resolve(storagePath + '/jdt_ws'); // Options to control the language client @@ -390,7 +394,7 @@ function enableJavadocSymbols() { function logNotification(message: string, ...items: string[]) { return new Promise((resolve, reject) => { - console.log(message); + logger.verbose(message); }); } @@ -398,8 +402,8 @@ function setIncompleteClasspathSeverity(severity: string) { const config = getJavaConfiguration(); const section = 'errors.incompleteClasspath.severity'; config.update(section, severity, true).then( - () => console.log(`${section} globally set to ${severity}`), - (error) => console.log(error) + () => logger.info(`${section} globally set to ${severity}`), + (error) => logger.error(error) ); } @@ -426,8 +430,8 @@ function setProjectConfigurationUpdate(languageClient: LanguageClient, uri: Uri, const st = FeatureStatus[status]; config.update(section, st).then( - () => console.log(`${section} set to ${st}`), - (error) => console.log(error) + () => logger.info(`${section} set to ${st}`), + (error) => logger.error(error) ); if (status !== FeatureStatus.disabled) { projectConfigurationUpdate(languageClient, uri); diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 633001fc9..5e02d8c6e 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -6,6 +6,7 @@ import * as os from 'os'; import { StreamInfo, Executable, ExecutableOptions } from 'vscode-languageclient'; import { RequirementsData } from './requirements'; import { getJavaEncoding } from './settings'; +import { logger } from './log'; declare var v8debug; const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); @@ -18,7 +19,7 @@ export function prepareExecutable(requirements: RequirementsData, workspacePath, executable.options = options; executable.command = path.resolve(requirements.java_home + '/bin/java'); executable.args = prepareParams(requirements, javaConfig, workspacePath); - console.log(`Starting Java server with: ${executable.command} ${executable.args.join(' ')}`); + logger.info(`Starting Java server with: ${executable.command} ${executable.args.join(' ')}`); return executable; } export function awaitServerConnection(port): Thenable { @@ -26,13 +27,13 @@ export function awaitServerConnection(port): Thenable { return new Promise((res, rej) => { const server = net.createServer(stream => { server.close(); - console.log('JDT LS connection established on port ' + addr); + logger.info('JDT LS connection established on port ' + addr); res({ reader: stream, writer: stream }); }); server.on('error', rej); server.listen(addr, () => { server.removeListener('error', rej); - console.log('Awaiting JDT LS connection on port ' + addr); + logger.info('Awaiting JDT LS connection on port ' + addr); }); return server; }); diff --git a/src/log.ts b/src/log.ts new file mode 100644 index 000000000..e8f4432c1 --- /dev/null +++ b/src/log.ts @@ -0,0 +1,21 @@ +import { createLogger, format, transports } from 'winston'; + +export function initializeLogFile(filename: string) { + logger.add(new transports.File({ + filename: filename, + maxsize: 100 * 1024, // 100k max size per file + maxFiles: 2 // the last 100k of logs are always available + })); +} + +export const logger = createLogger({ + format: format.combine( + format.timestamp({ + format: 'YYYY-MM-DD HH:mm:ss.SSS' + }), + format.prettyPrint() + ), + transports: [ + new transports.Console() + ] +}); From 6cd52cfb06d358ebb7511a54c356795e146ebab0 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 17 Jul 2019 18:08:35 +0200 Subject: [PATCH 0435/1435] Add 'Open Java extension log file' command Signed-off-by: Fred Bricon --- package.json | 7 ++++++- src/commands.ts | 6 ++++++ src/extension.ts | 24 ++++++++++++++++++------ test/extension.test.ts | 1 + 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 8985efb82..e8a2c4981 100644 --- a/package.json +++ b/package.json @@ -390,7 +390,12 @@ }, { "command": "java.open.serverLog", - "title": "Open Java Language Server log file", + "title": "Open Java language server log file", + "category": "Java" + }, + { + "command": "java.open.clientLog", + "title": "Open Java extension log file", "category": "Java" }, { diff --git a/src/commands.ts b/src/commands.ts index a2ab5f6f0..3ac381cdd 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -74,6 +74,12 @@ export namespace Commands { */ export const OPEN_SERVER_LOG = 'java.open.serverLog'; + /** + * Open Java client Log file + */ + export const OPEN_CLIENT_LOG = 'java.open.clientLog'; + + /** * Open Java formatter settings */ diff --git a/src/extension.ts b/src/extension.ts index 16f28279a..2c4cf280c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -26,6 +26,7 @@ let lastStatus; let languageClient: LanguageClient; const jdtEventEmitter = new EventEmitter(); const cleanWorkspaceFileName = '.cleanWorkspace'; +let clientLogFile; export function activate(context: ExtensionContext): Promise { @@ -33,8 +34,8 @@ export function activate(context: ExtensionContext): Promise { if (!storagePath) { storagePath = getTempWorkspace(); } - - initializeLogFile(path.join(storagePath, 'client.log')); + clientLogFile = path.join(storagePath, 'client.log'); + initializeLogFile(clientLogFile); enableJavadocSymbols(); @@ -331,6 +332,8 @@ export function activate(context: ExtensionContext): Promise { context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath))); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_CLIENT_LOG, () => openClientLogFile(clientLogFile))); + const extensionPath = context.extensionPath; context.subscriptions.push(commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath))); @@ -491,11 +494,20 @@ function deleteDirectory(dir) { function openServerLogFile(workspacePath): Thenable { const serverLogFile = path.join(workspacePath, '.metadata', '.log'); - if (!fs.existsSync(serverLogFile)) { - return window.showWarningMessage('Java Language Server has not started logging.').then(() => false); + return openLogFile(serverLogFile, 'Could not open Java Language Server log file'); +} + +function openClientLogFile(logFile): Thenable { + return openLogFile(logFile, 'Could not open Java extension log file'); +} + + +function openLogFile(logFile, openingFailureWarning:string ): Thenable { + if (!fs.existsSync(logFile)) { + return window.showWarningMessage('No log file available').then(() => false); } - return workspace.openTextDocument(serverLogFile) + return workspace.openTextDocument(logFile) .then(doc => { if (!doc) { return false; @@ -506,7 +518,7 @@ function openServerLogFile(workspacePath): Thenable { }, () => false) .then(didOpen => { if (!didOpen) { - window.showWarningMessage('Could not open Java Language Server log file'); + window.showWarningMessage(openingFailureWarning); } return didOpen; }); diff --git a/test/extension.test.ts b/test/extension.test.ts index 687048186..3e3db1976 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -34,6 +34,7 @@ suite('Java Language Extension', () => { Commands.APPLY_WORKSPACE_EDIT, Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG, + Commands.OPEN_CLIENT_LOG, Commands.COMPILE_WORKSPACE, Commands.OPEN_FORMATTER, Commands.CLEAN_WORKSPACE, From 8fda1d0e6a78dc3e0ee4343fdf1b755352c4aa39 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 17 Jul 2019 19:28:06 +0200 Subject: [PATCH 0436/1435] Changelog for the 0.47.0 release Signed-off-by: Fred Bricon --- CHANGELOG.md | 16 ++++++++++++++++ README.md | 7 ++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c51fb8838..f0d04c203 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log +## 0.47.0 (July 19th, 2019) +* enhancement - trigger client autorename after 'extract to variable/constant/method'. See [#333](https://github.com/redhat-developer/vscode-java/issues/333). +* enhancement - added support for semantic selection. See [#780](https://github.com/redhat-developer/vscode-java/issues/780). +* enhancement - Maven projects use the latest Execution Environment when source/target is not yet supported. See [#951](https://github.com/redhat-developer/vscode-java/issues/951). +* enhancement - added code action to convert a local variable to a field. See [#971](https://github.com/redhat-developer/vscode-java/pull/971). +* enhancement - added additional Gradle preferences. See [#973](https://github.com/redhat-developer/vscode-java/pull/973). +* enhancement - added new command to open the Java extension log. See [#985](https://github.com/redhat-developer/vscode-java/issues/985). +* enhancement - prevented aggressive classpath updates when jars don't change. See [JLS#1078](https://github.com/eclipse/eclipse.jdt.ls/pull/1078). +* enhancement - new extension point to register static commands during JDT LS initialization . See [JLS#1084](https://github.com/eclipse/eclipse.jdt.ls/issues/1084). +* bug fix - fixed "Extract Variable" returning a wrong cursor position. See [#952](https://github.com/redhat-developer/vscode-java/issues/952). +* bug fix - use the default `GRADLE_USER_HOME` env var if possible, for Gradle wrappers and modules. See [JLS#1072](https://github.com/eclipse/eclipse.jdt.ls/pull/1072). +* bug fix - fixed signature help returning the wrong active parameter. See [JLS#1039](https://github.com/eclipse/eclipse.jdt.ls/issues/1039). +* bug fix - fixed signature help stopped working after using a lambda. See [JLS#1086](https://github.com/eclipse/eclipse.jdt.ls/issues/1086). +* debt - replaced vscode package with @types/vscode. See [#977](https://github.com/redhat-developer/vscode-java/issues/977). +* documentation - setup the project for development. See [#949](https://github.com/redhat-developer/vscode-java/issues/949.) + ## 0.46.0 (June 5th, 2019) * enhancement - new 'try with resources' snippet, triggered by `try_resources`. See [#932](https://github.com/redhat-developer/vscode-java/pull/932). * enhancement - new 'private field' snippet, triggered by `prf`. See [#933](https://github.com/redhat-developer/vscode-java/pull/933). diff --git a/README.md b/README.md index 6bf5cbaa0..583c0ea53 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Features * Code formatting (on-type/selection/file) * Code snippets * Annotation processing support (automatic for Maven projects) +* Semantic selection Please note that [Gradle-based Android projects are not supported](https://github.com/redhat-developer/vscode-java/issues/10#issuecomment-268834749). @@ -58,7 +59,8 @@ Available commands ========================== The following commands are available: - `Java:Update Project configuration` (`Shift+Alt+U`): is available when the editor is focused on a Maven pom.xml or a Gradle file. It forces project configuration / classpath updates (eg. dependency changes or Java compilation level), according to the project build descriptor. -- `Java:Open Java Language Server log file`: opens the Java Language Server log file, useful for troubleshooting problems. +- `Java:Open Java language server log file`: opens the Java Language Server log file, useful for troubleshooting problems. +- `Java:Open Java extension log file`: opens the Java extension log file, useful for troubleshooting problems. - `Java:Force Java compilation` (`Shift+Alt+B`): manually triggers compilation of the workspace. - `Java:Open Java formatter settings`: Open the Eclipse formatter settings. Creates a new settings file if none exists. - `Java:Clean the Java language server workspace`: Clean the Java language server workspace. @@ -98,7 +100,6 @@ The following settings are supported: * `java.completion.enabled` : Enable/disable code completion support. * `java.configuration.checkProjectSettingsExclusions`: Checks if the extension-generated project settings files (`.project`, `.classpath`, `.factorypath`, `.settings/`) should be excluded from the file explorer. Defaults to `true`. * `java.foldingRange.enabled`: Enable/disable smart folding range support. If disabled, it will use the default indentation-based folding range provided by VS Code. -* `java.selectionRange.enabled`: Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection. * `java.maven.downloadSources`: Enable/disable eager download of Maven source artifacts. * `java.codeGeneration.hashCodeEquals.useInstanceof`: Use 'instanceof' to compare types when generating the hashCode and equals methods. Defaults to `false`. * `java.codeGeneration.hashCodeEquals.useJava7Objects`: Use Objects.hash and Objects.equals when generating the hashCode and equals methods. This setting only applies to Java 7 and higher. Defaults to `false`. @@ -115,7 +116,7 @@ The following settings are supported: * `java.import.gradle.arguments`: Arguments to pass to Gradle. * `java.import.gradle.jvmArguments`: JVM arguments to pass to Gradle. * `java.import.gradle.home`: setting for GRADLE_HOME. -* `java.selectionRange.enabled`: Setting for Smart Selection support for Java. When it's on, Expand/Shrink Selection works better for Java code. +* `java.selectionRange.enabled`: Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection. Troubleshooting =============== From 418334b7093670ce4ceb7f83c89b5e4741d0d34a Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 17 Jul 2019 19:47:42 +0200 Subject: [PATCH 0437/1435] npm audit fix Signed-off-by: Fred Bricon --- package-lock.json | 43 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 804c2b5e0..ede9eb961 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4325,9 +4325,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -5452,9 +5452,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -6337,38 +6337,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "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" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { From 13235c83d581564c5b442477938d5af906e381ea Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 18 Jul 2019 15:09:34 +0200 Subject: [PATCH 0438/1435] Fix typo and update release date in changelog Signed-off-by: Fred Bricon --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0d04c203..21a83f078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 0.47.0 (July 19th, 2019) +## 0.47.0 (July 18th, 2019) * enhancement - trigger client autorename after 'extract to variable/constant/method'. See [#333](https://github.com/redhat-developer/vscode-java/issues/333). * enhancement - added support for semantic selection. See [#780](https://github.com/redhat-developer/vscode-java/issues/780). * enhancement - Maven projects use the latest Execution Environment when source/target is not yet supported. See [#951](https://github.com/redhat-developer/vscode-java/issues/951). @@ -14,7 +14,7 @@ * bug fix - fixed signature help returning the wrong active parameter. See [JLS#1039](https://github.com/eclipse/eclipse.jdt.ls/issues/1039). * bug fix - fixed signature help stopped working after using a lambda. See [JLS#1086](https://github.com/eclipse/eclipse.jdt.ls/issues/1086). * debt - replaced vscode package with @types/vscode. See [#977](https://github.com/redhat-developer/vscode-java/issues/977). -* documentation - setup the project for development. See [#949](https://github.com/redhat-developer/vscode-java/issues/949.) +* documentation - setup the project for development. See [#949](https://github.com/redhat-developer/vscode-java/issues/949). ## 0.46.0 (June 5th, 2019) * enhancement - new 'try with resources' snippet, triggered by `try_resources`. See [#932](https://github.com/redhat-developer/vscode-java/pull/932). From b811c79f3acd199bbe7aafe9a3127550fda5844e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 18 Jul 2019 19:02:29 +0200 Subject: [PATCH 0439/1435] Upversion to 0.48.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ede9eb961..98e649e22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.47.0", + "version": "0.48.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e8a2c4981..16061205b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.47.0", + "version": "0.48.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From 00200318212b439036861513899f352149e1d55c Mon Sep 17 00:00:00 2001 From: Rome Li Date: Thu, 18 Jul 2019 11:38:41 +0800 Subject: [PATCH 0440/1435] Rotate client log file daily Signed-off-by: Rome Li --- package-lock.json | 72 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- src/extension.ts | 18 ++++++++++-- src/log.ts | 8 ++++-- 4 files changed, 95 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98e649e22..d15dd5172 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1392,6 +1392,11 @@ "randomfill": "^1.0.3" } }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -2140,6 +2145,14 @@ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", "dev": true }, + "file-stream-rotator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", + "requires": { + "moment": "^2.11.2" + } + }, "file-type": { "version": "3.9.0", "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", @@ -4431,6 +4444,11 @@ "normalize-path": "^2.1.1" } }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -4654,6 +4672,11 @@ } } }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + }, "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", @@ -6939,6 +6962,55 @@ } } }, + "winston-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.4.tgz", + "integrity": "sha512-mMEfFsSm6GmkFF+f4/0UJtG4N1vSaczGmXLVJYmS/+u2zUaIPcw2ZRuwUg2TvVBjswgiraN+vNnAG8z4fRUZ4w==", + "requires": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "requires": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "dependencies": { + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + } + } + }, "winston-transport": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", diff --git a/package.json b/package.json index 16061205b..66445cf4a 100644 --- a/package.json +++ b/package.json @@ -537,6 +537,7 @@ "path-exists": "^3.0.0", "expand-home-dir": "^0.0.3", "glob": "^7.1.3", - "winston": "^3.2.1" + "winston": "^3.2.1", + "winston-daily-rotate-file": "^3.10.0" } } diff --git a/src/extension.ts b/src/extension.ts index 2c4cf280c..c003cfd9b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -21,6 +21,7 @@ import * as net from 'net'; import { getJavaConfiguration } from './utils'; import { onConfigurationChange, excludeProjectSettingsFiles } from './settings'; import { logger, initializeLogFile } from './log'; +import glob = require('glob'); let lastStatus; let languageClient: LanguageClient; @@ -497,8 +498,21 @@ function openServerLogFile(workspacePath): Thenable { return openLogFile(serverLogFile, 'Could not open Java Language Server log file'); } -function openClientLogFile(logFile): Thenable { - return openLogFile(logFile, 'Could not open Java extension log file'); +function openClientLogFile(logFile: string): Thenable { + return new Promise((resolve) => { + const filename = path.basename(logFile); + const dirname = path.dirname(logFile); + + // find out the newest one + glob(filename + '.*', { cwd: dirname }, (err, files) => { + if (!err && files.length > 0) { + files.sort(); + logFile = path.join(dirname, files[files.length - 1]); + } + + openLogFile(logFile, 'Could not open Java extension log file').then((result) => resolve(result)); + }); + }); } diff --git a/src/log.ts b/src/log.ts index e8f4432c1..3f248e953 100644 --- a/src/log.ts +++ b/src/log.ts @@ -1,10 +1,12 @@ import { createLogger, format, transports } from 'winston'; +import * as DailyRotateFile from 'winston-daily-rotate-file'; export function initializeLogFile(filename: string) { - logger.add(new transports.File({ + logger.add(new DailyRotateFile({ filename: filename, - maxsize: 100 * 1024, // 100k max size per file - maxFiles: 2 // the last 100k of logs are always available + datePattern: 'YYYY-MM-DD', + maxSize: '100k', // 100k max size per file + maxFiles: '2d' // retain logs of the last two days })); } From 6690072208bdf423b0a0dc3eff9f47c40341372f Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Tue, 23 Jul 2019 10:13:07 +0800 Subject: [PATCH 0441/1435] Enable the 'invert local variable' fix Signed-off-by: Sheng Chen --- src/refactorAction.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 658e8e082..913b829ae 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -14,7 +14,7 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E try { const uri: Uri = Uri.parse(position.uri); const document: TextDocument = await workspace.openTextDocument(uri); - if (document == null) { + if (document === null) { return; } @@ -34,7 +34,8 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E || command === 'extractConstant' || command === 'extractMethod' || command === 'extractField' - || command === 'convertVariableToField') { + || command === 'convertVariableToField' + || command === 'invertVariable') { const currentEditor = window.activeTextEditor; if (!currentEditor || !currentEditor.options) { return; @@ -80,7 +81,7 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E if (edit) { await workspace.applyEdit(edit); } - + if (result.command) { if (result.command.arguments) { await commands.executeCommand(result.command.command, ...result.command.arguments); From 1f57f69597eec81767f94b03708454d48d802cdf Mon Sep 17 00:00:00 2001 From: Yan Zhang Date: Thu, 1 Aug 2019 18:10:33 +0800 Subject: [PATCH 0442/1435] Can find Oracle JDK from Windows Registry (#1010) Update to find-java-home@1.0.0 Signed-off-by: Yan Zhang --- package-lock.json | 52 ++++++++++++++++++++++----------------------- package.json | 2 +- src/requirements.ts | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index d15dd5172..31cde6811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "dependencies": { "@types/glob": { "version": "5.0.30", - "resolved": "http://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", "integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", "dev": true, "requires": { @@ -281,7 +281,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -382,7 +382,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-map": { @@ -867,7 +867,7 @@ }, "buffer": { "version": "3.6.0", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "dev": true, "requires": { @@ -995,7 +995,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -1473,7 +1473,7 @@ "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", "dev": true, "requires": { "file-type": "^5.2.0", @@ -1492,7 +1492,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", "dev": true, "requires": { "decompress-tar": "^4.1.0", @@ -1505,7 +1505,7 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", "dev": true } } @@ -1513,7 +1513,7 @@ "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", "dev": true, "requires": { "decompress-tar": "^4.1.1", @@ -2155,7 +2155,7 @@ }, "file-type": { "version": "3.9.0", - "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", "dev": true }, @@ -2194,9 +2194,9 @@ } }, "find-java-home": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-0.2.0.tgz", - "integrity": "sha512-nq5PFOHxE1VSEbdDVkLoA2bAcRnG4ETqJO8ipFq3glIWA52hdWCXYX3emuUyMAQfaqFU4Ea85gqcgaPmOApEPA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-1.0.0.tgz", + "integrity": "sha512-eqC9OCUT3stF1zfDJ/g0Uz9XFPi5X+2ZAv84Y+itA2x5scCe6GCF585re8YjjoJeIOipjNMRMM7s2E3ige+6+w==", "requires": { "which": "~1.0.5", "winreg": "~1.2.2" @@ -3194,7 +3194,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -3592,7 +3592,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { @@ -3708,7 +3708,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -4296,14 +4296,14 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -4360,7 +4360,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -4369,7 +4369,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -4784,7 +4784,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-defer": { @@ -4916,7 +4916,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { @@ -4984,7 +4984,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -5031,7 +5031,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -5876,7 +5876,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5895,7 +5895,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", "dev": true, "requires": { "is-natural-number": "^4.0.1" diff --git a/package.json b/package.json index 66445cf4a..42eb3b6e3 100644 --- a/package.json +++ b/package.json @@ -532,7 +532,7 @@ }, "dependencies": { "vscode-languageclient": "5.3.0-next.6", - "find-java-home": "0.2.0", + "find-java-home": "1.0.0", "tmp": "^0.0.33", "path-exists": "^3.0.0", "expand-home-dir": "^0.0.3", diff --git a/src/requirements.ts b/src/requirements.ts index 0c6a684d0..81cc13def 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -5,7 +5,7 @@ import * as cp from 'child_process'; import * as path from 'path'; import * as pathExists from 'path-exists'; import * as expandHomeDir from 'expand-home-dir'; -import * as findJavaHome from 'find-java-home'; +import findJavaHome = require("find-java-home"); import { Commands } from './commands'; const isWindows = process.platform.indexOf('win') === 0; From 0783074164d74daf9207a377f496fc0088f86f1f Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Fri, 2 Aug 2019 18:50:31 +0800 Subject: [PATCH 0443/1435] Enable 'Move...' in Refactor menu (#979) Signed-off-by: Jinbo Wang --- src/extension.ts | 1 + src/protocol.ts | 30 +++++++ src/refactorAction.ts | 178 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 196 insertions(+), 13 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index c003cfd9b..75266d701 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -80,6 +80,7 @@ export function activate(context: ExtensionContext): Promise { generateConstructorsPromptSupport: true, generateDelegateMethodsPromptSupport: true, advancedExtractRefactoringSupport: true, + moveRefactoringSupport: true, }, triggerFiles: getTriggerFiles() }, diff --git a/src/protocol.ts b/src/protocol.ts index aad0512cb..01850e976 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -288,6 +288,7 @@ export interface RenamePosition { export interface RefactorWorkspaceEdit { edit: WorkspaceEdit; command?: Command; + errorMessage?: string; } export interface GetRefactorEditParams { @@ -300,3 +301,32 @@ export interface GetRefactorEditParams { export namespace GetRefactorEditRequest { export const type = new RequestType('java/getRefactorEdit'); } + +export interface PackageNode { + displayName: string; + uri: string; + path: string; + project: string; + isDefaultPackage: boolean; + isParentOfSelectedFile: boolean; +} + +export interface MoveParams { + moveKind: string; + sourceUris: string[]; + params: CodeActionParams; + destination?: any; + updateReferences?: boolean; +} + +export interface MoveDestinationsResponse { + destinations: any[]; +} + +export namespace GetMoveDestinationsRequest { + export const type = new RequestType('java/getMoveDestinations'); +} + +export namespace MoveRequest { + export const type = new RequestType('java/move'); +} diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 913b829ae..dadc8c2ef 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -1,9 +1,11 @@ 'use strict'; -import { commands, window, ExtensionContext, workspace, Position, Uri, TextDocument } from 'vscode'; -import { LanguageClient, FormattingOptions } from 'vscode-languageclient'; +import { existsSync } from 'fs'; +import * as path from 'path'; +import { commands, ExtensionContext, Position, TextDocument, Uri, window, workspace } from 'vscode'; +import { FormattingOptions, LanguageClient, WorkspaceEdit, CreateFile, RenameFile, DeleteFile, TextDocumentEdit } from 'vscode-languageclient'; import { Commands as javaCommands } from './commands'; -import { GetRefactorEditRequest, RefactorWorkspaceEdit, RenamePosition } from './protocol'; +import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerApplyRefactorCommand(languageClient, context); @@ -73,22 +75,172 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E commandArguments, }); - if (!result || !result.edit) { + await applyRefactorEdit(languageClient, result); + } else if (command === 'moveFile') { + if (!commandInfo || !commandInfo.uri) { return; } - const edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(result.edit); - if (edit) { - await workspace.applyEdit(edit); + await moveFile(languageClient, [Uri.parse(commandInfo.uri)]); + } + })); +} + +async function applyRefactorEdit(languageClient: LanguageClient, refactorEdit: RefactorWorkspaceEdit) { + if (!refactorEdit) { + return; + } + + if (refactorEdit.errorMessage) { + window.showErrorMessage(refactorEdit.errorMessage); + return; + } + + if (refactorEdit.edit) { + const edit = languageClient.protocol2CodeConverter.asWorkspaceEdit(refactorEdit.edit); + if (edit) { + await workspace.applyEdit(edit); + } + } + + if (refactorEdit.command) { + if (refactorEdit.command.arguments) { + await commands.executeCommand(refactorEdit.command.command, ...refactorEdit.command.arguments); + } else { + await commands.executeCommand(refactorEdit.command.command); + } + } +} + +async function moveFile(languageClient: LanguageClient, fileUris: Uri[]) { + if (!hasCommonParent(fileUris)) { + window.showErrorMessage("Moving files from different directories are not supported. Please make sure they are from the same directory."); + return; + } + + const moveDestinations = await languageClient.sendRequest(GetMoveDestinationsRequest.type, { + moveKind: 'moveResource', + sourceUris: fileUris.map(uri => uri.toString()) + }); + if (!moveDestinations || !moveDestinations.destinations || !moveDestinations.destinations.length) { + window.showErrorMessage("Cannot find available Java packages to move the selected files to."); + return; + } + + const packageNodeItems = moveDestinations.destinations.map((packageNode) => { + const packageUri: Uri = packageNode.uri ? Uri.parse(packageNode.uri) : null; + const displayPath: string = packageUri ? workspace.asRelativePath(packageUri, true) : packageNode.path; + return { + label: (packageNode.isParentOfSelectedFile ? '* ' : '') + packageNode.displayName, + description: displayPath, + packageNode, + } + }); + + let placeHolder = (fileUris.length === 1) ? `Choose the target package for ${getFileNameFromUri(fileUris[0])}.` + : `Choose the target package for ${fileUris.length} selected files.`; + let selectPackageNodeItem = await window.showQuickPick(packageNodeItems, { + placeHolder, + }); + if (!selectPackageNodeItem) { + return; + } + + const packageUri: Uri = selectPackageNodeItem.packageNode.uri ? Uri.parse(selectPackageNodeItem.packageNode.uri) : null; + if (packageUri && packageUri.fsPath) { + const duplicatedFiles: string[] = []; + const moveUris: Uri[] = []; + for (const uri of fileUris) { + const fileName: string = getFileNameFromUri(uri); + if (existsSync(path.join(packageUri.fsPath, fileName))) { + duplicatedFiles.push(fileName); + } else { + moveUris.push(uri); } + } + + if (duplicatedFiles.length) { + window.showWarningMessage(`The files '${duplicatedFiles.join(',')}' already exist in the package '${selectPackageNodeItem.packageNode.displayName}'. The move operation will ignore them.`); + } + + if (!moveUris.length) { + return; + } + + fileUris = moveUris; + } + + const refactorEdit: RefactorWorkspaceEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveResource', + sourceUris: fileUris.map(uri => uri.toString()), + params: null, + destination: selectPackageNodeItem.packageNode, + updateReferences: true, + }); + + await applyRefactorEdit(languageClient, refactorEdit); + if (refactorEdit && refactorEdit.edit) { + await saveEdit(refactorEdit.edit); + } +} + +function getFileNameFromUri(uri: Uri): string { + return uri.fsPath.replace(/^.*[\\\/]/, ''); +} + +function hasCommonParent(uris: Uri[]): boolean { + if (uris == null || uris.length <= 1) { + return true; + } + + const firstParent: string = path.dirname(uris[0].fsPath); + for (let i = 1; i < uris.length; i++) { + const parent = path.dirname(uris[i].fsPath); + if (path.relative(firstParent, parent) !== '.') { + return false; + } + } - if (result.command) { - if (result.command.arguments) { - await commands.executeCommand(result.command.command, ...result.command.arguments); - } else { - await commands.executeCommand(result.command.command); + return true; +} + +async function saveEdit(edit: WorkspaceEdit) { + if (!edit) { + return; + } + + const touchedFiles: Set = new Set(); + if (edit.changes) { + for (const uri of Object.keys(edit.changes)) { + touchedFiles.add(uri); + } + } + + if (edit.documentChanges) { + for (const change of edit.documentChanges) { + const kind = ( change).kind; + if (kind === 'rename') { + if (touchedFiles.has(( change).oldUri)) { + touchedFiles.delete(( change).oldUri); + touchedFiles.add(( change).newUri); } + } else if (kind === 'delete') { + if (touchedFiles.has(( change).uri)) { + touchedFiles.delete(( change).uri); + } + } else if (!kind) { + touchedFiles.add(( change).textDocument.uri); } } - })); + } + + for (const fileUri of touchedFiles) { + const uri: Uri = Uri.parse(fileUri); + const document: TextDocument = await workspace.openTextDocument(uri); + if (document == null) { + continue; + } + + await document.save(); + } } From 56138b677f11b3a308aa409368113f3e49d39912 Mon Sep 17 00:00:00 2001 From: Yan Zhang Date: Thu, 1 Aug 2019 12:46:17 +0800 Subject: [PATCH 0444/1435] Fix tslint Signed-off-by: Yan Zhang --- .travis.yml | 1 + package.json | 3 ++- src/commands.ts | 3 +-- src/extension.ts | 3 +-- src/sourceAction.ts | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index d606e7068..b9d6b9c92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,4 +31,5 @@ install: - ls -ll java-*vsix script: +- npm run tslint - npm test --silent diff --git a/package.json b/package.json index 42eb3b6e3..a262f62f5 100644 --- a/package.json +++ b/package.json @@ -510,7 +510,8 @@ "pretest": "npm run compile", "test": "node ./out/test/runtest.js", "build-server": "./node_modules/.bin/gulp build_server", - "watch-server": "./node_modules/.bin/gulp watch_server" + "watch-server": "./node_modules/.bin/gulp watch_server", + "tslint": "tslint -p ." }, "devDependencies": { "@types/glob": "5.0.30", diff --git a/src/commands.ts b/src/commands.ts index 3ac381cdd..a22f8542e 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -79,7 +79,6 @@ export namespace Commands { */ export const OPEN_CLIENT_LOG = 'java.open.clientLog'; - /** * Open Java formatter settings */ @@ -152,4 +151,4 @@ export namespace Commands { * Rename Command. */ export const RENAME_COMMAND = 'java.action.rename'; -} \ No newline at end of file +} diff --git a/src/extension.ts b/src/extension.ts index 75266d701..48d8d2ee6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -516,8 +516,7 @@ function openClientLogFile(logFile: string): Thenable { }); } - -function openLogFile(logFile, openingFailureWarning:string ): Thenable { +function openLogFile(logFile, openingFailureWarning: string): Thenable { if (!fs.existsSync(logFile)) { return window.showWarningMessage('No log file available').then(() => false); } diff --git a/src/sourceAction.ts b/src/sourceAction.ts index 21f0c8b9a..404286b62 100644 --- a/src/sourceAction.ts +++ b/src/sourceAction.ts @@ -223,7 +223,7 @@ function registerGenerateAccessorsCommand(languageClient: LanguageClient, contex } return { label: accessor.fieldName, - description: (accessor.isStatic?'static ':'')+ description.join(', '), + description: (accessor.isStatic ? 'static ' : '')+ description.join(', '), originalField: accessor, }; }); @@ -323,12 +323,12 @@ function registerGenerateDelegateMethodsCommand(languageClient: LanguageClient, selectedDelegateField = selectedFieldItem.originalField; } - let delegateEntryItems = selectedDelegateField.delegateMethods.map(delegateMethod => { + const delegateEntryItems = selectedDelegateField.delegateMethods.map(delegateMethod => { return { label: `${selectedDelegateField.field.name}.${delegateMethod.name}(${delegateMethod.parameters.join(',')})`, originalField: selectedDelegateField.field, originalMethod: delegateMethod, - } + }; }); if (!delegateEntryItems.length) { @@ -356,4 +356,4 @@ function registerGenerateDelegateMethodsCommand(languageClient: LanguageClient, }); applyWorkspaceEdit(workspaceEdit, languageClient); })); -} \ No newline at end of file +} From 9359130e281c3e80ee550b8e5cc6434c16ac6ff3 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 2 Aug 2019 12:54:35 +0200 Subject: [PATCH 0445/1435] Switch recommended tslint extension to ms-vscode.vscode-typescript-tslint-plugin Signed-off-by: Fred Bricon --- .vscode/extensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ad475c77a..c81530615 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,7 +3,7 @@ // for the documentation about the extensions.json format "recommendations": [ // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - "eg2.tslint", + "ms-vscode.vscode-typescript-tslint-plugin", "EditorConfig.EditorConfig" ] } \ No newline at end of file From 0c6d585ee969f09b7c5c7e07b52140af6ff9876e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 2 Aug 2019 13:04:49 +0200 Subject: [PATCH 0446/1435] Fix tslint issues Signed-off-by: Fred Bricon --- src/refactorAction.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/refactorAction.ts b/src/refactorAction.ts index dadc8c2ef..2a725645c 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -130,16 +130,16 @@ async function moveFile(languageClient: LanguageClient, fileUris: Uri[]) { const packageNodeItems = moveDestinations.destinations.map((packageNode) => { const packageUri: Uri = packageNode.uri ? Uri.parse(packageNode.uri) : null; const displayPath: string = packageUri ? workspace.asRelativePath(packageUri, true) : packageNode.path; - return { - label: (packageNode.isParentOfSelectedFile ? '* ' : '') + packageNode.displayName, - description: displayPath, - packageNode, - } + return { + label: (packageNode.isParentOfSelectedFile ? '* ' : '') + packageNode.displayName, + description: displayPath, + packageNode, + }; }); - let placeHolder = (fileUris.length === 1) ? `Choose the target package for ${getFileNameFromUri(fileUris[0])}.` + const placeHolder = (fileUris.length === 1) ? `Choose the target package for ${getFileNameFromUri(fileUris[0])}.` : `Choose the target package for ${fileUris.length} selected files.`; - let selectPackageNodeItem = await window.showQuickPick(packageNodeItems, { + const selectPackageNodeItem = await window.showQuickPick(packageNodeItems, { placeHolder, }); if (!selectPackageNodeItem) { @@ -189,7 +189,7 @@ function getFileNameFromUri(uri: Uri): string { } function hasCommonParent(uris: Uri[]): boolean { - if (uris == null || uris.length <= 1) { + if (uris === null || uris.length <= 1) { return true; } @@ -237,7 +237,7 @@ async function saveEdit(edit: WorkspaceEdit) { for (const fileUri of touchedFiles) { const uri: Uri = Uri.parse(fileUri); const document: TextDocument = await workspace.openTextDocument(uri); - if (document == null) { + if (document === null) { continue; } From 2e4dbb975f81d153ea4a89fc5a502000d5e55fef Mon Sep 17 00:00:00 2001 From: Rome Li Date: Mon, 5 Aug 2019 21:46:09 +0800 Subject: [PATCH 0447/1435] Log language client failures (#1015) Signed-off-by: Rome Li --- src/extension.ts | 50 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 48d8d2ee6..501ff4781 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,7 +4,7 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter } from 'vscode'; -import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier } from 'vscode-languageclient'; +import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier, ErrorHandler, Message, ErrorAction, CloseAction, InitializationFailedHandler } from 'vscode-languageclient'; import { onExtensionChange, collectJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; import * as requirements from './requirements'; @@ -27,8 +27,47 @@ let lastStatus; let languageClient: LanguageClient; const jdtEventEmitter = new EventEmitter(); const cleanWorkspaceFileName = '.cleanWorkspace'; +const extensionName = 'Language Support for Java'; let clientLogFile; +class ClientErrorHandler implements ErrorHandler { + private restarts: number[]; + + constructor(private name: string) { + this.restarts = []; + } + + public error(_error: Error, _message: Message, count: number): ErrorAction { + if (count && count <= 3) { + logger.error(`${this.name} server encountered error: ${_message}, ${_error && _error.toString()}`); + return ErrorAction.Continue; + } + + logger.error(`${this.name} server encountered error and will shut down: ${_message}, ${_error && _error.toString()}`); + return ErrorAction.Shutdown; + } + + public closed(): CloseAction { + this.restarts.push(Date.now()); + if (this.restarts.length < 5) { + logger.error(`The ${this.name} server crashed and will restart.`); + return CloseAction.Restart; + } else { + const diff = this.restarts[this.restarts.length - 1] - this.restarts[0]; + if (diff <= 3 * 60 * 1000) { + const message = `The ${this.name} server crashed 5 times in the last 3 minutes. The server will not be restarted.`; + logger.error(message); + window.showErrorMessage(message); + return CloseAction.DoNotRestart; + } + + logger.error(`The ${this.name} server crashed and will restart.`); + this.restarts.shift(); + return CloseAction.Restart; + } + } +} + export function activate(context: ExtensionContext): Promise { let storagePath = context.storagePath; @@ -84,7 +123,12 @@ export function activate(context: ExtensionContext): Promise { }, triggerFiles: getTriggerFiles() }, - revealOutputChannelOn: RevealOutputChannelOn.Never + revealOutputChannelOn: RevealOutputChannelOn.Never, + errorHandler: new ClientErrorHandler(extensionName), + initializationFailedHandler: error => { + logger.error(`Failed to initialize ${extensionName} due to ${error && error.toString()}`); + return true; + } }; const item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); @@ -114,7 +158,7 @@ export function activate(context: ExtensionContext): Promise { } // Create the language client and start the client. - languageClient = new LanguageClient('java', 'Language Support for Java', serverOptions, clientOptions); + languageClient = new LanguageClient('java', extensionName, serverOptions, clientOptions); languageClient.registerProposedFeatures(); languageClient.onReady().then(() => { From ebd8d06b50cabdac5279e5ed0966f275de508058 Mon Sep 17 00:00:00 2001 From: Rome Li Date: Thu, 8 Aug 2019 17:14:06 +0800 Subject: [PATCH 0448/1435] Open client/server logs SxS (#1021) Signed-off-by: Rome Li --- package.json | 5 +++++ src/commands.ts | 5 +++++ src/extension.ts | 31 +++++++++++++++++++++---------- test/extension.test.ts | 1 + 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index a262f62f5..007f687d7 100644 --- a/package.json +++ b/package.json @@ -398,6 +398,11 @@ "title": "Open Java extension log file", "category": "Java" }, + { + "command": "java.open.logs", + "title": "Open all log files", + "category": "Java" + }, { "command": "java.workspace.compile", "title": "Force Java compilation", diff --git a/src/commands.ts b/src/commands.ts index a22f8542e..aabdc10f6 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -79,6 +79,11 @@ export namespace Commands { */ export const OPEN_CLIENT_LOG = 'java.open.clientLog'; + /** + * Open Java log files side by side + */ + export const OPEN_LOGS = 'java.open.logs'; + /** * Open Java formatter settings */ diff --git a/src/extension.ts b/src/extension.ts index 501ff4781..6f4c38d30 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -57,7 +57,12 @@ class ClientErrorHandler implements ErrorHandler { if (diff <= 3 * 60 * 1000) { const message = `The ${this.name} server crashed 5 times in the last 3 minutes. The server will not be restarted.`; logger.error(message); - window.showErrorMessage(message); + const action = "Show logs"; + window.showErrorMessage(message, action).then(selection => { + if (selection === action) { + commands.executeCommand(Commands.OPEN_LOGS); + } + }); return CloseAction.DoNotRestart; } @@ -376,9 +381,11 @@ export function activate(context: ExtensionContext): Promise { context.subscriptions.push(commands.registerCommand(Commands.OPEN_OUTPUT, () => languageClient.outputChannel.show(ViewColumn.Three))); - context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, () => openServerLogFile(workspacePath))); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, (column: ViewColumn) => openServerLogFile(workspacePath, column))); - context.subscriptions.push(commands.registerCommand(Commands.OPEN_CLIENT_LOG, () => openClientLogFile(clientLogFile))); + context.subscriptions.push(commands.registerCommand(Commands.OPEN_CLIENT_LOG, (column: ViewColumn) => openClientLogFile(clientLogFile, column))); + + context.subscriptions.push(commands.registerCommand(Commands.OPEN_LOGS, () => openLogs())); const extensionPath = context.extensionPath; context.subscriptions.push(commands.registerCommand(Commands.OPEN_FORMATTER, async () => openFormatter(extensionPath))); @@ -538,12 +545,12 @@ function deleteDirectory(dir) { } } -function openServerLogFile(workspacePath): Thenable { +function openServerLogFile(workspacePath, column: ViewColumn = ViewColumn.Active): Thenable { const serverLogFile = path.join(workspacePath, '.metadata', '.log'); - return openLogFile(serverLogFile, 'Could not open Java Language Server log file'); + return openLogFile(serverLogFile, 'Could not open Java Language Server log file', column); } -function openClientLogFile(logFile: string): Thenable { +function openClientLogFile(logFile: string, column: ViewColumn = ViewColumn.Active): Thenable { return new Promise((resolve) => { const filename = path.basename(logFile); const dirname = path.dirname(logFile); @@ -555,12 +562,17 @@ function openClientLogFile(logFile: string): Thenable { logFile = path.join(dirname, files[files.length - 1]); } - openLogFile(logFile, 'Could not open Java extension log file').then((result) => resolve(result)); + openLogFile(logFile, 'Could not open Java extension log file', column).then((result) => resolve(result)); }); }); } -function openLogFile(logFile, openingFailureWarning: string): Thenable { +async function openLogs() { + await commands.executeCommand(Commands.OPEN_CLIENT_LOG, ViewColumn.One); + await commands.executeCommand(Commands.OPEN_SERVER_LOG, ViewColumn.Two); +} + +function openLogFile(logFile, openingFailureWarning: string, column: ViewColumn = ViewColumn.Active): Thenable { if (!fs.existsSync(logFile)) { return window.showWarningMessage('No log file available').then(() => false); } @@ -570,8 +582,7 @@ function openLogFile(logFile, openingFailureWarning: string): Thenable if (!doc) { return false; } - return window.showTextDocument(doc, window.activeTextEditor ? - window.activeTextEditor.viewColumn : undefined) + return window.showTextDocument(doc, column) .then(editor => !!editor); }, () => false) .then(didOpen => { diff --git a/test/extension.test.ts b/test/extension.test.ts index 3e3db1976..7c0354768 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -35,6 +35,7 @@ suite('Java Language Extension', () => { Commands.EXECUTE_WORKSPACE_COMMAND, Commands.OPEN_SERVER_LOG, Commands.OPEN_CLIENT_LOG, + Commands.OPEN_LOGS, Commands.COMPILE_WORKSPACE, Commands.OPEN_FORMATTER, Commands.CLEAN_WORKSPACE, From da07c30de49cabfc3f5bb3b023f3f3aa46ec70e4 Mon Sep 17 00:00:00 2001 From: Rome Li Date: Wed, 7 Aug 2019 11:32:24 +0800 Subject: [PATCH 0449/1435] Log info from output channel Signed-off-by: Rome Li --- src/extension.ts | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 6f4c38d30..6871b37fb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; -import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter } from 'vscode'; +import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position, EventEmitter, OutputChannel } from 'vscode'; import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, Position as LSPosition, Location as LSLocation, StreamInfo, VersionedTextDocumentIdentifier, ErrorHandler, Message, ErrorAction, CloseAction, InitializationFailedHandler } from 'vscode-languageclient'; import { onExtensionChange, collectJavaExtensions } from './plugin'; import { prepareExecutable, awaitServerConnection } from './javaServerStarter'; @@ -73,6 +73,42 @@ class ClientErrorHandler implements ErrorHandler { } } +class OutputInfoCollector implements OutputChannel { + private channel: OutputChannel = null; + + constructor(public name: string) { + this.channel = window.createOutputChannel(this.name); + } + + append(value: string): void { + logger.info(value); + this.channel.append(value); + } + + appendLine(value: string): void { + logger.info(value); + this.channel.appendLine(value); + } + + clear(): void { + this.channel.clear(); + } + + show(preserveFocus?: boolean): void; + show(column?: ViewColumn, preserveFocus?: boolean): void; + show(column?: any, preserveFocus?: any) { + this.channel.show(column, preserveFocus); + } + + hide(): void { + this.channel.hide(); + } + + dispose(): void { + this.channel.dispose(); + } +} + export function activate(context: ExtensionContext): Promise { let storagePath = context.storagePath; @@ -133,7 +169,9 @@ export function activate(context: ExtensionContext): Promise { initializationFailedHandler: error => { logger.error(`Failed to initialize ${extensionName} due to ${error && error.toString()}`); return true; - } + }, + outputChannel: new OutputInfoCollector(extensionName), + outputChannelName: extensionName }; const item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); From 25c7cd4781497f0cbc3effad151491633731a8d8 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Fri, 23 Aug 2019 02:15:13 +0800 Subject: [PATCH 0450/1435] Enable move instance method and static member (#1027) Signed-off-by: Jinbo Wang --- src/protocol.ts | 14 +++++- src/refactorAction.ts | 106 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 117 insertions(+), 3 deletions(-) diff --git a/src/protocol.ts b/src/protocol.ts index 01850e976..cef61530e 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,6 +1,6 @@ 'use strict'; -import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit, FormattingOptions } from 'vscode-languageclient'; +import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit, FormattingOptions, WorkspaceSymbolParams, SymbolInformation } from 'vscode-languageclient'; import { Command, Range } from 'vscode'; /** @@ -152,6 +152,7 @@ export interface VariableBinding { bindingKey: string; name: string; type: string; + isField: boolean; } export interface CheckHashCodeEqualsResponse { @@ -320,6 +321,7 @@ export interface MoveParams { } export interface MoveDestinationsResponse { + errorMessage?: string; destinations: any[]; } @@ -330,3 +332,13 @@ export namespace GetMoveDestinationsRequest { export namespace MoveRequest { export const type = new RequestType('java/move'); } + +export interface SearchSymbolParams extends WorkspaceSymbolParams { + projectName: string; + maxResults?: number; + sourceOnly?: boolean; +} + +export namespace SearchSymbols { + export const type = new RequestType('java/searchSymbols'); +} diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 2a725645c..748c454ce 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -3,9 +3,9 @@ import { existsSync } from 'fs'; import * as path from 'path'; import { commands, ExtensionContext, Position, TextDocument, Uri, window, workspace } from 'vscode'; -import { FormattingOptions, LanguageClient, WorkspaceEdit, CreateFile, RenameFile, DeleteFile, TextDocumentEdit } from 'vscode-languageclient'; +import { FormattingOptions, LanguageClient, WorkspaceEdit, CreateFile, RenameFile, DeleteFile, TextDocumentEdit, CodeActionParams } from 'vscode-languageclient'; import { Commands as javaCommands } from './commands'; -import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest } from './protocol'; +import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest, SearchSymbols } from './protocol'; export function registerCommands(languageClient: LanguageClient, context: ExtensionContext) { registerApplyRefactorCommand(languageClient, context); @@ -82,6 +82,10 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E } await moveFile(languageClient, [Uri.parse(commandInfo.uri)]); + } else if (command === 'moveInstanceMethod') { + await moveInstanceMethod(languageClient, params, commandInfo); + } else if (command === 'moveStaticMember') { + await moveStaticMember(languageClient, params, commandInfo); } })); } @@ -244,3 +248,101 @@ async function saveEdit(edit: WorkspaceEdit) { await document.save(); } } + +async function moveInstanceMethod(languageClient: LanguageClient, params: CodeActionParams, commandInfo: any) { + const moveDestinations = await languageClient.sendRequest(GetMoveDestinationsRequest.type, { + moveKind: 'moveInstanceMethod', + sourceUris: [ params.textDocument.uri ], + params + }); + if (moveDestinations && moveDestinations.errorMessage) { + window.showErrorMessage(moveDestinations.errorMessage); + return; + } + + if (!moveDestinations || !moveDestinations.destinations || !moveDestinations.destinations.length) { + window.showErrorMessage("Cannot find possible class targets to move the selected method to."); + return; + } + + const destinationNodeItems = moveDestinations.destinations.map((destination) => { + return { + label: `${destination.type} ${destination.name}`, + description: destination.isField ? "Field" : "Method Parameter", + destination, + }; + }); + const methodName = commandInfo && commandInfo.displayName ? commandInfo.displayName : ''; + const selected = await window.showQuickPick(destinationNodeItems, { + placeHolder: `Select the new class for the instance method ${methodName}.`, + }); + if (!selected) { + return; + } + + const refactorEdit: RefactorWorkspaceEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveInstanceMethod', + sourceUris: [ params.textDocument.uri ], + params, + destination: selected.destination, + }); + await applyRefactorEdit(languageClient, refactorEdit); +} + +async function moveStaticMember(languageClient: LanguageClient, params: CodeActionParams, commandInfo: any) { + const memberName = commandInfo && commandInfo.displayName ? commandInfo.displayName : ''; + const exclude: Set = new Set(); + if (commandInfo.enclosingTypeName) { + exclude.add(commandInfo.enclosingTypeName); + // 55: Type, 71: Enum, 81: AnnotationType + if (commandInfo.memberType === 55 || commandInfo.memeberType === 71 + || commandInfo.memberType === 81) { + exclude.add(`${commandInfo.enclosingTypeName}.${commandInfo.displayName}`); + } + } + const picked = await window.showQuickPick( + languageClient.sendRequest(SearchSymbols.type, { + query: '*', + projectName: commandInfo ? commandInfo.projectName : null, + sourceOnly: true, + }).then(types => { + if (types && types.length) { + return types.filter((type) => { + const typeName = type.containerName ? `${type.containerName}.${type.name}` : type.name; + return !exclude.has(typeName); + }).sort((a, b) => { + if (a.name < b.name) { + return -1; + } else if (a.name > b.name) { + return 1; + } + return 0; + }).map((symbol => { + return { + label: symbol.name, + description: symbol.containerName, + symbolNode: symbol, + }; + })); + } else { + return [{ + label: 'No result found', + alwaysShow: true, + description: '', + symbolNode: null, + }]; + } + }), { + placeHolder: `Select the new class for the static member ${memberName}.` + }); + + if (picked && picked.symbolNode) { + const refactorEdit: RefactorWorkspaceEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveStaticMember', + sourceUris: [ params.textDocument.uri ], + params, + destination: picked.symbolNode, + }); + await applyRefactorEdit(languageClient, refactorEdit); + } +} From 722f2f5815fc0d56717e4ddcf3efe74b4e557e8f Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 23 Aug 2019 11:19:50 +0200 Subject: [PATCH 0451/1435] Update lodash.template version to fix vulnerability Signed-off-by: Fred Bricon --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 007f687d7..a1e383613 100644 --- a/package.json +++ b/package.json @@ -534,7 +534,8 @@ "typescript-tslint-plugin": "^0.3.1", "vscode-test": "^1.0.0", "webpack": "^4.27.1", - "webpack-cli": "^3.1.2" + "webpack-cli": "^3.1.2", + "lodash.template": ">=4.5.0" }, "dependencies": { "vscode-languageclient": "5.3.0-next.6", From 77b61ab1dafa3a1f82c4f6b00c73bc3f903a85af Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Fri, 23 Aug 2019 11:20:55 +0200 Subject: [PATCH 0452/1435] Update lodash.template version to fix vulnerability - part 2 Signed-off-by: Fred Bricon --- package-lock.json | 62 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31cde6811..39cb7982a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3178,6 +3178,25 @@ "replace-ext": "0.0.1", "through2": "^2.0.0", "vinyl": "^0.5.0" + }, + "dependencies": { + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + } } }, "object-assign": { @@ -3249,6 +3268,23 @@ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", "dev": true }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", @@ -4080,20 +4116,24 @@ "dev": true }, "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" + "lodash.templatesettings": "^4.0.0" + }, + "dependencies": { + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + } } }, "lodash.templatesettings": { From b26485a174b0eb7576c196cd763fcb64f1f3284f Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 3 Sep 2019 00:22:13 +0800 Subject: [PATCH 0453/1435] Enable to move type to new file (#1041) Signed-off-by: Jinbo Wang --- src/refactorAction.ts | 86 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 9 deletions(-) diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 748c454ce..8efba2b92 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -3,7 +3,7 @@ import { existsSync } from 'fs'; import * as path from 'path'; import { commands, ExtensionContext, Position, TextDocument, Uri, window, workspace } from 'vscode'; -import { FormattingOptions, LanguageClient, WorkspaceEdit, CreateFile, RenameFile, DeleteFile, TextDocumentEdit, CodeActionParams } from 'vscode-languageclient'; +import { FormattingOptions, LanguageClient, WorkspaceEdit, CreateFile, RenameFile, DeleteFile, TextDocumentEdit, CodeActionParams, SymbolInformation } from 'vscode-languageclient'; import { Commands as javaCommands } from './commands'; import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest, SearchSymbols } from './protocol'; @@ -86,6 +86,8 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E await moveInstanceMethod(languageClient, params, commandInfo); } else if (command === 'moveStaticMember') { await moveStaticMember(languageClient, params, commandInfo); + } else if (command === 'moveType') { + await moveType(languageClient, params, commandInfo); } })); } @@ -124,7 +126,8 @@ async function moveFile(languageClient: LanguageClient, fileUris: Uri[]) { const moveDestinations = await languageClient.sendRequest(GetMoveDestinationsRequest.type, { moveKind: 'moveResource', - sourceUris: fileUris.map(uri => uri.toString()) + sourceUris: fileUris.map(uri => uri.toString()), + params: null, }); if (!moveDestinations || !moveDestinations.destinations || !moveDestinations.destinations.length) { window.showErrorMessage("Cannot find available Java packages to move the selected files to."); @@ -300,10 +303,25 @@ async function moveStaticMember(languageClient: LanguageClient, params: CodeActi exclude.add(`${commandInfo.enclosingTypeName}.${commandInfo.displayName}`); } } + + const projectName = commandInfo ? commandInfo.projectName : null; + const picked = await selectTargetClass(languageClient, `Select the new class for the static member ${memberName}.`, projectName, exclude); + if (picked) { + const refactorEdit: RefactorWorkspaceEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveStaticMember', + sourceUris: [ params.textDocument.uri ], + params, + destination: picked, + }); + await applyRefactorEdit(languageClient, refactorEdit); + } +} + +async function selectTargetClass(languageClient: LanguageClient, placeHolder: string, projectName: string, exclude: Set): Promise { const picked = await window.showQuickPick( languageClient.sendRequest(SearchSymbols.type, { query: '*', - projectName: commandInfo ? commandInfo.projectName : null, + projectName, sourceOnly: true, }).then(types => { if (types && types.length) { @@ -333,16 +351,66 @@ async function moveStaticMember(languageClient: LanguageClient, params: CodeActi }]; } }), { - placeHolder: `Select the new class for the static member ${memberName}.` + placeHolder, }); - if (picked && picked.symbolNode) { - const refactorEdit: RefactorWorkspaceEdit = await languageClient.sendRequest(MoveRequest.type, { - moveKind: 'moveStaticMember', + return picked ? picked.symbolNode : null; +} + +async function moveType(languageClient: LanguageClient, params: CodeActionParams, commandInfo: any) { + if (!commandInfo || !commandInfo.supportedDestinationKinds) { + return; + } + + const destinationPickItems: any[] = commandInfo.supportedDestinationKinds.map((kind) => { + if (kind === 'newFile') { + return { + label: `Move type ${commandInfo.displayName} to new file`, + kind, + }; + } else { + return { + label: `Move type ${commandInfo.displayName} to another class`, + kind, + }; + } + }); + + if (!destinationPickItems.length) { + return; + } + + const picked = await window.showQuickPick(destinationPickItems, { + placeHolder: 'What would you like to do?', + }); + if (!picked) { + return; + } + + let refactorEdit: RefactorWorkspaceEdit; + if (picked.kind === 'newFile') { + refactorEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveTypeToNewFile', sourceUris: [ params.textDocument.uri ], params, - destination: picked.symbolNode, }); - await applyRefactorEdit(languageClient, refactorEdit); + } else { + const exclude: Set = new Set(); + if (commandInfo.enclosingTypeName) { + exclude.add(commandInfo.enclosingTypeName); + exclude.add(`${commandInfo.enclosingTypeName}.${commandInfo.displayName}`); + } + + const picked = await selectTargetClass(languageClient, `Select the new class for the type ${commandInfo.displayName}.`, commandInfo.projectName, exclude); + if (picked) { + refactorEdit = await languageClient.sendRequest(MoveRequest.type, { + moveKind: 'moveTypeToClass', + sourceUris: [ params.textDocument.uri ], + params, + destination: picked, + }); + } } + + await applyRefactorEdit(languageClient, refactorEdit); } From 31f44ecef9cdb9a6a83cdb44b971f6bf1f746057 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 3 Sep 2019 10:03:23 +0200 Subject: [PATCH 0454/1435] Changelog for 0.48.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21a83f078..e6f1a9dcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Change Log +## 0.48.0 (September 4th, 2019) +* enhancement - ignore "Unsupported SuppressWarning" warnings by default. See [#507](https://github.com/redhat-developer/vscode-java/issues/507). +* enhancement - code action to move member to another class. See [#980](https://github.com/redhat-developer/vscode-java/issues/980). +* enhancement - code action to move class to another package. See [#1017](https://github.com/redhat-developer/vscode-java/issues/1017). +* enhancement - code action to move inner types to new class. See [#1027](https://github.com/redhat-developer/vscode-java/pull/1027). +* enhancement - code action to 'Invert local variable'. See [#997](https://github.com/redhat-developer/vscode-java/pull/997). +* enhancement - show client & server logs side by side. See [#1016](https://github.com/redhat-developer/vscode-java/issues/1016). +* enhancement - rotate client logs daily. See [#989](https://github.com/redhat-developer/vscode-java/pull/989). +* enhancement - log language client failures. See [#1015](https://github.com/redhat-developer/vscode-java/pull/1015). +* enhancement - code action to create unresolved types. See [JLS#853](https://github.com/eclipse/eclipse.jdt.ls/issues/853). +* enhancement - properly render @ApiNote in javadoc. See [JLS#1069](https://github.com/eclipse/eclipse.jdt.ls/issues/1069). +* enhancement - code action to convert lambda to anonymous class. See [JLS#1119](https://github.com/eclipse/eclipse.jdt.ls/issues/1119). +* bug fix - fixed "Java runtime could not be located" for Windows + Oracle JDK. See [#836](https://github.com/redhat-developer/vscode-java/issues/836). +* bug fix - fixed go to implementation doesn't work for method invocation. See [#886](https://github.com/redhat-developer/vscode-java/issues/886). +* bug fix - fixed find implementation doesn't work on classes. See [JLS#1098](https://github.com/eclipse/eclipse.jdt.ls/issues/1098). +* bug fix - fixed NavigateToDefinitionHandler should not return null. See [JLS#1143](https://github.com/eclipse/eclipse.jdt.ls/pull/1143). +* bug fix - fixed secondary same-line error not reported. See [JLS#1147](https://github.com/eclipse/eclipse.jdt.ls/issues/1147). + ## 0.47.0 (July 18th, 2019) * enhancement - trigger client autorename after 'extract to variable/constant/method'. See [#333](https://github.com/redhat-developer/vscode-java/issues/333). * enhancement - added support for semantic selection. See [#780](https://github.com/redhat-developer/vscode-java/issues/780). From dc440b1f24419fe3f7f662f3d059b7cee4733c61 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Wed, 4 Sep 2019 14:13:47 +0200 Subject: [PATCH 0455/1435] Upversion to 0.49.0 Signed-off-by: Fred Bricon --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39cb7982a..8e4e43161 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.48.0", + "version": "0.49.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a1e383613..772ca6d3c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Red Hat", "icon": "icons/icon128.png", "license": "EPL-1.0", - "version": "0.48.0", + "version": "0.49.0", "publisher": "redhat", "bugs": "https://github.com/redhat-developer/vscode-java/issues", "preview": true, From aaef6e8b0bc0a21c0dc4c060a30953e4646efa3a Mon Sep 17 00:00:00 2001 From: Snjezana Peco Date: Sat, 14 Sep 2019 02:55:10 +0200 Subject: [PATCH 0456/1435] Exclude certain packages from autocomplete/autoimport Signed-off-by: Snjezana Peco --- README.md | 7 ++++--- package.json | 9 +++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 583c0ea53..6a6cd2611 100644 --- a/README.md +++ b/README.md @@ -110,14 +110,15 @@ The following settings are supported: * `java.codeGeneration.toString.skipNullValues`: Skip null values when generating the toString method. Defaults to `false`. * `java.codeGeneration.toString.listArrayContents`: List contents of arrays instead of using native toString(). Defaults to `true`. * `java.codeGeneration.toString.limitElements`: Limit number of items in arrays/collections/maps to list, if 0 then list all. Defaults to `0`. - -*New in 0.47.0* - * `java.import.gradle.arguments`: Arguments to pass to Gradle. * `java.import.gradle.jvmArguments`: JVM arguments to pass to Gradle. * `java.import.gradle.home`: setting for GRADLE_HOME. * `java.selectionRange.enabled`: Enable/disable Smart Selection support for Java. Disabling this option will not affect the VS Code built-in word-based and bracket-based smart selection. +*New in 0.49.0* + +* `java.completion.filteredTypes`: Defines the type filters. All types whose fully qualified name matches the selected filter strings will be ignored in content assist or quick fix proposals and when organizing imports. For example 'java.awt.*' will hide all types from the awt packages. + Troubleshooting =============== 1. Check the status of the language tools on the lower right corner (marked with A on image below). diff --git a/package.json b/package.json index 772ca6d3c..4d0a2ac5a 100644 --- a/package.json +++ b/package.json @@ -263,6 +263,15 @@ ], "scope": "window" }, + "java.completion.filteredTypes": { + "type": "array", + "description": "Defines the type filters. All types whose fully qualified name matches the selected filter strings will be ignored in content assist or quick fix proposals and when organizing imports. For example 'java.awt.*' will hide all types from the awt packages.", + "default": [ + "java.awt.*", + "com.sun.*" + ], + "scope": "window" + }, "java.completion.importOrder": { "type": "array", "description": "Defines the sorting order of import statements. A package or type name prefix (e.g. 'org.eclipse') is a valid entry. An import is always added to the most specific group.", From a24c5e4f9d7b3e23fd7bf9630a09d36286a9d867 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Sun, 15 Sep 2019 14:51:29 +0800 Subject: [PATCH 0457/1435] Support refactoring: Convert anonymous class to nested Signed-off-by: Sheng Chen --- src/refactorAction.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/refactorAction.ts b/src/refactorAction.ts index 8efba2b92..7962e7957 100644 --- a/src/refactorAction.ts +++ b/src/refactorAction.ts @@ -37,7 +37,8 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E || command === 'extractMethod' || command === 'extractField' || command === 'convertVariableToField' - || command === 'invertVariable') { + || command === 'invertVariable' + || command === 'convertAnonymousClassToNestedCommand') { const currentEditor = window.activeTextEditor; if (!currentEditor || !currentEditor.options) { return; From 6671c28cbdaec8764ca2b41e511e72a34bd9046f Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Tue, 17 Sep 2019 17:40:41 +0800 Subject: [PATCH 0458/1435] Use hover to support 'Go To Super Implementation' action (#1053) Signed-off-by: Jinbo Wang --- src/commands.ts | 4 ++ src/extension.api.ts | 6 ++ src/extension.ts | 9 ++- src/hoverAction.ts | 125 +++++++++++++++++++++++++++++++++++++++++ src/protocol.ts | 16 +++++- test/extension.test.ts | 3 +- 6 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 src/hoverAction.ts diff --git a/src/commands.ts b/src/commands.ts index aabdc10f6..8e151e7d7 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -156,4 +156,8 @@ export namespace Commands { * Rename Command. */ export const RENAME_COMMAND = 'java.action.rename'; + /** + * Navigate To Super Method Command. + */ + export const NAVIGATE_TO_SUPER_IMPLEMENTATION_COMMAND = 'java.action.navigateToSuperImplementation'; } diff --git a/src/extension.api.ts b/src/extension.api.ts index c269c5dd0..f47c4e835 100644 --- a/src/extension.api.ts +++ b/src/extension.api.ts @@ -1,7 +1,13 @@ import { RequirementsData } from './requirements'; +import { TextDocumentPositionParams } from 'vscode-languageclient'; +import { CancellationToken, Command, ProviderResult } from 'vscode'; + +export type provideHoverCommandFn = (params: TextDocumentPositionParams, token: CancellationToken) => ProviderResult; +export type registerHoverCommand = (callback: provideHoverCommandFn) => void; export interface ExtensionAPI { readonly apiVersion: string; readonly javaRequirement: RequirementsData; readonly status: "Started" | "Error"; + readonly registerHoverCommand: registerHoverCommand; } diff --git a/src/extension.ts b/src/extension.ts index 6871b37fb..2dbc2a04e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,6 +15,7 @@ import { } from './protocol'; import { ExtensionAPI } from './extension.api'; import * as buildpath from './buildpath'; +import * as hoverAction from './hoverAction'; import * as sourceAction from './sourceAction'; import * as refactorAction from './refactorAction'; import * as net from 'net'; @@ -161,6 +162,7 @@ export function activate(context: ExtensionContext): Promise { generateDelegateMethodsPromptSupport: true, advancedExtractRefactoringSupport: true, moveRefactoringSupport: true, + clientHoverProvider: true, }, triggerFiles: getTriggerFiles() }, @@ -203,6 +205,7 @@ export function activate(context: ExtensionContext): Promise { // Create the language client and start the client. languageClient = new LanguageClient('java', extensionName, serverOptions, clientOptions); languageClient.registerProposedFeatures(); + const registerHoverCommand = hoverAction.registerClientHoverProvider(languageClient, context); languageClient.onReady().then(() => { languageClient.onNotification(StatusNotification.type, (report) => { @@ -215,7 +218,8 @@ export function activate(context: ExtensionContext): Promise { resolve({ apiVersion: '0.2', javaRequirement: requirements, - status: report.type + status: report.type, + registerHoverCommand, }); break; case 'Error': @@ -226,7 +230,8 @@ export function activate(context: ExtensionContext): Promise { resolve({ apiVersion: '0.2', javaRequirement: requirements, - status: report.type + status: report.type, + registerHoverCommand, }); break; case 'Starting': diff --git a/src/hoverAction.ts b/src/hoverAction.ts new file mode 100644 index 000000000..d867102a5 --- /dev/null +++ b/src/hoverAction.ts @@ -0,0 +1,125 @@ +'use strict'; + +import { commands, ExtensionContext, HoverProvider, languages, CancellationToken, Hover, Position, TextDocument, MarkdownString, window, Uri, MarkedString, Command } from "vscode"; +import { LanguageClient, TextDocumentPositionParams, HoverRequest } from "vscode-languageclient"; +import { Commands as javaCommands } from "./commands"; +import { FindLinks } from "./protocol"; +import { registerHoverCommand, provideHoverCommandFn } from "./extension.api"; +import { logger } from "./log"; + +export function registerClientHoverProvider(languageClient: LanguageClient, context: ExtensionContext): registerHoverCommand { + const hoverProvider: JavaHoverProvider = new JavaHoverProvider(languageClient); + hoverProvider.registerHoverCommand(async (params: TextDocumentPositionParams, token: CancellationToken) => { + return await provideHoverCommand(languageClient, params, token); + }); + context.subscriptions.push(languages.registerHoverProvider('java', hoverProvider)); + context.subscriptions.push(commands.registerCommand(javaCommands.NAVIGATE_TO_SUPER_IMPLEMENTATION_COMMAND, (location: any) => { + navigateToSuperImplementation(languageClient, location); + })); + + return hoverProvider.registerHoverCommand; +} + +async function provideHoverCommand(languageClient: LanguageClient, params: TextDocumentPositionParams, token: CancellationToken): Promise { + const response = await languageClient.sendRequest(FindLinks.type, { + type: 'superImplementation', + position: params, + }, token); + if (response && response.length) { + const location = response[0]; + let tooltip; + if (location.kind === 'method') { + tooltip = `Go to super method '${location.displayName}'`; + } else { + tooltip = `Go to super implementation '${location.displayName}'`; + } + + return [{ + title: 'Go to Super Implementation', + command: javaCommands.NAVIGATE_TO_SUPER_IMPLEMENTATION_COMMAND, + tooltip, + arguments: [{ + uri: encodeBase64(location.uri), + range: location.range, + }], + }]; + } +} + +function navigateToSuperImplementation(languageClient: LanguageClient, location: any) { + const range = languageClient.protocol2CodeConverter.asRange(location.range); + window.showTextDocument(Uri.parse(decodeBase64(location.uri)), { + preserveFocus: true, + selection: range, + }); +} + +function encodeBase64(text: string): string { + return Buffer.from(text).toString('base64'); +} + +function decodeBase64(text: string): string { + return Buffer.from(text, 'base64').toString('ascii'); +} + +class JavaHoverProvider implements HoverProvider { + private _hoverRegistry: provideHoverCommandFn[] = []; + + constructor(readonly languageClient: LanguageClient) { + } + + async provideHover(document: TextDocument, position: Position, token: CancellationToken): Promise { + const params = { + textDocument: this.languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document), + position: this.languageClient.code2ProtocolConverter.asPosition(position), + }; + + // Fetch the javadoc from Java language server. + const hoverResponse = await this.languageClient.sendRequest(HoverRequest.type, params, token); + const serverHover = this.languageClient.protocol2CodeConverter.asHover(hoverResponse); + + // Fetch the contributed hover commands from third party extensions. + const contributedCommands: Command[] = await this.getContributedHoverCommands(params, token); + if (!contributedCommands.length) { + return serverHover; + } + + const contributed = new MarkdownString(contributedCommands.map((command) => this.convertCommandToMarkdown(command)).join(' | ')); + contributed.isTrusted = true; + let contents: MarkedString[] = [ contributed ]; + let range; + if (serverHover && serverHover.contents) { + contents = contents.concat(serverHover.contents); + range = serverHover.range; + } + return new Hover(contents, range); + } + + registerHoverCommand(callback: provideHoverCommandFn) { + this._hoverRegistry.push(callback); + } + + private async getContributedHoverCommands(params: TextDocumentPositionParams, token: CancellationToken): Promise { + const contributedCommands: Command[] = []; + for (const provideFn of this._hoverRegistry) { + try { + if (token.isCancellationRequested) { + break; + } + + const commands = (await provideFn(params, token)) || []; + commands.forEach((command) => { + contributedCommands.push(command); + }); + } catch (error) { + logger.error(`Failed to provide hover command ${String(error)}`); + } + } + + return contributedCommands; + } + + private convertCommandToMarkdown(command: Command): string { + return `[${command.title}](command:${command.command}?${encodeURIComponent(JSON.stringify(command.arguments || []))} "${command.tooltip || command.command}")`; + } +} diff --git a/src/protocol.ts b/src/protocol.ts index cef61530e..4672501ac 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -1,6 +1,6 @@ 'use strict'; -import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit, FormattingOptions, WorkspaceSymbolParams, SymbolInformation } from 'vscode-languageclient'; +import { RequestType, NotificationType, TextDocumentIdentifier, ExecuteCommandParams, CodeActionParams, WorkspaceEdit, FormattingOptions, WorkspaceSymbolParams, SymbolInformation, TextDocumentPositionParams, Location } from 'vscode-languageclient'; import { Command, Range } from 'vscode'; /** @@ -342,3 +342,17 @@ export interface SearchSymbolParams extends WorkspaceSymbolParams { export namespace SearchSymbols { export const type = new RequestType('java/searchSymbols'); } + +export interface FindLinksParams { + type: string; + position: TextDocumentPositionParams; +} + +export interface LinkLocation extends Location { + displayName: string; + kind: string; +} + +export namespace FindLinks { + export const type = new RequestType('java/findLinks'); +} diff --git a/test/extension.test.ts b/test/extension.test.ts index 7c0354768..8b4a6bc8e 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -53,7 +53,8 @@ suite('Java Language Extension', () => { Commands.GENERATE_CONSTRUCTORS_PROMPT, Commands.GENERATE_DELEGATE_METHODS_PROMPT, Commands.APPLY_REFACTORING_COMMAND, - Commands.RENAME_COMMAND + Commands.RENAME_COMMAND, + Commands.NAVIGATE_TO_SUPER_IMPLEMENTATION_COMMAND ]; const foundJavaCommands = commands.filter((value) => { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); From 1b2a56e75c11e9853939f6bf0dd6517d064238fc Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 17 Sep 2019 20:02:46 +0200 Subject: [PATCH 0459/1435] Changelog for 0.49.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6f1a9dcf..021817793 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Change Log +## 0.49.0 (September 19th, 2019) +* enhancement - navigate to the super implementation. See [#553](https://github.com/redhat-developer/vscode-java/issues/553). +* enhancement - exclude certain packages from autocomplete/autoimport. See [#710](https://github.com/redhat-developer/vscode-java/issues/710). +* enhancement - code action: create non existing package when package declaration mismatch. See [#1030](https://github.com/redhat-developer/vscode-java/issues/1030). +* enhancement - code action: convert anonymous class to nested class. See [#1060](https://github.com/redhat-developer/vscode-java/pull/1060). +* enhancement - code action: fix non accessible references. See [JLS#440](https://github.com/eclipse/eclipse.jdt.ls/issues/440). +* enhancement - code action: convert for-loop to for-each loop. See [JLS#1166](https://github.com/eclipse/eclipse.jdt.ls/issues/1166). +* bug fix - fixed tables not properly rendered on Javadoc hover. See [#1002](https://github.com/redhat-developer/vscode-java/issues/1002). +* bug fix - extract embedded javadoc images. See [#1007](https://github.com/redhat-developer/vscode-java/issues/1007). +* bug fix - fixed extension never reaching the ready state (always spin). See [#1056](https://github.com/redhat-developer/vscode-java/issues/1056). +* bug fix - fixed wrong completion text for AnonymousDeclarationType. See [JLS#1168](https://github.com/eclipse/eclipse.jdt.ls/issues/1168). +* bug fix - fixed "No delegateCommandHandler for 'xxx'" error. See [JLS#1146](https://github.com/eclipse/eclipse.jdt.ls/issues/1146). +* bug fix - load bundle only once if same bundle occurs multiple times in different locations. See [JLS#1174](https://github.com/eclipse/eclipse.jdt.ls/pull/1174). + ## 0.48.0 (September 4th, 2019) * enhancement - ignore "Unsupported SuppressWarning" warnings by default. See [#507](https://github.com/redhat-developer/vscode-java/issues/507). * enhancement - code action to move member to another class. See [#980](https://github.com/redhat-developer/vscode-java/issues/980). From 8b11961035d71740e4196540ac910f2cdd9f9b4e Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Tue, 17 Sep 2019 23:33:22 +0200 Subject: [PATCH 0460/1435] Append changelog for 0.49.0 Signed-off-by: Fred Bricon --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 021817793..d47093830 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * bug fix - fixed wrong completion text for AnonymousDeclarationType. See [JLS#1168](https://github.com/eclipse/eclipse.jdt.ls/issues/1168). * bug fix - fixed "No delegateCommandHandler for 'xxx'" error. See [JLS#1146](https://github.com/eclipse/eclipse.jdt.ls/issues/1146). * bug fix - load bundle only once if same bundle occurs multiple times in different locations. See [JLS#1174](https://github.com/eclipse/eclipse.jdt.ls/pull/1174). +* bug fix - fixed incorrect `prepareRename` response when called over import. See [JLS#1175](https://github.com/eclipse/eclipse.jdt.ls/issues/1175). ## 0.48.0 (September 4th, 2019) * enhancement - ignore "Unsupported SuppressWarning" warnings by default. See [#507](https://github.com/redhat-developer/vscode-java/issues/507). From 06793b174437fee55985c62917f08da926f37058 Mon Sep 17 00:00:00 2001 From: Anton Kosyakov Date: Wed, 18 Sep 2019 09:18:20 +0000 Subject: [PATCH 0461/1435] fix #1066: use `vscode.env.appName` instead of hardcoding `VS Code` Signed-off-by: Anton Kosyakov --- src/plugin.ts | 2 +- src/requirements.ts | 4 ++-- src/settings.ts | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugin.ts b/src/plugin.ts index a88b1f58e..af947ca3b 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -43,7 +43,7 @@ export function onExtensionChange(extensions: readonly vscode.Extension[]) } if (hasChanged) { - const msg = 'Extensions to the Java Language Server changed, reloading Visual Studio Code is required for the changes to take effect.'; + const msg = `Extensions to the Java Language Server changed, reloading ${vscode.env.appName} is required for the changes to take effect.`; const action = 'Reload'; const restartId = Commands.RELOAD_WINDOW; vscode.window.showWarningMessage(msg, action).then((selection) => { diff --git a/src/requirements.ts b/src/requirements.ts index 81cc13def..7c827f6e3 100644 --- a/src/requirements.ts +++ b/src/requirements.ts @@ -1,6 +1,6 @@ 'use strict'; -import { workspace, Uri } from 'vscode'; +import { workspace, Uri, env } from 'vscode'; import * as cp from 'child_process'; import * as path from 'path'; import * as pathExists from 'path-exists'; @@ -40,7 +40,7 @@ function checkJavaRuntime(): Promise { let source: string; let javaHome: string = readJavaConfig(); if (javaHome) { - source = 'java.home variable defined in VS Code settings'; + source = `java.home variable defined in ${env.appName} settings`; } else { javaHome = process.env['JDK_HOME']; if (javaHome) { diff --git a/src/settings.ts b/src/settings.ts index 3cf0b2562..b729566bb 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,6 +1,6 @@ 'use strict'; -import { window, Uri, workspace, WorkspaceConfiguration, commands, ConfigurationTarget } from 'vscode'; +import { window, Uri, workspace, WorkspaceConfiguration, commands, ConfigurationTarget, env } from 'vscode'; import { LanguageClient } from 'vscode-languageclient'; import { Commands } from './commands'; import { getJavaConfiguration } from './utils'; @@ -27,7 +27,7 @@ export function onConfigurationChange() { excludeProjectSettingsFiles(); } if (hasJavaConfigChanged(oldConfig, newConfig)) { - const msg = 'Java Language Server configuration changed, please restart VS Code.'; + const msg = `Java Language Server configuration changed, please restart ${env.appName}.`; const action = 'Restart Now'; const restartId = Commands.RELOAD_WINDOW; oldConfig = newConfig; @@ -70,7 +70,7 @@ function excludeProjectSettingsFilesForWorkspace(workspaceUri: Uri) { items.unshift(changeItem.global); } - window.showInformationMessage('Do you want to exclude the VS Code Java project settings files (.classpath, .project. .settings, .factorypath) from the file explorer?', ...items).then((result) => { + window.showInformationMessage(`Do you want to exclude the ${env.appName} Java project settings files (.classpath, .project. .settings, .factorypath) from the file explorer?`, ...items).then((result) => { if (result === changeItem.global) { excludedInspectedValue.globalValue = excludedInspectedValue.globalValue || {}; for (const hiddenFile of needExcludeFiles) { From 51aecc4544effa69e48a8d3e1eb06c41293bb46f Mon Sep 17 00:00:00 2001 From: Nikolas Komonen Date: Tue, 20 Aug 2019 11:20:49 -0400 Subject: [PATCH 0462/1435] Updating CONTRIBUTING with images for setting up remote debugging Signed-off-by: Nikolas Komonen --- CONTRIBUTING.md | 146 +++++++++++++++++--- images/changelog/ChooseProduct.png | Bin 0 -> 39396 bytes images/changelog/ClientPort.png | Bin 0 -> 14470 bytes images/changelog/CreateNewConfiguration.png | Bin 0 -> 11130 bytes images/changelog/DebugConfigurationOpen.png | Bin 0 -> 30601 bytes images/changelog/DebugRemoteServer.png | Bin 0 -> 11894 bytes images/changelog/RemoteServer.png | Bin 0 -> 21323 bytes images/changelog/importMavenProject.png | Bin 0 -> 38424 bytes images/changelog/importProject.png | Bin 0 -> 37128 bytes images/changelog/importedMavenProject.png | Bin 0 -> 87582 bytes images/changelog/loadingTargetPlatform.png | Bin 0 -> 4256 bytes images/changelog/reloadTargetPlatform.png | Bin 0 -> 2767 bytes images/changelog/setTargetPlatform.png | Bin 0 -> 152156 bytes 13 files changed, 124 insertions(+), 22 deletions(-) create mode 100644 images/changelog/ChooseProduct.png create mode 100644 images/changelog/ClientPort.png create mode 100644 images/changelog/CreateNewConfiguration.png create mode 100644 images/changelog/DebugConfigurationOpen.png create mode 100644 images/changelog/DebugRemoteServer.png create mode 100644 images/changelog/RemoteServer.png create mode 100644 images/changelog/importMavenProject.png create mode 100644 images/changelog/importProject.png create mode 100644 images/changelog/importedMavenProject.png create mode 100644 images/changelog/loadingTargetPlatform.png create mode 100644 images/changelog/reloadTargetPlatform.png create mode 100644 images/changelog/setTargetPlatform.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2dba41456..b6eacd8b7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,54 +11,156 @@ vscode-java is a Visual Studio Code extension that uses a language server for it smartness. Usually vscode-java features depend on the [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls), (a.k.a. eclipse.jdt.ls) and the contributions should be coordinated between the two repositories. -## First Time Setup -1. Install prerequisites: +# + +## Background Info + +For the whole language server to get up and running it requires +two parts. + + **A)** The Client Side (this repo): [VSCode Java](https://github.com/redhat-developer/vscode-java) + +**B)** The Server Side: [JDT LS](https://github.com/eclipse/eclipse.jdt.ls) + +# + +## Complete Setup Guide + +The following will be a start to finish guide to get the entire language server up and running. + +# + +## **A)** Client Side Setup + +1. Install the required software: * latest [Visual Studio Code](https://code.visualstudio.com/) * [Node.js](https://nodejs.org/) v4.0.0 or higher -2. Fork and clone the repository +2. Fork and clone [this repository](https://github.com/redhat-developer/vscode-java) + + Keep in mind the final directories will look like: + + ``` + PROJECT_FOLDER/ + | + |--- vscode-java/ + |--- eclipse.jdt.ls/ + + ``` + + 3. `cd vscode-java` 4. Install the dependencies: ```bash $ npm install ``` -5. Open the folder in VS Code -## Building Eclipse ™ JDT Language Server +# + +## **B)** Server Side Setup This assumes that you are starting on the `vscode-java` directory 1. `cd ..` 2. Fork and clone the [eclipse.jdt.ls](https://github.com/eclipse/eclipse.jdt.ls) repository + + Ensure the directory looks like: + ``` + PROJECT_FOLDER/ + | + |--- vscode-java/ + |--- eclipse.jdt.ls/ + + ``` 3. Build server ```bash - $ cd ..\vscode-java + $ cd ./vscode-java $ npm run build-server ``` + +**\*Optional:** You can run faster server builds during development by calling `./node_modules/.bin/gulp dev_server` script instead, this will build server binaries that are required by your host OS only. You can also use `npm run watch-server` which will build and place them on the extension for Java changes. These commands run Maven in offline mode, so you might need to run `build-server` at least once, to fetch all the dependencies. This will build and place the binaries under the `server` folder. Alternately you can download and use the latest snapshot build from [Eclipse ™ JDT Language Server](https://github.com/eclipse/eclipse.jdt.ls) project with the following - ```bash - $ cd ..\vscode-java - $ ./node_modules/.bin/gulp download_server - ``` +```bash +$ cd ../vscode-java +$ ./node_modules/.bin/gulp download_server +``` +### Setting up the JDT Language Server in Eclipse + +4. In Eclipse, import a maven project: + + ![Import Project](images/changelog/importProject.png) + + ![Import Project](images/changelog/importMavenProject.png) -## Run with a remote JDT language server + Select the `eclipse.jdt.ls` folder, then click yes/accept to all +following prompts: + + ![Import Project](images/changelog/importedMavenProject.png) + +5) Now we need to use Tycho to download the dependencies, +this will get rid of the errors. + + At the top right arrow it will say `Set Target Platform`, select that and continue. + + ![Import Project](images/changelog/setTargetPlatform.png) + + After it will change to `Reload Target Platform` select that: + + ![Import Project](images/changelog/reloadTargetPlatform.png) + +6) Wait till the bottom right is done loading: + + ![Import Project](images/changelog/loadingTargetPlatform.png) + + once 100%: + + + + The errors should now be gone. + +# +# Running Everything + +## **C)** Run with a remote JDT language server While developing the language server and the extension, you don't need to deploy the server every time to try out changes. Instead you can run the language server out of its Eclipse workspace: -### _Launch Extension - Remote Server_ - -- Open VSCode on the `vscode-java` folder -- In the debug viewlet, run the launch _Launch Extension - Remote Server_ -- The extension will open a socket on port 3333 and will wait for the JDT language server to connect -- In Eclipse, run the JDT language server as an Eclipse application. - - Create a debug configuration of type _Eclipse Application_. - - in the main tab of the debug configuration set the product to `org.eclipse.jdt.ls.core.product`. - - in the Environment tab, define a variable `CLIENT_PORT` with value `3333`. - - if your workspace contains 'org.eclipse.jdt.ui', use the Plug-Ins tab in the debug configuration to exclude the plug-in. The presence of 'org.eclipse.jdt.ui' will cause the language server to hang. - - You can also use the `jdt.ls.remote.server` launch configuration. +### a) _Launch Extension - Client Side_ + +1. Open VSCode on the `vscode-java` folder + +2. In the debug viewlet, run the launch _Launch Extension - Remote Server_ +![Remote Server](images/changelog/RemoteServer.png) + +3. The extension will open a socket on port 3333 and will wait for the JDT language server to connect + + + +### b) _Setup Debug Server - Server Side_ + +[**\*Skip to C if this option exists\***](#c-launch-debug-server---server-side) + +In Eclipse, run the JDT language server as an Eclipse application. + 1) Create a debug configuration of type _Eclipse Application_. + ![Creation Menu](images/changelog/DebugConfigurationOpen.png) + + ![New Configuration](images/changelog/CreateNewConfiguration.png) + 2) in the main tab of the debug configuration set the product to `org.eclipse.jdt.ls.core.product`. + + ![Choose Product](./images/changelog/ChooseProduct.png) + 3) in the Environment tab, define a variable `CLIENT_PORT` with value `3333`. + + ![Define Port](images/changelog/ClientPort.png) + 4) If your workspace contains 'org.eclipse.jdt.ui', use the Plug-Ins tab in the debug configuration to exclude the plug-in. The presence of 'org.eclipse.jdt.ui' will cause the language server to hang. + +### c) _Launch Debug Server - Server Side_ + +- With the client side **(vscode-java) running**, you can start the remote server. + + ![Define Port](images/changelog/DebugRemoteServer.png) - In the debug console of VSCode you can see if the connection was successful. - When the server is running breakpoints can be reached and hot code replace can be used to make fixes without restarting the server. diff --git a/images/changelog/ChooseProduct.png b/images/changelog/ChooseProduct.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7ecacb3d64173e26e7dcc49f14165e758a10e9 GIT binary patch literal 39396 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�%oHDa<_+{3 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 X+TX5|oe~1>?+BwaruwD2nDBoA@E?E) literal 0 HcmV?d00001 diff --git a/images/changelog/ClientPort.png b/images/changelog/ClientPort.png new file mode 100644 index 0000000000000000000000000000000000000000..1512f06cbc1a57a417491e608fb7493b124a1fcd GIT binary patch literal 14470 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

o9n3OTd=3Yde?#v6HWxmbp*9?k?Fd(%(fEV~a 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 literal 0 HcmV?d00001 diff --git a/images/changelog/DebugConfigurationOpen.png b/images/changelog/DebugConfigurationOpen.png new file mode 100644 index 0000000000000000000000000000000000000000..31efbe144b3942cf25587c6a6c0cdd6683dd2f86 GIT binary patch literal 30601 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 S4Vk+=11T|i(PD_c@BafLI|}~* literal 0 HcmV?d00001 diff --git a/images/changelog/DebugRemoteServer.png b/images/changelog/DebugRemoteServer.png new file mode 100644 index 0000000000000000000000000000000000000000..25c8070138417979b5e421e60ff179ab35a43c4a GIT binary patch literal 11894 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 U6g6M?jvNO-Qi_t*;zr;9A6!C51ONa4 literal 0 HcmV?d00001 diff --git a/images/changelog/RemoteServer.png b/images/changelog/RemoteServer.png new file mode 100644 index 0000000000000000000000000000000000000000..74e87d267a1ae481a90c72d2ddf932675d6a8521 GIT binary patch literal 21323 zcma%jWmr{Fx9$P~Q52*b6a#ljN6jNg-v z%h)kEb44Tc9#u6nDhf;O+*CPo?DO2!Sc}JeaFyuXl@La3FUyC1w0G*4xZU(|xPFN@ z4_2lv45Im#1$XW@>kT$X^@c8Kl?yIB*qNj1gtD@-k8cA6KTki?9XW0sMs#&1t(Gm=`IM~| z_VYN!Yqt$~m^Nm6Be_e|ahUs$x-XLR4jX+m=Gc7i!r`Gc?Ef}o{^&&KLz|B zywJVeT&|YuoJdJY387xS(^V*t1wkRsPWRX4-QC^9?$}mVC+`IOcsw49sJyy5 zJ6X)<%otta0tG3l=+3wg(Jx63rl%Sc6YKr&ptiY8}d|s`h>%sZ@Qp;!Slw(@0H}%&DnC4i!KAQ~W>& zmyn!{^e81MX{*lmq)r+c8;gmG3IkCUzVnU_`p*M;OF}|ILARVLXx~-Sc=WM>6E&}} z@NkC}$tHMfYir)Y!itRm`anfxYGQJmGlO~C&v}$O@gU~4-*nT?FSE9;#qIj$LtgAm z0vltcOl6W>5PpIhfddT>A_B1sQ;5L%^w(W!ZN>2L-X?EiIaT3ATg+4(?2L$eX`-CI#n zQCIiFnI`r^vkfoT{pO`Pr*LRRquZT@Xz%zqkKz0G?<0^Xq^w`L;$Yz8Z*Ole*OszC zA-Ih8Hx-xy{;%9l*)}|$l3^h~KR?!z<&e-&PLD_L2DN$ak9&K2FJ8P55)zUmKO0KU ziW)%qc$yBscij0~B7b6qIZPaB9@&Ux8mzg1*O@nj#lJ)EAM zn_Fw$ulTCFby3Ax*jZ)f>}Y=JYjC@XiAk$FO-4>mPUf=n)oyfb>g*7HKw$7}aaFbE zC;1r3>myNyrCb+B>T)~=HYO(9yBb2xMCoChRMv051oZVc*SaJiK4IbRp6&DXo_11m zbF8`{kEcg&H0upf^Xys(u_;lm2Q#Aw z2M3jg!y)M_5y{EACMGq`lS!CV@$4bQ(}l`(DB;rGMS}srBgC+1`fY zd}4@0LxKp&ROIEw<>jq!L-K95*rbv+*bFZT47b_QDZ=6-Bhy&yI3N`jl_J$<`}Ld) z7M7{ublx*=H(^Q1gPSu$6rzRPPPuNG?~d1hy?lK;!6t%%!4?U@NlUzW9QoN{j)qS3 zs54i!tJ@PMz@gQi*WcFm_4J7Vn?`GAkHe$x;;#%Yu>s9H+E4ZeJ7@0O+O6))27@@O za_TxdzrG?y#Kc?|hYn3lm>ncone3&9jBi)fZdYWd4a9+3<#9T2daBzK!bqgIAT^G| zGUz-%McCip-#P>THmxz!@Au{@B`n)7H9hh!YdBWQ0yn^%eM7Wey^6XcQDG84ZV-n3)xo zloslo+}1h+Qw1l5{-koJ$6Q}d4b5*q{8_BGX^e(@*4EMXJYYRjKL4kT06PJ4{D728 ze9mYiDXsB02_h${Cq+hl zeijkJY^wCG#~XEgvM_!)z4iM_o4a1n1Olc$rhq`ET;@T9(|T)u!J|W4*QPc2z7PRd zokv=*XTn@MxTXx< zT={%1A{6$p0L10J>f*&s{P*_`uVChCX6e+EzIW`C)6fk4)_>IYZeO(`BkO`9lHyDZ zSvi<#s_W}#+udEo#TlUY?>mRnxD6}TpFV$1ubQ7~lvZ+7I{0Df&f)ph%&bDcayo@w z+Udrr_srWP`Ek19)#L>}~(I?QthzN4mePq$KQfpgC*7@%|HP z7y&mm9mO$dN~EL`xNn^bq_qYL$>EB261dd>2~m)f=M)so8BovdR^gJ0zG9gAhet@0o85X?#LbGPuDDNz{Rw|1R4i26;x+*9r$XP}1YIs^f)3teQaDu7yHVP zY*(JVf`Y*9AXq?V<_mBT!SaB<9TF-vC&;kiTvt#)2`)leftb;Gu<_ghdP9J*QS&`A zDG3kRe|%)*jn<_A;)~b2JM4cPP+*pt#GEhhKVF>q1a1x}rCgqHuelchho zz~6Ygs_31Y+fz7QDj<;d2}hAaCY9jM>DJ-8cXhGRzDEwt`pmjiyU~P}3F(1^?7SZ| z(o*f(CDUMKsn<3g-52KFzf!4@U!bk8uM?u9AA*hqnkV#qV<$30q+M4y+==M&ey_Ul zISPU8cbr!1$V> zInnBut3Yq?@EEMtvJ#B?XKf5iG#mHIC)^$yF0|BZP92*9;!*pw@xrSw{&Krq1_lQ+ z;)Gz+{f^j-MS661c3+|4lF9sr@V5X9l( zEO0~Ulzb0XcDdp9c48vNYW-llz7Dnx+|V>07d%|dj}%n+C#QFu#ZOzQt=b2$ zMCNYi>aC~&-e`ADKg+8&#^JK^>Tn>i86V419x<^07GH*2tP1XyH%WL*kKZ0Hx4~y* zoU07JvU~g-o0Ks!Lv#o`vdM=LlP#_MRs&`w5(e>%Ui0_ z($HMM92i*I=)_4B?yx)71=?t{Q}o0Tq3MU#LL?ln8S5!Y3V8S*2udA8$*d8Jr(lER z7-sQ0V<18-ETrTi>2>ZMYS3TKV`75)-nltHL6X?mSRzjMSG&qRp@ghfzcP!84tjov zYiT9Jcn&|88QxTiQ+oaSwQ`A;g~PV$J_`j2$?0&rKzYneTbsWi$!O2~^zm;eZf