@volar/monaco 1.6.9 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,23 +36,37 @@ self.onmessage = () => {
36
36
  };
37
37
  ```
38
38
 
39
- #### TypeScript Support
39
+ #### Add TypeScript Support
40
40
 
41
- ```ts
42
- import { createLanguageService, createDtsHost } from '@volar/monaco/worker';
43
- import * as ts from 'typescript';
44
-
45
- createLanguageService({
46
- // ...
47
- typescript: {
48
- module: ts as any,
49
- compilerOptions: {
50
- // ...tsconfig options
51
- },
52
- },
53
- // Enable auto fetch node_modules types
54
- dtsHost: createDtsHost('https://unpkg.com/', { typescript: '4.9.5' }),
55
- });
41
+ ```diff
42
+ import * as worker from 'monaco-editor-core/esm/vs/editor/editor.worker';
43
+ import type * as monaco from 'monaco-editor-core';
44
+ import { createLanguageService } from '@volar/monaco/worker';
45
+ +import * as ts from 'typescript';
46
+ +import createTypeScriptService, { createJsDelivrDtsHost } from 'volar-service-typescript';
47
+
48
+ self.onmessage = () => {
49
+ worker.initialize((ctx: monaco.worker.IWorkerContext) => {
50
+ return createLanguageService({
51
+ workerContext: ctx,
52
+ config: {
53
+ // ...Language Service Config of my-lang language support
54
+ + services: {
55
+ + typescript: createTypeScriptService({
56
+ + // Enable auto fetch node_modules types
57
+ + dtsHost: createJsDelivrDtsHost({ typescript: '4.9.5' }),
58
+ + })
59
+ + },
60
+ },
61
+ + typescript: {
62
+ + module: ts as any,
63
+ + compilerOptions: {
64
+ + // ...tsconfig options
65
+ + },
66
+ + },
67
+ });
68
+ });
69
+ };
56
70
  ```
57
71
 
58
72
  ### Add worker loader to global env
package/out/editor.js CHANGED
@@ -163,5 +163,5 @@ var editor;
163
163
  }
164
164
  }
165
165
  editor_1.activateAutoInsertion = activateAutoInsertion;
166
- })(editor = exports.editor || (exports.editor = {}));
166
+ })(editor || (exports.editor = editor = {}));
167
167
  //# sourceMappingURL=editor.js.map
package/out/languages.js CHANGED
@@ -35,5 +35,5 @@ var languages;
35
35
  return { dispose: () => disposables.forEach((d) => d.dispose()) };
36
36
  }
37
37
  languages_1.registerProvides = registerProvides;
38
- })(languages = exports.languages || (exports.languages = {}));
38
+ })(languages || (exports.languages = languages = {}));
39
39
  //# sourceMappingURL=languages.js.map
