@theia/core 1.74.0-next.5 → 1.74.0-next.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +4 -4
  2. package/lib/browser/catalog.json +300 -36
  3. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  4. package/lib/browser/common-frontend-contribution.js +1 -2
  5. package/lib/browser/common-frontend-contribution.js.map +1 -1
  6. package/lib/browser/keybinding.d.ts.map +1 -1
  7. package/lib/browser/keybinding.js +12 -7
  8. package/lib/browser/keybinding.js.map +1 -1
  9. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  10. package/lib/browser/preferences/preference-contribution.js +9 -1
  11. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  12. package/lib/browser/preferences/preference-service.spec.js +63 -0
  13. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  14. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  15. package/lib/browser/shell/application-shell.js +19 -26
  16. package/lib/browser/shell/application-shell.js.map +1 -1
  17. package/lib/browser/tree/tree-widget.d.ts +7 -33
  18. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  19. package/lib/browser/tree/tree-widget.js +7 -54
  20. package/lib/browser/tree/tree-widget.js.map +1 -1
  21. package/lib/browser/widgets/select-component.d.ts +2 -2
  22. package/lib/browser/widgets/select-component.d.ts.map +1 -1
  23. package/lib/browser/widgets/select-component.js +42 -12
  24. package/lib/browser/widgets/select-component.js.map +1 -1
  25. package/lib/common/preferences/index.d.ts +1 -0
  26. package/lib/common/preferences/index.d.ts.map +1 -1
  27. package/lib/common/preferences/index.js +1 -0
  28. package/lib/common/preferences/index.js.map +1 -1
  29. package/lib/common/preferences/preference-scope.d.ts +6 -1
  30. package/lib/common/preferences/preference-scope.d.ts.map +1 -1
  31. package/lib/common/preferences/preference-scope.js +5 -0
  32. package/lib/common/preferences/preference-scope.js.map +1 -1
  33. package/lib/common/preferences/preference-scope.spec.js +5 -3
  34. package/lib/common/preferences/preference-scope.spec.js.map +1 -1
  35. package/lib/common/preferences/preference-service.d.ts +19 -0
  36. package/lib/common/preferences/preference-service.d.ts.map +1 -1
  37. package/lib/common/preferences/preference-service.js +34 -5
  38. package/lib/common/preferences/preference-service.js.map +1 -1
  39. package/lib/common/preferences/session-preference-provider.d.ts +17 -0
  40. package/lib/common/preferences/session-preference-provider.d.ts.map +1 -0
  41. package/lib/common/preferences/session-preference-provider.js +77 -0
  42. package/lib/common/preferences/session-preference-provider.js.map +1 -0
  43. package/lib/common/preferences/session-preference-provider.spec.d.ts +2 -0
  44. package/lib/common/preferences/session-preference-provider.spec.d.ts.map +1 -0
  45. package/lib/common/preferences/session-preference-provider.spec.js +71 -0
  46. package/lib/common/preferences/session-preference-provider.spec.js.map +1 -0
  47. package/lib/electron-node/hosting/electron-backend-hosting-module.d.ts.map +1 -1
  48. package/lib/electron-node/hosting/electron-backend-hosting-module.js +7 -0
  49. package/lib/electron-node/hosting/electron-backend-hosting-module.js.map +1 -1
  50. package/lib/electron-node/hosting/electron-backend-hosting-module.spec.d.ts +2 -0
  51. package/lib/electron-node/hosting/electron-backend-hosting-module.spec.d.ts.map +1 -0
  52. package/lib/electron-node/hosting/electron-backend-hosting-module.spec.js +39 -0
  53. package/lib/electron-node/hosting/electron-backend-hosting-module.spec.js.map +1 -0
  54. package/lib/node/hosting/backend-hosting-module.d.ts.map +1 -1
  55. package/lib/node/hosting/backend-hosting-module.js +4 -1
  56. package/lib/node/hosting/backend-hosting-module.js.map +1 -1
  57. package/lib/node/hosting/browser-connection-token.d.ts +29 -1
  58. package/lib/node/hosting/browser-connection-token.d.ts.map +1 -1
  59. package/lib/node/hosting/browser-connection-token.js +25 -1
  60. package/lib/node/hosting/browser-connection-token.js.map +1 -1
  61. package/lib/node/hosting/browser-connection-token.spec.js +70 -0
  62. package/lib/node/hosting/browser-connection-token.spec.js.map +1 -1
  63. package/lib/node/index.d.ts +1 -0
  64. package/lib/node/index.d.ts.map +1 -1
  65. package/lib/node/index.js +3 -1
  66. package/lib/node/index.js.map +1 -1
  67. package/package.json +9 -9
  68. package/src/browser/common-frontend-contribution.ts +1 -2
  69. package/src/browser/keybinding.ts +12 -7
  70. package/src/browser/preferences/preference-contribution.ts +9 -1
  71. package/src/browser/preferences/preference-service.spec.ts +72 -0
  72. package/src/browser/shell/application-shell.ts +19 -25
  73. package/src/browser/style/select-component.css +16 -0
  74. package/src/browser/style/sidepanel.css +5 -0
  75. package/src/browser/style/status-bar.css +1 -1
  76. package/src/browser/tree/tree-widget.tsx +12 -78
  77. package/src/browser/widgets/select-component.tsx +41 -12
  78. package/src/common/preferences/index.ts +1 -0
  79. package/src/common/preferences/preference-scope.spec.ts +5 -3
  80. package/src/common/preferences/preference-scope.ts +6 -1
  81. package/src/common/preferences/preference-service.ts +39 -5
  82. package/src/common/preferences/session-preference-provider.spec.ts +78 -0
  83. package/src/common/preferences/session-preference-provider.ts +69 -0
  84. package/src/electron-node/hosting/electron-backend-hosting-module.spec.ts +42 -0
  85. package/src/electron-node/hosting/electron-backend-hosting-module.ts +8 -0
  86. package/src/node/hosting/backend-hosting-module.ts +5 -2
  87. package/src/node/hosting/browser-connection-token.spec.ts +92 -0
  88. package/src/node/hosting/browser-connection-token.ts +45 -1
  89. package/src/node/index.ts +1 -0
