Adopt latest editor & new npm deps

This commit is contained in:
Alex Dima 2018-11-12 17:14:18 +01:00
parent 6653d96ddd
commit 527c95f016
5 changed files with 65 additions and 139 deletions

56
package-lock.json generated
View file

@ -5,27 +5,27 @@
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"commander": { "commander": {
"version": "2.16.0", "version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true "dev": true
}, },
"jsonc-parser": { "jsonc-parser": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.0.1.tgz", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.0.2.tgz",
"integrity": "sha512-9w/QyN9qF1dTlffzkmyITa6qAYt6sDArlVZqaP+CXnRh66V73wImQGG8GIBkuas0XLAxddWEWYQ8PPFoK5KNQA==", "integrity": "sha512-TSU435K5tEKh3g7bam1AFf+uZrISheoDsLlpmAo6wWZYqjsnd09lHYK1Qo+moK4Ikifev1Gdpa69g4NELKnCrQ==",
"dev": true "dev": true
}, },
"monaco-editor-core": { "monaco-editor-core": {
"version": "0.14.1", "version": "0.15.0",
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.14.1.tgz", "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.15.0.tgz",
"integrity": "sha512-bWJuPbDEftxaN2bG+JZ29+aJhg0rmq+y6VmCUqPZpmw8bSevoYjuTcdLkt9BbNaGnwosAVy+vSktXgs/JW7OvQ==", "integrity": "sha512-s1zuo+p6Gl6IC4WJP6HBkr4pWULm+HdFfacB8vOFPQLLi2oJseO20UuSkxYuZTUJQIjvhNrQfLNAmPKLZaf7tg==",
"dev": true "dev": true
}, },
"monaco-languages": { "monaco-languages": {
"version": "1.4.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.4.0.tgz", "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.6.0.tgz",
"integrity": "sha512-39MZMAEKToktfSpOS0Soj05IvkT5vbebL9AIBGPn8fGi8WgJOcfS3YLiMu07gZKViR7CFZ4RyQJKJHglx0fPdA==", "integrity": "sha512-LBEWj8tngYwsq4kasQr+dIhnO4xUIEN36ns+cRepWAQiXZnzcrZ84gFHXm8f4mR4tssxvHVU5Vw7xMUYro6h3g==",
"dev": true "dev": true
}, },
"monaco-plugin-helpers": { "monaco-plugin-helpers": {
@ -34,7 +34,7 @@
"integrity": "sha512-7kUx8dtd5qVNVgUARBRhnM8oftPglYwlINfigC4yGUiuzqtIN22u1tly8umiOCIPR0eFiBLjt6aN23oZh2QJgg==", "integrity": "sha512-7kUx8dtd5qVNVgUARBRhnM8oftPglYwlINfigC4yGUiuzqtIN22u1tly8umiOCIPR0eFiBLjt6aN23oZh2QJgg==",
"dev": true, "dev": true,
"requires": { "requires": {
"typescript": "2.9.2" "typescript": "^2.7.2"
}, },
"dependencies": { "dependencies": {
"typescript": { "typescript": {
@ -46,9 +46,9 @@
} }
}, },
"requirejs": { "requirejs": {
"version": "2.3.5", "version": "2.3.6",
"resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.5.tgz", "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
"integrity": "sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw==", "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
"dev": true "dev": true
}, },
"source-map": { "source-map": {
@ -58,19 +58,19 @@
"dev": true "dev": true
}, },
"typescript": { "typescript": {
"version": "3.0.1", "version": "3.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz",
"integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==",
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {
"version": "3.4.7", "version": "3.4.9",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
"integrity": "sha512-J0M2i1mQA+ze3EdN9SBi751DNdAXmeFLfJrd/MDIkRc3G3Gbb9OPVSx7GIQvVwfWxQARcYV2DTxIkMyDAk3o9Q==", "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"commander": "2.16.0", "commander": "~2.17.1",
"source-map": "0.6.1" "source-map": "~0.6.1"
} }
}, },
"vscode-json-languageservice": { "vscode-json-languageservice": {
@ -79,10 +79,10 @@
"integrity": "sha512-mUb8EUADnBOf8PM9LSx4dVoSc9fY6sh+MXAD0vxqHPI58RpbvvxWQkTDAbnJDFJZbq+9q3NrY7qenLF/YCXREg==", "integrity": "sha512-mUb8EUADnBOf8PM9LSx4dVoSc9fY6sh+MXAD0vxqHPI58RpbvvxWQkTDAbnJDFJZbq+9q3NrY7qenLF/YCXREg==",
"dev": true, "dev": true,
"requires": { "requires": {
"jsonc-parser": "2.0.1", "jsonc-parser": "^2.0.1",
"vscode-languageserver-types": "3.10.1", "vscode-languageserver-types": "^3.10.1",
"vscode-nls": "3.2.4", "vscode-nls": "^3.2.4",
"vscode-uri": "1.0.5" "vscode-uri": "^1.0.5"
} }
}, },
"vscode-languageserver-types": { "vscode-languageserver-types": {

View file

@ -5,7 +5,7 @@
"scripts": { "scripts": {
"compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json", "compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json",
"watch": "tsc -p ./src --watch", "watch": "tsc -p ./src --watch",
"prepublish": "mrmdir ./release && npm run compile && node ./scripts/release.js && node ./scripts/bundle && mcopy ./src/monaco.d.ts ./release/monaco.d.ts", "prepublishOnly": "mrmdir ./release && npm run compile && node ./scripts/release.js && node ./scripts/bundle && mcopy ./src/monaco.d.ts ./release/monaco.d.ts",
"install-service-next": "npm install vscode-json-languageservice@next -f -D && npm install vscode-languageserver-types@next -f -D", "install-service-next": "npm install vscode-json-languageservice@next -f -D && npm install vscode-languageserver-types@next -f -D",
"install-service-local": "npm install ../vscode-json-languageservice -f -D && npm install ../vscode-languageserver-node/types -f -D" "install-service-local": "npm install ../vscode-json-languageservice -f -D && npm install ../vscode-languageserver-node/types -f -D"
}, },
@ -19,13 +19,13 @@
"url": "https://github.com/Microsoft/monaco-json/issues" "url": "https://github.com/Microsoft/monaco-json/issues"
}, },
"devDependencies": { "devDependencies": {
"jsonc-parser": "^2.0.1", "jsonc-parser": "^2.0.2",
"monaco-editor-core": "0.14.1", "monaco-editor-core": "0.15.0",
"monaco-languages": "1.4.0", "monaco-languages": "1.6.0",
"monaco-plugin-helpers": "^1.0.2", "monaco-plugin-helpers": "^1.0.2",
"requirejs": "^2.3.5", "requirejs": "^2.3.6",
"typescript": "3.0.1", "typescript": "3.1.6",
"uglify-js": "^3.4.7", "uglify-js": "^3.4.9",
"vscode-json-languageservice": "3.1.5", "vscode-json-languageservice": "3.1.5",
"vscode-languageserver-types": "3.10.1" "vscode-languageserver-types": "3.10.1"
} }

View file

@ -29,9 +29,6 @@ class PromiseAdapter<T> implements jsonService.Thenable<T> {
public getWrapped(): monaco.Thenable<T> { public getWrapped(): monaco.Thenable<T> {
return this.wrapped; return this.wrapped;
} }
public cancel(): void {
this.wrapped.cancel();
}
public static resolve<T>(v: T | Thenable<T>): jsonService.Thenable<T> { public static resolve<T>(v: T | Thenable<T>): jsonService.Thenable<T> {
return <monaco.Thenable<T>>monaco.Promise.as(v); return <monaco.Thenable<T>>monaco.Promise.as(v);
} }

View file

@ -225,54 +225,6 @@ function toTextEdit(textEdit: ls.TextEdit): monaco.editor.ISingleEditOperation {
} }
} }
interface DataCompletionItem extends monaco.languages.CompletionItem {
data?: any;
}
function toCompletionItem(entry: ls.CompletionItem): DataCompletionItem {
return {
label: entry.label,
insertText: entry.insertText,
sortText: entry.sortText,
filterText: entry.filterText,
documentation: entry.documentation,
detail: entry.detail,
kind: toCompletionItemKind(entry.kind),
textEdit: toTextEdit(entry.textEdit),
data: entry.data
};
}
function fromMarkdownString(entry: string | monaco.IMarkdownString): ls.MarkupContent {
return {
kind: (typeof entry === 'string' ? ls.MarkupKind.PlainText : ls.MarkupKind.Markdown),
value: (typeof entry === 'string' ? entry : entry.value)
}
}
function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem {
let item: ls.CompletionItem = {
label: entry.label,
sortText: entry.sortText,
filterText: entry.filterText,
documentation: fromMarkdownString(entry.documentation),
detail: entry.detail,
kind: fromCompletionItemKind(entry.kind),
data: entry.data
};
if (typeof entry.insertText === 'object' && typeof entry.insertText.value === 'string') {
item.insertText = entry.insertText.value;
item.insertTextFormat = ls.InsertTextFormat.Snippet
} else {
item.insertText = <string>entry.insertText;
}
if (entry.range) {
item.textEdit = ls.TextEdit.replace(fromRange(entry.range), item.insertText);
}
return item;
}
export class CompletionAdapter implements monaco.languages.CompletionItemProvider { export class CompletionAdapter implements monaco.languages.CompletionItemProvider {
constructor(private _worker: WorkerAccessor) { constructor(private _worker: WorkerAccessor) {
@ -282,11 +234,11 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
return [' ', ':']; return [' ', ':'];
} }
provideCompletionItems(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.CompletionList> { provideCompletionItems(model: monaco.editor.IReadOnlyModel, position: Position, context: monaco.languages.CompletionContext, token: CancellationToken): Thenable<monaco.languages.CompletionList> {
const wordInfo = model.getWordUntilPosition(position); const wordInfo = model.getWordUntilPosition(position);
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => { return this._worker(resource).then(worker => {
return worker.doComplete(resource.toString(), fromPosition(position)); return worker.doComplete(resource.toString(), fromPosition(position));
}).then(info => { }).then(info => {
if (!info) { if (!info) {
@ -295,7 +247,7 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
let items: monaco.languages.CompletionItem[] = info.items.map(entry => { let items: monaco.languages.CompletionItem[] = info.items.map(entry => {
let item: monaco.languages.CompletionItem = { let item: monaco.languages.CompletionItem = {
label: entry.label, label: entry.label,
insertText: entry.insertText, insertText: entry.insertText || entry.label,
sortText: entry.sortText, sortText: entry.sortText,
filterText: entry.filterText, filterText: entry.filterText,
documentation: entry.documentation, documentation: entry.documentation,
@ -306,17 +258,20 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
item.range = toRange(entry.textEdit.range); item.range = toRange(entry.textEdit.range);
item.insertText = entry.textEdit.newText; item.insertText = entry.textEdit.newText;
} }
if (entry.additionalTextEdits) {
item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit)
}
if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) { if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) {
item.insertText = { value: <string>item.insertText }; item.insertTextRules = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet;
} }
return item; return item;
}); });
return { return {
isIncomplete: info.isIncomplete, isIncomplete: info.isIncomplete,
items: items suggestions: items
}; };
})); });
} }
} }
@ -365,7 +320,7 @@ export class HoverAdapter implements monaco.languages.HoverProvider {
provideHover(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.Hover> { provideHover(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.Hover> {
let resource = model.uri; let resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => { return this._worker(resource).then(worker => {
return worker.doHover(resource.toString(), fromPosition(position)); return worker.doHover(resource.toString(), fromPosition(position));
}).then(info => { }).then(info => {
if (!info) { if (!info) {
@ -375,7 +330,7 @@ export class HoverAdapter implements monaco.languages.HoverProvider {
range: toRange(info.range), range: toRange(info.range),
contents: toMarkedStringArray(info.contents) contents: toMarkedStringArray(info.contents)
}; };
})); });
} }
} }
@ -426,7 +381,7 @@ export class DocumentSymbolAdapter implements monaco.languages.DocumentSymbolPro
public provideDocumentSymbols(model: monaco.editor.IReadOnlyModel, token: CancellationToken): Thenable<monaco.languages.DocumentSymbol[]> { public provideDocumentSymbols(model: monaco.editor.IReadOnlyModel, token: CancellationToken): Thenable<monaco.languages.DocumentSymbol[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => worker.findDocumentSymbols(resource.toString())).then(items => { return this._worker(resource).then(worker => worker.findDocumentSymbols(resource.toString())).then(items => {
if (!items) { if (!items) {
return; return;
} }
@ -438,7 +393,7 @@ export class DocumentSymbolAdapter implements monaco.languages.DocumentSymbolPro
range: toRange(item.location.range), range: toRange(item.location.range),
selectionRange: toRange(item.location.range) selectionRange: toRange(item.location.range)
})); }));
})); });
} }
} }
@ -458,14 +413,14 @@ export class DocumentFormattingEditProvider implements monaco.languages.Document
public provideDocumentFormattingEdits(model: monaco.editor.IReadOnlyModel, options: monaco.languages.FormattingOptions, token: CancellationToken): Thenable<monaco.editor.ISingleEditOperation[]> { public provideDocumentFormattingEdits(model: monaco.editor.IReadOnlyModel, options: monaco.languages.FormattingOptions, token: CancellationToken): Thenable<monaco.editor.ISingleEditOperation[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => { return this._worker(resource).then(worker => {
return worker.format(resource.toString(), null, fromFormattingOptions(options)).then(edits => { return worker.format(resource.toString(), null, fromFormattingOptions(options)).then(edits => {
if (!edits || edits.length === 0) { if (!edits || edits.length === 0) {
return; return;
} }
return edits.map(toTextEdit); return edits.map(toTextEdit);
}); });
})); });
} }
} }
@ -477,14 +432,14 @@ export class DocumentRangeFormattingEditProvider implements monaco.languages.Doc
public provideDocumentRangeFormattingEdits(model: monaco.editor.IReadOnlyModel, range: Range, options: monaco.languages.FormattingOptions, token: CancellationToken): Thenable<monaco.editor.ISingleEditOperation[]> { public provideDocumentRangeFormattingEdits(model: monaco.editor.IReadOnlyModel, range: Range, options: monaco.languages.FormattingOptions, token: CancellationToken): Thenable<monaco.editor.ISingleEditOperation[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => { return this._worker(resource).then(worker => {
return worker.format(resource.toString(), fromRange(range), fromFormattingOptions(options)).then(edits => { return worker.format(resource.toString(), fromRange(range), fromFormattingOptions(options)).then(edits => {
if (!edits || edits.length === 0) { if (!edits || edits.length === 0) {
return; return;
} }
return edits.map(toTextEdit); return edits.map(toTextEdit);
}); });
})); });
} }
} }
@ -496,7 +451,7 @@ export class DocumentColorAdapter implements monaco.languages.DocumentColorProvi
public provideDocumentColors(model: monaco.editor.IReadOnlyModel, token: CancellationToken): Thenable<monaco.languages.IColorInformation[]> { public provideDocumentColors(model: monaco.editor.IReadOnlyModel, token: CancellationToken): Thenable<monaco.languages.IColorInformation[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => worker.findDocumentColors(resource.toString())).then(infos => { return this._worker(resource).then(worker => worker.findDocumentColors(resource.toString())).then(infos => {
if (!infos) { if (!infos) {
return; return;
} }
@ -504,13 +459,13 @@ export class DocumentColorAdapter implements monaco.languages.DocumentColorProvi
color: item.color, color: item.color,
range: toRange(item.range) range: toRange(item.range)
})); }));
})); });
} }
public provideColorPresentations(model: monaco.editor.IReadOnlyModel, info: monaco.languages.IColorInformation, token: CancellationToken): Thenable<monaco.languages.IColorPresentation[]> { public provideColorPresentations(model: monaco.editor.IReadOnlyModel, info: monaco.languages.IColorInformation, token: CancellationToken): Thenable<monaco.languages.IColorPresentation[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => worker.getColorPresentations(resource.toString(), info.color, fromRange(info.range))).then(presentations => { return this._worker(resource).then(worker => worker.getColorPresentations(resource.toString(), info.color, fromRange(info.range))).then(presentations => {
if (!presentations) { if (!presentations) {
return; return;
} }
@ -526,7 +481,7 @@ export class DocumentColorAdapter implements monaco.languages.DocumentColorProvi
} }
return item; return item;
}); });
})); });
} }
} }
@ -538,7 +493,7 @@ export class FoldingRangeAdapter implements monaco.languages.FoldingRangeProvide
public provideFoldingRanges(model: monaco.editor.IReadOnlyModel, context: monaco.languages.FoldingContext, token: CancellationToken): Thenable<monaco.languages.FoldingRange[]> { public provideFoldingRanges(model: monaco.editor.IReadOnlyModel, context: monaco.languages.FoldingContext, token: CancellationToken): Thenable<monaco.languages.FoldingRange[]> {
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => worker.provideFoldingRanges(resource.toString(), context)).then(ranges => { return this._worker(resource).then(worker => worker.provideFoldingRanges(resource.toString(), context)).then(ranges => {
if (!ranges) { if (!ranges) {
return; return;
} }
@ -552,7 +507,7 @@ export class FoldingRangeAdapter implements monaco.languages.FoldingRangeProvide
} }
return result; return result;
}); });
})); });
} }
} }
@ -565,13 +520,3 @@ function toFoldingRangeKind(kind: ls.FoldingRangeKind): monaco.languages.Folding
} }
return void 0; return void 0;
} }
/**
* Hook a cancellation token to a WinJS Promise
*/
function wireCancellationToken<T>(token: CancellationToken, promise: Thenable<T>): Thenable<T> {
if ((<Promise<T>>promise).cancel) {
token.onCancellationRequested(() => (<Promise<T>>promise).cancel());
}
return promise;
}

