@volar/monaco 2.4.0-alpha.0 → 2.4.0-alpha.2

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.
Files changed (3) hide show
  1. package/package.json +4 -4
  2. package/worker.d.ts +11 -3
  3. package/worker.js +44 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/monaco",
3
- "version": "2.4.0-alpha.0",
3
+ "version": "2.4.0-alpha.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -13,8 +13,8 @@
13
13
  "directory": "packages/monaco"
14
14
  },
15
15
  "dependencies": {
16
- "@volar/language-service": "2.4.0-alpha.0",
17
- "@volar/typescript": "2.4.0-alpha.0",
16
+ "@volar/language-service": "2.4.0-alpha.2",
17
+ "@volar/typescript": "2.4.0-alpha.2",
18
18
  "monaco-languageserver-types": "^0.3.4",
19
19
  "monaco-types": "^0.1.0",
20
20
  "vscode-uri": "^3.0.8"
@@ -22,5 +22,5 @@
22
22
  "devDependencies": {
23
23
  "monaco-editor-core": "latest"
24
24
  },
25
- "gitHead": "007fc74c461e2fd3fb269bf4f3924cc23c35ba56"
25
+ "gitHead": "62914047f925b79391fee6e4f697705b77641baf"
26
26
  }
package/worker.d.ts CHANGED
@@ -1,15 +1,19 @@
1
- import { LanguagePlugin, LanguageServicePlugin, type LanguageServiceEnvironment } from '@volar/language-service';
1
+ import { Language, LanguagePlugin, LanguageServicePlugin, ProjectContext, type LanguageServiceEnvironment } from '@volar/language-service';
2
2
  import type * as monaco from 'monaco-types';
3
3
  import type * as ts from 'typescript';
4
4
  import type { URI } from 'vscode-uri';
5
5
  export * from '@volar/language-service';
6
6
  export * from './lib/ata.js';
