@codingame/monaco-vscode-extensions-service-override 1.83.7 → 1.83.9

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 (183) hide show
  1. package/assets/webWorkerExtensionHostIframe.html +123 -0
  2. package/extensions.d.ts +12 -13
  3. package/extensions.js +456 -0
  4. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  5. package/external/tslib/tslib.es6.js +11 -0
  6. package/index.d.ts +1 -1
  7. package/index.js +2 -2
  8. package/override/vs/platform/dialogs/common/dialogs.js +8 -0
  9. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +8 -0
  10. package/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +3 -0
  11. package/package.json +5 -3
  12. package/tools/url.js +10 -0
  13. package/tools.js +5 -0
  14. package/vscode/src/vs/base/common/console.js +59 -0
  15. package/vscode/src/vs/base/common/prefixTree.js +131 -0
  16. package/vscode/src/vs/platform/files/common/watcher.js +71 -0
  17. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +27 -0
  18. package/vscode/src/vs/platform/log/browser/log.js +26 -0
  19. package/vscode/src/vs/platform/remote/common/managedSocket.js +98 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +31 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +35 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +330 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +68 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +174 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents.js +52 -0
  26. package/vscode/src/vs/workbench/api/browser/mainThreadChatProvider.js +61 -0
  27. package/vscode/src/vs/workbench/api/browser/mainThreadChatSlashCommands.js +49 -0
  28. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +31 -0
  29. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +24 -0
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +107 -0
  31. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +94 -0
  32. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +541 -0
  33. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -0
  34. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +35 -0
  35. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +578 -0
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +387 -0
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +102 -0
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +69 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +68 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +75 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +249 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +370 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +22 -0
  44. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +41 -0
  45. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +411 -0
  46. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +475 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +227 -0
  48. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +24 -0
  49. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +317 -0
  50. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +280 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +283 -0
  52. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +68 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +28 -0
  54. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +33 -0
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +27 -0
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +947 -0
  57. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +78 -0
  58. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +35 -0
  59. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +78 -0
  60. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +93 -0
  61. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +118 -0
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +158 -0
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +123 -0
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +188 -0
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +129 -0
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +131 -0
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +341 -0
  68. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +25 -0
  69. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +48 -0
  70. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +76 -0
  71. package/vscode/src/vs/workbench/api/browser/mainThreadProfilContentHandlers.js +38 -0
  72. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +68 -0
  73. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +49 -0
  74. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +185 -0
  75. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +30 -0
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +463 -0
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +49 -0
  78. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +148 -0
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +70 -0
  80. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +50 -0
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +53 -0
  82. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +72 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +731 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +53 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +412 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +182 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +24 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +55 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +313 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +223 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +110 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +61 -0
  93. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +29 -0
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +283 -0
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +100 -0
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +135 -0
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +57 -0
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +273 -0
  99. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.api.impl.d.ts +2 -2
  100. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostConfiguration.d.ts +3 -3
  101. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionService.d.ts +3 -4
  102. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostManagedSockets.d.ts +2 -2
  103. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTerminalService.d.ts +19 -20
  104. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTunnelService.d.ts +7 -8
  105. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostWorkspace.d.ts +25 -26
  106. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +35 -0
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatModel.js +217 -0
  108. package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +57 -0
  109. package/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.js +51 -0
  110. package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +92 -0
  111. package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +648 -0
  112. package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +297 -0
  113. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadAdditionalActions.js +62 -0
  114. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +249 -0
  115. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +109 -0
  116. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadRangeDecorator.js +109 -0
  117. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +331 -0
  118. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +380 -0
  119. package/vscode/src/vs/workbench/contrib/comments/browser/comments.js +5 -0
  120. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +1196 -0
  121. package/vscode/src/vs/workbench/contrib/comments/browser/commentsFilterOptions.js +19 -0
  122. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +334 -0
  123. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +543 -0
  124. package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +178 -0
  125. package/vscode/src/vs/workbench/contrib/comments/browser/media/panel.css.js +6 -0
  126. package/vscode/src/vs/workbench/contrib/comments/browser/media/review.css.js +6 -0
  127. package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +101 -0
  128. package/vscode/src/vs/workbench/contrib/comments/browser/timestamp.js +57 -0
  129. package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +145 -0
  130. package/vscode/src/vs/workbench/contrib/comments/common/commentsConfiguration.js +3 -0
  131. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +73 -0
  132. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +83 -0
  133. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +179 -0
  134. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +5 -0
  135. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +144 -0
  136. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +482 -0
  137. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +6 -0
  138. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +85 -0
  139. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/editing.js +56 -0
  140. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +110 -0
  141. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +260 -0
  142. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +616 -0
  143. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +309 -0
  144. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +38 -0
  145. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +167 -0
  146. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/telemetry.js +80 -0
  147. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/utils.js +70 -0
  148. package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +3 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModel.js +108 -0
  150. package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +506 -0
  151. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +132 -0
  152. package/vscode/src/vs/workbench/contrib/testing/common/getComputedState.js +103 -0
  153. package/vscode/src/vs/workbench/contrib/testing/common/observableValue.js +28 -0
  154. package/vscode/src/vs/workbench/contrib/testing/common/testCoverage.js +25 -0
  155. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +336 -0
  156. package/vscode/src/vs/workbench/contrib/testing/common/testingStates.js +46 -0
  157. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +283 -0
  158. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +273 -0
  159. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +52 -0
  160. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1093 -0
  161. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +41 -0
  162. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +25 -0
  163. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +643 -0
  164. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +274 -0
  165. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +58 -0
  166. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +80 -0
  167. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +64 -0
  168. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +49 -0
  169. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +220 -0
  170. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +5 -0
  171. package/vscode/src/vs/workbench/services/workingCopy/common/resourceWorkingCopy.js +79 -0
  172. package/vscode-proposed.d.ts +0 -3872
  173. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.protocol.d.ts +0 -0
  174. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionActivator.d.ts +0 -0
  175. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostFileSystemInfo.d.ts +0 -0
  176. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostInitDataService.d.ts +0 -0
  177. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostLocalizationService.d.ts +0 -0
  178. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostRpcService.d.ts +0 -0
  179. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostStoragePaths.d.ts +0 -0
  180. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTypes.d.ts +0 -0
  181. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostUriTransformerService.d.ts +0 -0
  182. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/worker/extHostExtensionService.d.ts +0 -0
  183. /package/{dist/main/vscode → vscode}/src/vs/workbench/services/search/common/queryBuilder.d.ts +0 -0