View file

@ -4,8 +4,8 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict'; 'use strict';
import {LanguageServiceDefaultsImpl} from './monaco.contribution'; import { LanguageServiceDefaultsImpl } from './monaco.contribution';
import {JSONWorker} from './jsonWorker'; import { JSONWorker } from './jsonWorker';
import Promise = monaco.Promise; import Promise = monaco.Promise;
import IDisposable = monaco.IDisposable; import IDisposable = monaco.IDisposable;
@ -82,26 +82,10 @@ export class WorkerManager {
getLanguageServiceWorker(...resources: Uri[]): Promise<JSONWorker> { getLanguageServiceWorker(...resources: Uri[]): Promise<JSONWorker> {
let _client: JSONWorker; let _client: JSONWorker;
return toShallowCancelPromise( return this._getClient().then((client) => {
this._getClient().then((client) => { _client = client
_client = client }).then(_ => {
}).then(_ => { return this._worker.withSyncedResources(resources)
return this._worker.withSyncedResources(resources) }).then(_ => _client);
}).then(_ => _client)
);
} }
} }
function toShallowCancelPromise<T>(p: Promise<T>): Promise<T> {
let completeCallback: (value: T) => void;
let errorCallback: (err: any) => void;
let r = new Promise<T>((c, e) => {
completeCallback = c;
errorCallback = e;
}, () => { });
p.then(completeCallback, errorCallback);
return r;
}