@codingame/monaco-vscode-extensions-service-override 25.1.2 → 26.0.1

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 (120) hide show
  1. package/index.js +7 -0
  2. package/package.json +3 -3
  3. package/vscode/src/vs/base/common/console.js +24 -15
  4. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.d.ts +4 -1
  5. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +149 -84
  6. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +20 -12
  7. package/vscode/src/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +38 -21
  8. package/vscode/src/vs/platform/remote/common/managedSocket.js +7 -10
  9. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +5 -2
  10. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +5 -2
  11. package/vscode/src/vs/workbench/api/browser/mainThreadAiSettingsSearch.js +4 -1
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +200 -143
  13. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +10 -14
  14. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +41 -31
  15. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +9 -12
  16. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +168 -115
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +11 -13
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +5 -5
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +42 -15
  20. package/vscode/src/vs/workbench/api/browser/mainThreadChatOutputRenderer.js +8 -7
  21. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +4 -2
  22. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +170 -99
  23. package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +2 -5
  24. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +4 -9
  25. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +13 -12
  26. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +16 -19
  27. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +127 -70
  28. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -26
  29. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +5 -11
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +199 -97
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js +1 -4
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +88 -73
  33. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +5 -5
  34. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +16 -12
  35. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +10 -8
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +14 -6
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +52 -37
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +78 -58
  39. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +5 -7
  40. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +75 -63
  41. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +99 -91
  42. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +93 -55
  43. package/vscode/src/vs/workbench/api/browser/mainThreadEmbeddings.js +3 -7
  44. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +85 -60
  45. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +49 -45
  46. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +114 -72
  47. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +4 -7
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +1 -4
  49. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.d.ts +2 -2
  50. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +381 -238
  51. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +7 -3
  52. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +90 -13
  53. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +81 -58
  54. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +9 -10
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +2 -7
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +6 -10
  57. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +12 -10
  58. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +3 -2
  59. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +162 -97
  60. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +32 -26
  61. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +38 -32
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +48 -46
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +22 -18
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +5 -8
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +35 -21
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +31 -28
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +5 -7
  68. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +47 -23
  69. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +15 -12
  70. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +17 -18
  71. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +6 -7
  72. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +83 -66
  73. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +1 -5
  74. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +250 -92
  75. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +6 -8
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +37 -26
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +34 -21
  78. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +3 -6
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +19 -14
  80. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +41 -16
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +18 -17
  82. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +145 -145
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +19 -11
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +176 -80
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +52 -21
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +26 -24
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +1 -4
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +5 -8
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.d.ts +4 -1
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +106 -46
  91. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +83 -65
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +20 -20
  93. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +14 -9
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +17 -9
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +49 -38
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +10 -13
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +38 -27
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +5 -11
  99. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.d.ts +4 -1
  100. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +73 -43
  101. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +2 -2
  102. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +17 -10
  103. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +17 -11
  104. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +107 -80
  105. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +336 -175
  106. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +126 -71
  107. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +76 -54
  108. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +1 -2
  109. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -0
  110. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +343 -192
  111. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +5 -3
  112. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +0 -1
  113. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +75 -68
  114. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +135 -36
  115. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +22 -18
  116. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +14 -12
  117. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +21 -9
  118. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +48 -25
  119. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.d.ts +24 -0
  120. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +300 -0