@@ -16,6 +16,7 @@
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const chai_1 = require("chai");
19
+ const common_1 = require("../../common");
19
20
  const browser_connection_token_1 = require("./browser-connection-token");
20
21
  describe('BrowserConnectionToken', () => {
21
22
  it('should generate unique tokens', () => {
@@ -124,5 +125,74 @@ describe('BrowserConnectionTokenBackendContribution', () => {
124
125
  (0, chai_1.expect)(result.cookieCalls[0].value).to.equal(token.value);
125
126
  });
126
127
  });
128
+ describe('validateRequest (HTTP token enforcement)', () => {
129
+ function callValidate(cookieValue) {
130
+ const contribution = createContribution();
131
+ const result = { nextCalled: false };
132
+ const req = { headers: {} };
133
+ if (cookieValue !== undefined) {
134
+ req.headers.cookie = `${browser_connection_token_1.BROWSER_TOKEN_COOKIE_NAME}=${cookieValue}`;
135
+ }
136
+ const res = {
137
+ sendStatus: (status) => { result.sentStatus = status; }
138
+ };
139
+ const next = () => { result.nextCalled = true; };
140
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
141
+ contribution.validateRequest(req, res, next);
142
+ return result;
143
+ }
144
+ it('should allow request with valid token cookie', () => {
145
+ const result = callValidate(token.value);
146
+ (0, chai_1.expect)(result.nextCalled).to.be.true;
147
+ (0, chai_1.expect)(result.sentStatus).to.be.undefined;
148
+ });
149
+ it('should reject request with no cookie', () => {
150
+ const result = callValidate();
151
+ (0, chai_1.expect)(result.nextCalled).to.be.false;
152
+ (0, chai_1.expect)(result.sentStatus).to.equal(403);
153
+ });
154
+ it('should reject request with invalid token', () => {
155
+ const result = callValidate('wrong-token');
156
+ (0, chai_1.expect)(result.nextCalled).to.be.false;
157
+ (0, chai_1.expect)(result.sentStatus).to.equal(403);
158
+ });
159
+ it('should reject request with stale token from previous server', () => {
160
+ const staleToken = (0, browser_connection_token_1.createBrowserConnectionToken)().value;
161
+ const result = callValidate(staleToken);
162
+ (0, chai_1.expect)(result.nextCalled).to.be.false;
163
+ (0, chai_1.expect)(result.sentStatus).to.equal(403);
164
+ });
165
+ it('should reject request with empty token', () => {
166
+ const result = callValidate('');
167
+ (0, chai_1.expect)(result.nextCalled).to.be.false;
168
+ (0, chai_1.expect)(result.sentStatus).to.equal(403);
169
+ });
170
+ });
171
+ describe('Electron deployment (no-op)', () => {
172
+ let originalIsElectron;
173
+ beforeEach(() => {
174
+ originalIsElectron = common_1.environment.electron.is;
175
+ common_1.environment.electron.is = () => true;
176
+ });
177
+ afterEach(() => {
178
+ common_1.environment.electron.is = originalIsElectron;
179
+ });
180
+ it('validateRequest should call next() without a cookie', () => {
181
+ const contribution = createContribution();
182
+ let nextCalled = false;
183
+ let sentStatus;
184
+ const req = { headers: {} };
185
+ const res = { sendStatus: (status) => { sentStatus = status; } };
186
+ const next = () => { nextCalled = true; };
187
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
188
+ contribution.validateRequest(req, res, next);
189
+ (0, chai_1.expect)(nextCalled).to.be.true;
190
+ (0, chai_1.expect)(sentStatus).to.be.undefined;
191
+ });
192
+ it('allowWsUpgrade should return true without a cookie', () => {
193
+ const contribution = createContribution();
194
+ (0, chai_1.expect)(contribution.allowWsUpgrade(createRequest())).to.be.true;
195
+ });
196
+ });
127
197
  });
