From f41dd22bae1ece71efef34a2b0d7eae1c70a866f Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 29 Jan 2021 09:37:17 +0800 Subject: [PATCH 01/23] fix: Cannot list multi-module projects properly (#450) --- jdtls.ext/com.microsoft.jdtls.ext.core/.classpath | 2 +- .../src/com/microsoft/jdtls/ext/core/PackageCommand.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/.classpath b/jdtls.ext/com.microsoft.jdtls.ext.core/.classpath index c664027f..67efab8e 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/.classpath +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/.classpath @@ -1,6 +1,6 @@ - + diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java index 1e5be9f1..b5de200d 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java @@ -610,7 +610,8 @@ public static IJavaProject getJavaProject(String projectUri) { } // For multi-module scenario, findContainersForLocationURI API may return a container array, - // need put the result from the nearest project in front. + // need filter out non-Java project and put the result from the nearest project in front. + containers = Arrays.stream(containers).filter(c -> ProjectUtils.isJavaProject(c.getProject())).toArray(IContainer[]::new); Arrays.sort(containers, (Comparator) (IContainer a, IContainer b) -> { return a.getFullPath().toPortableString().length() - b.getFullPath().toPortableString().length(); }); From 2f49ab947972083b10116edd0345cc60b0da6715 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Mon, 1 Feb 2021 12:52:06 +0800 Subject: [PATCH 02/23] chore: Add configuration file for No Response bot (#451) --- .github/no-response.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/no-response.yml diff --git a/.github/no-response.yml b/.github/no-response.yml new file mode 100644 index 00000000..14bbe279 --- /dev/null +++ b/.github/no-response.yml @@ -0,0 +1,4 @@ +daysUntilClose: 14 +responseRequiredLabel: need more info +closeComment: > + This issue has been closed automatically because it needs more information and has not had recent activity. Please reach out if you have or find the answers we need so that we can investigate further. From 30fc493a637036930f42f60534d7a96bc6f4f31a Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 5 Feb 2021 13:05:21 +0800 Subject: [PATCH 03/23] chore: Adopt GitHub Actions for CI (#454) --- .github/workflows/build.yml | 150 ++++++++++++++++++++++++++++++++++++ .travis.yml | 41 ---------- .vscodeignore | 1 + 3 files changed, 151 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..f0907b41 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,150 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + linux: + name: Linux + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v2 + + - name: Setup Build Environment + run: | + sudo apt-get update + sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1 + sudo /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & + sleep 3 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: '11' + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: 12 + + - name: Install Node.js modules + run: npm install + + - name: Install Gulp + run: npm install -g gulp + + - name: Install VSCE + run: npm install -g vsce + + - name: Lint + run: gulp tslint + + - name: Checkstyle + run: gulp checkstyle + + - name: Build OSGi bundle + run: npm run build-server + + - name: Build VSIX file + run: vsce package + + - name: Test extension + run: DISPLAY=:99 npm test + + - name: Print language server Log if job failed + if: ${{ failure() }} + run: find $HOME/.config/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log -print -exec cat '{}' \;; + + windows: + name: Windows + runs-on: windows-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: '11' + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: 12 + + - name: Install Node.js modules + run: npm install + + - name: Install Gulp + run: npm install -g gulp --force + + - name: Install VSCE + run: npm install -g vsce + + - name: Lint + run: gulp tslint + + - name: Checkstyle + run: gulp checkstyle + + - name: Build OSGi bundle + run: npm run build-server + + - name: Build VSIX file + run: vsce package + + - name: Test extension + run: npm test + + - name: Print language server Log if job failed + if: ${{ failure() }} + run: Get-ChildItem -Path $env:APPDATA/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log | cat + + darwin: + name: macOS + runs-on: macos-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: '11' + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: 12 + + - name: Install Node.js modules + run: npm install + + - name: Install Gulp + run: npm install -g gulp + + - name: Install VSCE + run: npm install -g vsce + + - name: Lint + run: gulp tslint + + - name: Checkstyle + run: gulp checkstyle + + - name: Build OSGi bundle + run: npm run build-server + + - name: Build VSIX file + run: vsce package + + - name: Test extension + run: npm test + + - name: Print language server Log if job failed + if: ${{ failure() }} + run: find $HOME/Library/Application\ Support/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log -print -exec cat '{}' \;; \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 754ecc3f..00000000 --- a/.travis.yml +++ /dev/null @@ -1,41 +0,0 @@ -language: java - -matrix: - include: - - os: linux - dist: trusty - jdk: openjdk11 - env: - - JDK_HOME=~/openjdk11 # force launching JLS using JDK11 - - os: osx - osx_image: xcode10.1 - jdk: oraclejdk11 - -addons: - apt: - packages: - - libsecret-1-dev - -before_install: - - | - if [ $TRAVIS_OS_NAME == "linux" ]; then - export CXX="g++-4.9" CC="gcc-4.9" - export DISPLAY=':99.0' - /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & - sleep 3 - fi - - nvm install 12 - - nvm use 12 - -install: -- npm install -g vsce -- npm install -g typescript -- npm install -g gulp -- npm install - -script: -- gulp tslint -- gulp checkstyle -- gulp build_server -- vsce package -- npm test diff --git a/.vscodeignore b/.vscodeignore index 18599adb..7887b29a 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -16,6 +16,7 @@ node_modules scripts extension.bundle.ts javaConfig.json +.github/** # Ignore output of code sign server/*.md From dd40a305632cc56e896afce167182c0e5e3dd181 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 5 Feb 2021 14:11:23 +0800 Subject: [PATCH 04/23] feat: Adopt resourceUri API to the Java Project explorer (#453) --- package-lock.json | 28 ++++++++++++++-------------- package.json | 4 ++-- src/views/dataNode.ts | 14 +++++++++++++- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index d6b8f689..162125fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -176,9 +176,9 @@ "dev": true }, "@types/vscode": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.52.0.tgz", - "integrity": "sha512-Kt3bvWzAvvF/WH9YEcrCICDp0Z7aHhJGhLJ1BxeyNP6yRjonWqWnAIh35/pXAjswAnWOABrYlF7SwXR9+1nnLA==", + "version": "1.53.0", + "resolved": "https://devdiv.pkgs.visualstudio.com/_packaging/CloudKernel/npm/registry/@types/vscode/-/vscode-1.53.0.tgz", + "integrity": "sha1-R7U3F69lYvKtBRcbychQCCSjkFw=", "dev": true }, "@ungap/promise-all-settled": { @@ -425,7 +425,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": { @@ -796,7 +796,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": { @@ -1017,7 +1017,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": { @@ -1640,7 +1640,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": { @@ -1653,7 +1653,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": { @@ -1844,7 +1844,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": { @@ -3481,7 +3481,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": { @@ -4538,7 +4538,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": { @@ -5396,7 +5396,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": { @@ -6441,7 +6441,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 }, @@ -7406,7 +7406,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 9cd7daba..c56c695e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "explorer" ], "engines": { - "vscode": "^1.52.0" + "vscode": "^1.53.0" }, "repository": { "type": "git", @@ -582,7 +582,7 @@ "@types/minimatch": "^3.0.3", "@types/mocha": "^8.0.4", "@types/node": "^8.10.66", - "@types/vscode": "1.52.0", + "@types/vscode": "1.53.0", "copy-webpack-plugin": "^6.3.2", "glob": "^7.1.6", "gulp": "^4.0.2", diff --git a/src/views/dataNode.ts b/src/views/dataNode.ts index 36bd7f89..54dbd5ef 100644 --- a/src/views/dataNode.ts +++ b/src/views/dataNode.ts @@ -3,7 +3,7 @@ import * as _ from "lodash"; import { ThemeIcon, TreeItem, TreeItemCollapsibleState, Uri } from "vscode"; -import { INodeData } from "../java/nodeData"; +import { INodeData, NodeKind } from "../java/nodeData"; import { Lock } from "../utils/Lock"; import { ExplorerNode } from "./explorerNode"; @@ -26,6 +26,18 @@ export abstract class DataNode extends ExplorerNode { item.iconPath = this.iconPath; item.command = this.command; item.contextValue = this.computeContextValue(); + if (this.uri) { + switch (this._nodeData.kind) { + case NodeKind.PackageRoot: + case NodeKind.Package: + case NodeKind.PrimaryType: + case NodeKind.Folder: + case NodeKind.File: + item.resourceUri = Uri.parse(this.uri); + break; + } + } + return item; } From 8dbf3b83f560c6c2fdd24cb33a3236f1aaab763a Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Sun, 7 Feb 2021 09:27:34 +0800 Subject: [PATCH 05/23] chore: Prepare for 0.18.0 (#456) --- CHANGELOG.md | 7 +++++++ README.md | 2 +- .../com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml | 2 +- .../com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml | 2 +- jdtls.ext/pom.xml | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 9 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f944003b..503e41ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to the "vscode-java-dependency" extension will be documented The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.18.0 +### Added +- Adopt the resource URI API to the Java Project explorer. [PR#453](https://github.com/microsoft/vscode-java-dependency/pull/453) + +### Fixed +- [Bugs fixed](https://github.com/microsoft/vscode-java-dependency/issues?q=is%3Aissue+label%3Abug+milestone%3A0.18.0+is%3Aclosed) + ## 0.17.0 ### Added - Add contextual title and icon for `Java Project` explorer. [#396](https://github.com/microsoft/vscode-java-dependency/issues/396) diff --git a/README.md b/README.md index 0e60a38e..ca9c4219 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > Manage Java projects in Visual Studio Code -[![Travis CI](https://travis-ci.org/Microsoft/vscode-java-dependency.svg?branch=master)](https://travis-ci.org/Microsoft/vscode-java-dependency) +[![GitHub Actions](https://img.shields.io/github/workflow/status/microsoft/vscode-java-dependency/CI/master?style=flat-square)](https://github.com/microsoft/vscode-java-dependency/actions?query=workflow%3ACI+branch%3Amaster) ## Overview diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF index 7c687f60..2e1d873f 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Activator Bundle-SymbolicName: com.microsoft.jdtls.ext.activator;singleton:=true -Bundle-Version: 0.17.0 +Bundle-Version: 0.18.0 Bundle-Activator: com.microsoft.jdtls.ext.activator.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.jdt.core, diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml index fd23b09e..2ebfaf9d 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.17.0 + 0.18.0 com.microsoft.jdtls.ext.activator eclipse-plugin diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF index 611f1849..0f4e2e85 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Core Bundle-SymbolicName: com.microsoft.jdtls.ext.core;singleton:=true -Bundle-Version: 0.17.0 +Bundle-Version: 0.18.0 Bundle-Activator: com.microsoft.jdtls.ext.core.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml index add92078..9884e183 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.17.0 + 0.18.0 com.microsoft.jdtls.ext.core eclipse-plugin diff --git a/jdtls.ext/pom.xml b/jdtls.ext/pom.xml index 56899bfc..17939e9a 100644 --- a/jdtls.ext/pom.xml +++ b/jdtls.ext/pom.xml @@ -4,7 +4,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent ${base.name} :: Parent - 0.17.0 + 0.18.0 pom Java Project Manager diff --git a/package-lock.json b/package-lock.json index 162125fb..3a079424 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-java-dependency", - "version": "0.17.0", + "version": "0.18.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c56c695e..8753484f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.17.0", + "version": "0.18.0", "publisher": "vscjava", "preview": true, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", @@ -31,7 +31,7 @@ "main": "./main.js", "contributes": { "javaExtensions": [ - "./server/com.microsoft.jdtls.ext.core-0.17.0.jar" + "./server/com.microsoft.jdtls.ext.core-0.18.0.jar" ], "commands": [ { From 54911c34dd08ca258bfa6e72f2563dd01293b315 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Tue, 9 Feb 2021 09:31:55 +0800 Subject: [PATCH 06/23] fix: Cannot reveal the explorer when 'java.dependency.syncWithFolderExplorer' is off (#460) --- src/utility.ts | 3 +-- src/views/dependencyExplorer.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/utility.ts b/src/utility.ts index 6d0b5df5..e3202ab3 100644 --- a/src/utility.ts +++ b/src/utility.ts @@ -5,7 +5,6 @@ import { Uri, window, workspace, WorkspaceFolder } from "vscode"; import { setUserError } from "vscode-extension-telemetry-wrapper"; import { INodeData } from "./java/nodeData"; import { languageServerApiManager } from "./languageServerApi/languageServerApiManager"; -import { Settings } from "./settings"; export class Utility { @@ -31,7 +30,7 @@ export class Utility { if (uri.scheme === "file" && !workspace.getWorkspaceFolder(uri)) { return false; } - if (!Settings.syncWithFolderExplorer() || !await languageServerApiManager.isStandardServerReady()) { + if (!await languageServerApiManager.isStandardServerReady()) { return false; } return true; diff --git a/src/views/dependencyExplorer.ts b/src/views/dependencyExplorer.ts index c88cf6b2..0c160dfc 100644 --- a/src/views/dependencyExplorer.ts +++ b/src/views/dependencyExplorer.ts @@ -14,6 +14,7 @@ import { renameFile } from "../explorerCommands/rename"; import { getCmdNode } from "../explorerCommands/utility"; import { Jdtls } from "../java/jdtls"; import { INodeData } from "../java/nodeData"; +import { Settings } from "../settings"; import { EventCounter, Utility } from "../utility"; import { Lock } from "../utils/Lock"; import { DataNode } from "./dataNode"; @@ -76,7 +77,7 @@ export class DependencyExplorer implements Disposable { await commands.executeCommand(Commands.VSCODE_OPEN, uri, { preserveFocus: true }); } - this.reveal(uri); + this.reveal(uri, false /*force to reveal even the sync setting is turned off*/); }), ); @@ -128,10 +129,14 @@ export class DependencyExplorer implements Disposable { } } - public async reveal(uri: Uri): Promise { + public async reveal(uri: Uri, needCheckSyncSetting: boolean = true): Promise { try { await this._lock.acquire(); + if (needCheckSyncSetting && !Settings.syncWithFolderExplorer()) { + return; + } + if (!await Utility.isRevealable(uri)) { return; } From f780af865eb2dce9d60adb60626b4e1f7c3ffd74 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 26 Feb 2021 08:45:28 +0800 Subject: [PATCH 07/23] fix: Show welcome view when no Java projects in workspace (#461) --- package.json | 13 +++++++++---- package.nls.json | 3 ++- package.nls.zh.json | 1 + src/constants.ts | 1 + src/views/dependencyDataProvider.ts | 8 ++++---- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 8753484f..0c059b56 100644 --- a/package.json +++ b/package.json @@ -369,12 +369,12 @@ }, { "command": "java.view.package.exportJar", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "navigation@20" }, { "command": "java.view.package.refresh", - "when": "view == javaProjectExplorer && java:serverMode == Standard", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "navigation@30" }, { @@ -399,12 +399,12 @@ }, { "command": "java.project.build.workspace", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "overflow_20@10" }, { "command": "java.project.clean.workspace", - "when": "view == javaProjectExplorer && java:serverMode == Standard && workspaceFolderCount != 0", + "when": "view == javaProjectExplorer && java:serverMode == Standard && !java:noJavaProjects", "group": "overflow_20@20" } ], @@ -519,6 +519,11 @@ "contents": "%viewsWelcome.workbench.createNewJavaProject%", "when": "workspaceFolderCount == 0" }, + { + "view": "javaProjectExplorer", + "contents": "%viewsWelcome.workbench.noJavaProject%", + "when": "java:noJavaProjects" + }, { "view": "javaProjectExplorer", "contents": "%viewsWelcome.workbench.inLightWeightMode%", diff --git a/package.nls.json b/package.nls.json index 55a540c9..44fe7bfe 100644 --- a/package.nls.json +++ b/package.nls.json @@ -37,6 +37,7 @@ "taskDefinitions.java.project.exportJar.testCompileOutput": "The folders containing output class files in the test scope.", "taskDefinitions.java.project.exportJar.dependencies": "The artifact dependencies in the runtime scope.", "taskDefinitions.java.project.exportJar.testDependencies": "The artifact dependencies in the test scope.", - "viewsWelcome.workbench.createNewJavaProject": "You can also [open a Java project](command:_java.project.open), or create a new Java project by clicking the below button.\n[Create Java Project](command:java.project.create)", + "viewsWelcome.workbench.createNewJavaProject": "You can also [open a Java project](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)", + "viewsWelcome.workbench.noJavaProject": "No Java projects found in the current workspace. You can [open a Java project](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)", "viewsWelcome.workbench.inLightWeightMode": "No projects are listed because the Java Language Server is currently running in [LightWeight Mode](https://aka.ms/vscode-java-lightweight). To show projects, click on the button to switch to Standard Mode.\n[Switch to Standard Mode](command:java.server.mode.switch?%5B%22Standard%22,true%5D)" } diff --git a/package.nls.zh.json b/package.nls.zh.json index ef65f631..3314e85b 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -38,5 +38,6 @@ "taskDefinitions.java.project.exportJar.dependencies": "在 runtime scope 内的依赖。", "taskDefinitions.java.project.exportJar.testDependencies": "在 test scope 内的依赖。", "viewsWelcome.workbench.createNewJavaProject": "您也可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)", + "viewsWelcome.workbench.noJavaProject": "当前工作空间未发现 Java 项目,您可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)", "viewsWelcome.workbench.inLightWeightMode": "由于 Java 语言服务正运行在 [LightWeight 模式](https://aka.ms/vscode-java-lightweight)下,因此项目将不会展示在该视图中。如果您需要展示项目信息,可以点击下方按钮将 Java 语言服务切换至 Standard 模式。\n[切换至 Standard 模式](command:java.server.mode.switch?%5B%22Standard%22,true%5D)" } diff --git a/src/constants.ts b/src/constants.ts index 0cd11895..2670b591 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -4,6 +4,7 @@ export namespace Context { export const EXTENSION_ACTIVATED: string = "java:projectManagerActivated"; export const SUPPORTED_BUILD_FILES: string = "java:supportedBuildFiles"; + export const NO_JAVA_PEOJECT: string = "java:noJavaProjects"; } export namespace Explorer { diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index 2e482fa3..e28f39c2 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -7,7 +7,9 @@ import { RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace, } from "vscode"; import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; +import { contextManager } from "../../extension.bundle"; import { Commands } from "../commands"; +import { Context } from "../constants"; import { newJavaClass, newPackage } from "../explorerCommands/new"; import { executeExportJarTask } from "../exportJarSteps/ExportJarTaskProvider"; import { Jdtls } from "../java/jdtls"; @@ -168,18 +170,16 @@ export class DependencyDataProvider implements TreeDataProvider { kind: NodeKind.Workspace, }, undefined))); this._rootItems = rootItems; - return rootItems; } else { const result: INodeData[] = await Jdtls.getProjects(folders[0].uri.toString()); result.forEach((project) => { rootItems.push(new ProjectNode(project, undefined)); }); this._rootItems = rootItems; - return rootItems; } - } else { - throw new Error("No workspace folder found, please open a folder into the workspace first."); } + contextManager.setContextValue(Context.NO_JAVA_PEOJECT, _.isEmpty(rootItems)); + return rootItems; } finally { this._lock.release(); } From 671c65c10cac793a8cec2b033fe8bf463d5396d8 Mon Sep 17 00:00:00 2001 From: Shi Chen Date: Mon, 1 Mar 2021 13:47:30 +0800 Subject: [PATCH 08/23] chore: Apply new logo (#462) --- logo.png | Bin 29471 -> 3011 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/logo.png b/logo.png index d9d99443ca99b100efb51ab4ce8391efbf7bf51d..aa737b3a65b21a21a86f2bb1734bf293121af438 100644 GIT binary patch literal 3011 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 FV1mA8qv!wt literal 29471 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 N=TEg&%am;+{|D0!Sn2=( From 23c89a92f116c22c5632e503d9f6a10e8d30dd3b Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Mon, 1 Mar 2021 14:54:10 +0800 Subject: [PATCH 09/23] chore: Prepare for 0.18.1 (#463) --- CHANGELOG.md | 10 ++++++++++ .../META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml | 2 +- .../com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml | 2 +- jdtls.ext/pom.xml | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 8 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 503e41ce..99070c0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to the "vscode-java-dependency" extension will be documented The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +### 0.18.1 +### Added +- Add welcome view in Java Proejct explorer when there is no Java projects in the workspace. [PR#461](https://github.com/microsoft/vscode-java-dependency/pull/461) + +### Changed +- Apply the new extension icon. [PR#462](https://github.com/microsoft/vscode-java-dependency/pull/462) + +### Fixed +- [Bugs fixed](https://github.com/microsoft/vscode-java-dependency/issues?q=is%3Aissue+label%3Abug+milestone%3A0.18.1+is%3Aclosed) + ## 0.18.0 ### Added - Adopt the resource URI API to the Java Project explorer. [PR#453](https://github.com/microsoft/vscode-java-dependency/pull/453) diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF index 2e1d873f..b5646099 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Activator Bundle-SymbolicName: com.microsoft.jdtls.ext.activator;singleton:=true -Bundle-Version: 0.18.0 +Bundle-Version: 0.18.1 Bundle-Activator: com.microsoft.jdtls.ext.activator.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.jdt.core, diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml index 2ebfaf9d..9486e0e8 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.0 + 0.18.1 com.microsoft.jdtls.ext.activator eclipse-plugin diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF index 0f4e2e85..bd23e641 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Core Bundle-SymbolicName: com.microsoft.jdtls.ext.core;singleton:=true -Bundle-Version: 0.18.0 +Bundle-Version: 0.18.1 Bundle-Activator: com.microsoft.jdtls.ext.core.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml index 9884e183..ab5479df 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.0 + 0.18.1 com.microsoft.jdtls.ext.core eclipse-plugin diff --git a/jdtls.ext/pom.xml b/jdtls.ext/pom.xml index 17939e9a..8d533936 100644 --- a/jdtls.ext/pom.xml +++ b/jdtls.ext/pom.xml @@ -4,7 +4,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent ${base.name} :: Parent - 0.18.0 + 0.18.1 pom Java Project Manager diff --git a/package-lock.json b/package-lock.json index 3a079424..4a2795ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-java-dependency", - "version": "0.18.0", + "version": "0.18.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0c059b56..1dde26a4 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.18.0", + "version": "0.18.1", "publisher": "vscjava", "preview": true, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", @@ -31,7 +31,7 @@ "main": "./main.js", "contributes": { "javaExtensions": [ - "./server/com.microsoft.jdtls.ext.core-0.18.0.jar" + "./server/com.microsoft.jdtls.ext.core-0.18.1.jar" ], "commands": [ { From 7dbfef8c4b93346c203aa3831485f6d2b4c30e60 Mon Sep 17 00:00:00 2001 From: Shi Chen Date: Wed, 3 Mar 2021 10:18:04 +0800 Subject: [PATCH 10/23] chore: Update logo to 256*256 (#466) --- logo.png | Bin 3011 -> 5818 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/logo.png b/logo.png index aa737b3a65b21a21a86f2bb1734bf293121af438..daba66cdd4bb4efec832f94ca20cf06a9e2ad4f0 100644 GIT binary patch literal 5818 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 From 32ed4731bdd91bbeac280d29feb45941b9c0a200 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Mar 2021 09:51:38 +0800 Subject: [PATCH 11/23] chore(deps): Bump elliptic from 6.5.3 to 6.5.4 (#469) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a2795ee..39978790 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1898,24 +1898,24 @@ } }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "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" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } From 2162e7aaa80b1b9296577f204ffb777bbde1dae8 Mon Sep 17 00:00:00 2001 From: Shi Chen Date: Tue, 9 Mar 2021 11:10:01 +0800 Subject: [PATCH 12/23] fix: export jar doesn't report error when grammatical error exists (#468) --- src/build.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/build.ts b/src/build.ts index 29f08518..d0542c56 100644 --- a/src/build.ts +++ b/src/build.ts @@ -36,7 +36,10 @@ async function handleBuildFailure(operationId: string, err: any): Promise Date: Tue, 9 Mar 2021 12:23:32 +0800 Subject: [PATCH 13/23] chore: Update dependencies (#470) --- package-lock.json | 695 +++++++++++++++++++++++++--------------------- package.json | 18 +- 2 files changed, 394 insertions(+), 319 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39978790..15408af1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,14 +112,21 @@ } }, "@npmcli/move-file": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", - "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, "requires": { - "mkdirp": "^1.0.4" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, "@types/fancy-log": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@types/fancy-log/-/fancy-log-1.3.0.tgz", @@ -146,15 +153,15 @@ } }, "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/lodash": { - "version": "4.14.165", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.165.tgz", - "integrity": "sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg==", + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==", "dev": true }, "@types/minimatch": { @@ -164,9 +171,9 @@ "dev": true }, "@types/mocha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.4.tgz", - "integrity": "sha512-M4BwiTJjHmLq6kjON7ZoI2JMlBvpY3BYSdiP6s/qCT3jb1s9/DeJF0JELpAxiVSIxXDzfNKe+r7yedMIoLbknQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.1.tgz", + "integrity": "sha512-NysN+bNqj6E0Hv4CTGWSlPzMW6vTKjDpOteycDkV4IWBsO+PU48JonrPzV9ODjiI2XrjmA05KInLgF5ivZ/YGQ==", "dev": true }, "@types/node": { @@ -381,12 +388,12 @@ "dev": true }, "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } }, "aggregate-error": { @@ -771,9 +778,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -952,12 +959,28 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -975,15 +998,15 @@ } }, "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", "dev": true }, "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "brace-expansion": { @@ -1124,12 +1147,24 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "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 }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1200,6 +1235,15 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -1208,6 +1252,17 @@ "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "chokidar": { @@ -1596,9 +1651,9 @@ } }, "copy-webpack-plugin": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", - "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, "requires": { "cacache": "^15.0.5", @@ -1631,9 +1686,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -1714,12 +1769,20 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "decamelize": { @@ -1854,9 +1917,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -1875,6 +1938,15 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2000,21 +2072,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -2037,6 +2094,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2083,9 +2146,9 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "evp_bytestokey": { @@ -2602,6 +2665,38 @@ "nan": "^2.12.1" } }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -2992,13 +3087,14 @@ "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==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, "https-browserify": { @@ -3008,13 +3104,13 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "agent-base": "6", + "debug": "4" } }, "ieee754": { @@ -3398,9 +3494,9 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { "minimist": "^1.2.5" @@ -3479,6 +3575,12 @@ "resolve": "^1.1.7" } }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -3519,9 +3621,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { "version": "4.0.0", @@ -3772,9 +3874,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -3909,35 +4011,35 @@ "dev": true }, "mocha": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", - "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.1.tgz", + "integrity": "sha512-5SBMxANWqOv5bw3Hx+HVgaWlcWcFEQDUdaUAr1AUU+qwtx6cowhn7gEDT/DwQP7uYxnvShdUOVLbTYAHOEGfDQ==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.4.3", - "debug": "4.2.0", - "diff": "4.0.2", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.14.0", + "js-yaml": "4.0.0", "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "nanoid": "3.1.12", + "ms": "2.1.3", + "nanoid": "3.1.20", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", - "supports-color": "7.2.0", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.2", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { @@ -3948,20 +4050,11 @@ "dev": true }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -3972,27 +4065,27 @@ "picomatch": "^2.0.4" } }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -4001,39 +4094,27 @@ } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "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==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "find-up": { "version": "5.0.0", @@ -4046,9 +4127,9 @@ } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -4068,11 +4149,20 @@ } }, "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=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4083,9 +4173,9 @@ } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "p-locate": { @@ -4106,30 +4196,24 @@ "picomatch": "^2.2.1" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "which": { @@ -4141,101 +4225,43 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "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==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true } } }, @@ -4293,9 +4319,9 @@ "optional": true }, "nanoid": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", - "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true }, "nanomatch": { @@ -4546,12 +4572,12 @@ } }, "p-limit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { @@ -4864,9 +4890,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -5646,9 +5672,9 @@ "dev": true }, "ssri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", - "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -5784,9 +5810,9 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -5809,9 +5835,9 @@ "dev": true }, "tar": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", - "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -5858,6 +5884,12 @@ "worker-farm": "^1.7.0" }, "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "cacache": { "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", @@ -6023,9 +6055,9 @@ } }, "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==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yallist": { @@ -6142,6 +6174,12 @@ "through2": "^2.0.3" } }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, "ts-loader": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", @@ -6458,9 +6496,9 @@ "dev": true }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", + "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", "dev": true }, "unc-path-regex": { @@ -6578,6 +6616,24 @@ } } }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -6585,9 +6641,9 @@ "dev": true }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -6762,9 +6818,9 @@ } }, "vscode-extension-telemetry-wrapper": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.8.0.tgz", - "integrity": "sha512-z+PAc7QAMeTZU0Kq0oBn7DVinJDLtyK5DNZV0dSkclXPYlIVAalE5iEWBChXgANxaMWCyJQqCEI60zlZ7r7C/A==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/vscode-extension-telemetry-wrapper/-/vscode-extension-telemetry-wrapper-0.9.0.tgz", + "integrity": "sha512-QQvCn40hryS1U0Vob/fxqDX+kc7oYn+viiYpq0QOMp7q6aNaFFmjL9Wv5QfBIC/h2Jb083LFF0Xz38hhX8nCVQ==", "requires": { "uuid": "^3.4.0", "vscode-extension-telemetry": "^0.1.6" @@ -6779,25 +6835,15 @@ } }, "vscode-test": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.4.1.tgz", - "integrity": "sha512-Ls7+JyC06cUCuomlTYk4aNJI00Rri09hgtkNl3zfQ1bj6meXglpSPpuzJ/RPNetlUHFMm4eGs0Xr/H5pFPVwfQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.5.1.tgz", + "integrity": "sha512-tDloz6euDne+GeUSglhufL0c2xhuYAPAT74hjsuGxfflALfXF9bYnJ7ehZEeVkr/ZnQEh/T8EBrfPL+m0h5qEQ==", "dev": true, "requires": { - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.4", - "rimraf": "^2.6.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" } }, "watchpack": { @@ -6824,22 +6870,22 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "optional": true }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "optional": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -6848,9 +6894,9 @@ } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -6887,9 +6933,9 @@ } }, "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -6900,7 +6946,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -6946,6 +6992,29 @@ } } }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -7399,9 +7468,9 @@ } }, "workerpool": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", - "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "wrap-ansi": { @@ -7494,6 +7563,12 @@ "dev": true } } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 1dde26a4..4605cf39 100644 --- a/package.json +++ b/package.json @@ -583,30 +583,30 @@ "devDependencies": { "@types/fs-extra": "^5.1.0", "@types/glob": "^7.1.3", - "@types/lodash": "^4.14.165", + "@types/lodash": "^4.14.168", "@types/minimatch": "^3.0.3", - "@types/mocha": "^8.0.4", + "@types/mocha": "^8.2.1", "@types/node": "^8.10.66", "@types/vscode": "1.53.0", - "copy-webpack-plugin": "^6.3.2", + "copy-webpack-plugin": "^6.4.1", "glob": "^7.1.6", "gulp": "^4.0.2", "gulp-copy": "^4.0.1", "gulp-tslint": "^8.1.4", - "mocha": "^8.2.1", + "mocha": "^8.3.1", "ts-loader": "^5.4.5", "tslint": "^5.20.1", - "typescript": "^3.9.7", - "vscode-test": "^1.4.1", - "webpack": "^4.44.2", + "typescript": "^3.9.9", + "vscode-test": "^1.5.1", + "webpack": "^4.46.0", "webpack-cli": "^3.3.12" }, "dependencies": { "fs-extra": "^7.0.1", "globby": "11.0.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", - "vscode-extension-telemetry-wrapper": "0.8.0", + "vscode-extension-telemetry-wrapper": "0.9.0", "vscode-tas-client": "^0.1.17" } } From 292ee9fc8ee11de3fd00ae2bd612d0a5c838bce8 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Tue, 9 Mar 2021 17:13:38 +0800 Subject: [PATCH 14/23] fix: Create new packages or classes does not work via hotkeys (#467) --- src/explorerCommands/delete.ts | 4 +- src/explorerCommands/new.ts | 33 ++++++++++++++-- src/explorerCommands/rename.ts | 4 +- src/explorerCommands/utility.ts | 12 +++++- src/views/dependencyDataProvider.ts | 21 +++++----- src/views/dependencyExplorer.ts | 60 ++++++++++++++++++++++++----- 6 files changed, 104 insertions(+), 30 deletions(-) diff --git a/src/explorerCommands/delete.ts b/src/explorerCommands/delete.ts index 036c8c96..3a6d626b 100644 --- a/src/explorerCommands/delete.ts +++ b/src/explorerCommands/delete.ts @@ -7,8 +7,8 @@ import { isMutable } from "./utility"; const confirmMessage = "Move to Recycle Bin"; -export async function deleteFiles(node: DataNode): Promise { - if (!isMutable(node) || !node.uri) { +export async function deleteFiles(node?: DataNode): Promise { + if (!node?.uri || !isMutable(node)) { return; } diff --git a/src/explorerCommands/new.ts b/src/explorerCommands/new.ts index c387e3ef..7d15b9c1 100644 --- a/src/explorerCommands/new.ts +++ b/src/explorerCommands/new.ts @@ -8,7 +8,11 @@ import { NodeKind } from "../java/nodeData"; import { DataNode } from "../views/dataNode"; import { checkJavaQualifiedName } from "./utility"; -export async function newJavaClass(node: DataNode): Promise { +export async function newJavaClass(node?: DataNode): Promise { + if (!node?.uri || !canCreateClass(node)) { + return; + } + const packageFsPath: string = await getPackageFsPath(node); if (!packageFsPath) { return; @@ -43,6 +47,17 @@ export async function newJavaClass(node: DataNode): Promise { workspace.applyEdit(workspaceEdit); } +function canCreateClass(node: DataNode): boolean { + if (node.nodeData.kind === NodeKind.Project || + node.nodeData.kind === NodeKind.PackageRoot || + node.nodeData.kind === NodeKind.Package || + node.nodeData.kind === NodeKind.PrimaryType) { + return true; + } + + return false; +} + async function getPackageFsPath(node: DataNode): Promise { if (node.nodeData.kind === NodeKind.Project) { const childrenNodes: DataNode[] = await node.getChildren() as DataNode[]; @@ -77,6 +92,8 @@ async function getPackageFsPath(node: DataNode): Promise { ); return choice ? choice.fsPath : ""; } + } else if (node.nodeData.kind === NodeKind.PrimaryType) { + return node.uri ? path.dirname(Uri.parse(node.uri).fsPath) : ""; } return node.uri ? Uri.parse(node.uri).fsPath : ""; @@ -89,8 +106,8 @@ function getNewFilePath(basePath: string, className: string): string { return path.join(basePath, ...className.split(".")) + ".java"; } -export async function newPackage(node: DataNode): Promise { - if (!node.uri) { +export async function newPackage(node?: DataNode): Promise { + if (!node?.uri || !canCreatePackage(node)) { return; } @@ -136,6 +153,16 @@ export async function newPackage(node: DataNode): Promise { await fse.ensureDir(getNewPackagePath(packageRootPath, packageName)); } +function canCreatePackage(node: DataNode): boolean { + if (node.nodeData.kind === NodeKind.Project || + node.nodeData.kind === NodeKind.PackageRoot || + node.nodeData.kind === NodeKind.Package) { + return true; + } + + return false; +} + function getPackageRootPath(packageFsPath: string, packageName: string): string { const numberOfSegment: number = packageName.split(".").length; return path.join(packageFsPath, ...Array(numberOfSegment).fill("..")); diff --git a/src/explorerCommands/rename.ts b/src/explorerCommands/rename.ts index d5433042..5d4af1b3 100644 --- a/src/explorerCommands/rename.ts +++ b/src/explorerCommands/rename.ts @@ -8,8 +8,8 @@ import { NodeKind } from "../java/nodeData"; import { DataNode } from "../views/dataNode"; import { checkJavaQualifiedName, isMutable } from "./utility"; -export async function renameFile(node: DataNode): Promise { - if (!isMutable(node) || !node.uri) { +export async function renameFile(node?: DataNode): Promise { + if (!node?.uri || !isMutable(node)) { return; } diff --git a/src/explorerCommands/utility.ts b/src/explorerCommands/utility.ts index ec8f4d54..22e26968 100644 --- a/src/explorerCommands/utility.ts +++ b/src/explorerCommands/utility.ts @@ -35,7 +35,15 @@ export function checkJavaQualifiedName(value: string): string { return ""; } -export function getCmdNode(selectedNode: ExplorerNode, node?: DataNode): DataNode { +export function getCmdNode(selectedNodes: ExplorerNode[], node?: DataNode): DataNode | undefined { // if command not invoked by context menu, use selected node in explorer - return node ? node : selectedNode as DataNode; + if (node) { + return node; + } + + if (selectedNodes.length > 0) { + return selectedNodes[0] as DataNode; + } + + return undefined; } diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index e28f39c2..aebc3c27 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -10,7 +10,6 @@ import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode- import { contextManager } from "../../extension.bundle"; import { Commands } from "../commands"; import { Context } from "../constants"; -import { newJavaClass, newPackage } from "../explorerCommands/new"; import { executeExportJarTask } from "../exportJarSteps/ExportJarTaskProvider"; import { Jdtls } from "../java/jdtls"; import { INodeData, NodeKind } from "../java/nodeData"; @@ -41,8 +40,6 @@ export class DependencyDataProvider implements TreeDataProvider { context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_EXPORT_JAR, async (node: INodeData) => { executeExportJarTask(node); })); - context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_CLASS, (node: DataNode) => newJavaClass(node))); - context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_PACKAGE, (node: DataNode) => newPackage(node))); context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_OUTLINE, (uri, range) => window.showTextDocument(Uri.parse(uri), { selection: range }))); context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_BUILD_WORKSPACE, () => @@ -128,15 +125,7 @@ export class DependencyDataProvider implements TreeDataProvider { return project?.revealPaths(paths); } - private doRefresh(element?: ExplorerNode): void { - if (!element) { - this._rootItems = undefined; - } - explorerNodeCache.removeNodeChildren(element); - this._onDidChangeTreeData.fire(element); - } - - private async getRootProjects(): Promise { + public async getRootProjects(): Promise { const rootElements = await this.getRootNodes(); if (rootElements[0] instanceof ProjectNode) { return rootElements; @@ -152,6 +141,14 @@ export class DependencyDataProvider implements TreeDataProvider { } } + private doRefresh(element?: ExplorerNode): void { + if (!element) { + this._rootItems = undefined; + } + explorerNodeCache.removeNodeChildren(element); + this._onDidChangeTreeData.fire(element); + } + private async getRootNodes(): Promise { try { await this._lock.acquire(); diff --git a/src/views/dependencyExplorer.ts b/src/views/dependencyExplorer.ts index 0c160dfc..1adc5107 100644 --- a/src/views/dependencyExplorer.ts +++ b/src/views/dependencyExplorer.ts @@ -4,12 +4,13 @@ import * as fse from "fs-extra"; import * as _ from "lodash"; import * as path from "path"; -import { commands, Disposable, ExtensionContext, TextEditor, TreeView, +import { commands, Disposable, ExtensionContext, QuickPickItem, TextEditor, TreeView, TreeViewExpansionEvent, TreeViewSelectionChangeEvent, TreeViewVisibilityChangeEvent, Uri, window } from "vscode"; import { instrumentOperationAsVsCodeCommand, sendInfo } from "vscode-extension-telemetry-wrapper"; import { Commands } from "../commands"; import { Build } from "../constants"; import { deleteFiles } from "../explorerCommands/delete"; +import { newJavaClass, newPackage } from "../explorerCommands/new"; import { renameFile } from "../explorerCommands/rename"; import { getCmdNode } from "../explorerCommands/utility"; import { Jdtls } from "../java/jdtls"; @@ -96,29 +97,43 @@ export class DependencyExplorer implements Disposable { // register keybinding commands context.subscriptions.push( + instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_CLASS, async (node?: DataNode) => { + let cmdNode = getCmdNode(this._dependencyViewer.selection, node); + if (!cmdNode) { + cmdNode = await this.promptForProjectNode(); + } + newJavaClass(cmdNode); + }), + instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_PACKAGE, async (node?: DataNode) => { + let cmdNode = getCmdNode(this._dependencyViewer.selection, node); + if (!cmdNode) { + cmdNode = await this.promptForProjectNode(); + } + newPackage(cmdNode); + }), instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_REVEAL_FILE_OS, (node?: DataNode) => { - const cmdNode = getCmdNode(this._dependencyViewer.selection[0], node); - if (cmdNode.uri) { + const cmdNode = getCmdNode(this._dependencyViewer.selection, node); + if (cmdNode?.uri) { commands.executeCommand("revealFileInOS", Uri.parse(cmdNode.uri)); } }), instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_COPY_FILE_PATH, (node?: DataNode) => { - const cmdNode = getCmdNode(this._dependencyViewer.selection[0], node); - if (cmdNode.uri) { + const cmdNode = getCmdNode(this._dependencyViewer.selection, node); + if (cmdNode?.uri) { commands.executeCommand("copyFilePath", Uri.parse(cmdNode.uri)); } }), instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_COPY_RELATIVE_FILE_PATH, (node?: DataNode) => { - const cmdNode = getCmdNode(this._dependencyViewer.selection[0], node); - if (cmdNode.uri) { + const cmdNode = getCmdNode(this._dependencyViewer.selection, node); + if (cmdNode?.uri) { commands.executeCommand("copyRelativeFilePath", Uri.parse(cmdNode.uri)); } }), instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_RENAME_FILE, (node?: DataNode) => { - renameFile(getCmdNode(this._dependencyViewer.selection[0], node)); + renameFile(getCmdNode(this._dependencyViewer.selection, node)); }), instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_MOVE_FILE_TO_TRASH, (node?: DataNode) => { - deleteFiles(getCmdNode(this._dependencyViewer.selection[0], node)); + deleteFiles(getCmdNode(this._dependencyViewer.selection, node)); }), ); } @@ -162,4 +177,31 @@ export class DependencyExplorer implements Disposable { public get dataProvider(): DependencyDataProvider { return this._dataProvider; } + + private async promptForProjectNode(): Promise { + const projects = await this._dataProvider.getRootProjects(); + if (projects.length === 0) { + window.showInformationMessage("There is no Java projects in current workspace."); + return undefined; + } else if (projects.length === 1) { + return projects[0] as DataNode; + } else { + const options: IProjectPickItem[] = projects.map((p: DataNode) => { + return { + label: p.name, + node: p, + }; + }); + const choice: IProjectPickItem | undefined = await window.showQuickPick(options, { + placeHolder: "Choose a project", + ignoreFocusOut: true, + }); + + return choice?.node as DataNode; + } + } +} + +interface IProjectPickItem extends QuickPickItem { + node: ExplorerNode; } From 38a40b2d3e3e1b20fa5fd32202cb8cde37d8fdeb Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Sun, 21 Mar 2021 21:44:54 -0700 Subject: [PATCH 15/23] chore: Prepare for 0.18.2 (#473) --- CHANGELOG.md | 12 ++++++++++-- .../META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml | 2 +- jdtls.ext/pom.xml | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 8 files changed, 18 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99070c0e..bf74e5a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,17 @@ All notable changes to the "vscode-java-dependency" extension will be documented The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -### 0.18.1 +## 0.18.2 + +### Changed +- Update dependencies. [PR#470](https://github.com/microsoft/vscode-java-dependency/pull/470) + +### Fixed +- [Bugs fixed](https://github.com/microsoft/vscode-java-dependency/issues?q=is%3Aissue+label%3Abug+milestone%3A0.18.2+is%3Aclosed) + +## 0.18.1 ### Added -- Add welcome view in Java Proejct explorer when there is no Java projects in the workspace. [PR#461](https://github.com/microsoft/vscode-java-dependency/pull/461) +- Add welcome view in Java Project explorer when there is no Java projects in the workspace. [PR#461](https://github.com/microsoft/vscode-java-dependency/pull/461) ### Changed - Apply the new extension icon. [PR#462](https://github.com/microsoft/vscode-java-dependency/pull/462) diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF index b5646099..9fe8f0f5 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Activator Bundle-SymbolicName: com.microsoft.jdtls.ext.activator;singleton:=true -Bundle-Version: 0.18.1 +Bundle-Version: 0.18.2 Bundle-Activator: com.microsoft.jdtls.ext.activator.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.jdt.core, diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml index 9486e0e8..8f253549 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.1 + 0.18.2 com.microsoft.jdtls.ext.activator eclipse-plugin diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF index bd23e641..2a432fd4 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Core Bundle-SymbolicName: com.microsoft.jdtls.ext.core;singleton:=true -Bundle-Version: 0.18.1 +Bundle-Version: 0.18.2 Bundle-Activator: com.microsoft.jdtls.ext.core.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml index ab5479df..2225049d 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.1 + 0.18.2 com.microsoft.jdtls.ext.core eclipse-plugin diff --git a/jdtls.ext/pom.xml b/jdtls.ext/pom.xml index 8d533936..eea07a19 100644 --- a/jdtls.ext/pom.xml +++ b/jdtls.ext/pom.xml @@ -4,7 +4,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent ${base.name} :: Parent - 0.18.1 + 0.18.2 pom Java Project Manager diff --git a/package-lock.json b/package-lock.json index 15408af1..5c6ad121 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-java-dependency", - "version": "0.18.1", + "version": "0.18.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4605cf39..7ccc8509 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.18.1", + "version": "0.18.2", "publisher": "vscjava", "preview": true, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", @@ -31,7 +31,7 @@ "main": "./main.js", "contributes": { "javaExtensions": [ - "./server/com.microsoft.jdtls.ext.core-0.18.1.jar" + "./server/com.microsoft.jdtls.ext.core-0.18.2.jar" ], "commands": [ { From 403f78fbb5e3d489499a01299b3b6ebbfe9ccaad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Mar 2021 09:39:29 +0800 Subject: [PATCH 16/23] chore(deps): Bump y18n from 3.2.1 to 3.2.2 (#474) Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/commits) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5c6ad121..cc54db33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7389,9 +7389,9 @@ } }, "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==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yargs": { @@ -7496,9 +7496,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yallist": { From 4d1554882861a112d52c89bf1534817361d1626a Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Tue, 6 Apr 2021 10:13:03 +0800 Subject: [PATCH 17/23] Adopt new APIs from vscode-tas-client (#477) --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- src/ExperimentationService.ts | 6 +++--- src/extension.ts | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc54db33..84ad32c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2569,9 +2569,9 @@ } }, "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" }, "for-in": { "version": "1.0.2", @@ -5849,9 +5849,9 @@ } }, "tas-client": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.16.tgz", - "integrity": "sha512-ZMGg7dGXiYVJHYusDpUb/Ilg+iPNYZdKJSIA2ADn0f2RovHWM0TpNVe2YHPEc0hdFMsUwWKS5pCRzLnlUqcqGg==", + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.1.21.tgz", + "integrity": "sha512-7UuIwOXarCYoCTrQHY5n7M+63XuwMC0sVUdbPQzxqDB9wMjIW0JF39dnp3yoJnxr4jJUVhPtvkkXZbAD0BxCcA==", "requires": { "axios": "^0.21.1" } @@ -6827,11 +6827,11 @@ } }, "vscode-tas-client": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.17.tgz", - "integrity": "sha512-5uqMeg7sjsu1/QkmuRtBOXtZnnrCXAMEihbOSxan3bk2NdA/nZvhfhfLh8gd9FlBBL56QH69I8Zn25B2yGPRng==", + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.22.tgz", + "integrity": "sha512-1sYH73nhiSRVQgfZkLQNJW7VzhKM9qNbCe8QyXgiKkLhH4GflDXRPAK4yy4P41jUgula+Fc9G7i5imj1dlKfaw==", "requires": { - "tas-client": "0.1.16" + "tas-client": "0.1.21" } }, "vscode-test": { diff --git a/package.json b/package.json index 7ccc8509..41de08b5 100644 --- a/package.json +++ b/package.json @@ -607,6 +607,6 @@ "lodash": "^4.17.21", "minimatch": "^3.0.4", "vscode-extension-telemetry-wrapper": "0.9.0", - "vscode-tas-client": "^0.1.17" + "vscode-tas-client": "^0.1.22" } } diff --git a/src/ExperimentationService.ts b/src/ExperimentationService.ts index f9fd280b..a76741ea 100644 --- a/src/ExperimentationService.ts +++ b/src/ExperimentationService.ts @@ -3,7 +3,7 @@ import * as vscode from "vscode"; import { addContextProperty, sendInfo } from "vscode-extension-telemetry-wrapper"; -import { getExperimentationService, IExperimentationService, IExperimentationTelemetry, TargetPopulation } from "vscode-tas-client"; +import { getExperimentationServiceAsync, IExperimentationService, IExperimentationTelemetry, TargetPopulation } from "vscode-tas-client"; class ExperimentationTelemetry implements IExperimentationTelemetry { @@ -27,12 +27,12 @@ export function getExpService() { return expService; } -export function init(context: vscode.ExtensionContext): void { +export async function init(context: vscode.ExtensionContext): Promise { const packageJson: {[key: string]: any} = require("../package.json"); // tslint:disable: no-string-literal const extensionName = `${packageJson["publisher"]}.${packageJson["name"]}`; const extensionVersion = packageJson["version"]; // tslint:enable: no-string-literal - expService = getExperimentationService(extensionName, extensionVersion, + expService = await getExperimentationServiceAsync(extensionName, extensionVersion, TargetPopulation.Public, new ExperimentationTelemetry(), context.globalState); } diff --git a/src/extension.ts b/src/extension.ts index ceb4349b..678597bb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,6 +15,7 @@ import { EventCounter } from "./utility"; import { DependencyExplorer } from "./views/dependencyExplorer"; export async function activate(context: ExtensionContext): Promise { + await initExpService(context); contextManager.initialize(context); await initializeFromJsonFile(context.asAbsolutePath("./package.json"), { firstParty: true }); await instrumentOperation("activation", activateExtension)(context); @@ -30,7 +31,6 @@ async function activateExtension(_operationId: string, context: ExtensionContext context.subscriptions.push(contextManager); context.subscriptions.push(syncHandler); context.subscriptions.push(tasks.registerTaskProvider(ExportJarTaskProvider.exportJarType, new ExportJarTaskProvider())); - initExpService(context); } // this method is called when your extension is deactivated From 9d3e62dc3f11093da65396774c814adce56a8973 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Wed, 7 Apr 2021 13:12:40 +0800 Subject: [PATCH 18/23] chore: Rename group 9_sync to 9_configuration (#480) --- package.json | 2 +- src/extension.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 41de08b5..b25b1b4e 100644 --- a/package.json +++ b/package.json @@ -498,7 +498,7 @@ { "command": "java.project.update", "when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+(maven|gradle)\\b)/", - "group": "9_sync@10" + "group": "9_configuration@10" } ] }, diff --git a/src/extension.ts b/src/extension.ts index 678597bb..adfc5557 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,9 +15,9 @@ import { EventCounter } from "./utility"; import { DependencyExplorer } from "./views/dependencyExplorer"; export async function activate(context: ExtensionContext): Promise { - await initExpService(context); contextManager.initialize(context); await initializeFromJsonFile(context.asAbsolutePath("./package.json"), { firstParty: true }); + await initExpService(context); await instrumentOperation("activation", activateExtension)(context); contextManager.setContextValue(Context.EXTENSION_ACTIVATED, true); contextManager.setContextValue(Context.SUPPORTED_BUILD_FILES, Build.FILE_NAMES); From 214680c999b207a57ec4b6d6746a4a7aef31c22f Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Wed, 7 Apr 2021 14:16:42 +0800 Subject: [PATCH 19/23] feat: Add metadata for unmanaged folder (#479) --- .../jdtls/ext/core/ProjectCommand.java | 2 +- .../jdtls/ext/core/model/PackageNode.java | 28 ++++++++++++------- src/views/projectNode.ts | 4 +++ test/suite/contextValue.test.ts | 16 ++++++++++- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java index cc2a7b94..12c2899d 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/ProjectCommand.java @@ -199,7 +199,7 @@ public static List getMainClasses(List arguments, IProgre } } } - IJavaSearchScope scope = SearchEngine.createJavaSearchScope(searchRoots.toArray(IJavaElement[]::new)); + IJavaSearchScope scope = SearchEngine.createJavaSearchScope(searchRoots.toArray(new IJavaElement[0])); SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE); SearchRequestor requestor = new SearchRequestor() { diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/model/PackageNode.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/model/PackageNode.java index 5797d9ae..9dbab874 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/model/PackageNode.java +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/model/PackageNode.java @@ -12,6 +12,8 @@ package com.microsoft.jdtls.ext.core.model; import java.net.URI; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,13 +45,6 @@ */ public class PackageNode { - /** - * Nature Id for the IProject. - */ - private static final String NATURE_ID = "NatureId"; - - private static final String UNMANAGED_FOLDER_INNER_PATH = "UnmanagedFolderInnerPath"; - public static final String K_TYPE_KIND = "TypeKind"; /** @@ -67,15 +62,26 @@ public class PackageNode { */ public static final int K_ENUM = 3; + public static final String REFERENCED_LIBRARIES_PATH = "REFERENCED_LIBRARIES_PATH"; private static final String REFERENCED_LIBRARIES_CONTAINER_NAME = "Referenced Libraries"; private static final String IMMUTABLE_REFERENCED_LIBRARIES_CONTAINER_NAME = "Referenced Libraries (Read-only)"; - - public static final String REFERENCED_LIBRARIES_PATH = "REFERENCED_LIBRARIES_PATH"; public static final ContainerNode REFERENCED_LIBRARIES_CONTAINER = new ContainerNode(REFERENCED_LIBRARIES_CONTAINER_NAME, REFERENCED_LIBRARIES_PATH, NodeKind.CONTAINER, IClasspathEntry.CPE_CONTAINER); public static final ContainerNode IMMUTABLE_REFERENCED_LIBRARIES_CONTAINER = new ContainerNode(IMMUTABLE_REFERENCED_LIBRARIES_CONTAINER_NAME, REFERENCED_LIBRARIES_PATH, NodeKind.CONTAINER, IClasspathEntry.CPE_CONTAINER); + /** + * Nature Id for the IProject. + */ + private static final String NATURE_ID = "NatureId"; + + private static final String UNMANAGED_FOLDER_INNER_PATH = "UnmanagedFolderInnerPath"; + + /** + * Nature Id for the unmanaged folder. + */ + private static final String UNMANAGED_FOLDER_NATURE_ID = "org.eclipse.jdt.ls.core.unmanagedFolder"; + /** * The name of the PackageNode. */ @@ -158,10 +164,12 @@ public static PackageNode createNodeForProject(IJavaElement javaElement) { PackageNode projectNode = new PackageNode(proj.getName(), proj.getFullPath().toPortableString(), NodeKind.PROJECT); projectNode.setUri(ProjectUtils.getProjectRealFolder(proj).toFile().toURI().toString()); try { - projectNode.setMetaDataValue(NATURE_ID, proj.getDescription().getNatureIds()); + List natureIds = new ArrayList<>(Arrays.asList(proj.getDescription().getNatureIds())); if (!ProjectUtils.isVisibleProject(proj)) { + natureIds.add(UNMANAGED_FOLDER_NATURE_ID); projectNode.setMetaDataValue(UNMANAGED_FOLDER_INNER_PATH, proj.getLocationURI().toString()); } + projectNode.setMetaDataValue(NATURE_ID, natureIds); } catch (CoreException e) { // do nothing } diff --git a/src/views/projectNode.ts b/src/views/projectNode.ts index 703b00f3..52fd5b2c 100644 --- a/src/views/projectNode.ts +++ b/src/views/projectNode.ts @@ -152,6 +152,8 @@ function getProjectType(natureId: string): string { return ReadableNature.Maven; case NatureId.Gradle: return ReadableNature.Gradle; + case NatureId.UnmanagedFolder: + return ReadableNature.UnmanagedFolder; default: return ""; } @@ -160,12 +162,14 @@ function getProjectType(natureId: string): string { enum NatureId { Maven = "org.eclipse.m2e.core.maven2Nature", Gradle = "org.eclipse.buildship.core.gradleprojectnature", + UnmanagedFolder = "org.eclipse.jdt.ls.core.unmanagedFolder", Java = "org.eclipse.jdt.core.javanature", } enum ReadableNature { Maven = "maven", Gradle = "gradle", + UnmanagedFolder = "unmanagedFolder", Java = "java", } diff --git a/test/suite/contextValue.test.ts b/test/suite/contextValue.test.ts index 4befcc60..9fa1e1d5 100644 --- a/test/suite/contextValue.test.ts +++ b/test/suite/contextValue.test.ts @@ -28,6 +28,11 @@ suite("Context Value Tests", () => { assert.ok(/java:project(?=.*?\b\+java\b)(?=.*?\b\+gradle\b)(?=.*?\b\+uri\b)/.test((await gradleProject.getTreeItem()).contextValue || "")); }); + test("test unmanaged folder node", async function() { + assert.ok(/java:project(?=.*?\b\+java\b)(?=.*?\b\+unmanagedFolder\b)(?=.*?\b\+uri\b)/ + .test((await unmanagedFolder.getTreeItem()).contextValue || "")); + }); + test("test JRE container node", async function() { assert.ok(/java:container(?=.*?\b\+jre\b)(?=.*?\b\+uri\b)/.test((await jreContainer.getTreeItem()).contextValue || "")); }); @@ -70,7 +75,7 @@ suite("Context Value Tests", () => { assert.ok(/java:package(?=.*?\b\+source\b)(?=.*?\b\+uri\b)/.test((await sourcePackage.getTreeItem()).contextValue || "")); }); - test("test source package node", async function() { + test("test source(test) package node", async function() { assert.ok(/java:package(?=.*?\b\+source\b)(?=.*?\b\+test\b)(?=.*?\b\+uri\b)/ .test((await testSourcePackage.getTreeItem()).contextValue || "")); }); @@ -129,6 +134,15 @@ const gradleProject: ProjectNode = new ProjectNode({ }, }, workspace); +const unmanagedFolder: ProjectNode = new ProjectNode({ + name: "unmanagedFolder", + uri: Uri.file(__dirname).toString(), + kind: NodeKind.Project, + metaData: { + NatureId: ["org.eclipse.jdt.core.javanature", "org.eclipse.jdt.ls.core.unmanagedFolder"], + }, +}, workspace); + const jreContainer: ContainerNode = new ContainerNode({ name: "jreContainer", uri: Uri.file(__dirname).toString(), From 95dd25286260f6e87a79ce41579fb60ba11ba70d Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Thu, 8 Apr 2021 00:39:15 -0700 Subject: [PATCH 20/23] chore: Prepare for 0.18.3 (#482) --- CHANGELOG.md | 6 ++++++ .../com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml | 2 +- jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF | 2 +- jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml | 2 +- jdtls.ext/pom.xml | 2 +- package-lock.json | 2 +- package.json | 4 ++-- webpack.config.js | 1 + 9 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf74e5a2..a9c54d48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to the "vscode-java-dependency" extension will be documented The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.18.3 +### Added +- Add new unmanaged folder metadata for the project node. [PR#479](https://github.com/microsoft/vscode-java-dependency/pull/479) +### Changed +- Rename sorting group `9_sync` to `9_configuration`. [PR#480](https://github.com/microsoft/vscode-java-dependency/pull/480) + ## 0.18.2 ### Changed diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF index 9fe8f0f5..d35e3e4c 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Activator Bundle-SymbolicName: com.microsoft.jdtls.ext.activator;singleton:=true -Bundle-Version: 0.18.2 +Bundle-Version: 0.18.3 Bundle-Activator: com.microsoft.jdtls.ext.activator.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.eclipse.jdt.core, diff --git a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml index 8f253549..3bcf524a 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.activator/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.2 + 0.18.3 com.microsoft.jdtls.ext.activator eclipse-plugin diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF index 2a432fd4..3e389be2 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: JDTLS EXT Core Bundle-SymbolicName: com.microsoft.jdtls.ext.core;singleton:=true -Bundle-Version: 0.18.2 +Bundle-Version: 0.18.3 Bundle-Activator: com.microsoft.jdtls.ext.core.JdtlsExtActivator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml index 2225049d..17b26881 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/pom.xml @@ -5,7 +5,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent - 0.18.2 + 0.18.3 com.microsoft.jdtls.ext.core eclipse-plugin diff --git a/jdtls.ext/pom.xml b/jdtls.ext/pom.xml index eea07a19..790d02a9 100644 --- a/jdtls.ext/pom.xml +++ b/jdtls.ext/pom.xml @@ -4,7 +4,7 @@ com.microsoft.jdtls.ext jdtls-ext-parent ${base.name} :: Parent - 0.18.2 + 0.18.3 pom Java Project Manager diff --git a/package-lock.json b/package-lock.json index 84ad32c0..b6bc1d1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-java-dependency", - "version": "0.18.2", + "version": "0.18.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b25b1b4e..7683e430 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.18.2", + "version": "0.18.3", "publisher": "vscjava", "preview": true, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", @@ -31,7 +31,7 @@ "main": "./main.js", "contributes": { "javaExtensions": [ - "./server/com.microsoft.jdtls.ext.core-0.18.2.jar" + "./server/com.microsoft.jdtls.ext.core-0.18.3.jar" ], "commands": [ { diff --git a/webpack.config.js b/webpack.config.js index 906445e3..8c079ea0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -25,6 +25,7 @@ const config = { }, plugins: [ // Copy files to dist folder where the runtime can find them + // @ts-ignore new CopyWebpackPlugin({ patterns: [ { From 9fc5bf3e0a690789b16f720b1b93c44c3cd1a78a Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Thu, 15 Apr 2021 20:01:33 -0700 Subject: [PATCH 21/23] fix: Save the workspace before exporting jar (#483) --- src/exportJarSteps/ExportJarTaskProvider.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/exportJarSteps/ExportJarTaskProvider.ts b/src/exportJarSteps/ExportJarTaskProvider.ts index 4bd8708a..1074535e 100644 --- a/src/exportJarSteps/ExportJarTaskProvider.ts +++ b/src/exportJarSteps/ExportJarTaskProvider.ts @@ -35,6 +35,9 @@ interface IExportJarTaskDefinition extends TaskDefinition { let isExportingJar: boolean = false; export async function executeExportJarTask(node?: INodeData): Promise { + // save the workspace first + await workspace.saveAll(false /*includeUntitled*/); + if (!await languageServerApiManager.isStandardServerReady() || isExportingJar || await buildWorkspace() === false) { return; } From 341ac5ba6c83da5288973ec63acc74cee678c18d Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Fri, 23 Apr 2021 02:18:47 -0700 Subject: [PATCH 22/23] bugfix: Data tree node not found (#484) --- package-lock.json | 5 ++ package.json | 1 + .../languageServerApiManager.ts | 21 ++++++-- src/utility.ts | 2 + src/utils/Lock.ts | 35 +------------ src/views/dataNode.ts | 8 ++- src/views/dependencyDataProvider.ts | 16 ++---- src/views/dependencyExplorer.ts | 49 ++++++++----------- src/views/hierarchicalPackageNode.ts | 5 +- 9 files changed, 59 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6bc1d1d..b6952dc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -868,6 +868,11 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "await-lock": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.1.0.tgz", + "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ==" + }, "axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", diff --git a/package.json b/package.json index 7683e430..5d98fc08 100644 --- a/package.json +++ b/package.json @@ -602,6 +602,7 @@ "webpack-cli": "^3.3.12" }, "dependencies": { + "await-lock": "^2.1.0", "fs-extra": "^7.0.1", "globby": "11.0.1", "lodash": "^4.17.21", diff --git a/src/languageServerApi/languageServerApiManager.ts b/src/languageServerApi/languageServerApiManager.ts index 90bc2fe5..8837a22f 100644 --- a/src/languageServerApi/languageServerApiManager.ts +++ b/src/languageServerApi/languageServerApiManager.ts @@ -28,9 +28,13 @@ class LanguageServerApiManager { return this.serverMode === LanguageServerMode.LightWeight; } - public async isSwitchingServer(): Promise { + public async awaitSwitchingServerFinished(): Promise { await this.checkServerMode(); - return this.serverMode === LanguageServerMode.Hybrid; + if (this.serverMode === LanguageServerMode.Hybrid) { + await new Promise((resolve: () => void): void => { + extensions.getExtension("redhat.java")!.exports.onDidServerModeChange(resolve); + }); + } } private async checkServerMode(): Promise { @@ -63,8 +67,17 @@ class LanguageServerApiManager { if (extensionApi.onDidServerModeChange) { const onDidServerModeChange: Event = extensionApi.onDidServerModeChange; contextManager.context.subscriptions.push(onDidServerModeChange(async (mode: LanguageServerMode) => { - this.serverMode = mode; - commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */false); + if (this.serverMode !== mode) { + let needRefresh: boolean = true; + if (this.serverMode === "Hybrid") { + // Explorer will await when JLS is in Hybrid mode (activating), + needRefresh = false; + } + this.serverMode = mode; + if (needRefresh) { + commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */false); + } + } })); } diff --git a/src/utility.ts b/src/utility.ts index e3202ab3..b0e368ff 100644 --- a/src/utility.ts +++ b/src/utility.ts @@ -30,6 +30,8 @@ export class Utility { if (uri.scheme === "file" && !workspace.getWorkspaceFolder(uri)) { return false; } + + await languageServerApiManager.awaitSwitchingServerFinished(); if (!await languageServerApiManager.isStandardServerReady()) { return false; } diff --git a/src/utils/Lock.ts b/src/utils/Lock.ts index 62c1691a..9869fa98 100644 --- a/src/utils/Lock.ts +++ b/src/utils/Lock.ts @@ -1,37 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -import { EventEmitter } from "events"; +import AwaitLock from "await-lock"; -export class Lock { - private _locked: boolean; - private _eventEmitter: EventEmitter; - - constructor() { - this._locked = false; - this._eventEmitter = new EventEmitter(); - } - - public async acquire(): Promise { - return new Promise((resolve) => { - if (!this._locked) { - this._locked = true; - return resolve(); - } - - const tryAcquire = () => { - if (!this._locked) { - this._locked = true; - this._eventEmitter.removeListener("release", tryAcquire); - return resolve(); - } - }; - this._eventEmitter.on("release", tryAcquire); - }); - } - - public release(): void { - this._locked = false; - setImmediate(() => this._eventEmitter.emit("release")); - } -} +export const explorerLock: AwaitLock = new AwaitLock(); diff --git a/src/views/dataNode.ts b/src/views/dataNode.ts index 54dbd5ef..699d7352 100644 --- a/src/views/dataNode.ts +++ b/src/views/dataNode.ts @@ -4,15 +4,13 @@ import * as _ from "lodash"; import { ThemeIcon, TreeItem, TreeItemCollapsibleState, Uri } from "vscode"; import { INodeData, NodeKind } from "../java/nodeData"; -import { Lock } from "../utils/Lock"; +import { explorerLock } from "../utils/Lock"; import { ExplorerNode } from "./explorerNode"; export abstract class DataNode extends ExplorerNode { protected _childrenNodes: ExplorerNode[]; - protected _lock: Lock = new Lock(); - constructor(protected _nodeData: INodeData, parent?: DataNode) { super(parent); } @@ -74,7 +72,7 @@ export abstract class DataNode extends ExplorerNode { public async getChildren(): Promise { try { - await this._lock.acquire(); + await explorerLock.acquireAsync(); if (!this._nodeData.children) { const data = await this.loadData(); this._nodeData.children = data; @@ -83,7 +81,7 @@ export abstract class DataNode extends ExplorerNode { } return this._childrenNodes; } finally { - this._lock.release(); + explorerLock.release(); } } diff --git a/src/views/dependencyDataProvider.ts b/src/views/dependencyDataProvider.ts index aebc3c27..1afd19db 100644 --- a/src/views/dependencyDataProvider.ts +++ b/src/views/dependencyDataProvider.ts @@ -3,7 +3,7 @@ import * as _ from "lodash"; import { - commands, Event, EventEmitter, ExtensionContext, extensions, ProviderResult, + commands, Event, EventEmitter, ExtensionContext, ProviderResult, RelativePattern, TreeDataProvider, TreeItem, Uri, window, workspace, } from "vscode"; import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper"; @@ -15,7 +15,7 @@ import { Jdtls } from "../java/jdtls"; import { INodeData, NodeKind } from "../java/nodeData"; import { languageServerApiManager } from "../languageServerApi/languageServerApiManager"; import { Settings } from "../settings"; -import { Lock } from "../utils/Lock"; +import { explorerLock } from "../utils/Lock"; import { DataNode } from "./dataNode"; import { ExplorerNode } from "./explorerNode"; import { explorerNodeCache } from "./nodeCache/explorerNodeCache"; @@ -26,8 +26,6 @@ export class DependencyDataProvider implements TreeDataProvider { private _onDidChangeTreeData: EventEmitter = new EventEmitter(); - private _lock: Lock = new Lock(); - // tslint:disable-next-line:member-ordering public onDidChangeTreeData: Event = this._onDidChangeTreeData.event; @@ -100,11 +98,7 @@ export class DependencyDataProvider implements TreeDataProvider { return []; } - if (await languageServerApiManager.isSwitchingServer()) { - await new Promise((resolve: () => void): void => { - extensions.getExtension("redhat.java")!.exports.onDidServerModeChange(resolve); - }); - } + await languageServerApiManager.awaitSwitchingServerFinished(); const children = (!this._rootItems || !element) ? await this.getRootNodes() : await element.getChildren(); @@ -151,7 +145,7 @@ export class DependencyDataProvider implements TreeDataProvider { private async getRootNodes(): Promise { try { - await this._lock.acquire(); + await explorerLock.acquireAsync(); if (this._rootItems) { return this._rootItems; @@ -178,7 +172,7 @@ export class DependencyDataProvider implements TreeDataProvider { contextManager.setContextValue(Context.NO_JAVA_PEOJECT, _.isEmpty(rootItems)); return rootItems; } finally { - this._lock.release(); + explorerLock.release(); } } } diff --git a/src/views/dependencyExplorer.ts b/src/views/dependencyExplorer.ts index 1adc5107..e28e4576 100644 --- a/src/views/dependencyExplorer.ts +++ b/src/views/dependencyExplorer.ts @@ -4,8 +4,10 @@ import * as fse from "fs-extra"; import * as _ from "lodash"; import * as path from "path"; -import { commands, Disposable, ExtensionContext, QuickPickItem, TextEditor, TreeView, - TreeViewExpansionEvent, TreeViewSelectionChangeEvent, TreeViewVisibilityChangeEvent, Uri, window } from "vscode"; +import { + commands, Disposable, ExtensionContext, QuickPickItem, TextEditor, TreeView, + TreeViewExpansionEvent, TreeViewSelectionChangeEvent, TreeViewVisibilityChangeEvent, Uri, window, +} from "vscode"; import { instrumentOperationAsVsCodeCommand, sendInfo } from "vscode-extension-telemetry-wrapper"; import { Commands } from "../commands"; import { Build } from "../constants"; @@ -17,7 +19,6 @@ import { Jdtls } from "../java/jdtls"; import { INodeData } from "../java/nodeData"; import { Settings } from "../settings"; import { EventCounter, Utility } from "../utility"; -import { Lock } from "../utils/Lock"; import { DataNode } from "./dataNode"; import { DependencyDataProvider } from "./dependencyDataProvider"; import { ExplorerNode } from "./explorerNode"; @@ -34,8 +35,6 @@ export class DependencyExplorer implements Disposable { private static _instance: DependencyExplorer; - private _lock: Lock = new Lock(); - private _dependencyViewer: TreeView; private _dataProvider: DependencyDataProvider; @@ -54,7 +53,7 @@ export class DependencyExplorer implements Disposable { }), this._dependencyViewer.onDidChangeVisibility((e: TreeViewVisibilityChangeEvent) => { if (e.visible) { - sendInfo("", {projectManagerVisible: 1}); + sendInfo("", { projectManagerVisible: 1 }); if (window.activeTextEditor) { this.reveal(window.activeTextEditor.document.uri); } @@ -145,33 +144,27 @@ export class DependencyExplorer implements Disposable { } public async reveal(uri: Uri, needCheckSyncSetting: boolean = true): Promise { - try { - await this._lock.acquire(); - - if (needCheckSyncSetting && !Settings.syncWithFolderExplorer()) { - return; - } - - if (!await Utility.isRevealable(uri)) { - return; - } + if (needCheckSyncSetting && !Settings.syncWithFolderExplorer()) { + return; + } - let node: DataNode | undefined = explorerNodeCache.getDataNode(uri); - if (!node) { - const paths: INodeData[] = await Jdtls.resolvePath(uri.toString()); - if (!_.isEmpty(paths)) { - node = await this._dataProvider.revealPaths(paths); - } - } + if (!await Utility.isRevealable(uri)) { + return; + } - if (!node) { - return; + let node: DataNode | undefined = explorerNodeCache.getDataNode(uri); + if (!node) { + const paths: INodeData[] = await Jdtls.resolvePath(uri.toString()); + if (!_.isEmpty(paths)) { + node = await this._dataProvider.revealPaths(paths); } + } - await this._dependencyViewer.reveal(node); - } finally { - this._lock.release(); + if (!node) { + return; } + + await this._dependencyViewer.reveal(node); } public get dataProvider(): DependencyDataProvider { diff --git a/src/views/hierarchicalPackageNode.ts b/src/views/hierarchicalPackageNode.ts index e187999c..3364f7ff 100644 --- a/src/views/hierarchicalPackageNode.ts +++ b/src/views/hierarchicalPackageNode.ts @@ -5,6 +5,7 @@ import * as _ from "lodash"; import { TreeItem, TreeItemCollapsibleState } from "vscode"; import { HierarchicalPackageNodeData } from "../java/hierarchicalPackageNodeData"; import { INodeData, NodeKind } from "../java/nodeData"; +import { explorerLock } from "../utils/Lock"; import { DataNode } from "./dataNode"; import { ExplorerNode } from "./explorerNode"; import { FileNode } from "./fileNode"; @@ -26,7 +27,7 @@ export class HierarchicalPackageNode extends PackageNode { public async getChildren(): Promise { try { - await this._lock.acquire(); + await explorerLock.acquireAsync(); const data = await this.loadData(); if (data) { if (this.nodeData?.children) { @@ -38,7 +39,7 @@ export class HierarchicalPackageNode extends PackageNode { } return this.createChildNodeList(); } finally { - this._lock.release(); + explorerLock.release(); } } From 27c306b770c23b1eba1f9a7c3e70d2793baced68 Mon Sep 17 00:00:00 2001 From: Sheng Chen Date: Sun, 25 Apr 2021 21:40:13 -0700 Subject: [PATCH 23/23] test: Add unit tests for exporting jar (#485) --- test/gradle/.vscode/settings.json | 3 +- test/maven-suite/exportJar.test.ts | 53 ++++++++++++++++++++++++++++++ test/maven/.vscode/tasks.json | 16 +++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 test/maven-suite/exportJar.test.ts create mode 100644 test/maven/.vscode/tasks.json diff --git a/test/gradle/.vscode/settings.json b/test/gradle/.vscode/settings.json index 66e66c61..7766fde9 100644 --- a/test/gradle/.vscode/settings.json +++ b/test/gradle/.vscode/settings.json @@ -1,3 +1,4 @@ { - "java.server.launchMode": "Standard" + "java.server.launchMode": "Standard", + "java.import.gradle.version": "6.8" } diff --git a/test/maven-suite/exportJar.test.ts b/test/maven-suite/exportJar.test.ts new file mode 100644 index 00000000..b81b4df2 --- /dev/null +++ b/test/maven-suite/exportJar.test.ts @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +import * as assert from "assert"; +import * as cp from "child_process"; +import * as fse from "fs-extra"; +import { suiteTeardown } from "mocha"; +import * as path from "path"; +import { Task, TaskEndEvent, tasks, workspace } from "vscode"; +import { setupTestEnv } from "../shared"; + +// tslint:disable: only-arrow-functions +const folderPath: string = workspace.workspaceFolders![0].uri.fsPath; +const jarFileName: string = "maven.jar"; +const testFolder: string = path.join(folderPath, "test"); + +suite("Export Jar Tests", () => { + + suiteSetup(setupTestEnv); + + test("Can export jar correctly", async function() { + const vscodeTasks: Task[] = await tasks.fetchTasks(); + const exportJarTask: Task | undefined = vscodeTasks.find((t: Task) => t.name === "java: exportjar:maven"); + assert.ok(exportJarTask !== undefined); + + await new Promise(async (resolve) => { + tasks.onDidEndTask((e: TaskEndEvent) => { + if (e.execution.task.name === exportJarTask?.name) { + return resolve(); + } + }); + await tasks.executeTask(exportJarTask!); + }); + + const isFileExist: boolean = await fse.pathExists(path.join(folderPath, jarFileName)); + assert.ok(isFileExist); + + await fse.ensureDir(testFolder); + cp.execSync("jar -xvf ../maven.jar", { + cwd: testFolder, + }); + + const isManifestExist: boolean = await fse.pathExists(path.join(testFolder, "META-INF", "MANIFEST.MF")); + assert.ok(isManifestExist); + const isClassFileExist: boolean = await fse.pathExists(path.join(testFolder, "com", "mycompany", "app", "App.class")); + assert.ok(isClassFileExist); + }); + + suiteTeardown(async function() { + await fse.remove(path.join(folderPath, jarFileName)); + await fse.remove(testFolder); + }); +}); diff --git a/test/maven/.vscode/tasks.json b/test/maven/.vscode/tasks.json new file mode 100644 index 00000000..a26671f3 --- /dev/null +++ b/test/maven/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "java", + "label": "java: exportjar:maven", + "mainClass": "com.mycompany.app.App", + "targetPath": "${workspaceFolder}/${workspaceFolderBasename}.jar", + "elements": [ + "${compileOutput}", + "${dependencies}" + ], + "problemMatcher": [] + } + ] +}