@codingame/monaco-vscode-language-detection-worker-service-override 8.0.4 → 9.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-language-detection-worker-service-override",
3
- "version": "8.0.4",
3
+ "version": "9.0.2",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "vscode": "npm:@codingame/monaco-vscode-api@8.0.4",
33
- "@vscode/vscode-languagedetection": "npm:@codingame/vscode-languagedetection@1.0.23"
32
+ "vscode": "npm:@codingame/monaco-vscode-api@9.0.2",
33
+ "@vscode/vscode-languagedetection": "1.0.21"
34
34
  }
35
35
  }
@@ -75,15 +75,15 @@ let LanguageDetectionStatusContribution = class LanguageDetectionStatusContribut
75
75
  const existing = editorModel.getLanguageId();
76
76
  if (lang && lang !== existing && skip[existing] !== lang) {
77
77
  const detectedName = this._languageService.getLanguageName(lang) || lang;
78
- let tooltip = ( localize(2133, "Accept Detected Language: {0}", detectedName));
78
+ let tooltip = ( localize(2146, "Accept Detected Language: {0}", detectedName));
79
79
  const keybinding = this._keybindingService.lookupKeybinding(detectLanguageCommandId);
80
80
  const label = keybinding?.getLabel();
81
81
  if (label) {
82
82
  tooltip += ` (${label})`;
83
83
  }
84
84
  const props = {
85
- name: ( localize(2134, "Language Detection")),
86
- ariaLabel: ( localize(2135, "Change to Detected Language: {0}", lang)),
85
+ name: ( localize(2147, "Language Detection")),
86
+ ariaLabel: ( localize(2148, "Change to Detected Language: {0}", lang)),
87
87
  tooltip,
88
88
  command: detectLanguageCommandId,
89
89
  text: '$(lightbulb-autofix)',
@@ -115,7 +115,7 @@ registerAction2(class extends Action2 {
115
115
  constructor() {
116
116
  super({
117
117
  id: detectLanguageCommandId,
118
- title: ( localize2(2136, "Detect Language from Content")),
118
+ title: ( localize2(2149, "Detect Language from Content")),
119
119
  f1: true,
120
120
  precondition: ( (ContextKeyExpr.and(
121
121
  (NOTEBOOK_EDITOR_EDITABLE.toNegated()),
@@ -136,7 +136,7 @@ registerAction2(class extends Action2 {
136
136
  editor.getModel()?.setLanguage(lang, LanguageDetectionLanguageEventSource);
137
137
  }
138
138
  else {
139
- notificationService.warn(( localize(2137, "Unable to detect editor language")));
139
+ notificationService.warn(( localize(2150, "Unable to detect editor language")));
140
140
  }
141
141
  }
142
142
  }
@@ -1,21 +1,24 @@
1
1
  import { ModelOperations } from '@vscode/vscode-languagedetection';
2
2
  import { StopWatch } from 'vscode/vscode/vs/base/common/stopwatch';
3
- import { EditorSimpleWorker } from 'vscode/vscode/vs/editor/common/services/editorSimpleWorker';
3
+ import { LanguageDetectionWorkerHost } from './languageDetectionWorker.protocol.js';
4
+ import { WorkerTextModelSyncServer } from 'vscode/vscode/vs/editor/common/services/textModelSync/textModelSync.impl';
4
5
 
5
- function create(host) {
6
- return ( new LanguageDetectionSimpleWorker(host, null));
6
+ function create(workerServer) {
7
+ return ( new LanguageDetectionSimpleWorker(workerServer));
7
8
  }
8
- class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
9
- constructor() {
10
- super(...arguments);
11
- this._loadFailed = false;
12
- this.modelIdToCoreId = ( new Map());
13
- }
9
+ class LanguageDetectionSimpleWorker {
14
10
  static { this.expectedRelativeConfidence = 0.2; }
15
11
  static { this.positiveConfidenceCorrectionBucket1 = 0.05; }
16
12
  static { this.positiveConfidenceCorrectionBucket2 = 0.025; }
17
13
  static { this.negativeConfidenceCorrection = 0.5; }
18
- async detectLanguage(uri, langBiases, preferHistory, supportedLangs) {
14
+ constructor(workerServer) {
15
+ this._workerTextModelSyncServer = ( new WorkerTextModelSyncServer());
16
+ this._loadFailed = false;
17
+ this.modelIdToCoreId = ( new Map());
18
+ this._host = LanguageDetectionWorkerHost.getChannel(workerServer);
19
+ this._workerTextModelSyncServer.bindToServer(workerServer);
20
+ }
21
+ async $detectLanguage(uri, langBiases, preferHistory, supportedLangs) {
19
22
  const languages = [];
20
23
  const confidences = [];
21
24
  const stopWatch = ( new StopWatch());
@@ -26,7 +29,7 @@ class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
26
29
  const neuralResolver = async () => {
27
30
  for await (const language of this.detectLanguagesImpl(documentTextSample)) {
28
31
  if (!( this.modelIdToCoreId.has(language.languageId))) {
29
- this.modelIdToCoreId.set(language.languageId, await this._host.fhr('getLanguageId', [language.languageId]));
32
+ this.modelIdToCoreId.set(language.languageId, await this._host.$getLanguageId(language.languageId));
30
33
  }
31
34
  const coreId = this.modelIdToCoreId.get(language.languageId);
32
35
  if (coreId && (!supportedLangs?.length || supportedLangs.includes(coreId))) {
@@ -36,7 +39,7 @@ class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
36
39
  }
37
40
  stopWatch.stop();
38
41
  if (languages.length) {
39
- this._host.fhr('sendTelemetryEvent', [languages, confidences, stopWatch.elapsed()]);
42
+ this._host.$sendTelemetryEvent(languages, confidences, stopWatch.elapsed());
40
43
  return languages[0];
41
44
  }
42
45
  return undefined;
@@ -48,7 +51,7 @@ class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
48
51
  return undefined;
49
52
  }
50
53
  getTextForDetection(uri) {
51
- const editorModel = this._getModel(uri);
54
+ const editorModel = this._workerTextModelSyncServer.getModel(uri);
52
55
  if (!editorModel) {
53
56
  return;
54
57
  }
@@ -67,7 +70,7 @@ class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
67
70
  }
68
71
  this._modelOperations = ( new ModelOperations({
69
72
  modelJsonLoaderFunc: async () => {
70
- const response = await fetch(await this._host.fhr('getModelJsonUri', []));
73
+ const response = await fetch(await this._host.$getModelJsonUri());
71
74
  try {
72
75
  const modelJSON = await response.json();
73
76
  return modelJSON;
@@ -78,7 +81,7 @@ class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
78
81
  }
79
82
  },
80
83
  weightsLoaderFunc: async () => {
81
- const response = await fetch(await this._host.fhr('getWeightsUri', []));
84
+ const response = await fetch(await this._host.$getWeightsUri());
82
85
  const buffer = await response.arrayBuffer();
83
86
  return buffer;
84
87
  }
@@ -0,0 +1,11 @@
1
+ class LanguageDetectionWorkerHost {
2
+ static { this.CHANNEL_NAME = 'languageDetectionWorkerHost'; }
3
+ static getChannel(workerServer) {
4
+ return workerServer.getChannel(LanguageDetectionWorkerHost.CHANNEL_NAME);
5
+ }
6
+ static setChannel(workerClient, obj) {
7
+ workerClient.setChannel(LanguageDetectionWorkerHost.CHANNEL_NAME, obj);
8
+ }
9
+ }
10
+
11
+ export { LanguageDetectionWorkerHost };
@@ -2,18 +2,15 @@ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
2
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
3
3
  import { LanguageDetectionStatsId } from 'vscode/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService';
4
4
  import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
5
- import { nodeModulesPath, nodeModulesAsarPath, FileAccess, Schemas } from 'vscode/vscode/vs/base/common/network';
5
+ import { nodeModulesPath, FileAccess, Schemas } from 'vscode/vscode/vs/base/common/network';
6
6
  import { IWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/common/environmentService.service';
7
7
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
8
8
  import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
9
9
  import { URI } from 'vscode/vscode/vs/base/common/uri';
10
- import { isWeb } from 'vscode/vscode/vs/base/common/platform';
10
+ import 'vscode/vscode/vs/base/common/platform';
11
11
  import 'vscode/vscode/vs/platform/instantiation/common/extensions';
12
12
  import { IModelService } from 'vscode/vscode/vs/editor/common/services/model';
13
- import { SimpleWorkerClient } from 'vscode/vscode/vs/base/common/worker/simpleWorker';
14
13
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
15
- import { EditorWorkerClient, EditorWorkerHost } from 'vscode/vscode/vs/editor/browser/services/editorWorkerService';
16
- import { ILanguageConfigurationService } from 'vscode/vscode/vs/editor/common/languages/languageConfigurationRegistry';
17
14
  import { IDiagnosticsService } from 'vscode/vscode/vs/platform/diagnostics/common/diagnostics.service';
18
15
  import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
19
16
  import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
@@ -21,13 +18,15 @@ import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/c
21
18
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
22
19
  import { LRUCache } from 'vscode/vscode/vs/base/common/map';
23
20
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
21
+ import 'vscode/vscode/vs/base/common/amd';
22
+ import { createWebWorker } from 'vscode/vscode/vs/base/browser/defaultWorkerFactory';
23
+ import { WorkerTextModelSyncClient } from 'vscode/vscode/vs/editor/common/services/textModelSync/textModelSync.impl';
24
+ import { LanguageDetectionWorkerHost } from './languageDetectionWorker.protocol.js';
24
25
 
25
26
  var LanguageDetectionService_1;
26
27
  const TOP_LANG_COUNTS = 12;
27
28
  const regexpModuleLocation = `${nodeModulesPath}/vscode-regexp-languagedetection`;
28
- const regexpModuleLocationAsar = `${nodeModulesAsarPath}/vscode-regexp-languagedetection`;
29
29
  const moduleLocation = `${nodeModulesPath}/@vscode/vscode-languagedetection`;
30
- const moduleLocationAsar = `${nodeModulesAsarPath}/@vscode/vscode-languagedetection`;
31
30
  let LanguageDetectionService = class LanguageDetectionService extends Disposable {
32
31
  static { LanguageDetectionService_1 = this; }
33
32
  static { this.enablementSettingKey = 'workbench.editor.languageDetection'; }
@@ -35,7 +34,7 @@ let LanguageDetectionService = class LanguageDetectionService extends Disposable
35
34
  static { this.preferHistoryConfig = 'workbench.editor.preferHistoryBasedLanguageDetection'; }
36
35
  static { this.workspaceOpenedLanguagesStorageKey = 'workbench.editor.languageDetectionOpenedLanguages.workspace'; }
37
36
  static { this.globalOpenedLanguagesStorageKey = 'workbench.editor.languageDetectionOpenedLanguages.global'; }
38
- constructor(_environmentService, languageService, _configurationService, _diagnosticsService, _workspaceContextService, modelService, _editorService, telemetryService, storageService, _logService, languageConfigurationService) {
37
+ constructor(_environmentService, languageService, _configurationService, _diagnosticsService, _workspaceContextService, modelService, _editorService, telemetryService, storageService, _logService) {
39
38
  super();
40
39
  this._environmentService = _environmentService;
41
40
  this._configurationService = _configurationService;
@@ -54,19 +53,10 @@ let LanguageDetectionService = class LanguageDetectionService extends Disposable
54
53
  modelService,
55
54
  languageService,
56
55
  telemetryService,
57
- this._environmentService.isBuilt && !isWeb
58
- ? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/dist/lib/index.js`)).toString(true))
59
- : ( ( FileAccess.asBrowserUri(`${moduleLocation}/dist/lib/index.js`)).toString(true)),
60
- this._environmentService.isBuilt && !isWeb
61
- ? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/model/model.json`)).toString(true))
62
- : ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/model.json`)).toString(true)),
63
- this._environmentService.isBuilt && !isWeb
64
- ? ( ( FileAccess.asBrowserUri(`${moduleLocationAsar}/model/group1-shard1of1.bin`)).toString(true))
65
- : ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/group1-shard1of1.bin`)).toString(true)),
66
- this._environmentService.isBuilt && !isWeb
67
- ? ( ( FileAccess.asBrowserUri(`${regexpModuleLocationAsar}/dist/index.js`)).toString(true))
68
- : ( ( FileAccess.asBrowserUri(`${regexpModuleLocation}/dist/index.js`)).toString(true)),
69
- languageConfigurationService
56
+ ( ( FileAccess.asBrowserUri(`${moduleLocation}/dist/lib/index.js`)).toString(true)),
57
+ ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/model.json`)).toString(true)),
58
+ ( ( FileAccess.asBrowserUri(`${moduleLocation}/model/group1-shard1of1.bin`)).toString(true)),
59
+ ( ( FileAccess.asBrowserUri(`${regexpModuleLocation}/dist/index.js`)).toString(true))
70
60
  )));
71
61
  this.initEditorOpenedListeners(storageService);
72
62
  }
@@ -157,12 +147,12 @@ LanguageDetectionService = LanguageDetectionService_1 = ( __decorate([
157
147
  ( __param(6, IEditorService)),
158
148
  ( __param(7, ITelemetryService)),
159
149
  ( __param(8, IStorageService)),
160
- ( __param(9, ILogService)),
161
- ( __param(10, ILanguageConfigurationService))
150
+ ( __param(9, ILogService))
162
151
  ], LanguageDetectionService));
163
- class LanguageDetectionWorkerClient extends EditorWorkerClient {
164
- constructor(modelService, _languageService, _telemetryService, _indexJsUri, _modelJsonUri, _weightsUri, _regexpModelUri, languageConfigurationService) {
165
- super(modelService, true, 'languageDetectionWorkerService', languageConfigurationService);
152
+ class LanguageDetectionWorkerClient extends Disposable {
153
+ constructor(_modelService, _languageService, _telemetryService, _indexJsUri, _modelJsonUri, _weightsUri, _regexpModelUri) {
154
+ super();
155
+ this._modelService = _modelService;
166
156
  this._languageService = _languageService;
167
157
  this._telemetryService = _telemetryService;
168
158
  this._indexJsUri = _indexJsUri;
@@ -171,17 +161,20 @@ class LanguageDetectionWorkerClient extends EditorWorkerClient {
171
161
  this._regexpModelUri = _regexpModelUri;
172
162
  }
173
163
  _getOrCreateLanguageDetectionWorker() {
174
- if (this.workerPromise) {
175
- return this.workerPromise;
164
+ if (!this.worker) {
165
+ const workerClient = this._register(createWebWorker('vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker', 'LanguageDetectionWorker'));
166
+ LanguageDetectionWorkerHost.setChannel(workerClient, {
167
+ $getIndexJsUri: async () => this.getIndexJsUri(),
168
+ $getLanguageId: async (languageIdOrExt) => this.getLanguageId(languageIdOrExt),
169
+ $sendTelemetryEvent: async (languages, confidences, timeSpent) => this.sendTelemetryEvent(languages, confidences, timeSpent),
170
+ $getRegexpModelUri: async () => this.getRegexpModelUri(),
171
+ $getModelJsonUri: async () => this.getModelJsonUri(),
172
+ $getWeightsUri: async () => this.getWeightsUri(),
173
+ });
174
+ const workerTextModelSyncClient = WorkerTextModelSyncClient.create(workerClient, this._modelService);
175
+ this.worker = { workerClient, workerTextModelSyncClient };
176
176
  }
177
- this.workerPromise = ( new Promise((resolve, reject) => {
178
- resolve(this._register(( new SimpleWorkerClient(
179
- this._workerFactory,
180
- 'vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker',
181
- ( new EditorWorkerHost(this))
182
- ))));
183
- }));
184
- return this.workerPromise;
177
+ return this.worker;
185
178
  }
186
179
  _guessLanguageIdByUri(uri) {
187
180
  const guess = this._languageService.guessLanguageIdByFilepathOrFirstLine(uri);
@@ -190,27 +183,6 @@ class LanguageDetectionWorkerClient extends EditorWorkerClient {
190
183
  }
191
184
  return undefined;
192
185
  }
193
- async _getProxy() {
194
- return (await this._getOrCreateLanguageDetectionWorker()).getProxyObject();
195
- }
196
- async fhr(method, args) {
197
- switch (method) {
198
- case 'getIndexJsUri':
199
- return this.getIndexJsUri();
200
- case 'getModelJsonUri':
201
- return this.getModelJsonUri();
202
- case 'getWeightsUri':
203
- return this.getWeightsUri();
204
- case 'getRegexpModelUri':
205
- return this.getRegexpModelUri();
206
- case 'getLanguageId':
207
- return this.getLanguageId(args[0]);
208
- case 'sendTelemetryEvent':
209
- return this.sendTelemetryEvent(args[0], args[1], args[2]);
210
- default:
211
- return super.fhr(method, args);
212
- }
213
- }
214
186
  async getIndexJsUri() {
215
187
  return this._indexJsUri;
216
188
  }
@@ -249,8 +221,9 @@ class LanguageDetectionWorkerClient extends EditorWorkerClient {
249
221
  if (quickGuess) {
250
222
  return quickGuess;
251
223
  }
252
- await this._withSyncedResources([resource]);
253
- const modelId = await (await this._getProxy()).detectLanguage(( resource.toString()), langBiases, preferHistory, supportedLangs);
224
+ const { workerClient, workerTextModelSyncClient } = this._getOrCreateLanguageDetectionWorker();
225
+ await workerTextModelSyncClient.ensureSyncedResources([resource]);
226
+ const modelId = await workerClient.proxy.$detectLanguage(( resource.toString()), langBiases, preferHistory, supportedLangs);
254
227
  const languageId = this.getLanguageId(modelId);
255
228
  const LanguageDetectionStatsId = 'automaticlanguagedetection.perf';
256
229
  this._telemetryService.publicLog2(LanguageDetectionStatsId, {