From fd6e3cd0711b580cb03e8ff8951e9323fca1ec6e Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 25 Jun 2018 02:14:44 -0700 Subject: [PATCH 1/5] Add test for lsp-sample --- lsp-sample/.gitignore | 3 +- lsp-sample/.vscode/launch.json | 18 ++++++- lsp-sample/client/src/test/completion.test.ts | 15 ++++++ lsp-sample/client/src/test/helper.ts | 53 +++++++++++++++++++ lsp-sample/client/src/test/index.ts | 9 ++++ lsp-sample/client/testFixture/completion.txt | 0 lsp-sample/package.json | 3 +- lsp-sample/scripts/e2e.sh | 6 +++ 8 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 lsp-sample/client/src/test/completion.test.ts create mode 100644 lsp-sample/client/src/test/helper.ts create mode 100644 lsp-sample/client/src/test/index.ts create mode 100644 lsp-sample/client/testFixture/completion.txt create mode 100755 lsp-sample/scripts/e2e.sh diff --git a/lsp-sample/.gitignore b/lsp-sample/.gitignore index 4228f913..bf962da1 100644 --- a/lsp-sample/.gitignore +++ b/lsp-sample/.gitignore @@ -1,3 +1,4 @@ out node_modules -client/server \ No newline at end of file +client/server +.vscode-test \ No newline at end of file diff --git a/lsp-sample/.vscode/launch.json b/lsp-sample/.vscode/launch.json index 2f5f3df9..827e2b97 100644 --- a/lsp-sample/.vscode/launch.json +++ b/lsp-sample/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "name": "Launch Client", "runtimeExecutable": "${execPath}", - "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], + "args": ["--extensionDevelopmentPath=${workspaceRoot}"], "stopOnEntry": false, "sourceMaps": true, "outFiles": ["${workspaceRoot}/client/out/**/*.js"], @@ -22,6 +22,20 @@ "port": 6009, "sourceMaps": true, "outFiles": ["${workspaceRoot}/server/out/**/*.js"] + }, + { + "name": "Language E2E Test", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--extensionDevelopmentPath=${workspaceRoot}", + "--extensionTestsPath=${workspaceRoot}/client/out/test", + "${workspaceRoot}/client/testFixture" + ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": ["${workspaceRoot}/client/out/test/**/*.js"] } ] -} \ No newline at end of file +} diff --git a/lsp-sample/client/src/test/completion.test.ts b/lsp-sample/client/src/test/completion.test.ts new file mode 100644 index 00000000..fc6b81d5 --- /dev/null +++ b/lsp-sample/client/src/test/completion.test.ts @@ -0,0 +1,15 @@ +import * as vscode from 'vscode'; +import { testCompletion, getDocUri } from './helper'; + +describe('Should do completion', () => { + const docUri = getDocUri('completion.txt') + + it('Completes JS/TS', async () => { + await testCompletion(docUri, new vscode.Position(0, 0), { + items: [ + { label: 'JavaScript', kind: vscode.CompletionItemKind.Text }, + { label: 'TypeScript', kind: vscode.CompletionItemKind.Text } + ] + }); + }) +}) diff --git a/lsp-sample/client/src/test/helper.ts b/lsp-sample/client/src/test/helper.ts new file mode 100644 index 00000000..a5d69bbc --- /dev/null +++ b/lsp-sample/client/src/test/helper.ts @@ -0,0 +1,53 @@ +import * as vscode from 'vscode' +import * as path from 'path' +import * as assert from 'assert' + +export let doc: vscode.TextDocument +export let editor: vscode.TextEditor +export let documentEol: string +export let platformEol: string + +export async function activate(docUri: vscode.Uri) { + const ext = vscode.extensions.getExtension('vscode.lsp-sample') + await ext.activate(); + try { + doc = await vscode.workspace.openTextDocument(docUri) + editor = await vscode.window.showTextDocument(doc) + await sleep(2000) // Wait for server activation + } catch (e) { + console.error(e) + } +} + +async function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +export const getDocPath = (p: string) => { + return path.resolve(__dirname, '../../testFixture', p) +} +export const getDocUri = (p: string) => { + return vscode.Uri.file(getDocPath(p)) +} + +export async function setTestContent(content: string): Promise { + const all = new vscode.Range(doc.positionAt(0), doc.positionAt(doc.getText().length)) + return editor.edit(eb => eb.replace(all, content)) +} + +export async function testCompletion(docUri: vscode.Uri, position: vscode.Position, expectedCompletionList: vscode.CompletionList) { + await activate(docUri) + + const result = (await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + docUri, + position + )) as vscode.CompletionList + + assert.equal(result.items.length, expectedCompletionList.items.length); + expectedCompletionList.items.forEach((expectedItem, i) => { + const resulItem = result.items[i] + assert.equal(resulItem.label, expectedItem.label) + assert.equal(resulItem.kind, expectedItem.kind) + }) +} \ No newline at end of file diff --git a/lsp-sample/client/src/test/index.ts b/lsp-sample/client/src/test/index.ts new file mode 100644 index 00000000..c99d1187 --- /dev/null +++ b/lsp-sample/client/src/test/index.ts @@ -0,0 +1,9 @@ +import * as testRunner from 'vscode/lib/testrunner'; + +testRunner.configure({ + ui: 'bdd', + useColors: true, + timeout: 100000 +}); + +module.exports = testRunner; \ No newline at end of file diff --git a/lsp-sample/client/testFixture/completion.txt b/lsp-sample/client/testFixture/completion.txt new file mode 100644 index 00000000..e69de29b diff --git a/lsp-sample/package.json b/lsp-sample/package.json index c78e3343..65938a72 100644 --- a/lsp-sample/package.json +++ b/lsp-sample/package.json @@ -52,7 +52,8 @@ "watch:client": "tsc -w -p ./client/tsconfig.json", "watch:server": "tsc -w -p ./server/tsconfig.json", "compile": "npm run compile:client && npm run compile:server", - "postinstall": "cd client && npm install && cd ../server && npm install && cd .." + "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", + "test": "sh ./script/e2e.sh" }, "devDependencies": { "@types/mocha": "^5.2.0", diff --git a/lsp-sample/scripts/e2e.sh b/lsp-sample/scripts/e2e.sh new file mode 100755 index 00000000..3e930891 --- /dev/null +++ b/lsp-sample/scripts/e2e.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export CODE_TESTS_PATH="$(pwd)/client/out/test" +export CODE_TESTS_WORKSPACE="$(pwd)/client/testFixture" + +node "$(pwd)/client/node_modules/vscode/bin/test" \ No newline at end of file From 4b9fa86007e0ae2109a0031fecfdfaace14ada6b Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 25 Jun 2018 07:45:44 -0700 Subject: [PATCH 2/5] Diagnostics too --- lsp-sample/client/src/test/completion.test.ts | 8 +++--- .../client/src/test/diagnostics.test.ts | 20 +++++++++++++++ lsp-sample/client/src/test/helper.ts | 25 +++++++++++++++---- lsp-sample/client/testFixture/diagnostics.txt | 1 + 4 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 lsp-sample/client/src/test/diagnostics.test.ts create mode 100644 lsp-sample/client/testFixture/diagnostics.txt diff --git a/lsp-sample/client/src/test/completion.test.ts b/lsp-sample/client/src/test/completion.test.ts index fc6b81d5..2458f728 100644 --- a/lsp-sample/client/src/test/completion.test.ts +++ b/lsp-sample/client/src/test/completion.test.ts @@ -1,15 +1,15 @@ -import * as vscode from 'vscode'; -import { testCompletion, getDocUri } from './helper'; +import * as vscode from 'vscode' +import { testCompletion, getDocUri } from './helper' describe('Should do completion', () => { const docUri = getDocUri('completion.txt') - it('Completes JS/TS', async () => { + it('Completes JS/TS in txt file', async () => { await testCompletion(docUri, new vscode.Position(0, 0), { items: [ { label: 'JavaScript', kind: vscode.CompletionItemKind.Text }, { label: 'TypeScript', kind: vscode.CompletionItemKind.Text } ] - }); + }) }) }) diff --git a/lsp-sample/client/src/test/diagnostics.test.ts b/lsp-sample/client/src/test/diagnostics.test.ts new file mode 100644 index 00000000..cdb099cd --- /dev/null +++ b/lsp-sample/client/src/test/diagnostics.test.ts @@ -0,0 +1,20 @@ +import * as vscode from 'vscode' +import { testDiagnostics, getDocUri } from './helper' + +describe('Should get diagnostics', () => { + const docUri = getDocUri('diagnostics.txt') + + it('Diagnoses uppercase texts', async () => { + await testDiagnostics(docUri, [ + { message: 'ANY is all uppercase.', range: toRange(0, 0, 0, 3), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, + { message: 'ANY is all uppercase.', range: toRange(0, 14, 0, 17), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, + { message: 'OS is all uppercase.', range: toRange(0, 18, 0, 20), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' } + ]) + }) +}) + +function toRange(sLine: number, sChar: number, eLine: number, eChar: number) { + const start = new vscode.Position(sLine, sChar) + const end = new vscode.Position(eLine, eChar) + return new vscode.Range(start, end) +} \ No newline at end of file diff --git a/lsp-sample/client/src/test/helper.ts b/lsp-sample/client/src/test/helper.ts index a5d69bbc..16cc63d2 100644 --- a/lsp-sample/client/src/test/helper.ts +++ b/lsp-sample/client/src/test/helper.ts @@ -38,16 +38,31 @@ export async function setTestContent(content: string): Promise { export async function testCompletion(docUri: vscode.Uri, position: vscode.Position, expectedCompletionList: vscode.CompletionList) { await activate(docUri) - const result = (await vscode.commands.executeCommand( + const actualCompletionList = (await vscode.commands.executeCommand( 'vscode.executeCompletionItemProvider', docUri, position )) as vscode.CompletionList - assert.equal(result.items.length, expectedCompletionList.items.length); + assert.equal(actualCompletionList.items.length, expectedCompletionList.items.length); expectedCompletionList.items.forEach((expectedItem, i) => { - const resulItem = result.items[i] - assert.equal(resulItem.label, expectedItem.label) - assert.equal(resulItem.kind, expectedItem.kind) + const actualItem = actualCompletionList.items[i] + assert.equal(actualItem.label, expectedItem.label) + assert.equal(actualItem.kind, expectedItem.kind) + }) +} + +export async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) { + await activate(docUri) + + const actualDiagnostics = vscode.languages.getDiagnostics(docUri); + + assert.equal(actualDiagnostics.length, expectedDiagnostics.length); + + expectedDiagnostics.forEach((expectedDiagnostic, i) => { + const actualDiagnostic = actualDiagnostics[i] + assert.equal(actualDiagnostic.message, expectedDiagnostic.message) + assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range) + assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity) }) } \ No newline at end of file diff --git a/lsp-sample/client/testFixture/diagnostics.txt b/lsp-sample/client/testFixture/diagnostics.txt new file mode 100644 index 00000000..d910cfb5 --- /dev/null +++ b/lsp-sample/client/testFixture/diagnostics.txt @@ -0,0 +1 @@ +ANY browsers, ANY OS. \ No newline at end of file From 59773553a514e1d985470b66c61153e9189c1a5f Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 25 Jun 2018 22:03:50 -0700 Subject: [PATCH 3/5] Refactor tests --- lsp-sample/client/src/test/completion.test.ts | 20 ++++++++++- .../client/src/test/diagnostics.test.ts | 20 +++++++++-- lsp-sample/client/src/test/helper.ts | 33 ------------------- 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/lsp-sample/client/src/test/completion.test.ts b/lsp-sample/client/src/test/completion.test.ts index 2458f728..a9ed0b39 100644 --- a/lsp-sample/client/src/test/completion.test.ts +++ b/lsp-sample/client/src/test/completion.test.ts @@ -1,5 +1,6 @@ import * as vscode from 'vscode' -import { testCompletion, getDocUri } from './helper' +import * as assert from 'assert' +import { getDocUri, activate } from './helper' describe('Should do completion', () => { const docUri = getDocUri('completion.txt') @@ -13,3 +14,20 @@ describe('Should do completion', () => { }) }) }) + +async function testCompletion(docUri: vscode.Uri, position: vscode.Position, expectedCompletionList: vscode.CompletionList) { + await activate(docUri) + + const actualCompletionList = (await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + docUri, + position + )) as vscode.CompletionList + + assert.equal(actualCompletionList.items.length, expectedCompletionList.items.length); + expectedCompletionList.items.forEach((expectedItem, i) => { + const actualItem = actualCompletionList.items[i] + assert.equal(actualItem.label, expectedItem.label) + assert.equal(actualItem.kind, expectedItem.kind) + }) +} diff --git a/lsp-sample/client/src/test/diagnostics.test.ts b/lsp-sample/client/src/test/diagnostics.test.ts index cdb099cd..c0e3d930 100644 --- a/lsp-sample/client/src/test/diagnostics.test.ts +++ b/lsp-sample/client/src/test/diagnostics.test.ts @@ -1,5 +1,6 @@ import * as vscode from 'vscode' -import { testDiagnostics, getDocUri } from './helper' +import * as assert from 'assert' +import { getDocUri, activate } from './helper' describe('Should get diagnostics', () => { const docUri = getDocUri('diagnostics.txt') @@ -17,4 +18,19 @@ function toRange(sLine: number, sChar: number, eLine: number, eChar: number) { const start = new vscode.Position(sLine, sChar) const end = new vscode.Position(eLine, eChar) return new vscode.Range(start, end) -} \ No newline at end of file +} + +async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) { + await activate(docUri) + + const actualDiagnostics = vscode.languages.getDiagnostics(docUri); + + assert.equal(actualDiagnostics.length, expectedDiagnostics.length); + + expectedDiagnostics.forEach((expectedDiagnostic, i) => { + const actualDiagnostic = actualDiagnostics[i] + assert.equal(actualDiagnostic.message, expectedDiagnostic.message) + assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range) + assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity) + }) +} \ No newline at end of file diff --git a/lsp-sample/client/src/test/helper.ts b/lsp-sample/client/src/test/helper.ts index 16cc63d2..0539b91f 100644 --- a/lsp-sample/client/src/test/helper.ts +++ b/lsp-sample/client/src/test/helper.ts @@ -1,6 +1,5 @@ import * as vscode from 'vscode' import * as path from 'path' -import * as assert from 'assert' export let doc: vscode.TextDocument export let editor: vscode.TextEditor @@ -34,35 +33,3 @@ export async function setTestContent(content: string): Promise { const all = new vscode.Range(doc.positionAt(0), doc.positionAt(doc.getText().length)) return editor.edit(eb => eb.replace(all, content)) } - -export async function testCompletion(docUri: vscode.Uri, position: vscode.Position, expectedCompletionList: vscode.CompletionList) { - await activate(docUri) - - const actualCompletionList = (await vscode.commands.executeCommand( - 'vscode.executeCompletionItemProvider', - docUri, - position - )) as vscode.CompletionList - - assert.equal(actualCompletionList.items.length, expectedCompletionList.items.length); - expectedCompletionList.items.forEach((expectedItem, i) => { - const actualItem = actualCompletionList.items[i] - assert.equal(actualItem.label, expectedItem.label) - assert.equal(actualItem.kind, expectedItem.kind) - }) -} - -export async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) { - await activate(docUri) - - const actualDiagnostics = vscode.languages.getDiagnostics(docUri); - - assert.equal(actualDiagnostics.length, expectedDiagnostics.length); - - expectedDiagnostics.forEach((expectedDiagnostic, i) => { - const actualDiagnostic = actualDiagnostics[i] - assert.equal(actualDiagnostic.message, expectedDiagnostic.message) - assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range) - assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity) - }) -} \ No newline at end of file From a41fb59a0483db947dcf4488432738c058854eab Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 25 Jun 2018 22:04:05 -0700 Subject: [PATCH 4/5] Deps and minor script fix --- lsp-sample/client/package-lock.json | 598 ++++++++++++++-------------- lsp-sample/package.json | 2 +- lsp-sample/server/package-lock.json | 8 +- lsp-sample/server/package.json | 3 +- 4 files changed, 305 insertions(+), 306 deletions(-) diff --git a/lsp-sample/client/package-lock.json b/lsp-sample/client/package-lock.json index 6f035181..b963632d 100644 --- a/lsp-sample/client/package-lock.json +++ b/lsp-sample/client/package-lock.json @@ -1,5 +1,5 @@ { - "name": "lsp-mulit-root-sample-client-part", + "name": "lsp-sample-client", "version": "0.0.1", "lockfileVersion": 1, "requires": true, @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ansi-cyan": { @@ -41,8 +41,8 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "requires": { - "arr-flatten": "1.1.0", - "array-slice": "0.2.3" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" } }, "arr-flatten": { @@ -70,7 +70,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -124,7 +124,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -132,7 +132,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -140,7 +140,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -149,9 +149,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-stdout": { @@ -194,9 +194,9 @@ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, "co": { @@ -209,7 +209,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -237,7 +237,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -253,7 +253,7 @@ "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "delayed-stream": { @@ -276,10 +276,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ecc-jsbn": { @@ -288,7 +288,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "end-of-stream": { @@ -296,7 +296,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "escape-string-regexp": { @@ -309,13 +309,13 @@ "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "expand-brackets": { @@ -323,7 +323,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -331,7 +331,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.4" + "fill-range": "^2.1.0" } }, "extend": { @@ -344,7 +344,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "requires": { - "kind-of": "1.1.0" + "kind-of": "^1.1.0" } }, "extglob": { @@ -352,7 +352,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" }, "dependencies": { "is-extglob": { @@ -382,7 +382,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "filename-regex": { @@ -395,11 +395,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "first-chunk-stream": { @@ -417,7 +417,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -430,9 +430,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "from": { @@ -450,10 +450,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "getpass": { @@ -461,7 +461,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -469,12 +469,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -482,8 +482,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -491,7 +491,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -504,7 +504,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -514,8 +514,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "glob-stream": { @@ -523,14 +523,14 @@ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" }, "dependencies": { "glob": { @@ -538,11 +538,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "isarray": { @@ -555,10 +555,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -571,8 +571,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -592,9 +592,9 @@ "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz", "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", "requires": { - "deep-assign": "1.0.0", - "stat-mode": "0.2.2", - "through2": "2.0.3" + "deep-assign": "^1.0.0", + "stat-mode": "^0.2.0", + "through2": "^2.0.0" } }, "gulp-filter": { @@ -602,9 +602,9 @@ "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz", "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", "requires": { - "multimatch": "2.1.0", - "plugin-error": "0.1.2", - "streamfilter": "1.0.7" + "multimatch": "^2.0.0", + "plugin-error": "^0.1.2", + "streamfilter": "^1.0.5" } }, "gulp-gunzip": { @@ -612,8 +612,8 @@ "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz", "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", "requires": { - "through2": "0.6.5", - "vinyl": "0.4.6" + "through2": "~0.6.5", + "vinyl": "~0.4.6" }, "dependencies": { "isarray": { @@ -626,10 +626,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -642,8 +642,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -653,11 +653,11 @@ "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.0.tgz", "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", "requires": { - "event-stream": "3.3.4", - "node.extend": "1.1.6", - "request": "2.87.0", - "through2": "2.0.3", - "vinyl": "2.1.0" + "event-stream": "^3.3.4", + "node.extend": "^1.1.2", + "request": "^2.79.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" }, "dependencies": { "clone": { @@ -675,12 +675,12 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -690,11 +690,11 @@ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "requires": { - "convert-source-map": "1.5.1", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "clone": { @@ -712,8 +712,8 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -724,10 +724,10 @@ "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz", "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", "requires": { - "event-stream": "3.3.4", - "mkdirp": "0.5.1", - "queue": "3.1.0", - "vinyl-fs": "2.4.4" + "event-stream": "^3.3.1", + "mkdirp": "^0.5.1", + "queue": "^3.1.0", + "vinyl-fs": "^2.4.3" } }, "gulp-untar": { @@ -735,11 +735,11 @@ "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz", "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", "requires": { - "event-stream": "3.3.4", - "streamifier": "0.1.1", - "tar": "2.2.1", - "through2": "2.0.3", - "vinyl": "1.2.0" + "event-stream": "~3.3.4", + "streamifier": "~0.1.1", + "tar": "^2.2.1", + "through2": "~2.0.3", + "vinyl": "^1.2.0" }, "dependencies": { "clone": { @@ -757,8 +757,8 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -769,13 +769,13 @@ "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.0.tgz", "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", "requires": { - "event-stream": "3.3.4", - "queue": "4.4.2", - "through2": "2.0.3", - "vinyl": "2.1.0", - "vinyl-fs": "2.4.4", - "yauzl": "2.9.1", - "yazl": "2.4.3" + "event-stream": "^3.3.1", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^2.0.0", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" }, "dependencies": { "clone": { @@ -793,7 +793,7 @@ "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "vinyl": { @@ -801,12 +801,12 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -821,8 +821,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-flag": { @@ -840,9 +840,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -850,8 +850,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -879,7 +879,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -897,7 +897,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "is-number": { @@ -905,7 +905,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -913,7 +913,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -992,7 +992,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -1026,7 +1026,7 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lodash.isequal": { @@ -1049,7 +1049,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.1" } }, "micromatch": { @@ -1057,19 +1057,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" }, "dependencies": { "arr-diff": { @@ -1077,7 +1077,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "is-extglob": { @@ -1090,7 +1090,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "kind-of": { @@ -1098,7 +1098,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1113,7 +1113,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "minimatch": { @@ -1121,7 +1121,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1164,10 +1164,10 @@ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "node.extend": { @@ -1175,7 +1175,7 @@ "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", "requires": { - "is": "3.2.1" + "is": "^3.1.0" } }, "normalize-path": { @@ -1183,7 +1183,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "oauth-sign": { @@ -1201,8 +1201,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -1210,7 +1210,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "ordered-read-streams": { @@ -1218,8 +1218,8 @@ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.6" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "parse-glob": { @@ -1227,10 +1227,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -1243,7 +1243,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -1263,7 +1263,7 @@ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pend": { @@ -1281,11 +1281,11 @@ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "requires": { - "ansi-cyan": "0.1.1", - "ansi-red": "0.1.1", - "arr-diff": "1.1.0", - "arr-union": "2.1.0", - "extend-shallow": "1.1.4" + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" } }, "preserve": { @@ -1318,7 +1318,7 @@ "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "randomatic": { @@ -1326,9 +1326,9 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -1348,13 +1348,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "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" } }, "regex-cache": { @@ -1362,7 +1362,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -1390,26 +1390,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "requires-port": { @@ -1422,7 +1422,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -1445,8 +1445,8 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "requires": { - "buffer-from": "1.1.0", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "split": { @@ -1454,7 +1454,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "requires": { - "through": "2.3.8" + "through": "2" } }, "sshpk": { @@ -1462,14 +1462,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "stat-mode": { @@ -1482,7 +1482,7 @@ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-shift": { @@ -1495,7 +1495,7 @@ "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.2" } }, "streamifier": { @@ -1508,7 +1508,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "strip-bom": { @@ -1516,7 +1516,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-bom-stream": { @@ -1524,8 +1524,8 @@ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" } }, "supports-color": { @@ -1533,7 +1533,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "tar": { @@ -1541,9 +1541,9 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "through": { @@ -1556,8 +1556,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "through2-filter": { @@ -1565,8 +1565,8 @@ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, "to-absolute-glob": { @@ -1574,7 +1574,7 @@ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" }, "dependencies": { "extend-shallow": { @@ -1582,7 +1582,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1592,7 +1592,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -1600,7 +1600,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -1614,8 +1614,8 @@ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } }, "url-parse": { @@ -1623,8 +1623,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" } }, "util-deprecate": { @@ -1647,9 +1647,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vinyl": { @@ -1657,8 +1657,8 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } }, "vinyl-fs": { @@ -1666,23 +1666,23 @@ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "requires": { - "duplexify": "3.6.0", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.6", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "clone": { @@ -1700,8 +1700,8 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1712,8 +1712,8 @@ "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", "requires": { - "through2": "2.0.3", - "vinyl": "0.4.6" + "through2": "^2.0.3", + "vinyl": "^0.4.3" } }, "vscode": { @@ -1721,20 +1721,20 @@ "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.18.tgz", "integrity": "sha512-SyDw4qFwZ+WthZX7RWp71PNiWLF7VhpM65j2oryY/6jtSORd8qH6J8vclwWZJ6Jvu0EH7JamO2RWNfBfsMR9Zw==", "requires": { - "glob": "7.1.2", - "gulp-chmod": "2.0.0", - "gulp-filter": "5.1.0", + "glob": "^7.1.2", + "gulp-chmod": "^2.0.0", + "gulp-filter": "^5.0.1", "gulp-gunzip": "1.0.0", - "gulp-remote-src-vscode": "0.5.0", - "gulp-symdest": "1.1.0", - "gulp-untar": "0.0.7", - "gulp-vinyl-zip": "2.1.0", - "mocha": "4.1.0", - "request": "2.87.0", - "semver": "5.5.0", - "source-map-support": "0.5.6", - "url-parse": "1.4.0", - "vinyl-source-stream": "1.1.2" + "gulp-remote-src-vscode": "^0.5.0", + "gulp-symdest": "^1.1.0", + "gulp-untar": "^0.0.7", + "gulp-vinyl-zip": "^2.1.0", + "mocha": "^4.0.1", + "request": "^2.83.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "url-parse": "^1.1.9", + "vinyl-source-stream": "^1.1.0" } }, "vscode-jsonrpc": { @@ -1747,7 +1747,7 @@ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.1.4.tgz", "integrity": "sha512-V2fWd+2vm8wmShjgciBxovMzSXMzBFtQo2R6OIW5kJIynds6x0J3SwMNa3QKAmhsCDy3WmBwnplBGtyGNNnvPA==", "requires": { - "vscode-languageserver-protocol": "3.7.2" + "vscode-languageserver-protocol": "^3.7.2" } }, "vscode-languageserver-protocol": { @@ -1755,8 +1755,8 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.7.2.tgz", "integrity": "sha512-VVJwIA/FPl/FnVtrns0FPK6TLi/ET7n1Yo6tCrm6aG7+yAVwIGWdpTmKE+nbP8wEMMbHCkIabk63IJvfz2HNRg==", "requires": { - "vscode-jsonrpc": "3.6.2", - "vscode-languageserver-types": "3.7.2" + "vscode-jsonrpc": "^3.6.2", + "vscode-languageserver-types": "^3.7.2" } }, "vscode-languageserver-types": { @@ -1779,8 +1779,8 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" } }, "yazl": { @@ -1788,7 +1788,7 @@ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz", "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=", "requires": { - "buffer-crc32": "0.2.13" + "buffer-crc32": "~0.2.3" } } } diff --git a/lsp-sample/package.json b/lsp-sample/package.json index 65938a72..c5350460 100644 --- a/lsp-sample/package.json +++ b/lsp-sample/package.json @@ -53,7 +53,7 @@ "watch:server": "tsc -w -p ./server/tsconfig.json", "compile": "npm run compile:client && npm run compile:server", "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", - "test": "sh ./script/e2e.sh" + "test": "sh ./scripts/e2e.sh" }, "devDependencies": { "@types/mocha": "^5.2.0", diff --git a/lsp-sample/server/package-lock.json b/lsp-sample/server/package-lock.json index 77098ccb..af192e81 100644 --- a/lsp-sample/server/package-lock.json +++ b/lsp-sample/server/package-lock.json @@ -14,8 +14,8 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-4.1.3.tgz", "integrity": "sha512-D6p3q9x8QPtPLRUO5d2UKizjFYfg8zLVJqKoMpAaom8Wuhl1oKRCjeLg+Cp4mgPeCwR71wbgX2BM/jL51ni/0g==", "requires": { - "vscode-languageserver-protocol": "3.7.2", - "vscode-uri": "1.0.3" + "vscode-languageserver-protocol": "^3.7.2", + "vscode-uri": "^1.0.1" } }, "vscode-languageserver-protocol": { @@ -23,8 +23,8 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.7.2.tgz", "integrity": "sha512-VVJwIA/FPl/FnVtrns0FPK6TLi/ET7n1Yo6tCrm6aG7+yAVwIGWdpTmKE+nbP8wEMMbHCkIabk63IJvfz2HNRg==", "requires": { - "vscode-jsonrpc": "3.6.2", - "vscode-languageserver-types": "3.7.2" + "vscode-jsonrpc": "^3.6.2", + "vscode-languageserver-types": "^3.7.2" } }, "vscode-languageserver-types": { diff --git a/lsp-sample/server/package.json b/lsp-sample/server/package.json index 615b623b..1e2de173 100644 --- a/lsp-sample/server/package.json +++ b/lsp-sample/server/package.json @@ -14,6 +14,5 @@ "dependencies": { "vscode-languageserver": "^4.1.3" }, - "scripts": { - } + "scripts": {} } From 7aa47b4f35b87725012d2f74b7cc61c8ef532686 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 26 Jun 2018 00:25:27 -0700 Subject: [PATCH 5/5] License headers and more comments --- lsp-sample/.vscode/launch.json | 2 +- lsp-sample/client/src/test/completion.test.ts | 7 +++++++ lsp-sample/client/src/test/diagnostics.test.ts | 6 ++++++ lsp-sample/client/src/test/helper.ts | 10 ++++++++++ lsp-sample/client/src/test/index.ts | 6 ++++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lsp-sample/.vscode/launch.json b/lsp-sample/.vscode/launch.json index 827e2b97..fc108bb7 100644 --- a/lsp-sample/.vscode/launch.json +++ b/lsp-sample/.vscode/launch.json @@ -24,7 +24,7 @@ "outFiles": ["${workspaceRoot}/server/out/**/*.js"] }, { - "name": "Language E2E Test", + "name": "Language Server E2E Test", "type": "extensionHost", "request": "launch", "runtimeExecutable": "${execPath}", diff --git a/lsp-sample/client/src/test/completion.test.ts b/lsp-sample/client/src/test/completion.test.ts index a9ed0b39..8a562315 100644 --- a/lsp-sample/client/src/test/completion.test.ts +++ b/lsp-sample/client/src/test/completion.test.ts @@ -1,3 +1,9 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +'use strict'; + import * as vscode from 'vscode' import * as assert from 'assert' import { getDocUri, activate } from './helper' @@ -18,6 +24,7 @@ describe('Should do completion', () => { async function testCompletion(docUri: vscode.Uri, position: vscode.Position, expectedCompletionList: vscode.CompletionList) { await activate(docUri) + // Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion const actualCompletionList = (await vscode.commands.executeCommand( 'vscode.executeCompletionItemProvider', docUri, diff --git a/lsp-sample/client/src/test/diagnostics.test.ts b/lsp-sample/client/src/test/diagnostics.test.ts index c0e3d930..1eee4990 100644 --- a/lsp-sample/client/src/test/diagnostics.test.ts +++ b/lsp-sample/client/src/test/diagnostics.test.ts @@ -1,3 +1,9 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +'use strict'; + import * as vscode from 'vscode' import * as assert from 'assert' import { getDocUri, activate } from './helper' diff --git a/lsp-sample/client/src/test/helper.ts b/lsp-sample/client/src/test/helper.ts index 0539b91f..fea53008 100644 --- a/lsp-sample/client/src/test/helper.ts +++ b/lsp-sample/client/src/test/helper.ts @@ -1,3 +1,9 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +'use strict'; + import * as vscode from 'vscode' import * as path from 'path' @@ -6,7 +12,11 @@ export let editor: vscode.TextEditor export let documentEol: string export let platformEol: string +/** + * Activates the vscode.lsp-sample extension + */ export async function activate(docUri: vscode.Uri) { + // The extensionId is `publisher.name` from package.json const ext = vscode.extensions.getExtension('vscode.lsp-sample') await ext.activate(); try { diff --git a/lsp-sample/client/src/test/index.ts b/lsp-sample/client/src/test/index.ts index c99d1187..7fedf55f 100644 --- a/lsp-sample/client/src/test/index.ts +++ b/lsp-sample/client/src/test/index.ts @@ -1,3 +1,9 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +'use strict'; + import * as testRunner from 'vscode/lib/testrunner'; testRunner.configure({