@theia/workspace 1.77.0-next.7 → 1.77.0-next.71
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/metadata-storage/workspace-metadata-storage-service.spec.js +3 -2
- package/lib/browser/metadata-storage/workspace-metadata-storage-service.spec.js.map +1 -1
- package/lib/browser/quick-open-workspace.js +1 -1
- package/lib/browser/quick-open-workspace.js.map +1 -1
- package/lib/browser/test/with-workspace-service-defaults.d.ts +8 -0
- package/lib/browser/test/with-workspace-service-defaults.d.ts.map +1 -0
- package/lib/browser/test/with-workspace-service-defaults.js +28 -0
- package/lib/browser/test/with-workspace-service-defaults.js.map +1 -0
- package/lib/browser/workspace-commands.spec.js +2 -1
- package/lib/browser/workspace-commands.spec.js.map +1 -1
- package/lib/browser/workspace-delete-handler.js +1 -1
- package/lib/browser/workspace-delete-handler.js.map +1 -1
- package/lib/browser/workspace-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/workspace-frontend-contribution.js +4 -2
- package/lib/browser/workspace-frontend-contribution.js.map +1 -1
- package/lib/browser/workspace-schema-updater.js +1 -1
- package/lib/browser/workspace-schema-updater.js.map +1 -1
- package/lib/browser/workspace-search-filter-service.spec.js +2 -1
- package/lib/browser/workspace-search-filter-service.spec.js.map +1 -1
- package/lib/browser/workspace-service.d.ts +85 -0
- package/lib/browser/workspace-service.d.ts.map +1 -1
- package/lib/browser/workspace-service.js +203 -5
- package/lib/browser/workspace-service.js.map +1 -1
- package/lib/browser/workspace-service.spec.d.ts +2 -0
- package/lib/browser/workspace-service.spec.d.ts.map +1 -0
- package/lib/browser/workspace-service.spec.js +232 -0
- package/lib/browser/workspace-service.spec.js.map +1 -0
- package/lib/browser/workspace-trust-service.js +1 -1
- package/lib/browser/workspace-trust-service.js.map +1 -1
- package/lib/browser/workspace-trust-service.spec.js +3 -2
- package/lib/browser/workspace-trust-service.spec.js.map +1 -1
- package/lib/browser/workspace-uri-contribution.d.ts +14 -0
- package/lib/browser/workspace-uri-contribution.d.ts.map +1 -1
- package/lib/browser/workspace-uri-contribution.js +44 -2
- package/lib/browser/workspace-uri-contribution.js.map +1 -1
- package/lib/browser/workspace-uri-contribution.spec.js +43 -5
- package/lib/browser/workspace-uri-contribution.spec.js.map +1 -1
- package/lib/node/default-workspace-server.js +4 -4
- package/lib/node/default-workspace-server.js.map +1 -1
- package/lib/node/default-workspace-server.spec.js +3 -2
- package/lib/node/default-workspace-server.spec.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/test/with-workspace-service-defaults.ts +26 -0
- package/src/browser/workspace-frontend-contribution.ts +4 -2
- package/src/browser/workspace-service.spec.ts +274 -0
- package/src/browser/workspace-service.ts +216 -2
- package/src/browser/workspace-uri-contribution.spec.ts +45 -3
- package/src/browser/workspace-uri-contribution.ts +43 -1
|
@@ -15,16 +15,17 @@
|
|
|
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
|
+
const tslib_1 = require("tslib");
|
|
18
19
|
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
20
|
const disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
21
|
const chai_1 = require("chai");
|
|
21
|
-
const sinon = require("sinon");
|
|
22
|
+
const sinon = tslib_1.__importStar(require("sinon"));
|
|
22
23
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
24
|
const event_1 = require("@theia/core/lib/common/event");
|
|
24
25
|
const browser_1 = require("@theia/core/lib/browser");
|
|
25
26
|
const label_provider_1 = require("@theia/core/lib/browser/label-provider");
|
|
26
27
|
const workspace_uri_contribution_1 = require("./workspace-uri-contribution");
|
|
27
|
-
const uri_1 = require("@theia/core/lib/common/uri");
|
|
28
|
+
const uri_1 = tslib_1.__importDefault(require("@theia/core/lib/common/uri"));
|
|
28
29
|
const workspace_variable_contribution_1 = require("./workspace-variable-contribution");
|
|
29
30
|
const workspace_service_1 = require("./workspace-service");
|
|
30
31
|
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
@@ -33,11 +34,17 @@ const env_variables_1 = require("@theia/core/lib/common/env-variables");
|
|
|
33
34
|
const mock_env_variables_server_1 = require("@theia/core/lib/browser/test/mock-env-variables-server");
|
|
34
35
|
const node_1 = require("@theia/core/lib/node");
|
|
35
36
|
const os_1 = require("@theia/core/lib/common/os");
|
|
36
|
-
const temp = require("temp");
|
|
37
|
+
const temp = tslib_1.__importStar(require("temp"));
|
|
37
38
|
after(() => disableJSDOM());
|
|
38
39
|
let container;
|
|
39
40
|
let labelProvider;
|
|
40
41
|
let roots;
|
|
42
|
+
let workspaceService;
|
|
43
|
+
/** Changes the roots, as `WorkspaceService.updateRoots` does, which resets their names. */
|
|
44
|
+
const setRoots = (newRoots) => {
|
|
45
|
+
roots = newRoots;
|
|
46
|
+
workspaceService['rootNamesCache'] = undefined;
|
|
47
|
+
};
|
|
41
48
|
beforeEach(() => {
|
|
42
49
|
roots = [files_1.FileStat.dir('file:///workspace')];
|
|
43
50
|
container = new inversify_1.Container();
|
|
@@ -50,7 +57,7 @@ beforeEach(() => {
|
|
|
50
57
|
onDidCreateWidget: event_1.Event.None
|
|
51
58
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
59
|
});
|
|
53
|
-
|
|
60
|
+
workspaceService = new workspace_service_1.WorkspaceService();
|
|
54
61
|
workspaceService.tryGetRoots = () => roots;
|
|
55
62
|
container.bind(workspace_service_1.WorkspaceService).toConstantValue(workspaceService);
|
|
56
63
|
container.bind(workspace_variable_contribution_1.WorkspaceVariableContribution).toSelf().inSingletonScope();
|
|
@@ -122,6 +129,37 @@ describe('WorkspaceUriLabelProviderContribution class', () => {
|
|
|
122
129
|
const name = labelProvider.getName(file);
|
|
123
130
|
(0, chai_1.expect)(name).eq('jacques.doc');
|
|
124
131
|
});
|
|
132
|
+
it('should return the folder name of a workspace root', () => {
|
|
133
|
+
setRoots([files_1.FileStat.dir('file:///home/alice/app'), files_1.FileStat.dir('file:///home/bob/lib')]);
|
|
134
|
+
(0, chai_1.expect)(labelProvider.getName(files_1.FileStat.dir('file:///home/alice/app'))).eq('app');
|
|
135
|
+
});
|
|
136
|
+
it('should return the unique names of workspace roots sharing a folder name', () => {
|
|
137
|
+
setRoots([files_1.FileStat.dir('file:///home/alice/app'), files_1.FileStat.dir('file:///home/bob/app')]);
|
|
138
|
+
(0, chai_1.expect)(labelProvider.getName(files_1.FileStat.dir('file:///home/alice/app'))).eq('alice/app');
|
|
139
|
+
(0, chai_1.expect)(labelProvider.getName(new uri_1.default('file:///home/bob/app'))).eq('bob/app');
|
|
140
|
+
});
|
|
141
|
+
it('should return the folder name of a folder that shares its name with a workspace root', () => {
|
|
142
|
+
setRoots([files_1.FileStat.dir('file:///home/alice/app'), files_1.FileStat.dir('file:///home/bob/app')]);
|
|
143
|
+
(0, chai_1.expect)(labelProvider.getName(files_1.FileStat.dir('file:///home/alice/app/app'))).eq('app');
|
|
144
|
+
});
|
|
145
|
+
it('should notify a change of the name of a workspace root when a root sharing its folder name is added', () => {
|
|
146
|
+
setRoots([files_1.FileStat.dir('file:///home/alice/app'), files_1.FileStat.dir('file:///home/other')]);
|
|
147
|
+
workspaceService['onWorkspaceChangeEmitter'].fire(roots);
|
|
148
|
+
const events = [];
|
|
149
|
+
labelProvider.onDidChange(event => events.push(event));
|
|
150
|
+
setRoots([...roots, files_1.FileStat.dir('file:///home/bob/app')]);
|
|
151
|
+
workspaceService['onWorkspaceChangeEmitter'].fire(roots);
|
|
152
|
+
(0, chai_1.expect)(events.some(event => event.affects(new uri_1.default('file:///home/alice/app')))).to.be.true;
|
|
153
|
+
(0, chai_1.expect)(events.some(event => event.affects(files_1.FileStat.dir('file:///home/alice/app')))).to.be.true;
|
|
154
|
+
(0, chai_1.expect)(events.some(event => event.affects(new uri_1.default('file:///home/other')))).to.be.false;
|
|
155
|
+
(0, chai_1.expect)(labelProvider.getName(new uri_1.default('file:///home/alice/app'))).eq('alice/app');
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('getDetails()', () => {
|
|
159
|
+
it('should prefix the path of a file with the unique name of its workspace root', () => {
|
|
160
|
+
setRoots([files_1.FileStat.dir('file:///home/alice/app'), files_1.FileStat.dir('file:///home/bob/app')]);
|
|
161
|
+
(0, chai_1.expect)(labelProvider.getDetails(new uri_1.default('file:///home/bob/app/src/index.ts'))).eq('bob/app • src');
|
|
162
|
+
});
|
|
125
163
|
});
|
|
126
164
|
describe('getLongName()', () => {
|
|
127
165
|
it('should return the path of a file relative to the workspace from the file\'s URI if the file is in the workspace', () => {
|
|
@@ -155,7 +193,7 @@ describe('WorkspaceUriLabelProviderContribution class', () => {
|
|
|
155
193
|
}
|
|
156
194
|
});
|
|
157
195
|
it('should return the path of a file if WorkspaceService returns no roots', () => {
|
|
158
|
-
|
|
196
|
+
setRoots([]);
|
|
159
197
|
const file = new uri_1.default('file:///tmp/prout.txt');
|
|
160
198
|
const longName = labelProvider.getLongName(file);
|
|
161
199
|
if (os_1.OS.backend.isWindows) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-uri-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/workspace-uri-contribution.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,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-uri-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/workspace-uri-contribution.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,15 +17,15 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.RecentWorkspacePathsData = exports.FileWorkspaceHandlerContribution = exports.DefaultWorkspaceServer = exports.WorkspaceCliContribution = exports.WorkspaceHandlerContribution = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
|
-
const path = require("path");
|
|
21
|
-
const fs = require("@theia/core/shared/fs-extra");
|
|
22
|
-
const jsoncparser = require("jsonc-parser");
|
|
20
|
+
const path = tslib_1.__importStar(require("path"));
|
|
21
|
+
const fs = tslib_1.__importStar(require("@theia/core/shared/fs-extra"));
|
|
22
|
+
const jsoncparser = tslib_1.__importStar(require("jsonc-parser"));
|
|
23
23
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
24
24
|
const node_1 = require("@theia/core/lib/node");
|
|
25
25
|
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
26
26
|
const common_1 = require("../common");
|
|
27
27
|
const env_variables_1 = require("@theia/core/lib/common/env-variables");
|
|
28
|
-
const uri_1 = require("@theia/core/lib/common/uri");
|
|
28
|
+
const uri_1 = tslib_1.__importDefault(require("@theia/core/lib/common/uri"));
|
|
29
29
|
const core_1 = require("@theia/core");
|
|
30
30
|
exports.WorkspaceHandlerContribution = Symbol('workspaceHandlerContribution');
|
|
31
31
|
let WorkspaceCliContribution = class WorkspaceCliContribution {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-workspace-server.js","sourceRoot":"","sources":["../../src/node/default-workspace-server.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,
|
|
1
|
+
{"version":3,"file":"default-workspace-server.js","sourceRoot":"","sources":["../../src/node/default-workspace-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +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
|
+
const tslib_1 = require("tslib");
|
|
18
19
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
19
20
|
const mock_env_variables_server_1 = require("@theia/core/lib/browser/test/mock-env-variables-server");
|
|
20
21
|
const env_variables_1 = require("@theia/core/lib/common/env-variables");
|
|
@@ -22,8 +23,8 @@ const node_1 = require("@theia/core/lib/node");
|
|
|
22
23
|
const common_1 = require("../common");
|
|
23
24
|
const default_workspace_server_1 = require("./default-workspace-server");
|
|
24
25
|
const chai_1 = require("chai");
|
|
25
|
-
const temp = require("temp");
|
|
26
|
-
const fs = require("fs");
|
|
26
|
+
const temp = tslib_1.__importStar(require("temp"));
|
|
27
|
+
const fs = tslib_1.__importStar(require("fs"));
|
|
27
28
|
const core_1 = require("@theia/core");
|
|
28
29
|
const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
|
|
29
30
|
describe('DefaultWorkspaceServer', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-workspace-server.spec.js","sourceRoot":"","sources":["../../src/node/default-workspace-server.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mDAAmD;AACnD,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":"default-workspace-server.spec.js","sourceRoot":"","sources":["../../src/node/default-workspace-server.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mDAAmD;AACnD,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,4DAA0E;AAC1E,sGAAoG;AACpG,wEAA0E;AAE1E,+CAA+C;AAC/C,sCAA2E;AAC3E,yEAA8J;AAC9J,+BAA8B;AAC9B,mDAA6B;AAC7B,+CAAyB;AACzB,sCAAgE;AAChE,yEAAqE;AAErE,QAAQ,CAAC,wBAAwB,EAAE;IAE/B,QAAQ,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACzC,IAAI,eAAuC,CAAC;QAC5C,IAAI,YAAiB,CAAC;QACtB,IAAI,mBAA2B,CAAC;QAEhC,UAAU,CAAC,GAAG,EAAE;YACZ,+BAA+B;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;YAC7C,YAAY,GAAG,cAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5D,mBAAmB,GAAG,cAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAEnF,gFAAgF;YAChF,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;gBAC/C,wBAAwB;gBACxB,IAAI,CAAC,cAAO,CAAC,CAAC,EAAE,CAAC,wBAAU,CAAC,CAAC;gBAE7B,IAAA,+BAAwB,EAAC,IAAI,EAAE,uDAA4B,CAAC,CAAC;gBAC7D,IAAI,CAAC,2DAAgC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBACnE,IAAI,CAAC,uDAA4B,CAAC,CAAC,SAAS,CAAC,2DAAgC,CAAC,CAAC;gBAC/E,IAAI,CAAC,mDAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBAC3D,IAAI,CAAC,iDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBACzD,IAAI,CAAC,6BAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBACvD,IAAI,CAAC,iCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBAC3D,IAAI,CAAC,kCAAkB,CAAC,CAAC,eAAe,CAAC,IAAI,sDAA0B,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChC,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,iDAAsB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK;YACvF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAC3D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK;YAC7E,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjD,WAAW,EAAE;oBACT,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;oBACvD,YAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,QAAQ,EAAE;iBAC9D;aACJ,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAE3D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK;YAC1E,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjD,WAAW,EAAE;oBACT,YAAY,CAAC,QAAQ,EAAE;oBACvB,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;iBAC1D;aACJ,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAE3D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK;YACvF,+FAA+F;YAC/F,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjD,WAAW,EAAE;oBACT,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;oBACzB,EAAE;oBACF,QAAQ;oBACR,SAAS;oBACT,YAAY,CAAC,QAAQ,EAAE;iBAC1B;aACJ,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAE3D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/workspace",
|
|
3
|
-
"version": "1.77.0-next.
|
|
3
|
+
"version": "1.77.0-next.71+2c7849bc5",
|
|
4
4
|
"description": "Theia - Workspace Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.77.0-next.
|
|
7
|
-
"@theia/filesystem": "1.77.0-next.
|
|
8
|
-
"@theia/variable-resolver": "1.77.0-next.
|
|
6
|
+
"@theia/core": "1.77.0-next.71+2c7849bc5",
|
|
7
|
+
"@theia/filesystem": "1.77.0-next.71+2c7849bc5",
|
|
8
|
+
"@theia/variable-resolver": "1.77.0-next.71+2c7849bc5",
|
|
9
9
|
"jsonc-parser": "^3.3.1",
|
|
10
10
|
"tslib": "^2.8.1",
|
|
11
11
|
"valid-filename": "^2.0.1"
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"nyc": {
|
|
56
56
|
"extends": "../../configs/nyc.json"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "2c7849bc57402bea84eed2fe2bcda4eedcedb2f4"
|
|
59
59
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { WorkspaceService } from '../workspace-service';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Turns a partial mock of the workspace service into one that falls back to the real
|
|
21
|
+
* `WorkspaceService` methods for anything it does not stub, such as the root naming that
|
|
22
|
+
* is computed from `tryGetRoots()`. The mock is modified in place and returned.
|
|
23
|
+
*/
|
|
24
|
+
export function withWorkspaceServiceDefaults(mock: object): WorkspaceService {
|
|
25
|
+
return Object.setPrototypeOf(mock, WorkspaceService.prototype);
|
|
26
|
+
}
|
|
@@ -404,7 +404,8 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi
|
|
|
404
404
|
title: WorkspaceCommands.OPEN_WORKSPACE.dialogLabel,
|
|
405
405
|
canSelectFiles: true,
|
|
406
406
|
canSelectFolders: false,
|
|
407
|
-
filters: this.getWorkspaceDialogFileFilters()
|
|
407
|
+
filters: this.getWorkspaceDialogFileFilters(),
|
|
408
|
+
disableAllFilesFilter: true
|
|
408
409
|
};
|
|
409
410
|
const [rootStat] = await this.workspaceService.roots;
|
|
410
411
|
const workspaceFileUri = await this.fileDialogService.showOpenDialog(props, rootStat);
|
|
@@ -432,7 +433,8 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi
|
|
|
432
433
|
do {
|
|
433
434
|
selected = await this.fileDialogService.showSaveDialog({
|
|
434
435
|
title: WorkspaceCommands.SAVE_WORKSPACE_AS.label!,
|
|
435
|
-
filters: this.getWorkspaceDialogFileFilters()
|
|
436
|
+
filters: this.getWorkspaceDialogFileFilters(),
|
|
437
|
+
disableAllFilesFilter: true
|
|
436
438
|
});
|
|
437
439
|
if (selected) {
|
|
438
440
|
const displayName = selected.displayName;
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
|
|
20
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
21
|
+
FrontendApplicationConfigProvider.set({});
|
|
22
|
+
|
|
23
|
+
import { expect } from 'chai';
|
|
24
|
+
import URI from '@theia/core/lib/common/uri';
|
|
25
|
+
import { OS } from '@theia/core/lib/common/os';
|
|
26
|
+
import { FileStat } from '@theia/filesystem/lib/common/files';
|
|
27
|
+
import { WorkspaceService } from './workspace-service';
|
|
28
|
+
|
|
29
|
+
disableJSDOM();
|
|
30
|
+
|
|
31
|
+
describe('WorkspaceService root names', () => {
|
|
32
|
+
|
|
33
|
+
let originalIsWindows: boolean;
|
|
34
|
+
before(() => {
|
|
35
|
+
disableJSDOM = enableJSDOM();
|
|
36
|
+
});
|
|
37
|
+
after(() => {
|
|
38
|
+
disableJSDOM();
|
|
39
|
+
});
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
// Paths outside the workspace are rendered with `Path.fsPath()`, which branches on the backend OS.
|
|
42
|
+
originalIsWindows = OS.backend.isWindows;
|
|
43
|
+
OS.backend.isWindows = false;
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
OS.backend.isWindows = originalIsWindows;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const workspaceWith = (...roots: string[]): WorkspaceService => Object.create(WorkspaceService.prototype, {
|
|
50
|
+
tryGetRoots: { value: () => roots.map(root => ({ resource: new URI(root), isDirectory: true })) }
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const namesOf = (service: WorkspaceService): Record<string, string> =>
|
|
54
|
+
Object.fromEntries(Array.from(service.getRootNames(), ([name, uri]) => [name, uri.toString()]));
|
|
55
|
+
|
|
56
|
+
describe('getRootNames', () => {
|
|
57
|
+
|
|
58
|
+
it('names each root after its basename', () => {
|
|
59
|
+
expect(namesOf(workspaceWith('file:///home/user/frontend', 'file:///home/user/backend'))).to.deep.equal({
|
|
60
|
+
frontend: 'file:///home/user/frontend',
|
|
61
|
+
backend: 'file:///home/user/backend'
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('names all roots sharing a basename by the shortest tail that tells them apart', () => {
|
|
66
|
+
expect(namesOf(workspaceWith('file:///bob/app', 'file:///alice/app', 'file:///home/other'))).to.deep.equal({
|
|
67
|
+
'bob/app': 'file:///bob/app',
|
|
68
|
+
'alice/app': 'file:///alice/app',
|
|
69
|
+
other: 'file:///home/other'
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('uses as many parent segments as needed', () => {
|
|
74
|
+
expect(namesOf(workspaceWith('file:///a/src/app', 'file:///b/src/app', 'file:///b/lib/app'))).to.deep.equal({
|
|
75
|
+
'a/src/app': 'file:///a/src/app',
|
|
76
|
+
'b/src/app': 'file:///b/src/app',
|
|
77
|
+
'lib/app': 'file:///b/lib/app'
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('names a root with a shorter path than its peer by its whole path', () => {
|
|
82
|
+
expect(namesOf(workspaceWith('file:///app', 'file:///x/app'))).to.deep.equal({
|
|
83
|
+
app: 'file:///app',
|
|
84
|
+
'x/app': 'file:///x/app'
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('qualifies a name that another root name starts with', () => {
|
|
89
|
+
expect(namesOf(workspaceWith('file:///work/alice', 'file:///home/alice/app', 'file:///home/bob/app'))).to.deep.equal({
|
|
90
|
+
'work/alice': 'file:///work/alice',
|
|
91
|
+
'alice/app': 'file:///home/alice/app',
|
|
92
|
+
'bob/app': 'file:///home/bob/app'
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('qualifies the longer name if the shorter one is a whole path', () => {
|
|
97
|
+
expect(namesOf(workspaceWith('file:///alice', 'file:///home/alice/app', 'file:///home/bob/app'))).to.deep.equal({
|
|
98
|
+
alice: 'file:///alice',
|
|
99
|
+
'home/alice/app': 'file:///home/alice/app',
|
|
100
|
+
'bob/app': 'file:///home/bob/app'
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('does not qualify a name that the name of a root nested in it starts with', () => {
|
|
105
|
+
expect(namesOf(workspaceWith('file:///ws/x', 'file:///ws/x/app', 'file:///other/app'))).to.deep.equal({
|
|
106
|
+
x: 'file:///ws/x',
|
|
107
|
+
'x/app': 'file:///ws/x/app',
|
|
108
|
+
'other/app': 'file:///other/app'
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('does not depend on the order of the roots', () => {
|
|
113
|
+
expect(namesOf(workspaceWith('file:///alice/app', 'file:///bob/app')))
|
|
114
|
+
.to.deep.equal(namesOf(workspaceWith('file:///bob/app', 'file:///alice/app')));
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('names a root listed twice once, after its basename', () => {
|
|
118
|
+
expect(namesOf(workspaceWith('file:///home/user/app', 'file:///home/user/app'))).to.deep.equal({
|
|
119
|
+
app: 'file:///home/user/app'
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('returns the same names until the roots change', async () => {
|
|
124
|
+
let roots = [FileStat.dir('file:///alice/app')];
|
|
125
|
+
const service = new WorkspaceService();
|
|
126
|
+
service['computeRoots'] = async () => roots;
|
|
127
|
+
await service['updateRoots']();
|
|
128
|
+
const names = service.getRootNames();
|
|
129
|
+
expect(service.getRootNames()).to.equal(names);
|
|
130
|
+
roots = [...roots, FileStat.dir('file:///bob/app')];
|
|
131
|
+
await service['updateRoots']();
|
|
132
|
+
expect(Array.from(service.getRootNames().keys())).to.deep.equal(['alice/app', 'bob/app']);
|
|
133
|
+
expect(service.getRootName(new URI('file:///bob/app'))).to.equal('bob/app');
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('falls back to the URI for roots with the same path', () => {
|
|
137
|
+
expect(namesOf(workspaceWith('file:///x/app', 'memfs:/x/app'))).to.deep.equal({
|
|
138
|
+
'file:///x/app': 'file:///x/app',
|
|
139
|
+
'memfs:/x/app': 'memfs:/x/app'
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
describe('getRootPrefixedPath', () => {
|
|
145
|
+
|
|
146
|
+
it('prefixes the path with the name of the root', () => {
|
|
147
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app');
|
|
148
|
+
expect(service.getRootPrefixedPath(new URI('file:///bob/app/src/index.ts'))).to.equal('bob/app/src/index.ts');
|
|
149
|
+
expect(service.getRootPrefixedPath(new URI('file:///bob/app'))).to.equal('bob/app');
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('uses the deepest root for nested roots', () => {
|
|
153
|
+
const service = workspaceWith('file:///ws/theia', 'file:///ws/theia/packages/core');
|
|
154
|
+
expect(service.getRootPrefixedPath(new URI('file:///ws/theia/packages/core/src/a.ts'))).to.equal('core/src/a.ts');
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('returns the absolute path for files outside the workspace', () => {
|
|
158
|
+
const service = workspaceWith('file:///ws/theia');
|
|
159
|
+
expect(service.getRootPrefixedPath(new URI('file:///tmp/a.ts'))).to.equal('/tmp/a.ts');
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
describe('resolveSupraRelativePath', () => {
|
|
164
|
+
|
|
165
|
+
const resolve = (service: WorkspaceService, path: string): string[] => service.resolveSupraRelativePath(path).map(uri => uri.toString());
|
|
166
|
+
|
|
167
|
+
it('resolves a path that starts with the basename of a root', () => {
|
|
168
|
+
const service = workspaceWith('file:///home/user/frontend', 'file:///home/user/backend');
|
|
169
|
+
expect(resolve(service, 'backend/src/index.ts')).to.deep.equal(['file:///home/user/backend/src/index.ts']);
|
|
170
|
+
expect(resolve(service, 'backend')).to.deep.equal(['file:///home/user/backend']);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it('resolves a path prefixed with more of the root path than its name', () => {
|
|
174
|
+
const service = workspaceWith('file:///alice/app');
|
|
175
|
+
expect(resolve(service, 'alice/app/src/index.ts')).to.deep.equal(['file:///alice/app/src/index.ts']);
|
|
176
|
+
expect(resolve(service, 'bob/app/src/index.ts')).to.deep.equal([]);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('resolves a basename shared by several roots in each of them', () => {
|
|
180
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app');
|
|
181
|
+
expect(resolve(service, 'app/src/index.ts')).to.deep.equal(['file:///alice/app/src/index.ts', 'file:///bob/app/src/index.ts']);
|
|
182
|
+
expect(resolve(service, 'bob/app/src/index.ts')).to.deep.equal(['file:///bob/app/src/index.ts']);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it('does not resolve absolute paths, paths leaving the root or paths without a root basename', () => {
|
|
186
|
+
const service = workspaceWith('file:///home/user/backend');
|
|
187
|
+
expect(resolve(service, '/home/user/backend/a.ts')).to.deep.equal([]);
|
|
188
|
+
expect(resolve(service, 'C:\\backend\\a.ts')).to.deep.equal([]);
|
|
189
|
+
expect(resolve(service, '../backend/a.ts')).to.deep.equal([]);
|
|
190
|
+
expect(resolve(service, 'src/index.ts')).to.deep.equal([]);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
describe('splitRootPrefixedPath', () => {
|
|
195
|
+
|
|
196
|
+
const split = (service: WorkspaceService, path: string): { rootName: string; rootUri: string; rest: string } | undefined => {
|
|
197
|
+
const result = service.splitRootPrefixedPath(path);
|
|
198
|
+
return result && { ...result, rootUri: result.rootUri.toString() };
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
it('splits off the longest matching root name and keeps the rest as it is', () => {
|
|
202
|
+
const service = workspaceWith('file:///ws/x', 'file:///ws/x/app', 'file:///other/app');
|
|
203
|
+
expect(split(service, 'x/app/src/**/\\*.ts')).to.deep.equal({ rootName: 'x/app', rootUri: 'file:///ws/x/app', rest: 'src/**/\\*.ts' });
|
|
204
|
+
expect(split(service, 'x/lib/{a,b}.ts')).to.deep.equal({ rootName: 'x', rootUri: 'file:///ws/x', rest: 'lib/{a,b}.ts' });
|
|
205
|
+
expect(split(service, 'other/app')).to.deep.equal({ rootName: 'other/app', rootUri: 'file:///other/app', rest: '' });
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
it('does not split a path without a root name', () => {
|
|
209
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app');
|
|
210
|
+
expect(split(service, 'app/src/index.ts')).to.be.undefined;
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
describe('resolveRootPrefixedPath', () => {
|
|
215
|
+
|
|
216
|
+
const resolve = (service: WorkspaceService, path: string): string | undefined => service.resolveRootPrefixedPath(path)?.toString();
|
|
217
|
+
|
|
218
|
+
it('resolves a path relative to the named root', () => {
|
|
219
|
+
const service = workspaceWith('file:///home/user/frontend', 'file:///home/user/backend');
|
|
220
|
+
expect(resolve(service, 'backend/src/index.ts')).to.equal('file:///home/user/backend/src/index.ts');
|
|
221
|
+
expect(resolve(service, 'backend')).to.equal('file:///home/user/backend');
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it('resolves parent-qualified root names', () => {
|
|
225
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app');
|
|
226
|
+
expect(resolve(service, 'bob/app/src/index.ts')).to.equal('file:///bob/app/src/index.ts');
|
|
227
|
+
expect(resolve(service, 'alice/app')).to.equal('file:///alice/app');
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
it('does not resolve a basename shared by several roots', () => {
|
|
231
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app');
|
|
232
|
+
expect(resolve(service, 'app/src/index.ts')).to.be.undefined;
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it('prefers the longest matching root name', () => {
|
|
236
|
+
const service = workspaceWith('file:///ws/x', 'file:///ws/x/app', 'file:///other/app');
|
|
237
|
+
expect(resolve(service, 'x/app/src/index.ts')).to.equal('file:///ws/x/app/src/index.ts');
|
|
238
|
+
expect(resolve(service, 'x/lib/index.ts')).to.equal('file:///ws/x/lib/index.ts');
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
it('accepts backslashes and redundant segments', () => {
|
|
242
|
+
const service = workspaceWith('file:///home/user/backend');
|
|
243
|
+
expect(resolve(service, 'backend\\src\\index.ts')).to.equal('file:///home/user/backend/src/index.ts');
|
|
244
|
+
expect(resolve(service, './backend/src/../lib/a.ts')).to.equal('file:///home/user/backend/lib/a.ts');
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it('does not resolve absolute paths, URIs or paths leaving the root', () => {
|
|
248
|
+
const service = workspaceWith('file:///home/user/backend');
|
|
249
|
+
expect(resolve(service, '/home/user/backend/a.ts')).to.be.undefined;
|
|
250
|
+
expect(resolve(service, 'C:\\backend\\a.ts')).to.be.undefined;
|
|
251
|
+
expect(resolve(service, 'file:///home/user/backend/a.ts')).to.be.undefined;
|
|
252
|
+
expect(resolve(service, 'backend/../../etc/passwd')).to.be.undefined;
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('does not resolve paths without a root name', () => {
|
|
256
|
+
const service = workspaceWith('file:///home/user/backend');
|
|
257
|
+
expect(resolve(service, 'src/index.ts')).to.be.undefined;
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
it('is the inverse of getRootPrefixedPath', () => {
|
|
261
|
+
const service = workspaceWith('file:///alice/app', 'file:///bob/app', 'file:///ws/theia', 'file:///ws/theia/packages/core');
|
|
262
|
+
for (const file of ['file:///alice/app/a.ts', 'file:///bob/app/a.ts', 'file:///ws/theia/b.ts', 'file:///ws/theia/packages/core/c.ts']) {
|
|
263
|
+
expect(resolve(service, service.getRootPrefixedPath(new URI(file)))).to.equal(file);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it('is the inverse of getRootPrefixedPath for a root with a folder named like another root', () => {
|
|
268
|
+
const service = workspaceWith('file:///work/alice', 'file:///home/alice/app', 'file:///home/bob/app');
|
|
269
|
+
for (const file of ['file:///work/alice/app/x.ts', 'file:///home/alice/app/x.ts']) {
|
|
270
|
+
expect(resolve(service, service.getRootPrefixedPath(new URI(file)))).to.equal(file);
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
});
|