@@ -0,0 +1,24 @@
1
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
2
+ import { IBrowserWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service";
3
+ import { IWorkbenchThemeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/workbenchThemeService.service";
4
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
5
+ export declare class CSSExtensionPoint {
6
+ private readonly themeService;
7
+ private readonly storageService;
8
+ private readonly disposables;
9
+ private readonly stylesheetsByExtension;
10
+ private readonly pendingExtensions;
11
+ private readonly watcher;
12
+ constructor(fileService: IFileService, environmentService: IBrowserWorkbenchEnvironmentService, themeService: IWorkbenchThemeService, storageService: IStorageService);
13
+ private isExtensionThemeActive;
14
+ private onThemeChange;
15
+ private activateExtensionCSS;
16
+ private removeStylesheets;
17
+ private applyCachedCSS;
18
+ private getCachedCSS;
19
+ private cacheExtensionCSS;
20
+ private clearCacheForExtension;
21
+ private createCSSLinkElement;
22
+ private reloadStylesheet;
23
+ dispose(): void;
24
+ }
@@ -0,0 +1,300 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
5
+ import { isProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
6
+ import { joinPath, isEqualOrParent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
7
+ import { FileChangeType } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
8
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
9
+ import { IBrowserWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service';
10
+ import { DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
12
+ import { FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
13
+ import { createLinkElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
14
+ import { IWorkbenchThemeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
15
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
16
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
17
+ import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
18
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
19
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
20
+
21
+ const CSS_CACHE_STORAGE_KEY = "workbench.contrib.css.cache";
22
+ const cssExtensionPoint = ExtensionsRegistry.registerExtensionPoint({
23
+ extensionPoint: "css",
24
+ jsonSchema: {
25
+ description: ( localize(14708, "Contributes CSS files to be loaded in the workbench.")),
26
+ type: "array",
27
+ items: {
28
+ type: "object",
29
+ properties: {
30
+ path: {
31
+ description: ( localize(
32
+ 14709,
33
+ "Path to the CSS file. The path is relative to the extension folder."
34
+ )),
35
+ type: "string"
36
+ }
37
+ },
38
+ required: ["path"]
39
+ },
40
+ defaultSnippets: [{
41
+ body: [{
42
+ path: "${1:styles.css}"
43
+ }]
44
+ }]
45
+ }
46
+ });
47
+ class CSSFileWatcher {
48
+ constructor(fileService, environmentService, onUpdate) {
49
+ this.fileService = fileService;
50
+ this.environmentService = environmentService;
51
+ this.onUpdate = onUpdate;
52
+ this.watchedLocations = ( new Map());
53
+ }
54
+ watch(uri) {
55
+ const key = ( uri.toString());
56
+ if (( this.watchedLocations.has(key))) {
57
+ return;
58
+ }
59
+ if (!this.environmentService.isExtensionDevelopment) {
60
+ return;
61
+ }
62
+ const disposables = ( new DisposableStore());
63
+ disposables.add(this.fileService.watch(uri));
64
+ disposables.add(this.fileService.onDidFilesChange(e => {
65
+ if (e.contains(uri, FileChangeType.UPDATED)) {
66
+ this.onUpdate(uri);
67
+ }
68
+ }));
69
+ this.watchedLocations.set(key, {
70
+ uri,
71
+ disposables
72
+ });
73
+ }
74
+ unwatch(uri) {
75
+ const key = ( uri.toString());
76
+ const entry = this.watchedLocations.get(key);
77
+ if (entry) {
78
+ entry.disposables.dispose();
79
+ this.watchedLocations.delete(key);
80
+ }
81
+ }
82
+ dispose() {
83
+ for (const entry of ( this.watchedLocations.values())) {
84
+ entry.disposables.dispose();
85
+ }
86
+ this.watchedLocations.clear();
87
+ }
88
+ }
89
+ let CSSExtensionPoint = class CSSExtensionPoint {
90
+ constructor(fileService, environmentService, themeService, storageService) {
91
+ this.themeService = themeService;
92
+ this.storageService = storageService;
93
+ this.disposables = ( new DisposableStore());
94
+ this.stylesheetsByExtension = ( new Map());
95
+ this.pendingExtensions = ( new Map());
96
+ this.watcher = this.disposables.add(( new CSSFileWatcher(fileService, environmentService, uri => this.reloadStylesheet(uri))));
97
+ this.disposables.add(toDisposable(() => {
98
+ for (const entries of ( this.stylesheetsByExtension.values())) {
99
+ for (const entry of entries) {
100
+ entry.disposables.dispose();
101
+ }
102
+ }
103
+ this.stylesheetsByExtension.clear();
104
+ }));
105
+ this.applyCachedCSS();
106
+ this.disposables.add(this.themeService.onDidColorThemeChange(() => this.onThemeChange()));
107
+ this.disposables.add(this.themeService.onDidFileIconThemeChange(() => this.onThemeChange()));
108
+ this.disposables.add(this.themeService.onDidProductIconThemeChange(() => this.onThemeChange()));
109
+ cssExtensionPoint.setHandler((extensions, delta) => {
110
+ for (const extension of delta.removed) {
111
+ const extensionId = extension.description.identifier.value;
112
+ this.pendingExtensions.delete(extensionId);
113
+ this.removeStylesheets(extensionId);
114
+ this.clearCacheForExtension(extensionId);
115
+ }
116
+ for (const extension of delta.added) {
117
+ if (!isProposedApiEnabled(extension.description, "css")) {
118
+ extension.collector.error(`The '${cssExtensionPoint.name}' contribution point is proposed API.`);
119
+ continue;
120
+ }
121
+ const extensionValue = extension.value;
122
+ const collector = extension.collector;
123
+ if (!extensionValue || !Array.isArray(extensionValue)) {
124
+ collector.error(( localize(14710, "'contributes.css' must be an array.")));
125
+ continue;
126
+ }
127
+ const extensionId = extension.description.identifier.value;
128
+ this.pendingExtensions.set(extensionId, extension);
129
+ if (this.isExtensionThemeActive(extensionId)) {
130
+ this.activateExtensionCSS(extension);
131
+ }
132
+ }
133
+ });
134
+ }
135
+ isExtensionThemeActive(extensionId) {
136
+ const colorTheme = this.themeService.getColorTheme();
137
+ const fileIconTheme = this.themeService.getFileIconTheme();
138
+ const productIconTheme = this.themeService.getProductIconTheme();
139
+ return !!(colorTheme.extensionData && ExtensionIdentifier.equals(colorTheme.extensionData.extensionId, extensionId)) || !!(fileIconTheme.extensionData && ExtensionIdentifier.equals(fileIconTheme.extensionData.extensionId, extensionId)) || !!(productIconTheme.extensionData && ExtensionIdentifier.equals(productIconTheme.extensionData.extensionId, extensionId));
140
+ }
141
+ onThemeChange() {
142
+ for (const [extensionId, extension] of this.pendingExtensions) {
143
+ const isActive = ( this.stylesheetsByExtension.has(extensionId));
144
+ const shouldBeActive = this.isExtensionThemeActive(extensionId);
145
+ if (shouldBeActive && !isActive) {
146
+ this.activateExtensionCSS(extension);
147
+ } else if (!shouldBeActive && isActive) {
148
+ this.removeStylesheets(extensionId);
149
+ this.clearCacheForExtension(extensionId);
150
+ }
151
+ }
152
+ }
153
+ activateExtensionCSS(extension) {
154
+ const extensionId = extension.description.identifier.value;
155
+ if (( this.stylesheetsByExtension.has(extensionId))) {
156
+ return;
157
+ }
158
+ const extensionLocation = extension.description.extensionLocation;
159
+ const extensionValue = extension.value;
160
+ const collector = extension.collector;
161
+ const entries = [];
162
+ const cssLocations = [];
163
+ for (const cssContribution of extensionValue) {
164
+ if (!cssContribution.path || typeof cssContribution.path !== "string") {
165
+ collector.error(( localize(14711, "'contributes.css.path' must be a string.")));
166
+ continue;
167
+ }
168
+ const cssLocation = joinPath(extensionLocation, cssContribution.path);
169
+ if (!isEqualOrParent(cssLocation, extensionLocation)) {
170
+ collector.warn(( localize(
171
+ 14712,
172
+ "Expected 'contributes.css.path' ({0}) to be included inside extension's folder ({1}).",
173
+ cssLocation.path,
174
+ extensionLocation.path
175
+ )));
176
+ continue;
177
+ }
178
+ const entryDisposables = ( new DisposableStore());
179
+ const element = this.createCSSLinkElement(cssLocation, extensionId, entryDisposables);
180
+ entries.push({
181
+ uri: cssLocation,
182
+ element,
183
+ disposables: entryDisposables
184
+ });
185
+ cssLocations.push(( cssLocation.toString()));
186
+ this.watcher.watch(cssLocation);
187
+ }
188
+ if (entries.length > 0) {
189
+ this.stylesheetsByExtension.set(extensionId, entries);
190
+ this.cacheExtensionCSS(extensionId, cssLocations);
191
+ }
192
+ }
193
+ removeStylesheets(extensionId) {
194
+ const entries = this.stylesheetsByExtension.get(extensionId);
195
+ if (entries) {
196
+ for (const entry of entries) {
197
+ this.watcher.unwatch(entry.uri);
198
+ entry.disposables.dispose();
199
+ }
200
+ this.stylesheetsByExtension.delete(extensionId);
201
+ }
202
+ }
203
+ applyCachedCSS() {
204
+ const cached = this.getCachedCSS();
205
+ if (!cached) {
206
+ return;
207
+ }
208
+ if (!this.isExtensionThemeActive(cached.extensionId)) {
209
+ this.clearCacheForExtension(cached.extensionId);
210
+ return;
211
+ }
212
+ const entries = [];
213
+ for (const cssLocationString of cached.cssLocations) {
214
+ const cssLocation = ( URI.parse(cssLocationString));
215
+ const entryDisposables = ( new DisposableStore());
216
+ const element = this.createCSSLinkElement(cssLocation, cached.extensionId, entryDisposables);
217
+ entries.push({
218
+ uri: cssLocation,
219
+ element,
220
+ disposables: entryDisposables
221
+ });
222
+ this.watcher.watch(cssLocation);
223
+ }
224
+ if (entries.length > 0) {
225
+ this.stylesheetsByExtension.set(cached.extensionId, entries);
226
+ }
227
+ }
228
+ getCachedCSS() {
229
+ const raw = this.storageService.get(CSS_CACHE_STORAGE_KEY, StorageScope.PROFILE);
230
+ if (!raw) {
231
+ return undefined;
232
+ }
233
+ try {
234
+ return JSON.parse(raw);
235
+ } catch {
236
+ return undefined;
237
+ }
238
+ }
239
+ cacheExtensionCSS(extensionId, cssLocations) {
240
+ const entry = {
241
+ extensionId,
242
+ cssLocations
243
+ };
244
+ this.storageService.store(
245
+ CSS_CACHE_STORAGE_KEY,
246
+ JSON.stringify(entry),
247
+ StorageScope.PROFILE,
248
+ StorageTarget.MACHINE
249
+ );
250
+ }
251
+ clearCacheForExtension(extensionId) {
252
+ const cached = this.getCachedCSS();
253
+ if (cached && ExtensionIdentifier.equals(cached.extensionId, extensionId)) {
254
+ this.storageService.remove(CSS_CACHE_STORAGE_KEY, StorageScope.PROFILE);
255
+ }
256
+ }
257
+ createCSSLinkElement(uri, extensionId, disposables) {
258
+ const element = createLinkElement();
259
+ element.rel = "stylesheet";
260
+ element.type = "text/css";
261
+ element.className = `extension-contributed-css ${extensionId}`;
262
+ element.href = ( FileAccess.uriToBrowserUri(uri).toString(true));
263
+ disposables.add(toDisposable(() => element.remove()));
264
+ return element;
265
+ }
266
+ reloadStylesheet(uri) {
267
+ const uriString = ( uri.toString());
268
+ for (const entries of ( this.stylesheetsByExtension.values())) {
269
+ for (const entry of entries) {
270
+ if (( entry.uri.toString()) === uriString) {
271
+ const browserUri = FileAccess.uriToBrowserUri(uri);
272
+ entry.element.href = ( browserUri.with({
273
+ query: `v=${Date.now()}`
274
+ }).toString(true));
275
+ }
276
+ }
277
+ }
278
+ }
279
+ dispose() {
280
+ this.disposables.dispose();
281
+ }
282
+ };
283
+ CSSExtensionPoint = ( __decorate([( __param(0, IFileService)), ( __param(1, IBrowserWorkbenchEnvironmentService)), ( __param(2, IWorkbenchThemeService)), ( __param(3, IStorageService))], CSSExtensionPoint));
284
+ let TokenClassificationExtensionPointWorkbenchContribution = class TokenClassificationExtensionPointWorkbenchContribution {
285
+ static {
286
+ this.ID = "workbench.contrib.cssExtensionPoint";
287
+ }
288
+ constructor(instantiationService) {
289
+ this.instantiationService = instantiationService;
290
+ this.instantiationService.createInstance(CSSExtensionPoint);
291
+ }
292
+ };
293
+ TokenClassificationExtensionPointWorkbenchContribution = ( __decorate([( __param(0, IInstantiationService))], TokenClassificationExtensionPointWorkbenchContribution));
294
+ registerWorkbenchContribution2(
295
+ TokenClassificationExtensionPointWorkbenchContribution.ID,
296
+ TokenClassificationExtensionPointWorkbenchContribution,
297
+ WorkbenchPhase.BlockStartup
298
+ );
299
+
300
+ export { CSSExtensionPoint };