@codingame/monaco-vscode-extensions-service-override 27.0.0 → 28.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/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +28 -28
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +25 -25
- package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +3 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +51 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +11 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +20 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.d.ts +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +11 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +8 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +7 -7
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +1 -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 +12 -12
- 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 +13 -9
|
@@ -169,11 +169,11 @@ let ExtensionBisectUi = class ExtensionBisectUi {
|
|
|
169
169
|
}
|
|
170
170
|
_showBisectPrompt() {
|
|
171
171
|
const goodPrompt = {
|
|
172
|
-
label: ( localize(
|
|
172
|
+
label: ( localize(15597, "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(15598, "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
|
+
15599,
|
|
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
|
+
15600,
|
|
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(15601, "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(15602, "Extension Bisect")),
|
|
224
224
|
detail: ( localize(
|
|
225
|
-
|
|
225
|
+
15603,
|
|
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(15604, "&&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(15605, "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(15606, "Extension Bisect")), ( localize(
|
|
276
|
+
15607,
|
|
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(15606, "Extension Bisect")),
|
|
284
|
+
primaryButton: ( localize(15608, "&&Report Issue & Continue")),
|
|
285
|
+
cancelButton: ( localize(15609, "Continue")),
|
|
286
286
|
detail: ( localize(
|
|
287
|
-
|
|
287
|
+
15610,
|
|
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(15611, "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(15612, "Extension Bisect")),
|
|
314
314
|
detail: ( localize(
|
|
315
|
-
|
|
315
|
+
15613,
|
|
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(15614, "I ca&&n't reproduce")),
|
|
321
321
|
run: () => false
|
|
322
322
|
}, {
|
|
323
|
-
label: ( localize(
|
|
323
|
+
label: ( localize(15615, "I can &&reproduce")),
|
|
324
324
|
run: () => true
|
|
325
325
|
}, {
|
|
326
|
-
label: ( localize(
|
|
326
|
+
label: ( localize(15616, "&&Stop Bisect")),
|
|
327
327
|
run: () => undefined
|
|
328
328
|
}],
|
|
329
329
|
cancelButton: {
|
|
330
|
-
label: ( localize(
|
|
330
|
+
label: ( localize(15617, "&&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(15618, "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
|
@@ -768,7 +768,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
|
|
|
768
768
|
}
|
|
769
769
|
if (!this.extensionManifestPropertiesService.canExecuteOnWeb(manifest)) {
|
|
770
770
|
throw ( new Error(( localize(
|
|
771
|
-
|
|
771
|
+
15633,
|
|
772
772
|
"Cannot add '{0}' because this extension is not a web extension.",
|
|
773
773
|
manifest.displayName || manifest.name
|
|
774
774
|
))));
|
|
@@ -1049,7 +1049,7 @@ if (isWeb) {
|
|
|
1049
1049
|
constructor() {
|
|
1050
1050
|
super({
|
|
1051
1051
|
id: "workbench.extensions.action.openInstalledWebExtensionsResource",
|
|
1052
|
-
title: ( localize2(
|
|
1052
|
+
title: ( localize2(15634, "Open Installed Web Extensions Resource")),
|
|
1053
1053
|
category: Categories.Developer,
|
|
1054
1054
|
f1: true,
|
|
1055
1055
|
precondition: IsWebContext
|
|
@@ -221,13 +221,13 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
221
221
|
}
|
|
222
222
|
}, {
|
|
223
223
|
id: "join.disconnectRemote",
|
|
224
|
-
label: ( localize(
|
|
224
|
+
label: ( localize(15700, "Disconnect Remote Agent")),
|
|
225
225
|
order: WillShutdownJoinerOrder.Last
|
|
226
226
|
});
|
|
227
227
|
} else {
|
|
228
228
|
event.join(this._doStopExtensionHosts(), {
|
|
229
229
|
id: "join.stopExtensionHosts",
|
|
230
|
-
label: ( localize(
|
|
230
|
+
label: ( localize(15701, "Stopping Extension Hosts"))
|
|
231
231
|
});
|
|
232
232
|
}
|
|
233
233
|
}));
|
|
@@ -300,7 +300,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
300
300
|
this._notificationService.notify({
|
|
301
301
|
severity: Severity.Error,
|
|
302
302
|
message: ( localize(
|
|
303
|
-
|
|
303
|
+
15702,
|
|
304
304
|
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
305
305
|
( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(", ")
|
|
306
306
|
))
|
|
@@ -537,7 +537,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
537
537
|
this._notificationService.notify({
|
|
538
538
|
severity: Severity.Error,
|
|
539
539
|
message: ( localize(
|
|
540
|
-
|
|
540
|
+
15702,
|
|
541
541
|
"The following extensions contain dependency loops and have been disabled: {0}",
|
|
542
542
|
( result.removedDueToLooping.map(e => `'${e.identifier.value}'`)).join(", ")
|
|
543
543
|
))
|
|
@@ -552,7 +552,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
552
552
|
const extensionHostManager = this.findTestExtensionHost(this._environmentService.extensionTestsLocationURI);
|
|
553
553
|
if (!extensionHostManager) {
|
|
554
554
|
const msg = ( localize(
|
|
555
|
-
|
|
555
|
+
15703,
|
|
556
556
|
"No extension host found that can launch the test runner at {0}.",
|
|
557
557
|
(this._environmentService.extensionTestsLocationURI.toString())
|
|
558
558
|
));
|
|
@@ -722,7 +722,7 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
722
722
|
vetoReasons.add(reason);
|
|
723
723
|
}
|
|
724
724
|
}).catch(error => {
|
|
725
|
-
vetoReasons.add(( localize(
|
|
725
|
+
vetoReasons.add(( localize(15704, "{0} (Error: {1})", reason, toErrorMessage(error))));
|
|
726
726
|
});
|
|
727
727
|
}
|
|
728
728
|
}
|
|
@@ -740,9 +740,9 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
740
740
|
confirmed
|
|
741
741
|
} = await this._dialogService.confirm({
|
|
742
742
|
type: Severity.Warning,
|
|
743
|
-
message: ( localize(
|
|
743
|
+
message: ( localize(15705, "Please confirm restart of extensions.")),
|
|
744
744
|
detail: vetoReasonsArray.length === 1 ? vetoReasonsArray[0] : vetoReasonsArray.join("\n -"),
|
|
745
|
-
primaryButton: ( localize(
|
|
745
|
+
primaryButton: ( localize(15706, "Restart Anyway"))
|
|
746
746
|
});
|
|
747
747
|
if (confirmed) {
|
|
748
748
|
return true;
|
|
@@ -856,16 +856,16 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
856
856
|
this._remoteCrashTracker.registerCrash();
|
|
857
857
|
if (this._remoteCrashTracker.shouldAutomaticallyRestart()) {
|
|
858
858
|
this._logService.info(`Automatically restarting the remote extension host.`);
|
|
859
|
-
this._notificationService.status(( localize(
|
|
859
|
+
this._notificationService.status(( localize(15707, "The remote extension host terminated unexpectedly. Restarting...")), {
|
|
860
860
|
hideAfter: 5000
|
|
861
861
|
});
|
|
862
862
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
863
863
|
} else {
|
|
864
864
|
this._notificationService.prompt(Severity.Error, ( localize(
|
|
865
|
-
|
|
865
|
+
15708,
|
|
866
866
|
"Remote Extension host terminated unexpectedly 3 times within the last 5 minutes."
|
|
867
867
|
)), [{
|
|
868
|
-
label: ( localize(
|
|
868
|
+
label: ( localize(15709, "Restart Remote Extension Host")),
|
|
869
869
|
run: () => {
|
|
870
870
|
this._startExtensionHostsIfNecessary(false, Array.from(( this._allRequestedActivateEvents.keys())));
|
|
871
871
|
}
|
|
@@ -1413,7 +1413,7 @@ class ActivationFeatureMarkdowneRenderer extends Disposable {
|
|
|
1413
1413
|
}
|
|
1414
1414
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
1415
1415
|
id: "activationEvents",
|
|
1416
|
-
label: ( localize(
|
|
1416
|
+
label: ( localize(15710, "Activation Events")),
|
|
1417
1417
|
access: {
|
|
1418
1418
|
canToggle: false
|
|
1419
1419
|
},
|
|
@@ -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(15711, "Measure Extension Host Latency")),
|
|
489
489
|
category: Categories.Developer,
|
|
490
490
|
f1: true
|
|
491
491
|
});
|
|
@@ -110,7 +110,7 @@ class ApiProposalsMarkdowneRenderer extends Disposable {
|
|
|
110
110
|
}
|
|
111
111
|
( Registry.as(Extensions.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
112
112
|
id: "enabledApiProposals",
|
|
113
|
-
label: ( localize(
|
|
113
|
+
label: ( localize(15712, "API Proposals")),
|
|
114
114
|
access: {
|
|
115
115
|
canToggle: false
|
|
116
116
|
},
|
|
@@ -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
|
+
15801,
|
|
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
|
+
15801,
|
|
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
|
+
15802,
|
|
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
|
+
15803,
|
|
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(16024, "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
|
+
16025,
|
|
33
33
|
"Path to the CSS file. The path is relative to the extension folder."
|
|
34
34
|
)),
|
|
35
35
|
type: "string"
|
|
@@ -121,13 +121,16 @@ 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(16026, "'contributes.css' must be an array.")));
|
|
125
125
|
continue;
|
|
126
126
|
}
|
|
127
127
|
const extensionId = extension.description.identifier.value;
|
|
128
128
|
this.pendingExtensions.set(extensionId, extension);
|
|
129
129
|
if (this.isExtensionThemeActive(extensionId)) {
|
|
130
130
|
this.activateExtensionCSS(extension);
|
|
131
|
+
} else if (( this.stylesheetsByExtension.has(extensionId))) {
|
|
132
|
+
this.removeStylesheets(extensionId);
|
|
133
|
+
this.clearCacheForExtension(extensionId);
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
});
|
|
@@ -140,11 +143,12 @@ let CSSExtensionPoint = class CSSExtensionPoint {
|
|
|
140
143
|
}
|
|
141
144
|
onThemeChange() {
|
|
142
145
|
for (const [extensionId, extension] of this.pendingExtensions) {
|
|
143
|
-
|
|
144
|
-
const shouldBeActive = this.isExtensionThemeActive(extensionId);
|
|
145
|
-
if (shouldBeActive && !isActive) {
|
|
146
|
+
if (!( this.stylesheetsByExtension.has(extensionId)) && this.isExtensionThemeActive(extensionId)) {
|
|
146
147
|
this.activateExtensionCSS(extension);
|
|
147
|
-
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const extensionId of ( this.stylesheetsByExtension.keys())) {
|
|
151
|
+
if (!this.isExtensionThemeActive(extensionId)) {
|
|
148
152
|
this.removeStylesheets(extensionId);
|
|
149
153
|
this.clearCacheForExtension(extensionId);
|
|
150
154
|
}
|
|
@@ -162,13 +166,13 @@ let CSSExtensionPoint = class CSSExtensionPoint {
|
|
|
162
166
|
const cssLocations = [];
|
|
163
167
|
for (const cssContribution of extensionValue) {
|
|
164
168
|
if (!cssContribution.path || typeof cssContribution.path !== "string") {
|
|
165
|
-
collector.error(( localize(
|
|
169
|
+
collector.error(( localize(16027, "'contributes.css.path' must be a string.")));
|
|
166
170
|
continue;
|
|
167
171
|
}
|
|
168
172
|
const cssLocation = joinPath(extensionLocation, cssContribution.path);
|
|
169
173
|
if (!isEqualOrParent(cssLocation, extensionLocation)) {
|
|
170
174
|
collector.warn(( localize(
|
|
171
|
-
|
|
175
|
+
16028,
|
|
172
176
|
"Expected 'contributes.css.path' ({0}) to be included inside extension's folder ({1}).",
|
|
173
177
|
cssLocation.path,
|
|
174
178
|
extensionLocation.path
|