diff --git a/.vscode/launch.json b/.vscode/launch.json index 53fe86e85acd7e15db5494c61d787f97fa64a57b..d7eea5b9afd4998f3862199550d8aeb25eaf53ad 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,24 +3,15 @@ "version": "0.2.0", "configurations": [ { + "name": "Launch Extension", "type": "extensionHost", "request": "launch", - "name": "Launch Client", "runtimeExecutable": "${execPath}", - "args": ["--extensionDevelopmentPath=${workspaceRoot}"], - "outFiles": ["${workspaceRoot}/client/out/**/*.js"], - "preLaunchTask": { - "type": "npm", - "script": "watch" - } - }, - { - "type": "node", - "request": "attach", - "name": "Attach to Server", - "port": 6009, - "restart": true, - "outFiles": ["${workspaceRoot}/server/out/**/*.js"] + "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--debug" ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": ["${workspaceRoot}/out/src"], + "preLaunchTask": "compile" }, { "name": "Language Server E2E Test", @@ -29,16 +20,10 @@ "runtimeExecutable": "${execPath}", "args": [ "--extensionDevelopmentPath=${workspaceRoot}", - "--extensionTestsPath=${workspaceRoot}/client/out/test/index", - "${workspaceRoot}/client/testFixture" + "--extensionTestsPath=${workspaceRoot}/out/test/index", + "${workspaceRoot}/testFixture" ], - "outFiles": ["${workspaceRoot}/client/out/test/**/*.js"] + "outFiles": ["${workspaceRoot}/out/test/**/*.js"] } ], - "compounds": [ - { - "name": "Client + Server", - "configurations": ["Launch Client", "Attach to Server"] - } - ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 5efd8048880a1897e9014a322538e00db30def48..31bfc59960e862e145465cf055859a78d4888ff0 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,6 +1,40 @@ { "version": "2.0.0", + "command": "npm", "tasks": [ + { + "label": "compile", + // we run the custom script "compile" as defined in package.json + "args": [ + "run", + "compile", + "--loglevel", + "silent" + ], + // The tsc compiler is started in watching mode + "isBackground": true, + // use the standard tsc in watch mode problem matcher to find compile problems in the output. + "problemMatcher": "$tsc-watch", + "group": { + "kind": "build", + "isDefault": true + }, + + }, + { + "label": "build-server", + // we run the custom script "compile" as defined in package.json + "args": [ + "run", + "build-server", + "--loglevel", + "silent" + ], + // The tsc compiler is started in watching mode + "isBackground": false + }, + + { "type": "npm", "script": "compile", diff --git a/README.md b/README.md index 8e579a7f929c22dcebf979444eb29d878bf89995..757df35f7a653ab3628751c8835ff4d3eb8b248b 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ Please note that user settings overwrite workspace settings. ## Future plans - Linter Support (via Server, is still in development by Mircosoft https://microsoft.github.io/language-server-protocol/specifications/specification-3-16/) - Quickfix support aká Code Completion -- Make startup time faster - Switch to Java Server ## Release Notes diff --git a/client/package-lock.json b/client/package-lock.json deleted file mode 100644 index 123e30e9b1c0c75d1857b69af010e63d76e8de66..0000000000000000000000000000000000000000 --- a/client/package-lock.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "name": "lsp-b-client", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/vscode": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.43.0.tgz", - "integrity": "sha512-kIaR9qzd80rJOxePKpCB/mdy00mz8Apt2QA5Y6rdrKFn13QNFNeP3Hzmsf37Bwh/3cS7QjtAeGSK7wSqAU0sYQ==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "vscode-jsonrpc": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", - "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" - }, - "vscode-languageclient": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", - "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", - "requires": { - "semver": "^6.3.0", - "vscode-languageserver-protocol": "^3.15.3" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "vscode-languageserver-protocol": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", - "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", - "requires": { - "vscode-jsonrpc": "^5.0.1", - "vscode-languageserver-types": "3.15.1" - } - }, - "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" - }, - "vscode-test": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz", - "integrity": "sha512-LddukcBiSU2FVTDr3c1D8lwkiOvwlJdDL2hqVbn6gIz+rpTqUCkMZSKYm94Y1v0WXlHSDQBsXyY+tchWQgGVsw==", - "dev": true, - "requires": { - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.4", - "rimraf": "^2.6.3" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/client/package.json b/client/package.json deleted file mode 100644 index 867e8599d15a5a038f91b387755a297226a30b2b..0000000000000000000000000000000000000000 --- a/client/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "lsp-b-client", - "description": "client part of the language pack", - "author": "Sebastian Stock", - "license": "MIT", - "version": "0.0.1", - "publisher": "SeeBasTStick", - "repository": { - "type": "git", - "url": "https://github.com/hhu-stups/b-language-extension" - }, - "engines": { - "vscode": "^1.43.0" - }, - "dependencies": { - "vscode-languageclient": "^6.1.3" - }, - "devDependencies": { - "@types/vscode": "1.43.0", - "vscode-test": "^1.3.0" - } -} diff --git a/client/src/test/completion.test.ts b/client/src/test/completion.test.ts deleted file mode 100644 index 476629e4d4ccde53caa42de270716b1c8eb7ed44..0000000000000000000000000000000000000000 --- a/client/src/test/completion.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -import * as vscode from 'vscode'; -import * as assert from 'assert'; -import { getDocUri, activate } from './helper'; - -suite('Should do completion', () => { - const docUri = getDocUri('completion.txt'); - - test('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 } - ] - }); - }); -}); - - -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, - position - )) as vscode.CompletionList; - - assert.ok(actualCompletionList.items.length >= 2); - 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/client/src/test/diagnostics.test.ts b/client/src/test/diagnostics.test.ts deleted file mode 100644 index 1aa8a36f50b8d215b3c1734f7a638499f03beb54..0000000000000000000000000000000000000000 --- a/client/src/test/diagnostics.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -import * as vscode from 'vscode'; -import * as assert from 'assert'; -import { getDocUri, activate } from './helper'; - -suite('Should get diagnostics', () => { - const docUri = getDocUri('diagnostics.txt'); - - test('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); -} - -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/client/src/test/helper.ts b/client/src/test/helper.ts deleted file mode 100644 index 6e6724d37440d772ced5eb02826a1ab5660be47a..0000000000000000000000000000000000000000 --- a/client/src/test/helper.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -import * as vscode from 'vscode'; -import * as path from 'path'; - -export let doc: vscode.TextDocument; -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-samples.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<boolean> { - const all = new vscode.Range( - doc.positionAt(0), - doc.positionAt(doc.getText().length) - ); - return editor.edit(eb => eb.replace(all, content)); -} diff --git a/client/src/test/index.ts b/client/src/test/index.ts deleted file mode 100644 index 9e1060ed655d391e7b16dd9dcc47d738e8f410b7..0000000000000000000000000000000000000000 --- a/client/src/test/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ -import * as path from 'path'; -import * as Mocha from 'mocha'; -import * as glob from 'glob'; - -export function run(): Promise<void> { - // Create the mocha test - const mocha = new Mocha({ - ui: 'tdd', - }); - mocha.useColors(true); - mocha.timeout(100000); - - const testsRoot = __dirname; - - return new Promise((resolve, reject) => { - glob('**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return reject(err); - } - - // Add files to the test suite - files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); - - try { - // Run the mocha test - mocha.run(failures => { - if (failures > 0) { - reject(new Error(`${failures} tests failed.`)); - } else { - resolve(); - } - }); - } catch (err) { - console.error(err); - reject(err); - } - }); - }); -} \ No newline at end of file diff --git a/client/src/test/runTest.ts b/client/src/test/runTest.ts deleted file mode 100644 index 3361768c873d43d0191853a7f99cb0bbb2b43fbf..0000000000000000000000000000000000000000 --- a/client/src/test/runTest.ts +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as path from 'path'; - -import { runTests } from 'vscode-test'; - -async function main() { - try { - // The folder containing the Extension Manifest package.json - // Passed to `--extensionDevelopmentPath` - const extensionDevelopmentPath = path.resolve(__dirname, '../../../'); - - // The path to test runner - // Passed to --extensionTestsPath - const extensionTestsPath = path.resolve(__dirname, './index'); - - // Download VS Code, unzip it and run the integration test - await runTests({ extensionDevelopmentPath, extensionTestsPath }); - } catch (err) { - console.error('Failed to run tests'); - process.exit(1); - } -} - -main(); \ No newline at end of file diff --git a/client/testFixture/completion.txt b/client/testFixture/completion.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/client/testFixture/diagnostics.txt b/client/testFixture/diagnostics.txt deleted file mode 100644 index d910cfb5af85f17d84785d754e9e20b881190b0e..0000000000000000000000000000000000000000 --- a/client/testFixture/diagnostics.txt +++ /dev/null @@ -1 +0,0 @@ -ANY browsers, ANY OS. \ No newline at end of file diff --git a/client/tsconfig.json b/client/tsconfig.json deleted file mode 100644 index 9e5ff6a2435e8a2ee97da7799221e650a5cfb673..0000000000000000000000000000000000000000 --- a/client/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "outDir": "out", - "rootDir": "src", - "sourceMap": true - }, - "include": ["src"], - "exclude": ["node_modules", ".vscode-test"] -} diff --git a/package-lock.json b/package-lock.json index 6342e7418ad0d3827e6246f1a206d06421169719..efafdecc7e6734d6e247b61c165de1014c95fed9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,12 +43,6 @@ } } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -62,9 +56,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, "@types/mocha": { @@ -83,9 +77,9 @@ } }, "@types/node": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz", - "integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==" + "version": "14.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", + "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==" }, "@types/stream-to-array": { "version": "2.3.0", @@ -104,9 +98,9 @@ } }, "@types/vscode": { - "version": "1.45.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.1.tgz", - "integrity": "sha512-0NO9qrrEJBO8FsqHCrFMgR2suKnwCsKBWvRSb2OzH5gs4i3QO5AhEMQYrSzDbU/wLPt7N617/rN9lPY213gmwg==" + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.46.0.tgz", + "integrity": "sha512-8m9wPEB2mcRqTWNKs9A9Eqs8DrQZt0qNFO8GkxBOnyW6xR//3s77SoMgb/nY1ctzACsZXwZj3YRTDsn4bAoaUw==" }, "@typescript-eslint/experimental-utils": { "version": "2.34.0", @@ -147,29 +141,6 @@ "tsutils": "^3.17.1" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", @@ -179,9 +150,9 @@ } }, "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", "dev": true }, "acorn-jsx": { @@ -190,26 +161,6 @@ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "agent-base": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", - "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "ajv": { "version": "6.12.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", @@ -325,12 +276,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -344,9 +289,9 @@ "dev": true }, "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -498,12 +443,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -582,22 +521,22 @@ "integrity": "sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==" }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -614,14 +553,12 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -633,9 +570,9 @@ "dev": true }, "eslint": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.1.0.tgz", - "integrity": "sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.2.0.tgz", + "integrity": "sha512-B3BtEyaDKC5MlfDa2Ha8/D6DsS4fju95zs0hjS3HdGazw+LNayai38A25qMppK37wWGWNYSPOR6oYzlz5MHsRQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -644,10 +581,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", + "eslint-scope": "^5.1.0", "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^7.0.0", + "eslint-visitor-keys": "^1.2.0", + "espree": "^7.1.0", "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -685,9 +622,9 @@ } }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -704,20 +641,20 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==", "dev": true }, "espree": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.0.0.tgz", - "integrity": "sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", + "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", "dev": true, "requires": { - "acorn": "^7.1.1", + "acorn": "^7.2.0", "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^1.2.0" } }, "esprima": { @@ -776,9 +713,9 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-stable-stringify": { @@ -949,49 +886,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1033,9 +927,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { "version": "7.1.0", @@ -1126,9 +1020,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-date-object": { @@ -1165,12 +1059,12 @@ "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-symbol": { @@ -1291,8 +1185,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mkdirp": { "version": "1.0.4", @@ -1408,7 +1301,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "mute-stream": { "version": "0.0.8", @@ -1431,13 +1325,6 @@ "minimist": "^1.2.0", "split2": "^2.1.0", "through2": "^2.0.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - } } }, "node-environment-flags": { @@ -1448,6 +1335,14 @@ "requires": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -1577,7 +1472,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { @@ -1681,7 +1576,6 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -1713,9 +1607,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "set-blocking": { "version": "2.0.0", @@ -1763,22 +1657,6 @@ } } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", @@ -1822,28 +1700,6 @@ "es-abstract": "^1.17.5" } }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", @@ -1983,9 +1839,9 @@ "integrity": "sha512-0u70/SDLSCaX23UddnwAb2GvZZ2N0Rbjnmemn5pHoR40D32Xcva5KRGWV9SdJOKHCjJUlmctmCTvT0z+2yT8aw==" }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "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": { @@ -2013,9 +1869,9 @@ "dev": true }, "typescript": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.3.tgz", - "integrity": "sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", "dev": true }, "uri-js": { @@ -2033,6 +1889,13 @@ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } } }, "util-deprecate": { @@ -2041,128 +1904,58 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, - "vscode": { - "version": "1.1.37", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", - "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", - "dev": true, - "requires": { - "glob": "^7.1.2", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "mocha": "^5.2.0", - "semver": "^5.4.1", - "source-map-support": "^0.5.0", - "vscode-test": "^0.4.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "vscode-api": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/vscode-api/-/vscode-api-0.0.0.tgz", "integrity": "sha512-3fHcQPTDb/gKOIecijWor6HNk0qh3lpWlwJJzOjGnyKR+Ircz67/rXyvvZ2iIToAvGORPCRcmCoXS1grzipkwQ==" }, + "vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" + }, + "vscode-languageclient": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", + "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", + "requires": { + "semver": "^6.3.0", + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "requires": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + }, "vscode-test": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", - "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", - "dev": true, + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.4.0.tgz", + "integrity": "sha512-Jt7HNGvSE0+++Tvtq5wc4hiXLIr2OjDShz/gbAfM/mahQpy4rKBnmOK33D+MR67ATWviQhl+vpmU3p/qwSH/Pg==", "requires": { "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1" + "https-proxy-agent": "^2.2.4", + "rimraf": "^2.6.3" }, "dependencies": { "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, "requires": { "es6-promisify": "^5.0.0" } @@ -2171,7 +1964,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2180,7 +1972,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, "requires": { "agent-base": "4", "debug": "3.1.0" @@ -2190,7 +1981,6 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -2199,8 +1989,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, diff --git a/package.json b/package.json index c8ec2eb0c7a2ccc85c3f1c163adf44a6ed5a3418..430947cd6114ada235a19250d480869dc5b233bd 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "activationEvents": [ "onLanguage:classicalb" ], - "main": "./client/out/extension", + "main": "./out/extension", "contributes": { "configuration": { "type": "object", @@ -104,25 +104,24 @@ ] }, "scripts": { - "vscode:prepublish": "npm run compile", - "compile": "tsc -b", - "watch": "tsc -b -w", - "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", - "test": "sh ./scripts/e2e.sh" + "vscode:prepublish": "tsc -p ./", + "compile": "tsc -watch -p ./", + "postinstall": "node ./node_modules/vscode/bin/install", + "test": "node ./node_modules/vscode/bin/test", + "tslint": "gulp tslint" }, "devDependencies": { "@types/mocha": "^7.0.2", - "@types/node": "^14.0.5", + "@types/node": "^14.0.13", "@typescript-eslint/parser": "^2.34.0", - "eslint": "^7.1.0", + "eslint": "^7.2.0", "mocha": "^7.2.0", - "typescript": "^3.9.3", - "vscode": "^1.1.37" + "typescript": "^3.9.5" }, "dependencies": { "@types/ndjson": "^1.5.0", "@types/stream-to-array": "^2.3.0", - "@types/vscode": "^1.45.1", + "@types/vscode": "^1.46.0", "error": "^10.4.0", "mkdirp": "^1.0.4", "ndjson": "^1.5.0", @@ -130,6 +129,8 @@ "stream-to-array": "^2.3.0", "ts-xor": "^1.0.8", "vscode-api": "0.0.0", + "vscode-languageclient": "^6.1.3", + "vscode-test": "^1.4.0", "vscode-uri": "^2.1.2", "without": "^1.2.3" } diff --git a/server/package-lock.json b/server/package-lock.json deleted file mode 100644 index cfc6a3d26860a34c126cf1ec4d273adfa629c906..0000000000000000000000000000000000000000 --- a/server/package-lock.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "lsp-b-server", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "vscode-jsonrpc": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", - "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" - }, - "vscode-languageserver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", - "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", - "requires": { - "vscode-languageserver-protocol": "^3.15.3" - } - }, - "vscode-languageserver-protocol": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", - "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", - "requires": { - "vscode-jsonrpc": "^5.0.1", - "vscode-languageserver-types": "3.15.1" - } - }, - "vscode-languageserver-textdocument": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", - "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" - }, - "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" - } - } -} diff --git a/server/package.json b/server/package.json deleted file mode 100644 index eead6970463a509f3f1f1f6b786145d328ce506a..0000000000000000000000000000000000000000 --- a/server/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "lsp-b-server", - "description": "Example implementation of a language server in node.", - "version": "0.0.1", - "author": "Sebastian Stock", - "license": "MIT", - "engines": { - "node": "*" - }, - "repository": { - "type": "git", - "url": "https://github.com/hhu-stups/b-language-extension" - }, - "dependencies": { - "vscode-languageserver": "^6.1.1", - "vscode-languageserver-textdocument": "^1.0.1" - }, - "scripts": {} -} diff --git a/server/src/errorHandler.ts b/server/src/errorHandler.ts deleted file mode 100644 index 1abc44dce6112fe29821fe2f8536b791b2a8eb8c..0000000000000000000000000000000000000000 --- a/server/src/errorHandler.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver' -import { TextDocument, Position } from 'vscode-languageserver-textdocument' -import * as fs from 'fs'; -import * as readline from 'readline' - - - -/** - * Reads the error file, casts the errors to a readable form, sorts them by origin - * @param errorPath the path to the file where the ndjson errors are stored - */ -export async function readErrors(errorPath: string): Promise<Map<string, Set<NDJSON>>> { - let result: Map<string, Set<NDJSON>> = new Map() - - var stream = fs.createReadStream(errorPath) - - const rl = readline.createInterface({ - input: stream, - crlfDelay: Infinity - }); - - - let i : number = 1 - for await (const line of rl) { - - let obj: NDJSON - - try{ - obj = JSON.parse(line) - }catch(e){ - throw Error(e.message + " at line " + line) - } - i++ - let path: string = obj.details.file - - - if (!result.has(path)) { - result.set(path, new Set()) - } - - result.get(path)!.add(obj) - } - - return result -} - -/** - * Builds diagnostics for a given Set of infos - * @param infos the set of infos to build diagnostics with - */ -export function matchErrors(infos: Set<NDJSON>, file?: TextDocument | undefined): Array<Diagnostic> { - let result: Array<Diagnostic> = new Array() - - for (var info of infos) { - - - let serveity: DiagnosticSeverity = DiagnosticSeverity.Error - - if (info.type == "error") { - serveity = DiagnosticSeverity.Error - } - - if (info.type == "warning") { - serveity = DiagnosticSeverity.Warning - } - - if (info.type == "information") { - serveity = DiagnosticSeverity.Information - } - - let content: JBody = info.details - - // Managing case we get conent with no error massage - if (content.start.line == -1 && content.start.col == -1 && content.end.line == -1 && content.end.col == -1) { - if (file != undefined) { - //Due to server architecture we only have the most actual document - let targetLine = getFirstOccurence(file).line - content.start = { line: targetLine, col: 0 } - content.end = { line: targetLine, col: Number.MAX_VALUE } - } else { - //Fallback if an error occurs on differnt document - content.start = { line: 1, col: 0 } - content.end = { line: 1, col: Number.MAX_VALUE } - } - } - - let diagnostic = { - severity: serveity, - range: { - start: - { - character: content.start.col, - line: content.start.line - 1 - }, - end: { - character: content.end.col, - line: content.end.line - 1 - } - }, - message: content.message, - source: 'prob_prolog', - - }; - - result.push(diagnostic) - } - - return result - -} - - -////////////// Representation of the NDJSON File -export interface NDJSON { - type: string - details: JBody -} - -export interface JBody { - message: string; - type: string; - file: string; - start: StartOrEnd; - end: StartOrEnd; -} - -export interface StartOrEnd { - line: number; - col: number; -} - -/////////////////// - - -/** - * Returns the exakt positiion of the first occurence of an non whitespace token - * @param textdocument the Textdocument to analzie - */ -function getFirstOccurence(textdocument: TextDocument): Position { - let counter: number = textdocument.getText().search(/\S|$/) - let pos: Position = textdocument.positionAt(counter) - pos.line = pos.line + 1 - return pos -} - diff --git a/server/src/server.ts b/server/src/server.ts deleted file mode 100644 index 0c3b7f41af34ca91c7879754275de74879104ddc..0000000000000000000000000000000000000000 --- a/server/src/server.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { - createConnection, - TextDocuments, - Diagnostic, - ProposedFeatures, - InitializeParams, - DidChangeConfigurationNotification, - CompletionItem, - TextDocumentPositionParams, - TextDocumentSyncKind, - InitializeResult, - -} from 'vscode-languageserver'; - -import { - TextDocument -} from 'vscode-languageserver-textdocument'; - - -import { URI } from 'vscode-uri'; -import * as fs from 'fs'; -import { NDJSON, readErrors, matchErrors } from './errorHandler'; -import * as wordComplition from './wordCompletion' -import * as path from 'path'; - - - -// Create a connection for the server. The connection uses Node's IPC as a transport. -// Also include all preview / proposed LSP features. -let connection = createConnection(ProposedFeatures.all); - -// Create a simple text document manager. The text document manager -// supports full document sync only -let documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument); - -let hasConfigurationCapability: boolean = false; -let hasWorkspaceFolderCapability: boolean = false; -let hasDiagnosticRelatedInformationCapability: boolean = false; - - - - -connection.onInitialize((params: InitializeParams) => { - let capabilities = params.capabilities; - - // Does the client support the `workspace/configuration` request? - // If not, we will fall back using global settings - hasConfigurationCapability = !!( - capabilities.workspace && !!capabilities.workspace.configuration - ); - hasWorkspaceFolderCapability = !!( - capabilities.workspace && !!capabilities.workspace.workspaceFolders - ); - hasDiagnosticRelatedInformationCapability = !!( - capabilities.textDocument && - capabilities.textDocument.publishDiagnostics && - capabilities.textDocument.publishDiagnostics.relatedInformation - ); - - - - - const result: InitializeResult = { - capabilities: { - textDocumentSync: TextDocumentSyncKind.Full, - // Tell the client that the server supports code completion - completionProvider: { - resolveProvider: true - } - } - }; - if (hasWorkspaceFolderCapability) { - result.capabilities.workspace = { - workspaceFolders: { - supported: true - } - }; - } - return result; -}); - -connection.onInitialized(() => { - if (hasConfigurationCapability) { - // Register for all configuration changes. - connection.client.register(DidChangeConfigurationNotification.type, undefined); - } - if (hasWorkspaceFolderCapability) { - connection.workspace.onDidChangeWorkspaceFolders(_event => { - connection.console.log('Workspace folder change event received.'); - }); - } -}); - -// The settings -interface Settings { - maxNumberOfProblems: number - strictChecks: boolean - wdChecks: boolean - performanceHints: boolean - //PYTHONSETTING - probHome: string -} - - -const defaultSettings: Settings = { - maxNumberOfProblems: 1000, - probHome: "~/prob_prolog/probcli.sh", - strictChecks: false, - wdChecks: false, - //PYTHONDEFAULT - performanceHints: false -}; - -let globalSettings: Settings = defaultSettings; - -// Cache the settings of all open documents -let documentSettings: Map<string, Thenable<Settings>> = new Map(); - -connection.onDidChangeConfiguration(change => { - if (hasConfigurationCapability) { - // Reset all cached document settings - documentSettings.clear(); - } else { - globalSettings = <Settings>( - (change.settings.languageServer || defaultSettings) - ); - } - - // Revalidate all open text documents - documents.all().forEach(validateTextDocument); -}); - -function getDocumentSettings(resource: string): Thenable<Settings> { - if (!hasConfigurationCapability) { - return Promise.resolve(globalSettings); - } - let result = documentSettings.get(resource); - if (!result) { - result = connection.workspace.getConfiguration({ - scopeUri: resource, - section: 'languageServer' - }); - documentSettings.set(resource, result); - } - return result; -} - -// Only keep settings for open documents -documents.onDidClose(e => { - documentSettings.delete(e.document.uri); -}); - - - -documents.onDidOpen(change => { - validateTextDocument(change.document) -}) - -documents.onDidSave(change => { - validateTextDocument(change.document) -}) - - -async function validateTextDocument(textDocument: TextDocument): Promise<void> { - let settings = await getDocumentSettings(textDocument.uri) // Waiting for correct setting; otherwise allways default - - let documentPath: path.ParsedPath = path.parse(URI.parse(textDocument.uri).path); - - let errorDic : string = documentPath.dir + '/tmp' - let errorPath: string = errorDic + '/_error.json' - - - const { exec } = require('child_process'); - - if (!fs.existsSync(errorDic)){ - fs.mkdirSync(errorDic); - } - - fs.writeFile(errorPath, "", () => { }) //Insure a clean error file - - let command: string = getCommand(URI.parse(textDocument.uri).path, errorPath, settings) -// console.log(command) - if (correctPath(settings.probHome)) { - exec(command, (err: string, stdout: string, stderr: string) => { - let errorMap: Promise<Map<string, Set<NDJSON>>> = readErrors(errorPath) - errorMap.then(function (result: Map<string, Set<NDJSON>>) { - - let diagnostics: Array<Diagnostic> = new Array() - - for (let entry of result) { - if (entry[0] == textDocument.uri) { - diagnostics = matchErrors(entry[1], textDocument) - } else { - diagnostics = matchErrors(entry[1]) - } - connection.sendDiagnostics({ uri: entry[0], diagnostics }); - } - - }, function (err) { - connection.sendNotification("parse_error_prob", "there are things wrong with the parse results " + err) - }); - - - if(!stdout.includes('Running ProB Command-line Interface')) - { - connection.sendNotification("path_error_prob", "could not call/reach probcli "+ command) - } - - - }) - } -} - - - - -function getCommand(documentPath: string, errorPath: string, settings: Settings): string { - let wdCmd = "" - let strict = "" - let perf = "" -// console.log(documentPath) - //PYTHONVAR - - if (settings.wdChecks == true) { - wdCmd = " -wd-check -release_java_parser " - } - - if (settings.strictChecks == true) { - strict = " -p STRICT_CLASH_CHECKING TRUE -p TYPE_CHECK_DEFINITIONS TRUE -lint " - } - - if (settings.performanceHints == true) { - perf = " -p PERFORMANCE_INFO TRUE " - } - - //PYTHONIF - - return settings.probHome + ' -p MAX_INITIALISATIONS 0 -version ' - + perf - + strict - + wdCmd - /*PYTHONCMD*/ - + documentPath - + " -p " - + "NDJSON_ERROR_LOG_FILE " - + errorPath -} - - -function correctPath(path: string): boolean { - try { - fs.accessSync(path) - } catch (e) { - connection.sendNotification("path_error_prob", path + " seems to be the wrong path to ProB") - return false - } - return true -} - - -// This handler provides the initial list of the completion items. -connection.onCompletion( - - (textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => { - return wordComplition.selectCompletion(textDocumentPosition) - } -); - - - - - -//Can be used to enrich completion with more infos -connection.onCompletionResolve( - (item: CompletionItem) => { return item }) - - -// for open, change and close text document events -documents.listen(connection); - -// Listen on the connection -connection.listen(); diff --git a/server/src/wordCompletion.ts b/server/src/wordCompletion.ts deleted file mode 100644 index 9a13257a978cb999aefacaaa2326d413c4335c10..0000000000000000000000000000000000000000 --- a/server/src/wordCompletion.ts +++ /dev/null @@ -1,1390 +0,0 @@ - -import { - - CompletionItem, - CompletionItemKind, - TextDocumentPositionParams, - -} from 'vscode-languageserver'; - -export function selectCompletion(textDocumentPosition : TextDocumentPositionParams) : CompletionItem[]{ - - - if(textDocumentPosition.textDocument.uri.endsWith(".mch")){ - return completionCommon().concat(completionAbstractMachine()).concat(completionCommonAbstract()) - } - - if(textDocumentPosition.textDocument.uri.endsWith(".ref")){ - return completionCommon().concat(completionRefinement()).concat(completionCommonAbstract()) - } - - if(textDocumentPosition.textDocument.uri.endsWith(".imp")){ - return completionCommon().concat(completionImplementation()) - } - - if(textDocumentPosition.textDocument.uri.endsWith(".def")){ - return completionDefinition() - } - - - return [] - -} - - - -function completionDefinition() : CompletionItem []{ - return[ - { - label: 'DEFINITION', - kind: CompletionItemKind.Text, - } - ] - - -} - -function completionAbstractMachine() : CompletionItem[] { - - return [ - { - label: 'MACHINE', - kind: CompletionItemKind.Text, - } - ] -} - -function completionImplementation() : CompletionItem[] { - - return [ - { - label: 'IMPLEMENTATION', - kind: CompletionItemKind.Text, - }, - { - label: 'IMPORTS', - kind: CompletionItemKind.Text, - } - ] -} - - -function completionRefinement() : CompletionItem[] { - - return [ - { - label: 'REFINEMENT', - kind: CompletionItemKind.Text, - }, - { - label: 'REFINES', - kind: CompletionItemKind.Text, - }, - - ] -} - -function completionCommon() : CompletionItem[] { - - return [ - { - label: 'SEES', - kind: CompletionItemKind.Text, - }, - { - label: 'INCLUDES', - kind: CompletionItemKind.Text, - }, - { - label: 'PROMOTES', - kind: CompletionItemKind.Text, - }, - { - label: 'EXTENDS', - kind: CompletionItemKind.Text, - }, - { - label: 'SETS', - kind: CompletionItemKind.Text, - }, - { - label: 'CONCRETE_CONSTANTS', - kind: CompletionItemKind.Text, - }, - { - label: 'PROPERTIES', - kind: CompletionItemKind.Text, - }, - { - label: 'CONCRETE_VARIALBES', - kind: CompletionItemKind.Text, - }, - { - label: 'INVARIANT', - kind: CompletionItemKind.Text, - }, - { - label: 'ASSERTIONS', - kind: CompletionItemKind.Text, - }, - { - label: 'OPERATIONS', - kind: CompletionItemKind.Text, - }, - { - label: 'END', - kind: CompletionItemKind.Text, - }, - { - label:'skip', - kind:CompletionItemKind.Text, - }, - { - label:'id', - kind:CompletionItemKind.Text, - }, - { - label:'closure', - kind:CompletionItemKind.Text, - }, - { - label:'closure1', - kind:CompletionItemKind.Text, - }, - { - label:'iterate', - kind:CompletionItemKind.Text, - }, - { - label:'pred', - kind:CompletionItemKind.Text, - }, - { - label:'succ', - kind:CompletionItemKind.Text, - }, - { - label:'prj1', - kind:CompletionItemKind.Text, - }, - { - label:'prj2', - kind:CompletionItemKind.Text, - }, - { - label:'ran', - kind:CompletionItemKind.Text, - }, - { - label:'dom', - kind:CompletionItemKind.Text, - }, - { - label:'POW', - kind:CompletionItemKind.Text, - }, - { - label:'POW1', - kind:CompletionItemKind.Text, - }, - { - label:'NAT', - kind:CompletionItemKind.Text, - }, - { - label:'NAT1', - kind:CompletionItemKind.Text, - }, - { - label:'INT', - kind:CompletionItemKind.Text, - }, - { - label:'INTEGER', - kind:CompletionItemKind.Text, - }, - { - label:'NATURAL', - kind:CompletionItemKind.Text, - }, - { - label:'NATURAL1', - kind:CompletionItemKind.Text, - }, - { - label:'MININT', - kind:CompletionItemKind.Text, - }, - { - label:'MAXINT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING', - kind:CompletionItemKind.Text, - }, - { - label:'FIN', - kind:CompletionItemKind.Text, - }, - { - label:'FIN1', - kind:CompletionItemKind.Text, - }, - { - label:'card', - kind:CompletionItemKind.Text, - }, - { - label:'union', - kind:CompletionItemKind.Text, - }, - { - label:'UNION', - kind:CompletionItemKind.Text, - }, - { - label:'inter', - kind:CompletionItemKind.Text, - }, - { - label:'INTER', - kind:CompletionItemKind.Text, - }, - { - label:'PI', - kind:CompletionItemKind.Text, - }, - { - label:'SIGMA', - kind:CompletionItemKind.Text, - }, - { - label:'mod', - kind:CompletionItemKind.Text, - }, - { - label:'seq', - kind:CompletionItemKind.Text, - }, - { - label:'seq1', - kind:CompletionItemKind.Text, - }, - { - label:'iseq', - kind:CompletionItemKind.Text, - }, - { - label:'iseq1', - kind:CompletionItemKind.Text, - }, - { - label:'perm', - kind:CompletionItemKind.Text, - }, - { - label:'size', - kind:CompletionItemKind.Text, - }, - { - label:'rev', - kind:CompletionItemKind.Text, - }, - { - label:'first', - kind:CompletionItemKind.Text, - }, - { - label:'last', - kind:CompletionItemKind.Text, - }, - { - label:'front', - kind:CompletionItemKind.Text, - }, - { - label:'tail', - kind:CompletionItemKind.Text, - }, - { - label:'conc', - kind:CompletionItemKind.Text, - }, - { - label:'max', - kind:CompletionItemKind.Text, - }, - { - label:'min', - kind:CompletionItemKind.Text, - }, - { - label:'or', - kind:CompletionItemKind.Text, - }, - { - label:'not', - kind:CompletionItemKind.Text, - }, - { - label:'bool', - kind:CompletionItemKind.Text, - }, - { - label:'BOOL', - kind:CompletionItemKind.Text, - }, - { - label:'TRUE', - kind:CompletionItemKind.Text, - }, - { - label:'FALSE', - kind:CompletionItemKind.Text, - }, - { - label:'fnc', - kind:CompletionItemKind.Text, - }, - { - label:'rel', - kind:CompletionItemKind.Text, - }, - { - label:'rec', - kind:CompletionItemKind.Text, - }, - { - label:'struct', - kind:CompletionItemKind.Text, - }, - { - label:'left', - kind:CompletionItemKind.Text, - }, - { - label:'right', - kind:CompletionItemKind.Text, - }, - { - label:'tree', - kind:CompletionItemKind.Text, - }, - { - label:'btree', - kind:CompletionItemKind.Text, - }, - { - label:'top', - kind:CompletionItemKind.Text, - }, - { - label:'postfix', - kind:CompletionItemKind.Text, - }, - { - label:'mirror', - kind:CompletionItemKind.Text, - }, - { - label:'prefix', - kind:CompletionItemKind.Text, - }, - { - label:'infix', - kind:CompletionItemKind.Text, - }, - { - label:'sons', - kind:CompletionItemKind.Text, - }, - { - label:'bin', - kind:CompletionItemKind.Text, - }, - { - label:'son', - kind:CompletionItemKind.Text, - }, - { - label:'arity', - kind:CompletionItemKind.Text, - }, - { - label:'subtree', - kind:CompletionItemKind.Text, - }, - { - label:'rank', - kind:CompletionItemKind.Text, - }, - { - label:'father', - kind:CompletionItemKind.Text, - }, - { - label:'const', - kind:CompletionItemKind.Text, - }, - { - label:'sizet', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_ALLOW_LOCAL_OPERATION_CALLS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_ALLOW_INCOMPLETE_SETUP_CONSTANTS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_CHR', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_CLPFD', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_COMPRESSION', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_CSE', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_DEFAULT_SETSIZE', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_DOUBLE_EVALUATION', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_EXPAND_FORALL_UPTO', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_INVARIANT_CHECKING', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_KODKOD', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_KODKOD_ONLY_FULL', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_KODKOD_MAX_NR_SOLS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_KODKOD_SYMMETRY', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_KODKOD_SAT_SOLVER', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MAXINT', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MAX_DISPLAY_SET', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MAX_INITIALISATIONS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MAX_OPERATIONS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MEMO', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_MININT', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_OPTIMIZE_AST', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_PGE', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_PROOF_INFO', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_RANDOMISE_ENUMERATION_ORDER', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_SMT', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_SMT_SUPPORTED_INTERPRETER', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_STATIC_ORDERING', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_STATIC_SYMMETRY_DETECTION', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_SYMBOLIC', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_SYMMETRY_MODE', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TIME_OUT', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TK_CUSTOM_STATE_VIEW_PADDING', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TK_CUSTOM_STATE_VIEW_STRING_PADDING', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TRACE_INFO', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TRY_FIND_ABORT', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_TYPE_CHECK_DEFINITIONS', - kind:CompletionItemKind.Text, - }, - { - label:'SET_PREF_USE_RECORD_CONSTRUCTION', - kind:CompletionItemKind.Text, - }, - { - label:'HEURISTIC_FUNCTION', - kind:CompletionItemKind.Text, - }, - { - label:'CUSTOM_GRAPH_EDGES', - kind:CompletionItemKind.Text, - }, - { - label:'CUSTOM_GRAPH_NODES', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG0', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG1', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG2', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG3', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG4', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG5', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG6', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG7', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG8', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_IMG9', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION_DEFAULT', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION0', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION1', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION2', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION3', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION4', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION5', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION6', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION7', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION8', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_FUNCTION9', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_RIGHT_CLICK', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_CLICK', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR_JUSTIFY_LEFT', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR_JUSTIFY_RIGHT', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR1', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR2', - kind:CompletionItemKind.Text, - }, - { - label:'ANIMATION_STR3', - kind:CompletionItemKind.Text, - }, - { - label:'CODES_TO_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'GOAL', - kind:CompletionItemKind.Text, - }, - { - label:'SCOPE', - kind:CompletionItemKind.Text, - }, - { - label:'DO_NOT_ENUMERATE', - kind:CompletionItemKind.Text, - }, - { - label:'FORCE', - kind:CompletionItemKind.Text, - }, - { - label:'LEQ_SYM_BREAK', - kind:CompletionItemKind.Text, - }, - { - label:'REPLACE', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_APPEND', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_CONC', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_LENGTH', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_SPLIT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_JOIN', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_CHARS', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_CODES', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_PADLEFT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_REV', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_TO_INT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_TO_LOWER', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_TO_UPPER', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_IS_ALPHANUMERIC', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_IS_DECIMAL', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_IS_INT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_IS_NUMBER', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_CONTAINS_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_EQUAL_CASE_INSENSITIVE', - kind:CompletionItemKind.Text, - }, - { - label:'DEC_STRING_TO_INT', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_TO_ENUM', - kind:CompletionItemKind.Text, - }, - { - label:'STRING_IS_NUMBER', - kind:CompletionItemKind.Text, - }, - { - label:'TYPED_STRING_TO_ENUM', - kind:CompletionItemKind.Text, - }, - { - label:'INT_TO_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'INT_TO_DEC_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'INT_TO_HEX_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'STRINGIFY', - kind:CompletionItemKind.Text, - }, - { - label:'TO_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'TO_INT', - kind:CompletionItemKind.Text, - }, - { - label:'FORMAT_TO_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'PRINT', - kind:CompletionItemKind.Text, - }, - { - label:'PRINTF', - kind:CompletionItemKind.Text, - }, - { - label:'FPRINTF', - kind:CompletionItemKind.Text, - }, - { - label:'printf', - kind:CompletionItemKind.Text, - }, - { - label:'vprintf', - kind:CompletionItemKind.Text, - }, - { - label:'fprintf', - kind:CompletionItemKind.Text, - }, - { - label:'observe', - kind:CompletionItemKind.Text, - }, - { - label:'ABS', - kind:CompletionItemKind.Text, - }, - { - label:'CDIV', - kind:CompletionItemKind.Text, - }, - { - label:'FDIV', - kind:CompletionItemKind.Text, - }, - { - label:'GCD', - kind:CompletionItemKind.Text, - }, - { - label:'MSB', - kind:CompletionItemKind.Text, - }, - { - label:'COS', - kind:CompletionItemKind.Text, - }, - { - label:'SIN', - kind:CompletionItemKind.Text, - }, - { - label:'TAN', - kind:CompletionItemKind.Text, - }, - { - label:'SQRT', - kind:CompletionItemKind.Text, - }, - { - label:'BNOT', - kind:CompletionItemKind.Text, - }, - { - label:'BAND', - kind:CompletionItemKind.Text, - }, - { - label:'BOR', - kind:CompletionItemKind.Text, - }, - { - label:'BXOR', - kind:CompletionItemKind.Text, - }, - { - label:'BLSHIFT', - kind:CompletionItemKind.Text, - }, - { - label:'BRSHIFT', - kind:CompletionItemKind.Text, - }, - { - label:'RANDOM', - kind:CompletionItemKind.Text, - }, - { - label:'NORMAL', - kind:CompletionItemKind.Text, - }, - { - label:'random_element', - kind:CompletionItemKind.Text, - }, - { - label:'random_subset', - kind:CompletionItemKind.Text, - }, - { - label:'random_ordering', - kind:CompletionItemKind.Text, - }, - { - label:'random_permutation', - kind:CompletionItemKind.Text, - }, - { - label:'random_numset', - kind:CompletionItemKind.Text, - }, - { - label:'READ_FILE_AS_STRINGS', - kind:CompletionItemKind.Text, - }, - { - label:'READ_LINE', - kind:CompletionItemKind.Text, - }, - { - label:'CHOOSE', - kind:CompletionItemKind.Text, - }, - { - label:'MU', - kind:CompletionItemKind.Text, - }, - { - label:'REGEX_MATCH', - kind:CompletionItemKind.Text, - }, - { - label:'REGEX_REPLACE', - kind:CompletionItemKind.Text, - }, - { - label:'REGEX_SEARCH_STR', - kind:CompletionItemKind.Text, - }, - { - label:'REGEX_SEARCH', - kind:CompletionItemKind.Text, - }, - { - label:'REGEX_SEARCH_ALL', - kind:CompletionItemKind.Text, - }, - { - label:'IS_REGEX', - kind:CompletionItemKind.Text, - }, - { - label:'SORT', - kind:CompletionItemKind.Text, - }, - { - label:'SQUASH', - kind:CompletionItemKind.Text, - }, - { - label:'SUB_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'HASH', - kind:CompletionItemKind.Text, - }, - { - label:'SHA_HASH', - kind:CompletionItemKind.Text, - }, - { - label:'SHA_HASH_HEX', - kind:CompletionItemKind.Text, - }, - { - label:'READ_CSV', - kind:CompletionItemKind.Text, - }, - { - label:'READ_CSV_SEQUENCE', - kind:CompletionItemKind.Text, - }, - { - label:'READ_XML', - kind:CompletionItemKind.Text, - }, - { - label:'READ_XML_FROM_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'WRITE_XML', - kind:CompletionItemKind.Text, - }, - { - label:'WRITE_XML_TO_STRING', - kind:CompletionItemKind.Text, - }, - { - label:'MACHINE', - kind:CompletionItemKind.Text, - }, - { - label:'MODEL', - kind:CompletionItemKind.Text, - }, - { - label:'SYSTEM', - kind:CompletionItemKind.Text, - }, - { - label:'REFINEMENT', - kind:CompletionItemKind.Text, - }, - { - label:'IMPLEMENTATION', - kind:CompletionItemKind.Text, - }, - { - label:'REFINES', - kind:CompletionItemKind.Text, - }, - { - label:'USES', - kind:CompletionItemKind.Text, - }, - { - label:'INCLUDES', - kind:CompletionItemKind.Text, - }, - { - label:'SEES', - kind:CompletionItemKind.Text, - }, - { - label:'IMPORTS', - kind:CompletionItemKind.Text, - }, - { - label:'EXTENDS', - kind:CompletionItemKind.Text, - }, - { - label:'PROMOTES', - kind:CompletionItemKind.Text, - }, - { - label:'SETS', - kind:CompletionItemKind.Text, - }, - { - label:'INITIALISATION', - kind:CompletionItemKind.Text, - }, - { - label:'OPERATIONS', - kind:CompletionItemKind.Text, - }, - { - label:'LOCAL_OPERATIONS', - kind:CompletionItemKind.Text, - }, - { - label:'EVENTS', - kind:CompletionItemKind.Text, - }, - { - label:'THEOREMS', - kind:CompletionItemKind.Text, - }, - { - label:'INVARIANT', - kind:CompletionItemKind.Text, - }, - { - label:'VARIANT', - kind:CompletionItemKind.Text, - }, - { - label:'DEFINITIONS', - kind:CompletionItemKind.Text, - }, - { - label:'ASSERTIONS', - kind:CompletionItemKind.Text, - }, - { - label:'ASSERT', - kind:CompletionItemKind.Text, - }, - { - label:'ABSTRACT_VARIABLES', - kind:CompletionItemKind.Text, - }, - { - label:'CONCRETE_VARIABLES', - kind:CompletionItemKind.Text, - }, - { - label:'CONSTANTS', - kind:CompletionItemKind.Text, - }, - { - label:'CONSTRAINTS', - kind:CompletionItemKind.Text, - }, - { - label:'ABSTRACT_CONSTANTS', - kind:CompletionItemKind.Text, - }, - { - label:'CONCRETE_CONSTANTS', - kind:CompletionItemKind.Text, - }, - { - label:'PROPERTIES', - kind:CompletionItemKind.Text, - }, - { - label:'VALUES', - kind:CompletionItemKind.Text, - }, - { - label:'SELECT', - kind:CompletionItemKind.Text, - }, - { - label:'THEN', - kind:CompletionItemKind.Text, - }, - { - label:'END', - kind:CompletionItemKind.Text, - }, - { - label:'IF', - kind:CompletionItemKind.Text, - }, - { - label:'ANY', - kind:CompletionItemKind.Text, - }, - { - label:'WHERE', - kind:CompletionItemKind.Text, - }, - { - label:'WHEN', - kind:CompletionItemKind.Text, - }, - { - label:'ELSE', - kind:CompletionItemKind.Text, - }, - { - label:'ELSIF', - kind:CompletionItemKind.Text, - }, - { - label:'PRE', - kind:CompletionItemKind.Text, - }, - { - label:'BEGIN', - kind:CompletionItemKind.Text, - }, - { - label:'CHOICE', - kind:CompletionItemKind.Text, - }, - { - label:'WHILE', - kind:CompletionItemKind.Text, - }, - { - label:'DO', - kind:CompletionItemKind.Text, - }, - { - label:'VAR', - kind:CompletionItemKind.Text, - }, - { - label:'EITHER', - kind:CompletionItemKind.Text, - }, - { - label:'OR', - kind:CompletionItemKind.Text, - }, - { - label:'LET', - kind:CompletionItemKind.Text, - }, - { - label:'BE', - kind:CompletionItemKind.Text, - }, - { - label:'IN', - kind:CompletionItemKind.Text, - }, - { - label:'CASE', - kind:CompletionItemKind.Text, - }, - { - label:'OF', - kind:CompletionItemKind.Text, - }, - { - label:'ref', - kind:CompletionItemKind.Text, - }, - { - label:'RULES_MACHINE', - kind:CompletionItemKind.Text, - }, - { - label:'RULE_ANY', - kind:CompletionItemKind.Text, - }, - { - label:'RULE_FORALL', - kind:CompletionItemKind.Text, - }, - { - label:'RULEID', - kind:CompletionItemKind.Text, - }, - { - label:'RULE', - kind:CompletionItemKind.Text, - }, - { - label:'COMPUTATION', - kind:CompletionItemKind.Text, - }, - { - label:'DEPENDS_ON_COMPUTATION', - kind:CompletionItemKind.Text, - }, - { - label:'DEPENDS_ON_RULE', - kind:CompletionItemKind.Text, - }, - { - label:'COUNTEREXAMPLE', - kind:CompletionItemKind.Text, - }, - { - label:'EXPECT', - kind:CompletionItemKind.Text, - }, - { - label:'ERROR_TYPE', - kind:CompletionItemKind.Text, - }, - { - label:'ERROR_TYPES', - kind:CompletionItemKind.Text, - }, - { - label:'BODY', - kind:CompletionItemKind.Text, - }, - { - label:'REFERENCES', - kind:CompletionItemKind.Text, - }, - { - label:'SUCCEEDED_RULE', - kind:CompletionItemKind.Text, - }, - { - label:'FAILED_RULE', - kind:CompletionItemKind.Text, - }, - { - label:'GET_RULE_COUNTEREXAMPLES', - kind:CompletionItemKind.Text, - }, - { - label:'FUNCTION', - kind:CompletionItemKind.Text, - }, - { - label:'PRECONDITION', - kind:CompletionItemKind.Text, - }, - { - label:'DEFINE', - kind:CompletionItemKind.Text, - }, - { - label:'TYPE', - kind:CompletionItemKind.Text, - }, - { - label:'VALUE', - kind:CompletionItemKind.Text, - }, - - ] -} - -function completionCommonAbstract() : CompletionItem[] { - return [ - { - label: 'VARIABLES', - kind: CompletionItemKind.Text, - }, - { - label: 'CONSTANTS', - kind: CompletionItemKind.Text, - } - ] -} - diff --git a/server/tsconfig.json b/server/tsconfig.json deleted file mode 100644 index 974842f3aba80a09ba280b96469191886c19d518..0000000000000000000000000000000000000000 --- a/server/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "moduleResolution": "node", - "sourceMap": true, - "strict": true, - "outDir": "out", - "rootDir": "src" - }, - "include": ["src"], - "exclude": ["node_modules", ".vscode-test"] -} diff --git a/client/src/extension.ts b/src/extension.ts similarity index 65% rename from client/src/extension.ts rename to src/extension.ts index 121c863a110ea6e3fed9e0f148f586a2b3b7a32e..6c2bb9457f26e10d0262e43fb04d3de03aebe449 100644 --- a/client/src/extension.ts +++ b/src/extension.ts @@ -3,11 +3,15 @@ * Licensed under the MIT License. See License.txt in the project root for license information. * ------------------------------------------------------------------------------------------ */ -import * as path from 'path'; import { workspace, ExtensionContext, - window } from 'vscode'; + window, + WorkspaceConfiguration, + TextEditor, +StatusBarAlignment } from 'vscode'; + + import { LanguageClient, @@ -20,9 +24,9 @@ let client: LanguageClient; export function activate(context: ExtensionContext) { // The server is implemented in node - let serverModule = context.asAbsolutePath( +/* let serverModule = context.asAbsolutePath( path.join('server', 'out', 'server.js') - ); + );*/ // The debug options for the server // --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging let debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] }; @@ -30,12 +34,15 @@ export function activate(context: ExtensionContext) { // If the extension is launched in debug mode then the debug server options are used // Otherwise the run options are used let serverOptions: ServerOptions = { - run: { module: serverModule, transport: TransportKind.ipc }, + /* run: { module: serverModule, transport: TransportKind.ipc }, debug: { module: serverModule, transport: TransportKind.ipc, options: debugOptions } + */ + command: '/usr/bin/java', + args: [ "-jar", "/home/sebastian/IdeaProjects/b-language-server/build/libs/b-language-server-all.jar"] }; // Options to control the language client @@ -49,12 +56,10 @@ export function activate(context: ExtensionContext) { }; // Create the language client and start the client. - client = new LanguageClient( - 'languageServer', - 'Language Server Example', - serverOptions, - clientOptions - ); + client = new LanguageClient('languageServer', 'Language Server', serverOptions, clientOptions) + + + client.onReady().then(() => { let bla = window.createOutputChannel("internal_error") @@ -64,14 +69,21 @@ export function activate(context: ExtensionContext) { client.onNotification("parse_error_prob", (message:string) => { window.showErrorMessage('a error occured :' + message) }); + client.onNotification("lsp-test", (message:string) => { + window.showErrorMessage('test message recived: ' + message) + }); }); + let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE); + - //context.subscriptions.push(client.start()); + + item.text = 'Starting Le Language Server de Chamrousse...'; + toggleItem(window.activeTextEditor, item); // Start the client. This will also launch the server - client.start(); - console.log("Client started") + let disposable = client.start(); + context.subscriptions.push(disposable); } @@ -82,3 +94,17 @@ export function deactivate(): Thenable<void> | undefined { return client.stop(); } + +function toggleItem(editor: TextEditor, item) { + if(editor && editor.document && + (editor.document.languageId === 'ski')){ + item.show(); + } else{ + item.hide(); + } +} + +function getServerConfiguration():WorkspaceConfiguration { + return workspace.getConfiguration('ski'); +} + diff --git a/tsconfig.json b/tsconfig.json index ed91ffa45fb1c9fc4b9efb4b0c46c67aee4cbb01..0a19365b8dcef2853ba6914e5857481522681675 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,9 +13,5 @@ "exclude": [ "node_modules", ".vscode-test" - ], - "references": [ - { "path": "./client" }, - { "path": "./server" } ] } \ No newline at end of file