@hydranium/client-theia 1.0.0-next.341 → 1.0.0-next.344
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/README.md +1 -1
- package/lib/browser/session-aware-connection-source.d.ts +5 -2
- package/lib/browser/session-aware-connection-source.d.ts.map +1 -1
- package/lib/browser/session-aware-connection-source.js +11 -2
- package/lib/browser/session-aware-connection-source.js.map +1 -1
- package/package.json +3 -3
- package/src/browser/session-aware-connection-source.ts +11 -2
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ This package is a library, not a Theia extension: it declares no
|
|
|
50
50
|
- For the websocket, call `bindConnectionResilience` in a `frontendPreload`
|
|
51
51
|
module and in a backend module, and `bindConnectionDiagnostics` beside the
|
|
52
52
|
logger. From a normal frontend module the first call comes too late and
|
|
53
|
-
silently does nothing.
|
|
53
|
+
silently does nothing; in Electron it does nothing by design.
|
|
54
54
|
- In the backend, you usually subclass a head-specific handler from
|
|
55
55
|
`@hydranium/data-client-theia` or `@hydranium/glsp-client-theia` rather than
|
|
56
56
|
the base here.
|
|
@@ -94,8 +94,11 @@ export declare class SessionAwareConnectionSource extends WebSocketConnectionSou
|
|
|
94
94
|
*
|
|
95
95
|
* Does nothing but warn on a Theia too old to expose the buffer binding, so the
|
|
96
96
|
* package keeps one supported range rather than splitting its floor for this
|
|
97
|
-
* feature.
|
|
98
|
-
*
|
|
97
|
+
* feature. Does nothing in Electron, which binds its own connection source;
|
|
98
|
+
* there only the backend half runs, and it resends nothing to a frontend
|
|
99
|
+
* without the hardening.
|
|
100
|
+
* Returns whether the hardening was installed, for an adopter that wants to
|
|
101
|
+
* branch on it.
|
|
99
102
|
*/
|
|
100
103
|
export declare function bindConnectionResilience(isBound: interfaces.IsBound, rebind: interfaces.Rebind, options?: ConnectionResilienceOptions): boolean;
|
|
101
104
|
//# sourceMappingURL=session-aware-connection-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-aware-connection-source.d.ts","sourceRoot":"","sources":["../../src/browser/session-aware-connection-source.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AAEnG,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"session-aware-connection-source.d.ts","sourceRoot":"","sources":["../../src/browser/session-aware-connection-source.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AAEnG,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,4CAA4C,CAAC;AAIrG,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAC3F,OAAO,EACJ,KAAK,wBAAwB,EAE7B,uBAAuB,EAGzB,MAAM,sCAAsC,CAAC;AAG9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,4BAA6B,SAAQ,yBAAyB;IACxE;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,UAAS;IACjC,SAAS,CAAC,wBAAwB,UAAS;IAE3C;;;;OAIG;IACH,UAAmB,qBAAqB,IAAI,IAAI,CAI/C;IAED;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAgBlC;IAED,6EAA6E;IAC7E,SAAS,KAAK,OAAO,IAAI,OAAO,CAE/B;IAED;;;;;;OAMG;IACH,UAAmB,aAAa,IAAI,eAAe,CAgClD;IAED,kGAAkG;IAClG,IAAI,gBAAgB,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAEtD;IAED;;;;;;;;;OASG;IACH,SAAS,KAAK,YAAY,IAAI,uBAAuB,CAMpD;CACH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CACrC,OAAO,EAAE,UAAU,CAAC,OAAO,EAC3B,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,OAAO,GAAE,2BAAgC,GACzC,OAAO,CAcT"}
|
|
@@ -21,6 +21,7 @@ const disposable_1 = require("@theia/core/lib/common/disposable");
|
|
|
21
21
|
const channel_1 = require("@theia/core/lib/common/message-rpc/channel");
|
|
22
22
|
const uint8_array_message_buffer_1 = require("@theia/core/lib/common/message-rpc/uint8-array-message-buffer");
|
|
23
23
|
const connection_management_1 = require("@theia/core/lib/common/messaging/connection-management");
|
|
24
|
+
const environment_1 = require("@theia/core/shared/@theia/application-package/lib/environment");
|
|
24
25
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
25
26
|
const socket_write_buffer_1 = require("@theia/core/lib/common/messaging/socket-write-buffer");
|
|
26
27
|
const framed_socket_write_buffer_1 = require("../common/framed-socket-write-buffer");
|
|
@@ -168,10 +169,18 @@ exports.SessionAwareConnectionSource = SessionAwareConnectionSource = __decorate
|
|
|
168
169
|
*
|
|
169
170
|
* Does nothing but warn on a Theia too old to expose the buffer binding, so the
|
|
170
171
|
* package keeps one supported range rather than splitting its floor for this
|
|
171
|
-
* feature.
|
|
172
|
-
*
|
|
172
|
+
* feature. Does nothing in Electron, which binds its own connection source;
|
|
173
|
+
* there only the backend half runs, and it resends nothing to a frontend
|
|
174
|
+
* without the hardening.
|
|
175
|
+
* Returns whether the hardening was installed, for an adopter that wants to
|
|
176
|
+
* branch on it.
|
|
173
177
|
*/
|
|
174
178
|
function bindConnectionResilience(isBound, rebind, options = {}) {
|
|
179
|
+
// Electron binds `WebSocketConnectionSource` to its own source, so a rebind
|
|
180
|
+
// here adds a second socket under the same frontend id.
|
|
181
|
+
if (environment_1.environment.electron.is()) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
175
184
|
if (!(0, framed_socket_write_buffer_1.supportsConnectionResilience)(isBound)) {
|
|
176
185
|
(0, framed_socket_write_buffer_1.warnConnectionResilienceUnavailable)('frontend');
|
|
177
186
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-aware-connection-source.js","sourceRoot":"","sources":["../../src/browser/session-aware-connection-source.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-aware-connection-source.js","sourceRoot":"","sources":["../../src/browser/session-aware-connection-source.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/client-theia",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.344",
|
|
4
4
|
"description": "Cross-head Theia client primitives shared by the hydranium protocol heads. Provides the socket-forwarding connection-handler base that the data-server and GLSP Theia integrations subclass, plus the preference-driven Output-channel logger; carries no head-specific dependency.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hydranium",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"watch": "tsc -b -w --preserveWatchOutput"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
68
|
+
"@hydranium/protocol": "1.0.0-next.344",
|
|
69
69
|
"@theia/core": "1.74.3",
|
|
70
70
|
"@theia/editor": "1.74.3",
|
|
71
71
|
"@theia/filesystem": "1.74.3",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"vscode-jsonrpc": "9.0.0"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
81
|
+
"@hydranium/protocol": "1.0.0-next.344",
|
|
82
82
|
"@theia/core": "^1.70.0",
|
|
83
83
|
"@theia/editor": "^1.70.0",
|
|
84
84
|
"@theia/filesystem": "^1.70.0",
|
|
@@ -13,6 +13,7 @@ import { type Event } from '@theia/core/lib/common/event';
|
|
|
13
13
|
import { type AbstractChannel, ForwardingChannel } from '@theia/core/lib/common/message-rpc/channel';
|
|
14
14
|
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer';
|
|
15
15
|
import { ConnectionManagementMessages } from '@theia/core/lib/common/messaging/connection-management';
|
|
16
|
+
import { environment } from '@theia/core/shared/@theia/application-package/lib/environment';
|
|
16
17
|
import { injectable, type interfaces } from '@theia/core/shared/inversify';
|
|
17
18
|
import { SocketWriteBuffer } from '@theia/core/lib/common/messaging/socket-write-buffer';
|
|
18
19
|
import { type ConnectionResilienceOptions } from '../common/connection-resilience-options';
|
|
@@ -177,14 +178,22 @@ export class SessionAwareConnectionSource extends WebSocketConnectionSource {
|
|
|
177
178
|
*
|
|
178
179
|
* Does nothing but warn on a Theia too old to expose the buffer binding, so the
|
|
179
180
|
* package keeps one supported range rather than splitting its floor for this
|
|
180
|
-
* feature.
|
|
181
|
-
*
|
|
181
|
+
* feature. Does nothing in Electron, which binds its own connection source;
|
|
182
|
+
* there only the backend half runs, and it resends nothing to a frontend
|
|
183
|
+
* without the hardening.
|
|
184
|
+
* Returns whether the hardening was installed, for an adopter that wants to
|
|
185
|
+
* branch on it.
|
|
182
186
|
*/
|
|
183
187
|
export function bindConnectionResilience(
|
|
184
188
|
isBound: interfaces.IsBound,
|
|
185
189
|
rebind: interfaces.Rebind,
|
|
186
190
|
options: ConnectionResilienceOptions = {}
|
|
187
191
|
): boolean {
|
|
192
|
+
// Electron binds `WebSocketConnectionSource` to its own source, so a rebind
|
|
193
|
+
// here adds a second socket under the same frontend id.
|
|
194
|
+
if (environment.electron.is()) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
188
197
|
if (!supportsConnectionResilience(isBound)) {
|
|
189
198
|
warnConnectionResilienceUnavailable('frontend');
|
|
190
199
|
return false;
|