@hydranium/client-theia 1.0.0-next.216 → 1.0.0-next.218
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 +7 -5
- package/lib/browser/channel-logger.d.ts.map +1 -1
- package/lib/browser/channel-logger.js +1 -3
- package/lib/browser/channel-logger.js.map +1 -1
- package/lib/browser/editor-disk-sync.d.ts +11 -2
- package/lib/browser/editor-disk-sync.d.ts.map +1 -1
- package/lib/browser/editor-disk-sync.js +19 -1
- package/lib/browser/editor-disk-sync.js.map +1 -1
- package/lib/browser/hydranium-file-service.d.ts +1 -1
- package/lib/browser/hydranium-file-service.js +1 -1
- package/lib/node/socket-channel-forwarder.d.ts.map +1 -1
- package/lib/node/socket-channel-forwarder.js +2 -0
- package/lib/node/socket-channel-forwarder.js.map +1 -1
- package/package.json +3 -3
- package/src/browser/channel-logger.ts +1 -3
- package/src/browser/editor-disk-sync.ts +20 -3
- package/src/browser/hydranium-file-service.ts +1 -1
- package/src/node/socket-channel-forwarder.ts +2 -0
package/README.md
CHANGED
|
@@ -44,15 +44,16 @@ hydranium server; a non-Theia host does not need it.
|
|
|
44
44
|
file holds, so the save writes only the rest, a save participant's included;
|
|
45
45
|
on each watched change of the file to the editor's text it marks the editor
|
|
46
46
|
clean. Theia otherwise keeps the editor dirty, and its next save applies the
|
|
47
|
-
editor's edits to a file that already holds them.
|
|
48
|
-
`
|
|
47
|
+
editor's edits to a file that already holds them.
|
|
48
|
+
`bindEditorDiskSync(bind, isBound, rebind)` binds it, with
|
|
49
|
+
`HydraniumFileService`.
|
|
49
50
|
- **`HydraniumFileService`** — Theia's `FileService`, refusing an editor's
|
|
50
51
|
incremental save once the file's mtime has moved past the one the editor
|
|
51
52
|
read, so the editor writes its whole text instead. Theia's own check passes a
|
|
52
53
|
file of unchanged size, and the save then applies the editor's edits to a
|
|
53
54
|
file that may already hold them; `write` keeps Theia's check. The safety net
|
|
54
|
-
behind `EditorDiskSync`, for a save the sync cannot catch
|
|
55
|
-
`
|
|
55
|
+
behind `EditorDiskSync`, for a save the sync cannot catch, and bound with it
|
|
56
|
+
by `bindEditorDiskSync`.
|
|
56
57
|
- **`captureBrowserRuntime` / `formatBrowserRuntime`** — the renderer's own memory
|
|
57
58
|
reading as a `BrowserRuntimeReport`, preferring the standardized
|
|
58
59
|
`performance.measureUserAgentSpecificMemory()` and falling back to Chromium's
|
|
@@ -108,7 +109,8 @@ from here:
|
|
|
108
109
|
|
|
109
110
|
- a **frontend** module (a `ContainerModule` in the extension's `browser/` tier)
|
|
110
111
|
calls the `bind*` helpers — `bindChannelLogger`, `bindLogLevelPreference`,
|
|
111
|
-
`bindMemoryDiagnostics
|
|
112
|
+
`bindMemoryDiagnostics`, and `bindEditorDiskSync` whenever a server writes
|
|
113
|
+
files an editor can have open — and binds `MemoryDiagnosticsService` to your
|
|
112
114
|
data-server frontend;
|
|
113
115
|
- a **backend** module (the extension's `node/` tier) registers a
|
|
114
116
|
`AbstractSocketForwardingConnectionHandler` subclass as a Theia `ConnectionHandler`. In
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-logger.d.ts","sourceRoot":"","sources":["../../src/browser/channel-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAiB,KAAK,QAAQ,EAAkC,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAc,KAAK,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,KAAK,aAAa,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGpG;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;sFACsF;AACtF,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,aAAc,SAAQ,cAAc;IAIb,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB;IACvD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAJjF,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEnC,YACoD,cAAc,EAAE,oBAAoB,EACpC,OAAO,EAAE,oBAAoB,EACjE,SAAS,GAAE,MAAM,GAAG,SAA6B,EAGhE;IAED,SAAS,KAAK,OAAO,IAAI,aAAa,CAErC;IAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"channel-logger.d.ts","sourceRoot":"","sources":["../../src/browser/channel-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,cAAc,EAAiB,KAAK,QAAQ,EAAkC,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAc,KAAK,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,KAAK,aAAa,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGpG;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;sFACsF;AACtF,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,aAAc,SAAQ,cAAc;IAIb,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB;IACvD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAJjF,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEnC,YACoD,cAAc,EAAE,oBAAoB,EACpC,OAAO,EAAE,oBAAoB,EACjE,SAAS,GAAE,MAAM,GAAG,SAA6B,EAGhE;IAED,SAAS,KAAK,OAAO,IAAI,aAAa,CAErC;IAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAG/F;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOxC;CACH;AAOD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,eAA0B,CAAC;AAErD;gDACgD;AAChD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAOpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAc5F"}
|
|
@@ -60,10 +60,8 @@ let ChannelLogger = class ChannelLogger extends protocol_1.AbstractLogger {
|
|
|
60
60
|
return (this._channel ??= this.outputChannels.getChannel(this.options.channelName));
|
|
61
61
|
}
|
|
62
62
|
emit(_level, label, message, args) {
|
|
63
|
-
const componentSegment = this.component ? ` [${this.component}]` : '';
|
|
64
63
|
const formattedArgs = args.length > 0 ? ' ' + args.map(stringifyArg).join(' ') : '';
|
|
65
|
-
|
|
66
|
-
this.channel.appendLine(`[${label.padEnd(5)} - ${this.timestamp()}]${componentSegment} ${message}${formattedArgs}`);
|
|
64
|
+
this.channel.appendLine(`${this.formatLinePrefix(label)} ${message}${formattedArgs}`);
|
|
67
65
|
}
|
|
68
66
|
/**
|
|
69
67
|
* Allocates a free instance bypassing Inversify, so a derived logger inherits
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-logger.js","sourceRoot":"","sources":["../../src/browser/channel-logger.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;;;;;;;;;;;;;AAElF,kDAAmH;AACnH,4DAA8F;AAC9F,6EAAoG;AACpG,2CAAwC;AAkBxC;sFACsF;AACzE,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,yBAAc;IAIM,cAAc;IACd,OAAO;IAJjD,QAAQ,CAAiB;IAEnC,YACoD,cAAoC,EACpC,OAA6B,EACjE,YAAgC,OAAO,CAAC,SAAS;QAE9D,KAAK,CAAC,SAAS,CAAC,CAAC;8BAJgC,cAAc;uBACd,OAAO;IAI3D,CAAC;IAED,IAAc,OAAO;QAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACvF,CAAC;IAES,IAAI,CAAC,MAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,IAAwB;QACtF,MAAM,
|
|
1
|
+
{"version":3,"file":"channel-logger.js","sourceRoot":"","sources":["../../src/browser/channel-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import
|
|
9
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
|
|
10
10
|
import { ILogger } from '@theia/core/lib/common/logger';
|
|
11
11
|
import URI from '@theia/core/lib/common/uri';
|
|
12
|
+
import { type interfaces } from '@theia/core/shared/inversify';
|
|
12
13
|
import { EditorManager } from '@theia/editor/lib/browser/editor-manager';
|
|
13
14
|
import type { EditorWidget } from '@theia/editor/lib/browser/editor-widget';
|
|
14
15
|
import type { FileResourceVersion } from '@theia/filesystem/lib/browser/file-resource';
|
|
@@ -77,7 +78,7 @@ export declare function isResyncableEditorDocument(document: object): document i
|
|
|
77
78
|
* same-size gap included, and so is one whose file cannot be read within
|
|
78
79
|
* {@link readTimeoutMs}, or whose check throws.
|
|
79
80
|
*
|
|
80
|
-
*
|
|
81
|
+
* Bound by {@link bindEditorDiskSync}.
|
|
81
82
|
*/
|
|
82
83
|
export declare class EditorDiskSync implements FrontendApplicationContribution {
|
|
83
84
|
protected readonly fileService: FileService;
|
|
@@ -130,4 +131,12 @@ export declare class EditorDiskSync implements FrontendApplicationContribution {
|
|
|
130
131
|
*/
|
|
131
132
|
protected syncFromDisk(document: ResyncableEditorDocument, version: FileResourceVersion): void;
|
|
132
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Bind {@link EditorDiskSync} as a frontend contribution and rebind Theia's
|
|
136
|
+
* `FileService` to {@link HydraniumFileService}, unless `EditorDiskSync` is
|
|
137
|
+
* bound already. No framework module calls this, because the rebind would
|
|
138
|
+
* replace a frontend's own `FileService` binding. A subclass of the sync is
|
|
139
|
+
* rebound after this call: one bound before it skips the whole call.
|
|
140
|
+
*/
|
|
141
|
+
export declare function bindEditorDiskSync(bind: interfaces.Bind, isBound: interfaces.IsBound, rebind: interfaces.Rebind): void;
|
|
133
142
|
//# sourceMappingURL=editor-disk-sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-disk-sync.d.ts","sourceRoot":"","sources":["../../src/browser/editor-disk-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,
|
|
1
|
+
{"version":3,"file":"editor-disk-sync.d.ts","sourceRoot":"","sources":["../../src/browser/editor-disk-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,13 +22,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.EditorDiskSync = void 0;
|
|
24
24
|
exports.isResyncableEditorDocument = isResyncableEditorDocument;
|
|
25
|
+
exports.bindEditorDiskSync = bindEditorDiskSync;
|
|
25
26
|
const protocol_1 = require("@hydranium/protocol");
|
|
27
|
+
const frontend_application_contribution_1 = require("@theia/core/lib/browser/frontend-application-contribution");
|
|
26
28
|
const logger_1 = require("@theia/core/lib/common/logger");
|
|
27
29
|
const uri_1 = __importDefault(require("@theia/core/lib/common/uri"));
|
|
28
30
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
31
|
const editor_manager_1 = require("@theia/editor/lib/browser/editor-manager");
|
|
30
32
|
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
31
33
|
const clock_1 = require("../common/clock");
|
|
34
|
+
const hydranium_file_service_1 = require("./hydranium-file-service");
|
|
32
35
|
/** Whether `document` carries the members of {@link ResyncableEditorDocument}. */
|
|
33
36
|
function isResyncableEditorDocument(document) {
|
|
34
37
|
return ('uri' in document &&
|
|
@@ -82,7 +85,7 @@ function isResyncableEditorDocument(document) {
|
|
|
82
85
|
* same-size gap included, and so is one whose file cannot be read within
|
|
83
86
|
* {@link readTimeoutMs}, or whose check throws.
|
|
84
87
|
*
|
|
85
|
-
*
|
|
88
|
+
* Bound by {@link bindEditorDiskSync}.
|
|
86
89
|
*/
|
|
87
90
|
let EditorDiskSync = class EditorDiskSync {
|
|
88
91
|
fileService;
|
|
@@ -229,4 +232,19 @@ __decorate([
|
|
|
229
232
|
exports.EditorDiskSync = EditorDiskSync = __decorate([
|
|
230
233
|
(0, inversify_1.injectable)()
|
|
231
234
|
], EditorDiskSync);
|
|
235
|
+
/**
|
|
236
|
+
* Bind {@link EditorDiskSync} as a frontend contribution and rebind Theia's
|
|
237
|
+
* `FileService` to {@link HydraniumFileService}, unless `EditorDiskSync` is
|
|
238
|
+
* bound already. No framework module calls this, because the rebind would
|
|
239
|
+
* replace a frontend's own `FileService` binding. A subclass of the sync is
|
|
240
|
+
* rebound after this call: one bound before it skips the whole call.
|
|
241
|
+
*/
|
|
242
|
+
function bindEditorDiskSync(bind, isBound, rebind) {
|
|
243
|
+
if (isBound(EditorDiskSync)) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
bind(EditorDiskSync).toSelf().inSingletonScope();
|
|
247
|
+
bind(frontend_application_contribution_1.FrontendApplicationContribution).toService(EditorDiskSync);
|
|
248
|
+
rebind(file_service_1.FileService).to(hydranium_file_service_1.HydraniumFileService).inSingletonScope();
|
|
249
|
+
}
|
|
232
250
|
//# sourceMappingURL=editor-disk-sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-disk-sync.js","sourceRoot":"","sources":["../../src/browser/editor-disk-sync.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF
|
|
1
|
+
{"version":3,"file":"editor-disk-sync.js","sourceRoot":"","sources":["../../src/browser/editor-disk-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ import { FileService, type UpdateTextFileOptions } from '@theia/filesystem/lib/b
|
|
|
36
36
|
* as it does for Theia's own check. A file whose mtime moves while its text
|
|
37
37
|
* stays the same costs a whole-text write rather than the edits.
|
|
38
38
|
*
|
|
39
|
-
*
|
|
39
|
+
* Bound by `bindEditorDiskSync`.
|
|
40
40
|
*/
|
|
41
41
|
export declare class HydraniumFileService extends FileService {
|
|
42
42
|
update(resource: URI, changes: Parameters<FileService['update']>[1], options: UpdateTextFileOptions): ReturnType<FileService['update']>;
|
|
@@ -46,7 +46,7 @@ const files_1 = require("@theia/filesystem/lib/common/files");
|
|
|
46
46
|
* as it does for Theia's own check. A file whose mtime moves while its text
|
|
47
47
|
* stays the same costs a whole-text write rather than the edits.
|
|
48
48
|
*
|
|
49
|
-
*
|
|
49
|
+
* Bound by `bindEditorDiskSync`.
|
|
50
50
|
*/
|
|
51
51
|
let HydraniumFileService = class HydraniumFileService extends file_service_1.FileService {
|
|
52
52
|
update(resource, changes, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-channel-forwarder.d.ts","sourceRoot":"","sources":["../../src/node/socket-channel-forwarder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,KAAK,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AACrC,OAAO,EAEJ,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAGxB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,YAAW,UAAU;IAYnD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM;IACrC,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAdlC,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAC1D,oGAAoG;IACpG,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAqB;IACvD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAU;IAEnD,YACsB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM;IACrC,oCAAoC;IACjB,KAAK,GAAE,KAAyB,
|
|
1
|
+
{"version":3,"file":"socket-channel-forwarder.d.ts","sourceRoot":"","sources":["../../src/node/socket-channel-forwarder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,KAAK,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAC;AACrC,OAAO,EAEJ,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAGxB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,YAAW,UAAU;IAYnD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM;IACrC,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAdlC,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAC1D,oGAAoG;IACpG,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAqB;IACvD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAU;IAEnD,YACsB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM;IACrC,oCAAoC;IACjB,KAAK,GAAE,KAAyB,EAyBrD;IAED;;;;;OAKG;IACH,UAAgB,SAAS,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;IAED,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAGjE;IAED,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI/C;IAED,OAAO,IAAI,IAAI,CAEd;CACH"}
|
|
@@ -46,6 +46,8 @@ class SocketChannelForwarder {
|
|
|
46
46
|
this.clock = clock;
|
|
47
47
|
const reader = new node_1.SocketMessageReader(socket);
|
|
48
48
|
const writer = new node_1.SocketMessageWriter(socket);
|
|
49
|
+
// Never listens, so it handles no message and has nothing to log.
|
|
50
|
+
// ast-grep-ignore: connection-without-logger
|
|
49
51
|
const connection = (0, node_1.createMessageConnection)(reader, writer);
|
|
50
52
|
// Nothing here destroys the socket directly. `SocketMessageWriter.dispose()`
|
|
51
53
|
// destroys it itself, which covers both `dispose` and `endSocket`; and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-channel-forwarder.js","sourceRoot":"","sources":["../../src/node/socket-channel-forwarder.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,kDAA8D;AAC9D,sCAAmG;AAEnG,8CAM6B;AAE7B;;;;;;;;;;;;GAYG;AACH;IAYyB,OAAO;IACP,MAAM;IAEN,KAAK;IAdR,SAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;IAC1D,oGAAoG;IAC1F,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD;;;;OAIG;IACgB,cAAc,GAAW,MAAM,CAAC;IAEnD,YACsB,OAAgB,EAChB,MAAkB;IACrC,oCAAoC;IACjB,KAAK,GAAU,IAAI,sBAAW,EAAE;uBAHhC,OAAO;sBACP,MAAM;qBAEN,KAAK;QAExB,MAAM,MAAM,GAAG,IAAI,0BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,0BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAA,8BAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,6EAA6E;QAC7E,uEAAuE;QACvE,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC1B,wEAAwE;gBACxE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7F,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtD,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,iBAAU,CAAC,MAAM,CAAC,GAAG,EAAE;gBACpB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC,CAAC;SACJ,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,SAAS,CAAC,UAA6B;QACpD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChE,UAAU,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAES,oBAAoB,CAAC,QAAyB;QACrD,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAY,CAAC;IAClE,CAAC;IAES,cAAc,CAAC,OAAgB;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAClD,WAAW,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,WAAW,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACJ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"socket-channel-forwarder.js","sourceRoot":"","sources":["../../src/node/socket-channel-forwarder.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,kDAA8D;AAC9D,sCAAmG;AAEnG,8CAM6B;AAE7B;;;;;;;;;;;;GAYG;AACH;IAYyB,OAAO;IACP,MAAM;IAEN,KAAK;IAdR,SAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;IAC1D,oGAAoG;IAC1F,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD;;;;OAIG;IACgB,cAAc,GAAW,MAAM,CAAC;IAEnD,YACsB,OAAgB,EAChB,MAAkB;IACrC,oCAAoC;IACjB,KAAK,GAAU,IAAI,sBAAW,EAAE;uBAHhC,OAAO;sBACP,MAAM;qBAEN,KAAK;QAExB,MAAM,MAAM,GAAG,IAAI,0BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,0BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,kEAAkE;QAClE,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAA,8BAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,6EAA6E;QAC7E,uEAAuE;QACvE,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC1B,wEAAwE;gBACxE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7F,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtD,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,iBAAU,CAAC,MAAM,CAAC,GAAG,EAAE;gBACpB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC,CAAC;SACJ,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,SAAS,CAAC,UAA6B;QACpD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChE,UAAU,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAES,oBAAoB,CAAC,QAAyB;QACrD,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAY,CAAC;IAClE,CAAC;IAES,cAAc,CAAC,OAAgB;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAClD,WAAW,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,WAAW,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACJ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACH"}
|
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.218",
|
|
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.218",
|
|
69
69
|
"@theia/core": "^1.70.0",
|
|
70
70
|
"@theia/editor": "^1.70.0",
|
|
71
71
|
"@theia/filesystem": "^1.70.0",
|
|
@@ -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.218",
|
|
82
82
|
"@theia/core": "^1.70.0",
|
|
83
83
|
"@theia/editor": "^1.70.0",
|
|
84
84
|
"@theia/filesystem": "^1.70.0",
|
|
@@ -66,10 +66,8 @@ export class ChannelLogger extends AbstractLogger {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
protected emit(_level: LogLevel, label: string, message: string, args: readonly unknown[]): void {
|
|
69
|
-
const componentSegment = this.component ? ` [${this.component}]` : '';
|
|
70
69
|
const formattedArgs = args.length > 0 ? ' ' + args.map(stringifyArg).join(' ') : '';
|
|
71
|
-
|
|
72
|
-
this.channel.appendLine(`[${label.padEnd(5)} - ${this.timestamp()}]${componentSegment} ${message}${formattedArgs}`);
|
|
70
|
+
this.channel.appendLine(`${this.formatLinePrefix(label)} ${message}${formattedArgs}`);
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
/**
|
|
@@ -8,15 +8,16 @@
|
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
|
|
10
10
|
import { SystemClock, TIMED_OUT } from '@hydranium/protocol';
|
|
11
|
-
import
|
|
11
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application-contribution';
|
|
12
12
|
import { ILogger } from '@theia/core/lib/common/logger';
|
|
13
13
|
import URI from '@theia/core/lib/common/uri';
|
|
14
|
-
import { inject, injectable, optional } from '@theia/core/shared/inversify';
|
|
14
|
+
import { inject, injectable, optional, type interfaces } from '@theia/core/shared/inversify';
|
|
15
15
|
import { EditorManager } from '@theia/editor/lib/browser/editor-manager';
|
|
16
16
|
import type { EditorWidget } from '@theia/editor/lib/browser/editor-widget';
|
|
17
17
|
import type { FileResourceVersion } from '@theia/filesystem/lib/browser/file-resource';
|
|
18
18
|
import { FileService, type TextFileContent } from '@theia/filesystem/lib/browser/file-service';
|
|
19
19
|
import { Clock } from '../common/clock';
|
|
20
|
+
import { HydraniumFileService } from './hydranium-file-service';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* The members of Theia's Monaco editor model {@link EditorDiskSync} reads and
|
|
@@ -96,7 +97,7 @@ export function isResyncableEditorDocument(document: object): document is Resync
|
|
|
96
97
|
* same-size gap included, and so is one whose file cannot be read within
|
|
97
98
|
* {@link readTimeoutMs}, or whose check throws.
|
|
98
99
|
*
|
|
99
|
-
*
|
|
100
|
+
* Bound by {@link bindEditorDiskSync}.
|
|
100
101
|
*/
|
|
101
102
|
@injectable()
|
|
102
103
|
export class EditorDiskSync implements FrontendApplicationContribution {
|
|
@@ -234,3 +235,19 @@ export class EditorDiskSync implements FrontendApplicationContribution {
|
|
|
234
235
|
void document.revert({ soft: true });
|
|
235
236
|
}
|
|
236
237
|
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Bind {@link EditorDiskSync} as a frontend contribution and rebind Theia's
|
|
241
|
+
* `FileService` to {@link HydraniumFileService}, unless `EditorDiskSync` is
|
|
242
|
+
* bound already. No framework module calls this, because the rebind would
|
|
243
|
+
* replace a frontend's own `FileService` binding. A subclass of the sync is
|
|
244
|
+
* rebound after this call: one bound before it skips the whole call.
|
|
245
|
+
*/
|
|
246
|
+
export function bindEditorDiskSync(bind: interfaces.Bind, isBound: interfaces.IsBound, rebind: interfaces.Rebind): void {
|
|
247
|
+
if (isBound(EditorDiskSync)) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
bind(EditorDiskSync).toSelf().inSingletonScope();
|
|
251
|
+
bind(FrontendApplicationContribution).toService(EditorDiskSync);
|
|
252
|
+
rebind(FileService).to(HydraniumFileService).inSingletonScope();
|
|
253
|
+
}
|
|
@@ -40,7 +40,7 @@ import { ETAG_DISABLED } from '@theia/filesystem/lib/common/files';
|
|
|
40
40
|
* as it does for Theia's own check. A file whose mtime moves while its text
|
|
41
41
|
* stays the same costs a whole-text write rather than the edits.
|
|
42
42
|
*
|
|
43
|
-
*
|
|
43
|
+
* Bound by `bindEditorDiskSync`.
|
|
44
44
|
*/
|
|
45
45
|
@injectable()
|
|
46
46
|
export class HydraniumFileService extends FileService {
|
|
@@ -50,6 +50,8 @@ export class SocketChannelForwarder implements Disposable {
|
|
|
50
50
|
) {
|
|
51
51
|
const reader = new SocketMessageReader(socket);
|
|
52
52
|
const writer = new SocketMessageWriter(socket);
|
|
53
|
+
// Never listens, so it handles no message and has nothing to log.
|
|
54
|
+
// ast-grep-ignore: connection-without-logger
|
|
53
55
|
const connection = createMessageConnection(reader, writer);
|
|
54
56
|
// Nothing here destroys the socket directly. `SocketMessageWriter.dispose()`
|
|
55
57
|
// destroys it itself, which covers both `dispose` and `endSocket`; and
|