@hydranium/data-client-theia 1.0.0-next.27 → 1.0.0-next.271
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 +57 -101
- package/lib/browser/channel-connection.d.ts +11 -8
- package/lib/browser/channel-connection.d.ts.map +1 -1
- package/lib/browser/channel-connection.js +7 -5
- package/lib/browser/channel-connection.js.map +1 -1
- package/lib/browser/channel-data-port.d.ts +92 -0
- package/lib/browser/channel-data-port.d.ts.map +1 -0
- package/lib/browser/channel-data-port.js +199 -0
- package/lib/browser/channel-data-port.js.map +1 -0
- package/lib/browser/data-session-stop-contribution.d.ts +76 -0
- package/lib/browser/data-session-stop-contribution.d.ts.map +1 -0
- package/lib/browser/data-session-stop-contribution.js +146 -0
- package/lib/browser/data-session-stop-contribution.js.map +1 -0
- package/lib/browser/host-diagnostics-frontend.js +1 -1
- package/lib/browser/host-diagnostics-frontend.js.map +1 -1
- package/lib/browser/index.d.ts +2 -3
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +2 -3
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/workspace-gate.js.map +1 -1
- package/lib/common/emitter-data-client.d.ts +13 -1
- package/lib/common/emitter-data-client.d.ts.map +1 -1
- package/lib/common/emitter-data-client.js +18 -0
- package/lib/common/emitter-data-client.js.map +1 -1
- package/lib/node/connection-container-module.d.ts +5 -4
- package/lib/node/connection-container-module.d.ts.map +1 -1
- package/lib/node/connection-container-module.js +5 -4
- package/lib/node/connection-container-module.js.map +1 -1
- package/lib/node/data-server-connection-handler.d.ts +9 -19
- package/lib/node/data-server-connection-handler.d.ts.map +1 -1
- package/lib/node/data-server-connection-handler.js +9 -13
- package/lib/node/data-server-connection-handler.js.map +1 -1
- package/lib/node/host-diagnostics-server.d.ts.map +1 -1
- package/lib/node/host-diagnostics-server.js +1 -1
- package/lib/node/host-diagnostics-server.js.map +1 -1
- package/lib/node/index.d.ts +0 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +0 -1
- package/lib/node/index.js.map +1 -1
- package/package.json +25 -39
- package/src/browser/channel-connection.ts +16 -12
- package/src/browser/channel-data-port.ts +189 -0
- package/src/browser/data-session-stop-contribution.ts +151 -0
- package/src/browser/host-diagnostics-frontend.ts +1 -1
- package/src/browser/index.ts +2 -3
- package/src/common/emitter-data-client.ts +27 -0
- package/src/node/connection-container-module.ts +5 -4
- package/src/node/data-server-connection-handler.ts +10 -23
- package/src/node/host-diagnostics-server.ts +1 -1
- package/src/node/index.ts +0 -1
- package/lib/browser/data-service-frontend.d.ts +0 -154
- package/lib/browser/data-service-frontend.d.ts.map +0 -1
- package/lib/browser/data-service-frontend.js +0 -169
- package/lib/browser/data-service-frontend.js.map +0 -1
- package/lib/browser/diagnostics-data-service-frontend.d.ts +0 -35
- package/lib/browser/diagnostics-data-service-frontend.d.ts.map +0 -1
- package/lib/browser/diagnostics-data-service-frontend.js +0 -54
- package/lib/browser/diagnostics-data-service-frontend.js.map +0 -1
- package/lib/browser/references-data-service-frontend.d.ts +0 -45
- package/lib/browser/references-data-service-frontend.d.ts.map +0 -1
- package/lib/browser/references-data-service-frontend.js +0 -55
- package/lib/browser/references-data-service-frontend.js.map +0 -1
- package/lib/node/socket-channel-forwarder.d.ts +0 -34
- package/lib/node/socket-channel-forwarder.d.ts.map +0 -1
- package/lib/node/socket-channel-forwarder.js +0 -68
- package/lib/node/socket-channel-forwarder.js.map +0 -1
- package/src/browser/data-service-frontend.ts +0 -208
- package/src/browser/diagnostics-data-service-frontend.ts +0 -70
- package/src/browser/references-data-service-frontend.ts +0 -70
- package/src/node/socket-channel-forwarder.ts +0 -69
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-data-port.js","sourceRoot":"","sources":["../../src/browser/channel-data-port.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import type { DataConnection, DataServerProtocol, DataSession, DiagnosticOf, TransferElement } from '@hydranium/protocol';
|
|
10
|
+
import { FrontendApplicationContribution, type OnWillStopAction } from '@theia/core/lib/browser/frontend-application-contribution';
|
|
11
|
+
import { type interfaces } from '@theia/core/shared/inversify';
|
|
12
|
+
/**
|
|
13
|
+
* Ends a Theia frontend's data sessions with its page, and holds the page
|
|
14
|
+
* while one of them is still saving. {@link bindDataConnection} binds it and
|
|
15
|
+
* has it {@link track} each data connection bound through it.
|
|
16
|
+
*
|
|
17
|
+
* **Stop.** {@link onStop} disposes every tracked session, which sends its
|
|
18
|
+
* `closeSession`, so the server ends it as closed: each document it was the
|
|
19
|
+
* last to hold is released at once. Otherwise the server learns of the page only
|
|
20
|
+
* when its connection goes, which Theia may hold open for its reconnect
|
|
21
|
+
* timeout, and then ends the sessions as lost, so their documents wait out the
|
|
22
|
+
* release grace. The close is best effort: under load the page's last frames
|
|
23
|
+
* can be lost on the way, and the server then ends the sessions as lost. A
|
|
24
|
+
* session with calls still in flight at the stop closes after them, which is
|
|
25
|
+
* too late for a page going away, and is left to the server's connection-close
|
|
26
|
+
* cleanup. A call a session makes in the same tick as the stop is refused and
|
|
27
|
+
* never sent.
|
|
28
|
+
*
|
|
29
|
+
* **Veto.** While a tracked session has a save in flight, {@link onWillStop}
|
|
30
|
+
* vetoes, including a session disposed meanwhile. In Electron, Theia awaits
|
|
31
|
+
* the veto's action, which waits for the saves to answer, a save started during
|
|
32
|
+
* the wait included, up to {@link maxSettlePasses} times. The browser runs no
|
|
33
|
+
* action before unload, so there the veto shows the leave-page prompt and
|
|
34
|
+
* nothing more. Theia ignores every veto under
|
|
35
|
+
* `application.confirmExit: 'never'`, so there a save in flight at the stop
|
|
36
|
+
* may be cut off.
|
|
37
|
+
*/
|
|
38
|
+
export declare class DataSessionStopContribution implements FrontendApplicationContribution {
|
|
39
|
+
/** The sessions to end at the stop, and to wait for while they save. */
|
|
40
|
+
protected readonly sessions: Set<DataSession<TransferElement, DataServerProtocol<TransferElement, import("@hydranium/protocol").TransferDiagnostic, import("@hydranium/protocol").Project>>>;
|
|
41
|
+
/**
|
|
42
|
+
* How many times the veto's action waits for the saves in flight before it
|
|
43
|
+
* lets the stop go. Each wait ends by the session's own bound, so a save
|
|
44
|
+
* that never answers holds the stop for a few bounds, not for good.
|
|
45
|
+
*/
|
|
46
|
+
protected readonly maxSettlePasses: number;
|
|
47
|
+
/**
|
|
48
|
+
* Take every session of `connection` into the stop: the ones it has
|
|
49
|
+
* started already, and each one it starts from now on. Generic, so a
|
|
50
|
+
* connection of any transfer root, server and client fits.
|
|
51
|
+
*/
|
|
52
|
+
track<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>>, TClient extends object>(connection: DataConnection<TTransfer, TServer, TClient>): void;
|
|
53
|
+
/**
|
|
54
|
+
* Take `session` into the stop. It leaves once it has ended and its saves
|
|
55
|
+
* have answered, so a session disposed with a save in flight still holds
|
|
56
|
+
* the page.
|
|
57
|
+
*/
|
|
58
|
+
protected trackSession(session: DataSession<TransferElement>): void;
|
|
59
|
+
onWillStop(): OnWillStopAction | undefined;
|
|
60
|
+
/** The tracked sessions with a save in flight. */
|
|
61
|
+
protected savingSessions(): DataSession<TransferElement>[];
|
|
62
|
+
onStop(): void;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Bind `connectionClass` in singleton scope, its sessions tracked by the
|
|
66
|
+
* {@link DataSessionStopContribution}, and bind that contribution and the
|
|
67
|
+
* `ConnectionReporter` the connection's port injects unless they are bound
|
|
68
|
+
* already. The binding's `onActivation` is taken; a frontend's own hook on the
|
|
69
|
+
* connection goes on the container's `onActivation`, which runs after it. A
|
|
70
|
+
* subclass of the contribution is rebound after this call: one bound before it
|
|
71
|
+
* is never registered as a frontend contribution, so its stop never runs.
|
|
72
|
+
* Call it once per connection class: a second call makes the class's lookup
|
|
73
|
+
* ambiguous.
|
|
74
|
+
*/
|
|
75
|
+
export declare function bindDataConnection<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>>, TClient extends object>(bind: interfaces.Bind, isBound: interfaces.IsBound, connectionClass: interfaces.Newable<DataConnection<TTransfer, TServer, TClient>>): void;
|
|
76
|
+
//# sourceMappingURL=data-session-stop-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-session-stop-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/data-session-stop-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG1H,OAAO,EAAE,+BAA+B,EAAE,KAAK,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AACnI,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,2BAA4B,YAAW,+BAA+B;IAChF,wEAAwE;IACxE,SAAS,CAAC,QAAQ,CAAC,QAAQ,kKAA2C;IACtE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAK;IAE/C;;;;OAIG;IACH,KAAK,CAAC,SAAS,SAAS,eAAe,EAAE,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,SAAS,MAAM,EAClI,UAAU,EAAE,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,GACvD,IAAI,CAGN;IAED;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAYlE;IAED,UAAU,IAAI,gBAAgB,GAAG,SAAS,CAoBzC;IAED,kDAAkD;IAClD,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE,CAEzD;IAED,MAAM,IAAI,IAAI,CAIb;CACH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAC/B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EACpE,OAAO,SAAS,MAAM,EAEtB,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,EAC3B,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,GAChF,IAAI,CAaN"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
4
|
+
*
|
|
5
|
+
* This program and the accompanying materials are made available under the
|
|
6
|
+
* terms of the MIT License which is available in the project root.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: MIT
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
11
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
12
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
14
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DataSessionStopContribution = void 0;
|
|
18
|
+
exports.bindDataConnection = bindDataConnection;
|
|
19
|
+
const browser_1 = require("@hydranium/client-theia/browser");
|
|
20
|
+
// Not the `@theia/core/lib/browser` barrel: it touches DOM globals at module
|
|
21
|
+
// load, which the node-environment unit tests cannot provide.
|
|
22
|
+
const frontend_application_contribution_1 = require("@theia/core/lib/browser/frontend-application-contribution");
|
|
23
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
24
|
+
/**
|
|
25
|
+
* Ends a Theia frontend's data sessions with its page, and holds the page
|
|
26
|
+
* while one of them is still saving. {@link bindDataConnection} binds it and
|
|
27
|
+
* has it {@link track} each data connection bound through it.
|
|
28
|
+
*
|
|
29
|
+
* **Stop.** {@link onStop} disposes every tracked session, which sends its
|
|
30
|
+
* `closeSession`, so the server ends it as closed: each document it was the
|
|
31
|
+
* last to hold is released at once. Otherwise the server learns of the page only
|
|
32
|
+
* when its connection goes, which Theia may hold open for its reconnect
|
|
33
|
+
* timeout, and then ends the sessions as lost, so their documents wait out the
|
|
34
|
+
* release grace. The close is best effort: under load the page's last frames
|
|
35
|
+
* can be lost on the way, and the server then ends the sessions as lost. A
|
|
36
|
+
* session with calls still in flight at the stop closes after them, which is
|
|
37
|
+
* too late for a page going away, and is left to the server's connection-close
|
|
38
|
+
* cleanup. A call a session makes in the same tick as the stop is refused and
|
|
39
|
+
* never sent.
|
|
40
|
+
*
|
|
41
|
+
* **Veto.** While a tracked session has a save in flight, {@link onWillStop}
|
|
42
|
+
* vetoes, including a session disposed meanwhile. In Electron, Theia awaits
|
|
43
|
+
* the veto's action, which waits for the saves to answer, a save started during
|
|
44
|
+
* the wait included, up to {@link maxSettlePasses} times. The browser runs no
|
|
45
|
+
* action before unload, so there the veto shows the leave-page prompt and
|
|
46
|
+
* nothing more. Theia ignores every veto under
|
|
47
|
+
* `application.confirmExit: 'never'`, so there a save in flight at the stop
|
|
48
|
+
* may be cut off.
|
|
49
|
+
*/
|
|
50
|
+
let DataSessionStopContribution = class DataSessionStopContribution {
|
|
51
|
+
/** The sessions to end at the stop, and to wait for while they save. */
|
|
52
|
+
sessions = new Set();
|
|
53
|
+
/**
|
|
54
|
+
* How many times the veto's action waits for the saves in flight before it
|
|
55
|
+
* lets the stop go. Each wait ends by the session's own bound, so a save
|
|
56
|
+
* that never answers holds the stop for a few bounds, not for good.
|
|
57
|
+
*/
|
|
58
|
+
maxSettlePasses = 3;
|
|
59
|
+
/**
|
|
60
|
+
* Take every session of `connection` into the stop: the ones it has
|
|
61
|
+
* started already, and each one it starts from now on. Generic, so a
|
|
62
|
+
* connection of any transfer root, server and client fits.
|
|
63
|
+
*/
|
|
64
|
+
track(connection) {
|
|
65
|
+
connection.liveSessions.forEach(session => this.trackSession(session));
|
|
66
|
+
connection.onDidCreateSession(session => this.trackSession(session));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Take `session` into the stop. It leaves once it has ended and its saves
|
|
70
|
+
* have answered, so a session disposed with a save in flight still holds
|
|
71
|
+
* the page.
|
|
72
|
+
*/
|
|
73
|
+
trackSession(session) {
|
|
74
|
+
this.sessions.add(session);
|
|
75
|
+
// A save can outlast the wait's bound, so the session stays until none
|
|
76
|
+
// is left in flight.
|
|
77
|
+
const release = () => void session.whenSavesSettled().then(() => (session.hasSavesInFlight ? release() : this.sessions.delete(session)));
|
|
78
|
+
// An ended session has fired its event already, and never fires it again.
|
|
79
|
+
if (session.isDisposed) {
|
|
80
|
+
release();
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
session.onDidDispose(release);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
onWillStop() {
|
|
87
|
+
if (this.savingSessions().length === 0) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
// Theia logs the reason and shows it nowhere, so it is not translated.
|
|
92
|
+
reason: 'Data sessions are saving',
|
|
93
|
+
action: async () => {
|
|
94
|
+
// The page stays usable while Theia awaits this, so a save can
|
|
95
|
+
// start during a wait; each pass waits for the saves then in flight.
|
|
96
|
+
for (let pass = 0; pass < this.maxSettlePasses; pass++) {
|
|
97
|
+
const saving = this.savingSessions();
|
|
98
|
+
if (saving.length === 0) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
await Promise.all(saving.map(session => session.whenSavesSettled()));
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** The tracked sessions with a save in flight. */
|
|
108
|
+
savingSessions() {
|
|
109
|
+
return [...this.sessions].filter(session => session.hasSavesInFlight);
|
|
110
|
+
}
|
|
111
|
+
onStop() {
|
|
112
|
+
for (const session of this.sessions) {
|
|
113
|
+
session.dispose();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
exports.DataSessionStopContribution = DataSessionStopContribution;
|
|
118
|
+
exports.DataSessionStopContribution = DataSessionStopContribution = __decorate([
|
|
119
|
+
(0, inversify_1.injectable)()
|
|
120
|
+
], DataSessionStopContribution);
|
|
121
|
+
/**
|
|
122
|
+
* Bind `connectionClass` in singleton scope, its sessions tracked by the
|
|
123
|
+
* {@link DataSessionStopContribution}, and bind that contribution and the
|
|
124
|
+
* `ConnectionReporter` the connection's port injects unless they are bound
|
|
125
|
+
* already. The binding's `onActivation` is taken; a frontend's own hook on the
|
|
126
|
+
* connection goes on the container's `onActivation`, which runs after it. A
|
|
127
|
+
* subclass of the contribution is rebound after this call: one bound before it
|
|
128
|
+
* is never registered as a frontend contribution, so its stop never runs.
|
|
129
|
+
* Call it once per connection class: a second call makes the class's lookup
|
|
130
|
+
* ambiguous.
|
|
131
|
+
*/
|
|
132
|
+
function bindDataConnection(bind, isBound, connectionClass) {
|
|
133
|
+
bind(connectionClass)
|
|
134
|
+
.toSelf()
|
|
135
|
+
.inSingletonScope()
|
|
136
|
+
.onActivation((context, connection) => {
|
|
137
|
+
context.container.get(DataSessionStopContribution).track(connection);
|
|
138
|
+
return connection;
|
|
139
|
+
});
|
|
140
|
+
if (!isBound(DataSessionStopContribution)) {
|
|
141
|
+
bind(DataSessionStopContribution).toSelf().inSingletonScope();
|
|
142
|
+
bind(frontend_application_contribution_1.FrontendApplicationContribution).toService(DataSessionStopContribution);
|
|
143
|
+
}
|
|
144
|
+
(0, browser_1.bindConnectionReporter)(bind, isBound);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=data-session-stop-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-session-stop-contribution.js","sourceRoot":"","sources":["../../src/browser/data-session-stop-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.bindHostDiagnostics = bindHostDiagnostics;
|
|
12
|
-
const browser_1 = require("@hydranium/client-theia/
|
|
12
|
+
const browser_1 = require("@hydranium/client-theia/browser");
|
|
13
13
|
const protocol_1 = require("@hydranium/protocol");
|
|
14
14
|
const service_connection_provider_1 = require("@theia/core/lib/browser/messaging/service-connection-provider");
|
|
15
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-diagnostics-frontend.js","sourceRoot":"","sources":["../../src/browser/host-diagnostics-frontend.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"host-diagnostics-frontend.js","sourceRoot":"","sources":["../../src/browser/host-diagnostics-frontend.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,6DAA+E;AAC/E,kDAA0F;AAC1F,+GAAyI;AAGzI;;;;;;;GAOG;AACH,6BAAoC,IAAqB;IACtD,IAAI,CAAC,sCAA4B,CAAC;SAC9B,cAAc,CAAC,OAAO,CAAC,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAA4B,sDAAwB,CAAC,CAAC;QAC5F,OAAO,QAAQ,CAAC,WAAW,CAA0B,gCAAqB,CAAC,CAAC;IAC/E,CAAC,CAAC;SACD,gBAAgB,EAAE,CAAC;AAC1B,CAAC"}
|
package/lib/browser/index.d.ts
CHANGED
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
export * from './channel-connection';
|
|
10
|
-
export * from './data-
|
|
11
|
-
export * from './
|
|
10
|
+
export * from './channel-data-port';
|
|
11
|
+
export * from './data-session-stop-contribution';
|
|
12
12
|
export * from './host-diagnostics-frontend';
|
|
13
|
-
export * from './references-data-service-frontend';
|
|
14
13
|
export * from './workspace-gate';
|
|
15
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
package/lib/browser/index.js
CHANGED
|
@@ -23,9 +23,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
__exportStar(require("./channel-connection"), exports);
|
|
26
|
-
__exportStar(require("./data-
|
|
27
|
-
__exportStar(require("./
|
|
26
|
+
__exportStar(require("./channel-data-port"), exports);
|
|
27
|
+
__exportStar(require("./data-session-stop-contribution"), exports);
|
|
28
28
|
__exportStar(require("./host-diagnostics-frontend"), exports);
|
|
29
|
-
__exportStar(require("./references-data-service-frontend"), exports);
|
|
30
29
|
__exportStar(require("./workspace-gate"), exports);
|
|
31
30
|
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;;AAElF,uDAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;;AAElF,uDAAqC;AACrC,sDAAoC;AACpC,mEAAiD;AACjD,8DAA4C;AAC5C,mDAAiC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-gate.js","sourceRoot":"","sources":["../../src/browser/workspace-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"workspace-gate.js","sourceRoot":"","sources":["../../src/browser/workspace-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAIlF;;;;;;;;;GASG;AACH,2BAAkC,gBAAkC;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACnE,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import type { DataClientProtocol, Project, ProjectsChangedEvent, TransferDiagnostic, TransferDocumentSavedEvent, TransferDocumentUpdatedEvent, TransferElement } from '@hydranium/protocol';
|
|
9
|
+
import type { DataClientProtocol, Project, ProjectsChangedEvent, TransferDiagnostic, TransferDocumentDeletedEvent, TransferDocumentDirtyChangedEvent, TransferDocumentSavedEvent, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent, TransferElement } from '@hydranium/protocol';
|
|
10
10
|
import { Emitter, type Event } from '@theia/core';
|
|
11
11
|
/**
|
|
12
12
|
* Default {@link DataClientProtocol} implementation for a Theia frontend:
|
|
@@ -30,11 +30,23 @@ export declare class EmitterDataClient<TTransfer extends TransferElement, TDiagn
|
|
|
30
30
|
protected readonly onDocumentSavedEmitter: Emitter<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
31
31
|
/** Fires for each inbound {@link onDocumentSaved} notification. */
|
|
32
32
|
readonly onDidSaveDocument: Event<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
33
|
+
protected readonly onDocumentDirtyChangedEmitter: Emitter<TransferDocumentDirtyChangedEvent>;
|
|
34
|
+
/** Fires for each inbound {@link onDocumentDirtyChanged} notification. */
|
|
35
|
+
readonly onDidChangeDocumentDirty: Event<TransferDocumentDirtyChangedEvent>;
|
|
36
|
+
protected readonly onDocumentDeletedEmitter: Emitter<TransferDocumentDeletedEvent>;
|
|
37
|
+
/** Fires for each inbound {@link onDocumentDeleted} notification. */
|
|
38
|
+
readonly onDidDeleteDocument: Event<TransferDocumentDeletedEvent>;
|
|
39
|
+
protected readonly onDocumentsBuiltEmitter: Emitter<TransferDocumentsBuiltEvent>;
|
|
40
|
+
/** Fires for each inbound {@link onDocumentsBuilt} notification. */
|
|
41
|
+
readonly onDidBuildDocuments: Event<TransferDocumentsBuiltEvent>;
|
|
33
42
|
protected readonly onProjectsChangedEmitter: Emitter<ProjectsChangedEvent<TProject>>;
|
|
34
43
|
/** Fires for each inbound {@link onProjectsChanged} notification. */
|
|
35
44
|
readonly onDidChangeProjects: Event<ProjectsChangedEvent<TProject>>;
|
|
36
45
|
onDocumentUpdated(event: TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>): void;
|
|
37
46
|
onDocumentSaved(event: TransferDocumentSavedEvent<TTransfer, TDiagnostic>): void;
|
|
47
|
+
onDocumentDirtyChanged(event: TransferDocumentDirtyChangedEvent): void;
|
|
48
|
+
onDocumentDeleted(event: TransferDocumentDeletedEvent): void;
|
|
49
|
+
onDocumentsBuilt(event: TransferDocumentsBuiltEvent): void;
|
|
38
50
|
onProjectsChanged(event: ProjectsChangedEvent<TProject>): void;
|
|
39
51
|
}
|
|
40
52
|
//# sourceMappingURL=emitter-data-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-data-client.d.ts","sourceRoot":"","sources":["../../src/common/emitter-data-client.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EACT,kBAAkB,EAClB,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB,CAC3B,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,YAAW,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,wBAAwB,gEAAuE;IAClH,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAuC;IAEhI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,8DAAqE;IAC9G,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAqC;IAE1H,SAAS,CAAC,QAAQ,CAAC,wBAAwB,0CAAiD;IAC5F,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAuC;IAE1G,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"emitter-data-client.d.ts","sourceRoot":"","sources":["../../src/common/emitter-data-client.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EACT,kBAAkB,EAClB,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB,CAC3B,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3D,QAAQ,SAAS,OAAO,GAAG,OAAO,CACnC,YAAW,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,wBAAwB,gEAAuE;IAClH,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAuC;IAEhI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,8DAAqE;IAC9G,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAqC;IAE1H,SAAS,CAAC,QAAQ,CAAC,6BAA6B,6CAAoD;IACpG,0EAA0E;IAC1E,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAA4C;IAEvH,SAAS,CAAC,QAAQ,CAAC,wBAAwB,wCAA+C;IAC1F,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAuC;IAExG,SAAS,CAAC,QAAQ,CAAC,uBAAuB,uCAA8C;IACxF,oEAAoE;IACpE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAsC;IAEtG,SAAS,CAAC,QAAQ,CAAC,wBAAwB,0CAAiD;IAC5F,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAuC;IAE1G,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAEnF;IAED,eAAe,CAAC,KAAK,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAE/E;IAED,sBAAsB,CAAC,KAAK,EAAE,iCAAiC,GAAG,IAAI,CAErE;IAED,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,GAAG,IAAI,CAE3D;IAED,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAEzD;IAED,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAE7D;CACH"}
|
|
@@ -32,6 +32,15 @@ class EmitterDataClient {
|
|
|
32
32
|
onDocumentSavedEmitter = new core_1.Emitter();
|
|
33
33
|
/** Fires for each inbound {@link onDocumentSaved} notification. */
|
|
34
34
|
onDidSaveDocument = this.onDocumentSavedEmitter.event;
|
|
35
|
+
onDocumentDirtyChangedEmitter = new core_1.Emitter();
|
|
36
|
+
/** Fires for each inbound {@link onDocumentDirtyChanged} notification. */
|
|
37
|
+
onDidChangeDocumentDirty = this.onDocumentDirtyChangedEmitter.event;
|
|
38
|
+
onDocumentDeletedEmitter = new core_1.Emitter();
|
|
39
|
+
/** Fires for each inbound {@link onDocumentDeleted} notification. */
|
|
40
|
+
onDidDeleteDocument = this.onDocumentDeletedEmitter.event;
|
|
41
|
+
onDocumentsBuiltEmitter = new core_1.Emitter();
|
|
42
|
+
/** Fires for each inbound {@link onDocumentsBuilt} notification. */
|
|
43
|
+
onDidBuildDocuments = this.onDocumentsBuiltEmitter.event;
|
|
35
44
|
onProjectsChangedEmitter = new core_1.Emitter();
|
|
36
45
|
/** Fires for each inbound {@link onProjectsChanged} notification. */
|
|
37
46
|
onDidChangeProjects = this.onProjectsChangedEmitter.event;
|
|
@@ -41,6 +50,15 @@ class EmitterDataClient {
|
|
|
41
50
|
onDocumentSaved(event) {
|
|
42
51
|
this.onDocumentSavedEmitter.fire(event);
|
|
43
52
|
}
|
|
53
|
+
onDocumentDirtyChanged(event) {
|
|
54
|
+
this.onDocumentDirtyChangedEmitter.fire(event);
|
|
55
|
+
}
|
|
56
|
+
onDocumentDeleted(event) {
|
|
57
|
+
this.onDocumentDeletedEmitter.fire(event);
|
|
58
|
+
}
|
|
59
|
+
onDocumentsBuilt(event) {
|
|
60
|
+
this.onDocumentsBuiltEmitter.fire(event);
|
|
61
|
+
}
|
|
44
62
|
onProjectsChanged(event) {
|
|
45
63
|
this.onProjectsChangedEmitter.fire(event);
|
|
46
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-data-client.js","sourceRoot":"","sources":["../../src/common/emitter-data-client.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;
|
|
1
|
+
{"version":3,"file":"emitter-data-client.js","sourceRoot":"","sources":["../../src/common/emitter-data-client.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAclF,sCAAkD;AAElD;;;;;;;;;;;;;;GAcG;AACH;IAKsB,wBAAwB,GAAG,IAAI,cAAO,EAAwD,CAAC;IAClH,qEAAqE;IAC5D,mBAAmB,GAAgE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAE7G,sBAAsB,GAAG,IAAI,cAAO,EAAsD,CAAC;IAC9G,mEAAmE;IAC1D,iBAAiB,GAA8D,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;IAEvG,6BAA6B,GAAG,IAAI,cAAO,EAAqC,CAAC;IACpG,0EAA0E;IACjE,wBAAwB,GAA6C,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC;IAEpG,wBAAwB,GAAG,IAAI,cAAO,EAAgC,CAAC;IAC1F,qEAAqE;IAC5D,mBAAmB,GAAwC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAErF,uBAAuB,GAAG,IAAI,cAAO,EAA+B,CAAC;IACxF,oEAAoE;IAC3D,mBAAmB,GAAuC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;IAEnF,wBAAwB,GAAG,IAAI,cAAO,EAAkC,CAAC;IAC5F,qEAAqE;IAC5D,mBAAmB,GAA0C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAE1G,iBAAiB,CAAC,KAA2D;QAC1E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CAAC,KAAyD;QACtE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,sBAAsB,CAAC,KAAwC;QAC5D,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,KAAmC;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,KAAkC;QAChD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,KAAqC;QACpD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACH"}
|
|
@@ -24,11 +24,12 @@ import { ContainerModule, type interfaces } from '@theia/core/shared/inversify';
|
|
|
24
24
|
*
|
|
25
25
|
* **More than one handler is the normal case, not an exotic one.** Theia keys a
|
|
26
26
|
* frontend channel by its service path and refuses a second channel on a path
|
|
27
|
-
* already open, so every frontend abstraction reaching the data head
|
|
28
|
-
* own path and therefore its own handler
|
|
29
|
-
* Theia `AbstractDataServiceFrontend` is exactly that shape. They still forward
|
|
27
|
+
* already open, so every frontend abstraction reaching the data head on its own
|
|
28
|
+
* channel needs its own path and therefore its own handler. They still forward
|
|
30
29
|
* to the SAME data server: the path distinguishes the channel, the shared
|
|
31
|
-
* `portCommand` names the one process behind it.
|
|
30
|
+
* `portCommand` names the one process behind it. Several participants over ONE
|
|
31
|
+
* channel need no second handler — that is what `DataConnection`'s sessions are
|
|
32
|
+
* for, and it is the cheaper arrangement.
|
|
32
33
|
*/
|
|
33
34
|
export declare function createDataServerConnectionContainerModule(...handlerClasses: interfaces.Newable<ConnectionHandler>[]): ContainerModule;
|
|
34
35
|
//# sourceMappingURL=connection-container-module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-container-module.d.ts","sourceRoot":"","sources":["../../src/node/connection-container-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEhF
|
|
1
|
+
{"version":3,"file":"connection-container-module.d.ts","sourceRoot":"","sources":["../../src/node/connection-container-module.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yCAAyC,CAAC,GAAG,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,eAAe,CAerI"}
|
|
@@ -28,11 +28,12 @@ const inversify_1 = require("@theia/core/shared/inversify");
|
|
|
28
28
|
*
|
|
29
29
|
* **More than one handler is the normal case, not an exotic one.** Theia keys a
|
|
30
30
|
* frontend channel by its service path and refuses a second channel on a path
|
|
31
|
-
* already open, so every frontend abstraction reaching the data head
|
|
32
|
-
* own path and therefore its own handler
|
|
33
|
-
* Theia `AbstractDataServiceFrontend` is exactly that shape. They still forward
|
|
31
|
+
* already open, so every frontend abstraction reaching the data head on its own
|
|
32
|
+
* channel needs its own path and therefore its own handler. They still forward
|
|
34
33
|
* to the SAME data server: the path distinguishes the channel, the shared
|
|
35
|
-
* `portCommand` names the one process behind it.
|
|
34
|
+
* `portCommand` names the one process behind it. Several participants over ONE
|
|
35
|
+
* channel need no second handler — that is what `DataConnection`'s sessions are
|
|
36
|
+
* for, and it is the cheaper arrangement.
|
|
36
37
|
*/
|
|
37
38
|
function createDataServerConnectionContainerModule(...handlerClasses) {
|
|
38
39
|
const frontendScopedConnectionModule = connection_container_module_1.ConnectionContainerModule.create(({ bind }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-container-module.js","sourceRoot":"","sources":["../../src/node/connection-container-module.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"connection-container-module.js","sourceRoot":"","sources":["../../src/node/connection-container-module.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,sCAAgD;AAChD,4GAAuG;AACvG,4DAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,mDAA0D,GAAG,cAAuD;IACjH,MAAM,8BAA8B,GAAG,uDAAyB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClF,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;YAC/C,mEAAmE;YACnE,mEAAmE;YACnE,oEAAoE;YACpE,IAAI,CAAC,wBAAiB,CAAC;iBACnB,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iBAC9D,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,CAAC,uDAAyB,CAAC,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { AbstractSocketForwardingConnectionHandler } from '@hydranium/client-theia/
|
|
10
|
-
import { type Channel, type Disposable } from '@theia/core';
|
|
9
|
+
import { AbstractSocketForwardingConnectionHandler } from '@hydranium/client-theia/node';
|
|
11
10
|
import type * as net from 'node:net';
|
|
12
11
|
/** Options for {@link DataServerConnectionHandler}. `servicePath` is the Theia
|
|
13
12
|
* service path the browser frontend opens a channel to; `portCommand` is the
|
|
@@ -25,15 +24,7 @@ export interface DataServerConnectionHandlerOptions {
|
|
|
25
24
|
* Defaults to the framework `DATA_SERVER_PORT_COMMAND`; override to match
|
|
26
25
|
* an adopter's established id. */
|
|
27
26
|
readonly portCommand?: string;
|
|
28
|
-
/**
|
|
29
|
-
* Product name for the connect-failure dialog this handler raises.
|
|
30
|
-
*
|
|
31
|
-
* It reaches the adopter's UI verbatim, so the framework default leaks a
|
|
32
|
-
* framework noun into a product that is not ours. Not a translation concern —
|
|
33
|
-
* routing it through a catalogue would ask an adopter to "translate" English
|
|
34
|
-
* into their own product name, and would make their branding
|
|
35
|
-
* locale-dependent.
|
|
36
|
-
*/
|
|
27
|
+
/** Name of the server in this handler's log lines. */
|
|
37
28
|
readonly serverName?: string;
|
|
38
29
|
readonly findPortTimeout?: number;
|
|
39
30
|
readonly findPortAttempts?: number;
|
|
@@ -51,16 +42,15 @@ export interface DataServerConnectionHandlerOptions {
|
|
|
51
42
|
* Bridges a Theia browser-frontend channel to a data-server's TCP socket — the
|
|
52
43
|
* backend half of the data-server head's transport.
|
|
53
44
|
*
|
|
54
|
-
* The port
|
|
55
|
-
* on the cross-head
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* its own forwarder, so the data head carries no GLSP dependency. Sibling of
|
|
59
|
-
* `@hydranium/glsp-client-theia`'s `GlspServerConnectionHandler`, which
|
|
60
|
-
* subclasses the same base with `@eclipse-glsp`'s `SocketConnectionForwarder`.
|
|
45
|
+
* The port discovery, the buffer-and-replay race fix, the connect orchestration
|
|
46
|
+
* and the byte forwarder live on the cross-head
|
|
47
|
+
* {@link AbstractSocketForwardingConnectionHandler} base; this subclass supplies
|
|
48
|
+
* only the data-server defaults (service path / port command / log labels).
|
|
61
49
|
*/
|
|
62
50
|
export declare class DataServerConnectionHandler extends AbstractSocketForwardingConnectionHandler {
|
|
63
51
|
constructor(options?: DataServerConnectionHandlerOptions);
|
|
64
|
-
|
|
52
|
+
/** Logged only: the frontend port reports the connection, and a second
|
|
53
|
+
* notification would duplicate it. */
|
|
54
|
+
protected reportConnectFailure(): void;
|
|
65
55
|
}
|
|
66
56
|
//# sourceMappingURL=data-server-connection-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server-connection-handler.d.ts","sourceRoot":"","sources":["../../src/node/data-server-connection-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,yCAAyC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"data-server-connection-handler.d.ts","sourceRoot":"","sources":["../../src/node/data-server-connection-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,yCAAyC,EAAE,MAAM,8BAA8B,CAAC;AAGzF,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AAErC;;;;kBAIkB;AAClB,MAAM,WAAW,kCAAkC;IAChD;;;;yDAIqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;uCAEmC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;;;;GAQG;AACH,qBACa,2BAA4B,SAAQ,yCAAyC;IACvF,YAAyB,OAAO,GAAE,kCAAuC,EAWxE;IAED;2CACuC;IACvC,UAAmB,oBAAoB,IAAI,IAAI,CAAG;CACpD"}
|
|
@@ -21,21 +21,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.DataServerConnectionHandler = void 0;
|
|
24
|
-
const node_1 = require("@hydranium/client-theia/
|
|
24
|
+
const node_1 = require("@hydranium/client-theia/node");
|
|
25
25
|
const protocol_1 = require("@hydranium/protocol");
|
|
26
26
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
|
-
const socket_channel_forwarder_1 = require("./socket-channel-forwarder");
|
|
28
27
|
/**
|
|
29
28
|
* Bridges a Theia browser-frontend channel to a data-server's TCP socket — the
|
|
30
29
|
* backend half of the data-server head's transport.
|
|
31
30
|
*
|
|
32
|
-
* The port
|
|
33
|
-
* on the cross-head
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* its own forwarder, so the data head carries no GLSP dependency. Sibling of
|
|
37
|
-
* `@hydranium/glsp-client-theia`'s `GlspServerConnectionHandler`, which
|
|
38
|
-
* subclasses the same base with `@eclipse-glsp`'s `SocketConnectionForwarder`.
|
|
31
|
+
* The port discovery, the buffer-and-replay race fix, the connect orchestration
|
|
32
|
+
* and the byte forwarder live on the cross-head
|
|
33
|
+
* {@link AbstractSocketForwardingConnectionHandler} base; this subclass supplies
|
|
34
|
+
* only the data-server defaults (service path / port command / log labels).
|
|
39
35
|
*/
|
|
40
36
|
let DataServerConnectionHandler = class DataServerConnectionHandler extends node_1.AbstractSocketForwardingConnectionHandler {
|
|
41
37
|
constructor(options = {}) {
|
|
@@ -43,16 +39,16 @@ let DataServerConnectionHandler = class DataServerConnectionHandler extends node
|
|
|
43
39
|
path: options.servicePath ?? protocol_1.DATA_SERVER_PATH,
|
|
44
40
|
portCommand: options.portCommand ?? protocol_1.DATA_SERVER_PORT_COMMAND,
|
|
45
41
|
logComponent: 'DataServer',
|
|
46
|
-
serverName: options.serverName ?? '
|
|
42
|
+
serverName: options.serverName ?? 'Data Server',
|
|
47
43
|
findPortTimeout: options.findPortTimeout,
|
|
48
44
|
findPortAttempts: options.findPortAttempts,
|
|
49
45
|
connectTimeoutMs: options.connectTimeoutMs,
|
|
50
46
|
onSocketCreated: options.onSocketCreated
|
|
51
47
|
});
|
|
52
48
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
49
|
+
/** Logged only: the frontend port reports the connection, and a second
|
|
50
|
+
* notification would duplicate it. */
|
|
51
|
+
reportConnectFailure() { }
|
|
56
52
|
};
|
|
57
53
|
exports.DataServerConnectionHandler = DataServerConnectionHandler;
|
|
58
54
|
exports.DataServerConnectionHandler = DataServerConnectionHandler = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server-connection-handler.js","sourceRoot":"","sources":["../../src/node/data-server-connection-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;AAElF,
|
|
1
|
+
{"version":3,"file":"data-server-connection-handler.js","sourceRoot":"","sources":["../../src/node/data-server-connection-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;AAElF,uDAAyF;AACzF,kDAAiF;AACjF,4DAAqE;AAkCrE;;;;;;;;GAQG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,gDAAyC;IACvF,YAAyB,UAA8C,EAAE;QACtE,KAAK,CAAC;YACH,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,2BAAgB;YAC7C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,mCAAwB;YAC5D,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,aAAa;YAC/C,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;SAC1C,CAAC,CAAC;IACN,CAAC;IAED;2CACuC;IACpB,oBAAoB,KAAU,CAAC;CACpD,CAAA;;sCAjBY,2BAA2B;IADvC,IAAA,sBAAU,GAAE;IAEG,WAAA,IAAA,qBAAS,GAAE,CAAA;;GADd,2BAA2B,CAiBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-diagnostics-server.d.ts","sourceRoot":"","sources":["../../src/node/host-diagnostics-server.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAEJ,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAChC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAE3E;;;;;;GAMG;AACH,qBACa,qBAAsB,YAAW,uBAAuB;IAC5D,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"host-diagnostics-server.d.ts","sourceRoot":"","sources":["../../src/node/host-diagnostics-server.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAEJ,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAChC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAE3E;;;;;;GAMG;AACH,qBACa,qBAAsB,YAAW,uBAAuB;IAC5D,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5D;IAEK,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5E;CACH;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,IAAI,eAAe,CAOpE"}
|
|
@@ -16,7 +16,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.HostDiagnosticsServer = void 0;
|
|
18
18
|
exports.createHostDiagnosticsBackendModule = createHostDiagnosticsBackendModule;
|
|
19
|
-
const node_1 = require("@hydranium/
|
|
19
|
+
const node_1 = require("@hydranium/protocol/node");
|
|
20
20
|
const protocol_1 = require("@hydranium/protocol");
|
|
21
21
|
const core_1 = require("@theia/core");
|
|
22
22
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-diagnostics-server.js","sourceRoot":"","sources":["../../src/node/host-diagnostics-server.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"host-diagnostics-server.js","sourceRoot":"","sources":["../../src/node/host-diagnostics-server.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;AAElF,mDAAuF;AACvF,kDAK6B;AAC7B,sCAAsE;AACtE,4DAA2E;AAE3E;;;;;;GAMG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAC/B,KAAK,CAAC,aAAa,CAAC,IAAuB;QACxC,MAAM,QAAQ,GAAG,IAAA,0BAAmB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/G,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAA+B;QACxD,MAAM,QAAQ,GAAG,IAAA,6BAAsB,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,cAAc,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC;IACnB,CAAC;CACH,CAAA;;gCAZY,qBAAqB;IADjC,IAAA,sBAAU,GAAE;GACA,qBAAqB,CAYjC;AAED;;;;;;;GAOG;AACH;IACG,OAAO,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACxD,IAAI,CAAC,wBAAiB,CAAC;aACnB,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,2BAAoB,CAAC,gCAAqB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;aAC9H,gBAAgB,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/lib/node/index.d.ts
CHANGED
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC"}
|
package/lib/node/index.js
CHANGED
|
@@ -25,5 +25,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
25
25
|
__exportStar(require("./connection-container-module"), exports);
|
|
26
26
|
__exportStar(require("./data-server-connection-handler"), exports);
|
|
27
27
|
__exportStar(require("./host-diagnostics-server"), exports);
|
|
28
|
-
__exportStar(require("./socket-channel-forwarder"), exports);
|
|
29
28
|
//# sourceMappingURL=index.js.map
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;;AAElF,gEAA8C;AAC9C,mEAAiD;AACjD,4DAA0C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;;AAElF,gEAA8C;AAC9C,mEAAiD;AACjD,4DAA0C"}
|