From 6c05a27f1308583b5db3be1558f902c6892fce31 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Fri, 15 May 2020 08:14:56 +0100 Subject: [PATCH 01/11] Optimise build workflow --- .github/workflows/build-and-test.yml | 21 +++++++------- .github/workflows/publish.yml | 2 +- .vscode/launch.json | 16 +++++------ .vscode/tasks.json | 27 ++--------------- CONTRIBUTING.md | 2 +- build.gradle | 2 -- extension/build.gradle | 32 +++++++++++---------- extension/src/tasks.ts | 1 + extension/src/test/gradle/extension.test.ts | 2 ++ npm-package/build.gradle | 6 ++-- tasks-server/build.gradle | 1 + 11 files changed, 47 insertions(+), 65 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 8ed550a35..cda9535be 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -17,18 +17,14 @@ jobs: uses: actions/setup-node@v1 with: node-version: 12.16.2 - - name: Build Project - uses: eskatos/gradle-command-action@v1 - with: - arguments: build - name: Lint uses: eskatos/gradle-command-action@v1 with: arguments: lint - - name: SonarQube Analyse + - name: Build & Analyse uses: eskatos/gradle-command-action@v1 with: - arguments: sonarqube + arguments: tasks-server:build sonarqube -x :test -x extension:test -x npm-package:test env: GITHUB_TOKEN: ${{ secrets.GITHUB_SONARCLOUD_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} @@ -49,7 +45,7 @@ jobs: matrix: node-version: [12.16.2] java-version: ['8', '11'] - os: [ubuntu-latest, windows-latest, macos-latest] + os: [macos-latest] steps: - uses: actions/checkout@v1 - name: Use Node ${{ matrix.node-version }} @@ -61,15 +57,19 @@ jobs: with: java-version: ${{ matrix.java-version }} architecture: x64 - - name: Build Project + - name: Build Extension uses: eskatos/gradle-command-action@v1 with: - arguments: build -x test -x serverStartScripts -x compileJava -x shadowJar -x startShadowScripts + arguments: extension:build - name: Download lib uses: actions/download-artifact@v1 with: name: lib path: extension/lib + - name: MacOS fix + run: | + export NODE_OPTIONS="--no-force-async-hooks-checks" + if: matrix.os == 'macos-latest' - name: Start Xvfb run: | Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & @@ -82,7 +82,8 @@ jobs: - name: Test extension uses: eskatos/gradle-command-action@v1 with: - arguments: testVsCode -x test -x serverStartScripts -x compileJava -x shadowJar -x startShadowScripts + arguments: testVsCode env: DISPLAY: ':99.0' CI: 'true' + NODE_OPTIONS: '--no-force-async-hooks-checks' diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d92c48ea3..6a6544924 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,7 +16,7 @@ jobs: - name: Build & prepare extension uses: eskatos/gradle-command-action@v1 with: - arguments: extension:prepareForRelease npm-package:build + arguments: prepareForRelease - name: Publish types env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.vscode/launch.json b/.vscode/launch.json index 691d16436..bf7059a97 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,7 @@ "runtimeExecutable": "${execPath}", "args": ["--extensionDevelopmentPath=${workspaceFolder}/extension"], "outFiles": ["${workspaceFolder}/extension/dist/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "debug", "order": 1 @@ -33,7 +33,7 @@ "runtimeExecutable": "${execPath}", "args": ["--extensionDevelopmentPath=${workspaceFolder}/extension"], "outFiles": ["${workspaceFolder}/extension/dist/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript", + "preLaunchTask": "Gradle: Build", "env": { "VSCODE_DEBUG_SERVER": "true" }, @@ -57,7 +57,7 @@ "${workspaceFolder}/extension/test-fixtures/gradle-groovy-default-build-file" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } @@ -78,7 +78,7 @@ "${workspaceFolder}/extension/test-fixtures/gradle-kotlin-default-build-file" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } @@ -99,7 +99,7 @@ "${workspaceFolder}/extension/test-fixtures/gradle-groovy-custom-build-file" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } @@ -119,7 +119,7 @@ "${workspaceFolder}/extension/test-fixtures/no-gradle" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } @@ -140,7 +140,7 @@ "${workspaceFolder}/extension/test-fixtures/multi-root/multiple-project.code-workspace" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } @@ -160,7 +160,7 @@ "${workspaceFolder}/extension/test-fixtures/multi-project" ], "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], - "preLaunchTask": "Gradle: Build TypeScript & Tests", + "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index d87ebffc7..ab4ad3514 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,37 +2,14 @@ "version": "2.0.0", "tasks": [ { - "label": "Gradle: Build TypeScript", + "label": "Gradle: Build", "type": "shell", "problemMatcher": "$tsc-watch", "command": "./gradlew", "windows": { "command": ".\\gradlew.bat" }, - "args": [":extension:buildTypeScript", "-x", "test"], - "isBackground": true, - "presentation": { - "reveal": "always" - }, - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "label": "Gradle: Build TypeScript & Tests", - "type": "shell", - "problemMatcher": "$tsc-watch", - "command": "./gradlew", - "windows": { - "command": ".\\gradlew.bat" - }, - "args": [ - ":extension:buildTypeScript", - ":extension:buildTypeScriptTests", - "-x", - "test" - ], + "args": ["build", "-x", "test"], "isBackground": true, "presentation": { "reveal": "always" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5b33dadd8..8882a6714 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ Open the root of the project in VS Code. Open the Debug panel, and select one of the `debug` tasks, for example `Debug Extension`, or any of the test launch configurations. -You can also run `./gradlew test testVsCode` to run all tests. +You can also run `./gradlew build testVsCode` to run all tests. ### Code Style diff --git a/build.gradle b/build.gradle index c427ed4b8..7be67f41b 100644 --- a/build.gradle +++ b/build.gradle @@ -50,5 +50,3 @@ subprojects { task(format) { dependsOn(spotlessApply) } - -project.tasks["sonarqube"].dependsOn ':extension:buildTypeScript' diff --git a/extension/build.gradle b/extension/build.gradle index 0280eeac3..ee20487bd 100644 --- a/extension/build.gradle +++ b/extension/build.gradle @@ -76,7 +76,6 @@ compileTestJava.enabled = false processResources.enabled = false; clean { - dependsOn ':tasks-server:clean' delete protobuf.generatedFilesBaseDir delete file('node_modules') delete file(protoLib) @@ -112,7 +111,7 @@ task npmInstall(type: CrossPlatformExec) { description 'Installs node dependencies' inputs.file('package-lock.json') outputs.dir('node_modules') - commandLine 'npm', 'install' + commandLine 'npm', 'ci' } task lint(type: CrossPlatformExec) { @@ -126,10 +125,10 @@ task format(type: CrossPlatformExec) { commandLine 'npm', 'run', 'lint:fix' } -task buildTypeScript(type: CrossPlatformExec) { - dependsOn assemble, ':tasks-server:generateProto', copyProtoJs, copyProtoTs +task buildDev(type: CrossPlatformExec) { + dependsOn copyProtoJs, copyProtoTs group 'build' - description 'Builds TypeScript source files' + description 'Builds development version TypeScript source files' outputs.dir('dist') inputs.dir('src') inputs.file('webpack.config.js') @@ -137,8 +136,8 @@ task buildTypeScript(type: CrossPlatformExec) { commandLine 'npm', 'run', 'compile:dev' } -task buildTypeScriptTests(type: CrossPlatformExec) { - dependsOn assemble, ':tasks-server:generateProto', copyProtoJs, copyProtoTs +task buildTest(type: CrossPlatformExec) { + dependsOn copyProtoJs, copyProtoTs group 'build' description 'Builds TypeScript test source files' buildDir = 'out' @@ -149,10 +148,10 @@ task buildTypeScriptTests(type: CrossPlatformExec) { commandLine 'npm', 'run', 'compile:test' } -task bundle(type: CrossPlatformExec) { - dependsOn ':tasks-server:build', ':npm-package:build', copyProtoJs, copyProtoTs +task buildProd(type: CrossPlatformExec) { + dependsOn copyProtoJs, copyProtoTs group 'build' - description 'Bundles the extension files for release' + description 'Builds production version TypeScript source files' buildDir = 'dist' outputs.dir("$buildDir") inputs.dir('src') @@ -160,13 +159,18 @@ task bundle(type: CrossPlatformExec) { commandLine 'npm', 'run', 'compile:prod' } +task bundle() { + dependsOn buildProd, ':npm-package:build' + group 'build' + description 'Bundles the extension files for release' +} + task installExtension(type: CrossPlatformExec) { dependsOn bundle commandLine 'npm', 'run', 'install:ext' } task testVsCode(type: CrossPlatformExec) { - dependsOn copyProtoJs, copyProtoTs group 'verification' description 'Tests the extension' commandLine 'npm', 'run', 'test' @@ -180,9 +184,7 @@ task copyDocs(type: Copy) { } task prepareForRelease() { - dependsOn build, bundle, copyDocs + dependsOn bundle, copyDocs } -build.dependsOn ':tasks-server:build' -assemble.dependsOn ':tasks-server:build' -assemble.finalizedBy buildTypeScript, buildTypeScriptTests +build.finalizedBy buildDev, buildTest diff --git a/extension/src/tasks.ts b/extension/src/tasks.ts index cd8d9021f..613c29552 100644 --- a/extension/src/tasks.ts +++ b/extension/src/tasks.ts @@ -183,6 +183,7 @@ export class GradleTaskProvider */): Promise< vscode.Task | undefined > { + console.log('TRYING TO RESOLVE TASK'); return undefined; } diff --git a/extension/src/test/gradle/extension.test.ts b/extension/src/test/gradle/extension.test.ts index 96bdca937..c4a4de573 100644 --- a/extension/src/test/gradle/extension.test.ts +++ b/extension/src/test/gradle/extension.test.ts @@ -103,10 +103,12 @@ describe(fixtureName, () => { const task = (await vscode.tasks.fetchTasks({ type: 'gradle' })).find( ({ name }) => name === 'helloProjectProperty' ); + console.log('got task', JSON.stringify(task, null, 2)); assert.ok(task); const spy = sinon.spy(extension.exports.logger, 'append'); const treeDataProvider = extension?.exports .treeDataProvider as GradleTasksTreeDataProvider; + console.log('got treeData Provider', treeDataProvider); await new Promise((resolve) => { // eslint-disable-next-line sonarjs/no-identical-functions vscode.tasks.onDidEndTaskProcess((e) => { diff --git a/npm-package/build.gradle b/npm-package/build.gradle index 52cc4dfa7..2a65e32cc 100644 --- a/npm-package/build.gradle +++ b/npm-package/build.gradle @@ -22,7 +22,7 @@ task copyProtoLib(type: Copy) { } task copyPublicApi(type: Copy) { - dependsOn ':extension:buildTypeScript' + dependsOn ':extension:buildProd' group 'copy' description 'Copies publc API types' from file("../extension/out") @@ -34,7 +34,7 @@ task npmInstall(type: CrossPlatformExec) { description 'Installs node dependencies' inputs.file('package-lock.json') outputs.dir('node_modules') - commandLine 'npm', 'install' + commandLine 'npm', 'ci' } task compileTypeScript(type: CrossPlatformExec) { @@ -46,7 +46,7 @@ task compileTypeScript(type: CrossPlatformExec) { commandLine 'npm', 'run', 'compile' } -assemble.finalizedBy npmInstall, +build.finalizedBy npmInstall, compileTypeScript, copyProtoLib, copyPublicApi diff --git a/tasks-server/build.gradle b/tasks-server/build.gradle index 46f62b70e..ae9d39a3b 100644 --- a/tasks-server/build.gradle +++ b/tasks-server/build.gradle @@ -125,4 +125,5 @@ task(format) { dependsOn(spotlessApply) } +compileJava.dependsOn 'generateProto' assemble.dependsOn serverStartScripts From 7f0915f2b3eec01c54982c1bfd219271b53d7f0a Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Sun, 17 May 2020 16:53:33 +0100 Subject: [PATCH 02/11] Wait for tasks loaded & cleanup --- .github/workflows/build-and-test.yml | 25 +- .vscode/tasks.json | 2 +- extension/package-lock.json | 1337 ++++------------- extension/src/api.ts | 13 +- extension/src/client.ts | 4 +- extension/src/commands.ts | 8 + extension/src/extension.ts | 5 +- extension/src/server.ts | 3 +- extension/src/tasks.ts | 7 +- extension/src/test/gradle/extension.test.ts | 27 +- .../src/test/multi-project/extension.test.ts | 6 +- .../src/test/multi-root/extension.test.ts | 3 +- extension/src/test/runTests.ts | 2 - extension/src/test/testUtil.ts | 28 +- 14 files changed, 399 insertions(+), 1071 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index cda9535be..87bb891cd 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -45,7 +45,7 @@ jobs: matrix: node-version: [12.16.2] java-version: ['8', '11'] - os: [macos-latest] + os: [ubuntu-latest, windows-latest] # unable to test on macos-latest, see https://github.com/microsoft/vscode/issues/98080 steps: - uses: actions/checkout@v1 - name: Use Node ${{ matrix.node-version }} @@ -66,10 +66,6 @@ jobs: with: name: lib path: extension/lib - - name: MacOS fix - run: | - export NODE_OPTIONS="--no-force-async-hooks-checks" - if: matrix.os == 'macos-latest' - name: Start Xvfb run: | Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & @@ -79,6 +75,24 @@ jobs: chmod +x extension/lib/tasks-server unset npm_config_prefix if: matrix.os != 'windows-latest' + - name: Prepare gradle-groovy-custom-build-file + uses: eskatos/gradle-command-action@v1 + with: + arguments: build + build-root-directory: extension/test-fixtures/gradle-groovy-custom-build-file + wrapper-directory: extension/test-fixtures/gradle-groovy-custom-build-file + - name: Prepare gradle-groovy-default-build-file + uses: eskatos/gradle-command-action@v1 + with: + arguments: build + build-root-directory: extension/test-fixtures/gradle-groovy-default-build-file + wrapper-directory: extension/test-fixtures/gradle-groovy-default-build-file + - name: Prepare gradle-kotlin-default-build-file + uses: eskatos/gradle-command-action@v1 + with: + arguments: build + build-root-directory: extension/test-fixtures/gradle-kotlin-default-build-file + wrapper-directory: extension/test-fixtures/gradle-kotlin-default-build-file - name: Test extension uses: eskatos/gradle-command-action@v1 with: @@ -86,4 +100,3 @@ jobs: env: DISPLAY: ':99.0' CI: 'true' - NODE_OPTIONS: '--no-force-async-hooks-checks' diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ab4ad3514..5b198c7b0 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -9,7 +9,7 @@ "windows": { "command": ".\\gradlew.bat" }, - "args": ["build", "-x", "test"], + "args": ["build", "-x", "test", "-x", "npm-package:build"], "isBackground": true, "presentation": { "reveal": "always" diff --git a/extension/package-lock.json b/extension/package-lock.json index e34aea392..9ca938208 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -332,23 +332,6 @@ } } } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } } } }, @@ -456,12 +439,11 @@ } }, "@types/agent-base": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/agent-base/-/agent-base-4.2.0.tgz", - "integrity": "sha512-8mrhPstU+ZX0Ugya8tl5DsDZ1I5ZwQzbL/8PA0z8Gj0k9nql7nkaMzmPVLj+l/nixWaliXi+EBiLA8bptw3z7Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-GRmnDTq6ajyRyT8Ybg4IVVOyYqqFIAR4Zo9L+fdMAP+IJxd0nlTV99/IelJCBF629WOj6MpE9ohLHYCmkeJqRA==", "dev": true, "requires": { - "@types/events": "*", "@types/node": "*" } }, @@ -513,9 +495,9 @@ "dev": true }, "@types/js-yaml": { - "version": "3.12.3", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.3.tgz", - "integrity": "sha512-otRe77JNNWzoVGLKw8TCspKswRoQToys4tuL6XYVBFxjgeM0RUrx7m3jkaTdxILxeGry3zM8mGYkGXMeQ02guA==", + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.4.tgz", + "integrity": "sha512-fYMgzN+9e28R81weVN49inn/u798ruU91En1ZnGvSZzCRc5jXx9B2EDhlRaWmcO1RIxFHL8AajRXzxDuJu93+A==", "dev": true }, "@types/json-schema": { @@ -549,9 +531,9 @@ "dev": true }, "@types/sinon": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.0.tgz", - "integrity": "sha512-v2TkYHkts4VXshMkcmot/H+ERZ2SevKa10saGaJPGCJ8vh3lKrC4u663zYEeRZxep+VbG6YRDtQ6gVqw9dYzPA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.1.tgz", + "integrity": "sha512-vqWk3K1HYJExooYgORUdiGX1EdCWQxPi7P/OEIetdaJn4jNvEYoRRGLG/HwomtbzZ4IP9Syz2k4N50CItv6w6g==", "dev": true, "requires": { "@types/sinonjs__fake-timers": "*" @@ -564,9 +546,9 @@ "dev": true }, "@types/vscode": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.0.tgz", - "integrity": "sha512-b0Gyir7sPBCqiKLygAhn/AYVfzWD+SMPkWltBrIuPEyTOxSU1wVApWY/FcxYO2EWTRacoubTl4+gvZf86RkecA==", + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.1.tgz", + "integrity": "sha512-0NO9qrrEJBO8FsqHCrFMgR2suKnwCsKBWvRSb2OzH5gs4i3QO5AhEMQYrSzDbU/wLPt7N617/rN9lPY213gmwg==", "dev": true }, "@types/xml2js": { @@ -837,9 +819,9 @@ "dev": true }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", "dev": true }, "acorn-jsx": { @@ -1052,6 +1034,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "assert": { @@ -1109,7 +1099,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true + "dev": true, + "optional": true }, "atob": { "version": "2.1.2", @@ -1258,9 +1249,9 @@ "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==", "dev": true }, "boolbase": { @@ -1399,21 +1390,52 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", + "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "browserify-zlib": { @@ -1679,12 +1701,6 @@ "wrap-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -1707,15 +1723,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.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==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -1879,6 +1886,14 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "create-error-class": { @@ -2138,6 +2153,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "dockerfile-ast": { @@ -2258,6 +2281,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "email-validator": { @@ -2422,12 +2453,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -2442,15 +2467,6 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -2839,9 +2855,9 @@ "dev": true }, "fastq": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz", - "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -3353,9 +3369,9 @@ } }, "google-protobuf": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.11.4.tgz", - "integrity": "sha512-lL6b04rDirurUBOgsY2+LalI6Evq8eH5TcNzi7TYQ3BsIWelT0KSOQSBsXuavEkNf+odQU6c0lgz3UsZXeNX9Q==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.12.0.tgz", + "integrity": "sha512-7HZo4ZIcoL8alxDCYphAjsssJrvfD9XPg7rdd1XkQ4273yfyO4dCuPW88ydYcF382ik3Z06/NqMR3rRzldTK4A==", "dev": true }, "got": { @@ -3400,26 +3416,22 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "bundled": true, "dev": true, "requires": { "delegates": "^1.0.0", @@ -3428,14 +3440,12 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -3444,38 +3454,32 @@ }, "chownr": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "bundled": true, "dev": true }, "code-point-at": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true }, "debug": { "version": "2.6.9", - "resolved": false, - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -3483,26 +3487,22 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true }, "detect-libc": { "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true }, "fs-minipass": { "version": "1.2.5", - "resolved": false, - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "requires": { "minipass": "^2.2.1" @@ -3510,14 +3510,12 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "gauge": { "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "requires": { "aproba": "^1.0.3", @@ -3532,8 +3530,7 @@ }, "glob": { "version": "7.1.3", - "resolved": false, - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3546,14 +3543,12 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true }, "iconv-lite": { "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "bundled": true, "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -3561,8 +3556,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": false, - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "requires": { "minimatch": "^3.0.4" @@ -3570,8 +3564,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -3580,20 +3573,17 @@ }, "inherits": { "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -3601,14 +3591,12 @@ }, "isarray": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -3616,14 +3604,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "minipass": { "version": "2.3.5", - "resolved": false, - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.1.2", @@ -3632,8 +3618,7 @@ }, "minizlib": { "version": "1.2.1", - "resolved": false, - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "bundled": true, "dev": true, "requires": { "minipass": "^2.2.1" @@ -3641,8 +3626,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -3650,14 +3634,12 @@ }, "ms": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "needle": { "version": "2.2.4", - "resolved": false, - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", + "bundled": true, "dev": true, "requires": { "debug": "^2.1.2", @@ -3667,8 +3649,7 @@ }, "node-pre-gyp": { "version": "0.12.0", - "resolved": false, - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "bundled": true, "dev": true, "requires": { "detect-libc": "^1.0.2", @@ -3685,8 +3666,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "requires": { "abbrev": "1", @@ -3695,14 +3675,12 @@ }, "npm-bundled": { "version": "1.0.6", - "resolved": false, - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "bundled": true, "dev": true }, "npm-packlist": { "version": "1.4.1", - "resolved": false, - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "bundled": true, "dev": true, "requires": { "ignore-walk": "^3.0.1", @@ -3711,8 +3689,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": false, - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "requires": { "are-we-there-yet": "~1.1.2", @@ -3723,20 +3700,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "once": { "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -3744,20 +3718,17 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true }, "osenv": { "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -3766,20 +3737,17 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": false, - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true }, "rc": { "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "bundled": true, "dev": true, "requires": { "deep-extend": "^0.6.0", @@ -3790,16 +3758,14 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true } } }, "readable-stream": { "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -3813,8 +3779,7 @@ }, "rimraf": { "version": "2.6.3", - "resolved": false, - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "bundled": true, "dev": true, "requires": { "glob": "^7.1.3" @@ -3822,44 +3787,37 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true }, "sax": { "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true }, "semver": { "version": "5.6.0", - "resolved": false, - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "string-width": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -3869,8 +3827,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -3878,8 +3835,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -3887,14 +3843,12 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true }, "tar": { "version": "4.4.8", - "resolved": false, - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "bundled": true, "dev": true, "requires": { "chownr": "^1.1.1", @@ -3908,14 +3862,12 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true }, "wide-align": { "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.2 || 2" @@ -3923,14 +3875,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "yallist": { "version": "3.0.3", - "resolved": false, - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "bundled": true, "dev": true } } @@ -4347,6 +4297,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-ansi": { + "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": "^5.0.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -4924,9 +4883,9 @@ }, "dependencies": { "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", "dev": true } } @@ -4993,6 +4952,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "mime": { @@ -5607,9 +5574,9 @@ } }, "open": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", - "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -5896,7 +5863,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "dev": true, + "optional": true }, "path-exists": { "version": "3.0.0", @@ -6115,6 +6083,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "pump": { @@ -6329,9 +6305,9 @@ "dev": true }, "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true }, "require-directory": { @@ -6470,9 +6446,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safe-regex": { @@ -6818,9 +6794,9 @@ } }, "snyk": { - "version": "1.320.3", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.320.3.tgz", - "integrity": "sha512-eRCFHmuN/VM8hV2oHefIDohlEf0lP8/IU1Ny2PDHn2JgdY7ppIbPUjYgchuFMfaphHndg7+pnDfGeUldpXDfBQ==", + "version": "1.321.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.321.0.tgz", + "integrity": "sha512-0uczPo7A/XD5g8HZwfmO3kwp4QUtuuHelg97O9JcnfLT7Hh6RoyJuuBdEmIECgdCIFZXVV9kAfMAAs6hpgOXsA==", "dev": true, "requires": { "@snyk/cli-interface": "2.6.0", @@ -6855,10 +6831,10 @@ "snyk-module": "1.9.1", "snyk-mvn-plugin": "2.15.2", "snyk-nodejs-lockfile-parser": "1.22.0", - "snyk-nuget-plugin": "1.17.0", + "snyk-nuget-plugin": "1.18.1", "snyk-php-plugin": "1.9.0", "snyk-policy": "1.14.1", - "snyk-python-plugin": "1.17.0", + "snyk-python-plugin": "1.17.1", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", "snyk-sbt-plugin": "2.11.0", @@ -6878,12 +6854,6 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "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==", - "dev": true - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -6898,15 +6868,6 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -7048,6 +7009,12 @@ "requires": { "rimraf": "^2.6.3" } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true } } }, @@ -7069,87 +7036,30 @@ } }, "snyk-nuget-plugin": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.17.0.tgz", - "integrity": "sha512-t7iZ87LBhCK6P2/mJsQh7Dmk3J9zd+IHL4yoSK95Iyk/gP8r++DZijoRHEXy8BlS+eOtSAj1vgCYvv2eAmG28w==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.18.1.tgz", + "integrity": "sha512-Bq+IzbyewxIrUhgdFaDKS5wCNixERC7QBitKsZGM3uCOr9fJM8rr5qg5SS9UIU7eyeKvzuVO/V1yDzjo1cKvUw==", "dev": true, "requires": { "@snyk/lodash": "4.17.15-patch", - "debug": "^3.1.0", + "debug": "^4.1.1", "dotnet-deps-parser": "4.10.0", - "jszip": "3.1.5", + "jszip": "3.3.0", "snyk-paket-parser": "1.6.0", - "tslib": "^1.9.3", + "tslib": "^1.11.2", "xml2js": "^0.4.17" }, "dependencies": { - "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "jszip": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.3.0.tgz", + "integrity": "sha512-EJ9k766htB1ZWnsV5ZMDkKLgA+201r/ouFF8R2OigVjVdcm2rurcBrrdXaeqBJbqnUVMko512PYmlncBKE1Huw==", "dev": true, "requires": { - "core-js": "~2.3.0", - "es6-promise": "~3.0.2", - "lie": "~3.1.0", + "lie": "~3.3.0", "pako": "~1.0.2", - "readable-stream": "~2.0.6" - } - }, - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "dev": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" } } } @@ -7182,6 +7092,12 @@ "requires": { "tslib": "^1.9.3" } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true } } }, @@ -7234,9 +7150,9 @@ } }, "snyk-python-plugin": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.17.0.tgz", - "integrity": "sha512-EKdVOUlvhiVpXA5TeW8vyxYVqbITAfT+2AbL2ZRiiUNLP5ae+WiNYaPy7aB5HAS9IKBKih+IH8Ag65Xu1IYSYA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.17.1.tgz", + "integrity": "sha512-KKklat9Hfbj4hw2y63LRhgmziYzmyRt+cSuzN5KDmBSAGYck0EAoPDtNpJXjrIs1kPNz28EXnE6NDnadXnOjiQ==", "dev": true, "requires": { "@snyk/cli-interface": "^2.0.3", @@ -7558,6 +7474,17 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "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": "^5.0.0" + } + } } }, "string.prototype.trimend": { @@ -7609,12 +7536,20 @@ "dev": true }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } }, "strip-eof": { @@ -7650,12 +7585,6 @@ "string-width": "^3.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -7678,15 +7607,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.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==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -7961,9 +7881,9 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tsutils": { @@ -8143,7 +8063,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "dev": true, + "optional": true }, "uri-js": { "version": "4.2.2", @@ -8372,14 +8293,54 @@ } }, "watchpack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", "dev": true, "requires": { - "chokidar": "^2.1.8", + "chokidar": "^3.4.0", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" }, "dependencies": { "anymatch": { @@ -8387,6 +8348,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -8397,6 +8359,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -8407,13 +8370,15 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true + "dev": true, + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -8432,6 +8397,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -8443,6 +8409,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -8463,6 +8430,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -8475,6 +8443,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -8482,620 +8451,14 @@ } }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": false, - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": false, - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": false, - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": false, - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": false, - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": false, - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": false, - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": false, - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "resolved": false, - "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "resolved": false, - "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": false, - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "resolved": false, - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": false, - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": false, - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": false, - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": false, - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": false, - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": false, - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": false, - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "optional": true - } + "nan": "^2.12.1" } }, "glob-parent": { @@ -9103,6 +8466,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, + "optional": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -9113,6 +8477,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, + "optional": true, "requires": { "is-extglob": "^2.1.0" } @@ -9124,6 +8489,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, + "optional": true, "requires": { "binary-extensions": "^1.0.0" } @@ -9132,13 +8498,15 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "optional": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -9148,6 +8516,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -9159,6 +8528,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -9180,6 +8550,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -9191,6 +8562,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, + "optional": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -9385,12 +8757,6 @@ "yargs": "13.2.4" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -9502,15 +8868,6 @@ "strip-ansi": "^5.1.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==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -9723,12 +9080,6 @@ "strip-ansi": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -9751,15 +9102,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.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==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -9853,12 +9195,6 @@ "yargs-parser": "^13.1.2" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -9881,15 +9217,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.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==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, diff --git a/extension/src/api.ts b/extension/src/api.ts index 95bd988b4..42a708f45 100644 --- a/extension/src/api.ts +++ b/extension/src/api.ts @@ -23,11 +23,6 @@ export interface CancelTaskOpts { } export class Api { - private readonly _onTasksLoaded: vscode.EventEmitter< - null - > = new vscode.EventEmitter(); - public onTasksLoaded: vscode.Event = this._onTasksLoaded.event; - // To allow the tests to check for task logs public logger = logger; @@ -35,9 +30,7 @@ export class Api { private readonly client: GradleTasksClient, private readonly taskProvider: GradleTaskProvider, private readonly treeDataProvider: GradleTasksTreeDataProvider - ) { - taskProvider.waitForLoaded(() => this._onTasksLoaded.fire(null)); - } + ) {} public async runTask(opts: RunTaskOpts): Promise { const task = await this.findTask(opts.projectFolder, opts.taskName); @@ -97,7 +90,7 @@ export class Api { return this.treeDataProvider; } - dispose(): void { - this._onTasksLoaded.dispose(); + public waitForLoaded(callback: () => void): void { + this.taskProvider.waitForLoaded(callback); } } diff --git a/extension/src/client.ts b/extension/src/client.ts index 96805add1..1d8665a01 100644 --- a/extension/src/client.ts +++ b/extension/src/client.ts @@ -464,9 +464,7 @@ export function registerClient( const client = new GradleTasksClient(server, statusBarItem); context.subscriptions.push(client, statusBarItem); client.onConnect(() => { - setTimeout(() => { - vscode.commands.executeCommand('gradle.refresh'); - }, 1); // wait for other onConnectHandler to fire first + vscode.commands.executeCommand('gradle.refresh'); }); return client; } diff --git a/extension/src/commands.ts b/extension/src/commands.ts index 95918033c..279f5c21f 100644 --- a/extension/src/commands.ts +++ b/extension/src/commands.ts @@ -93,6 +93,10 @@ function registerRunTaskWithArgsCommand( (treeItem: GradleTaskTreeItem) => { if (treeItem && treeItem.task) { runTaskWithArgs(treeItem.task, client, false); + } else { + logger.error( + 'Unable to run task with args. TreeItem or TreeItem task not found.' + ); } } ); @@ -106,6 +110,10 @@ function registerDebugTaskWithArgsCommand( (treeItem: GradleTaskTreeItem) => { if (treeItem && treeItem.task) { runTaskWithArgs(treeItem.task, client, true); + } else { + logger.error( + 'Unable to debug task with args. TreeItem or TreeItem task not found.' + ); } } ); diff --git a/extension/src/extension.ts b/extension/src/extension.ts index 18d210e9f..6bfef30b8 100644 --- a/extension/src/extension.ts +++ b/extension/src/extension.ts @@ -35,10 +35,7 @@ export async function activate(context: vscode.ExtensionContext): Promise { taskProvider ); - const api = new Api(client, taskProvider, treeDataProvider); - context.subscriptions.push(api); - - return api; + return new Api(client, taskProvider, treeDataProvider); } // eslint-disable-next-line @typescript-eslint/no-empty-function diff --git a/extension/src/server.ts b/extension/src/server.ts index 58df812b2..9eacb5444 100644 --- a/extension/src/server.ts +++ b/extension/src/server.ts @@ -29,7 +29,7 @@ export class GradleTasksServer implements vscode.Disposable { private readonly context: vscode.ExtensionContext ) { context.subscriptions.push( - vscode.tasks.onDidStartTask((event) => { + vscode.tasks.onDidStartTaskProcess((event) => { if (event.execution.task.name === SERVER_TASK_NAME) { this.fireOnReady(); } @@ -59,6 +59,7 @@ export class GradleTasksServer implements vscode.Disposable { const task = buildGradleServerTask(SERVER_TASK_NAME, cwd, [ String(this.port), ]); + logger.debug('Starting server'); this.taskExecution = await vscode.tasks.executeTask(task); } } diff --git a/extension/src/tasks.ts b/extension/src/tasks.ts index 613c29552..9474a7160 100644 --- a/extension/src/tasks.ts +++ b/extension/src/tasks.ts @@ -183,7 +183,6 @@ export class GradleTaskProvider */): Promise< vscode.Task | undefined > { - console.log('TRYING TO RESOLVE TASK'); return undefined; } @@ -217,6 +216,7 @@ export class GradleTaskProvider } public async refresh(): Promise { + logger.debug('Refreshing tasks'); this._onDidRefreshStart.fire(null); const folders = vscode.workspace.workspaceFolders; if (!folders) { @@ -538,7 +538,7 @@ export function buildGradleServerTask( ): vscode.Task { const cmd = `"${getGradleTasksServerCommand()}"`; logger.debug(`Gradle Tasks Server dir: ${cwd}`); - logger.debug(`Gradle Tasks Server cmd: ${cmd} ${args}`); + logger.debug(`Gradle Tasks Server cmd: ${cmd} ${args.join(' ')}`); const taskType = 'gradle'; const definition = { type: taskType, @@ -558,7 +558,6 @@ export function buildGradleServerTask( new vscode.ShellExecution(cmd, args, { cwd, env }) ); // task.isBackground = true; // this hides errors on task start - task.source = taskType; task.presentationOptions = { reveal: vscode.TaskRevealKind.Never, focus: false, @@ -658,6 +657,8 @@ export async function runTaskWithArgs( }); if (args !== undefined) { runTask(task, client, args, debug); + } else { + logger.error('Args not supplied'); } } diff --git a/extension/src/test/gradle/extension.test.ts b/extension/src/test/gradle/extension.test.ts index c4a4de573..141bc4b3f 100644 --- a/extension/src/test/gradle/extension.test.ts +++ b/extension/src/test/gradle/extension.test.ts @@ -75,21 +75,24 @@ describe(fixtureName, () => { ); assert.ok(task); const loggerAppendSpy = sinon.spy(extension?.exports.logger, 'append'); - const loggerApendLineSpy = sinon.spy( + const loggerAppendLineSpy = sinon.spy( extension?.exports.logger, 'appendLine' ); - await new Promise((resolve) => { - vscode.tasks.onDidEndTaskProcess((e) => { + await new Promise(async (resolve) => { + const disposable = vscode.tasks.onDidEndTaskProcess((e) => { if (e.execution.task === task) { + disposable.dispose(); + console.log(loggerAppendSpy); + console.log(loggerAppendLineSpy); resolve(); } }); - vscode.tasks.executeTask(task!); + await vscode.tasks.executeTask(task!); }); assert.ok(loggerAppendSpy.calledWith(sinon.match('Hello, World!'))); assert.ok( - loggerApendLineSpy.calledWith(sinon.match('Completed task: hello')) + loggerAppendLineSpy.calledWith(sinon.match('Completed task: hello')) ); }); @@ -103,16 +106,15 @@ describe(fixtureName, () => { const task = (await vscode.tasks.fetchTasks({ type: 'gradle' })).find( ({ name }) => name === 'helloProjectProperty' ); - console.log('got task', JSON.stringify(task, null, 2)); assert.ok(task); const spy = sinon.spy(extension.exports.logger, 'append'); const treeDataProvider = extension?.exports .treeDataProvider as GradleTasksTreeDataProvider; - console.log('got treeData Provider', treeDataProvider); - await new Promise((resolve) => { + await new Promise(async (resolve) => { // eslint-disable-next-line sonarjs/no-identical-functions - vscode.tasks.onDidEndTaskProcess((e) => { - if (e.execution.task.definition.script === task?.definition.script) { + const endDisposable = vscode.tasks.onDidEndTaskProcess((e) => { + if (e.execution.task.definition.script === task.definition.script) { + endDisposable.dispose(); resolve(); } }); @@ -124,7 +126,10 @@ describe(fixtureName, () => { treeDataProvider.getIconPathRunning()!, treeDataProvider.getIconPathIdle()! ); - vscode.commands.executeCommand('gradle.runTaskWithArgs', treeItem); + await vscode.commands.executeCommand( + 'gradle.runTaskWithArgs', + treeItem + ); }); assert.ok(spy.calledWith(sinon.match('Hello, Project Property!foo'))); }); diff --git a/extension/src/test/multi-project/extension.test.ts b/extension/src/test/multi-project/extension.test.ts index d1c57c971..f1738b49e 100644 --- a/extension/src/test/multi-project/extension.test.ts +++ b/extension/src/test/multi-project/extension.test.ts @@ -45,8 +45,9 @@ describe(fixtureName, () => { assert.ok(task); const spy = sinon.spy(extension.exports.logger, 'append'); await new Promise((resolve) => { - vscode.tasks.onDidEndTaskProcess((e) => { + const disposable = vscode.tasks.onDidEndTaskProcess((e) => { if (e.execution.task === task) { + disposable.dispose(); resolve(); } }); @@ -67,8 +68,9 @@ describe(fixtureName, () => { // eslint-disable-next-line sonarjs/no-identical-functions await new Promise((resolve) => { // eslint-disable-next-line sonarjs/no-identical-functions - vscode.tasks.onDidEndTaskProcess((e) => { + const disposable = vscode.tasks.onDidEndTaskProcess((e) => { if (e.execution.task === task) { + disposable.dispose(); resolve(); } }); diff --git a/extension/src/test/multi-root/extension.test.ts b/extension/src/test/multi-root/extension.test.ts index c89375956..7b27272f6 100644 --- a/extension/src/test/multi-root/extension.test.ts +++ b/extension/src/test/multi-root/extension.test.ts @@ -67,8 +67,9 @@ describe(fixtureName, () => { const spy = sinon.spy(extension.exports.logger, 'append'); await new Promise((resolve) => { - vscode.tasks.onDidEndTaskProcess((e) => { + const disposable = vscode.tasks.onDidEndTaskProcess((e) => { if (e.execution.task === task) { + disposable.dispose(); resolve(); } }); diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index 46097bdcc..303a53e4d 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -22,8 +22,6 @@ async function runTestsWithGradle(): Promise { extensionTestsEnv: { FIXTURE_NAME: fixture, VSCODE_TEST: 'true', - GRPC_VERBOSITY: 'debug', - GRPC_TRACE: 'all', }, }); } diff --git a/extension/src/test/testUtil.ts b/extension/src/test/testUtil.ts index 975da41d8..aee14181c 100644 --- a/extension/src/test/testUtil.ts +++ b/extension/src/test/testUtil.ts @@ -3,31 +3,15 @@ import * as vscode from 'vscode'; import * as Mocha from 'mocha'; import * as glob from 'glob'; -export async function waitForExplorerRefresh( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - extension: any -): Promise { - return await new Promise(async (resolve) => { - const treeDataProvider = extension!.exports.getTreeProvider(); - treeDataProvider.onDidChangeTreeData(async () => { - const tasks = await vscode.tasks.fetchTasks({ type: 'gradle' }); - if (tasks.length) { - resolve(tasks); - } - }); - }); -} - export async function waitForTasksToLoad( extensionName: string ): Promise { const extension = vscode.extensions.getExtension(extensionName); - const tasks = await vscode.tasks.fetchTasks({ type: 'gradle' }); - if (!tasks || !tasks.length) { - return await waitForExplorerRefresh(extension); - } else { - return tasks; - } + return new Promise((resolve, reject) => { + extension?.exports.waitForLoaded(() => { + vscode.tasks.fetchTasks({ type: 'gradle' }).then(resolve, reject); + }); + }); } export function createTestRunner(pattern: string) { @@ -39,7 +23,7 @@ export function createTestRunner(pattern: string) { // Create the mocha test const mocha = new Mocha({ ui: 'bdd', - timeout: 120000, + timeout: 60000, color: true, }); mocha.bail(true); From 3380a19a03bef14e5c29e201ea4ba15ebcde5d67 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Mon, 18 May 2020 18:00:36 +0100 Subject: [PATCH 03/11] Don't update vscode when tests are running Also don't use async/await when running the tests --- .github/workflows/build-and-test.yml | 2 +- extension/src/test/runTests.ts | 40 +++++++++++-------- .../.vscode/settings.json | 3 ++ .../.gitignore | 3 -- .../.vscode/settings.json | 3 ++ .../.vscode/settings.json | 3 ++ .../multi-project/.vscode/settings.json | 3 ++ 7 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json create mode 100644 extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json create mode 100644 extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json create mode 100644 extension/test-fixtures/multi-project/.vscode/settings.json diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 87bb891cd..50a3e0205 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -45,7 +45,7 @@ jobs: matrix: node-version: [12.16.2] java-version: ['8', '11'] - os: [ubuntu-latest, windows-latest] # unable to test on macos-latest, see https://github.com/microsoft/vscode/issues/98080 + os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v1 - name: Use Node ${{ matrix.node-version }} diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index 303a53e4d..32788c0ad 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -1,11 +1,12 @@ /* eslint-disable sonarjs/no-duplicate-string */ import * as path from 'path'; -import { runTests } from 'vscode-test'; +import { runTests, downloadAndUnzipVSCode } from 'vscode-test'; const extensionDevelopmentPath = path.resolve(__dirname, '../../'); +const VSCODE_VERSION = '1.45.0'; -async function runTestsWithGradle(): Promise { +async function runTestsWithGradle(vscodeExecutablePath: string): Promise { const fixtures = [ 'gradle-groovy-default-build-file', 'gradle-kotlin-default-build-file', @@ -13,6 +14,7 @@ async function runTestsWithGradle(): Promise { ]; for (const fixture of fixtures) { await runTests({ + vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath: path.resolve(__dirname, 'gradle'), launchArgs: [ @@ -27,8 +29,9 @@ async function runTestsWithGradle(): Promise { } } -async function runTestsWithoutGradle(): Promise { - await runTests({ +function runTestsWithoutGradle(vscodeExecutablePath: string): Promise { + return runTests({ + vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath: path.resolve(__dirname, 'no-gradle'), launchArgs: [ @@ -41,8 +44,9 @@ async function runTestsWithoutGradle(): Promise { }); } -async function runTestsWithMultiRoot(): Promise { - await runTests({ +function runTestsWithMultiRoot(vscodeExecutablePath: string): Promise { + return runTests({ + vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath: path.resolve(__dirname, 'multi-root'), launchArgs: [ @@ -59,8 +63,11 @@ async function runTestsWithMultiRoot(): Promise { }); } -async function runTestsWithMultiProject(): Promise { - await runTests({ +async function runTestsWithMultiProject( + vscodeExecutablePath: string +): Promise { + return runTests({ + vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath: path.resolve(__dirname, 'multi-project'), launchArgs: [ @@ -75,14 +82,15 @@ async function runTestsWithMultiProject(): Promise { } async function main(): Promise { - try { - await runTestsWithGradle(); - await runTestsWithMultiRoot(); - await runTestsWithMultiProject(); - await runTestsWithoutGradle(); - } catch (err) { - process.exit(1); - } + const vscodeExecutablePath = await downloadAndUnzipVSCode(VSCODE_VERSION); + + runTestsWithGradle(vscodeExecutablePath) + .then(() => runTestsWithMultiRoot(vscodeExecutablePath)) + .then(() => runTestsWithMultiProject(vscodeExecutablePath)) + .then(() => runTestsWithoutGradle(vscodeExecutablePath)) + .catch((err) => { + console.error('Error running tests:', err.message); + }); } main(); diff --git a/extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json b/extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json new file mode 100644 index 000000000..756721312 --- /dev/null +++ b/extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "update.mode": "none" +} diff --git a/extension/test-fixtures/gradle-groovy-default-build-file/.gitignore b/extension/test-fixtures/gradle-groovy-default-build-file/.gitignore index 406e5d275..1b6985c00 100644 --- a/extension/test-fixtures/gradle-groovy-default-build-file/.gitignore +++ b/extension/test-fixtures/gradle-groovy-default-build-file/.gitignore @@ -3,6 +3,3 @@ # Ignore Gradle build output directory build - -# Ignore .vscode settings -.vscode diff --git a/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json b/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json new file mode 100644 index 000000000..756721312 --- /dev/null +++ b/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "update.mode": "none" +} diff --git a/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json b/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json new file mode 100644 index 000000000..756721312 --- /dev/null +++ b/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "update.mode": "none" +} diff --git a/extension/test-fixtures/multi-project/.vscode/settings.json b/extension/test-fixtures/multi-project/.vscode/settings.json new file mode 100644 index 000000000..756721312 --- /dev/null +++ b/extension/test-fixtures/multi-project/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "update.mode": "none" +} From 74cbbe4aff8af92a0376b07d7b4668256f724928 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Mon, 18 May 2020 20:43:42 +0100 Subject: [PATCH 04/11] Don't update vscode during tests Needs to be a short dir name, see microsoft/vscode#86382 --- extension/package-lock.json | 43 +++++++++++++++++++ extension/package.json | 2 + extension/src/test/runTests.ts | 40 +++++++++++++---- .../.vscode/settings.json | 3 -- .../.vscode/settings.json | 3 -- .../multi-project/.vscode/settings.json | 3 -- .../User}/settings.json | 0 7 files changed, 77 insertions(+), 17 deletions(-) delete mode 100644 extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json delete mode 100644 extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json delete mode 100644 extension/test-fixtures/multi-project/.vscode/settings.json rename extension/test-fixtures/{gradle-groovy-custom-build-file/.vscode => vscode-user/User}/settings.json (100%) diff --git a/extension/package-lock.json b/extension/package-lock.json index 9ca938208..1cfeb3e8e 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -471,6 +471,15 @@ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, + "@types/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-xCbDUSZArlmMjiJdczt8AFNH2MwcMb/pj/HKja1hx3u1qzOUINcJktQMGoGVlgFnzxnuCahxKFlcRBkSAcm33g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", @@ -1102,6 +1111,12 @@ "dev": true, "optional": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -3151,6 +3166,18 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -4648,6 +4675,16 @@ "minimist": "^1.2.0" } }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, "jszip": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", @@ -8001,6 +8038,12 @@ "crypto-random-string": "^1.0.0" } }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/extension/package.json b/extension/package.json index 0d56e0867..73e9c81aa 100644 --- a/extension/package.json +++ b/extension/package.json @@ -531,6 +531,7 @@ "dependencies": {}, "devDependencies": { "@grpc/grpc-js": "^1.0.2", + "@types/fs-extra": "^9.0.0", "@types/glob": "^7.1.1", "@types/google-protobuf": "^3.7.2", "@types/mocha": "^7.0.2", @@ -544,6 +545,7 @@ "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-sonarjs": "^0.5.0", "fast-glob": "^3.2.2", + "fs-extra": "^9.0.0", "get-port": "^5.1.1", "google-protobuf": "^3.11.4", "grpc-tools": "^1.8.1", diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index 32788c0ad..f3a487c34 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -1,12 +1,17 @@ /* eslint-disable sonarjs/no-duplicate-string */ import * as path from 'path'; +import * as os from 'os'; +import * as fs from 'fs-extra'; import { runTests, downloadAndUnzipVSCode } from 'vscode-test'; const extensionDevelopmentPath = path.resolve(__dirname, '../../'); const VSCODE_VERSION = '1.45.0'; -async function runTestsWithGradle(vscodeExecutablePath: string): Promise { +async function runTestsWithGradle( + vscodeExecutablePath: string, + userDir: string +): Promise { const fixtures = [ 'gradle-groovy-default-build-file', 'gradle-kotlin-default-build-file', @@ -20,6 +25,7 @@ async function runTestsWithGradle(vscodeExecutablePath: string): Promise { launchArgs: [ path.resolve(__dirname, `../../test-fixtures/${fixture}`), '--disable-extensions', + `--user-data-dir=${userDir}`, ], extensionTestsEnv: { FIXTURE_NAME: fixture, @@ -29,7 +35,10 @@ async function runTestsWithGradle(vscodeExecutablePath: string): Promise { } } -function runTestsWithoutGradle(vscodeExecutablePath: string): Promise { +function runTestsWithoutGradle( + vscodeExecutablePath: string, + userDir: string +): Promise { return runTests({ vscodeExecutablePath, extensionDevelopmentPath, @@ -37,6 +46,7 @@ function runTestsWithoutGradle(vscodeExecutablePath: string): Promise { launchArgs: [ path.resolve(__dirname, '../../test-fixtures/no-gradle'), '--disable-extensions', + `--user-data-dir=${userDir}`, ], extensionTestsEnv: { VSCODE_TEST: 'true', @@ -44,7 +54,10 @@ function runTestsWithoutGradle(vscodeExecutablePath: string): Promise { }); } -function runTestsWithMultiRoot(vscodeExecutablePath: string): Promise { +function runTestsWithMultiRoot( + vscodeExecutablePath: string, + userDir: string +): Promise { return runTests({ vscodeExecutablePath, extensionDevelopmentPath, @@ -55,6 +68,7 @@ function runTestsWithMultiRoot(vscodeExecutablePath: string): Promise { '../../test-fixtures/multi-root/multiple-project.code-workspace' ), '--disable-extensions', + `--user-data-dir=${userDir}`, ], extensionTestsEnv: { FIXTURE_NAME: 'multi-root', @@ -64,7 +78,8 @@ function runTestsWithMultiRoot(vscodeExecutablePath: string): Promise { } async function runTestsWithMultiProject( - vscodeExecutablePath: string + vscodeExecutablePath: string, + userDir: string ): Promise { return runTests({ vscodeExecutablePath, @@ -73,6 +88,7 @@ async function runTestsWithMultiProject( launchArgs: [ path.resolve(__dirname, '../../test-fixtures/multi-project/'), '--disable-extensions', + `--user-data-dir=${userDir}`, ], extensionTestsEnv: { FIXTURE_NAME: 'multi-project', @@ -82,14 +98,22 @@ async function runTestsWithMultiProject( } async function main(): Promise { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vscode-user')); + fs.copySync( + path.resolve(__dirname, '../../test-fixtures/vscode-user/User'), + path.join(tmpDir, 'User') + ); const vscodeExecutablePath = await downloadAndUnzipVSCode(VSCODE_VERSION); - runTestsWithGradle(vscodeExecutablePath) - .then(() => runTestsWithMultiRoot(vscodeExecutablePath)) - .then(() => runTestsWithMultiProject(vscodeExecutablePath)) - .then(() => runTestsWithoutGradle(vscodeExecutablePath)) + runTestsWithGradle(vscodeExecutablePath, tmpDir) + .then(() => runTestsWithMultiRoot(vscodeExecutablePath, tmpDir)) + .then(() => runTestsWithMultiProject(vscodeExecutablePath, tmpDir)) + .then(() => runTestsWithoutGradle(vscodeExecutablePath, tmpDir)) .catch((err) => { console.error('Error running tests:', err.message); + }) + .finally(() => { + fs.remove(tmpDir); }); } diff --git a/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json b/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json deleted file mode 100644 index 756721312..000000000 --- a/extension/test-fixtures/gradle-groovy-default-build-file/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "update.mode": "none" -} diff --git a/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json b/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json deleted file mode 100644 index 756721312..000000000 --- a/extension/test-fixtures/gradle-kotlin-default-build-file/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "update.mode": "none" -} diff --git a/extension/test-fixtures/multi-project/.vscode/settings.json b/extension/test-fixtures/multi-project/.vscode/settings.json deleted file mode 100644 index 756721312..000000000 --- a/extension/test-fixtures/multi-project/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "update.mode": "none" -} diff --git a/extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json b/extension/test-fixtures/vscode-user/User/settings.json similarity index 100% rename from extension/test-fixtures/gradle-groovy-custom-build-file/.vscode/settings.json rename to extension/test-fixtures/vscode-user/User/settings.json From ffc1f5849c2ead57f9daf4cb864574636119614d Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Mon, 18 May 2020 20:55:07 +0100 Subject: [PATCH 05/11] Exit when tests fail --- extension/src/test/runTests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index f3a487c34..2f4f5eb08 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -111,6 +111,7 @@ async function main(): Promise { .then(() => runTestsWithoutGradle(vscodeExecutablePath, tmpDir)) .catch((err) => { console.error('Error running tests:', err.message); + process.exit(1); }) .finally(() => { fs.remove(tmpDir); From ca31918d95dcd33725a919b828fc6b92e4107ae0 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Mon, 18 May 2020 21:09:56 +0100 Subject: [PATCH 06/11] Remove task presentation options --- .github/workflows/build-and-test.yml | 15 +++- .vscode/launch.json | 30 +++++-- extension/build.gradle | 2 +- extension/i18n/es/package.i18n.json | 7 -- extension/package.json | 55 ------------ extension/package.nls.json | 7 -- extension/src/gradleView.ts | 5 +- extension/src/server.ts | 18 ++-- extension/src/tasks.ts | 24 ++---- extension/src/test/runTests.ts | 124 +++++++++++++-------------- 10 files changed, 118 insertions(+), 169 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 50a3e0205..3ab9a922e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -61,6 +61,8 @@ jobs: uses: eskatos/gradle-command-action@v1 with: arguments: extension:build + env: + NODE_OPTIONS: '--max-old-space-size=4096' - name: Download lib uses: actions/download-artifact@v1 with: @@ -93,10 +95,17 @@ jobs: arguments: build build-root-directory: extension/test-fixtures/gradle-kotlin-default-build-file wrapper-directory: extension/test-fixtures/gradle-kotlin-default-build-file + # - name: Test extension + # uses: eskatos/gradle-command-action@v1 + # with: + # arguments: testVsCode + # env: + # DISPLAY: ':99.0' + # CI: 'true' - name: Test extension - uses: eskatos/gradle-command-action@v1 - with: - arguments: testVsCode + run: | + cd extension + npm test env: DISPLAY: ':99.0' CI: 'true' diff --git a/.vscode/launch.json b/.vscode/launch.json index bf7059a97..81146c7b3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -56,7 +56,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/gradle", "${workspaceFolder}/extension/test-fixtures/gradle-groovy-default-build-file" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" @@ -77,7 +80,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/gradle", "${workspaceFolder}/extension/test-fixtures/gradle-kotlin-default-build-file" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" @@ -98,7 +104,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/gradle", "${workspaceFolder}/extension/test-fixtures/gradle-groovy-custom-build-file" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" @@ -118,7 +127,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/no-gradle/", "${workspaceFolder}/extension/test-fixtures/no-gradle" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" @@ -139,7 +151,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/multi-root/", "${workspaceFolder}/extension/test-fixtures/multi-root/multiple-project.code-workspace" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" @@ -159,7 +174,10 @@ "--extensionTestsPath=${workspaceFolder}/extension/out/test/multi-project/", "${workspaceFolder}/extension/test-fixtures/multi-project" ], - "outFiles": ["${workspaceFolder}/extension/out/test/**/*.js"], + "outFiles": [ + "${workspaceFolder}/extension/dist/**/*.js", + "${workspaceFolder}/extension/out/test/**/*.js" + ], "preLaunchTask": "Gradle: Build", "presentation": { "group": "test" diff --git a/extension/build.gradle b/extension/build.gradle index ee20487bd..22934aaf5 100644 --- a/extension/build.gradle +++ b/extension/build.gradle @@ -187,4 +187,4 @@ task prepareForRelease() { dependsOn bundle, copyDocs } -build.finalizedBy buildDev, buildTest +build.finalizedBy buildProd, buildTest diff --git a/extension/i18n/es/package.i18n.json b/extension/i18n/es/package.i18n.json index 714777870..79b8f67ed 100644 --- a/extension/i18n/es/package.i18n.json +++ b/extension/i18n/es/package.i18n.json @@ -18,13 +18,6 @@ "extension.config.enableTasksExplorer.description": "Habilitar una vista de explorador para tareas de Gradle", "extension.config.debug.description": "Mostrar información adicional de depuración en el panel de salida", "extension.config.focusTaskInExplorer.description": "Enfoca la tarea en el explorador cuando ejecutas una tarea", - "extension.config.taskPresentationOptions.description": "Opciones de terminal para ejecutar una tarea", - "extension.config.taskPresentationOptions.reveal.description": "Controla si el panel Terminal integrado se lleva al frente", - "extension.config.taskPresentationOptions.focus.description": "Controla si el terminal está tomando el foco de entrada o no", - "extension.config.taskPresentationOptions.echo.description": "Controla si el comando ejecutado se repite en el terminal", - "extension.config.taskPresentationOptions.showReuseMessage.description": "Controla si mostrar el \"Terminal será reutilizado por tareas, presione cualquier tecla para cerrarlo \" mensaje", - "extension.config.taskPresentationOptions.panel.description": "Controla si la instancia de terminal se comparte entre ejecuciones de tareas", - "extension.config.taskPresentationOptions.clear.description": "Controla si el terminal se borra antes de ejecutar esta tarea", "extension.config.javaDebug.description": "Opciones de depuración de Java", "extension.config.javaDebug.tasks.description": "Lista de tareas JavaExec para depurar" } diff --git a/extension/package.json b/extension/package.json index 73e9c81aa..ffd14d98c 100644 --- a/extension/package.json +++ b/extension/package.json @@ -379,61 +379,6 @@ "integration" ] } - }, - "gradle.taskPresentationOptions": { - "type": "object", - "description": "%extension.config.taskPresentationOptions.description%", - "scope": "window", - "properties": { - "reveal": { - "type": "string", - "enum": [ - "always", - "never", - "silent" - ], - "default": "always", - "description": "%extension.config.taskPresentationOptions.reveal.description%" - }, - "focus": { - "type": "boolean", - "default": true, - "description": "%extension.config.taskPresentationOptions.focus.description%" - }, - "echo": { - "type": "boolean", - "default": true, - "description": "%extension.config.taskPresentationOptions.echo.description%" - }, - "showReuseMessage": { - "type": "boolean", - "default": false, - "description": "%extension.config.taskPresentationOptions.showReuseMessage.description%" - }, - "panel": { - "type": "string", - "enum": [ - "shared", - "dedicated", - "new" - ], - "default": "shared", - "description": "%extension.config.taskPresentationOptions.panel.description%" - }, - "clear": { - "type": "boolean", - "default": true, - "description": "%extension.config.taskPresentationOptions.clear.description%" - } - }, - "default": { - "reveal": "always", - "focus": false, - "echo": true, - "showReuseMessage": false, - "panel": "shared", - "clear": false - } } } }, diff --git a/extension/package.nls.json b/extension/package.nls.json index f9e8e5c43..5f457c39f 100644 --- a/extension/package.nls.json +++ b/extension/package.nls.json @@ -19,13 +19,6 @@ "extension.config.enableTasksExplorer.description": "Enable an explorer view for Gradle tasks", "extension.config.debug.description": "Show extra debug information in the output panel", "extension.config.focusTaskInExplorer.description": "Focus the task in the explorer when running a task", - "extension.config.taskPresentationOptions.description": "Terminal options for running a task", - "extension.config.taskPresentationOptions.reveal.description": "Controls whether the Integrated Terminal panel is brought to front", - "extension.config.taskPresentationOptions.focus.description": "Controls whether the terminal is taking input focus or not", - "extension.config.taskPresentationOptions.echo.description": "Controls whether the executed command is echoed in the terminal", - "extension.config.taskPresentationOptions.showReuseMessage.description": "Controls whether to show the \"Terminal will be reused by tasks, press any key to close it\" message", - "extension.config.taskPresentationOptions.panel.description": "Controls whether the terminal instance is shared between task runs", - "extension.config.taskPresentationOptions.clear.description": "Controls whether the terminal is cleared before this task is run", "extension.config.javaDebug.description": "Java debug options", "extension.config.javaDebug.tasks.description": "List of JavaExec tasks to debug" } diff --git a/extension/src/gradleView.ts b/extension/src/gradleView.ts index b7d9a3f1c..30d9d5ba5 100644 --- a/extension/src/gradleView.ts +++ b/extension/src/gradleView.ts @@ -465,10 +465,7 @@ export function registerExplorer( 'gradle:showTasksExplorer', getConfigIsTasksExplorerEnabled() ); - } else if ( - event.affectsConfiguration('gradle.javaDebug') || - event.affectsConfiguration('gradle.taskPresentationOptions') - ) { + } else if (event.affectsConfiguration('gradle.javaDebug')) { vscode.commands.executeCommand('gradle.refresh'); } } diff --git a/extension/src/server.ts b/extension/src/server.ts index 9eacb5444..df7ea933f 100644 --- a/extension/src/server.ts +++ b/extension/src/server.ts @@ -15,7 +15,8 @@ export interface ServerOptions { } export class GradleTasksServer implements vscode.Disposable { - private taskExecution: vscode.TaskExecution | undefined; + private task?: vscode.Task; + private taskExecution?: Thenable; private _onReady: vscode.EventEmitter = new vscode.EventEmitter(); private _onStop: vscode.EventEmitter = new vscode.EventEmitter(); private isRestarting = false; @@ -41,6 +42,7 @@ export class GradleTasksServer implements vscode.Disposable { logger.info( localize('server.gradleServerStopped', 'Gradle server stopped') ); + this.task = undefined; this.taskExecution = undefined; this.showRestartMessage(); } @@ -56,16 +58,18 @@ export class GradleTasksServer implements vscode.Disposable { } else { this.port = await getPort(); const cwd = this.context.asAbsolutePath('lib'); - const task = buildGradleServerTask(SERVER_TASK_NAME, cwd, [ + this.task = buildGradleServerTask(SERVER_TASK_NAME, cwd, [ String(this.port), ]); logger.debug('Starting server'); - this.taskExecution = await vscode.tasks.executeTask(task); + console.log('GOT TASK', this.task); + this.taskExecution = vscode.tasks.executeTask(this.task); + console.log('GOT TASK AFTER', this.task); } } public isStarted(): boolean { - return this.taskExecution !== null; + return this.task !== undefined; } public async showRestartMessage(): Promise { @@ -87,7 +91,7 @@ export class GradleTasksServer implements vscode.Disposable { localize('server.gradleServerRestarting', 'Restarting gradle server') ); if (!this.isRestarting) { - if (this.taskExecution) { + if (this.task) { this.isRestarting = true; const disposable = vscode.tasks.onDidEndTaskProcess((event) => { if (event.execution.task.name === SERVER_TASK_NAME) { @@ -96,7 +100,7 @@ export class GradleTasksServer implements vscode.Disposable { this.start(); } }); - this.taskExecution.terminate(); + this.taskExecution?.then((execution) => execution.terminate()); } else { this.start(); } @@ -111,7 +115,7 @@ export class GradleTasksServer implements vscode.Disposable { } public dispose(): void { - this.taskExecution?.terminate(); + this.taskExecution?.then((execution) => execution.terminate()); this._onReady.dispose(); this._onStop.dispose(); } diff --git a/extension/src/tasks.ts b/extension/src/tasks.ts index 9474a7160..7ee57df0d 100644 --- a/extension/src/tasks.ts +++ b/extension/src/tasks.ts @@ -178,11 +178,10 @@ export class GradleTaskProvider } // TODO - public async resolveTask(/* - _task: vscode.Task - */): Promise< - vscode.Task | undefined - > { + public async resolveTask( + _task: vscode.Task + ): Promise { + console.log('TRY RESOLVE TASK', _task); return undefined; } @@ -536,7 +535,7 @@ export function buildGradleServerTask( cwd: string, args: string[] = [] ): vscode.Task { - const cmd = `"${getGradleTasksServerCommand()}"`; + const cmd = getGradleTasksServerCommand(); logger.debug(`Gradle Tasks Server dir: ${cwd}`); logger.debug(`Gradle Tasks Server cmd: ${cmd} ${args.join(' ')}`); const taskType = 'gradle'; @@ -550,22 +549,13 @@ export function buildGradleServerTask( VSCODE_JAVA_HOME: javaHome, }); } - const task = new vscode.Task( + return new vscode.Task( definition, vscode.TaskScope.Workspace, taskName, taskType, - new vscode.ShellExecution(cmd, args, { cwd, env }) + new vscode.ProcessExecution(cmd, args, { cwd, env }) ); - // task.isBackground = true; // this hides errors on task start - task.presentationOptions = { - reveal: vscode.TaskRevealKind.Never, - focus: false, - echo: true, - clear: false, - panel: vscode.TaskPanelKind.Shared, - }; - return task; } export function restartTask(task: vscode.Task): void { diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index 2f4f5eb08..72dfe54bf 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -35,67 +35,67 @@ async function runTestsWithGradle( } } -function runTestsWithoutGradle( - vscodeExecutablePath: string, - userDir: string -): Promise { - return runTests({ - vscodeExecutablePath, - extensionDevelopmentPath, - extensionTestsPath: path.resolve(__dirname, 'no-gradle'), - launchArgs: [ - path.resolve(__dirname, '../../test-fixtures/no-gradle'), - '--disable-extensions', - `--user-data-dir=${userDir}`, - ], - extensionTestsEnv: { - VSCODE_TEST: 'true', - }, - }); -} +// function runTestsWithoutGradle( +// vscodeExecutablePath: string, +// userDir: string +// ): Promise { +// return runTests({ +// vscodeExecutablePath, +// extensionDevelopmentPath, +// extensionTestsPath: path.resolve(__dirname, 'no-gradle'), +// launchArgs: [ +// path.resolve(__dirname, '../../test-fixtures/no-gradle'), +// '--disable-extensions', +// `--user-data-dir=${userDir}`, +// ], +// extensionTestsEnv: { +// VSCODE_TEST: 'true', +// }, +// }); +// } -function runTestsWithMultiRoot( - vscodeExecutablePath: string, - userDir: string -): Promise { - return runTests({ - vscodeExecutablePath, - extensionDevelopmentPath, - extensionTestsPath: path.resolve(__dirname, 'multi-root'), - launchArgs: [ - path.resolve( - __dirname, - '../../test-fixtures/multi-root/multiple-project.code-workspace' - ), - '--disable-extensions', - `--user-data-dir=${userDir}`, - ], - extensionTestsEnv: { - FIXTURE_NAME: 'multi-root', - VSCODE_TEST: 'true', - }, - }); -} +// function runTestsWithMultiRoot( +// vscodeExecutablePath: string, +// userDir: string +// ): Promise { +// return runTests({ +// vscodeExecutablePath, +// extensionDevelopmentPath, +// extensionTestsPath: path.resolve(__dirname, 'multi-root'), +// launchArgs: [ +// path.resolve( +// __dirname, +// '../../test-fixtures/multi-root/multiple-project.code-workspace' +// ), +// '--disable-extensions', +// `--user-data-dir=${userDir}`, +// ], +// extensionTestsEnv: { +// FIXTURE_NAME: 'multi-root', +// VSCODE_TEST: 'true', +// }, +// }); +// } -async function runTestsWithMultiProject( - vscodeExecutablePath: string, - userDir: string -): Promise { - return runTests({ - vscodeExecutablePath, - extensionDevelopmentPath, - extensionTestsPath: path.resolve(__dirname, 'multi-project'), - launchArgs: [ - path.resolve(__dirname, '../../test-fixtures/multi-project/'), - '--disable-extensions', - `--user-data-dir=${userDir}`, - ], - extensionTestsEnv: { - FIXTURE_NAME: 'multi-project', - VSCODE_TEST: 'true', - }, - }); -} +// async function runTestsWithMultiProject( +// vscodeExecutablePath: string, +// userDir: string +// ): Promise { +// return runTests({ +// vscodeExecutablePath, +// extensionDevelopmentPath, +// extensionTestsPath: path.resolve(__dirname, 'multi-project'), +// launchArgs: [ +// path.resolve(__dirname, '../../test-fixtures/multi-project/'), +// '--disable-extensions', +// `--user-data-dir=${userDir}`, +// ], +// extensionTestsEnv: { +// FIXTURE_NAME: 'multi-project', +// VSCODE_TEST: 'true', +// }, +// }); +// } async function main(): Promise { const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vscode-user')); @@ -106,9 +106,9 @@ async function main(): Promise { const vscodeExecutablePath = await downloadAndUnzipVSCode(VSCODE_VERSION); runTestsWithGradle(vscodeExecutablePath, tmpDir) - .then(() => runTestsWithMultiRoot(vscodeExecutablePath, tmpDir)) - .then(() => runTestsWithMultiProject(vscodeExecutablePath, tmpDir)) - .then(() => runTestsWithoutGradle(vscodeExecutablePath, tmpDir)) + // .then(() => runTestsWithMultiRoot(vscodeExecutablePath, tmpDir)) + // .then(() => runTestsWithMultiProject(vscodeExecutablePath, tmpDir)) + // .then(() => runTestsWithoutGradle(vscodeExecutablePath, tmpDir)) .catch((err) => { console.error('Error running tests:', err.message); process.exit(1); From 4a7cc10b9282ac613a3df1e06849de792c99c28a Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Tue, 19 May 2020 19:12:18 +0100 Subject: [PATCH 07/11] Remove logs --- extension/src/server.ts | 2 -- extension/src/tasks.ts | 9 +++++---- extension/src/test/gradle/extension.test.ts | 2 -- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/extension/src/server.ts b/extension/src/server.ts index df7ea933f..f0ad0e8b8 100644 --- a/extension/src/server.ts +++ b/extension/src/server.ts @@ -62,9 +62,7 @@ export class GradleTasksServer implements vscode.Disposable { String(this.port), ]); logger.debug('Starting server'); - console.log('GOT TASK', this.task); this.taskExecution = vscode.tasks.executeTask(this.task); - console.log('GOT TASK AFTER', this.task); } } diff --git a/extension/src/tasks.ts b/extension/src/tasks.ts index 7ee57df0d..36a34da8b 100644 --- a/extension/src/tasks.ts +++ b/extension/src/tasks.ts @@ -178,10 +178,11 @@ export class GradleTaskProvider } // TODO - public async resolveTask( - _task: vscode.Task - ): Promise { - console.log('TRY RESOLVE TASK', _task); + public async resolveTask(/* + _task: vscode.Task + */): Promise< + vscode.Task | undefined + > { return undefined; } diff --git a/extension/src/test/gradle/extension.test.ts b/extension/src/test/gradle/extension.test.ts index 141bc4b3f..ad06d55ee 100644 --- a/extension/src/test/gradle/extension.test.ts +++ b/extension/src/test/gradle/extension.test.ts @@ -83,8 +83,6 @@ describe(fixtureName, () => { const disposable = vscode.tasks.onDidEndTaskProcess((e) => { if (e.execution.task === task) { disposable.dispose(); - console.log(loggerAppendSpy); - console.log(loggerAppendLineSpy); resolve(); } }); From 32153ceec2183c3d8ae62e4f55c5c23e6fa1ecdc Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Tue, 19 May 2020 19:15:26 +0100 Subject: [PATCH 08/11] Enable other tests --- extension/src/test/runTests.ts | 143 +++++++++++++++++---------------- 1 file changed, 74 insertions(+), 69 deletions(-) diff --git a/extension/src/test/runTests.ts b/extension/src/test/runTests.ts index 72dfe54bf..f94db5dda 100644 --- a/extension/src/test/runTests.ts +++ b/extension/src/test/runTests.ts @@ -35,67 +35,67 @@ async function runTestsWithGradle( } } -// function runTestsWithoutGradle( -// vscodeExecutablePath: string, -// userDir: string -// ): Promise { -// return runTests({ -// vscodeExecutablePath, -// extensionDevelopmentPath, -// extensionTestsPath: path.resolve(__dirname, 'no-gradle'), -// launchArgs: [ -// path.resolve(__dirname, '../../test-fixtures/no-gradle'), -// '--disable-extensions', -// `--user-data-dir=${userDir}`, -// ], -// extensionTestsEnv: { -// VSCODE_TEST: 'true', -// }, -// }); -// } +function runTestsWithoutGradle( + vscodeExecutablePath: string, + userDir: string +): Promise { + return runTests({ + vscodeExecutablePath, + extensionDevelopmentPath, + extensionTestsPath: path.resolve(__dirname, 'no-gradle'), + launchArgs: [ + path.resolve(__dirname, '../../test-fixtures/no-gradle'), + '--disable-extensions', + `--user-data-dir=${userDir}`, + ], + extensionTestsEnv: { + VSCODE_TEST: 'true', + }, + }); +} -// function runTestsWithMultiRoot( -// vscodeExecutablePath: string, -// userDir: string -// ): Promise { -// return runTests({ -// vscodeExecutablePath, -// extensionDevelopmentPath, -// extensionTestsPath: path.resolve(__dirname, 'multi-root'), -// launchArgs: [ -// path.resolve( -// __dirname, -// '../../test-fixtures/multi-root/multiple-project.code-workspace' -// ), -// '--disable-extensions', -// `--user-data-dir=${userDir}`, -// ], -// extensionTestsEnv: { -// FIXTURE_NAME: 'multi-root', -// VSCODE_TEST: 'true', -// }, -// }); -// } +function runTestsWithMultiRoot( + vscodeExecutablePath: string, + userDir: string +): Promise { + return runTests({ + vscodeExecutablePath, + extensionDevelopmentPath, + extensionTestsPath: path.resolve(__dirname, 'multi-root'), + launchArgs: [ + path.resolve( + __dirname, + '../../test-fixtures/multi-root/multiple-project.code-workspace' + ), + '--disable-extensions', + `--user-data-dir=${userDir}`, + ], + extensionTestsEnv: { + FIXTURE_NAME: 'multi-root', + VSCODE_TEST: 'true', + }, + }); +} -// async function runTestsWithMultiProject( -// vscodeExecutablePath: string, -// userDir: string -// ): Promise { -// return runTests({ -// vscodeExecutablePath, -// extensionDevelopmentPath, -// extensionTestsPath: path.resolve(__dirname, 'multi-project'), -// launchArgs: [ -// path.resolve(__dirname, '../../test-fixtures/multi-project/'), -// '--disable-extensions', -// `--user-data-dir=${userDir}`, -// ], -// extensionTestsEnv: { -// FIXTURE_NAME: 'multi-project', -// VSCODE_TEST: 'true', -// }, -// }); -// } +function runTestsWithMultiProject( + vscodeExecutablePath: string, + userDir: string +): Promise { + return runTests({ + vscodeExecutablePath, + extensionDevelopmentPath, + extensionTestsPath: path.resolve(__dirname, 'multi-project'), + launchArgs: [ + path.resolve(__dirname, '../../test-fixtures/multi-project/'), + '--disable-extensions', + `--user-data-dir=${userDir}`, + ], + extensionTestsEnv: { + FIXTURE_NAME: 'multi-project', + VSCODE_TEST: 'true', + }, + }); +} async function main(): Promise { const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vscode-user')); @@ -105,17 +105,22 @@ async function main(): Promise { ); const vscodeExecutablePath = await downloadAndUnzipVSCode(VSCODE_VERSION); - runTestsWithGradle(vscodeExecutablePath, tmpDir) - // .then(() => runTestsWithMultiRoot(vscodeExecutablePath, tmpDir)) - // .then(() => runTestsWithMultiProject(vscodeExecutablePath, tmpDir)) - // .then(() => runTestsWithoutGradle(vscodeExecutablePath, tmpDir)) - .catch((err) => { - console.error('Error running tests:', err.message); + let hasErr = false; + + try { + await runTestsWithGradle(vscodeExecutablePath, tmpDir); + await runTestsWithMultiRoot(vscodeExecutablePath, tmpDir); + await runTestsWithMultiProject(vscodeExecutablePath, tmpDir); + await runTestsWithoutGradle(vscodeExecutablePath, tmpDir); + } catch (err) { + hasErr = true; + console.error('Error running tests:', err.message); + } finally { + fs.remove(tmpDir); + if (hasErr) { process.exit(1); - }) - .finally(() => { - fs.remove(tmpDir); - }); + } + } } main(); From 3b8e44aa217e717cf2a3b00a067476a39a904cf5 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Tue, 19 May 2020 19:31:07 +0100 Subject: [PATCH 09/11] Bump timeout --- extension/src/test/testUtil.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/src/test/testUtil.ts b/extension/src/test/testUtil.ts index aee14181c..fb361f6f5 100644 --- a/extension/src/test/testUtil.ts +++ b/extension/src/test/testUtil.ts @@ -23,7 +23,7 @@ export function createTestRunner(pattern: string) { // Create the mocha test const mocha = new Mocha({ ui: 'bdd', - timeout: 60000, + timeout: 90000, color: true, }); mocha.bail(true); From ea59cb2d6b9991fd669e845195030a5cec53d123 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Tue, 19 May 2020 19:35:13 +0100 Subject: [PATCH 10/11] Build dev --- extension/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/build.gradle b/extension/build.gradle index 22934aaf5..ee20487bd 100644 --- a/extension/build.gradle +++ b/extension/build.gradle @@ -187,4 +187,4 @@ task prepareForRelease() { dependsOn bundle, copyDocs } -build.finalizedBy buildProd, buildTest +build.finalizedBy buildDev, buildTest From 6b078fae37662993c5dd22de9a0e5ba32a9c99e9 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Tue, 19 May 2020 19:40:35 +0100 Subject: [PATCH 11/11] Remove task reference and reduce timeout --- extension/src/server.ts | 16 +++++++--------- extension/src/test/testUtil.ts | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/extension/src/server.ts b/extension/src/server.ts index f0ad0e8b8..62fc0c1ef 100644 --- a/extension/src/server.ts +++ b/extension/src/server.ts @@ -15,8 +15,7 @@ export interface ServerOptions { } export class GradleTasksServer implements vscode.Disposable { - private task?: vscode.Task; - private taskExecution?: Thenable; + private taskExecution?: vscode.TaskExecution; private _onReady: vscode.EventEmitter = new vscode.EventEmitter(); private _onStop: vscode.EventEmitter = new vscode.EventEmitter(); private isRestarting = false; @@ -42,7 +41,6 @@ export class GradleTasksServer implements vscode.Disposable { logger.info( localize('server.gradleServerStopped', 'Gradle server stopped') ); - this.task = undefined; this.taskExecution = undefined; this.showRestartMessage(); } @@ -58,16 +56,16 @@ export class GradleTasksServer implements vscode.Disposable { } else { this.port = await getPort(); const cwd = this.context.asAbsolutePath('lib'); - this.task = buildGradleServerTask(SERVER_TASK_NAME, cwd, [ + const task = buildGradleServerTask(SERVER_TASK_NAME, cwd, [ String(this.port), ]); logger.debug('Starting server'); - this.taskExecution = vscode.tasks.executeTask(this.task); + this.taskExecution = await vscode.tasks.executeTask(task); } } public isStarted(): boolean { - return this.task !== undefined; + return this.taskExecution !== undefined; } public async showRestartMessage(): Promise { @@ -89,7 +87,7 @@ export class GradleTasksServer implements vscode.Disposable { localize('server.gradleServerRestarting', 'Restarting gradle server') ); if (!this.isRestarting) { - if (this.task) { + if (this.taskExecution) { this.isRestarting = true; const disposable = vscode.tasks.onDidEndTaskProcess((event) => { if (event.execution.task.name === SERVER_TASK_NAME) { @@ -98,7 +96,7 @@ export class GradleTasksServer implements vscode.Disposable { this.start(); } }); - this.taskExecution?.then((execution) => execution.terminate()); + this.taskExecution?.terminate(); } else { this.start(); } @@ -113,7 +111,7 @@ export class GradleTasksServer implements vscode.Disposable { } public dispose(): void { - this.taskExecution?.then((execution) => execution.terminate()); + this.taskExecution?.terminate(); this._onReady.dispose(); this._onStop.dispose(); } diff --git a/extension/src/test/testUtil.ts b/extension/src/test/testUtil.ts index fb361f6f5..aee14181c 100644 --- a/extension/src/test/testUtil.ts +++ b/extension/src/test/testUtil.ts @@ -23,7 +23,7 @@ export function createTestRunner(pattern: string) { // Create the mocha test const mocha = new Mocha({ ui: 'bdd', - timeout: 90000, + timeout: 60000, color: true, }); mocha.bail(true);