@volar/monaco 2.0.0-alpha.12 → 2.0.0-alpha.14

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/lib/editor.js CHANGED
@@ -3,7 +3,7 @@ import { markers } from './markers.js';
3
3
  export function activateMarkers(worker, languages, markersOwn, getSyncUris, editor) {
4
4
  const disposables = [];
5
5
  const listener = new Map();
6
- disposables.push(editor.onDidCreateModel((model) => hostingMarkers(model)), editor.onWillDisposeModel(stopHostingMarkers), editor.onDidChangeModelLanguage((event) => {
6
+ disposables.push(editor.onDidCreateModel(model => hostingMarkers(model)), editor.onWillDisposeModel(stopHostingMarkers), editor.onDidChangeModelLanguage(event => {
7
7
  stopHostingMarkers(event.model);
8
8
  hostingMarkers(event.model);
9
9
  }), {
@@ -16,7 +16,7 @@ export function activateMarkers(worker, languages, markersOwn, getSyncUris, edit
16
16
  for (const model of editor.getModels()) {
17
17
  hostingMarkers(model);
18
18
  }
19
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
19
+ return { dispose: () => disposables.forEach(d => d.dispose()) };
20
20
  function stopHostingMarkers(model) {
21
21
  editor.setModelMarkers(model, markersOwn, []);
22
22
  const key = model.uri.toString();
@@ -76,7 +76,7 @@ export function activateAutoInsertion(worker, languages, getSyncUris, editor) {
76
76
  const disposables = [];
77
77
  const listener = new Map();
78
78
  let timeout;
79
- disposables.push(editor.onDidCreateModel((model) => hostingAutoInsertion(model)), editor.onWillDisposeModel(stopHostingAutoInsertion), editor.onDidChangeModelLanguage((event) => {
79
+ disposables.push(editor.onDidCreateModel(model => hostingAutoInsertion(model)), editor.onWillDisposeModel(stopHostingAutoInsertion), editor.onDidChangeModelLanguage(event => {
80
80
  stopHostingAutoInsertion(event.model);
81
81
  hostingAutoInsertion(event.model);
82
82
  }), {
@@ -90,7 +90,7 @@ export function activateAutoInsertion(worker, languages, getSyncUris, editor) {
90
90
  for (const model of editor.getModels()) {
91
91
  hostingAutoInsertion(model);
92
92
  }
93
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
93
+ return { dispose: () => disposables.forEach(d => d.dispose()) };
94
94
  function stopHostingAutoInsertion(model) {
95
95
  if (listener.has(model)) {
96
96
  listener.get(model)?.dispose();
@@ -101,7 +101,7 @@ export function activateAutoInsertion(worker, languages, getSyncUris, editor) {
101
101
  if (!languages.includes(model.getLanguageId?.() ?? model.getModeId?.())) {
102
102
  return;
103
103
  }
104
- listener.set(model, model.onDidChangeContent((e) => {
104
+ listener.set(model, model.onDidChangeContent(e => {
105
105
  if (model.isDisposed()) {
106
106
  return;
107
107
  }
@@ -137,7 +137,7 @@ export function activateAutoInsertion(worker, languages, getSyncUris, editor) {
137
137
  if (model.getVersionId() !== version) {
138
138
  return;
139
139
  }
140
- const codeEditor = editor.getEditors().find((e) => e.getModel() === model);
140
+ const codeEditor = editor.getEditors().find(e => e.getModel() === model);
141
141
  if (codeEditor && edit && model.getVersionId() === version) {
142
142
  if (typeof edit === 'string') {
143
143
  codeEditor?.getContribution('snippetController2')?.insert(edit);
package/lib/languages.js CHANGED
@@ -27,6 +27,6 @@ export async function registerProviders(worker, language, getSyncUris, languages
27
27
  languages.registerDocumentSemanticTokensProvider(language, provider),
28
28
  languages.registerDocumentRangeSemanticTokensProvider(language, provider),
29
29
  ];
30
- return { dispose: () => disposables.forEach((d) => d.dispose()) };
30
+ return { dispose: () => disposables.forEach(d => d.dispose()) };
31
31
  }
32
32
  //# sourceMappingURL=languages.js.map
package/lib/provider.js CHANGED
@@ -245,8 +245,8 @@ export async function createLanguageFeaturesProvider(worker, getSyncUris) {
245
245
  },
246
246
  async provideSelectionRanges(model, positions) {
247
247
  const languageService = await worker.withSyncedResources(getSyncUris());
248
- const codeResults = await Promise.all(positions.map((position) => languageService.getSelectionRanges(model.uri.toString(), [fromPosition(position)])));
249
- return codeResults.map((codeResult) => codeResult?.map(toSelectionRange) ?? []);
248
+ const codeResults = await Promise.all(positions.map(position => languageService.getSelectionRanges(model.uri.toString(), [fromPosition(position)])));
249
+ return codeResults.map(codeResult => codeResult?.map(toSelectionRange) ?? []);
250
250
  },
251
251
  async provideSignatureHelp(model, position, _token, context) {
252
252
  const languageService = await worker.withSyncedResources(getSyncUris());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/monaco",
3
- "version": "2.0.0-alpha.12",
3
+ "version": "2.0.0-alpha.14",
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.0.0-alpha.12",
17
- "@volar/typescript": "2.0.0-alpha.12",
16
+ "@volar/language-service": "2.0.0-alpha.14",
17
+ "@volar/typescript": "2.0.0-alpha.14",
18
18
  "monaco-languageserver-types": "^0.3.2",
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": "1c15dd486f6e6174aa940c21f0ef45215ea2b854"
25
+ "gitHead": "83eb6a4a4475a3680f14fb3808e48ec4dbe62cc1"
26
26
  }
package/worker.d.ts CHANGED
@@ -58,7 +58,13 @@ export declare function createSimpleWorkerService<T = {}>(languages: LanguagePlu
58
58
  dispose: () => void;
59
59
  context: import("@volar/language-service").ServiceContext;
60
60
  } & T;
61
- export declare function createTypeScriptWorkerService<T = {}>(ts: typeof import('typescript'), languages: LanguagePlugin[], services: ServicePlugin[], getMirrorModels: monaco.worker.IWorkerContext<any>['getMirrorModels'], compilerOptions: ts.CompilerOptions, extraApis?: T): {
61
+ export declare function createTypeScriptWorkerService<T = {}>(languages: LanguagePlugin[], services: ServicePlugin[], getMirrorModels: monaco.worker.IWorkerContext<any>['getMirrorModels'], { typescript: ts, compilerOptions, getCurrentDirectory, getScriptFileNames, getMirrorModel, }: {
62
+ typescript: typeof import('typescript');
63
+ compilerOptions: ts.CompilerOptions;
64
+ getCurrentDirectory(): string;
65
+ getScriptFileNames(): string[];
66
+ getMirrorModel(fileName: string): monaco.worker.IMirrorModel | undefined;
67
+ }, extraApis?: T): {
62
68
  getTriggerCharacters: () => string[];
63
69
  getAutoFormatTriggerCharacters: () => string[];
64
70
  getSignatureHelpTriggerCharacters: () => string[];
package/worker.js CHANGED
@@ -1,12 +1,11 @@
1
- import { createLanguageService as _createLanguageService, createFileProvider, resolveCommonLanguageId, } from '@volar/language-service';
1
+ import { createLanguageService as _createLanguageService, createFileRegistry, resolveCommonLanguageId, } from '@volar/language-service';
2
2
  import { URI } from 'vscode-uri';
3
3
  import { createLanguage, createSys } from '@volar/typescript';
4
4
  export function createSimpleWorkerService(languages, services, getMirrorModels, extraApis = {}) {
5
- return createWorkerService(services, env => {
5
+ return createWorkerService(services, () => {
6
6
  const snapshots = new Map();
7
- const files = createFileProvider(languages, false, fileName => {
8
- const uri = env.fileNameToUri(fileName);
9
- const model = getMirrorModels().find(model => model.uri.toString(true) === uri);
7
+ const files = createFileRegistry(languages, false, uri => {
8
+ const model = getMirrorModels().find(model => model.uri.toString() === uri);
10
9
  if (model) {
11
10
  const cache = snapshots.get(model);
12
11
  if (cache && cache[0] === model.version) {
@@ -19,24 +18,23 @@ export function createSimpleWorkerService(languages, services, getMirrorModels,
19
18
  getChangeRange: () => undefined,
20
19
  };
21
20
  snapshots.set(model, [model.version, snapshot]);
22
- files.updateSourceFile(fileName, resolveCommonLanguageId(fileName), snapshot);
21
+ files.set(uri, resolveCommonLanguageId(uri), snapshot);
23
22
  }
24
23
  else {
25
- files.deleteSourceFile(fileName);
24
+ files.delete(uri);
26
25
  }
27
26
  });
28
27
  return { files };
29
28
  }, extraApis);
30
29
  }
31
- export function createTypeScriptWorkerService(ts, languages, services, getMirrorModels, compilerOptions, extraApis = {}) {
30
+ export function createTypeScriptWorkerService(languages, services, getMirrorModels, { typescript: ts, compilerOptions, getCurrentDirectory, getScriptFileNames, getMirrorModel, }, extraApis = {}) {
32
31
  return createWorkerService(services, env => {
33
32
  let projectVersion = 0;
34
33
  const modelSnapshot = new WeakMap();
35
34
  const modelVersions = new Map();
36
35
  const host = {
37
- getCurrentDirectory() {
38
- return env.uriToFileName(env.workspaceFolder.toString(true));
39
- },
36
+ getCurrentDirectory,
37
+ getScriptFileNames,
40
38
  getProjectVersion() {
41
39
  const models = getMirrorModels();
42
40
  if (modelVersions.size === getMirrorModels().length) {
@@ -51,13 +49,8 @@ export function createTypeScriptWorkerService(ts, languages, services, getMirror
51
49
  projectVersion++;
52
50
  return projectVersion.toString();
53
51
  },
54
- getScriptFileNames() {
55
- const models = getMirrorModels();
56
- return models.map(model => env.uriToFileName(model.uri.toString(true)));
57
- },
58
52
  getScriptSnapshot(fileName) {
59
- const uri = env.fileNameToUri(fileName);
60
- const model = getMirrorModels().find(model => model.uri.toString(true) === uri);
53
+ const model = getMirrorModel(fileName);
61
54
  if (model) {
62
55
  const cache = modelSnapshot.get(model);
63
56
  if (cache && cache[0] === model.version) {
@@ -77,16 +70,21 @@ export function createTypeScriptWorkerService(ts, languages, services, getMirror
77
70
  },
78
71
  getLanguageId: id => resolveCommonLanguageId(id),
79
72
  };
80
- const sys = createSys(ts, env, host.getCurrentDirectory());
81
- const language = createLanguage(ts, sys, languages, undefined, host);
73
+ const sys = createSys(ts, env, host);
74
+ const language = createLanguage(ts, sys, languages, undefined, host, {
75
+ fileNameToFileId: env.typescript.fileNameToUri,
76
+ fileIdToFileName: env.typescript.uriToFileName,
77
+ });
82
78
  return language;
83
79
  }, extraApis);
84
80
  }
85
81
  function createWorkerService(services, getLanguage, extraApis = {}) {
86
82
  const env = {
83
+ typescript: {
84
+ fileNameToUri: fileName => URI.file(fileName).toString(),
85
+ uriToFileName: uri => URI.parse(uri).fsPath.replace(/\\/g, '/')
86
+ },
87
87
  workspaceFolder: URI.file('/'),
88
- uriToFileName: uri => URI.parse(uri).fsPath.replace(/\\/g, '/'),
89
- fileNameToUri: fileName => URI.file(fileName).toString(),
90
88
  console,
91
89
  };
92
90
  const language = getLanguage(env);