Skip to content

Commit d03e2c2

Browse files
committed
[json] enable strict checks on server
1 parent 5817f67 commit d03e2c2

5 files changed

Lines changed: 47 additions & 46 deletions

File tree

extensions/json/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"dependencies": {
1111
"jsonc-parser": "^1.0.1",
1212
"request-light": "^0.2.2",
13-
"vscode-json-languageservice": "^3.0.6",
14-
"vscode-languageserver": "^3.5.0",
13+
"vscode-json-languageservice": "^3.0.7",
14+
"vscode-languageserver": "^4.0.0-next.3",
1515
"vscode-nls": "^3.2.1",
1616
"vscode-uri": "^1.0.1"
1717
},

extensions/json/server/src/jsonServerMain.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import fs = require('fs');
1717
import URI from 'vscode-uri';
1818
import * as URL from 'url';
1919
import Strings = require('./utils/strings');
20-
import { formatError, runSafe } from './utils/errors';
21-
import { JSONDocument, JSONSchema, LanguageSettings, getLanguageService, DocumentLanguageSettings } from 'vscode-json-languageservice';
20+
import { formatError, runSafe, runSafeAsync } from './utils/errors';
21+
import { JSONDocument, JSONSchema, getLanguageService, DocumentLanguageSettings, SchemaConfiguration } from 'vscode-json-languageservice';
2222
import { getLanguageModelCache } from './languageModelCache';
2323

