@codingame/monaco-vscode-extensions-service-override 4.1.0 → 4.1.2

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