128
198
  //# sourceMappingURL=browser-connection-token.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-connection-token.spec.js","sourceRoot":"","sources":["../../../src/node/hosting/browser-connection-token.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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,+BAA8B;AAE9B,yEAKoC;AAEpC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAEpC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,IAAA,uDAA4B,GAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,uDAA4B,GAAE,CAAC;QAC9C,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAA,uDAA4B,GAAE,CAAC;QAC7C,IAAA,aAAM,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IAEvD,MAAM,KAAK,GAA2B,IAAA,uDAA4B,GAAE,CAAC;IAErE,SAAS,kBAAkB;QACvB,MAAM,YAAY,GAAG,IAAI,oEAAyC,EAAE,CAAC;QACrE,8DAA8D;QAC7D,YAAoB,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC;QACxD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,SAAS,aAAa,CAAC,WAAoB;QACvC,MAAM,OAAO,GAAG;YACZ,OAAO,EAAE,EAA8B;SAClB,CAAC;QAC1B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,oDAAyB,IAAI,WAAW,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAEnD,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAC9C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YAClD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACrE,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAA,uDAA4B,GAAE,CAAC,KAAK,CAAC;YACxD,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG;gBACZ,OAAO,EAAE;oBACL,MAAM,EAAE,qBAAqB,oDAAyB,IAAI,KAAK,CAAC,KAAK,eAAe;iBAC3D;aACR,CAAC;YAC1B,IAAA,aAAM,EAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAalD,SAAS,cAAc,CAAC,WAAoB;YACxC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAiB,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAEpE,MAAM,GAAG,GAAG;gBACR,OAAO,EAAE,EAAwC;gBACjD,MAAM,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE;aACzC,CAAC;YACF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,oDAAyB,IAAI,WAAW,EAAE,CAAC;YACvE,CAAC;YAED,MAAM,GAAG,GAAG;gBACR,MAAM,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,OAAgC,EAAE,EAAE;oBACtE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtD,CAAC;aACJ,CAAC;YAEF,MAAM,IAAI,GAAG,GAAS,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvD,8DAA8D;YAC7D,YAAoB,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YAClE,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;YAChC,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACrC,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oDAAyB,CAAC,CAAC;YACvE,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACpE,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3C,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACjC,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAA,aAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACpE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACrC,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACrD,MAAM,MAAM,GAAG,cAAc,CAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAA,aAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACrC,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"browser-connection-token.spec.js","sourceRoot":"","sources":["../../../src/node/hosting/browser-connection-token.spec.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export * from './cli';
