From a95fdc446339bd04659a012dcea94718bf3f793b Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Mon, 23 Aug 2021 17:19:36 +0200 Subject: [PATCH] Use type-fest Promisable for worker return types Monaco turns the synchronous return values into promises anyway. --- package-lock.json | 52 +++++++++++++++++++++++++++++++++++++---------- package.json | 1 + src/yamlWorker.ts | 23 ++++++++++----------- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0062b6c..1144edd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "husky": "^7.0.1", "lint-staged": "^11.1.1", "monaco-editor": "^0.27.0", + "type-fest": "^2.1.0", "typescript": "^4.3.5", "yaml-language-server": "^0.22.0" }, @@ -5081,6 +5082,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", @@ -10609,12 +10622,12 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.1.0.tgz", + "integrity": "sha512-2wHUmKDy5wNLmebekbHx/zE9ElYAKOmz34psTLG7OwyEJHaIUr6jnaCd55EvgrawAvliwbwgbyH1LkxIfWFyNg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -15670,6 +15683,14 @@ "dev": true, "requires": { "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "globby": { @@ -17136,11 +17157,12 @@ "eslint": "^7.32.0", "eslint-config-remcohaszing": "^3.5.0", "husky": "^7.0.1", - "js-yaml": "4.1.0", + "js-yaml": "^4.1.0", "lint-staged": "^11.1.1", "monaco-editor": "^0.27.0", "path-browserify": "^1.0.1", "prettier": "2.0.5", + "type-fest": "*", "typescript": "^4.3.5", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", @@ -21070,6 +21092,14 @@ "dev": true, "requires": { "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "globby": { @@ -25328,9 +25358,9 @@ } }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.1.0.tgz", + "integrity": "sha512-2wHUmKDy5wNLmebekbHx/zE9ElYAKOmz34psTLG7OwyEJHaIUr6jnaCd55EvgrawAvliwbwgbyH1LkxIfWFyNg==", "dev": true }, "type-is": { @@ -29011,9 +29041,9 @@ } }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.1.0.tgz", + "integrity": "sha512-2wHUmKDy5wNLmebekbHx/zE9ElYAKOmz34psTLG7OwyEJHaIUr6jnaCd55EvgrawAvliwbwgbyH1LkxIfWFyNg==", "dev": true }, "type-is": { diff --git a/package.json b/package.json index 1d9647d..02f7428 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "husky": "^7.0.1", "lint-staged": "^11.1.1", "monaco-editor": "^0.27.0", + "type-fest": "^2.1.0", "typescript": "^4.3.5", "yaml-language-server": "^0.22.0" }, diff --git a/src/yamlWorker.ts b/src/yamlWorker.ts index bc5c6fb..8208989 100644 --- a/src/yamlWorker.ts +++ b/src/yamlWorker.ts @@ -1,4 +1,5 @@ import { worker } from 'monaco-editor/esm/vs/editor/editor.api'; +import { Promisable } from 'type-fest'; import { TextDocument } from 'vscode-languageserver-textdocument'; import * as ls from 'vscode-languageserver-types'; import { @@ -14,17 +15,17 @@ if (typeof fetch !== 'undefined') { } export interface YAMLWorker { - doValidation: (uri: string) => PromiseLike; + doValidation: (uri: string) => Promisable; - doComplete: (uri: string, position: ls.Position) => PromiseLike; + doComplete: (uri: string, position: ls.Position) => Promisable; - doHover: (uri: string, position: ls.Position) => PromiseLike; + doHover: (uri: string, position: ls.Position) => Promisable; - format: (uri: string, options: CustomFormatterOptions) => PromiseLike; + format: (uri: string, options: CustomFormatterOptions) => Promisable; - resetSchema: (uri: string) => PromiseLike; + resetSchema: (uri: string) => Promisable; - findDocumentSymbols: (uri: string) => PromiseLike; + findDocumentSymbols: (uri: string) => Promisable; } export function createYAMLWorker( @@ -61,7 +62,7 @@ export function createYAMLWorker( if (document) { return languageService.doValidation(document, isKubernetes); } - return Promise.resolve([]); + return []; }, doComplete(uri, position) { @@ -76,18 +77,16 @@ export function createYAMLWorker( format(uri, options) { const document = getTextDocument(uri); - const textEdits = languageService.doFormat(document, options); - return Promise.resolve(textEdits); + return languageService.doFormat(document, options); }, resetSchema(uri) { - return Promise.resolve(languageService.resetSchema(uri)); + return languageService.resetSchema(uri); }, findDocumentSymbols(uri) { const document = getTextDocument(uri); - const symbols = languageService.findDocumentSymbols2(document, {}); - return Promise.resolve(symbols); + return languageService.findDocumentSymbols2(document, {}); }, }; }