@codingame/monaco-vscode-api 1.80.0-next.6 → 1.80.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.
Files changed (73) hide show
  1. package/README.md +2 -1
  2. package/dist/default-extensions/npm/npmBrowserMain.js.map +1 -1
  3. package/dist/default-extensions/typescript-language-features/tsserver.web.js.map +1 -1
  4. package/dist/missing-services.js +1 -4
  5. package/dist/service-override/dialogs.js +1 -2
  6. package/dist/service-override/extensions.js +1 -2
  7. package/dist/service-override/layout.js +1 -12
  8. package/dist/service-override/views.d.ts +2 -24
  9. package/dist/service-override/views.js +12 -118
  10. package/dist/services.js +1 -2
  11. package/dist/vscode/vs/workbench/api/browser/mainThreadAuthentication.js +1 -2
  12. package/dist/vscode/vs/workbench/api/browser/mainThreadCustomEditors.js +1 -2
  13. package/dist/vscode/vs/workbench/api/browser/mainThreadDialogs.js +1 -2
  14. package/dist/vscode/vs/workbench/api/browser/mainThreadFileSystemEventService.js +1 -2
  15. package/dist/vscode/vs/workbench/api/browser/mainThreadMessageService.js +1 -2
  16. package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +0 -1
  17. package/dist/vscode/vs/workbench/browser/actions/windowActions.js +1 -2
  18. package/dist/vscode/vs/workbench/browser/actions/workspaceActions.js +1 -2
  19. package/dist/vscode/vs/workbench/browser/actions/workspaceCommands.js +0 -1
  20. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialog.web.contribution.js +1 -2
  21. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialogHandler.js +1 -2
  22. package/dist/vscode/vs/workbench/browser/parts/editor/editorActions.js +1 -2
  23. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +1 -2
  24. package/dist/vscode/vs/workbench/browser/parts/editor/editorPanes.js +1 -2
  25. package/dist/vscode/vs/workbench/browser/parts/editor/editorPlaceholder.js +1 -2
  26. package/dist/vscode/vs/workbench/common/editor/editorInput.d.ts +1 -1
  27. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -2
  28. package/dist/vscode/vs/workbench/contrib/customEditor/browser/customEditorInput.js +1 -2
  29. package/dist/vscode/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js +1 -2
  30. package/dist/vscode/vs/workbench/contrib/debug/browser/debugAdapterManager.js +1 -2
  31. package/dist/vscode/vs/workbench/contrib/debug/browser/debugService.js +1 -2
  32. package/dist/vscode/vs/workbench/contrib/debug/browser/debugTaskRunner.js +1 -2
  33. package/dist/vscode/vs/workbench/contrib/debug/browser/rawDebugSession.js +1 -2
  34. package/dist/vscode/vs/workbench/contrib/debug/common/debugLifecycle.js +1 -2
  35. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsActions.js +1 -2
  36. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +1 -2
  37. package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +1 -2
  38. package/dist/vscode/vs/workbench/contrib/files/browser/fileImportExport.js +1 -2
  39. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerViewer.js +1 -2
  40. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +1 -2
  41. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +1 -2
  42. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +1 -2
  43. package/dist/vscode/vs/workbench/contrib/search/browser/searchView.js +1 -2
  44. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +1 -2
  45. package/dist/vscode/vs/workbench/contrib/tasks/browser/taskQuickPick.js +1 -2
  46. package/dist/vscode/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +1 -2
  47. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +1 -2
  48. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstance.js +1 -2
  49. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalService.js +1 -2
  50. package/dist/vscode/vs/workbench/services/authentication/browser/authenticationService.js +0 -1
  51. package/dist/vscode/vs/workbench/services/dialogs/browser/abstractFileDialogService.js +1 -2
  52. package/dist/vscode/vs/workbench/services/dialogs/browser/simpleFileDialog.js +1 -2
  53. package/dist/vscode/vs/workbench/services/dialogs/common/dialogService.js +0 -1
  54. package/dist/vscode/vs/workbench/services/extensions/browser/extensionService.js +0 -1
  55. package/dist/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler.js +0 -1
  56. package/dist/vscode/vs/workbench/services/extensions/common/abstractExtensionService.js +1 -2
  57. package/dist/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js +1 -2
  58. package/dist/vscode/vs/workbench/services/remote/common/remoteExplorerService.js +1 -2
  59. package/dist/vscode/vs/workbench/services/textfile/browser/browserTextFileService.js +1 -2
  60. package/dist/vscode/vs/workbench/services/textfile/browser/textFileService.js +1 -2
  61. package/dist/vscode/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js +1 -2
  62. package/monaco-editor-treemending.patch +935 -935
  63. package/package.json +2 -3
  64. package/dist/override/vs/platform/dialogs/common/dialogs.js +0 -7
  65. package/dist/service-override/languageDetectionWorker.d.ts +0 -5
  66. package/dist/service-override/languageDetectionWorker.js +0 -15
  67. package/dist/vscode/vs/platform/diagnostics/common/diagnostics.js +0 -27
  68. package/dist/vscode/vs/platform/dialogs/common/dialogs.js +0 -126
  69. package/dist/vscode/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js +0 -132
  70. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys.js +0 -3
  71. package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker.js +0 -173
  72. package/dist/vscode/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js +0 -257
  73. package/dist/workers/languageDetection.worker.js +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-api",