7
7
  export * from './setting-service';
8
8
  export { FileSystemLocking } from './filesystem-locking';
9
9
  export { BackendRequestAllowedContribution } from './request/backend-request-facade';
10
+ export { HttpConnectionValidator } from './hosting/browser-connection-token';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC"}
package/lib/node/index.js CHANGED
@@ -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.BackendRequestAllowedContribution = exports.FileSystemLocking = void 0;
18
+ exports.HttpConnectionValidator = exports.BackendRequestAllowedContribution = exports.FileSystemLocking = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  tslib_1.__exportStar(require("./backend-application"), exports);
21
21
  tslib_1.__exportStar(require("./backend-global"), exports);
@@ -28,4 +28,6 @@ var filesystem_locking_1 = require("./filesystem-locking");
28
28
  Object.defineProperty(exports, "FileSystemLocking", { enumerable: true, get: function () { return filesystem_locking_1.FileSystemLocking; } });
29
29
  var backend_request_facade_1 = require("./request/backend-request-facade");
30
30
  Object.defineProperty(exports, "BackendRequestAllowedContribution", { enumerable: true, get: function () { return backend_request_facade_1.BackendRequestAllowedContribution; } });
31
+ var browser_connection_token_1 = require("./hosting/browser-connection-token");
32
+ Object.defineProperty(exports, "HttpConnectionValidator", { enumerable: true, get: function () { return browser_connection_token_1.HttpConnectionValidator; } });
31
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.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,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2EAAqF;AAA5E,2IAAA,iCAAiC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.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,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2EAAqF;AAA5E,2IAAA,iCAAiC,OAAA;AAC1C,+EAA6E;AAApE,mIAAA,uBAAuB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.74.0-next.5+afc1eefc5",
3
+ "version": "1.74.0-next.53+8e4e53136c6",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  "@lumino/virtualdom": "^2.0.4",
18
18
  "@lumino/widgets": "2.7.5",
19
19
  "@parcel/watcher": "^2.5.6",
20
- "@theia/application-package": "1.74.0-next.5+afc1eefc5",
21
- "@theia/request": "1.74.0-next.5+afc1eefc5",
20
+ "@theia/application-package": "1.74.0-next.53+8e4e53136c6",
21
+ "@theia/request": "1.74.0-next.53+8e4e53136c6",
22
22
  "@types/body-parser": "^1.19.6",
23
23
  "@types/express": "^4.17.25",
24
24
  "@types/fs-extra": "^4.0.15",
@@ -35,7 +35,7 @@
35
35
  "async-mutex": "^0.4.1",
36
36
  "body-parser": "^1.20.5",
37
37
  "cookie": "^1.1.1",
38
- "dompurify": "^3.4.7",
38
+ "dompurify": "^3.4.11",
39
39
  "drivelist": "^12.0.2",
40
40
  "express": "^4.22.2",
41
41
  "fast-json-stable-stringify": "^2.1.0",
@@ -51,10 +51,10 @@
51
51
  "keytar": "7.9.0",
52
52
  "lodash.debounce": "^4.0.8",
53
53
  "lodash.throttle": "^4.1.1",
54
- "markdown-it": "^14.2.0",
54
+ "markdown-it": "^14.3.0",
55
55
  "markdown-it-anchor": "^9.2.0",
56
56
  "markdown-it-emoji": "^3.0.0",
57
- "msgpackr": "^1.11.12",
57
+ "msgpackr": "^1.12.1",
58
58
  "p-debounce": "^2.1.0",
59
59
  "perfect-scrollbar": "1.5.5",
60
60
  "react-tooltip": "^4.5.1",
@@ -69,7 +69,7 @@
69
69
  "vscode-languageserver-protocol": "3.17.5",
70
70
  "vscode-uri": "3.0.8",
71
71
  "ws": "^8.21.0",