@@ -14,10 +14,10 @@ async function createLanguageFeaturesProvider(worker, getSyncUris) {
14
14
  const inlayHints = new WeakMap();
15
15
  const languageService = await worker.getProxy();
16
16
  return {
17
- triggerCharacters: await languageService.triggerCharacters(),
18
- autoFormatTriggerCharacters: await languageService.autoFormatTriggerCharacters(),
19
- signatureHelpTriggerCharacters: await languageService.signatureHelpTriggerCharacters(),
20
- signatureHelpRetriggerCharacters: await languageService.signatureHelpRetriggerCharacters(),
17
+ triggerCharacters: await languageService.getTriggerCharacters(),
18
+ autoFormatTriggerCharacters: await languageService.getAutoFormatTriggerCharacters(),
19
+ signatureHelpTriggerCharacters: await languageService.getSignatureHelpTriggerCharacters(),
20
+ signatureHelpRetriggerCharacters: await languageService.getSignatureHelpRetriggerCharacters(),
21
21
  getLegend() {
22
22
  return language_service_1.standardSemanticTokensLegend;
23
23
  },
package/out/worker.d.ts CHANGED
@@ -1,11 +1,8 @@
1
1
  import { type Config } from '@volar/language-service';
2
2
  import type * as monaco from 'monaco-editor-core';
3
3
  import type * as ts from 'typescript/lib/tsserverlibrary';
4
- import * as webFs from '@volar/web-fs';
5
- export * from '@volar/web-fs';
6
4
  export declare function createLanguageService(options: {
7
5
  workerContext: monaco.worker.IWorkerContext<any>;
8
- dtsHost?: webFs.IDtsHost;
9
6
  config: Config;
10
7
  typescript?: {
11
8
  module: typeof import('typescript/lib/tsserverlibrary');
package/out/worker.js CHANGED
@@ -1,75 +1,37 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
3
  exports.createLanguageService = void 0;
18
4
  const language_service_1 = require("@volar/language-service");
19
5
  const vscode_uri_1 = require("vscode-uri");
20
- const webFs = require("@volar/web-fs");
21
- __exportStar(require("@volar/web-fs"), exports);
22
6
  function createLanguageService(options) {
23
- let dtsClientVersion = 0;
24
7
  const ts = options.typescript?.module;
25
8
  const config = options.config ?? {};
26
- const compilerOptions = options.typescript?.compilerOptions ?? {};
27
9
  const host = createLanguageServiceHost();
28
10
  const languageService = (0, language_service_1.createLanguageService)({ typescript: ts }, {
29
11
  uriToFileName: uri => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'),
30
12
  fileNameToUri: fileName => vscode_uri_1.URI.file(fileName).toString(),
31
13
  rootUri: vscode_uri_1.URI.file('/'),
32
14
  }, config, host);
33
- const dtsClient = options.dtsHost ? webFs.createDtsClient(options.dtsHost) : undefined;
34
- if (!dtsClient) {
35
- return languageService;
36
- }
37
15
  class InnocentRabbit {
38
16
  }
39
17
  ;
40
18
  for (const api in languageService) {
41
19
  const isFunction = typeof languageService[api] === 'function';
42
- if (!isFunction) {
43
- InnocentRabbit.prototype[api] = () => languageService[api];
44
- continue;
20
+ if (isFunction) {
21
+ InnocentRabbit.prototype[api] = languageService[api];
45
22
  }
46
- InnocentRabbit.prototype[api] = async (...args) => {
47
- if (!options.dtsHost) {
48
- return languageService[api](...args);
49
- }
50
- let lastDtsClientVersion = dtsClientVersion;
51
- let result = await languageService[api](...args);
52
- dtsClientVersion = await dtsClient.sync();
53
- while (lastDtsClientVersion !== dtsClientVersion) {
54
- lastDtsClientVersion = dtsClientVersion;
55
- result = await languageService[api](...args);
56
- dtsClientVersion = await dtsClient.sync();
57
- }
58
- return result;
59
- };
60
23
  }
61
24
  return new InnocentRabbit();
62
25
  function createLanguageServiceHost() {
63
26
  let projectVersion = 0;
64
27
  const modelSnapshot = new WeakMap();
65
- const dtsFileSnapshot = new Map();
66
28
  const modelVersions = new Map();
67
29
  const host = {
68
30
  getProjectVersion() {
69
31
  const models = options.workerContext.getMirrorModels();
70
32
  if (modelVersions.size === options.workerContext.getMirrorModels().length) {
71
33
  if (models.every(model => modelVersions.get(model) === model.version)) {
72
- return dtsClientVersion.toString() + ':' + projectVersion.toString();
34
+ return projectVersion;
73
35
  }
74
36
  }
75
37
  modelVersions.clear();
@@ -77,10 +39,7 @@ function createLanguageService(options) {
77
39
  modelVersions.set(model, model.version);
78
40
  }
79
41
  projectVersion++;
80
- return dtsClientVersion.toString() + ':' + projectVersion.toString();
81
- },
82
- getTypeRootsVersion() {
83
- return dtsClientVersion;
42
+ return projectVersion;
84
43
  },
85
44
  getScriptFileNames() {
86
45
  const models = options.workerContext.getMirrorModels();
@@ -88,10 +47,7 @@ function createLanguageService(options) {
88
47
  },
89
48
  getScriptVersion(fileName) {
90
49
  const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
91
- if (model) {
92
- return model.version.toString();
93
- }
94
- return dtsClient?.readFile(fileName)?.length.toString() ?? '';
50
+ return model?.version.toString();
95
51
  },
96
52
  getScriptSnapshot(fileName) {
97
53
  const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
@@ -108,45 +64,13 @@ function createLanguageService(options) {
108
64
  }]);
109
65
  return modelSnapshot.get(model)?.[1];
110
66
  }
111
- if (dtsFileSnapshot.has(fileName)) {
112
- return dtsFileSnapshot.get(fileName);
113
- }
114
- const dtsFileText = dtsClient?.readFile(fileName);
115
- if (dtsFileText !== undefined) {
116
- dtsFileSnapshot.set(fileName, {
117
- getText: (start, end) => dtsFileText.substring(start, end),
118
- getLength: () => dtsFileText.length,
119
- getChangeRange: () => undefined,
120
- });
121
- return dtsFileSnapshot.get(fileName);
122
- }
123
67
  },
124
68
  getCompilationSettings() {
125
- return compilerOptions;
69
+ return options.typescript?.compilerOptions ?? {};
126
70
  },
127
71
  getCurrentDirectory() {
128
72
  return '/';
129
73
  },
130
- getDefaultLibFileName(options) {
131
- if (ts) {
132
- return `/node_modules/typescript/lib/${ts.getDefaultLibFileName(options)}`;
133
- }
134
- return '';
135
- },
136
- readFile(fileName) {
137
- const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
138
- if (model) {
139
- return model.getValue();
140
- }
141
- return dtsClient?.readFile(fileName);
142
- },
143
- fileExists(fileName) {
144
- const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
145
- if (model) {
146
- return true;
147
- }
148
- return dtsClient?.fileExists(fileName) ?? false;
149
- },
150
74
  };
151
75
  return host;
152
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/monaco",
3
- "version": "1.6.9",
3
+ "version": "1.7.0",
4
4
  "main": "out/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -15,13 +15,12 @@
15
15
  "directory": "packages/monaco"
16
16
  },
17
17
  "dependencies": {
18
- "@volar/language-service": "1.6.9",
18
+ "@volar/language-service": "1.7.0",
19
19
  "vscode-uri": "^3.0.7"
20
20
  },
21
21
  "devDependencies": {
22
- "@volar/web-fs": "1.6.9",
23
22
  "monaco-editor-core": "latest",
24
23
  "vscode-languageserver-protocol": "^3.17.3"
25
24
  },
26
- "gitHead": "e676fa08e4186bd2f8cc14861ef65f8d8c855ea1"
25
+ "gitHead": "38ec4f727b32dbf2cf3284ab02695e3a8effacc5"
27
26
  }