7
- export declare function createSimpleWorkerService<T = {}>({ env, workerContext, languagePlugins, servicePlugins, extraApis, }: {
7
+ export declare function createSimpleWorkerService<T = {}>({ env, workerContext, languagePlugins, servicePlugins, extraApis, setup, }: {
8
8
  env: LanguageServiceEnvironment;
9
9
  workerContext: monaco.worker.IWorkerContext<any>;
10
10
  languagePlugins?: LanguagePlugin<URI>[];
11
11
  servicePlugins?: LanguageServicePlugin[];
12
12
  extraApis?: T;
13
+ setup?(options: {
14
+ language: Language<URI>;
15
+ project: ProjectContext;
16
+ }): void;
13
17
  }): {
14
18
  dispose: () => void;
15
19
  context: import("@volar/language-service").LanguageServiceContext;
@@ -74,7 +78,7 @@ export declare function createSimpleWorkerService<T = {}>({ env, workerContext,
74
78
  resolveInlayHint: (item: import("@volar/language-service").InlayHint, token?: import("@volar/language-service").CancellationToken) => Promise<import("@volar/language-service").InlayHint>;
75
79
  resolveWorkspaceSymbol: (symbol: import("@volar/language-service").WorkspaceSymbol, token?: import("@volar/language-service").CancellationToken) => Promise<import("@volar/language-service").WorkspaceSymbol>;
76
80
  } & T;
77
- export declare function createTypeScriptWorkerService<T = {}>({ typescript: ts, compilerOptions, env, uriConverter, workerContext, languagePlugins, servicePlugins, extraApis, }: {
81
+ export declare function createTypeScriptWorkerService<T = {}>({ typescript: ts, compilerOptions, env, uriConverter, workerContext, languagePlugins, servicePlugins, extraApis, setup, }: {
78
82
  typescript: typeof import('typescript');
79
83
  compilerOptions: ts.CompilerOptions;
80
84
  env: LanguageServiceEnvironment;
@@ -86,6 +90,10 @@ export declare function createTypeScriptWorkerService<T = {}>({ typescript: ts,
86
90
  languagePlugins?: LanguagePlugin<URI>[];
87
91
  servicePlugins?: LanguageServicePlugin[];
88
92
  extraApis?: T;
93
+ setup?(options: {
94
+ language: Language<URI>;
95
+ project: ProjectContext;
96
+ }): void;
89
97
  }): {
90
98
  dispose: () => void;
91
99
  context: import("@volar/language-service").LanguageServiceContext;
package/worker.js CHANGED
@@ -3,7 +3,7 @@ import { createLanguageServiceHost, createSys, resolveFileLanguageId } from '@vo
3
3
  export * from '@volar/language-service';
4
4
  export * from './lib/ata.js';
5
5
  const fsFileSnapshots = createUriMap();
6
- export function createSimpleWorkerService({ env, workerContext, languagePlugins = [], servicePlugins = [], extraApis = {}, }) {
6
+ export function createSimpleWorkerService({ env, workerContext, languagePlugins = [], servicePlugins = [], extraApis = {}, setup, }) {
7
7
  const snapshots = new Map();
8
8
  const language = createLanguage(languagePlugins, createUriMap(false), uri => {
9
9
  const model = workerContext.getMirrorModels().find(model => model.uri.toString() === uri.toString());
@@ -25,9 +25,11 @@ export function createSimpleWorkerService({ env, workerContext, languagePlugins
25
25
  language.scripts.delete(uri);
26
26
  }
27
27
  });
28
- return createWorkerService(language, servicePlugins, env, extraApis);
28
+ const project = {};
29
+ setup?.({ language, project });
30
+ return createWorkerService(language, servicePlugins, env, project, extraApis);
29
31
  }
30
- export function createTypeScriptWorkerService({ typescript: ts, compilerOptions, env, uriConverter, workerContext, languagePlugins = [], servicePlugins = [], extraApis = {}, }) {
32
+ export function createTypeScriptWorkerService({ typescript: ts, compilerOptions, env, uriConverter, workerContext, languagePlugins = [], servicePlugins = [], extraApis = {}, setup, }) {
31
33
  let projectVersion = 0;
32
34
  const modelSnapshot = new WeakMap();
33
35
  const modelVersions = new Map();
@@ -66,42 +68,45 @@ export function createTypeScriptWorkerService({ typescript: ts, compilerOptions,
66
68
  language.scripts.delete(uri);
67
69
  }
68
70
  });
69
- language.typescript = {
70
- configFileName: undefined,
71
- sys,
72
- asFileName: uriConverter.asFileName,
73
- asScriptId: uriConverter.asUri,
74
- ...createLanguageServiceHost(ts, sys, language, uriConverter.asUri, {
75
- getCurrentDirectory() {
76
- return sys.getCurrentDirectory();
77
- },
78
- getScriptFileNames() {
79
- return workerContext.getMirrorModels().map(model => uriConverter.asFileName(model.uri));
80
- },
81
- getProjectVersion() {
82
- const models = workerContext.getMirrorModels();
83
- if (modelVersions.size === workerContext.getMirrorModels().length) {
84
- if (models.every(model => modelVersions.get(model) === model.version)) {
85
- return projectVersion.toString();
71
+ const project = {
72
+ typescript: {
73
+ configFileName: undefined,
74
+ sys,
75
+ asFileName: uriConverter.asFileName,
76
+ asUri: uriConverter.asUri,
77
+ ...createLanguageServiceHost(ts, sys, language, uriConverter.asUri, {
78
+ getCurrentDirectory() {
79
+ return sys.getCurrentDirectory();
80
+ },
81
+ getScriptFileNames() {
82
+ return workerContext.getMirrorModels().map(model => uriConverter.asFileName(model.uri));
83
+ },
84
+ getProjectVersion() {
85
+ const models = workerContext.getMirrorModels();
86
+ if (modelVersions.size === workerContext.getMirrorModels().length) {
87
+ if (models.every(model => modelVersions.get(model) === model.version)) {
88
+ return projectVersion.toString();
89
+ }
86
90
  }
87
- }
88
- modelVersions.clear();
89
- for (const model of workerContext.getMirrorModels()) {
90
- modelVersions.set(model, model.version);
91
- }
92
- projectVersion++;
93
- return projectVersion.toString();
94
- },
95
- getScriptSnapshot(fileName) {
96
- const uri = uriConverter.asUri(fileName);
97
- return getModelSnapshot(uri);
98
- },
99
- getCompilationSettings() {
100
- return compilerOptions;
101
- },
102
- }),
91
+ modelVersions.clear();
92
+ for (const model of workerContext.getMirrorModels()) {
93
+ modelVersions.set(model, model.version);
94
+ }
95
+ projectVersion++;
96
+ return projectVersion.toString();
97
+ },
98
+ getScriptSnapshot(fileName) {
99
+ const uri = uriConverter.asUri(fileName);
100
+ return getModelSnapshot(uri);
101
+ },
102
+ getCompilationSettings() {
103
+ return compilerOptions;
104
+ },
105
+ }),
106
+ },
103
107
  };
104
- return createWorkerService(language, servicePlugins, env, extraApis);
108
+ setup?.({ language, project });
109
+ return createWorkerService(language, servicePlugins, env, project, extraApis);
105
110
  function getModelSnapshot(uri) {
106
111
  const model = workerContext.getMirrorModels().find(model => model.uri.toString() === uri.toString());
107
112
  if (model) {
@@ -119,8 +124,8 @@ export function createTypeScriptWorkerService({ typescript: ts, compilerOptions,
119
124
  }
120
125
  }
121
126
  }
122
- function createWorkerService(language, servicePlugins, env, extraApis = {}) {
123
- const languageService = _createLanguageService(language, servicePlugins, env);
127
+ function createWorkerService(language, servicePlugins, env, projectContext, extraApis = {}) {
128
+ const languageService = _createLanguageService(language, servicePlugins, env, projectContext);
124
129
  class WorkerService {
125
130
  }
126
131
  ;