From be55f12a760ef883723799177cf41ad22ce59de6 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 15 Mar 2018 21:12:16 -0400 Subject: [PATCH 0001/1163] 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 0002/1163] 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 0003/1163] 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 0004/1163] 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 0005/1163] 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 0006/1163] 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 0007/1163] 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 0008/1163] 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 0009/1163] 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 0010/1163] 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 0011/1163] 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 0012/1163] 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 0013/1163] 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 0014/1163] 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 0015/1163] 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 0016/1163] 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 0017/1163] 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 0018/1163] 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 0019/1163] 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 0020/1163] 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 0021/1163] 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 0022/1163] 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 0023/1163] 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 0024/1163] 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 0025/1163] 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 0026/1163] 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 0027/1163] 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 0028/1163] 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 0029/1163] 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 0030/1163] 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 0031/1163] 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 0032/1163] 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 0033/1163] 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 0034/1163] 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 0035/1163] 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 0036/1163] 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 0037/1163] 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 0038/1163] 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 0039/1163] 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 0040/1163] 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 0041/1163] 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 0042/1163] 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 0043/1163] 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 0044/1163] 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 0045/1163] 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 0046/1163] 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 0047/1163] 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 0048/1163] 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 0049/1163] 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 0050/1163] 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 0051/1163] 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 0052/1163] 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 0053/1163] 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 0054/1163] 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 0055/1163] 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 0056/1163] 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 0057/1163] 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 0058/1163] 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 0059/1163] 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 zcmY+q1yCG7n=LvF?ykWJ?(Pl&0tAA)YjAgWhXe@0-FI0TmoGRScA@9x`o zZ&$T_efpgKy1J^XB~Ja50wx+68UO&mR8o}F_?L(NC!!$zONS-Qr~YMd9vTWVfcjbT zlYbRdS4Djf0Dyz;KM~HiOw#)wK;K?V&r?rTMa0s@iNoB=#lo7y*U9xC8UPUU75P_m zvi3Bm_H}Y}_7L$Er~NO4$iMP`%$&5;{{``M5U15sRi~D9akr-C=iuYuqLo0SrluBi zx3Uq@ko)jI-T&3ZY3)2cT}3!KeSCa4e0Vur+-*6zg@uJVxp+8vc-a3T*ggE5Jz{+1 z|7qdm=HTM|U+#Zh#r|UzQFFJq{-^vOehF@||3dyhw*S!)$5l~Q7&l&q*R$^ik4>YdSgjm2aaI zUU$o&0^->%8>P89pA0>ioIo-(IiG$qpQNh3A0AQZBRf0@FwMGE42Ttr@okUs>}I!i zIsj*@Y^*9ywBDzzeF;yo&LV>&_Kqx!XwPD&H<1Q@3NiyhjNev|CzSE}kgTg`AJ5`?beeM-uI!ANFgN_NJAX>2a;$InY9xw2vYlYVx&PeB z<(Hksjx)UXgSCCHbzgAv0+6Khb8xfH%HA!G?+$2)&pj zh}#i2mXkq`JabU^yFkofF!-g$RI5o>n{HnFuCz+_;WGlKmh4G02?b?>>E5Vp&)b!z z;e`^VC`qL_tUIkQQ#n`a#wDyWfckcYbgUuAmUqbh8Gj-OlhBw8?&GlI_WNh!us;pn zTHWk;z@Wg3Qgsrj$_@5t8(LM~f^w>5>}dHpb3Q~a z?G@>{k;UCznYB@(8Y*5_krT0Sk*6#g9bN zOpF+%YGIy^eq)(UG}Zaht$NN~etBImO`*iJ=NNR#>zMc6A` z9#kqTF7R-IlC2eK=9$@aJ;m75Ah9J+)JK;B+iJe|Yp4|BlF4|+qQv|AB!s|V6Flw)y2LjVWV;yBhx3R;m5#WVQK1m9EVVJp#%pF=4XuLy`_&6 zQ?+H&b0h~3@ed6rWkea@=uXBapQp4ISLf$AhY=WDua^l&9<}6gBHkMTtgB|YU&08c zQ|J(m<%aH`?>x>KGG?Yq10w*Zq|LGMcqW*sB@Y%LRoeLbAd--%Xb)H8qrSbQcg=?- z=k#rogB@Je&b#WHl&T{aT|O-v0?arIBk^9Sgt(y@zLyC&7WNY6U`Ug#q>Y{+wvz7k z2c3$&OxyIEc6HAKBu3nDlDGguJ6H=oN?8o83kwQ%d$7@r?%j zSRoUd&=Uw^TkO>$^~D-@0udNz&09FtQ=TcFM=baXhO) z0bDO9Mr(2!~p3>qur;qy56l z<nr9YJnuh&A#4(aHD+>WUyIn_QoS`pi8dm+pZf>T`-wr@$N~nU+(>Ym zq2^MiBG&u?-`bjfpNk*2ZJ3zCDc4n7!Qm`Tp8Gw|cyliLA!bXCy=Vw?t4MHvgdiKw zlgQT$cADtw+FnWcfQFFD6fl)<;VQXA8OrARd4~hI6%vT=sr4tUg(r0eFH1hY!v&74IS6wu_stUYS!Hps(9qE{!9# z$)i=%)%Ct=Ij;xcM2uJxLNOkubzo%*E~G$wkfHF*2L#~xn5EJ5%6%kig7BbVpbvm( z7kw>12)uaQr5EK>x;@gH3=UrlYi+WVWQ=-7|FBuVs}B6DPvk!0u` zTT2gtmE0Eh3%t$_2LeqChP<)gh&2h5+P%IsP^zEGIIgrV$5L?d_yu)Xe6(tu!JAqp zmD-ErD>V47iGu;`iZ&MHUw+9D<|r{S4Zz}DBoysTrcH%08ltUAGo3YM{a?kpk(S=1Q^|Q>JKtmPPzDp8 zUK45^O#RgL9a7XAMt|0H8 zFeuQ1zx^akGJGjW0>ch2FwW1qEsp>VY*1PX7gy{+YGihcPWdb$gve3~?IavxiMHQF zD`_Bjiqe!CsRu%WB1b@c=6kNR)>K_PssSC=09My@ zM7=z7zUen|TuE-zptsNAduu%2?1?~ao4!v#kQZL* zg5$|wv8Ywf^D)84bwCa2E3ULuFZV?);t_(d8Wfp9D3Hr-U`M@Q5B6nlQn^X~4>h1k%C{7ObsLPL6=gT4E=f;YdG&FIqo+?jSZQOT_ z>_4S-r|~!FQvA{K>U2@bYa^k78V$VQwRi2r4x|tJQ2R7#>zLqT+1lTW-B^azQ$@F# zk0my79Tb6G(24q}afqV^yUhGq?}0v{6k|gr>y`Ysx#<*itJdetM8IE$b9W+tK3
4MkMOVM5ahkI5<0*85rfD%7ccdJ!-mxU>=^5Ub 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 NB>zdSUdAl^{{Rfhgf{>H literal 4121 zcmZ`+c{tQx`##1t_9c{^nbaU<-}hum$yQk+>x8n4B$@16mdO^rkz`*omXxv%VUR5| zH1@0^#+C;C=J)#NdtLAKp6fdIx$o!mJm3kn=I7_%H#D4l{WmJg%IWJ~CX>mltE)?kOYyO> z5zoS>rl!Weeap$t9vvB}C@U)}eEaVbTPy3Got;4cfRkWKQgUW`I)xMPg#Nz1g8bM2 zPX1q9?vnJu!GVvbm%p#Cr^kIt+T%x$W~OIqF_^B-&i}4DBp*83-?g{3b-L^DYvWf; zR8(O>0rC5HY)8jQ^8WsQQeq;m7x&+_Bob+$zyBl-7Zxc6paFmn02BdG06;YW7yw!U zXae9I99{=N6##DmK%5o(3_v9SuL0F704^ZJ+W{yCAQyma0I&em0?-UV4FDAo$lmT= zYI4f)(NQA+lSE=vc!a!+>=ytiPEnd)T3q7m?H7%F4)~oQ~qGs*>^t8JQbg+#4GkYinzJ3k!3zv%Nh%o!HK&Ax|hxpqNX! zJP0A-QXZZj0RF74HGTZJjKNTPQY|d3#K&jL!4bg3^p=)3gO>K-_iys{c0*nLOis@C z31%B$%=i!IH zR>nq$hX=n7^y6^Y4~fF_(_esaAzW`m&LamC z#nsu_>G9#O0|QRtbHlxbS!r>0Op~J$-xquW0ASWI($legG_f{rV8La^PQR(tR1q5| zg49lQ;Gsr#=K2q)q^T^KE}Bk+@laRA=a-yeP3w$`$gRL^J_web?9Xe(ga|kFRWxp> zTKw#scI}l&SXseWlQm5LesllxGFqRM>-x{A7J3n;h3DJ7aV^M<#X0uR=>hXWWO97{ zw@MbLNjXvyhwW=8Nq2U4YoNbftCJgFYG>)piQ?+%yvS|58?k^Fp>7R?c__mhSk%D<=LP$;iVL;k>f%!S7p7@+SOe1UZ9m&nAO4Hq6S)r#9tVNV~g zG|V+)P0>initifRe=(guvmYed;7A8~V!-V5IXyJQP|nYS-L%wSz5kTe-vjJNWb4`Q z3!_A49(*%TNlg@C__c%sLycLGW9kB|!C-uG+(_Z$Wn;pZzXT3hDcgGO*in}iE|ayc zMSsKlzo>Dzvl;ek70lLQ7ROR?*}r@X1r=9EGpsfqx8m`ZVHc|Y>5JDa>Ci4_G%Liz zGkB9Zu-SI+#=6gpb}D5P*o$F49BPqVyb-=*cCtbbjZ*@L-ZuMny*3^sGB%1Z zN&9I$bxv?j5V^%U1aYy3Wa(evZ&9$f=~ktuwsK>cY2-jsMcV4?-={zCf8!_Twe&Y- z{EoS28*Eex-e{o&Ms!@HYJ#CZQ)t%u>^xr5awL>DDGxGeJqb=;@nZbW^VCYhBeh!NwnbRo_CzA7044M`&_EwjWrG8#r0O5b%LXw z`oXQrm|(i%*tO|J+tr(S-N_^9XzN&l@`sBOO+WtB(`FgiAjM#TDFJ`$42GMb-7rs% z0%;2`+1?`mWA{i{gx=@f*!DZTMuEkC{IH2K19jV2H~B!L71hBwljY`i414-IYi@s$ zF&qI=(J?9M2ViYB!-^-Kl6;J`p>S}oP)YGQm^=Q1Uy{W0s=lmJRn+g?vyKl#m z0yNmnUJ~*VJG*(t@zwSr%e$oS)ze6Uj?nwin76@&l4^6YAE*MXpyk5Cq&(uMUIxUa z#;0U6N5@%sT&wNw5RoyP@HZk^fLaNXmClmz{x)elp;~j1W|PdsWNd8A#H14L=iS3U zYNK88wz78I9mWTpsbWLsdD{)N+^#s)I(^sX)~zD==2W9=yojTEjo_}Q;(QhKX6O}2 z3U>-+8%YTX+_c>TgV=#nR7zTmFH4>eJN+Io2U;ZkS=ffabm*@ z@(tInCa%ZSWNMw;d!=0K9rOW1TwgyXk^LEZCixdXD;-IZ_99Lv3C?N^%Ind)(GOev zeWm#mpuQuloMp_^?&I9;6|hRl(=L(_7bsOySdv-rMW9Uvp1u2XwE|Xb2H8#6>l6dGCtwR1T^IdgCW zt&Mobo^XnOT9aDIM1+;TKr58bi05{!#8B|&;>Zi<3L4I5qpgEWWP_PDF|qev$O~70 zoqK$5TATU{ZVp~ZgVx#H!NWIUUoNsz?VJv&Ard$cG@f3c9+QucXFFo@rY;>HlT_S% zGfyKYjMwqmbQLINNS7%al_W-p{h3PS_?=8gNrzn9J1zIxAE3pTh2C8f>b=#fY_0gV z6%9-0MMF%I&Wmc&og!K=Ua0hW{RCRpS7KLdF)Sb`Dw8nvO7NL4L9mXl=$SIj!#T8+ zNUEg~UOkz+L(m}{lEiQ}yoRb|nK6AHdn5&sBU;|8G53*f95IeLe^pPNp{QFwF~wk> zQ-^)%VPE@A)haAaY8n?xylT@>WW=ycP`}>rjzgxTx97v$HaETVS#tute}luA1?%2r zbJIT86Ye^_O-RmGi|Av*>a@!1ou2R=w(bb~f>fH*kd8Se!xx+HgRl4y!P=yLUB2Hw zLPa2Oh;#-evCeOeVj$URU*(}CeRV){dIif{4-4Ha;8z@y6IQmbLwH3PnZQ~1)`D!D z`Sz%_wsc%>Hq(?{Qd~$qrNCF!aBGe4urngCPNnrMEm567Tw_k+<$Qi|hpIgWXgsot zoY$$n!+H7T%?`o``Zv9h<2S!-yI;*PW-X{XArO`ecfNhR*PD_N$9=R@k2Hi|ctn5g zvJ69-tYJ^a(L%Xr)Rrn$kxF$V+VRLzmH{ZuOKb(Q_CpQ{H#xD zaDJ?E_X0KQ;T=Ai>#sIrYQGs!>k6xJ9@0fVi1B*nZeJ_L*}rD@LdWq5t>D|ZGc8oJ zrL|GC?=gqbQP0!daT0KC_G#N2x9aG&imJ27q+pkdps#;qqHMptPGa;;AV4+{)sj+7 zTkdiGwPp*iMv6gY6bL76>t~MWd=jR@kW!#RO71uh{+zu#lMra1he%80QJJB7M~2Tk z-+?qRF_~TOsvmh!M;;U7NwKcy!6{}hVb2ci0NN}OuQsv4xp_6ckb8(u+0=(K+dO^D zrl`~c#r)vrJZ{mh22g}FUq?8MIa?#Q>q*mm8RpaUFrGU$y!C5HwP8--3O zPG`hJW-j+kkMi9}bvgRTAY5nfE_V4m`kma7?`@PwmlWZh$R*Fiv?P6+;~z z?ePT`eb+xhnk*7MK>ytR!_^n*afgy#O`BG)7NLg=NN*7*;(g1g!ugq`i6KkfPw4Or zWt|08afgyeubkZ2Jgn{7b)-r3;cEh?E32yK1Vv9inBgx;- zi)V2QfnPnRZCPCy>?;8oiYmU2xiQtuYCV7pHO!tA2uo@0vIIW|Y01(F%lhQUr=(k6 ze!tBVF+1CCZ#G=jRgma8iFDB4{4>EBNmct=TtW{IDF`eaDm6b>Fxx&zAS`DXFBCp5 zW6M#jmNgvZZcI!`#CUi&3BS(;JBk_!<$GZSq zt`aNs>Z;6~!0$5b*LZog?|hlW+(>B7Akvw8Qfg@hr#ck0dSgmc2}2BP)zZ+~*lqYC 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 0060/1163] 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 0061/1163] 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 0062/1163] 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 0063/1163] 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 0064/1163] 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 0065/1163] 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 0066/1163] 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 0067/1163] 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 0068/1163] 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 0069/1163] 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 0070/1163] 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 0071/1163] 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 0072/1163] 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 0073/1163] 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 0074/1163] 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 0075/1163] 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 0076/1163] 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 0077/1163] 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 0078/1163] 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 0079/1163] 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 0080/1163] 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 0081/1163] 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 0082/1163] 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 0083/1163] 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 0084/1163] 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 0085/1163] 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 0086/1163] 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 0087/1163] 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 0088/1163] 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 0089/1163] 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 0090/1163] 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 0091/1163] 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 0092/1163] 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 0093/1163] 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 0094/1163] 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 0095/1163] 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 0096/1163] 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 0097/1163] 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 0098/1163] 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 0099/1163] 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 0100/1163] 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 0101/1163] 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 0102/1163] 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 0103/1163] 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 0104/1163] 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 0105/1163] 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 0106/1163] 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 0107/1163] 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 0108/1163] 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 0109/1163] 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 0110/1163] 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 0111/1163] 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 0112/1163] 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 0113/1163] 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 0114/1163] 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 0115/1163] 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 0116/1163] 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 0117/1163] 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 0118/1163] 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 0119/1163] 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 0120/1163] 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 0121/1163] 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 0122/1163] 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 0123/1163] 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 0124/1163] 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 0125/1163] 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 0126/1163] 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 0127/1163] 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 0128/1163] 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 0129/1163] 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 0130/1163] 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 0131/1163] 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 0132/1163] 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 0133/1163] 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 0134/1163] 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 0135/1163] 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 0136/1163] 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 0137/1163] 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 0138/1163] 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 0139/1163] 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 0140/1163] 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 0141/1163] 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 0142/1163] 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 0143/1163] 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 0144/1163] 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 0145/1163] 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 0146/1163] 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 0147/1163] 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 0148/1163] 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 0149/1163] 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 0150/1163] 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 0151/1163] 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 0152/1163] 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 0153/1163] 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 0154/1163] 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 0155/1163] 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 0156/1163] 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 0157/1163] 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 0158/1163] 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 0159/1163] 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 0160/1163] 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 0161/1163] 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 0162/1163] 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 0163/1163] 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 0164/1163] 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 0165/1163] 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 0166/1163] 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 0167/1163] 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 0168/1163] 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 0169/1163] 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 0170/1163] 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 0171/1163] 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 0172/1163] 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 0173/1163] 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 0174/1163] 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 0175/1163] 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 0176/1163] 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 0177/1163] 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 0178/1163] 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 0179/1163] 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 0180/1163] 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 0181/1163] 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 0182/1163] 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 0183/1163] 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 0184/1163] 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 0185/1163] 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 0186/1163] 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 0187/1163] 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 0188/1163] 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 0189/1163] 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 0190/1163] 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 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