@theia/workspace 1.68.0-next.34 → 1.68.0-next.48
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/lib/browser/workspace-commands.d.ts +1 -0
- package/lib/browser/workspace-commands.d.ts.map +1 -1
- package/lib/browser/workspace-commands.js +5 -0
- package/lib/browser/workspace-commands.js.map +1 -1
- package/lib/browser/workspace-frontend-contribution.d.ts +5 -1
- package/lib/browser/workspace-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/workspace-frontend-contribution.js +41 -0
- package/lib/browser/workspace-frontend-contribution.js.map +1 -1
- package/lib/browser/workspace-trust-service.d.ts +21 -1
- package/lib/browser/workspace-trust-service.d.ts.map +1 -1
- package/lib/browser/workspace-trust-service.js +179 -9
- package/lib/browser/workspace-trust-service.js.map +1 -1
- package/lib/browser/workspace-trust-service.spec.d.ts +2 -0
- package/lib/browser/workspace-trust-service.spec.d.ts.map +1 -0
- package/lib/browser/workspace-trust-service.spec.js +204 -0
- package/lib/browser/workspace-trust-service.spec.js.map +1 -0
- package/lib/common/workspace-trust-preferences.d.ts +2 -0
- package/lib/common/workspace-trust-preferences.d.ts.map +1 -1
- package/lib/common/workspace-trust-preferences.js +11 -1
- package/lib/common/workspace-trust-preferences.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/workspace-commands.ts +5 -0
- package/src/browser/workspace-frontend-contribution.ts +43 -2
- package/src/browser/workspace-trust-service.spec.ts +259 -0
- package/src/browser/workspace-trust-service.ts +206 -13
- package/src/common/workspace-trust-preferences.ts +11 -0
|
@@ -15,9 +15,14 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.WorkspaceTrustService = void 0;
|
|
18
|
+
exports.WorkspaceTrustService = exports.WORKSPACE_TRUST_STATUS_BAR_ID = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const browser_1 = require("@theia/core/lib/browser");
|
|
21
|
+
const status_bar_1 = require("@theia/core/lib/browser/status-bar/status-bar");
|
|
22
|
+
const core_1 = require("@theia/core");
|
|
23
|
+
const disposable_1 = require("@theia/core/lib/common/disposable");
|
|
24
|
+
const common_1 = require("@theia/core/lib/common");
|
|
25
|
+
const uri_1 = require("@theia/core/lib/common/uri");
|
|
21
26
|
const preferences_1 = require("@theia/core/lib/common/preferences");
|
|
22
27
|
const message_service_1 = require("@theia/core/lib/common/message-service");
|
|
23
28
|
const nls_1 = require("@theia/core/lib/common/nls");
|
|
@@ -27,19 +32,37 @@ const window_service_1 = require("@theia/core/lib/browser/window/window-service"
|
|
|
27
32
|
const workspace_trust_preferences_1 = require("../common/workspace-trust-preferences");
|
|
28
33
|
const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
29
34
|
const workspace_service_1 = require("./workspace-service");
|
|
35
|
+
const workspace_commands_1 = require("./workspace-commands");
|
|
30
36
|
const context_key_service_1 = require("@theia/core/lib/browser/context-key-service");
|
|
31
37
|
const STORAGE_TRUSTED = 'trusted';
|
|
38
|
+
exports.WORKSPACE_TRUST_STATUS_BAR_ID = 'workspace-trust-status';
|
|
32
39
|
let WorkspaceTrustService = class WorkspaceTrustService {
|
|
33
40
|
constructor() {
|
|
34
41
|
this.workspaceTrust = new promise_util_1.Deferred();
|
|
42
|
+
this.onDidChangeWorkspaceTrustEmitter = new common_1.Emitter();
|
|
43
|
+
this.onDidChangeWorkspaceTrust = this.onDidChangeWorkspaceTrustEmitter.event;
|
|
44
|
+
this.toDispose = new disposable_1.DisposableCollection(this.onDidChangeWorkspaceTrustEmitter);
|
|
35
45
|
}
|
|
36
46
|
init() {
|
|
37
47
|
this.doInit();
|
|
38
48
|
}
|
|
39
49
|
async doInit() {
|
|
40
50
|
await this.workspaceService.ready;
|
|
51
|
+
await this.workspaceTrustPref.ready;
|
|
52
|
+
await this.preferenceSchemaService.ready;
|
|
41
53
|
await this.resolveWorkspaceTrust();
|
|
42
|
-
this.preferences.onPreferenceChanged(change => this.handlePreferenceChange(change));
|
|
54
|
+
this.toDispose.push(this.preferences.onPreferenceChanged(change => this.handlePreferenceChange(change)));
|
|
55
|
+
this.toDispose.push(this.workspaceService.onWorkspaceChanged(() => this.handleWorkspaceChanged()));
|
|
56
|
+
// Show status bar item if starting in restricted mode
|
|
57
|
+
const initialTrust = await this.getWorkspaceTrust();
|
|
58
|
+
this.updateRestrictedModeIndicator(initialTrust);
|
|
59
|
+
// React to trust changes
|
|
60
|
+
this.toDispose.push(this.onDidChangeWorkspaceTrust(trust => {
|
|
61
|
+
this.updateRestrictedModeIndicator(trust);
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
onStop() {
|
|
65
|
+
this.toDispose.dispose();
|
|
43
66
|
}
|
|
44
67
|
getWorkspaceTrust() {
|
|
45
68
|
return this.workspaceTrust.promise;
|
|
@@ -50,25 +73,109 @@ let WorkspaceTrustService = class WorkspaceTrustService {
|
|
|
50
73
|
if (trust !== undefined) {
|
|
51
74
|
await this.storeWorkspaceTrust(trust);
|
|
52
75
|
this.contextKeyService.setContext('isWorkspaceTrusted', trust);
|
|
76
|
+
this.currentTrust = trust;
|
|
53
77
|
this.workspaceTrust.resolve(trust);
|
|
78
|
+
this.onDidChangeWorkspaceTrustEmitter.fire(trust);
|
|
79
|
+
if (trust && this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED]) {
|
|
80
|
+
await this.addToTrustedFolders();
|
|
81
|
+
}
|
|
54
82
|
}
|
|
55
83
|
}
|
|
56
84
|
}
|
|
85
|
+
setWorkspaceTrust(trusted) {
|
|
86
|
+
if (this.currentTrust === trusted) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.currentTrust = trusted;
|
|
90
|
+
this.contextKeyService.setContext('isWorkspaceTrusted', trusted);
|
|
91
|
+
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT] === workspace_trust_preferences_1.WorkspaceTrustPrompt.ONCE) {
|
|
92
|
+
this.storeWorkspaceTrust(trusted);
|
|
93
|
+
}
|
|
94
|
+
this.onDidChangeWorkspaceTrustEmitter.fire(trusted);
|
|
95
|
+
}
|
|
57
96
|
isWorkspaceTrustResolved() {
|
|
58
97
|
return this.workspaceTrust.state !== 'unresolved';
|
|
59
98
|
}
|
|
60
99
|
async calculateWorkspaceTrust() {
|
|
61
|
-
|
|
62
|
-
|
|
100
|
+
const trustEnabled = this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED];
|
|
101
|
+
if (!trustEnabled) {
|
|
63
102
|
return true;
|
|
64
103
|
}
|
|
65
104
|
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] && !this.workspaceService.workspace) {
|
|
66
105
|
return true;
|
|
67
106
|
}
|
|
107
|
+
if (this.isWorkspaceInTrustedFolders()) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
68
110
|
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT] === workspace_trust_preferences_1.WorkspaceTrustPrompt.NEVER) {
|
|
69
111
|
return false;
|
|
70
112
|
}
|
|
71
|
-
|
|
113
|
+
// For ONCE mode, check stored trust first
|
|
114
|
+
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT] === workspace_trust_preferences_1.WorkspaceTrustPrompt.ONCE) {
|
|
115
|
+
const storedTrust = await this.loadWorkspaceTrust();
|
|
116
|
+
if (storedTrust !== undefined) {
|
|
117
|
+
return storedTrust;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// For ALWAYS mode or ONCE mode with no stored decision, show dialog
|
|
121
|
+
return this.showTrustPromptDialog();
|
|
122
|
+
}
|
|
123
|
+
async showTrustPromptDialog() {
|
|
124
|
+
// If dialog is already open, wait for its result
|
|
125
|
+
if (this.pendingTrustDialog) {
|
|
126
|
+
return this.pendingTrustDialog.promise;
|
|
127
|
+
}
|
|
128
|
+
this.pendingTrustDialog = new promise_util_1.Deferred();
|
|
129
|
+
try {
|
|
130
|
+
const trust = nls_1.nls.localizeByDefault('Yes, I trust the authors');
|
|
131
|
+
const dontTrust = nls_1.nls.localizeByDefault("No, I don't trust the authors");
|
|
132
|
+
const folderPath = this.workspaceService.workspace?.resource?.path?.toString() ?? '';
|
|
133
|
+
const dialog = new browser_1.ConfirmDialog({
|
|
134
|
+
title: nls_1.nls.localizeByDefault('Do you trust the authors of the files in this folder?'),
|
|
135
|
+
msg: nls_1.nls.localize('theia/workspace/trustDialogMessage', 'If you trust the authors of this folder, code inside may be executed. Only trust folders that you trust the contents of.') +
|
|
136
|
+
(folderPath ? `\n\n"${folderPath}"` : ''),
|
|
137
|
+
ok: trust,
|
|
138
|
+
cancel: dontTrust,
|
|
139
|
+
});
|
|
140
|
+
const result = await dialog.open();
|
|
141
|
+
const trusted = result === true;
|
|
142
|
+
this.pendingTrustDialog.resolve(trusted);
|
|
143
|
+
return trusted;
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
this.pendingTrustDialog.resolve(false);
|
|
147
|
+
throw e;
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
this.pendingTrustDialog = undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async addToTrustedFolders() {
|
|
154
|
+
const workspaceUri = this.workspaceService.workspace?.resource;
|
|
155
|
+
if (!workspaceUri) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (!this.isWorkspaceInTrustedFolders()) {
|
|
159
|
+
const currentFolders = this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] || [];
|
|
160
|
+
await this.preferences.set(workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS, [...currentFolders, workspaceUri.toString()], preferences_1.PreferenceScope.User);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
isWorkspaceInTrustedFolders() {
|
|
164
|
+
const workspaceUri = this.workspaceService.workspace?.resource;
|
|
165
|
+
if (!workspaceUri) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
const trustedFolders = this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] || [];
|
|
169
|
+
const caseSensitive = !core_1.OS.backend.isWindows;
|
|
170
|
+
return trustedFolders.some(folder => {
|
|
171
|
+
try {
|
|
172
|
+
const folderUri = new uri_1.default(folder).normalizePath();
|
|
173
|
+
return workspaceUri.normalizePath().isEqual(folderUri, caseSensitive);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return false; // Invalid URI in preferences
|
|
177
|
+
}
|
|
178
|
+
});
|
|
72
179
|
}
|
|
73
180
|
async loadWorkspaceTrust() {
|
|
74
181
|
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT] === workspace_trust_preferences_1.WorkspaceTrustPrompt.ONCE) {
|
|
@@ -81,6 +188,18 @@ let WorkspaceTrustService = class WorkspaceTrustService {
|
|
|
81
188
|
}
|
|
82
189
|
}
|
|
83
190
|
async handlePreferenceChange(change) {
|
|
191
|
+
// Handle trustedFolders changes regardless of scope
|
|
192
|
+
if (change.preferenceName === workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS) {
|
|
193
|
+
// For empty windows with emptyWindow setting enabled, trust should remain true
|
|
194
|
+
if (this.workspaceTrustPref[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] && !this.workspaceService.workspace) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const isNowInTrustedFolders = this.isWorkspaceInTrustedFolders();
|
|
198
|
+
if (isNowInTrustedFolders !== this.currentTrust) {
|
|
199
|
+
this.setWorkspaceTrust(isNowInTrustedFolders);
|
|
200
|
+
}
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
84
203
|
if (change.scope === preferences_1.PreferenceScope.User) {
|
|
85
204
|
if (change.preferenceName === workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT && change.newValue !== workspace_trust_preferences_1.WorkspaceTrustPrompt.ONCE) {
|
|
86
205
|
this.storage.setData(STORAGE_TRUSTED, undefined);
|
|
@@ -89,11 +208,29 @@ let WorkspaceTrustService = class WorkspaceTrustService {
|
|
|
89
208
|
this.windowService.setSafeToShutDown();
|
|
90
209
|
this.windowService.reload();
|
|
91
210
|
}
|
|
92
|
-
if (change.preferenceName === workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED
|
|
211
|
+
if (change.preferenceName === workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED) {
|
|
93
212
|
this.resolveWorkspaceTrust();
|
|
94
213
|
}
|
|
214
|
+
// Handle emptyWindow setting change for empty windows
|
|
215
|
+
if (change.preferenceName === workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW && !this.workspaceService.workspace) {
|
|
216
|
+
// For empty windows, directly update trust based on the new setting value
|
|
217
|
+
const shouldTrust = !!change.newValue;
|
|
218
|
+
if (this.currentTrust !== shouldTrust) {
|
|
219
|
+
this.setWorkspaceTrust(shouldTrust);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
95
222
|
}
|
|
96
223
|
}
|
|
224
|
+
async handleWorkspaceChanged() {
|
|
225
|
+
// Reset trust state for the new workspace
|
|
226
|
+
this.workspaceTrust = new promise_util_1.Deferred();
|
|
227
|
+
this.currentTrust = undefined;
|
|
228
|
+
// Re-evaluate trust for the new workspace
|
|
229
|
+
await this.resolveWorkspaceTrust();
|
|
230
|
+
// Update status bar indicator
|
|
231
|
+
const trust = await this.getWorkspaceTrust();
|
|
232
|
+
this.updateRestrictedModeIndicator(trust);
|
|
233
|
+
}
|
|
97
234
|
async confirmRestart() {
|
|
98
235
|
const shouldRestart = await new browser_1.ConfirmDialog({
|
|
99
236
|
title: nls_1.nls.localizeByDefault('A setting has changed that requires a restart to take effect.'),
|
|
@@ -103,11 +240,30 @@ let WorkspaceTrustService = class WorkspaceTrustService {
|
|
|
103
240
|
}).open();
|
|
104
241
|
return shouldRestart === true;
|
|
105
242
|
}
|
|
243
|
+
updateRestrictedModeIndicator(trusted) {
|
|
244
|
+
if (trusted) {
|
|
245
|
+
this.hideRestrictedModeStatusBarItem();
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
this.showRestrictedModeStatusBarItem();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
showRestrictedModeStatusBarItem() {
|
|
252
|
+
this.statusBar.setElement(exports.WORKSPACE_TRUST_STATUS_BAR_ID, {
|
|
253
|
+
text: '$(shield) ' + nls_1.nls.localizeByDefault('Restricted Mode'),
|
|
254
|
+
alignment: status_bar_1.StatusBarAlignment.LEFT,
|
|
255
|
+
priority: 5000,
|
|
256
|
+
tooltip: nls_1.nls.localize('theia/workspace/restrictedModeTooltip', 'Running in Restricted Mode. Some features are disabled because this folder is not trusted. Click to manage trust settings.'),
|
|
257
|
+
command: workspace_commands_1.WorkspaceCommands.MANAGE_WORKSPACE_TRUST.id
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
hideRestrictedModeStatusBarItem() {
|
|
261
|
+
this.statusBar.removeElement(exports.WORKSPACE_TRUST_STATUS_BAR_ID);
|
|
262
|
+
}
|
|
106
263
|
async requestWorkspaceTrust() {
|
|
107
264
|
if (!this.isWorkspaceTrustResolved()) {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
this.resolveWorkspaceTrust(trusted);
|
|
265
|
+
const trusted = await this.showTrustPromptDialog();
|
|
266
|
+
await this.resolveWorkspaceTrust(trusted);
|
|
111
267
|
}
|
|
112
268
|
return this.workspaceTrust.promise;
|
|
113
269
|
}
|
|
@@ -133,6 +289,10 @@ tslib_1.__decorate([
|
|
|
133
289
|
(0, inversify_1.inject)(workspace_trust_preferences_1.WorkspaceTrustPreferences),
|
|
134
290
|
tslib_1.__metadata("design:type", Object)
|
|
135
291
|
], WorkspaceTrustService.prototype, "workspaceTrustPref", void 0);
|
|
292
|
+
tslib_1.__decorate([
|
|
293
|
+
(0, inversify_1.inject)(preferences_1.PreferenceSchemaService),
|
|
294
|
+
tslib_1.__metadata("design:type", Object)
|
|
295
|
+
], WorkspaceTrustService.prototype, "preferenceSchemaService", void 0);
|
|
136
296
|
tslib_1.__decorate([
|
|
137
297
|
(0, inversify_1.inject)(window_service_1.WindowService),
|
|
138
298
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -141,12 +301,22 @@ tslib_1.__decorate([
|
|
|
141
301
|
(0, inversify_1.inject)(context_key_service_1.ContextKeyService),
|
|
142
302
|
tslib_1.__metadata("design:type", Object)
|
|
143
303
|
], WorkspaceTrustService.prototype, "contextKeyService", void 0);
|
|
304
|
+
tslib_1.__decorate([
|
|
305
|
+
(0, inversify_1.inject)(status_bar_1.StatusBar),
|
|
306
|
+
tslib_1.__metadata("design:type", Object)
|
|
307
|
+
], WorkspaceTrustService.prototype, "statusBar", void 0);
|
|
144
308
|
tslib_1.__decorate([
|
|
145
309
|
(0, inversify_1.postConstruct)(),
|
|
146
310
|
tslib_1.__metadata("design:type", Function),
|
|
147
311
|
tslib_1.__metadata("design:paramtypes", []),
|
|
148
312
|
tslib_1.__metadata("design:returntype", void 0)
|
|
149
313
|
], WorkspaceTrustService.prototype, "init", null);
|
|
314
|
+
tslib_1.__decorate([
|
|
315
|
+
(0, inversify_1.preDestroy)(),
|
|
316
|
+
tslib_1.__metadata("design:type", Function),
|
|
317
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
318
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
319
|
+
], WorkspaceTrustService.prototype, "onStop", null);
|
|
150
320
|
exports.WorkspaceTrustService = WorkspaceTrustService = tslib_1.__decorate([
|
|
151
321
|
(0, inversify_1.injectable)()
|
|
152
322
|
], WorkspaceTrustService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-trust-service.js","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,qDAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"workspace-trust-service.js","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-trust-service.spec.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const sinon = require("sinon");
|
|
20
|
+
const preferences_1 = require("@theia/core/lib/common/preferences");
|
|
21
|
+
const workspace_trust_service_1 = require("./workspace-trust-service");
|
|
22
|
+
const workspace_trust_preferences_1 = require("../common/workspace-trust-preferences");
|
|
23
|
+
class TestableWorkspaceTrustService extends workspace_trust_service_1.WorkspaceTrustService {
|
|
24
|
+
async testHandlePreferenceChange(change) {
|
|
25
|
+
return this.handlePreferenceChange(change);
|
|
26
|
+
}
|
|
27
|
+
async testHandleWorkspaceChanged() {
|
|
28
|
+
return this.handleWorkspaceChanged();
|
|
29
|
+
}
|
|
30
|
+
setCurrentTrust(trust) {
|
|
31
|
+
this.currentTrust = trust;
|
|
32
|
+
}
|
|
33
|
+
getCurrentTrust() {
|
|
34
|
+
return this.currentTrust;
|
|
35
|
+
}
|
|
36
|
+
isWorkspaceTrustResolved() {
|
|
37
|
+
return super.isWorkspaceTrustResolved();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
describe('WorkspaceTrustService', () => {
|
|
41
|
+
let service;
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
service = new TestableWorkspaceTrustService();
|
|
44
|
+
});
|
|
45
|
+
describe('handleWorkspaceChanged', () => {
|
|
46
|
+
let resolveWorkspaceTrustStub;
|
|
47
|
+
let getWorkspaceTrustStub;
|
|
48
|
+
let updateRestrictedModeIndicatorStub;
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
resolveWorkspaceTrustStub = sinon.stub(service, 'resolveWorkspaceTrust').resolves();
|
|
51
|
+
getWorkspaceTrustStub = sinon.stub(service, 'getWorkspaceTrust').resolves(true);
|
|
52
|
+
updateRestrictedModeIndicatorStub = sinon.stub(service, 'updateRestrictedModeIndicator');
|
|
53
|
+
});
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
sinon.restore();
|
|
56
|
+
});
|
|
57
|
+
it('should reset trust state when workspace changes', async () => {
|
|
58
|
+
service.setCurrentTrust(true);
|
|
59
|
+
await service.testHandleWorkspaceChanged();
|
|
60
|
+
(0, chai_1.expect)(service.getCurrentTrust()).to.be.undefined;
|
|
61
|
+
});
|
|
62
|
+
it('should re-evaluate trust when workspace changes', async () => {
|
|
63
|
+
service.setCurrentTrust(true);
|
|
64
|
+
await service.testHandleWorkspaceChanged();
|
|
65
|
+
(0, chai_1.expect)(resolveWorkspaceTrustStub.calledOnce).to.be.true;
|
|
66
|
+
});
|
|
67
|
+
it('should update restricted mode indicator after workspace change if not trusted', async () => {
|
|
68
|
+
getWorkspaceTrustStub.resolves(false);
|
|
69
|
+
await service.testHandleWorkspaceChanged();
|
|
70
|
+
(0, chai_1.expect)(updateRestrictedModeIndicatorStub.calledOnceWith(false)).to.be.true;
|
|
71
|
+
});
|
|
72
|
+
it('should reset workspaceTrust deferred to unresolved state', async () => {
|
|
73
|
+
// First resolve the trust
|
|
74
|
+
service.setCurrentTrust(true);
|
|
75
|
+
await service.testHandleWorkspaceChanged();
|
|
76
|
+
// After workspace change, it should be reset and resolved again via resolveWorkspaceTrust
|
|
77
|
+
(0, chai_1.expect)(resolveWorkspaceTrustStub.calledOnce).to.be.true;
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('handlePreferenceChange', () => {
|
|
81
|
+
let isWorkspaceInTrustedFoldersStub;
|
|
82
|
+
let setWorkspaceTrustStub;
|
|
83
|
+
let workspaceTrustPrefStub;
|
|
84
|
+
let workspaceServiceStub;
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
isWorkspaceInTrustedFoldersStub = sinon.stub(service, 'isWorkspaceInTrustedFolders');
|
|
87
|
+
setWorkspaceTrustStub = sinon.stub(service, 'setWorkspaceTrust');
|
|
88
|
+
// Mock workspaceTrustPref - default emptyWindow to false so trusted folders logic runs
|
|
89
|
+
workspaceTrustPrefStub = { [workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW]: false };
|
|
90
|
+
service.workspaceTrustPref = workspaceTrustPrefStub;
|
|
91
|
+
// Mock workspaceService with a workspace (non-empty)
|
|
92
|
+
workspaceServiceStub = { workspace: { resource: { toString: () => 'file:///some/workspace' } } };
|
|
93
|
+
service.workspaceService = workspaceServiceStub;
|
|
94
|
+
});
|
|
95
|
+
afterEach(() => {
|
|
96
|
+
sinon.restore();
|
|
97
|
+
});
|
|
98
|
+
it('should update trust to true when folder is added to trustedFolders', async () => {
|
|
99
|
+
service.setCurrentTrust(false);
|
|
100
|
+
isWorkspaceInTrustedFoldersStub.returns(true);
|
|
101
|
+
const change = {
|
|
102
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
|
|
103
|
+
scope: preferences_1.PreferenceScope.User,
|
|
104
|
+
domain: [],
|
|
105
|
+
newValue: ['/some/path'],
|
|
106
|
+
oldValue: [],
|
|
107
|
+
affects: () => true
|
|
108
|
+
};
|
|
109
|
+
await service.testHandlePreferenceChange(change);
|
|
110
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(true)).to.be.true;
|
|
111
|
+
});
|
|
112
|
+
it('should update trust to false when folder is removed from trustedFolders', async () => {
|
|
113
|
+
service.setCurrentTrust(true);
|
|
114
|
+
isWorkspaceInTrustedFoldersStub.returns(false);
|
|
115
|
+
const change = {
|
|
116
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
|
|
117
|
+
scope: preferences_1.PreferenceScope.User,
|
|
118
|
+
domain: [],
|
|
119
|
+
newValue: [],
|
|
120
|
+
oldValue: ['/some/path'],
|
|
121
|
+
affects: () => true
|
|
122
|
+
};
|
|
123
|
+
await service.testHandlePreferenceChange(change);
|
|
124
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(false)).to.be.true;
|
|
125
|
+
});
|
|
126
|
+
it('should not update trust when trustedFolders change does not affect current workspace', async () => {
|
|
127
|
+
service.setCurrentTrust(false);
|
|
128
|
+
isWorkspaceInTrustedFoldersStub.returns(false);
|
|
129
|
+
const change = {
|
|
130
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
|
|
131
|
+
scope: preferences_1.PreferenceScope.User,
|
|
132
|
+
domain: [],
|
|
133
|
+
newValue: ['/other/path'],
|
|
134
|
+
oldValue: [],
|
|
135
|
+
affects: () => true
|
|
136
|
+
};
|
|
137
|
+
await service.testHandlePreferenceChange(change);
|
|
138
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.called).to.be.false;
|
|
139
|
+
});
|
|
140
|
+
describe('emptyWindow setting changes', () => {
|
|
141
|
+
beforeEach(() => {
|
|
142
|
+
// Reset workspace to undefined for empty window tests
|
|
143
|
+
workspaceServiceStub.workspace = undefined;
|
|
144
|
+
});
|
|
145
|
+
it('should update trust to true when emptyWindow setting changes to true for empty window', async () => {
|
|
146
|
+
service.setCurrentTrust(false);
|
|
147
|
+
workspaceServiceStub.workspace = undefined;
|
|
148
|
+
const change = {
|
|
149
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
|
|
150
|
+
scope: preferences_1.PreferenceScope.User,
|
|
151
|
+
domain: [],
|
|
152
|
+
newValue: true,
|
|
153
|
+
oldValue: false,
|
|
154
|
+
affects: () => true
|
|
155
|
+
};
|
|
156
|
+
await service.testHandlePreferenceChange(change);
|
|
157
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(true)).to.be.true;
|
|
158
|
+
});
|
|
159
|
+
it('should update trust to false when emptyWindow setting changes to false for empty window', async () => {
|
|
160
|
+
service.setCurrentTrust(true);
|
|
161
|
+
workspaceServiceStub.workspace = undefined;
|
|
162
|
+
const change = {
|
|
163
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
|
|
164
|
+
scope: preferences_1.PreferenceScope.User,
|
|
165
|
+
domain: [],
|
|
166
|
+
newValue: false,
|
|
167
|
+
oldValue: true,
|
|
168
|
+
affects: () => true
|
|
169
|
+
};
|
|
170
|
+
await service.testHandlePreferenceChange(change);
|
|
171
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(false)).to.be.true;
|
|
172
|
+
});
|
|
173
|
+
it('should not update trust when emptyWindow setting changes but workspace is open', async () => {
|
|
174
|
+
service.setCurrentTrust(false);
|
|
175
|
+
workspaceServiceStub.workspace = { resource: { toString: () => 'file:///some/path' } };
|
|
176
|
+
const change = {
|
|
177
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
|
|
178
|
+
scope: preferences_1.PreferenceScope.User,
|
|
179
|
+
domain: [],
|
|
180
|
+
newValue: true,
|
|
181
|
+
oldValue: false,
|
|
182
|
+
affects: () => true
|
|
183
|
+
};
|
|
184
|
+
await service.testHandlePreferenceChange(change);
|
|
185
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.called).to.be.false;
|
|
186
|
+
});
|
|
187
|
+
it('should not update trust when emptyWindow setting changes but trust already matches', async () => {
|
|
188
|
+
service.setCurrentTrust(true);
|
|
189
|
+
workspaceServiceStub.workspace = undefined;
|
|
190
|
+
const change = {
|
|
191
|
+
preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
|
|
192
|
+
scope: preferences_1.PreferenceScope.User,
|
|
193
|
+
domain: [],
|
|
194
|
+
newValue: true,
|
|
195
|
+
oldValue: false,
|
|
196
|
+
affects: () => true
|
|
197
|
+
};
|
|
198
|
+
await service.testHandlePreferenceChange(change);
|
|
199
|
+
(0, chai_1.expect)(setWorkspaceTrustStub.called).to.be.false;
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
//# sourceMappingURL=workspace-trust-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-trust-service.spec.js","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { interfaces } from '@theia/core/shared/inversify';
|
|
|
3
3
|
export declare const WORKSPACE_TRUST_ENABLED = "security.workspace.trust.enabled";
|
|
4
4
|
export declare const WORKSPACE_TRUST_STARTUP_PROMPT = "security.workspace.trust.startupPrompt";
|
|
5
5
|
export declare const WORKSPACE_TRUST_EMPTY_WINDOW = "security.workspace.trust.emptyWindow";
|
|
6
|
+
export declare const WORKSPACE_TRUST_TRUSTED_FOLDERS = "security.workspace.trust.trustedFolders";
|
|
6
7
|
export declare enum WorkspaceTrustPrompt {
|
|
7
8
|
ALWAYS = "always",
|
|
8
9
|
ONCE = "once",
|
|
@@ -13,6 +14,7 @@ export interface WorkspaceTrustConfiguration {
|
|
|
13
14
|
[WORKSPACE_TRUST_ENABLED]: boolean;
|
|
14
15
|
[WORKSPACE_TRUST_STARTUP_PROMPT]: WorkspaceTrustPrompt;
|
|
15
16
|
[WORKSPACE_TRUST_EMPTY_WINDOW]: boolean;
|
|
17
|
+
[WORKSPACE_TRUST_TRUSTED_FOLDERS]: string[];
|
|
16
18
|
}
|
|
17
19
|
export declare const WorkspaceTrustPreferenceContribution: unique symbol;
|
|
18
20
|
export declare const WorkspaceTrustPreferences: unique symbol;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-trust-preferences.d.ts","sourceRoot":"","sources":["../../src/common/workspace-trust-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAyB,eAAe,EAAmB,iBAAiB,EAA0B,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE1K,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAC1E,eAAO,MAAM,8BAA8B,2CAA2C,CAAC;AACvF,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-trust-preferences.d.ts","sourceRoot":"","sources":["../../src/common/workspace-trust-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAyB,eAAe,EAAmB,iBAAiB,EAA0B,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE1K,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAC1E,eAAO,MAAM,8BAA8B,2CAA2C,CAAC;AACvF,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AACnF,eAAO,MAAM,+BAA+B,4CAA4C,CAAC;AAEzF,oBAAY,oBAAoB;IAC5B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;CAClB;AAED,eAAO,MAAM,8BAA8B,EAAE,gBA4B5C,CAAC;AAEF,MAAM,WAAW,2BAA2B;IACxC,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IACnC,CAAC,8BAA8B,CAAC,EAAE,oBAAoB,CAAC;IACvD,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACxC,CAAC,+BAA+B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/C;AAED,eAAO,MAAM,oCAAoC,eAAiD,CAAC;AACnG,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,MAAM,yBAAyB,GAAG,eAAe,CAAC,2BAA2B,CAAC,CAAC;AAErF,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAAiD,GAAG,yBAAyB,CAEpK;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAQzE"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.WorkspaceTrustPreferences = exports.WorkspaceTrustPreferenceContribution = exports.workspaceTrustPreferenceSchema = exports.WorkspaceTrustPrompt = exports.WORKSPACE_TRUST_EMPTY_WINDOW = exports.WORKSPACE_TRUST_STARTUP_PROMPT = exports.WORKSPACE_TRUST_ENABLED = void 0;
|
|
18
|
+
exports.WorkspaceTrustPreferences = exports.WorkspaceTrustPreferenceContribution = exports.workspaceTrustPreferenceSchema = exports.WorkspaceTrustPrompt = exports.WORKSPACE_TRUST_TRUSTED_FOLDERS = exports.WORKSPACE_TRUST_EMPTY_WINDOW = exports.WORKSPACE_TRUST_STARTUP_PROMPT = exports.WORKSPACE_TRUST_ENABLED = void 0;
|
|
19
19
|
exports.createWorkspaceTrustPreferences = createWorkspaceTrustPreferences;
|
|
20
20
|
exports.bindWorkspaceTrustPreferences = bindWorkspaceTrustPreferences;
|
|
21
21
|
const preferences_1 = require("@theia/core/lib/common/preferences");
|
|
@@ -23,6 +23,7 @@ const nls_1 = require("@theia/core/lib/common/nls");
|
|
|
23
23
|
exports.WORKSPACE_TRUST_ENABLED = 'security.workspace.trust.enabled';
|
|
24
24
|
exports.WORKSPACE_TRUST_STARTUP_PROMPT = 'security.workspace.trust.startupPrompt';
|
|
25
25
|
exports.WORKSPACE_TRUST_EMPTY_WINDOW = 'security.workspace.trust.emptyWindow';
|
|
26
|
+
exports.WORKSPACE_TRUST_TRUSTED_FOLDERS = 'security.workspace.trust.trustedFolders';
|
|
26
27
|
var WorkspaceTrustPrompt;
|
|
27
28
|
(function (WorkspaceTrustPrompt) {
|
|
28
29
|
WorkspaceTrustPrompt["ALWAYS"] = "always";
|
|
@@ -46,6 +47,15 @@ exports.workspaceTrustPreferenceSchema = {
|
|
|
46
47
|
description: nls_1.nls.localize('theia/workspace/trustEmptyWindow', 'Controls whether or not the empty workspace is trusted by default.'),
|
|
47
48
|
type: 'boolean',
|
|
48
49
|
default: true
|
|
50
|
+
},
|
|
51
|
+
[exports.WORKSPACE_TRUST_TRUSTED_FOLDERS]: {
|
|
52
|
+
description: nls_1.nls.localize('theia/workspace/trustTrustedFolders', 'List of folder URIs that are trusted without prompting.'),
|
|
53
|
+
type: 'array',
|
|
54
|
+
items: {
|
|
55
|
+
type: 'string'
|
|
56
|
+
},
|
|
57
|
+
default: [],
|
|
58
|
+
scope: preferences_1.PreferenceScope.User
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-trust-preferences.js","sourceRoot":"","sources":["../../src/common/workspace-trust-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"workspace-trust-preferences.js","sourceRoot":"","sources":["../../src/common/workspace-trust-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AA0DhF,0EAEC;AAED,sEAQC;AApED,oEAA0K;AAC1K,oDAAiD;AAGpC,QAAA,uBAAuB,GAAG,kCAAkC,CAAC;AAC7D,QAAA,8BAA8B,GAAG,wCAAwC,CAAC;AAC1E,QAAA,4BAA4B,GAAG,sCAAsC,CAAC;AACtE,QAAA,+BAA+B,GAAG,yCAAyC,CAAC;AAEzF,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC5B,yCAAiB,CAAA;IACjB,qCAAa,CAAA;IACb,uCAAe,CAAA;AACnB,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B;AAEY,QAAA,8BAA8B,GAAqB;IAC5D,KAAK,EAAE,6BAAe,CAAC,IAAI;IAC3B,UAAU,EAAE;QACR,CAAC,+BAAuB,CAAC,EAAE;YACvB,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,8BAA8B,EAAE,8FAA8F,CAAC;YACzJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SAChB;QACD,CAAC,sCAA8B,CAAC,EAAE;YAC9B,WAAW,EAAE,SAAG,CAAC,iBAAiB,CAAC,iEAAiE,CAAC;YACrG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACzC,OAAO,EAAE,oBAAoB,CAAC,MAAM;SACvC;QACD,CAAC,oCAA4B,CAAC,EAAE;YAC5B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,kCAAkC,EAAE,oEAAoE,CAAC;YACnI,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SAChB;QACD,CAAC,uCAA+B,CAAC,EAAE;YAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,qCAAqC,EAAE,yDAAyD,CAAC;YAC3H,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,6BAAe,CAAC,IAAI;SAC9B;KACJ;CACJ,CAAC;AASW,QAAA,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACtF,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAG7E,SAAgB,+BAA+B,CAAC,WAA8B,EAAE,SAA2B,sCAA8B;IACrI,OAAO,IAAA,mCAAqB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,6BAA6B,CAAC,IAAqB;IAC/D,IAAI,CAAC,iCAAyB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACjD,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoB,+BAAiB,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAyB,4CAAoC,CAAC,CAAC;QACrG,OAAO,+BAA+B,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,4CAAoC,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,sCAA8B,EAAE,CAAC,CAAC;IACvG,IAAI,CAAC,oCAAsB,CAAC,CAAC,SAAS,CAAC,4CAAoC,CAAC,CAAC;AACjF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/workspace",
|
|
3
|
-
"version": "1.68.0-next.
|
|
3
|
+
"version": "1.68.0-next.48+c13611b3f",
|
|
4
4
|
"description": "Theia - Workspace Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.68.0-next.
|
|
7
|
-
"@theia/filesystem": "1.68.0-next.
|
|
8
|
-
"@theia/variable-resolver": "1.68.0-next.
|
|
6
|
+
"@theia/core": "1.68.0-next.48+c13611b3f",
|
|
7
|
+
"@theia/filesystem": "1.68.0-next.48+c13611b3f",
|
|
8
|
+
"@theia/variable-resolver": "1.68.0-next.48+c13611b3f",
|
|
9
9
|
"jsonc-parser": "^2.2.0",
|
|
10
10
|
"tslib": "^2.6.2",
|
|
11
11
|
"valid-filename": "^2.0.1"
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"nyc": {
|
|
53
53
|
"extends": "../../configs/nyc.json"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "c13611b3f07bfc3d2c7525d8488283ff3e575422"
|
|
56
56
|
}
|