2424
interface ISchemaAssociations {
@@ -40,7 +40,7 @@ namespace SchemaContentChangeNotification {
4040
// Create a connection for the server
4141
let connection: IConnection = createConnection();
4242

43-
process.on('unhandledRejection', e => {
43+
process.on('unhandledRejection', (e: any) => {
4444
connection.console.error(formatError(`Unhandled exception`, e));
4545
});
4646

@@ -62,7 +62,7 @@ let clientDynamicRegisterSupport = false;
6262
connection.onInitialize((params: InitializeParams): InitializeResult => {
6363

6464
function hasClientCapability(...keys: string[]) {
65-
let c = params.capabilities;
65+
let c = params.capabilities as any;
6666
for (let i = 0; c && i < keys.length; i++) {
6767
c = c[keys[i]];
6868
}
@@ -146,9 +146,9 @@ interface JSONSchemaSettings {
146146
schema?: JSONSchema;
147147
}
148148

149-
let jsonConfigurationSettings: JSONSchemaSettings[] = void 0;
150-
let schemaAssociations: ISchemaAssociations = void 0;
151-
let formatterRegistration: Thenable<Disposable> = null;
149+
let jsonConfigurationSettings: JSONSchemaSettings[] | undefined = void 0;
150+
let schemaAssociations: ISchemaAssociations | undefined = void 0;
151+
let formatterRegistration: Thenable<Disposable> | null = null;
152152

153153
// The settings have changed. Is send on server activation as well.
154154
connection.onDidChangeConfiguration((change) => {
@@ -184,10 +184,10 @@ connection.onNotification(SchemaContentChangeNotification.type, uri => {
184184
});
185185

186186
function updateConfiguration() {
187-
let languageSettings: LanguageSettings = {
187+
let languageSettings = {
188188
validate: true,
189189
allowComments: true,
190-
schemas: []
190+
schemas: new Array<SchemaConfiguration>()
191191
};
192192
if (schemaAssociations) {
193193
for (var pattern in schemaAssociations) {
@@ -292,21 +292,21 @@ function getJSONDocument(document: TextDocument): JSONDocument {
292292
}
293293

294294
connection.onCompletion(textDocumentPosition => {
295-
return runSafe(() => {
295+
return runSafeAsync(() => {
296296
let document = documents.get(textDocumentPosition.textDocument.uri);
297297
let jsonDocument = getJSONDocument(document);
298298
return languageService.doComplete(document, textDocumentPosition.position, jsonDocument);
299299
}, null, `Error while computing completions for ${textDocumentPosition.textDocument.uri}`);
300300
});
301301

302302
connection.onCompletionResolve(completionItem => {
303-
return runSafe(() => {
303+
return runSafeAsync(() => {
304304
return languageService.doResolve(completionItem);
305-
}, null, `Error while resolving completion proposal`);
305+
}, completionItem, `Error while resolving completion proposal`);
306306
});
307307

308308
connection.onHover(textDocumentPositionParams => {
309-
return runSafe(() => {
309+
return runSafeAsync(() => {
310310
let document = documents.get(textDocumentPositionParams.textDocument.uri);
311311
let jsonDocument = getJSONDocument(document);
312312
return languageService.doHover(document, textDocumentPositionParams.position, jsonDocument);
@@ -329,13 +329,13 @@ connection.onDocumentRangeFormatting(formatParams => {
329329
});
330330

331331
connection.onRequest(DocumentColorRequest.type, params => {
332-
return runSafe(() => {
332+
return runSafeAsync(() => {
333333
let document = documents.get(params.textDocument.uri);
334334
if (document) {
335335
let jsonDocument = getJSONDocument(document);
336336
return languageService.findDocumentColors(document, jsonDocument);
337337
}
338-
return [];
338+
return Promise.resolve([]);
339339
}, [], `Error while computing document colors for ${params.textDocument.uri}`);
340340
});
341341

extensions/json/server/src/utils/errors.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ export function formatError(message: string, err: any): string {
1616
return message;
1717
}
1818

19-
export function runSafe<T>(func: () => Thenable<T> | T, errorVal: T, errorMessage: string): Thenable<T> | T {
19+
export function runSafeAsync<T>(func: () => Thenable<T>, errorVal: T, errorMessage: string): Thenable<T> {
20+
let t = func();
21+
return t.then(void 0, e => {
22+
console.error(formatError(errorMessage, e));
23+
return errorVal;
24+
});
25+
}
26+
export function runSafe<T>(func: () => T, errorVal: T, errorMessage: string): T {
2027
try {
21-
let t = func();
22-
if (t instanceof Promise) {
23-
return t.then(void 0, e => {
24-
console.error(formatError(errorMessage, e));
25-
return errorVal;
26-
});
27-
}
28-
return t;
28+
return func();
2929
} catch (e) {
3030
console.error(formatError(errorMessage, e));
3131
return errorVal;

extensions/json/server/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"noUnusedLocals": true,
99
"lib": [
1010
"es5", "es2015.promise"
11-
]
11+
],
12+
"strict": true
1213
},
1314
"include": [
1415
"src/**/*"

extensions/json/server/yarn.lock

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,35 +64,35 @@ request-light@^0.2.2:
6464
https-proxy-agent "2.1.1"
6565
vscode-nls "^2.0.2"
6666

67-
vscode-json-languageservice@^3.0.6:
68-
version "3.0.6"
69-
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.6.tgz#21ea07cfc5cd0748bb1a9f54f8011d3c54667dc7"
67+
vscode-json-languageservice@^3.0.7:
68+
version "3.0.7"
69+
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.7.tgz#dc00117d51d4a7ac3bde9204afa701f962f00736"
7070
dependencies:
7171
jsonc-parser "^1.0.1"
72-
vscode-languageserver-types "^3.5.0"
72+
vscode-languageserver-types "^3.6.0-next.1"
7373
vscode-nls "^2.0.2"
7474
vscode-uri "^1.0.1"
7575

76-
vscode-jsonrpc@^3.5.0:
77-
version "3.5.0"
78-
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.5.0.tgz#87239d9e166b2d7352245b8a813597804c1d63aa"
76+
vscode-jsonrpc@^3.6.0-next.1:
77+
version "3.6.0-next.1"
78+
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.0-next.1.tgz#3cb463dffe5842d6aec16718ca9252708cd6aabe"
7979

80-
vscode-languageserver-protocol@^3.5.0:
81-
version "3.5.0"
82-
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.0.tgz#067c5cbe27709795398d119692c97ebba1452209"
80+
vscode-languageserver-protocol@^3.6.0-next.3:
81+
version "3.6.0-next.4"
82+
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.6.0-next.4.tgz#5b9940e4d6afafd5b63f9731dbd3a9bcc65b3719"
8383
dependencies:
84-
vscode-jsonrpc "^3.5.0"
85-
vscode-languageserver-types "^3.5.0"
84+
vscode-jsonrpc "^3.6.0-next.1"
85+
vscode-languageserver-types "^3.6.0-next.1"
8686

87-
vscode-languageserver-types@^3.5.0:
88-
version "3.5.0"
89-
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz#e48d79962f0b8e02de955e3f524908e2b19c0374"
87+
vscode-languageserver-types@^3.6.0-next.1:
88+
version "3.6.0-next.1"
89+
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.0-next.1.tgz#98e488d3f87b666b4ee1a3d89f0023e246d358f3"
9090

91-
vscode-languageserver@^3.5.0:
92-
version "3.5.0"
93-
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-3.5.0.tgz#d28099bc6ddda8c1dd16b707e454e1b1ddae0dba"
91+
vscode-languageserver@^4.0.0-next.3:
92+
version "4.0.0-next.3"
93+
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-4.0.0-next.3.tgz#89a9ce5078e3a86a78e3551c3766194ce4295611"
9494
dependencies:
95-
vscode-languageserver-protocol "^3.5.0"
95+
vscode-languageserver-protocol "^3.6.0-next.3"
9696
vscode-uri "^1.0.1"
9797

9898
vscode-nls@^2.0.2:

0 commit comments

Comments
 (0)