diff --git a/package-lock.json b/package-lock.json index b5316369..5678b42d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -429,15 +429,15 @@ } }, "monaco-editor-core": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.20.0.tgz", - "integrity": "sha512-4mdmfEejTvRZzrEIn70jqqNl3g15vnkRdTkJ8uMK4jiljntlwhiSc5vknZOLt1QM8za16C3tDrSl2mTL9ma2Sg==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.21.0.tgz", + "integrity": "sha512-buBxOxwexlb7pdQrIHjj7OGmtVmEe735NN7M8GbhN03eYAKQmaeIAs1AyneOOHvbvh1Ntm7PoHH8f196gd2p6w==", "dev": true }, "monaco-languages": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.10.0.tgz", - "integrity": "sha512-ARAws17Xh0K4WsZYkJY6CqHn9EYdYN8CjzK6w/jgXIwU0owzCdUWxzu+FNJ/LeDLcKxL/YK3phcwGFj9IqX2yw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-2.1.0.tgz", + "integrity": "sha512-c2afUp3lbUCrvEdVrH8EThQYbj5tb2FpvXFnFN3gOJScDlFknWb5nbaxiaVqY9CSIqzJVZpNc5HXpP5FWOuS3g==", "dev": true }, "monaco-plugin-helpers": { @@ -721,9 +721,9 @@ } }, "terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.1.tgz", - "integrity": "sha512-yD80f4hdwCWTH5mojzxe1q8bN1oJbsK/vfJGLcPZM/fl+/jItIVNKhFIHqqR71OipFWMLgj3Kc+GIp6CeIqfnA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.2.tgz", + "integrity": "sha512-H67sydwBz5jCUA32ZRL319ULu+Su1cAoZnnc+lXnenGRYWyLE3Scgkt8mNoAsMx0h5kdo758zdoS0LG9rYZXDQ==", "dev": true, "requires": { "commander": "^2.20.0", @@ -732,9 +732,9 @@ } }, "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", + "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", "dev": true }, "which": { diff --git a/package.json b/package.json index 7c90f73f..c81bac1b 100644 --- a/package.json +++ b/package.json @@ -25,14 +25,14 @@ "devDependencies": { "@typescript/vfs": "^1.3.0", "husky": "^4.3.0", - "monaco-editor-core": "^0.20.0", - "monaco-languages": "^1.10.0", + "monaco-editor-core": "^0.21.0", + "monaco-languages": "^2.1.0", "monaco-plugin-helpers": "^1.0.3", - "prettier": "^2.1.1", - "pretty-quick": "^3.0.0", + "prettier": "^2.1.2", + "pretty-quick": "^3.0.2", "requirejs": "^2.3.6", - "terser": "^5.3.0", - "typescript": "^4.0.2" + "terser": "^5.3.2", + "typescript": "^4.0.3" }, "husky": { "hooks": { diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index cb58f1f5..4ac245a9 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -387,6 +387,7 @@ interface MyCompletionItem extends languages.CompletionItem { label: string; uri: Uri; position: Position; + offset: number; } export class SuggestAdapter extends Adapter implements languages.CompletionItemProvider { @@ -433,6 +434,7 @@ export class SuggestAdapter extends Adapter implements languages.CompletionItemP return { uri: resource, position: position, + offset: offset, range: range, label: entry.name, insertText: entry.name, @@ -448,15 +450,13 @@ export class SuggestAdapter extends Adapter implements languages.CompletionItemP } public async resolveCompletionItem( - model: editor.ITextModel, - _position: Position, item: languages.CompletionItem, token: CancellationToken ): Promise { const myItem = item; const resource = myItem.uri; const position = myItem.position; - const offset = model.getOffsetAt(position); + const offset = myItem.offset; const worker = await this._worker(resource); const details = await worker.getCompletionEntryDetails( @@ -464,7 +464,7 @@ export class SuggestAdapter extends Adapter implements languages.CompletionItemP offset, myItem.label ); - if (!details || model.isDisposed()) { + if (!details) { return myItem; } return { diff --git a/src/lib/typescriptServices-amd.js b/src/lib/typescriptServices-amd.js index 88eaf23a..bde87697 100644 --- a/src/lib/typescriptServices-amd.js +++ b/src/lib/typescriptServices-amd.js @@ -291,7 +291,7 @@ var ts; // If changing the text in this section, be sure to test `configurePrerelease` too. ts.versionMajorMinor = "4.0"; /** The version of the TypeScript compiler release */ - ts.version = "4.0.2"; + ts.version = "4.0.3"; /* @internal */ var Comparison; (function (Comparison) { @@ -70195,13 +70195,10 @@ var ts; function checkTupleType(node) { var elementTypes = node.elements; var seenOptionalElement = false; - var seenNamedElement = false; + var hasNamedElement = ts.some(elementTypes, ts.isNamedTupleMember); for (var i = 0; i < elementTypes.length; i++) { var e = elementTypes[i]; - if (e.kind === 191 /* NamedTupleMember */) { - seenNamedElement = true; - } - else if (seenNamedElement) { + if (e.kind !== 191 /* NamedTupleMember */ && hasNamedElement) { grammarErrorOnNode(e, ts.Diagnostics.Tuple_members_must_all_have_names_or_all_not_have_names); break; } @@ -112424,7 +112421,10 @@ var ts; var newImport = sortedNewImports_1[_i]; var insertionIndex = ts.OrganizeImports.getImportDeclarationInsertionIndex(existingImportStatements, newImport); if (insertionIndex === 0) { - changes.insertNodeBefore(sourceFile, existingImportStatements[0], newImport, /*blankLineBetween*/ false); + // If the first import is top-of-file, insert after the leading comment which is likely the header. + var options = existingImportStatements[0] === sourceFile.statements[0] ? + { leadingTriviaOption: ts.textChanges.LeadingTriviaOption.Exclude } : {}; + changes.insertNodeBefore(sourceFile, existingImportStatements[0], newImport, /*blankLineBetween*/ false, options); } else { var prevImport = existingImportStatements[insertionIndex - 1]; @@ -129552,9 +129552,10 @@ var ts; this.insertNodeAt(sourceFile, parameters.pos, newParam); } }; - ChangeTracker.prototype.insertNodeBefore = function (sourceFile, before, newNode, blankLineBetween) { + ChangeTracker.prototype.insertNodeBefore = function (sourceFile, before, newNode, blankLineBetween, options) { if (blankLineBetween === void 0) { blankLineBetween = false; } - this.insertNodeAt(sourceFile, getAdjustedStartPosition(sourceFile, before, {}), newNode, this.getOptionsForInsertNodeBefore(before, newNode, blankLineBetween)); + if (options === void 0) { options = {}; } + this.insertNodeAt(sourceFile, getAdjustedStartPosition(sourceFile, before, options), newNode, this.getOptionsForInsertNodeBefore(before, newNode, blankLineBetween)); }; ChangeTracker.prototype.insertModifierBefore = function (sourceFile, modifier, before) { var pos = before.getStart(sourceFile); @@ -133422,7 +133423,7 @@ var ts; else if (existingSpecifiers === null || existingSpecifiers === void 0 ? void 0 : existingSpecifiers.length) { for (var _b = 0, newSpecifiers_2 = newSpecifiers; _b < newSpecifiers_2.length; _b++) { var spec = newSpecifiers_2[_b]; - changes.insertNodeAtEndOfList(sourceFile, existingSpecifiers, spec); + changes.insertNodeInListAfter(sourceFile, ts.last(existingSpecifiers), spec, existingSpecifiers); } } else { diff --git a/src/lib/typescriptServices.js b/src/lib/typescriptServices.js index b9e8fadf..6f821204 100644 --- a/src/lib/typescriptServices.js +++ b/src/lib/typescriptServices.js @@ -291,7 +291,7 @@ var ts; // If changing the text in this section, be sure to test `configurePrerelease` too. ts.versionMajorMinor = "4.0"; /** The version of the TypeScript compiler release */ - ts.version = "4.0.2"; + ts.version = "4.0.3"; /* @internal */ var Comparison; (function (Comparison) { @@ -70195,13 +70195,10 @@ var ts; function checkTupleType(node) { var elementTypes = node.elements; var seenOptionalElement = false; - var seenNamedElement = false; + var hasNamedElement = ts.some(elementTypes, ts.isNamedTupleMember); for (var i = 0; i < elementTypes.length; i++) { var e = elementTypes[i]; - if (e.kind === 191 /* NamedTupleMember */) { - seenNamedElement = true; - } - else if (seenNamedElement) { + if (e.kind !== 191 /* NamedTupleMember */ && hasNamedElement) { grammarErrorOnNode(e, ts.Diagnostics.Tuple_members_must_all_have_names_or_all_not_have_names); break; } @@ -112424,7 +112421,10 @@ var ts; var newImport = sortedNewImports_1[_i]; var insertionIndex = ts.OrganizeImports.getImportDeclarationInsertionIndex(existingImportStatements, newImport); if (insertionIndex === 0) { - changes.insertNodeBefore(sourceFile, existingImportStatements[0], newImport, /*blankLineBetween*/ false); + // If the first import is top-of-file, insert after the leading comment which is likely the header. + var options = existingImportStatements[0] === sourceFile.statements[0] ? + { leadingTriviaOption: ts.textChanges.LeadingTriviaOption.Exclude } : {}; + changes.insertNodeBefore(sourceFile, existingImportStatements[0], newImport, /*blankLineBetween*/ false, options); } else { var prevImport = existingImportStatements[insertionIndex - 1]; @@ -129552,9 +129552,10 @@ var ts; this.insertNodeAt(sourceFile, parameters.pos, newParam); } }; - ChangeTracker.prototype.insertNodeBefore = function (sourceFile, before, newNode, blankLineBetween) { + ChangeTracker.prototype.insertNodeBefore = function (sourceFile, before, newNode, blankLineBetween, options) { if (blankLineBetween === void 0) { blankLineBetween = false; } - this.insertNodeAt(sourceFile, getAdjustedStartPosition(sourceFile, before, {}), newNode, this.getOptionsForInsertNodeBefore(before, newNode, blankLineBetween)); + if (options === void 0) { options = {}; } + this.insertNodeAt(sourceFile, getAdjustedStartPosition(sourceFile, before, options), newNode, this.getOptionsForInsertNodeBefore(before, newNode, blankLineBetween)); }; ChangeTracker.prototype.insertModifierBefore = function (sourceFile, modifier, before) { var pos = before.getStart(sourceFile); @@ -133422,7 +133423,7 @@ var ts; else if (existingSpecifiers === null || existingSpecifiers === void 0 ? void 0 : existingSpecifiers.length) { for (var _b = 0, newSpecifiers_2 = newSpecifiers; _b < newSpecifiers_2.length; _b++) { var spec = newSpecifiers_2[_b]; - changes.insertNodeAtEndOfList(sourceFile, existingSpecifiers, spec); + changes.insertNodeInListAfter(sourceFile, ts.last(existingSpecifiers), spec, existingSpecifiers); } } else { diff --git a/src/lib/typescriptServicesMetadata.ts b/src/lib/typescriptServicesMetadata.ts index 6bc0a4d6..2d0fe9b5 100644 --- a/src/lib/typescriptServicesMetadata.ts +++ b/src/lib/typescriptServicesMetadata.ts @@ -2,4 +2,4 @@ // **NOTE**: Do not edit directly! This file is generated using `npm run import-typescript` // -export const typescriptVersion = "4.0.2"; +export const typescriptVersion = "4.0.3";