3
- "version": "1.80.0-next.6",
3
+ "version": "1.80.0",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor",
6
6
  "keywords": [],
@@ -170,8 +170,7 @@
170
170
  "xterm-addon-serialize": "0.10.0",
171
171
  "xterm-addon-unicode11": "0.5.0",
172
172
  "xterm-addon-webgl": "0.15.0",
173
- "yauzl": "^2.10.0",
174
- "@vscode/vscode-languagedetection": "^1.0.22"
173
+ "yauzl": "^2.10.0"
175
174
  },
176
175
  "overrides": {
177
176
  "typescript": "5.1.6",
@@ -1,7 +0,0 @@
1
- var ConfirmResult;
2
- ( (function(ConfirmResult) {
3
- ConfirmResult[ConfirmResult["SAVE"] = 0] = "SAVE";
4
- ConfirmResult[ConfirmResult["DONT_SAVE"] = 1] = "DONT_SAVE";
5
- ConfirmResult[ConfirmResult["CANCEL"] = 2] = "CANCEL";
6
- })(ConfirmResult || (ConfirmResult = {})));
7
- export { ConfirmResult };
@@ -1,5 +0,0 @@
1
- import { IEditorOverrideServices } from '../vscode/vs/editor/standalone/browser/standaloneServices.js';
2
-
3
- declare function getServiceOverride(): IEditorOverrideServices;
4
-
5
- export { getServiceOverride as default };
@@ -1,15 +0,0 @@
1
- import '../missing-services.js';
2
- import { SyncDescriptor } from 'monaco-editor/esm/vs/platform/instantiation/common/descriptors.js';
3
- import { LanguageDetectionService } from '../vscode/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js';
4
- import { ILanguageDetectionService } from '../vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js';
5
- import { registerAssets } from '../assets.js';
6
- registerAssets({
7
- 'vs/../../node_modules/@vscode/vscode-languagedetection/model/model.json': new URL('@vscode/vscode-languagedetection/model/model.json', import.meta.url).href,
8
- 'vs/../../node_modules/@vscode/vscode-languagedetection/model/group1-shard1of1.bin': new URL('@vscode/vscode-languagedetection/model/group1-shard1of1.bin', import.meta.url).href
9
- });
10
- function getServiceOverride() {
11
- return {
12
- [( ILanguageDetectionService.toString())]: new SyncDescriptor(LanguageDetectionService)
13
- };
14
- }
15
- export { getServiceOverride as default };
@@ -1,27 +0,0 @@
1
- import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
2
- const ID = 'diagnosticsService';
3
- const IDiagnosticsService = ( createDecorator(ID));
4
- class NullDiagnosticsService {
5
- async getPerformanceInfo(mainProcessInfo, remoteInfo) {
6
- return {};
7
- }
8
- async getSystemInfo(mainProcessInfo, remoteInfo) {
9
- return {
10
- processArgs: 'nullProcessArgs',
11
- gpuStatus: 'nullGpuStatus',
12
- screenReader: 'nullScreenReader',
13
- remoteData: [],
14
- os: 'nullOs',
15
- memory: 'nullMemory',
16
- vmHint: 'nullVmHint',
17
- };
18
- }
19
- async getDiagnostics(mainProcessInfo, remoteInfo) {
20
- return '';
21
- }
22
- async getWorkspaceFileExtensions(workspace) {
23
- return { extensions: [] };
24
- }
25
- async reportWorkspaceStats(workspace) { }
26
- }
27
- export { ID, IDiagnosticsService, NullDiagnosticsService };
@@ -1,126 +0,0 @@
1
- import { basename } from 'monaco-editor/esm/vs/base/common/resources.js';
2
- import Severity from 'monaco-editor/esm/vs/base/common/severity.js';
3
- import { localize } from 'monaco-editor/esm/vs/nls.js';
4
- import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
5
- const IDialogService = ( createDecorator('dialogService'));
6
- var DialogKind;
7
- ( (function(DialogKind) {
8
- DialogKind[DialogKind["Confirmation"] = 1] = "Confirmation";
9
- DialogKind[DialogKind["Prompt"] = 2] = "Prompt";
10
- DialogKind[DialogKind["Input"] = 3] = "Input";
11
- })(DialogKind || (DialogKind = {})));
12
- class AbstractDialogHandler {
13
- getConfirmationButtons(dialog) {
14
- return this.getButtons(dialog, DialogKind.Confirmation);
15
- }
16
- getPromptButtons(dialog) {
17
- return this.getButtons(dialog, DialogKind.Prompt);
18
- }
19
- getInputButtons(dialog) {
20
- return this.getButtons(dialog, DialogKind.Input);
21
- }
22
- getButtons(dialog, kind) {
23
- const buttons = [];
24
- switch (kind) {
25
- case DialogKind.Confirmation: {
26
- const confirmationDialog = dialog;
27
- if (confirmationDialog.primaryButton) {
28
- buttons.push(confirmationDialog.primaryButton);
29
- }
30
- else {
31
- buttons.push(( localize({ key: 'yesButton', comment: ['&& denotes a mnemonic'] }, "&&Yes")));
32
- }
33
- if (confirmationDialog.cancelButton) {
34
- buttons.push(confirmationDialog.cancelButton);
35
- }
36
- else {
37
- buttons.push(( localize('cancelButton', "Cancel")));
38
- }
39
- break;
40
- }
41
- case DialogKind.Prompt: {
42
- const promptDialog = dialog;
43
- if (Array.isArray(promptDialog.buttons) && promptDialog.buttons.length > 0) {
44
- buttons.push(...( promptDialog.buttons.map(button => button.label)));
45
- }
46
- if (promptDialog.cancelButton) {
47
- if (promptDialog.cancelButton === true) {
48
- buttons.push(( localize('cancelButton', "Cancel")));
49
- }
50
- else if (typeof promptDialog.cancelButton === 'string') {
51
- buttons.push(promptDialog.cancelButton);
52
- }
53
- else {
54
- if (promptDialog.cancelButton.label) {
55
- buttons.push(promptDialog.cancelButton.label);
56
- }
57
- else {
58
- buttons.push(( localize('cancelButton', "Cancel")));
59
- }
60
- }
61
- }
62
- if (buttons.length === 0) {
63
- buttons.push(( localize({ key: 'okButton', comment: ['&& denotes a mnemonic'] }, "&&OK")));
64
- }
65
- break;
66
- }
67
- case DialogKind.Input: {
68
- const inputDialog = dialog;
69
- if (inputDialog.primaryButton) {
70
- buttons.push(inputDialog.primaryButton);
71
- }
72
- else {
73
- buttons.push(( localize({ key: 'okButton', comment: ['&& denotes a mnemonic'] }, "&&OK")));
74
- }
75
- if (inputDialog.cancelButton) {
76
- buttons.push(inputDialog.cancelButton);
77
- }
78
- else {
79
- buttons.push(( localize('cancelButton', "Cancel")));
80
- }
81
- break;
82
- }
83
- }
84
- return buttons;
85
- }
86
- getDialogType(type) {
87
- if (typeof type === 'string') {
88
- return type;
89
- }
90
- if (typeof type === 'number') {
91
- return (type === Severity.Info) ? 'info' : (type === Severity.Error) ? 'error' : (type === Severity.Warning) ? 'warning' : 'none';
92
- }
93
- return undefined;
94
- }
95
- async getPromptResult(prompt, buttonIndex, checkboxChecked) {
96
- const promptButtons = [...(prompt.buttons ?? [])];
97
- if (prompt.cancelButton && typeof prompt.cancelButton !== 'string' && typeof prompt.cancelButton !== 'boolean') {
98
- promptButtons.push(prompt.cancelButton);
99
- }
100
- const result = await promptButtons[buttonIndex]?.run({ checkboxChecked });
101
- return { result, checkboxChecked };
102
- }
103
- }
104
- const IFileDialogService = ( createDecorator('fileDialogService'));
105
- const MAX_CONFIRM_FILES = 10;
106
- function getFileNamesMessage(fileNamesOrResources) {
107
- const message = [];
108
- message.push(...( fileNamesOrResources.slice(0, MAX_CONFIRM_FILES).map(
109
- fileNameOrResource => typeof fileNameOrResource === 'string' ? fileNameOrResource : basename(fileNameOrResource)
110
- )));
111
- if (fileNamesOrResources.length > MAX_CONFIRM_FILES) {
112
- if (fileNamesOrResources.length - MAX_CONFIRM_FILES === 1) {
113
- message.push(( localize('moreFile', "...1 additional file not shown")));
114
- }
115
- else {
116
- message.push(( localize(
117
- 'moreFiles',
118
- "...{0} additional files not shown",
119
- fileNamesOrResources.length - MAX_CONFIRM_FILES
120
- )));
121
- }
122
- }
123
- message.push('');
124
- return message.join('\n');
125
- }
126
- export { AbstractDialogHandler, IDialogService, IFileDialogService, getFileNamesMessage };
@@ -1,132 +0,0 @@
1
- import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
- import { DisposableStore } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
3
- import { getCodeEditor } from 'monaco-editor/esm/vs/editor/browser/editorBrowser.js';
4
- import { localize } from 'monaco-editor/esm/vs/nls.js';
5
- import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
6
- import { Extensions } from '../../../common/contributions.js';
7
- import { IEditorService } from '../../../services/editor/common/editorService.js';
8
- import { IStatusbarService } from '../../../services/statusbar/browser/statusbar.js';
9
- import { ILanguageDetectionService, LanguageDetectionLanguageEventSource } from '../../../services/languageDetection/common/languageDetectionWorkerService.js';
10
- import { ThrottledDelayer } from 'monaco-editor/esm/vs/base/common/async.js';
11
- import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
12
- import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
13
- import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
14
- import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
15
- import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
16
- import { NOTEBOOK_EDITOR_EDITABLE } from '../../notebook/common/notebookContextKeys.js';
17
- import { EditorContextKeys } from 'monaco-editor/esm/vs/editor/common/editorContextKeys.js';
18
- import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
19
- import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
20
- const detectLanguageCommandId = 'editor.detectLanguage';
21
- let LanguageDetectionStatusContribution = class LanguageDetectionStatusContribution {
22
- constructor(_languageDetectionService, _statusBarService, _configurationService, _editorService, _languageService, _keybindingService) {
23
- this._languageDetectionService = _languageDetectionService;
24
- this._statusBarService = _statusBarService;
25
- this._configurationService = _configurationService;
26
- this._editorService = _editorService;
27
- this._languageService = _languageService;
28
- this._keybindingService = _keybindingService;
29
- this._disposables = ( new DisposableStore());
30
- this._delayer = ( new ThrottledDelayer(1000));
31
- this._renderDisposables = ( new DisposableStore());
32
- _editorService.onDidActiveEditorChange(() => this._update(true), this, this._disposables);
33
- this._update(false);
34
- }
35
- dispose() {
36
- this._disposables.dispose();
37
- this._delayer.dispose();
38
- this._combinedEntry?.dispose();
39
- this._renderDisposables.dispose();
40
- }
41
- _update(clear) {
42
- if (clear) {
43
- this._combinedEntry?.dispose();
44
- this._combinedEntry = undefined;
45
- }
46
- this._delayer.trigger(() => this._doUpdate());
47
- }
48
- async _doUpdate() {
49
- const editor = getCodeEditor(this._editorService.activeTextEditorControl);
50
- this._renderDisposables.clear();
51
- editor?.onDidChangeModelLanguage(() => this._update(true), this, this._renderDisposables);
52
- editor?.onDidChangeModelContent(() => this._update(false), this, this._renderDisposables);
53
- const editorModel = editor?.getModel();
54
- const editorUri = editorModel?.uri;
55
- const existingId = editorModel?.getLanguageId();
56
- const enablementConfig = this._configurationService.getValue('workbench.editor.languageDetectionHints');
57
- const enabled = typeof enablementConfig === 'object' && enablementConfig?.untitledEditors;
58
- const disableLightbulb = !enabled || editorUri?.scheme !== Schemas.untitled || !existingId;
59
- if (disableLightbulb || !editorUri) {
60
- this._combinedEntry?.dispose();
61
- this._combinedEntry = undefined;
62
- }
63
- else {
64
- const lang = await this._languageDetectionService.detectLanguage(editorUri);
65
- const skip = { 'jsonc': 'json' };
66
- const existing = editorModel.getLanguageId();
67
- if (lang && lang !== existing && skip[existing] !== lang) {
68
- const detectedName = this._languageService.getLanguageName(lang) || lang;
69
- let tooltip = ( localize('status.autoDetectLanguage', "Accept Detected Language: {0}", detectedName));
70
- const keybinding = this._keybindingService.lookupKeybinding(detectLanguageCommandId);
71
- const label = keybinding?.getLabel();
72
- if (label) {
73
- tooltip += ` (${label})`;
74
- }
75
- const props = {
76
- name: ( localize('langDetection.name', "Language Detection")),
77
- ariaLabel: ( localize('langDetection.aria', "Change to Detected Language: {0}", lang)),
78
- tooltip,
79
- command: detectLanguageCommandId,
80
- text: '$(lightbulb-autofix)',
81
- };
82
- if (!this._combinedEntry) {
83
- this._combinedEntry = this._statusBarService.addEntry(props, LanguageDetectionStatusContribution._id, 1 , { id: 'status.editor.mode', alignment: 1 , compact: true });
84
- }
85
- else {
86
- this._combinedEntry.update(props);
87
- }
88
- }
89
- else {
90
- this._combinedEntry?.dispose();
91
- this._combinedEntry = undefined;
92
- }
93
- }
94
- }
95
- };
96
- LanguageDetectionStatusContribution._id = 'status.languageDetectionStatus';
97
- LanguageDetectionStatusContribution = ( __decorate([
98
- ( __param(0, ILanguageDetectionService)),
99
- ( __param(1, IStatusbarService)),
100
- ( __param(2, IConfigurationService)),
101
- ( __param(3, IEditorService)),
102
- ( __param(4, ILanguageService)),
103
- ( __param(5, IKeybindingService))
104
- ], LanguageDetectionStatusContribution));
105
- ( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(LanguageDetectionStatusContribution, 3 );
106
- registerAction2(class extends Action2 {
107
- constructor() {
108
- super({
109
- id: detectLanguageCommandId,
110
- title: { value: ( localize('detectlang', 'Detect Language from Content')), original: 'Detect Language from Content' },
111
- f1: true,
112
- precondition: ( ContextKeyExpr.and(( NOTEBOOK_EDITOR_EDITABLE.toNegated()), EditorContextKeys.editorTextFocus)),
113
- keybinding: { primary: 34 | 512 | 1024 , weight: 200 }
114
- });
115
- }
116
- async run(accessor) {
117
- const editorService = accessor.get(IEditorService);
118
- const languageDetectionService = accessor.get(ILanguageDetectionService);
119
- const editor = getCodeEditor(editorService.activeTextEditorControl);
120
- const notificationService = accessor.get(INotificationService);
121
- const editorUri = editor?.getModel()?.uri;
122
- if (editorUri) {
123
- const lang = await languageDetectionService.detectLanguage(editorUri);
124
- if (lang) {
125
- editor.getModel()?.setLanguage(lang, LanguageDetectionLanguageEventSource);
126
- }
127
- else {
128
- notificationService.warn(( localize('noDetection', "Unable to detect editor language")));
129
- }
130
- }
131
- }
132
- });
@@ -1,3 +0,0 @@
1
- import { RawContextKey } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
2
- const NOTEBOOK_EDITOR_EDITABLE = ( new RawContextKey('notebookEditable', true));
3
- export { NOTEBOOK_EDITOR_EDITABLE };
@@ -1,173 +0,0 @@
1
- import { ModelOperations } from '@vscode/vscode-languagedetection';
2
- import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
3
- import { EditorSimpleWorker } from 'monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js';
4
- function create(host) {
5
- return ( new LanguageDetectionSimpleWorker(host, null));
6
- }
7
- class LanguageDetectionSimpleWorker extends EditorSimpleWorker {
8
- constructor() {
9
- super(...arguments);
10
- this._loadFailed = false;
11
- this.modelIdToCoreId = ( new Map());
12
- }
13
- async detectLanguage(uri, langBiases, preferHistory, supportedLangs) {
14
- const languages = [];
15
- const confidences = [];
16
- const stopWatch = ( new StopWatch());
17
- const documentTextSample = this.getTextForDetection(uri);
18
- if (!documentTextSample) {
19
- return;
20
- }
21
- const neuralResolver = async () => {
22
- for await (const language of this.detectLanguagesImpl(documentTextSample)) {
23
- if (!( this.modelIdToCoreId.has(language.languageId))) {
24
- this.modelIdToCoreId.set(language.languageId, await this._host.fhr('getLanguageId', [language.languageId]));
25
- }
26
- const coreId = this.modelIdToCoreId.get(language.languageId);
27
- if (coreId && (!supportedLangs?.length || supportedLangs.includes(coreId))) {
28
- languages.push(coreId);
29
- confidences.push(language.confidence);
30
- }
31
- }
32
- stopWatch.stop();
33
- if (languages.length) {
34
- this._host.fhr('sendTelemetryEvent', [languages, confidences, stopWatch.elapsed()]);
35
- return languages[0];
36
- }
37
- return undefined;
38
- };
39
- const neural = await neuralResolver();
40
- if (neural) {
41
- return neural;
42
- }
43
- return undefined;
44
- }
45
- getTextForDetection(uri) {
46
- const editorModel = this._getModel(uri);
47
- if (!editorModel) {
48
- return;
49
- }
50
- const end = editorModel.positionAt(10000);
51
- const content = editorModel.getValueInRange({
52
- startColumn: 1,
53
- startLineNumber: 1,
54
- endColumn: end.column,
55
- endLineNumber: end.lineNumber
56
- });
57
- return content;
58
- }
59
- async getModelOperations() {
60
- if (this._modelOperations) {
61
- return this._modelOperations;
62
- }
63
- this._modelOperations = ( new ModelOperations({
64
- modelJsonLoaderFunc: async () => {
65
- const response = await fetch(await this._host.fhr('getModelJsonUri', []));
66
- try {
67
- const modelJSON = await response.json();
68
- return modelJSON;
69
- }
70
- catch (e) {
71
- const message = `Failed to parse model JSON.`;
72
- throw new Error(message);
73
- }
74
- },
75
- weightsLoaderFunc: async () => {
76
- const response = await fetch(await this._host.fhr('getWeightsUri', []));
77
- const buffer = await response.arrayBuffer();
78
- return buffer;
79
- }
80
- }));
81
- return this._modelOperations;
82
- }
83
- adjustLanguageConfidence(modelResult) {
84
- switch (modelResult.languageId) {
85
- case 'js':
86
- case 'html':
87
- case 'json':
88
- case 'ts':
89
- case 'css':
90
- case 'py':
91
- case 'xml':
92
- case 'php':
93
- modelResult.confidence += LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket1;
94
- break;
95
- case 'cpp':
96
- case 'sh':
97
- case 'java':
98
- case 'cs':
99
- case 'c':
100
- modelResult.confidence += LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket2;
101
- break;
102
- case 'bat':
103
- case 'ini':
104
- case 'makefile':
105
- case 'sql':
106
- case 'csv':
107
- case 'toml':
108
- modelResult.confidence -= LanguageDetectionSimpleWorker.negativeConfidenceCorrection;
109
- break;
110
- }
111
- return modelResult;
112
- }
113
- async *detectLanguagesImpl(content) {
114
- if (this._loadFailed) {
115
- return;
116
- }
117
- let modelOperations;
118
- try {
119
- modelOperations = await this.getModelOperations();
120
- }
121
- catch (e) {
122
- console.log(e);
123
- this._loadFailed = true;
124
- return;
125
- }
126
- let modelResults;
127
- try {
128
- modelResults = await modelOperations.runModel(content);
129
- }
130
- catch (e) {
131
- console.warn(e);
132
- }
133
- if (!modelResults
134
- || modelResults.length === 0
135
- || modelResults[0].confidence < LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
136
- return;
137
- }
138
- const firstModelResult = this.adjustLanguageConfidence(modelResults[0]);
139
- if (firstModelResult.confidence < LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
140
- return;
141
- }
142
- const possibleLanguages = [firstModelResult];
143
- for (let current of modelResults) {
144
- if (current === firstModelResult) {
145
- continue;
146
- }
147
- current = this.adjustLanguageConfidence(current);
148
- const currentHighest = possibleLanguages[possibleLanguages.length - 1];
149
- if (currentHighest.confidence - current.confidence >= LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
150
- while (possibleLanguages.length) {
151
- yield possibleLanguages.shift();
152
- }
153
- if (current.confidence > LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
154
- possibleLanguages.push(current);
155
- continue;
156
- }
157
- return;
158
- }
159
- else {
160
- if (current.confidence > LanguageDetectionSimpleWorker.expectedRelativeConfidence) {
161
- possibleLanguages.push(current);
162
- continue;
163
- }
164
- return;
165
- }
166
- }
167
- }
168
- }
169
- LanguageDetectionSimpleWorker.expectedRelativeConfidence = 0.2;
170
- LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket1 = 0.05;
171
- LanguageDetectionSimpleWorker.positiveConfidenceCorrectionBucket2 = 0.025;
172
- LanguageDetectionSimpleWorker.negativeConfidenceCorrection = 0.5;
173
- export { LanguageDetectionSimpleWorker, create };