@@ -0,0 +1,947 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { VSDataTransfer, createStringDataTransferItem } from 'monaco-editor/esm/vs/base/common/dataTransfer.js';
3
+ import { CancellationError } from 'monaco-editor/esm/vs/base/common/errors.js';
4
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
5
+ import { Disposable, DisposableMap, combinedDisposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
6
+ import { revive } from 'monaco-editor/esm/vs/base/common/marshalling.js';
7
+ import { mixin } from 'monaco-editor/esm/vs/base/common/objects.js';
8
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
9
+ import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
10
+ import { ILanguageConfigurationService } from 'monaco-editor/esm/vs/editor/common/languages/languageConfigurationRegistry.js';
11
+ import { ILanguageFeaturesService } from 'monaco-editor/esm/vs/editor/common/services/languageFeatures.js';
12
+ import { decodeSemanticTokensDto } from 'monaco-editor/esm/vs/editor/common/services/semanticTokensDto.js';
13
+ import { IUriIdentityService } from 'monaco-editor/esm/vs/platform/uriIdentity/common/uriIdentity.js';
14
+ import { reviveWorkspaceEditDto } from './mainThreadBulkEdits.js';
15
+ import { DataTransfer } from 'vscode/vscode/vs/workbench/api/common/extHostTypeConverters';
16
+ import { DataTransferFileCache } from '../common/shared/dataTransferCache.js';
17
+ import { CallHierarchyProviderRegistry } from 'vscode/vscode/vs/workbench/contrib/callHierarchy/common/callHierarchy';
18
+ import { WorkspaceSymbolProviderRegistry } from 'vscode/vscode/vs/workbench/contrib/search/common/search';
19
+ import { TypeHierarchyProviderRegistry } from 'vscode/vscode/vs/workbench/contrib/typeHierarchy/common/typeHierarchy';
20
+ import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
21
+ import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
22
+
23
+ var MainThreadLanguageFeatures_1;
24
+ let MainThreadLanguageFeatures = MainThreadLanguageFeatures_1 = class MainThreadLanguageFeatures extends Disposable {
25
+ constructor(extHostContext, _languageService, _languageConfigurationService, _languageFeaturesService, _uriIdentService) {
26
+ super();
27
+ this._languageService = _languageService;
28
+ this._languageConfigurationService = _languageConfigurationService;
29
+ this._languageFeaturesService = _languageFeaturesService;
30
+ this._uriIdentService = _uriIdentService;
31
+ this._registrations = this._register(( new DisposableMap()));
32
+ this._pasteEditProviders = ( new Map());
33
+ this._documentOnDropEditProviders = ( new Map());
34
+ this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostLanguageFeatures));
35
+ if (this._languageService) {
36
+ const updateAllWordDefinitions = () => {
37
+ const wordDefinitionDtos = [];
38
+ for (const languageId of _languageService.getRegisteredLanguageIds()) {
39
+ const wordDefinition = this._languageConfigurationService.getLanguageConfiguration(languageId).getWordDefinition();
40
+ wordDefinitionDtos.push({
41
+ languageId: languageId,
42
+ regexSource: wordDefinition.source,
43
+ regexFlags: wordDefinition.flags
44
+ });
45
+ }
46
+ this._proxy.$setWordDefinitions(wordDefinitionDtos);
47
+ };
48
+ this._languageConfigurationService.onDidChange((e) => {
49
+ if (!e.languageId) {
50
+ updateAllWordDefinitions();
51
+ }
52
+ else {
53
+ const wordDefinition = this._languageConfigurationService.getLanguageConfiguration(e.languageId).getWordDefinition();
54
+ this._proxy.$setWordDefinitions([{
55
+ languageId: e.languageId,
56
+ regexSource: wordDefinition.source,
57
+ regexFlags: wordDefinition.flags
58
+ }]);
59
+ }
60
+ });
61
+ updateAllWordDefinitions();
62
+ }
63
+ }
64
+ $unregister(handle) {
65
+ this._registrations.deleteAndDispose(handle);
66
+ }
67
+ static _reviveLocationDto(data) {
68
+ if (!data) {
69
+ return data;
70
+ }
71
+ else if (Array.isArray(data)) {
72
+ data.forEach(l => MainThreadLanguageFeatures_1._reviveLocationDto(l));
73
+ return data;
74
+ }
75
+ else {
76
+ data.uri = URI.revive(data.uri);
77
+ return data;
78
+ }
79
+ }
80
+ static _reviveLocationLinkDto(data) {
81
+ if (!data) {
82
+ return data;
83
+ }
84
+ else if (Array.isArray(data)) {
85
+ data.forEach(l => MainThreadLanguageFeatures_1._reviveLocationLinkDto(l));
86
+ return data;
87
+ }
88
+ else {
89
+ data.uri = URI.revive(data.uri);
90
+ return data;
91
+ }
92
+ }
93
+ static _reviveWorkspaceSymbolDto(data) {
94
+ if (!data) {
95
+ return data;
96
+ }
97
+ else if (Array.isArray(data)) {
98
+ data.forEach(MainThreadLanguageFeatures_1._reviveWorkspaceSymbolDto);
99
+ return data;
100
+ }
101
+ else {
102
+ data.location = MainThreadLanguageFeatures_1._reviveLocationDto(data.location);
103
+ return data;
104
+ }
105
+ }
106
+ static _reviveCodeActionDto(data, uriIdentService) {
107
+ data?.forEach(code => reviveWorkspaceEditDto(code.edit, uriIdentService));
108
+ return data;
109
+ }
110
+ static _reviveLinkDTO(data) {
111
+ if (data.url && typeof data.url !== 'string') {
112
+ data.url = URI.revive(data.url);
113
+ }
114
+ return data;
115
+ }
116
+ static _reviveCallHierarchyItemDto(data) {
117
+ if (data) {
118
+ data.uri = URI.revive(data.uri);
119
+ }
120
+ return data;
121
+ }
122
+ static _reviveTypeHierarchyItemDto(data) {
123
+ if (data) {
124
+ data.uri = URI.revive(data.uri);
125
+ }
126
+ return data;
127
+ }
128
+ $registerDocumentSymbolProvider(handle, selector, displayName) {
129
+ this._registrations.set(handle, this._languageFeaturesService.documentSymbolProvider.register(selector, {
130
+ displayName,
131
+ provideDocumentSymbols: (model, token) => {
132
+ return this._proxy.$provideDocumentSymbols(handle, model.uri, token);
133
+ }
134
+ }));
135
+ }
136
+ $registerCodeLensSupport(handle, selector, eventHandle) {
137
+ const provider = {
138
+ provideCodeLenses: async (model, token) => {
139
+ const listDto = await this._proxy.$provideCodeLenses(handle, model.uri, token);
140
+ if (!listDto) {
141
+ return undefined;
142
+ }
143
+ return {
144
+ lenses: listDto.lenses,
145
+ dispose: () => listDto.cacheId && this._proxy.$releaseCodeLenses(handle, listDto.cacheId)
146
+ };
147
+ },
148
+ resolveCodeLens: async (model, codeLens, token) => {
149
+ const result = await this._proxy.$resolveCodeLens(handle, codeLens, token);
150
+ if (!result) {
151
+ return undefined;
152
+ }
153
+ return {
154
+ ...result,
155
+ range: model.validateRange(result.range),
156
+ };
157
+ }
158
+ };
159
+ if (typeof eventHandle === 'number') {
160
+ const emitter = ( new Emitter());
161
+ this._registrations.set(eventHandle, emitter);
162
+ provider.onDidChange = emitter.event;
163
+ }
164
+ this._registrations.set(handle, this._languageFeaturesService.codeLensProvider.register(selector, provider));
165
+ }
166
+ $emitCodeLensEvent(eventHandle, event) {
167
+ const obj = this._registrations.get(eventHandle);
168
+ if (obj instanceof Emitter) {
169
+ obj.fire(event);
170
+ }
171
+ }
172
+ $registerDefinitionSupport(handle, selector) {
173
+ this._registrations.set(handle, this._languageFeaturesService.definitionProvider.register(selector, {
174
+ provideDefinition: (model, position, token) => {
175
+ return this._proxy.$provideDefinition(handle, model.uri, position, token).then(MainThreadLanguageFeatures_1._reviveLocationLinkDto);
176
+ }
177
+ }));
178
+ }
179
+ $registerDeclarationSupport(handle, selector) {
180
+ this._registrations.set(handle, this._languageFeaturesService.declarationProvider.register(selector, {
181
+ provideDeclaration: (model, position, token) => {
182
+ return this._proxy.$provideDeclaration(handle, model.uri, position, token).then(MainThreadLanguageFeatures_1._reviveLocationLinkDto);
183
+ }
184
+ }));
185
+ }
186
+ $registerImplementationSupport(handle, selector) {
187
+ this._registrations.set(handle, this._languageFeaturesService.implementationProvider.register(selector, {
188
+ provideImplementation: (model, position, token) => {
189
+ return this._proxy.$provideImplementation(handle, model.uri, position, token).then(MainThreadLanguageFeatures_1._reviveLocationLinkDto);
190
+ }
191
+ }));
192
+ }
193
+ $registerTypeDefinitionSupport(handle, selector) {
194
+ this._registrations.set(handle, this._languageFeaturesService.typeDefinitionProvider.register(selector, {
195
+ provideTypeDefinition: (model, position, token) => {
196
+ return this._proxy.$provideTypeDefinition(handle, model.uri, position, token).then(MainThreadLanguageFeatures_1._reviveLocationLinkDto);
197
+ }
198
+ }));
199
+ }
200
+ $registerHoverProvider(handle, selector) {
201
+ this._registrations.set(handle, this._languageFeaturesService.hoverProvider.register(selector, {
202
+ provideHover: (model, position, token) => {
203
+ return this._proxy.$provideHover(handle, model.uri, position, token);
204
+ }
205
+ }));
206
+ }
207
+ $registerEvaluatableExpressionProvider(handle, selector) {
208
+ this._registrations.set(handle, this._languageFeaturesService.evaluatableExpressionProvider.register(selector, {
209
+ provideEvaluatableExpression: (model, position, token) => {
210
+ return this._proxy.$provideEvaluatableExpression(handle, model.uri, position, token);
211
+ }
212
+ }));
213
+ }
214
+ $registerInlineValuesProvider(handle, selector, eventHandle) {
215
+ const provider = {
216
+ provideInlineValues: (model, viewPort, context, token) => {
217
+ return this._proxy.$provideInlineValues(handle, model.uri, viewPort, context, token);
218
+ }
219
+ };
220
+ if (typeof eventHandle === 'number') {
221
+ const emitter = ( new Emitter());
222
+ this._registrations.set(eventHandle, emitter);
223
+ provider.onDidChangeInlineValues = emitter.event;
224
+ }
225
+ this._registrations.set(handle, this._languageFeaturesService.inlineValuesProvider.register(selector, provider));
226
+ }
227
+ $emitInlineValuesEvent(eventHandle, event) {
228
+ const obj = this._registrations.get(eventHandle);
229
+ if (obj instanceof Emitter) {
230
+ obj.fire(event);
231
+ }
232
+ }
233
+ $registerDocumentHighlightProvider(handle, selector) {
234
+ this._registrations.set(handle, this._languageFeaturesService.documentHighlightProvider.register(selector, {
235
+ provideDocumentHighlights: (model, position, token) => {
236
+ return this._proxy.$provideDocumentHighlights(handle, model.uri, position, token);
237
+ }
238
+ }));
239
+ }
240
+ $registerLinkedEditingRangeProvider(handle, selector) {
241
+ this._registrations.set(handle, this._languageFeaturesService.linkedEditingRangeProvider.register(selector, {
242
+ provideLinkedEditingRanges: async (model, position, token) => {
243
+ const res = await this._proxy.$provideLinkedEditingRanges(handle, model.uri, position, token);
244
+ if (res) {
245
+ return {
246
+ ranges: res.ranges,
247
+ wordPattern: res.wordPattern ? MainThreadLanguageFeatures_1._reviveRegExp(res.wordPattern) : undefined
248
+ };
249
+ }
250
+ return undefined;
251
+ }
252
+ }));
253
+ }
254
+ $registerReferenceSupport(handle, selector) {
255
+ this._registrations.set(handle, this._languageFeaturesService.referenceProvider.register(selector, {
256
+ provideReferences: (model, position, context, token) => {
257
+ return this._proxy.$provideReferences(handle, model.uri, position, context, token).then(MainThreadLanguageFeatures_1._reviveLocationDto);
258
+ }
259
+ }));
260
+ }
261
+ $registerQuickFixSupport(handle, selector, metadata, displayName, supportsResolve) {
262
+ const provider = {
263
+ provideCodeActions: async (model, rangeOrSelection, context, token) => {
264
+ const listDto = await this._proxy.$provideCodeActions(handle, model.uri, rangeOrSelection, context, token);
265
+ if (!listDto) {
266
+ return undefined;
267
+ }
268
+ return {
269
+ actions: MainThreadLanguageFeatures_1._reviveCodeActionDto(listDto.actions, this._uriIdentService),
270
+ dispose: () => {
271
+ if (typeof listDto.cacheId === 'number') {
272
+ this._proxy.$releaseCodeActions(handle, listDto.cacheId);
273
+ }
274
+ }
275
+ };
276
+ },
277
+ providedCodeActionKinds: metadata.providedKinds,
278
+ documentation: metadata.documentation,
279
+ displayName
280
+ };
281
+ if (supportsResolve) {
282
+ provider.resolveCodeAction = async (codeAction, token) => {
283
+ const resolved = await this._proxy.$resolveCodeAction(handle, codeAction.cacheId, token);
284
+ if (resolved.edit) {
285
+ codeAction.edit = reviveWorkspaceEditDto(resolved.edit, this._uriIdentService);
286
+ }
287
+ if (resolved.command) {
288
+ codeAction.command = resolved.command;
289
+ }
290
+ return codeAction;
291
+ };
292
+ }
293
+ this._registrations.set(handle, this._languageFeaturesService.codeActionProvider.register(selector, provider));
294
+ }
295
+ $registerPasteEditProvider(handle, selector, id, metadata) {
296
+ const provider = ( new MainThreadPasteEditProvider(handle, this._proxy, id, metadata, this._uriIdentService));
297
+ this._pasteEditProviders.set(handle, provider);
298
+ this._registrations.set(handle, combinedDisposable(this._languageFeaturesService.documentPasteEditProvider.register(selector, provider), toDisposable(() => this._pasteEditProviders.delete(handle))));
299
+ }
300
+ $resolvePasteFileData(handle, requestId, dataId) {
301
+ const provider = this._pasteEditProviders.get(handle);
302
+ if (!provider) {
303
+ throw new Error('Could not find provider');
304
+ }
305
+ return provider.resolveFileData(requestId, dataId);
306
+ }
307
+ $registerDocumentFormattingSupport(handle, selector, extensionId, displayName) {
308
+ this._registrations.set(handle, this._languageFeaturesService.documentFormattingEditProvider.register(selector, {
309
+ extensionId,
310
+ displayName,
311
+ provideDocumentFormattingEdits: (model, options, token) => {
312
+ return this._proxy.$provideDocumentFormattingEdits(handle, model.uri, options, token);
313
+ }
314
+ }));
315
+ }
316
+ $registerRangeFormattingSupport(handle, selector, extensionId, displayName, supportsRanges) {
317
+ this._registrations.set(handle, this._languageFeaturesService.documentRangeFormattingEditProvider.register(selector, {
318
+ extensionId,
319
+ displayName,
320
+ provideDocumentRangeFormattingEdits: (model, range, options, token) => {
321
+ return this._proxy.$provideDocumentRangeFormattingEdits(handle, model.uri, range, options, token);
322
+ },
323
+ provideDocumentRangesFormattingEdits: !supportsRanges
324
+ ? undefined
325
+ : (model, ranges, options, token) => {
326
+ return this._proxy.$provideDocumentRangesFormattingEdits(handle, model.uri, ranges, options, token);
327
+ },
328
+ }));
329
+ }
330
+ $registerOnTypeFormattingSupport(handle, selector, autoFormatTriggerCharacters, extensionId) {
331
+ this._registrations.set(handle, this._languageFeaturesService.onTypeFormattingEditProvider.register(selector, {
332
+ extensionId,
333
+ autoFormatTriggerCharacters,
334
+ provideOnTypeFormattingEdits: (model, position, ch, options, token) => {
335
+ return this._proxy.$provideOnTypeFormattingEdits(handle, model.uri, position, ch, options, token);
336
+ }
337
+ }));
338
+ }
339
+ $registerNavigateTypeSupport(handle, supportsResolve) {
340
+ let lastResultId;
341
+ const provider = {
342
+ provideWorkspaceSymbols: async (search, token) => {
343
+ const result = await this._proxy.$provideWorkspaceSymbols(handle, search, token);
344
+ if (lastResultId !== undefined) {
345
+ this._proxy.$releaseWorkspaceSymbols(handle, lastResultId);
346
+ }
347
+ lastResultId = result.cacheId;
348
+ return MainThreadLanguageFeatures_1._reviveWorkspaceSymbolDto(result.symbols);
349
+ }
350
+ };
351
+ if (supportsResolve) {
352
+ provider.resolveWorkspaceSymbol = async (item, token) => {
353
+ const resolvedItem = await this._proxy.$resolveWorkspaceSymbol(handle, item, token);
354
+ return resolvedItem && MainThreadLanguageFeatures_1._reviveWorkspaceSymbolDto(resolvedItem);
355
+ };
356
+ }
357
+ this._registrations.set(handle, WorkspaceSymbolProviderRegistry.register(provider));
358
+ }
359
+ $registerRenameSupport(handle, selector, supportResolveLocation) {
360
+ this._registrations.set(handle, this._languageFeaturesService.renameProvider.register(selector, {
361
+ provideRenameEdits: (model, position, newName, token) => {
362
+ return this._proxy.$provideRenameEdits(handle, model.uri, position, newName, token).then(data => reviveWorkspaceEditDto(data, this._uriIdentService));
363
+ },
364
+ resolveRenameLocation: supportResolveLocation
365
+ ? (model, position, token) => this._proxy.$resolveRenameLocation(handle, model.uri, position, token)
366
+ : undefined
367
+ }));
368
+ }
369
+ $registerDocumentSemanticTokensProvider(handle, selector, legend, eventHandle) {
370
+ let event = undefined;
371
+ if (typeof eventHandle === 'number') {
372
+ const emitter = ( new Emitter());
373
+ this._registrations.set(eventHandle, emitter);
374
+ event = emitter.event;
375
+ }
376
+ this._registrations.set(handle, this._languageFeaturesService.documentSemanticTokensProvider.register(selector, ( new MainThreadDocumentSemanticTokensProvider(this._proxy, handle, legend, event))));
377
+ }
378
+ $emitDocumentSemanticTokensEvent(eventHandle) {
379
+ const obj = this._registrations.get(eventHandle);
380
+ if (obj instanceof Emitter) {
381
+ obj.fire(undefined);
382
+ }
383
+ }
384
+ $registerDocumentRangeSemanticTokensProvider(handle, selector, legend) {
385
+ this._registrations.set(handle, this._languageFeaturesService.documentRangeSemanticTokensProvider.register(selector, ( new MainThreadDocumentRangeSemanticTokensProvider(this._proxy, handle, legend))));
386
+ }
387
+ static _inflateSuggestDto(defaultRange, data, extensionId) {
388
+ const label = data["a" ];
389
+ const commandId = data["o" ];
390
+ const commandIdent = data["n" ];
391
+ const commitChars = data["k" ];
392
+ return {
393
+ label,
394
+ extensionId,
395
+ kind: data["b" ] ?? 9 ,
396
+ tags: data["m" ],
397
+ detail: data["c" ],
398
+ documentation: data["d" ],
399
+ sortText: data["e" ],
400
+ filterText: data["f" ],
401
+ preselect: data["g" ],
402
+ insertText: data["h" ] ?? (typeof label === 'string' ? label : label.label),
403
+ range: data["j" ] ?? defaultRange,
404
+ insertTextRules: data["i" ],
405
+ commitCharacters: commitChars ? Array.from(commitChars) : undefined,
406
+ additionalTextEdits: data["l" ],
407
+ command: commandId ? {
408
+ $ident: commandIdent,
409
+ id: commandId,
410
+ title: '',
411
+ arguments: commandIdent ? [commandIdent] : data["p" ],
412
+ } : undefined,
413
+ _id: data.x,
414
+ };
415
+ }
416
+ $registerCompletionsProvider(handle, selector, triggerCharacters, supportsResolveDetails, extensionId) {
417
+ const provider = {
418
+ triggerCharacters,
419
+ _debugDisplayName: `${extensionId.value}(${triggerCharacters.join('')})`,
420
+ provideCompletionItems: async (model, position, context, token) => {
421
+ const result = await this._proxy.$provideCompletionItems(handle, model.uri, position, context, token);
422
+ if (!result) {
423
+ return result;
424
+ }
425
+ return {
426
+ suggestions: ( result["b" ].map(
427
+ d => MainThreadLanguageFeatures_1._inflateSuggestDto(result["a" ], d, extensionId)
428
+ )),
429
+ incomplete: result["c" ] || false,
430
+ duration: result["d" ],
431
+ dispose: () => {
432
+ if (typeof result.x === 'number') {
433
+ this._proxy.$releaseCompletionItems(handle, result.x);
434
+ }
435
+ }
436
+ };
437
+ }
438
+ };
439
+ if (supportsResolveDetails) {
440
+ provider.resolveCompletionItem = (suggestion, token) => {
441
+ return this._proxy.$resolveCompletionItem(handle, suggestion._id, token).then(result => {
442
+ if (!result) {
443
+ return suggestion;
444
+ }
445
+ const newSuggestion = MainThreadLanguageFeatures_1._inflateSuggestDto(suggestion.range, result, extensionId);
446
+ return mixin(suggestion, newSuggestion, true);
447
+ });
448
+ };
449
+ }
450
+ this._registrations.set(handle, this._languageFeaturesService.completionProvider.register(selector, provider));
451
+ }
452
+ $registerInlineCompletionsSupport(handle, selector, supportsHandleEvents, extensionId, yieldsToExtensionIds) {
453
+ const provider = {
454
+ provideInlineCompletions: async (model, position, context, token) => {
455
+ return this._proxy.$provideInlineCompletions(handle, model.uri, position, context, token);
456
+ },
457
+ handleItemDidShow: async (completions, item, updatedInsertText) => {
458
+ if (supportsHandleEvents) {
459
+ await this._proxy.$handleInlineCompletionDidShow(handle, completions.pid, item.idx, updatedInsertText);
460
+ }
461
+ },
462
+ handlePartialAccept: async (completions, item, acceptedCharacters) => {
463
+ if (supportsHandleEvents) {
464
+ await this._proxy.$handleInlineCompletionPartialAccept(handle, completions.pid, item.idx, acceptedCharacters);
465
+ }
466
+ },
467
+ freeInlineCompletions: (completions) => {
468
+ this._proxy.$freeInlineCompletionsList(handle, completions.pid);
469
+ },
470
+ groupId: extensionId,
471
+ yieldsToGroupIds: yieldsToExtensionIds,
472
+ toString() {
473
+ return `InlineCompletionsProvider(${extensionId})`;
474
+ }
475
+ };
476
+ this._registrations.set(handle, this._languageFeaturesService.inlineCompletionsProvider.register(selector, provider));
477
+ }
478
+ $registerSignatureHelpProvider(handle, selector, metadata) {
479
+ this._registrations.set(handle, this._languageFeaturesService.signatureHelpProvider.register(selector, {
480
+ signatureHelpTriggerCharacters: metadata.triggerCharacters,
481
+ signatureHelpRetriggerCharacters: metadata.retriggerCharacters,
482
+ provideSignatureHelp: async (model, position, token, context) => {
483
+ const result = await this._proxy.$provideSignatureHelp(handle, model.uri, position, context, token);
484
+ if (!result) {
485
+ return undefined;
486
+ }
487
+ return {
488
+ value: result,
489
+ dispose: () => {
490
+ this._proxy.$releaseSignatureHelp(handle, result.id);
491
+ }
492
+ };
493
+ }
494
+ }));
495
+ }
496
+ $registerInlayHintsProvider(handle, selector, supportsResolve, eventHandle, displayName) {
497
+ const provider = {
498
+ displayName,
499
+ provideInlayHints: async (model, range, token) => {
500
+ const result = await this._proxy.$provideInlayHints(handle, model.uri, range, token);
501
+ if (!result) {
502
+ return;
503
+ }
504
+ return {
505
+ hints: revive(result.hints),
506
+ dispose: () => {
507
+ if (result.cacheId) {
508
+ this._proxy.$releaseInlayHints(handle, result.cacheId);
509
+ }
510
+ }
511
+ };
512
+ }
513
+ };
514
+ if (supportsResolve) {
515
+ provider.resolveInlayHint = async (hint, token) => {
516
+ const dto = hint;
517
+ if (!dto.cacheId) {
518
+ return hint;
519
+ }
520
+ const result = await this._proxy.$resolveInlayHint(handle, dto.cacheId, token);
521
+ if (token.isCancellationRequested) {
522
+ throw new CancellationError();
523
+ }
524
+ if (!result) {
525
+ return hint;
526
+ }
527
+ return {
528
+ ...hint,
529
+ tooltip: result.tooltip,
530
+ label: revive(result.label)
531
+ };
532
+ };
533
+ }
534
+ if (typeof eventHandle === 'number') {
535
+ const emitter = ( new Emitter());
536
+ this._registrations.set(eventHandle, emitter);
537
+ provider.onDidChangeInlayHints = emitter.event;
538
+ }
539
+ this._registrations.set(handle, this._languageFeaturesService.inlayHintsProvider.register(selector, provider));
540
+ }
541
+ $emitInlayHintsEvent(eventHandle) {
542
+ const obj = this._registrations.get(eventHandle);
543
+ if (obj instanceof Emitter) {
544
+ obj.fire(undefined);
545
+ }
546
+ }
547
+ $registerDocumentLinkProvider(handle, selector, supportsResolve) {
548
+ const provider = {
549
+ provideLinks: (model, token) => {
550
+ return this._proxy.$provideDocumentLinks(handle, model.uri, token).then(dto => {
551
+ if (!dto) {
552
+ return undefined;
553
+ }
554
+ return {
555
+ links: ( dto.links.map(MainThreadLanguageFeatures_1._reviveLinkDTO)),
556
+ dispose: () => {
557
+ if (typeof dto.cacheId === 'number') {
558
+ this._proxy.$releaseDocumentLinks(handle, dto.cacheId);
559
+ }
560
+ }
561
+ };
562
+ });
563
+ }
564
+ };
565
+ if (supportsResolve) {
566
+ provider.resolveLink = (link, token) => {
567
+ const dto = link;
568
+ if (!dto.cacheId) {
569
+ return link;
570
+ }
571
+ return this._proxy.$resolveDocumentLink(handle, dto.cacheId, token).then(obj => {
572
+ return obj && MainThreadLanguageFeatures_1._reviveLinkDTO(obj);
573
+ });
574
+ };
575
+ }
576
+ this._registrations.set(handle, this._languageFeaturesService.linkProvider.register(selector, provider));
577
+ }
578
+ $registerDocumentColorProvider(handle, selector) {
579
+ const proxy = this._proxy;
580
+ this._registrations.set(handle, this._languageFeaturesService.colorProvider.register(selector, {
581
+ provideDocumentColors: (model, token) => {
582
+ return proxy.$provideDocumentColors(handle, model.uri, token)
583
+ .then(documentColors => {
584
+ return ( documentColors.map(documentColor => {
585
+ const [red, green, blue, alpha] = documentColor.color;
586
+ const color = {
587
+ red: red,
588
+ green: green,
589
+ blue: blue,
590
+ alpha
591
+ };
592
+ return {
593
+ color,
594
+ range: documentColor.range
595
+ };
596
+ }));
597
+ });
598
+ },
599
+ provideColorPresentations: (model, colorInfo, token) => {
600
+ return proxy.$provideColorPresentations(handle, model.uri, {
601
+ color: [colorInfo.color.red, colorInfo.color.green, colorInfo.color.blue, colorInfo.color.alpha],
602
+ range: colorInfo.range
603
+ }, token);
604
+ }
605
+ }));
606
+ }
607
+ $registerFoldingRangeProvider(handle, selector, extensionId, eventHandle) {
608
+ const provider = {
609
+ id: extensionId.value,
610
+ provideFoldingRanges: (model, context, token) => {
611
+ return this._proxy.$provideFoldingRanges(handle, model.uri, context, token);
612
+ }
613
+ };
614
+ if (typeof eventHandle === 'number') {
615
+ const emitter = ( new Emitter());
616
+ this._registrations.set(eventHandle, emitter);
617
+ provider.onDidChange = emitter.event;
618
+ }
619
+ this._registrations.set(handle, this._languageFeaturesService.foldingRangeProvider.register(selector, provider));
620
+ }
621
+ $emitFoldingRangeEvent(eventHandle, event) {
622
+ const obj = this._registrations.get(eventHandle);
623
+ if (obj instanceof Emitter) {
624
+ obj.fire(event);
625
+ }
626
+ }
627
+ $registerSelectionRangeProvider(handle, selector) {
628
+ this._registrations.set(handle, this._languageFeaturesService.selectionRangeProvider.register(selector, {
629
+ provideSelectionRanges: (model, positions, token) => {
630
+ return this._proxy.$provideSelectionRanges(handle, model.uri, positions, token);
631
+ }
632
+ }));
633
+ }
634
+ $registerCallHierarchyProvider(handle, selector) {
635
+ this._registrations.set(handle, CallHierarchyProviderRegistry.register(selector, {
636
+ prepareCallHierarchy: async (document, position, token) => {
637
+ const items = await this._proxy.$prepareCallHierarchy(handle, document.uri, position, token);
638
+ if (!items || items.length === 0) {
639
+ return undefined;
640
+ }
641
+ return {
642
+ dispose: () => {
643
+ for (const item of items) {
644
+ this._proxy.$releaseCallHierarchy(handle, item._sessionId);
645
+ }
646
+ },
647
+ roots: ( items.map(MainThreadLanguageFeatures_1._reviveCallHierarchyItemDto))
648
+ };
649
+ },
650
+ provideOutgoingCalls: async (item, token) => {
651
+ const outgoing = await this._proxy.$provideCallHierarchyOutgoingCalls(handle, item._sessionId, item._itemId, token);
652
+ if (!outgoing) {
653
+ return outgoing;
654
+ }
655
+ outgoing.forEach(value => {
656
+ value.to = MainThreadLanguageFeatures_1._reviveCallHierarchyItemDto(value.to);
657
+ });
658
+ return outgoing;
659
+ },
660
+ provideIncomingCalls: async (item, token) => {
661
+ const incoming = await this._proxy.$provideCallHierarchyIncomingCalls(handle, item._sessionId, item._itemId, token);
662
+ if (!incoming) {
663
+ return incoming;
664
+ }
665
+ incoming.forEach(value => {
666
+ value.from = MainThreadLanguageFeatures_1._reviveCallHierarchyItemDto(value.from);
667
+ });
668
+ return incoming;
669
+ }
670
+ }));
671
+ }
672
+ static _reviveRegExp(regExp) {
673
+ return ( new RegExp(regExp.pattern, regExp.flags));
674
+ }
675
+ static _reviveIndentationRule(indentationRule) {
676
+ return {
677
+ decreaseIndentPattern: MainThreadLanguageFeatures_1._reviveRegExp(indentationRule.decreaseIndentPattern),
678
+ increaseIndentPattern: MainThreadLanguageFeatures_1._reviveRegExp(indentationRule.increaseIndentPattern),
679
+ indentNextLinePattern: indentationRule.indentNextLinePattern ? MainThreadLanguageFeatures_1._reviveRegExp(indentationRule.indentNextLinePattern) : undefined,
680
+ unIndentedLinePattern: indentationRule.unIndentedLinePattern ? MainThreadLanguageFeatures_1._reviveRegExp(indentationRule.unIndentedLinePattern) : undefined,
681
+ };
682
+ }
683
+ static _reviveOnEnterRule(onEnterRule) {
684
+ return {
685
+ beforeText: MainThreadLanguageFeatures_1._reviveRegExp(onEnterRule.beforeText),
686
+ afterText: onEnterRule.afterText ? MainThreadLanguageFeatures_1._reviveRegExp(onEnterRule.afterText) : undefined,
687
+ previousLineText: onEnterRule.previousLineText ? MainThreadLanguageFeatures_1._reviveRegExp(onEnterRule.previousLineText) : undefined,
688
+ action: onEnterRule.action
689
+ };
690
+ }
691
+ static _reviveOnEnterRules(onEnterRules) {
692
+ return ( onEnterRules.map(MainThreadLanguageFeatures_1._reviveOnEnterRule));
693
+ }
694
+ $setLanguageConfiguration(handle, languageId, _configuration) {
695
+ const configuration = {
696
+ comments: _configuration.comments,
697
+ brackets: _configuration.brackets,
698
+ wordPattern: _configuration.wordPattern ? MainThreadLanguageFeatures_1._reviveRegExp(_configuration.wordPattern) : undefined,
699
+ indentationRules: _configuration.indentationRules ? MainThreadLanguageFeatures_1._reviveIndentationRule(_configuration.indentationRules) : undefined,
700
+ onEnterRules: _configuration.onEnterRules ? MainThreadLanguageFeatures_1._reviveOnEnterRules(_configuration.onEnterRules) : undefined,
701
+ autoClosingPairs: undefined,
702
+ surroundingPairs: undefined,
703
+ __electricCharacterSupport: undefined
704
+ };
705
+ if (_configuration.autoClosingPairs) {
706
+ configuration.autoClosingPairs = _configuration.autoClosingPairs;
707
+ }
708
+ else if (_configuration.__characterPairSupport) {
709
+ configuration.autoClosingPairs = _configuration.__characterPairSupport.autoClosingPairs;
710
+ }
711
+ if (_configuration.__electricCharacterSupport && _configuration.__electricCharacterSupport.docComment) {
712
+ configuration.__electricCharacterSupport = {
713
+ docComment: {
714
+ open: _configuration.__electricCharacterSupport.docComment.open,
715
+ close: _configuration.__electricCharacterSupport.docComment.close
716
+ }
717
+ };
718
+ }
719
+ if (this._languageService.isRegisteredLanguageId(languageId)) {
720
+ this._registrations.set(handle, this._languageConfigurationService.register(languageId, configuration, 100));
721
+ }
722
+ }
723
+ $registerTypeHierarchyProvider(handle, selector) {
724
+ this._registrations.set(handle, TypeHierarchyProviderRegistry.register(selector, {
725
+ prepareTypeHierarchy: async (document, position, token) => {
726
+ const items = await this._proxy.$prepareTypeHierarchy(handle, document.uri, position, token);
727
+ if (!items) {
728
+ return undefined;
729
+ }
730
+ return {
731
+ dispose: () => {
732
+ for (const item of items) {
733
+ this._proxy.$releaseTypeHierarchy(handle, item._sessionId);
734
+ }
735
+ },
736
+ roots: ( items.map(MainThreadLanguageFeatures_1._reviveTypeHierarchyItemDto))
737
+ };
738
+ },
739
+ provideSupertypes: async (item, token) => {
740
+ const supertypes = await this._proxy.$provideTypeHierarchySupertypes(handle, item._sessionId, item._itemId, token);
741
+ if (!supertypes) {
742
+ return supertypes;
743
+ }
744
+ return ( supertypes.map(MainThreadLanguageFeatures_1._reviveTypeHierarchyItemDto));
745
+ },
746
+ provideSubtypes: async (item, token) => {
747
+ const subtypes = await this._proxy.$provideTypeHierarchySubtypes(handle, item._sessionId, item._itemId, token);
748
+ if (!subtypes) {
749
+ return subtypes;
750
+ }
751
+ return ( subtypes.map(MainThreadLanguageFeatures_1._reviveTypeHierarchyItemDto));
752
+ }
753
+ }));
754
+ }
755
+ $registerDocumentOnDropEditProvider(handle, selector, id, metadata) {
756
+ const provider = ( new MainThreadDocumentOnDropEditProvider(handle, this._proxy, id, metadata, this._uriIdentService));
757
+ this._documentOnDropEditProviders.set(handle, provider);
758
+ this._registrations.set(handle, combinedDisposable(this._languageFeaturesService.documentOnDropEditProvider.register(selector, provider), toDisposable(() => this._documentOnDropEditProviders.delete(handle))));
759
+ }
760
+ async $resolveDocumentOnDropFileData(handle, requestId, dataId) {
761
+ const provider = this._documentOnDropEditProviders.get(handle);
762
+ if (!provider) {
763
+ throw new Error('Could not find provider');
764
+ }
765
+ return provider.resolveDocumentOnDropFileData(requestId, dataId);
766
+ }
767
+ $registerMappedEditsProvider(handle, selector) {
768
+ const provider = ( new MainThreadMappedEditsProvider(handle, this._proxy, this._uriIdentService));
769
+ this._registrations.set(handle, this._languageFeaturesService.mappedEditsProvider.register(selector, provider));
770
+ }
771
+ };
772
+ MainThreadLanguageFeatures = MainThreadLanguageFeatures_1 = __decorate([
773
+ extHostNamedCustomer(MainContext.MainThreadLanguageFeatures),
774
+ ( __param(1, ILanguageService)),
775
+ ( __param(2, ILanguageConfigurationService)),
776
+ ( __param(3, ILanguageFeaturesService)),
777
+ ( __param(4, IUriIdentityService))
778
+ ], MainThreadLanguageFeatures);
779
+ let MainThreadPasteEditProvider = class MainThreadPasteEditProvider {
780
+ constructor(_handle, _proxy, id, metadata, _uriIdentService) {
781
+ this._handle = _handle;
782
+ this._proxy = _proxy;
783
+ this._uriIdentService = _uriIdentService;
784
+ this.dataTransfers = ( new DataTransferFileCache());
785
+ this.id = id;
786
+ this.copyMimeTypes = metadata.copyMimeTypes;
787
+ this.pasteMimeTypes = metadata.pasteMimeTypes;
788
+ if (metadata.supportsCopy) {
789
+ this.prepareDocumentPaste = async (model, selections, dataTransfer, token) => {
790
+ const dataTransferDto = await DataTransfer.from(dataTransfer);
791
+ if (token.isCancellationRequested) {
792
+ return undefined;
793
+ }
794
+ const newDataTransfer = await this._proxy.$prepareDocumentPaste(_handle, model.uri, selections, dataTransferDto, token);
795
+ if (!newDataTransfer) {
796
+ return undefined;
797
+ }
798
+ const dataTransferOut = ( new VSDataTransfer());
799
+ for (const [type, item] of newDataTransfer.items) {
800
+ dataTransferOut.replace(type, createStringDataTransferItem(item.asString));
801
+ }
802
+ return dataTransferOut;
803
+ };
804
+ }
805
+ if (metadata.supportsPaste) {
806
+ this.provideDocumentPasteEdits = async (model, selections, dataTransfer, token) => {
807
+ const request = this.dataTransfers.add(dataTransfer);
808
+ try {
809
+ const dataTransferDto = await DataTransfer.from(dataTransfer);
810
+ if (token.isCancellationRequested) {
811
+ return;
812
+ }
813
+ const result = await this._proxy.$providePasteEdits(this._handle, request.id, model.uri, selections, dataTransferDto, token);
814
+ if (!result) {
815
+ return;
816
+ }
817
+ return {
818
+ ...result,
819
+ additionalEdit: result.additionalEdit ? reviveWorkspaceEditDto(result.additionalEdit, this._uriIdentService, dataId => this.resolveFileData(request.id, dataId)) : undefined,
820
+ };
821
+ }
822
+ finally {
823
+ request.dispose();
824
+ }
825
+ };
826
+ }
827
+ }
828
+ resolveFileData(requestId, dataId) {
829
+ return this.dataTransfers.resolveFileData(requestId, dataId);
830
+ }
831
+ };
832
+ MainThreadPasteEditProvider = ( __decorate([
833
+ ( __param(4, IUriIdentityService))
834
+ ], MainThreadPasteEditProvider));
835
+ let MainThreadDocumentOnDropEditProvider = class MainThreadDocumentOnDropEditProvider {
836
+ constructor(_handle, _proxy, id, metadata, _uriIdentService) {
837
+ this._handle = _handle;
838
+ this._proxy = _proxy;
839
+ this._uriIdentService = _uriIdentService;
840
+ this.dataTransfers = ( new DataTransferFileCache());
841
+ this.id = id;
842
+ this.dropMimeTypes = metadata?.dropMimeTypes ?? ['*/*'];
843
+ }
844
+ async provideDocumentOnDropEdits(model, position, dataTransfer, token) {
845
+ const request = this.dataTransfers.add(dataTransfer);
846
+ try {
847
+ const dataTransferDto = await DataTransfer.from(dataTransfer);
848
+ if (token.isCancellationRequested) {
849
+ return;
850
+ }
851
+ const edit = await this._proxy.$provideDocumentOnDropEdits(this._handle, request.id, model.uri, position, dataTransferDto, token);
852
+ if (!edit) {
853
+ return;
854
+ }
855
+ return {
856
+ ...edit,
857
+ additionalEdit: reviveWorkspaceEditDto(edit.additionalEdit, this._uriIdentService, dataId => this.resolveDocumentOnDropFileData(request.id, dataId)),
858
+ };
859
+ }
860
+ finally {
861
+ request.dispose();
862
+ }
863
+ }
864
+ resolveDocumentOnDropFileData(requestId, dataId) {
865
+ return this.dataTransfers.resolveFileData(requestId, dataId);
866
+ }
867
+ };
868
+ MainThreadDocumentOnDropEditProvider = ( __decorate([
869
+ ( __param(4, IUriIdentityService))
870
+ ], MainThreadDocumentOnDropEditProvider));
871
+ class MainThreadDocumentSemanticTokensProvider {
872
+ constructor(_proxy, _handle, _legend, onDidChange) {
873
+ this._proxy = _proxy;
874
+ this._handle = _handle;
875
+ this._legend = _legend;
876
+ this.onDidChange = onDidChange;
877
+ }
878
+ releaseDocumentSemanticTokens(resultId) {
879
+ if (resultId) {
880
+ this._proxy.$releaseDocumentSemanticTokens(this._handle, parseInt(resultId, 10));
881
+ }
882
+ }
883
+ getLegend() {
884
+ return this._legend;
885
+ }
886
+ async provideDocumentSemanticTokens(model, lastResultId, token) {
887
+ const nLastResultId = lastResultId ? parseInt(lastResultId, 10) : 0;
888
+ const encodedDto = await this._proxy.$provideDocumentSemanticTokens(this._handle, model.uri, nLastResultId, token);
889
+ if (!encodedDto) {
890
+ return null;
891
+ }
892
+ if (token.isCancellationRequested) {
893
+ return null;
894
+ }
895
+ const dto = decodeSemanticTokensDto(encodedDto);
896
+ if (dto.type === 'full') {
897
+ return {
898
+ resultId: String(dto.id),
899
+ data: dto.data
900
+ };
901
+ }
902
+ return {
903
+ resultId: String(dto.id),
904
+ edits: dto.deltas
905
+ };
906
+ }
907
+ }
908
+ class MainThreadDocumentRangeSemanticTokensProvider {
909
+ constructor(_proxy, _handle, _legend) {
910
+ this._proxy = _proxy;
911
+ this._handle = _handle;
912
+ this._legend = _legend;
913
+ }
914
+ getLegend() {
915
+ return this._legend;
916
+ }
917
+ async provideDocumentRangeSemanticTokens(model, range, token) {
918
+ const encodedDto = await this._proxy.$provideDocumentRangeSemanticTokens(this._handle, model.uri, range, token);
919
+ if (!encodedDto) {
920
+ return null;
921
+ }
922
+ if (token.isCancellationRequested) {
923
+ return null;
924
+ }
925
+ const dto = decodeSemanticTokensDto(encodedDto);
926
+ if (dto.type === 'full') {
927
+ return {
928
+ resultId: String(dto.id),
929
+ data: dto.data
930
+ };
931
+ }
932
+ throw new Error(`Unexpected`);
933
+ }
934
+ }
935
+ class MainThreadMappedEditsProvider {
936
+ constructor(_handle, _proxy, _uriService) {
937
+ this._handle = _handle;
938
+ this._proxy = _proxy;
939
+ this._uriService = _uriService;
940
+ }
941
+ async provideMappedEdits(document, codeBlocks, context, token) {
942
+ const res = await this._proxy.$provideMappedEdits(this._handle, document.uri, codeBlocks, context, token);
943
+ return res ? reviveWorkspaceEditDto(res, this._uriService) : null;
944
+ }
945
+ }
946
+
947
+ export { MainThreadDocumentRangeSemanticTokensProvider, MainThreadDocumentSemanticTokensProvider, MainThreadLanguageFeatures, MainThreadMappedEditsProvider };