@hydranium/protocol 1.0.0-next.123 → 1.0.0-next.127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client/data-connection.d.ts +35 -4
- package/lib/client/data-connection.d.ts.map +1 -1
- package/lib/client/data-connection.js +67 -5
- package/lib/client/data-connection.js.map +1 -1
- package/lib/client/data-events.d.ts +5 -1
- package/lib/client/data-events.d.ts.map +1 -1
- package/lib/client/data-events.js +7 -0
- package/lib/client/data-events.js.map +1 -1
- package/lib/client/data-session.d.ts +76 -8
- package/lib/client/data-session.d.ts.map +1 -1
- package/lib/client/data-session.js +108 -19
- package/lib/client/data-session.js.map +1 -1
- package/lib/client/index.d.ts +3 -1
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +3 -1
- package/lib/client/index.js.map +1 -1
- package/lib/client/message-relay.d.ts +1 -1
- package/lib/client/message-relay.js +1 -1
- package/lib/client/post-message-transport.d.ts +64 -3
- package/lib/client/post-message-transport.d.ts.map +1 -1
- package/lib/client/post-message-transport.js +175 -1
- package/lib/client/post-message-transport.js.map +1 -1
- package/lib/client/rpc-connection.d.ts +6 -0
- package/lib/client/rpc-connection.d.ts.map +1 -1
- package/lib/client/rpc-connection.js +9 -1
- package/lib/client/rpc-connection.js.map +1 -1
- package/lib/clock.d.ts +38 -0
- package/lib/clock.d.ts.map +1 -1
- package/lib/clock.js +36 -1
- package/lib/clock.js.map +1 -1
- package/lib/data/data-protocol-methods.d.ts +2 -2
- package/lib/data/data-protocol-methods.d.ts.map +1 -1
- package/lib/data/data-protocol-methods.js +1 -0
- package/lib/data/data-protocol-methods.js.map +1 -1
- package/lib/data/data-server-protocol.d.ts +11 -1
- package/lib/data/data-server-protocol.d.ts.map +1 -1
- package/lib/data/events.d.ts +14 -0
- package/lib/data/events.d.ts.map +1 -1
- package/lib/errors.d.ts +20 -9
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +18 -9
- package/lib/errors.js.map +1 -1
- package/lib/glsp-save-model-actions.d.ts +50 -0
- package/lib/glsp-save-model-actions.d.ts.map +1 -0
- package/lib/glsp-save-model-actions.js +28 -0
- package/lib/glsp-save-model-actions.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/messages/index.d.ts +1 -1
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +2 -1
- package/lib/messages/index.js.map +1 -1
- package/lib/testing/data-doubles.d.ts +3 -1
- package/lib/testing/data-doubles.d.ts.map +1 -1
- package/lib/testing/data-doubles.js +6 -1
- package/lib/testing/data-doubles.js.map +1 -1
- package/lib/testing/fake-clock.d.ts +9 -1
- package/lib/testing/fake-clock.d.ts.map +1 -1
- package/lib/testing/fake-clock.js +54 -45
- package/lib/testing/fake-clock.js.map +1 -1
- package/lib/testing/node/index.d.ts +1 -0
- package/lib/testing/node/index.d.ts.map +1 -1
- package/lib/testing/node/index.js +2 -2
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/message-port-pair.d.ts +25 -0
- package/lib/testing/node/message-port-pair.d.ts.map +1 -0
- package/lib/testing/node/message-port-pair.js +26 -0
- package/lib/testing/node/message-port-pair.js.map +1 -0
- package/lib/transfer-document.d.ts +8 -0
- package/lib/transfer-document.d.ts.map +1 -1
- package/lib/transfer-document.js.map +1 -1
- package/package.json +1 -1
- package/src/client/data-connection.ts +72 -6
- package/src/client/data-events.ts +9 -0
- package/src/client/data-session.ts +125 -21
- package/src/client/index.ts +3 -1
- package/src/client/message-relay.ts +1 -1
- package/src/client/post-message-transport.ts +219 -4
- package/src/client/rpc-connection.ts +10 -1
- package/src/clock.ts +56 -0
- package/src/data/data-protocol-methods.ts +1 -0
- package/src/data/data-server-protocol.ts +12 -0
- package/src/data/events.ts +16 -0
- package/src/errors.ts +24 -9
- package/src/glsp-save-model-actions.ts +59 -0
- package/src/index.ts +1 -0
- package/src/messages/index.ts +1 -1
- package/src/testing/data-doubles.ts +10 -1
- package/src/testing/fake-clock.ts +62 -47
- package/src/testing/node/index.ts +2 -2
- package/src/testing/node/message-port-pair.ts +40 -0
- package/src/transfer-document.ts +8 -0
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import {
|
|
9
|
+
import { Emitter, type Event } from 'vscode-jsonrpc';
|
|
10
|
+
import { type DataClientProtocol, type DataServerProtocol, type DiagnosticOf, type ProjectOf, type TransferDocumentDirtyChangedEvent } from '../data';
|
|
10
11
|
import type { TransferElement } from '../transfer-element';
|
|
11
12
|
import { DataEvents } from './data-events';
|
|
12
13
|
import type { DataPort } from './data-port';
|
|
@@ -59,13 +60,34 @@ export type DataConnectionArgs<TTransfer extends TransferElement, TClient extend
|
|
|
59
60
|
export declare class DataConnection<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>, TClient extends object = DataClientProtocol<TTransfer>> extends RpcConnection<TServer, TClient> {
|
|
60
61
|
protected readonly sessions: Set<DataSession<TTransfer, TServer>>;
|
|
61
62
|
protected readonly sessionFactory: DataSessionFactory<TTransfer, TServer>;
|
|
63
|
+
protected readonly createSessionEmitter: Emitter<DataSession<TTransfer, TServer>>;
|
|
64
|
+
/**
|
|
65
|
+
* Fires with each session {@link createSession} starts, before it returns,
|
|
66
|
+
* so a listener sees every session a caller can. A session started before
|
|
67
|
+
* the listener subscribed is in {@link liveSessions}.
|
|
68
|
+
*/
|
|
69
|
+
readonly onDidCreateSession: Event<DataSession<TTransfer, TServer>>;
|
|
70
|
+
/**
|
|
71
|
+
* Per URI, the `dirty` the client was last told since a session of this
|
|
72
|
+
* connection last opened the URI. A restore tells the client its answer
|
|
73
|
+
* only where it differs, so the client hears changes and nothing else; see
|
|
74
|
+
* {@link DataSessionHost.restoreDirty}.
|
|
75
|
+
*/
|
|
76
|
+
protected readonly dirtyStates: Map<string, boolean>;
|
|
62
77
|
constructor(port: DataPort, client: TClient, ...rest: DataConnectionArgs<TTransfer, TClient, TServer>);
|
|
78
|
+
/**
|
|
79
|
+
* The sessions of this connection that have not ended, in the order they
|
|
80
|
+
* started. A session is listed until its `onDidDispose` fires, or until
|
|
81
|
+
* {@link dispose} clears the list.
|
|
82
|
+
*/
|
|
83
|
+
get liveSessions(): readonly DataSession<TTransfer, TServer>[];
|
|
63
84
|
/**
|
|
64
85
|
* Start a participant on this connection, registered with the server under a
|
|
65
86
|
* fresh id, `label` plus `#` plus a random UUID, or under `clientId` when
|
|
66
|
-
* given.
|
|
67
|
-
*
|
|
68
|
-
*
|
|
87
|
+
* given. Pass a `label` naming the participant; without one it is
|
|
88
|
+
* `session`. Synchronous: the registration is sent at once, and the
|
|
89
|
+
* session's calls wait for it. The server refuses an id live anywhere in
|
|
90
|
+
* its process, and every call of that session then rejects with a
|
|
69
91
|
* `DuplicateClientIdError` code.
|
|
70
92
|
*
|
|
71
93
|
* Throws for an id in {@link FRAMEWORK_CLIENT_IDS} — those are authors the
|
|
@@ -74,6 +96,15 @@ export declare class DataConnection<TTransfer extends TransferElement, TServer e
|
|
|
74
96
|
* an id a live session on this connection already holds.
|
|
75
97
|
*/
|
|
76
98
|
createSession(label?: string, clientId?: string): DataSession<TTransfer, TServer>;
|
|
99
|
+
/**
|
|
100
|
+
* The client, with its `onDocumentDirtyChanged` passing through
|
|
101
|
+
* {@link deliverDirty} first, so {@link dirtyStates} holds what the server
|
|
102
|
+
* told it. Every other bound method forwards to the client unchanged, and
|
|
103
|
+
* one the client lacks stays absent, so the binding still refuses it.
|
|
104
|
+
*/
|
|
105
|
+
protected localTarget(): TClient;
|
|
106
|
+
/** Record `event` in {@link dirtyStates} and hand it to the client. */
|
|
107
|
+
protected deliverDirty(event: TransferDocumentDirtyChangedEvent): void;
|
|
77
108
|
/**
|
|
78
109
|
* After the transport dropped, reconnect on the next macrotask for the
|
|
79
110
|
* sessions with documents open, so they re-watch and follow their documents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-connection.d.ts","sourceRoot":"","sources":["../../src/client/data-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;
|
|
1
|
+
{"version":3,"file":"data-connection.d.ts","sourceRoot":"","sources":["../../src/client/data-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.DataConnectionWithEvents = exports.DataConnection = void 0;
|
|
12
|
+
const vscode_jsonrpc_1 = require("vscode-jsonrpc");
|
|
12
13
|
const client_ids_1 = require("../client-ids");
|
|
13
14
|
const data_1 = require("../data");
|
|
14
15
|
const data_events_1 = require("./data-events");
|
|
@@ -30,6 +31,20 @@ const rpc_connection_1 = require("./rpc-connection");
|
|
|
30
31
|
class DataConnection extends rpc_connection_1.RpcConnection {
|
|
31
32
|
sessions = new Set();
|
|
32
33
|
sessionFactory;
|
|
34
|
+
createSessionEmitter = new vscode_jsonrpc_1.Emitter();
|
|
35
|
+
/**
|
|
36
|
+
* Fires with each session {@link createSession} starts, before it returns,
|
|
37
|
+
* so a listener sees every session a caller can. A session started before
|
|
38
|
+
* the listener subscribed is in {@link liveSessions}.
|
|
39
|
+
*/
|
|
40
|
+
onDidCreateSession = this.createSessionEmitter.event;
|
|
41
|
+
/**
|
|
42
|
+
* Per URI, the `dirty` the client was last told since a session of this
|
|
43
|
+
* connection last opened the URI. A restore tells the client its answer
|
|
44
|
+
* only where it differs, so the client hears changes and nothing else; see
|
|
45
|
+
* {@link DataSessionHost.restoreDirty}.
|
|
46
|
+
*/
|
|
47
|
+
dirtyStates = new Map();
|
|
33
48
|
constructor(port, client, ...rest) {
|
|
34
49
|
const [options = {}] = rest;
|
|
35
50
|
super(port, client, {
|
|
@@ -43,12 +58,21 @@ class DataConnection extends rpc_connection_1.RpcConnection {
|
|
|
43
58
|
this.sessionFactory =
|
|
44
59
|
options.sessionFactory ?? ((clientId, host, label) => new data_session_1.DataSession(clientId, host, label));
|
|
45
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* The sessions of this connection that have not ended, in the order they
|
|
63
|
+
* started. A session is listed until its `onDidDispose` fires, or until
|
|
64
|
+
* {@link dispose} clears the list.
|
|
65
|
+
*/
|
|
66
|
+
get liveSessions() {
|
|
67
|
+
return [...this.sessions];
|
|
68
|
+
}
|
|
46
69
|
/**
|
|
47
70
|
* Start a participant on this connection, registered with the server under a
|
|
48
71
|
* fresh id, `label` plus `#` plus a random UUID, or under `clientId` when
|
|
49
|
-
* given.
|
|
50
|
-
*
|
|
51
|
-
*
|
|
72
|
+
* given. Pass a `label` naming the participant; without one it is
|
|
73
|
+
* `session`. Synchronous: the registration is sent at once, and the
|
|
74
|
+
* session's calls wait for it. The server refuses an id live anywhere in
|
|
75
|
+
* its process, and every call of that session then rejects with a
|
|
52
76
|
* `DuplicateClientIdError` code.
|
|
53
77
|
*
|
|
54
78
|
* Throws for an id in {@link FRAMEWORK_CLIENT_IDS} — those are authors the
|
|
@@ -67,15 +91,51 @@ class DataConnection extends rpc_connection_1.RpcConnection {
|
|
|
67
91
|
}
|
|
68
92
|
const session = this.sessionFactory(id, {
|
|
69
93
|
connected: () => this.connected(),
|
|
70
|
-
|
|
71
|
-
|
|
94
|
+
reportError: (error, reported) => this.reportError(error, reported),
|
|
95
|
+
restoreDirty: event => {
|
|
96
|
+
if (this.dirtyStates.get(event.uri) !== event.dirty) {
|
|
97
|
+
this.deliverDirty(event);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
forgetDirty: uri => this.dirtyStates.delete(uri)
|
|
72
101
|
}, label);
|
|
73
102
|
this.sessions.add(session);
|
|
103
|
+
// Subscribed before the session is handed out, so the id is free again
|
|
104
|
+
// on this connection by the time any caller's listener runs.
|
|
105
|
+
session.onDidDispose(() => this.sessions.delete(session));
|
|
74
106
|
// A failure reaches the session's own calls, which wait for the same
|
|
75
107
|
// registration; caught here only so it is not also reported unhandled.
|
|
76
108
|
session.connected().catch(() => undefined);
|
|
109
|
+
this.createSessionEmitter.fire(session);
|
|
77
110
|
return session;
|
|
78
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* The client, with its `onDocumentDirtyChanged` passing through
|
|
114
|
+
* {@link deliverDirty} first, so {@link dirtyStates} holds what the server
|
|
115
|
+
* told it. Every other bound method forwards to the client unchanged, and
|
|
116
|
+
* one the client lacks stays absent, so the binding still refuses it.
|
|
117
|
+
*/
|
|
118
|
+
localTarget() {
|
|
119
|
+
const client = this.client;
|
|
120
|
+
if (typeof client.onDocumentDirtyChanged !== 'function') {
|
|
121
|
+
return this.client;
|
|
122
|
+
}
|
|
123
|
+
const target = {};
|
|
124
|
+
for (const name of this.clientMethods) {
|
|
125
|
+
const method = client[name];
|
|
126
|
+
if (typeof method === 'function') {
|
|
127
|
+
target[name] = (params) => method.call(client, params);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
target.onDocumentDirtyChanged = (event) => this.deliverDirty(event);
|
|
131
|
+
return target;
|
|
132
|
+
}
|
|
133
|
+
/** Record `event` in {@link dirtyStates} and hand it to the client. */
|
|
134
|
+
deliverDirty(event) {
|
|
135
|
+
this.dirtyStates.set(event.uri, event.dirty);
|
|
136
|
+
const client = this.client;
|
|
137
|
+
client.onDocumentDirtyChanged?.(event);
|
|
138
|
+
}
|
|
79
139
|
/**
|
|
80
140
|
* After the transport dropped, reconnect on the next macrotask for the
|
|
81
141
|
* sessions with documents open, so they re-watch and follow their documents
|
|
@@ -103,7 +163,9 @@ class DataConnection extends rpc_connection_1.RpcConnection {
|
|
|
103
163
|
for (const session of [...this.sessions]) {
|
|
104
164
|
session.detach();
|
|
105
165
|
}
|
|
166
|
+
// For a factory's session whose `detach` does not fire.
|
|
106
167
|
this.sessions.clear();
|
|
168
|
+
this.createSessionEmitter.dispose();
|
|
107
169
|
super.dispose();
|
|
108
170
|
}
|
|
109
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-connection.js","sourceRoot":"","sources":["../../src/client/data-connection.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,8CAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"data-connection.js","sourceRoot":"","sources":["../../src/client/data-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { Emitter, type Event } from 'vscode-jsonrpc';
|
|
10
|
-
import type { DataClientProtocol, ProjectsChangedEvent, TransferDocumentDeletedEvent, TransferDocumentSavedEvent, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '../data';
|
|
10
|
+
import type { DataClientProtocol, ProjectsChangedEvent, TransferDocumentDeletedEvent, TransferDocumentDirtyChangedEvent, TransferDocumentSavedEvent, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '../data';
|
|
11
11
|
import type { Project } from '../project';
|
|
12
12
|
import type { TransferDiagnostic } from '../transfer-diagnostic';
|
|
13
13
|
import type { TransferElement } from '../transfer-element';
|
|
@@ -34,6 +34,7 @@ import type { TransferElement } from '../transfer-element';
|
|
|
34
34
|
export declare class DataEvents<TTransfer extends TransferElement, TDiagnostic extends TransferDiagnostic = TransferDiagnostic, TProject extends Project = Project> implements DataClientProtocol<TTransfer, TDiagnostic, TProject> {
|
|
35
35
|
protected readonly documentUpdatedEmitter: Emitter<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
36
36
|
protected readonly documentSavedEmitter: Emitter<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
37
|
+
protected readonly documentDirtyChangedEmitter: Emitter<TransferDocumentDirtyChangedEvent>;
|
|
37
38
|
protected readonly documentDeletedEmitter: Emitter<TransferDocumentDeletedEvent>;
|
|
38
39
|
protected readonly documentsBuiltEmitter: Emitter<TransferDocumentsBuiltEvent>;
|
|
39
40
|
protected readonly projectsChangedEmitter: Emitter<ProjectsChangedEvent<TProject>>;
|
|
@@ -41,6 +42,8 @@ export declare class DataEvents<TTransfer extends TransferElement, TDiagnostic e
|
|
|
41
42
|
readonly onDidUpdateDocument: Event<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
42
43
|
/** A watched document was persisted to disk. */
|
|
43
44
|
readonly onDidSaveDocument: Event<TransferDocumentSavedEvent<TTransfer, TDiagnostic>>;
|
|
45
|
+
/** A watched document's text started or stopped differing from its file. */
|
|
46
|
+
readonly onDidChangeDocumentDirty: Event<TransferDocumentDirtyChangedEvent>;
|
|
44
47
|
/** A document's backing file was removed, watched or not. Any watch survives. */
|
|
45
48
|
readonly onDidDeleteDocument: Event<TransferDocumentDeletedEvent>;
|
|
46
49
|
/** Documents built that nobody watches — re-read anything derived from them. */
|
|
@@ -49,6 +52,7 @@ export declare class DataEvents<TTransfer extends TransferElement, TDiagnostic e
|
|
|
49
52
|
readonly onDidChangeProjects: Event<ProjectsChangedEvent<TProject>>;
|
|
50
53
|
onDocumentUpdated(event: TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>): void;
|
|
51
54
|
onDocumentSaved(event: TransferDocumentSavedEvent<TTransfer, TDiagnostic>): void;
|
|
55
|
+
onDocumentDirtyChanged(event: TransferDocumentDirtyChangedEvent): void;
|
|
52
56
|
onDocumentDeleted(event: TransferDocumentDeletedEvent): void;
|
|
53
57
|
onDocumentsBuilt(event: TransferDocumentsBuiltEvent): void;
|
|
54
58
|
onProjectsChanged(event: ProjectsChangedEvent<TProject>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-events.d.ts","sourceRoot":"","sources":["../../src/client/data-events.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EACT,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAU,CACpB,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,sBAAsB,gEAAuE;IAChH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,8DAAqE;IAC5G,SAAS,CAAC,QAAQ,CAAC,sBAAsB,wCAA+C;IACxF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,uCAA8C;IACtF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,0CAAiD;IAE1F,4FAA4F;IAC5F,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAqC;IAC9H,gDAAgD;IAChD,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAmC;IACxH,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAqC;IACtG,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAoC;IACpG,+BAA+B;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAqC;IAIxG,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;IAIpF,eAAe,CAAC,KAAK,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;IAIhF,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,GAAG,IAAI;IAI5D,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAI1D,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9D,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"data-events.d.ts","sourceRoot":"","sources":["../../src/client/data-events.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EACT,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAU,CACpB,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,sBAAsB,gEAAuE;IAChH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,8DAAqE;IAC5G,SAAS,CAAC,QAAQ,CAAC,2BAA2B,6CAAoD;IAClG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,wCAA+C;IACxF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,uCAA8C;IACtF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,0CAAiD;IAE1F,4FAA4F;IAC5F,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAqC;IAC9H,gDAAgD;IAChD,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAmC;IACxH,4EAA4E;IAC5E,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAA0C;IACrH,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAqC;IACtG,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAoC;IACpG,+BAA+B;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAqC;IAIxG,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;IAIpF,eAAe,CAAC,KAAK,EAAE,0BAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;IAIhF,sBAAsB,CAAC,KAAK,EAAE,iCAAiC,GAAG,IAAI;IAItE,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,GAAG,IAAI;IAI5D,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAI1D,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9D,OAAO,IAAI,IAAI;CAQjB"}
|
|
@@ -33,6 +33,7 @@ const vscode_jsonrpc_1 = require("vscode-jsonrpc");
|
|
|
33
33
|
class DataEvents {
|
|
34
34
|
documentUpdatedEmitter = new vscode_jsonrpc_1.Emitter();
|
|
35
35
|
documentSavedEmitter = new vscode_jsonrpc_1.Emitter();
|
|
36
|
+
documentDirtyChangedEmitter = new vscode_jsonrpc_1.Emitter();
|
|
36
37
|
documentDeletedEmitter = new vscode_jsonrpc_1.Emitter();
|
|
37
38
|
documentsBuiltEmitter = new vscode_jsonrpc_1.Emitter();
|
|
38
39
|
projectsChangedEmitter = new vscode_jsonrpc_1.Emitter();
|
|
@@ -40,6 +41,8 @@ class DataEvents {
|
|
|
40
41
|
onDidUpdateDocument = this.documentUpdatedEmitter.event;
|
|
41
42
|
/** A watched document was persisted to disk. */
|
|
42
43
|
onDidSaveDocument = this.documentSavedEmitter.event;
|
|
44
|
+
/** A watched document's text started or stopped differing from its file. */
|
|
45
|
+
onDidChangeDocumentDirty = this.documentDirtyChangedEmitter.event;
|
|
43
46
|
/** A document's backing file was removed, watched or not. Any watch survives. */
|
|
44
47
|
onDidDeleteDocument = this.documentDeletedEmitter.event;
|
|
45
48
|
/** Documents built that nobody watches — re-read anything derived from them. */
|
|
@@ -53,6 +56,9 @@ class DataEvents {
|
|
|
53
56
|
onDocumentSaved(event) {
|
|
54
57
|
this.documentSavedEmitter.fire(event);
|
|
55
58
|
}
|
|
59
|
+
onDocumentDirtyChanged(event) {
|
|
60
|
+
this.documentDirtyChangedEmitter.fire(event);
|
|
61
|
+
}
|
|
56
62
|
onDocumentDeleted(event) {
|
|
57
63
|
this.documentDeletedEmitter.fire(event);
|
|
58
64
|
}
|
|
@@ -65,6 +71,7 @@ class DataEvents {
|
|
|
65
71
|
dispose() {
|
|
66
72
|
this.documentUpdatedEmitter.dispose();
|
|
67
73
|
this.documentSavedEmitter.dispose();
|
|
74
|
+
this.documentDirtyChangedEmitter.dispose();
|
|
68
75
|
this.documentDeletedEmitter.dispose();
|
|
69
76
|
this.documentsBuiltEmitter.dispose();
|
|
70
77
|
this.projectsChangedEmitter.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-events.js","sourceRoot":"","sources":["../../src/client/data-events.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,mDAAqD;
|
|
1
|
+
{"version":3,"file":"data-events.js","sourceRoot":"","sources":["../../src/client/data-events.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;AAElF,mDAAqD;AAcrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,UAAU;IAKD,sBAAsB,GAAG,IAAI,wBAAO,EAAwD,CAAC;IAC7F,oBAAoB,GAAG,IAAI,wBAAO,EAAsD,CAAC;IACzF,2BAA2B,GAAG,IAAI,wBAAO,EAAqC,CAAC;IAC/E,sBAAsB,GAAG,IAAI,wBAAO,EAAgC,CAAC;IACrE,qBAAqB,GAAG,IAAI,wBAAO,EAA+B,CAAC;IACnE,sBAAsB,GAAG,IAAI,wBAAO,EAAkC,CAAC;IAE1F,4FAA4F;IACnF,mBAAmB,GAAgE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;IAC9H,gDAAgD;IACvC,iBAAiB,GAA8D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IACxH,4EAA4E;IACnE,wBAAwB,GAA6C,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;IACrH,iFAAiF;IACxE,mBAAmB,GAAwC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;IACtG,gFAAgF;IACvE,mBAAmB,GAAuC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACpG,+BAA+B;IACtB,mBAAmB,GAA0C,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;IAExG,0CAA0C;IAE1C,iBAAiB,CAAC,KAA2D;QAC1E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe,CAAC,KAAyD;QACtE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,sBAAsB,CAAC,KAAwC;QAC5D,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,KAAmC;QAClD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,KAAkC;QAChD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,KAAqC;QACpD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACJ,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;CACH;AA3DD,gCA2DC"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import type
|
|
9
|
+
import { type Disposable, Emitter, type Event } from 'vscode-jsonrpc';
|
|
10
|
+
import { type Clock } from '../clock';
|
|
11
|
+
import type { DataServerProtocol, DiagnosticOf, TransferDocumentDirtyChangedEvent } from '../data';
|
|
10
12
|
import type { SnapshotVersion } from '../model-service/based-on';
|
|
11
13
|
import { type ResolvedMessage } from '../messages/primitives';
|
|
12
14
|
import type { OpenModelArgs } from '../model-server';
|
|
@@ -65,9 +67,20 @@ export type DataSessionDocument<TTransfer extends TransferElement, TServer exten
|
|
|
65
67
|
export interface DataSessionHost<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>>> {
|
|
66
68
|
/** The connected, READY proxy of the current connection; a new object after each reconnect. */
|
|
67
69
|
connected(): Promise<RpcProxy<TServer>>;
|
|
68
|
-
releaseSession(session: DataSession<TTransfer, TServer>): void;
|
|
69
70
|
/** Surface a failure no caller is waiting on, such as restoring a document after a reconnect. */
|
|
70
71
|
reportError?(error: unknown, reported: ResolvedMessage): void;
|
|
72
|
+
/**
|
|
73
|
+
* Tell the connection's client the dirty state a restore read, unless it
|
|
74
|
+
* is what the client was last told of the URI since the URI's last open.
|
|
75
|
+
*/
|
|
76
|
+
restoreDirty?(event: TransferDocumentDirtyChangedEvent): void;
|
|
77
|
+
/**
|
|
78
|
+
* Forget what the client was told of `uri`'s dirty state: an open just
|
|
79
|
+
* made answered its caller afresh, and the client heard none of it, or a
|
|
80
|
+
* close leaves nothing to restore. Forgetting a URI another session still
|
|
81
|
+
* has open costs at most one repeat of a state the client already has.
|
|
82
|
+
*/
|
|
83
|
+
forgetDirty?(uri: string): void;
|
|
71
84
|
}
|
|
72
85
|
/**
|
|
73
86
|
* Builds the session `DataConnection.createSession` hands out, for an adopter
|
|
@@ -94,8 +107,9 @@ export type DataSessionFactory<TTransfer extends TransferElement, TServer extend
|
|
|
94
107
|
* otherwise reach the server after it, and fail as not open.
|
|
95
108
|
*
|
|
96
109
|
* After the connection drops, the session registers again under the same id,
|
|
97
|
-
* re-opens and re-watches what it had open,
|
|
98
|
-
*
|
|
110
|
+
* re-opens and re-watches what it had open, tells the client of their dirty
|
|
111
|
+
* state where it changed, and reports the documents whose unsaved edits did
|
|
112
|
+
* not survive; see {@link restore}. The connection does this at
|
|
99
113
|
* once for a session with documents open, and any session's next call does it
|
|
100
114
|
* too.
|
|
101
115
|
*
|
|
@@ -108,7 +122,7 @@ export type DataSessionFactory<TTransfer extends TransferElement, TServer extend
|
|
|
108
122
|
* bound, so an adopter's diagnostics would come back as the framework's and
|
|
109
123
|
* the document would have to be cast on the way out.
|
|
110
124
|
*/
|
|
111
|
-
export declare class DataSession<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> {
|
|
125
|
+
export declare class DataSession<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> implements Disposable {
|
|
112
126
|
readonly clientId: string;
|
|
113
127
|
protected readonly host: DataSessionHost<TTransfer, TServer>;
|
|
114
128
|
readonly label: string;
|
|
@@ -119,8 +133,20 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
119
133
|
* fails that save.
|
|
120
134
|
*/
|
|
121
135
|
protected readonly settleBeforeCloseMs: number;
|
|
136
|
+
/**
|
|
137
|
+
* The clock {@link settleBeforeCloseMs} runs on. {@link DataSessionHost}
|
|
138
|
+
* carries no {@link Clock}, so a subclass replaces this field as it
|
|
139
|
+
* replaces the bound.
|
|
140
|
+
*/
|
|
141
|
+
protected readonly clock: Clock;
|
|
122
142
|
/** URIs this session has open, re-opened after a reconnect. */
|
|
123
143
|
protected readonly openUris: Set<string>;
|
|
144
|
+
/**
|
|
145
|
+
* Per URI in {@link openUris}, the URI the server's last answer to its open
|
|
146
|
+
* or re-open named. The server keys its notifications by it, and so does
|
|
147
|
+
* the host's record of what its client was told.
|
|
148
|
+
*/
|
|
149
|
+
protected readonly serverUris: Map<string, string>;
|
|
124
150
|
/**
|
|
125
151
|
* Per URI, how many opens of it this session has under way. Such a URI
|
|
126
152
|
* counts as open for {@link withOpenDocument}, which would otherwise close
|
|
@@ -134,6 +160,21 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
134
160
|
protected readonly unsavedWrites: Map<string, SnapshotVersion>;
|
|
135
161
|
/** Per URI, this session's calls still in flight on it, which a close waits for. */
|
|
136
162
|
protected readonly inFlight: Map<string, Set<Promise<unknown>>>;
|
|
163
|
+
/** This session's saves still in flight, which a host's exit waits for; see {@link hasSavesInFlight}. */
|
|
164
|
+
protected readonly savesInFlight: Set<Promise<unknown>>;
|
|
165
|
+
protected readonly disposeEmitter: Emitter<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Fires once when the session ends, by {@link dispose} or {@link detach}, as
|
|
168
|
+
* soon as it rejects further calls and before any close is sent. For a
|
|
169
|
+
* session its connection created, the connection's listener runs first, so
|
|
170
|
+
* the id is free again on that connection by the time any other listener
|
|
171
|
+
* runs; the server still holds it until the close arrives, and refuses a new
|
|
172
|
+
* session under it until then.
|
|
173
|
+
*
|
|
174
|
+
* A listener subscribed once the session has ended is never called, so a
|
|
175
|
+
* late subscriber checks {@link isDisposed} first.
|
|
176
|
+
*/
|
|
177
|
+
readonly onDidDispose: Event<void>;
|
|
137
178
|
/**
|
|
138
179
|
* Sent with every registration, so the server lets this session register
|
|
139
180
|
* its id again while the dropped connection's session is still live there:
|
|
@@ -212,6 +253,20 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
212
253
|
updateDocuments(args: DataSessionUpdatesArgs<TTransfer, TServer>): Promise<DataSessionDocument<TTransfer, TServer>[]>;
|
|
213
254
|
/** Persist `args.model` to disk as this session. The session must have `args.uri` open. */
|
|
214
255
|
saveDocument(args: DataSessionSaveArgs<TTransfer, TServer>): Promise<DataSessionDocument<TTransfer, TServer>>;
|
|
256
|
+
/** Whether the session has ended, by {@link dispose} or {@link detach}. */
|
|
257
|
+
get isDisposed(): boolean;
|
|
258
|
+
/**
|
|
259
|
+
* Whether a save of this session has not answered yet. Synchronous, for a
|
|
260
|
+
* host whose exit veto must decide within the tick, such as Theia's
|
|
261
|
+
* `onWillStop`.
|
|
262
|
+
*/
|
|
263
|
+
get hasSavesInFlight(): boolean;
|
|
264
|
+
/**
|
|
265
|
+
* Resolves once the saves in flight now have answered, or
|
|
266
|
+
* {@link settleBeforeCloseMs} has passed. Never rejects: a failed save has
|
|
267
|
+
* answered too.
|
|
268
|
+
*/
|
|
269
|
+
whenSavesSettled(): Promise<void>;
|
|
215
270
|
/**
|
|
216
271
|
* Whether `sourceClientId` identifies this session's own write.
|
|
217
272
|
*
|
|
@@ -226,9 +281,10 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
226
281
|
* end it on the server, which closes everything it has open. Idempotent,
|
|
227
282
|
* and leaves the connection usable by its other sessions.
|
|
228
283
|
*
|
|
229
|
-
* Every later call rejects
|
|
230
|
-
*
|
|
231
|
-
*
|
|
284
|
+
* Every later call rejects, and so does a call made earlier in the same
|
|
285
|
+
* tick, which has not reached the wire yet and is never sent. The server
|
|
286
|
+
* close is not awaited, because a `Disposable` cannot be; a close that fails
|
|
287
|
+
* leaves the session to the server's connection-close cleanup.
|
|
232
288
|
*/
|
|
233
289
|
dispose(): void;
|
|
234
290
|
/**
|
|
@@ -237,8 +293,15 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
237
293
|
* Sends nothing, unlike {@link dispose}: the server ends every session on a
|
|
238
294
|
* connection it sees close, and the close would travel over the very
|
|
239
295
|
* connection being disposed.
|
|
296
|
+
*
|
|
297
|
+
* Public because the connection calls it; anyone else ends a session with
|
|
298
|
+
* {@link dispose}. It fires {@link onDidDispose} only if the session has not
|
|
299
|
+
* already ended, and after {@link dispose} it still cancels the close that
|
|
300
|
+
* dispose has not sent yet.
|
|
240
301
|
*/
|
|
241
302
|
detach(): void;
|
|
303
|
+
/** Fire {@link onDidDispose} and dispose its emitter, so a second call fires nothing. */
|
|
304
|
+
protected fireDispose(): void;
|
|
242
305
|
/**
|
|
243
306
|
* Register again and restore now, after the connection dropped, instead of
|
|
244
307
|
* on the next call. A no-op for a session with nothing open, which the next
|
|
@@ -269,6 +332,11 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
269
332
|
* naming every document whose unsaved text is gone, whose record is then
|
|
270
333
|
* dropped, and one per document that could not be re-opened, which is
|
|
271
334
|
* forgotten.
|
|
335
|
+
*
|
|
336
|
+
* Each document's dirty state goes to the host too, read once the watch is
|
|
337
|
+
* in place: a flip while the connection was down, or between the re-open
|
|
338
|
+
* and the watch, reached no one, and the re-open's own answer misses the
|
|
339
|
+
* second.
|
|
272
340
|
*/
|
|
273
341
|
protected restore(server: RpcProxy<TServer>): Promise<void>;
|
|
274
342
|
/** Run `call`, counted as in flight on each of `uris` until it settles. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"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"}
|