From ccfbbbe9d860fc84dd85970b80fd8c6ce743bedc Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Sat, 20 Nov 2021 12:05:44 +0100 Subject: [PATCH] Use extensions for directly importing files For better ESM compatibility, this adds a file extension for nested package files. This also removes the nested special handling of `vscode-languageserver-types` and `vscode-languageserver-document` imports. This is unnecessary, because they use the `"module"` field in `package.json`. --- .eslintrc.yaml | 1 + build.js | 20 ++++---------------- examples/demo/src/types.d.ts | 2 +- src/languageFeatures.ts | 4 ++-- src/monaco.contribution.ts | 2 +- src/workerManager.ts | 2 +- src/yaml.worker.ts | 2 +- src/yamlMode.ts | 2 +- src/yamlWorker.ts | 4 ++-- 9 files changed, 14 insertions(+), 25 deletions(-) diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 2fd574c..3435395 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -8,6 +8,7 @@ rules: '@typescript-eslint/no-shadow': off '@typescript-eslint/no-unnecessary-condition': off + import/extensions: off import/no-extraneous-dependencies: off import/no-unresolved: off diff --git a/build.js b/build.js index fa9dd83..ace46af 100755 --- a/build.js +++ b/build.js @@ -22,20 +22,8 @@ fs.rm(join(__dirname, 'lib'), { force: true, recursive: true }) setup({ onResolve }) { // The yaml language service only imports re-exports of vscode-languageserver-types from // vscode-languageserver. - onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({ - path: 'vscode-languageserver-textdocument/lib/esm/main.js', - external: true, - })); - // The yaml language service only imports re-exports of vscode-languageserver-types from - // vscode-languageserver. - onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({ - path: 'vscode-languageserver-types/lib/esm/main.js', - external: true, - })); - // The yaml language service only imports re-exports of vscode-languageserver-types from - // vscode-languageserver. - onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({ - path: 'vscode-languageserver-types/lib/esm/main.js', + onResolve({ filter: /^vscode-languageserver(\/node|-protocol)?$/ }, () => ({ + path: 'vscode-languageserver-types', external: true, })); // The yaml language service uses path. We can stub it using path-browserify. @@ -45,8 +33,8 @@ fs.rm(join(__dirname, 'lib'), { force: true, recursive: true }) })); // The main prettier entry point contains all of Prettier. // The standalone bundle is smaller and works fine for us. - onResolve({ filter: /^prettier$/ }, () => ({ - path: 'prettier/standalone', + onResolve({ filter: /^prettier/ }, ({ path }) => ({ + path: path === 'prettier' ? 'prettier/standalone.js' : `${path}.js`, external: true, })); // This tiny filler implementation serves all our needs. diff --git a/examples/demo/src/types.d.ts b/examples/demo/src/types.d.ts index e32f2bf..95032ee 100644 --- a/examples/demo/src/types.d.ts +++ b/examples/demo/src/types.d.ts @@ -15,7 +15,7 @@ declare module 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymb ): Promise; } -declare module 'monaco-editor/esm/vs/editor/editor.worker' { +declare module 'monaco-editor/esm/vs/editor/editor.worker.js' { import { worker } from 'monaco-editor/esm/vs/editor/editor.api'; export function initialize( diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 02bd875..22102bc 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -6,9 +6,9 @@ import { Position, Range, Uri, -} from 'monaco-editor/esm/vs/editor/editor.api'; +} from 'monaco-editor/esm/vs/editor/editor.api.js'; import * as ls from 'vscode-languageserver-types'; -import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService'; +import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService.js'; import { languageId } from './constants'; import { YAMLWorker } from './yamlWorker'; diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 8bcb4c1..80f98b1 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -1,4 +1,4 @@ -import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api'; +import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api.js'; import { languageId } from './constants'; import { setupMode } from './yamlMode'; diff --git a/src/workerManager.ts b/src/workerManager.ts index 998d202..581bca0 100644 --- a/src/workerManager.ts +++ b/src/workerManager.ts @@ -1,4 +1,4 @@ -import { editor, languages } from 'monaco-editor/esm/vs/editor/editor.api'; +import { editor, languages } from 'monaco-editor/esm/vs/editor/editor.api.js'; import { WorkerAccessor } from './languageFeatures'; import { YAMLWorker } from './yamlWorker'; diff --git a/src/yaml.worker.ts b/src/yaml.worker.ts index 4425adb..015f221 100644 --- a/src/yaml.worker.ts +++ b/src/yaml.worker.ts @@ -1,4 +1,4 @@ -import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker'; +import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker.js'; import { createYAMLWorker, ICreateData } from './yamlWorker'; diff --git a/src/yamlMode.ts b/src/yamlMode.ts index b045c46..0c51b7a 100644 --- a/src/yamlMode.ts +++ b/src/yamlMode.ts @@ -1,4 +1,4 @@ -import { languages } from 'monaco-editor/esm/vs/editor/editor.api'; +import { languages } from 'monaco-editor/esm/vs/editor/editor.api.js'; import { languageId } from './constants'; import { diff --git a/src/yamlWorker.ts b/src/yamlWorker.ts index 6ace52a..ab342d5 100644 --- a/src/yamlWorker.ts +++ b/src/yamlWorker.ts @@ -1,4 +1,4 @@ -import { worker } from 'monaco-editor/esm/vs/editor/editor.api'; +import { worker } from 'monaco-editor/esm/vs/editor/editor.api.js'; import { Promisable } from 'type-fest'; import { TextDocument } from 'vscode-languageserver-textdocument'; import * as ls from 'vscode-languageserver-types'; @@ -6,7 +6,7 @@ import { CustomFormatterOptions, getLanguageService, LanguageSettings, -} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService'; +} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService.js'; import { languageId } from './constants';