72
- "yargs": "^17.7.2"
72
+ "yargs": "^17.7.3"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "@theia/electron": "*",
@@ -220,7 +220,7 @@
220
220
  "devDependencies": {
221
221
  "@theia/ext-scripts": "1.73.0",
222
222
  "@theia/re-exports": "1.73.0",
223
- "@types/react": "^18.3.28",
223
+ "@types/react": "^18.3.31",
224
224
  "@types/react-dom": "^18.3.7",
225
225
  "minimist": "^1.2.8",
226
226
  "nodejs-file-downloader": "4.13.0",
@@ -230,5 +230,5 @@
230
230
  "nyc": {
231
231
  "extends": "../../configs/nyc.json"
232
232
  },
233
- "gitHead": "afc1eefc56e9b67b67e13f4d71b35162d5f126ea"
233
+ "gitHead": "8e4e53136c69cec1ef61747c7269f9a935b76574"
234
234
  }
@@ -680,7 +680,6 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
680
680
  }
681
681
  });
682
682
  commandRegistry.registerCommand(CommonCommands.TOGGLE_BOTTOM_PANEL, {
683
- isEnabled: () => this.shell.getWidgets('bottom').length > 0,
684
683
  execute: () => {
685
684
  if (this.shell.isExpanded('bottom')) {
686
685
  this.shell.collapsePanel('bottom');
@@ -1393,7 +1392,7 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
1393
1392
  // list.focusBackground, list.focusForeground, list.inactiveFocusBackground, list.filterMatchBorder,
1394
1393
  // list.dropBackground, listFilterWidget.outline, listFilterWidget.noMatchesOutline
1395
1394
  // list.invalidItemForeground => tree node needs an respective class
1396
- { id: 'list.activeSelectionBackground', defaults: { dark: '#094771', light: '#0074E8', hcLight: Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' },
1395
+ { id: 'list.activeSelectionBackground', defaults: { dark: '#094771', light: '#E8E8E8', hcLight: Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' },
1397
1396
  { id: 'list.activeSelectionForeground', defaults: { dark: '#FFF', light: '#FFF' }, description: 'List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' },
1398
1397
  { id: 'list.inactiveSelectionBackground', defaults: { dark: '#37373D', light: '#E4E6F1', hcLight: Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' },
1399
1398
  { id: 'list.inactiveSelectionForeground', description: 'List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' },
@@ -610,11 +610,10 @@ export class KeybindingRegistry {
610
610
  }
611
611
 
612
612
  registerEventListeners(win: Window): Disposable {
613
- /* vvv HOTFIX begin vvv
614
- *
615
- * This is a hotfix against issues eclipse/theia#6459 and gitpod-io/gitpod#875 .
616
- * It should be reverted after Theia was updated to the newer Monaco.
617
- */
613
+ // IME composition tracking for the textarea-based editor input path,
614
+ // where compositionstart/compositionend bubble through the DOM.
615
+ // (For the native EditContext path, these events never reach the DOM;
616
+ // the keydown handler below uses additional checks for that case.)
618
617
  let inComposition = false;
619
618
  const compositionStart = () => {
620
619
  inComposition = true;
@@ -627,9 +626,15 @@ export class KeybindingRegistry {
627
626
  win.document.addEventListener('compositionend', compositionEnd);
628
627
 
629
628
  const keydown = (event: KeyboardEvent) => {
630
- if (inComposition !== true) {
631
- this.run(event);
629
+ // Skip IME-related keydowns. `inComposition` covers the textarea input path;
630
+ // `isComposing` and `keyCode === 229` cover the native EditContext path where
631
+ // composition events don't reach the DOM. The keyCode check catches keys that
632
+ // finalize a composition (e.g. arrow keys) where isComposing is already false.
633
+ // eslint-disable-next-line deprecation/deprecation
634
+ if (inComposition || event.isComposing || event.keyCode === 229) {
635
+ return;
632
636
  }
637
+ this.run(event);
633
638
  };
634
639
  win.document.addEventListener('keydown', keydown, true);
635
640
 
@@ -22,16 +22,24 @@ import { isObject } from '../../common/types';
22
22
  import { PreferenceSchemaServiceImpl } from '../../common/preferences/preference-schema-service';
23
23
  import { PreferenceContribution, PreferenceSchemaService } from '../../common/preferences/preference-schema';
24
24
  import { DefaultsPreferenceProvider } from '../../common/preferences/defaults-preference-provider';
25
+ import { SessionPreferenceProvider } from '../../common/preferences/session-preference-provider';
25
26
  import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
26
27
  import { FrontendConfigPreferenceContribution } from './frontend-config-preference-contributions';
27
28
  import { bindPreferenceConfigurations } from '../../common/preferences/preference-configurations';
28
29
 
29
30
  export function bindPreferenceSchemaProvider(bind: interfaces.Bind): void {
30
31
  bindPreferenceConfigurations(bind);
31
- bind(ValidPreferenceScopes).toConstantValue([PreferenceScope.Default, PreferenceScope.User, PreferenceScope.Workspace, PreferenceScope.Folder]);
32
+ bind(ValidPreferenceScopes).toConstantValue([
33
+ PreferenceScope.Default,
34
+ PreferenceScope.User,
35
+ PreferenceScope.Workspace,
36
+ PreferenceScope.Folder,
37
+ PreferenceScope.Session
38
+ ]);
32
39
  bind(PreferenceSchemaServiceImpl).toSelf().inSingletonScope();
33
40
  bind(PreferenceSchemaService).toService(PreferenceSchemaServiceImpl);
34
41
  bind(PreferenceProvider).to(DefaultsPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Default);
42
+ bind(PreferenceProvider).to(SessionPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Session);
35
43
  bind(PreferenceLanguageOverrideService).toSelf().inSingletonScope();
36
44
  bindRootContributionProvider(bind, PreferenceContribution);
37
45
  bind(PreferenceContribution).to(FrontendConfigPreferenceContribution).inSingletonScope();
@@ -262,6 +262,7 @@ describe('Preference Service', () => {
262
262
  globalValue,
263
263
  workspaceValue,
264
264
  workspaceFolderValue,
265
+ sessionValue: undefined,
265
266
  value,
266
267
  };
267
268
  const inspection = preferences.inspect(TAB_SIZE, DUMMY_URI);
@@ -374,6 +375,7 @@ describe('Preference Service', () => {
374
375
  globalValue: undefined,
375
376
  workspaceValue: undefined,
376
377
  workspaceFolderValue: undefined,
378
+ sessionValue: undefined,
377
379
  value: 4,
378
380
  };
379
381
  assert.deepStrictEqual(expected, preferences.inspect('editor.tabSize'));
@@ -397,6 +399,7 @@ describe('Preference Service', () => {
397
399
  globalValue: 2,
398
400
  workspaceValue: undefined,
399
401
  workspaceFolderValue: undefined,
402
+ sessionValue: undefined,
400
403
  value: 2
401
404
  };
402
405
  preferences.set('editor.tabSize', 2, PreferenceScope.User);
@@ -422,6 +425,7 @@ describe('Preference Service', () => {
422
425
  globalValue: undefined,
423
426
  workspaceValue: undefined,
424
427
  workspaceFolderValue: undefined,
428
+ sessionValue: undefined,
425
429
  value: 4
426
430
  };
427
431
  assert.deepStrictEqual(expected, preferences.inspect('editor.tabSize'));
@@ -537,4 +541,72 @@ describe('Preference Service', () => {
537
541
  });
538
542
  });
539
543
 
544
+ describe('session-scope overrides', () => {
545
+ function getSessionProvider(): PreferenceProvider {
546
+ return testContainer.getNamed<PreferenceProvider>(PreferenceProvider, PreferenceScope.Session);
547
+ }
548
+
549
+ beforeEach(() => {
550
+ prefSchema.addSchema({
551
+ scope: PreferenceScope.Folder,
552
+ properties: {
553
+ 'test.session': { type: 'number' }
554
+ }
555
+ });
556
+ });
557
+
558
+ it('takes precedence over the user scope', async () => {
559
+ getProvider(PreferenceScope.User).setPreference('test.session', 1);
560
+ await prefService.set('test.session', 99, PreferenceScope.Session);
561
+ expect(prefService.get('test.session')).equals(99);
562
+ });
563
+
564
+ it('is dropped when the same key is written to a persistent scope', async () => {
565
+ const sessionProvider = getSessionProvider();
566
+ getProvider(PreferenceScope.User).setPreference('test.session', 1);
567
+ await prefService.set('test.session', 99, PreferenceScope.Session);
568
+ expect(prefService.get('test.session')).equals(99);
569
+
570
+ // An explicit user edit must win over the session override and clear it.
571
+ await prefService.set('test.session', 2, PreferenceScope.User);
572
+ expect(sessionProvider.get('test.session')).to.equal(undefined);
573
+ expect(prefService.get('test.session')).equals(2);
574
+ });
575
+
576
+ it('is reported via inspect().sessionValue', async () => {
577
+ await prefService.set('test.session', 42, PreferenceScope.Session);
578
+ expect(prefService.inspect('test.session')?.sessionValue).equals(42);
579
+ });
580
+
581
+ it('emits a Session-scope change event when evicted by a persistent write', async () => {
582
+ // Status bar listeners rely on this: an eviction must surface as an
583
+ // onPreferenceChanged event whose `scope` is Session, otherwise the
584
+ // status bar would never clear after the override is dropped.
585
+ await prefService.set('test.session', 99, PreferenceScope.Session);
586
+
587
+ const sessionScopeEvents: PreferenceScope[] = [];
588
+ const listener = prefService.onPreferenceChanged(e => {
589
+ if (e.preferenceName === 'test.session') {
590
+ sessionScopeEvents.push(e.scope);
591
+ }
592
+ });
593
+ try {
594
+ await prefService.set('test.session', 2, PreferenceScope.User);
595
+ } finally {
596
+ listener.dispose();
597
+ }
598
+
599
+ expect(sessionScopeEvents).to.include(PreferenceScope.Session);
600
+ });
601
+
602
+ it('is left alone when writing to the Session scope itself', async () => {
603
+ const sessionProvider = getSessionProvider();
604
+ await prefService.set('test.session', 7, PreferenceScope.Session);
605
+ expect(sessionProvider.get('test.session')).to.equal(7);
606
+ // A second write to Session must not trigger eviction of itself.
607
+ await prefService.set('test.session', 8, PreferenceScope.Session);
608
+ expect(sessionProvider.get('test.session')).to.equal(8);
609
+ });
610
+ });
611
+
540
612
  });
@@ -355,6 +355,7 @@ export class ApplicationShell extends Widget {
355
355
  });
356
356
  }
357
357
  });
358
+ this.refreshBottomPanelToggleButton();
358
359
  this.initializedDeferred.resolve();
359
360
  }
360
361
 
@@ -689,14 +690,10 @@ export class ApplicationShell extends Widget {
689
690
  spacing: 0
690
691
  }, area => this.doToggleMaximized(area));
691
692
  dockPanel.id = BOTTOM_AREA_ID;
692
- dockPanel.widgetAdded.connect((sender, widget) => {
693
- this.refreshBottomPanelToggleButton();
694
- });
695
693
  dockPanel.widgetRemoved.connect((sender, widget) => {
696
694
  if (sender.isEmpty) {
697
695
  this.collapseBottomPanel();
698
696
  }
699
- this.refreshBottomPanelToggleButton();
700
697
  }, this);
701
698
  dockPanel.node.addEventListener('lm-dragenter', event => {
702
699
  // Make sure that the main panel hides its overlay when the bottom panel is expanded
@@ -887,7 +884,6 @@ export class ApplicationShell extends Widget {
887
884
  }
888
885
  });
889
886
  }
890
- this.refreshBottomPanelToggleButton();
891
887
  }
892
888
  // Proceed with the main panel once all others are set up
893
889
  await this.bottomPanelState.pendingUpdate;
@@ -1570,9 +1566,11 @@ export class ApplicationShell extends Widget {
1570
1566
  let size: number | undefined;
1571
1567
  if (bottomPanel.isEmpty) {
1572
1568
  bottomPanel.node.style.minHeight = '0';
1573
- size = this.options.bottomPanel.emptySize;
1574
- } else if (this.bottomPanelState.lastPanelSize) {
1569
+ }
1570
+ if (this.bottomPanelState.lastPanelSize) {
1575
1571
  size = this.bottomPanelState.lastPanelSize;
1572
+ } else if (bottomPanel.isEmpty) {
1573
+ size = this.options.bottomPanel.emptySize;
1576
1574
  } else {
1577
1575
  size = this.getDefaultBottomPanelSize();
1578
1576
  }
@@ -1631,24 +1629,20 @@ export class ApplicationShell extends Widget {
1631
1629
  * and refers to the command `core.toggle.bottom.panel`.
1632
1630
  */
1633
1631
  protected refreshBottomPanelToggleButton(): void {
1634
- if (this.bottomPanel.isEmpty) {
1635
- this.statusBar.removeElement(BOTTOM_PANEL_TOGGLE_ID);
1636
- } else {
1637
- const label = nls.localize('theia/core/common/collapseBottomPanel', 'Toggle Bottom Panel');
1638
- const element: StatusBarEntry = {
1639
- name: label,
1640
- text: '$(codicon-window)',
1641
- alignment: StatusBarAlignment.RIGHT,
1642
- tooltip: label,
1643
- command: 'core.toggle.bottom.panel',
1644
- accessibilityInformation: {
1645
- label: label,
1646
- role: 'button'
1647
- },
1648
- priority: -1000
1649
- };
1650
- this.statusBar.setElement(BOTTOM_PANEL_TOGGLE_ID, element);
1651
- }
1632
+ const label = nls.localize('theia/core/common/collapseBottomPanel', 'Toggle Bottom Panel');
1633
+ const element: StatusBarEntry = {
1634
+ name: label,
1635
+ text: '$(codicon-window)',
1636
+ alignment: StatusBarAlignment.RIGHT,
1637
+ tooltip: label,
1638
+ command: 'core.toggle.bottom.panel',
1639
+ accessibilityInformation: {
1640
+ label: label,
1641
+ role: 'button'
1642
+ },
1643
+ priority: -1000
1644
+ };
1645
+ this.statusBar.setElement(BOTTOM_PANEL_TOGGLE_ID, element);
1652
1646
  }
1653
1647
 
1654
1648
  /**
@@ -99,6 +99,22 @@
99
99
  background: var(--theia-list-activeSelectionBackground);
100
100
  }
101
101
 
102
+ .theia-select-component-dropdown .theia-select-component-option.disabled,
103
+ .theia-select-component-dropdown .theia-select-component-option.disabled .theia-select-component-option-detail {
104
+ color: var(--theia-disabledForeground);
105
+ cursor: default;
106
+ }
107
+
108
+ .theia-select-component-dropdown .theia-select-component-option.disabled .theia-select-component-option-value {
109
+ text-decoration: line-through;
110
+ }
111
+
112
+ /* Keep a hovered/selected disabled option readable against the active-selection background. */
113
+ .theia-select-component-dropdown .theia-select-component-option.disabled.selected,
114
+ .theia-select-component-dropdown .theia-select-component-option.disabled.selected .theia-select-component-option-detail {
115
+ color: var(--theia-list-activeSelectionForeground);
116
+ }
117
+
102
118
  .theia-select-component-dropdown .theia-select-component-separator {
103
119
  width: 84px;
104
120
  height: 1px;
@@ -276,6 +276,11 @@
276
276
  background: inherit;
277
277
  }
278
278
 
279
+ /* Ensure the empty bottom panel keeps a top border separating it from the main panel. */
280
+ #theia-bottom-content-panel:not(:has(.lm-TabBar)) {
281
+ border-top: var(--theia-border-width) solid var(--theia-panel-border);
282
+ }
283
+
279
284
  #theia-bottom-content-panel .lm-TabBar-tab {
280
285
  background: inherit;
281
286
  }
@@ -63,7 +63,7 @@ body.theia-no-open-workspace #theia-statusBar {
63
63
  padding-inline: var(--theia-ui-padding);
64
64
  }
65
65
 
66
- #theia-statusBar .area.left .element.has-background {
66
+ #theia-statusBar .area.left .element.has-background:not(#session-preference-status) {
67
67
  margin-left: calc(-1 * var(--theia-ui-padding));
68
68
  }
69
69