@codingame/monaco-vscode-extensions-service-override 37.6.0 → 38.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/service-override/tools/missingMainThreadCustomers.js +4 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +29 -29
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.d.ts +3 -19
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +133 -75
- package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.d.ts +13 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +108 -14
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomTextEditorNavigation.d.ts +29 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomTextEditorNavigation.js +94 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js +6 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +8 -16
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.d.ts +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +2 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +3 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +11 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +22 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +10 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +13 -7
- package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.d.ts +3 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +13 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +7 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadShare.d.ts +0 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +4 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +6 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +13 -18
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +4 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +5 -5
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +4 -1
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +23 -23
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +2 -2
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +19 -13
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +4 -4
- package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +5 -5
|
@@ -169,11 +169,11 @@ let ExtensionBisectUi = class ExtensionBisectUi {
|
|
|
169
169
|
}
|
|
170
170
|
_showBisectPrompt() {
|
|
171
171
|
const goodPrompt = {
|
|
172
|
-
label: ( localize(
|
|
172
|
+
label: ( localize(24455, "I can't reproduce")),
|
|
173
173
|
run: () => this._commandService.executeCommand("extension.bisect.next", false)
|
|
174
174
|
};
|
|
175
175
|
const badPrompt = {
|
|
176
|
-
label: ( localize(
|
|
176
|
+
label: ( localize(24456, "I can reproduce")),
|
|
177
177
|
run: () => this._commandService.executeCommand("extension.bisect.next", true)
|
|
178
178
|
};
|
|
179
179
|
const stop = {
|
|
@@ -181,10 +181,10 @@ let ExtensionBisectUi = class ExtensionBisectUi {
|
|
|
181
181
|
run: () => this._commandService.executeCommand("extension.bisect.stop")
|
|
182
182
|
};
|
|
183
183
|
const message = this._extensionBisectService.disabledCount === 1 ? ( localize(
|
|
184
|
-
|
|
184
|
+
24457,
|
|
185
185
|
"Extension Bisect is active and has disabled 1 extension. Check if you can still reproduce the problem and proceed by selecting from these options."
|
|
186
186
|
)) : ( localize(
|
|
187
|
-
|
|
187
|
+
24458,
|
|
188
188
|
"Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
|
|
189
189
|
this._extensionBisectService.disabledCount
|
|
190
190
|
));
|
|
@@ -200,7 +200,7 @@ registerAction2(class extends Action2 {
|
|
|
200
200
|
constructor() {
|
|
201
201
|
super({
|
|
202
202
|
id: "extension.bisect.start",
|
|
203
|
-
title: ( localize2(
|
|
203
|
+
title: ( localize2(24459, "Start Extension Bisect")),
|
|
204
204
|
category: Categories.Help,
|
|
205
205
|
f1: true,
|
|
206
206
|
precondition: ( ExtensionBisectUi.ctxIsBisectActive.negate()),
|
|
@@ -220,13 +220,13 @@ registerAction2(class extends Action2 {
|
|
|
220
220
|
const extensionsBisect = accessor.get(IExtensionBisectService);
|
|
221
221
|
const extensions = (await extensionManagement.getInstalled(ExtensionType.User)).filter(ext => extensionEnablementService.isEnabled(ext));
|
|
222
222
|
const res = await dialogService.confirm({
|
|
223
|
-
message: ( localize(
|
|
223
|
+
message: ( localize(24460, "Extension Bisect")),
|
|
224
224
|
detail: ( localize(
|
|
225
|
-
|
|
225
|
+
24461,
|
|
226
226
|
"Extension Bisect will use binary search to find an extension that causes a problem. During the process the window reloads repeatedly (~{0} times). Each time you must confirm if you are still seeing problems.",
|
|
227
227
|
2 + Math.log2(extensions.length) | 0
|
|
228
228
|
)),
|
|
229
|
-
primaryButton: ( localize(
|
|
229
|
+
primaryButton: ( localize(24462, "&&Start Extension Bisect"))
|
|
230
230
|
});
|
|
231
231
|
if (res.confirmed) {
|
|
232
232
|
await extensionsBisect.start(extensions);
|
|
@@ -238,7 +238,7 @@ registerAction2(class extends Action2 {
|
|
|
238
238
|
constructor() {
|
|
239
239
|
super({
|
|
240
240
|
id: "extension.bisect.next",
|
|
241
|
-
title: ( localize2(
|
|
241
|
+
title: ( localize2(24463, "Continue Extension Bisect")),
|
|
242
242
|
category: Categories.Help,
|
|
243
243
|
f1: true,
|
|
244
244
|
precondition: ExtensionBisectUi.ctxIsBisectActive
|
|
@@ -272,24 +272,24 @@ registerAction2(class extends Action2 {
|
|
|
272
272
|
return;
|
|
273
273
|
}
|
|
274
274
|
if (done.bad) {
|
|
275
|
-
await dialogService.info(( localize(
|
|
276
|
-
|
|
275
|
+
await dialogService.info(( localize(24464, "Extension Bisect")), ( localize(
|
|
276
|
+
24465,
|
|
277
277
|
"Extension Bisect is done but no extension has been identified. This might be a problem with {0}.",
|
|
278
278
|
productService.nameShort
|
|
279
279
|
)));
|
|
280
280
|
} else {
|
|
281
281
|
const res = await dialogService.confirm({
|
|
282
282
|
type: Severity.Info,
|
|
283
|
-
message: ( localize(
|
|
284
|
-
primaryButton: ( localize(
|
|
285
|
-
cancelButton: ( localize(
|
|
283
|
+
message: ( localize(24464, "Extension Bisect")),
|
|
284
|
+
primaryButton: ( localize(24466, "&&Report Issue & Continue")),
|
|
285
|
+
cancelButton: ( localize(24467, "Continue")),
|
|
286
286
|
detail: ( localize(
|
|
287
|
-
|
|
287
|
+
24468,
|
|
288
288
|
"Extension Bisect is done and has identified {0} as the extension causing the problem.",
|
|
289
289
|
done.id
|
|
290
290
|
)),
|
|
291
291
|
checkbox: {
|
|
292
|
-
label: ( localize(
|
|
292
|
+
label: ( localize(24469, "Keep this extension disabled")),
|
|
293
293
|
checked: true
|
|
294
294
|
}
|
|
295
295
|
});
|
|
@@ -310,24 +310,24 @@ registerAction2(class extends Action2 {
|
|
|
310
310
|
result
|
|
311
311
|
} = await dialogService.prompt({
|
|
312
312
|
type: Severity.Info,
|
|
313
|
-
message: ( localize(
|
|
313
|
+
message: ( localize(24470, "Extension Bisect")),
|
|
314
314
|
detail: ( localize(
|
|
315
|
-
|
|
315
|
+
24471,
|
|
316
316
|
"Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
|
|
317
317
|
bisectService.disabledCount
|
|
318
318
|
)),
|
|
319
319
|
buttons: [{
|
|
320
|
-
label: ( localize(
|
|
320
|
+
label: ( localize(24472, "I ca&&n't reproduce")),
|
|
321
321
|
run: () => false
|
|
322
322
|
}, {
|
|
323
|
-
label: ( localize(
|
|
323
|
+
label: ( localize(24473, "I can &&reproduce")),
|
|
324
324
|
run: () => true
|
|
325
325
|
}, {
|
|
326
|
-
label: ( localize(
|
|
326
|
+
label: ( localize(24474, "&&Stop Bisect")),
|
|
327
327
|
run: () => undefined
|
|
328
328
|
}],
|
|
329
329
|
cancelButton: {
|
|
330
|
-
label: ( localize(
|
|
330
|
+
label: ( localize(24475, "&&Cancel Bisect")),
|
|
331
331
|
run: () => null
|
|
332
332
|
}
|
|
333
333
|
});
|
|
@@ -338,7 +338,7 @@ registerAction2(class extends Action2 {
|
|
|
338
338
|
constructor() {
|
|
339
339
|
super({
|
|
340
340
|
id: "extension.bisect.stop",
|
|
341
|
-
title: ( localize2(
|
|
341
|
+
title: ( localize2(24476, "Stop Extension Bisect")),
|
|
342
342
|
category: Categories.Help,
|
|
343
343
|
f1: true,
|
|
344
344
|
precondition: ExtensionBisectUi.ctxIsBisectActive
|
package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js
CHANGED
|
@@ -772,7 +772,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
|
|
|
772
772
|
}
|
|
773
773
|
if (!this.extensionManifestPropertiesService.canExecuteOnWeb(manifest)) {
|
|
774
774
|
throw ( new Error(( localize(
|
|
775
|
-
|
|
775
|
+
24491,
|
|
776
776
|
"Cannot add '{0}' because this extension is not a web extension.",
|
|
777
777
|
manifest.displayName || manifest.name
|
|
778
778
|
))));
|
|
@@ -1051,7 +1051,7 @@ if (isWeb) {
|
|
|
1051
1051
|
constructor() {
|
|
1052
1052
|
super({
|
|
1053
1053
|
id: "workbench.extensions.action.openInstalledWebExtensionsResource",
|
|
1054
|
-
title: ( localize2(
|
|
1054
|
+
title: ( localize2(24492, "Open Installed Web Extensions Resource")),
|
|
1055
1055
|
category: Categories.Developer,
|
|
1056
1056
|
f1: true,
|
|
1057
1057
|
precondition: IsWebContext
|
|
@@ -24,6 +24,7 @@ import { handleVetos } from '../../../../platform/lifecycle/common/lifecycle.js'
|
|
|
24
24
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
25
25
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification';
|
|
26
26
|
import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
27
|
+
import { NotificationTelemetryId, NotificationActionTelemetryId } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notificationTelemetry';
|
|
27
28
|
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
28
29
|
import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
|
|
29
30
|
import { RemoteAuthorityResolverError, getRemoteAuthorityPrefix, RemoteAuthorityResolverErrorCode } from '@codingame/monaco-vscode-api/vscode/vs/platform/remote/common/remoteAuthorityResolver';
|
|
@@ -224,13 +225,13 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
224
225
|
}
|
|
225
226
|
}, {
|
|
226
227
|
id: "join.disconnectRemote",
|
|
227
|
-
label: ( localize(
|
|
228
|
+
label: ( localize(24558, "Disconnect Remote Agent")),
|
|
228
229
|
order: WillShutdownJoinerOrder.Last
|
|
229
230
|
});
|
|
230
231
|
} else {
|
|
231
232
|
event.join(this._doStopExtensionHosts(), {
|
|
232
233
|
id: "join.stopExtensionHosts",
|
|
233
|
-
label: ( localize(
|
|
234
|
+
label: ( localize(24559, "Stopping Extension Hosts"))
|
|
234
235
|
});
|
|
235
236
|
}
|
|
236
237
|
}));
|
|
@@ -303,9 +304,10 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
303
304
|
toRemove = toRemove.concat(result.removedDueToLooping);
|
|
304
305
|
if (result.removedDueToLooping.length > 0) {
|
|
305
306
|
this._notificationService.notify({
|
|
307
|
+
telemetry: NotificationTelemetryId.ExtensionDependencyLoop,
|
|
306
308
|
severity: Severity.Error,
|
|
307
309
|
message: ( localize(
|
|
308
|
-
|
|
310
|
+
24560,
|
|
309
311
|
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
310
312
|
result.removedDueToLooping.map(e => `'${e.identifier.value}'`).join(", ")
|
|
311
313
|
))
|
|
@@ -540,9 +542,10 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
540
542
|
const result = this._registry.deltaExtensions(lock, toAdd, []);
|
|
541
543
|
if (result.removedDueToLooping.length > 0) {
|
|
542
544
|
this._notificationService.notify({
|
|
545
|
+
telemetry: NotificationTelemetryId.ExtensionDependencyLoop,
|
|
543
546
|
severity: Severity.Error,
|
|
544
547
|
message: ( localize(
|
|
545
|
-
|
|
548
|
+
24560,
|
|
546
549
|
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
547
550
|
result.removedDueToLooping.map(e => `'${e.identifier.value}'`).join(", ")
|
|
548
551
|
))
|
|
@@ -557,7 +560,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
557
560
|
const extensionHostManager = this.findTestExtensionHost(this._environmentService.extensionTestsLocationURI);
|
|
558
561
|
if (!extensionHostManager) {
|
|
559
562
|
const msg = ( localize(
|
|
560
|
-
|
|
563
|
+
24561,
|
|
561
564
|
"No extension host found that can launch the test runner at {0}.",
|
|
562
565
|
(this._environmentService.extensionTestsLocationURI.toString())
|
|
563
566
|
));
|
|
@@ -727,7 +730,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
727
730
|
vetoReasons.add(reason);
|
|
728
731
|
}
|
|
729
732
|
}).catch(error => {
|
|
730
|
-
vetoReasons.add(( localize(
|
|
733
|
+
vetoReasons.add(( localize(24562, "{0} (Error: {1})", reason, toErrorMessage(error))));
|
|
731
734
|
});
|
|
732
735
|
}
|
|
733
736
|
}
|
|
@@ -745,9 +748,9 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
745
748
|
confirmed
|
|
746
749
|
} = await this._dialogService.confirm({
|
|
747
750
|
type: Severity.Warning,
|
|
748
|
-
message: ( localize(
|
|
751
|
+
message: ( localize(24563, "Please confirm restart of extensions.")),
|
|
749
752
|
detail: vetoReasonsArray.length === 1 ? vetoReasonsArray[0] : vetoReasonsArray.join("\n -"),
|
|
750
|
-
primaryButton: ( localize(
|
|
753
|
+
primaryButton: ( localize(24564, "Restart Anyway"))
|
|
751
754
|
});
|
|
752
755
|
if (confirmed) {
|
|
753
756
|
return true;
|
|
@@ -861,20 +864,23 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
861
864
|
this._remoteCrashTracker.registerCrash();
|
|
862
865
|
if (this._remoteCrashTracker.shouldAutomaticallyRestart()) {
|
|
863
866
|
this._logService.info(`Automatically restarting the remote extension host.`);
|
|
864
|
-
this._notificationService.status(( localize(
|
|
867
|
+
this._notificationService.status(( localize(24565, "The remote extension host terminated unexpectedly. Restarting...")), {
|
|
865
868
|
hideAfter: 5000
|
|
866
869
|
});
|
|
867
870
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
868
871
|
} else {
|
|
869
872
|
this._notificationService.prompt(Severity.Error, ( localize(
|
|
870
|
-
|
|
873
|
+
24566,
|
|
871
874
|
"Remote Extension host terminated unexpectedly 3 times within the last 5 minutes."
|
|
872
875
|
)), [{
|
|
873
|
-
|
|
876
|
+
telemetryId: NotificationActionTelemetryId.RestartExtensionHost,
|
|
877
|
+
label: ( localize(24567, "Restart Remote Extension Host")),
|
|
874
878
|
run: () => {
|
|
875
879
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
876
880
|
}
|
|
877
|
-
}]
|
|
881
|
+
}], {
|
|
882
|
+
telemetry: NotificationTelemetryId.RemoteExtensionHostCrashRepeated
|
|
883
|
+
});
|
|
878
884
|
}
|
|
879
885
|
} catch (err) {}
|
|
880
886
|
}
|
|
@@ -1424,7 +1430,7 @@ class ActivationFeatureMarkdowneRenderer extends Disposable {
|
|
|
1424
1430
|
}
|
|
1425
1431
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
1426
1432
|
id: "activationEvents",
|
|
1427
|
-
label: ( localize(
|
|
1433
|
+
label: ( localize(24568, "Activation Events")),
|
|
1428
1434
|
access: {
|
|
1429
1435
|
canToggle: false
|
|
1430
1436
|
},
|
|
@@ -485,7 +485,7 @@ registerAction2(class MeasureExtHostLatencyAction extends Action2 {
|
|
|
485
485
|
constructor() {
|
|
486
486
|
super({
|
|
487
487
|
id: "editor.action.measureExtHostLatency",
|
|
488
|
-
title: ( localize2(
|
|
488
|
+
title: ( localize2(24569, "Measure Extension Host Latency")),
|
|
489
489
|
category: Categories.Developer,
|
|
490
490
|
f1: true
|
|
491
491
|
});
|
|
@@ -112,7 +112,7 @@ class ApiProposalsMarkdowneRenderer extends Disposable {
|
|
|
112
112
|
}
|
|
113
113
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
114
114
|
id: "enabledApiProposals",
|
|
115
|
-
label: ( localize(
|
|
115
|
+
label: ( localize(24570, "API Proposals")),
|
|
116
116
|
access: {
|
|
117
117
|
canToggle: false
|
|
118
118
|
},
|
|
@@ -9,7 +9,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
|
|
|
9
9
|
const extension = result.get(systemExtension.identifier);
|
|
10
10
|
if (extension) {
|
|
11
11
|
logService.warn(( localize(
|
|
12
|
-
|
|
12
|
+
24661,
|
|
13
13
|
"Overwriting extension {0} with {1}.",
|
|
14
14
|
extension.extensionLocation.fsPath,
|
|
15
15
|
systemExtension.extensionLocation.fsPath
|
|
@@ -30,7 +30,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
|
|
|
30
30
|
userExtension.isBuiltin = true;
|
|
31
31
|
} else {
|
|
32
32
|
logService.warn(( localize(
|
|
33
|
-
|
|
33
|
+
24661,
|
|
34
34
|
"Overwriting extension {0} with {1}.",
|
|
35
35
|
extension.extensionLocation.fsPath,
|
|
36
36
|
userExtension.extensionLocation.fsPath
|
|
@@ -48,7 +48,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
|
|
|
48
48
|
const extension = result.get(workspaceExtension.identifier);
|
|
49
49
|
if (extension) {
|
|
50
50
|
logService.warn(( localize(
|
|
51
|
-
|
|
51
|
+
24662,
|
|
52
52
|
"Overwriting {0} with Workspace Extension {1}.",
|
|
53
53
|
extension.extensionLocation.fsPath,
|
|
54
54
|
workspaceExtension.extensionLocation.fsPath
|
|
@@ -58,7 +58,7 @@ function dedupExtensions(system, user, workspace, development, logService) {
|
|
|
58
58
|
});
|
|
59
59
|
development.forEach(developedExtension => {
|
|
60
60
|
logService.info(( localize(
|
|
61
|
-
|
|
61
|
+
24663,
|
|
62
62
|
"Loading development extension at {0}",
|
|
63
63
|
developedExtension.extensionLocation.fsPath
|
|
64
64
|
)));
|
|
@@ -22,14 +22,14 @@ const CSS_CACHE_STORAGE_KEY = "workbench.contrib.css.cache";
|
|
|
22
22
|
const cssExtensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
23
23
|
extensionPoint: "css",
|
|
24
24
|
jsonSchema: {
|
|
25
|
-
description: ( localize(
|
|
25
|
+
description: ( localize(24931, "Contributes CSS files to be loaded in the workbench.")),
|
|
26
26
|
type: "array",
|
|
27
27
|
items: {
|
|
28
28
|
type: "object",
|
|
29
29
|
properties: {
|
|
30
30
|
path: {
|
|
31
31
|
description: ( localize(
|
|
32
|
-
|
|
32
|
+
24932,
|
|
33
33
|
"Path to the CSS file. The path is relative to the extension folder."
|
|
34
34
|
)),
|
|
35
35
|
type: "string"
|
|
@@ -121,7 +121,7 @@ let CSSExtensionPoint = class CSSExtensionPoint {
|
|
|
121
121
|
const extensionValue = extension.value;
|
|
122
122
|
const collector = extension.collector;
|
|
123
123
|
if (!extensionValue || !Array.isArray(extensionValue)) {
|
|
124
|
-
collector.error(( localize(
|
|
124
|
+
collector.error(( localize(24933, "'contributes.css' must be an array.")));
|
|
125
125
|
continue;
|
|
126
126
|
}
|
|
127
127
|
const extensionId = extension.description.identifier.value;
|
|
@@ -166,13 +166,13 @@ let CSSExtensionPoint = class CSSExtensionPoint {
|
|
|
166
166
|
const cssLocations = [];
|
|
167
167
|
for (const cssContribution of extensionValue) {
|
|
168
168
|
if (!cssContribution.path || typeof cssContribution.path !== "string") {
|
|
169
|
-
collector.error(( localize(
|
|
169
|
+
collector.error(( localize(24934, "'contributes.css.path' must be a string.")));
|
|
170
170
|
continue;
|
|
171
171
|
}
|
|
172
172
|
const cssLocation = joinPath(extensionLocation, cssContribution.path);
|
|
173
173
|
if (!isEqualOrParent(cssLocation, extensionLocation)) {
|
|
174
174
|
collector.warn(( localize(
|
|
175
|
-
|
|
175
|
+
24935,
|
|
176
176
|
"Expected 'contributes.css.path' ({0}) to be included inside extension's folder ({1}).",
|
|
177
177
|
cssLocation.path,
|
|
178
178
|
extensionLocation.path
|