@hydranium/protocol 1.0.0-next.381 → 1.0.0-next.384
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 +11 -9
- package/lib/client/data-session.d.ts +77 -9
- package/lib/client/data-session.d.ts.map +1 -1
- package/lib/client/data-session.js +112 -17
- package/lib/client/data-session.js.map +1 -1
- package/lib/client/index.d.ts +1 -0
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +1 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/working-copy.d.ts +417 -0
- package/lib/client/working-copy.d.ts.map +1 -0
- package/lib/client/working-copy.js +943 -0
- package/lib/client/working-copy.js.map +1 -0
- package/lib/pending-work-tracker.d.ts +4 -1
- package/lib/pending-work-tracker.d.ts.map +1 -1
- package/lib/pending-work-tracker.js +6 -5
- package/lib/pending-work-tracker.js.map +1 -1
- package/lib/testing/harness.d.ts +9 -0
- package/lib/testing/harness.d.ts.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 -1
- package/lib/testing/node/index.js.map +1 -1
- package/lib/testing/node/unhandled-rejections.d.ts +20 -0
- package/lib/testing/node/unhandled-rejections.d.ts.map +1 -0
- package/lib/testing/node/unhandled-rejections.js +35 -0
- package/lib/testing/node/unhandled-rejections.js.map +1 -0
- package/package.json +1 -1
- package/src/client/data-session.ts +138 -17
- package/src/client/index.ts +1 -0
- package/src/client/working-copy.ts +1100 -0
- package/src/pending-work-tracker.ts +6 -5
- package/src/testing/harness.ts +10 -0
- package/src/testing/node/index.ts +2 -1
- package/src/testing/node/unhandled-rejections.ts +31 -0
package/README.md
CHANGED
|
@@ -11,6 +11,8 @@ never depends on `@hydranium/core`, which carries the Langium runtime.
|
|
|
11
11
|
- Type your client against `DataServerProtocol` and `DataClientProtocol`.
|
|
12
12
|
- Connect, reconnect and open documents through one client tier, in a Theia
|
|
13
13
|
frontend, a VS Code extension or webview, or a plain browser page.
|
|
14
|
+
- Edit a document from a form with `WorkingCopy`, which sends your edits,
|
|
15
|
+
reconciles a write that raced another client's, and saves.
|
|
14
16
|
- Declare your own RPC contract as a TypeScript interface and use it on both
|
|
15
17
|
ends of a connection.
|
|
16
18
|
- Test your client, and audit your translation catalogues (see *Translate your
|
|
@@ -49,15 +51,15 @@ The options both ends must agree on, and a worked example, are in
|
|
|
49
51
|
|
|
50
52
|
## Entry points
|
|
51
53
|
|
|
52
|
-
| Subpath | Use it for
|
|
53
|
-
| ---------------- |
|
|
54
|
-
| `.` | The production surface, `./data` and `./client` included
|
|
55
|
-
| `./data` | The data-head protocol types alone
|
|
56
|
-
| `./client` | The client tier alone
|
|
57
|
-
| `./messages` | The message codes this package raises
|
|
58
|
-
| `./node` | Process-memory and heap-snapshot diagnostics
|
|
59
|
-
| `./testing` | Test doubles, waiters and the translation-catalogue audit
|
|
60
|
-
| `./testing/node` | In-memory
|
|
54
|
+
| Subpath | Use it for | Runs in |
|
|
55
|
+
| ---------------- | --------------------------------------------------------- | --------------- |
|
|
56
|
+
| `.` | The production surface, `./data` and `./client` included | browser-neutral |
|
|
57
|
+
| `./data` | The data-head protocol types alone | browser-neutral |
|
|
58
|
+
| `./client` | The client tier alone | browser-neutral |
|
|
59
|
+
| `./messages` | The message codes this package raises | browser-neutral |
|
|
60
|
+
| `./node` | Process-memory and heap-snapshot diagnostics | Node-only |
|
|
61
|
+
| `./testing` | Test doubles, waiters and the translation-catalogue audit | browser-neutral |
|
|
62
|
+
| `./testing/node` | In-memory transports and rejection capture for tests | Node-only |
|
|
61
63
|
|
|
62
64
|
The subpaths need a TypeScript `moduleResolution` that reads `exports`
|
|
63
65
|
(`NodeNext` or `Bundler`); see *Requirements* in
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { type Disposable, Emitter, type Event } from 'vscode-jsonrpc';
|
|
10
10
|
import { type Clock } from '../clock';
|
|
11
11
|
import type { DataServerProtocol, DiagnosticOf, TransferDocumentDeletedEvent, TransferDocumentDirtyChangedEvent, TransferDocumentUpdatedEvent } from '../data';
|
|
12
|
+
import { STALE_BASE_VERSION_SAVE, STALE_BASE_VERSION_UPDATE } from '../errors';
|
|
12
13
|
import type { Logger } from '../logger';
|
|
13
14
|
import { type BaseVersion, type ModelVersion } from '../model-service/base-version';
|
|
14
15
|
import { type ResolvedMessage } from '../messages/primitives';
|
|
@@ -73,6 +74,19 @@ export type DataSessionPersistArgs<TTransfer extends TransferElement, TServer ex
|
|
|
73
74
|
export type DataSessionDeleteArgs<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = DataSessionArgs<TServer['deleteModelDocument']>;
|
|
74
75
|
/** The document a session hands back, carrying its server's diagnostic shape. */
|
|
75
76
|
export type DataSessionDocument<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = TransferDocument<TTransfer, DiagnosticOf<TServer>>;
|
|
77
|
+
/**
|
|
78
|
+
* A document a restore opened again, or could not, with the caller's URI and
|
|
79
|
+
* what the restore read, `undefined` when that read failed. Not reopened, the
|
|
80
|
+
* session no longer has the document open.
|
|
81
|
+
*/
|
|
82
|
+
export interface DataSessionRestoreEvent<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> {
|
|
83
|
+
/** The document's URI as the caller spelled it. */
|
|
84
|
+
readonly uri: string;
|
|
85
|
+
/** Whether the session has the document open again. */
|
|
86
|
+
readonly reopened: boolean;
|
|
87
|
+
/** What the restore read, `undefined` when that read failed or it was not reopened. */
|
|
88
|
+
readonly document?: DataSessionDocument<TTransfer, TServer>;
|
|
89
|
+
}
|
|
76
90
|
/**
|
|
77
91
|
* What a {@link DataSession} keeps of a URI it wrote since the URI's last save,
|
|
78
92
|
* to write it again after a reconnect that lost it.
|
|
@@ -225,6 +239,13 @@ export type DataSessionFactory<TTransfer extends TransferElement, TServer extend
|
|
|
225
239
|
* is ready, so a reconnect that failed is not left to the session's own next
|
|
226
240
|
* call; any session's next call does it too.
|
|
227
241
|
*
|
|
242
|
+
* A restarted server numbers versions afresh, so an update, save, persist or
|
|
243
|
+
* delete gated on a version is refused with a `ConflictError` and not sent
|
|
244
|
+
* when a restore ran between the call and its send. A restore that found the
|
|
245
|
+
* text the session last saw, at its version, refuses nothing. A call made
|
|
246
|
+
* later is not checked, so it takes its version from
|
|
247
|
+
* {@link onDidRestoreDocument}.
|
|
248
|
+
*
|
|
228
249
|
* Generic over the transfer root so this file names no grammar.
|
|
229
250
|
*
|
|
230
251
|
* `TServer` is bound to a server answering with ITS OWN diagnostic shape, read
|
|
@@ -282,8 +303,9 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
282
303
|
protected readonly unsavedWrites: Map<string, DataSessionUnsavedWrite<TTransfer, TServer>>;
|
|
283
304
|
/**
|
|
284
305
|
* Per URI this session has open, the text of the last document one of its
|
|
285
|
-
* own calls was answered with,
|
|
286
|
-
* otherwise makes for its base
|
|
306
|
+
* own calls was answered with, or another client's update event named. It
|
|
307
|
+
* spares the read a first unsaved write otherwise makes for its base, see
|
|
308
|
+
* {@link baseHashOf}, and lets a restore that finds it refuse nothing.
|
|
287
309
|
*/
|
|
288
310
|
protected readonly lastAnswers: Map<string, TextState>;
|
|
289
311
|
/**
|
|
@@ -320,6 +342,23 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
320
342
|
* late subscriber checks {@link isDisposed} first.
|
|
321
343
|
*/
|
|
322
344
|
readonly onDidDispose: Event<void>;
|
|
345
|
+
/**
|
|
346
|
+
* Per URI, the restores whose event has fired. A call gated on a version
|
|
347
|
+
* from before one is refused, see {@link refuseAcrossRestore}.
|
|
348
|
+
*/
|
|
349
|
+
protected readonly restores: Map<string, number>;
|
|
350
|
+
/** Fires {@link onDidRestoreDocument}. */
|
|
351
|
+
protected readonly restoreEmitter: Emitter<DataSessionRestoreEvent<TTransfer, TServer>>;
|
|
352
|
+
/**
|
|
353
|
+
* Fires for each document a restore after a reconnect opened again, and
|
|
354
|
+
* for each it could not open again and did not find deleted. No update
|
|
355
|
+
* event tells of a change made while the connection was down, and a
|
|
356
|
+
* restarted server numbers versions afresh, so a client that keeps a
|
|
357
|
+
* document or its version takes them from here. A call gated on a version
|
|
358
|
+
* and made before this fires is refused, unless the restore found the text
|
|
359
|
+
* the session last saw, at its version.
|
|
360
|
+
*/
|
|
361
|
+
readonly onDidRestoreDocument: Event<DataSessionRestoreEvent<TTransfer, TServer>>;
|
|
323
362
|
/**
|
|
324
363
|
* Sent with every registration, so the server lets this session register
|
|
325
364
|
* its id again while the dropped connection's session is still live there:
|
|
@@ -449,19 +488,29 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
449
488
|
* undoes only the open this call made.
|
|
450
489
|
*/
|
|
451
490
|
withOpenDocument<T>(args: DataSessionOpenArgs<TTransfer, TServer>, fn: (document: DataSessionDocument<TTransfer, TServer>) => MaybePromise<T>): Promise<T>;
|
|
452
|
-
/**
|
|
491
|
+
/**
|
|
492
|
+
* Write `args.model` back as this session. The session must have `args.uri`
|
|
493
|
+
* open. Refused unsent with a `ConflictError` when a restore ran between the
|
|
494
|
+
* call and its send, see the class doc.
|
|
495
|
+
*/
|
|
453
496
|
updateDocument(args: DataSessionUpdateArgs<TTransfer, TServer>): Promise<DataSessionDocument<TTransfer, TServer>>;
|
|
454
497
|
/**
|
|
455
498
|
* Write several documents this session has open, all or none: the server
|
|
456
499
|
* refuses the whole set, before any text applies, when one is stale or not
|
|
457
|
-
* open. Resolves to the documents in the order given.
|
|
500
|
+
* open. Resolves to the documents in the order given. Refused unsent with a
|
|
501
|
+
* `ConflictError` when a restore ran between the call and its send.
|
|
458
502
|
*/
|
|
459
503
|
updateDocuments(args: DataSessionUpdatesArgs<TTransfer, TServer>): Promise<DataSessionDocument<TTransfer, TServer>[]>;
|
|
460
|
-
/**
|
|
504
|
+
/**
|
|
505
|
+
* Persist `args.model` to disk as this session. The session must have
|
|
506
|
+
* `args.uri` open. Refused unsent with a `ConflictError` when a restore
|
|
507
|
+
* ran between the call and its send, see the class doc.
|
|
508
|
+
*/
|
|
461
509
|
saveDocument(args: DataSessionSaveArgs<TTransfer, TServer>): Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>;
|
|
462
510
|
/**
|
|
463
511
|
* Persist the text the server holds for `args.uri` as this session, with no
|
|
464
|
-
* model of its own. The session must have `args.uri` open.
|
|
512
|
+
* model of its own. The session must have `args.uri` open. Refused unsent
|
|
513
|
+
* with a `ConflictError` when a restore ran between the call and its send.
|
|
465
514
|
*/
|
|
466
515
|
persistDocument(args: DataSessionPersistArgs<TTransfer, TServer>): Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>;
|
|
467
516
|
/**
|
|
@@ -473,11 +522,12 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
473
522
|
* The session forgets the document once the delete has succeeded: on
|
|
474
523
|
* hearing its own deletion, which the server sends before it answers, or
|
|
475
524
|
* on the answer, for a client that hears no deletions. A refused delete
|
|
476
|
-
* leaves the document open, as the server does.
|
|
525
|
+
* leaves the document open, as the server does. Refused unsent with a
|
|
526
|
+
* `ConflictError` when a restore ran between the call and its send.
|
|
477
527
|
*/
|
|
478
528
|
deleteDocument(args: DataSessionDeleteArgs<TTransfer, TServer>): Promise<void>;
|
|
479
529
|
/** Run a save or persist of `uri` and record what it answered as saved. */
|
|
480
|
-
protected trackSave(uri: string, send: (server: RpcProxy<TServer>) => Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>): Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>;
|
|
530
|
+
protected trackSave(uri: string, baseVersion: BaseVersion, send: (server: RpcProxy<TServer>) => Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>): Promise<TransferSavedDocument<TTransfer, DiagnosticOf<TServer>>>;
|
|
481
531
|
/** Whether the session has ended, by {@link dispose} or {@link detach}. */
|
|
482
532
|
get isDisposed(): boolean;
|
|
483
533
|
/**
|
|
@@ -583,7 +633,8 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
583
633
|
*
|
|
584
634
|
* The mark in {@link createdUris} goes on any such event: the unsaved text
|
|
585
635
|
* is then the other client's, and a record still kept reports the
|
|
586
|
-
* session's own.
|
|
636
|
+
* session's own. Its text goes in {@link lastAnswers} unless that holds a
|
|
637
|
+
* later version, so a restore that finds it counts no change.
|
|
587
638
|
*/
|
|
588
639
|
protected forgetSupersededWrite(event: TransferDocumentUpdatedEvent<TTransfer, DiagnosticOf<TServer>>): void;
|
|
589
640
|
/**
|
|
@@ -612,6 +663,23 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
612
663
|
* had. Calls issued meanwhile wait for this.
|
|
613
664
|
*/
|
|
614
665
|
protected register(server: RpcProxy<TServer>, reconnected: boolean): Promise<void>;
|
|
666
|
+
/** The restores of `uri` whose event has fired. */
|
|
667
|
+
protected restoresOf(uri: string): number;
|
|
668
|
+
/**
|
|
669
|
+
* Tell the listeners of a restore of `uri`, and count it when `counted`.
|
|
670
|
+
* Counted just before, so a call made with the version the event hands out
|
|
671
|
+
* is taken, and one made before it, which can only hold the old server's,
|
|
672
|
+
* is refused. A re-open that found the text the session last saw, at its
|
|
673
|
+
* version, is not counted, since a version from before still names it.
|
|
674
|
+
*/
|
|
675
|
+
protected fireRestored(event: DataSessionRestoreEvent<TTransfer, TServer>, counted?: boolean): void;
|
|
676
|
+
/**
|
|
677
|
+
* Refuse a call gated on `baseVersion` if `uri` was restored since the
|
|
678
|
+
* call was made, when its count in {@link restores} was `restores`. A
|
|
679
|
+
* restarted server numbers versions afresh, so the version can match text
|
|
680
|
+
* the caller never saw, and the server would take the call over it.
|
|
681
|
+
*/
|
|
682
|
+
protected refuseAcrossRestore(restores: number, uri: string, baseVersion: BaseVersion, message?: typeof STALE_BASE_VERSION_UPDATE | typeof STALE_BASE_VERSION_SAVE): void;
|
|
615
683
|
/**
|
|
616
684
|
* Re-open, each under the options its {@link DataSessionOpen} holds, and
|
|
617
685
|
* re-watch every document the session had open, write again what it wrote
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,13 @@ function setOf(write) {
|
|
|
72
72
|
* is ready, so a reconnect that failed is not left to the session's own next
|
|
73
73
|
* call; any session's next call does it too.
|
|
74
74
|
*
|
|
75
|
+
* A restarted server numbers versions afresh, so an update, save, persist or
|
|
76
|
+
* delete gated on a version is refused with a `ConflictError` and not sent
|
|
77
|
+
* when a restore ran between the call and its send. A restore that found the
|
|
78
|
+
* text the session last saw, at its version, refuses nothing. A call made
|
|
79
|
+
* later is not checked, so it takes its version from
|
|
80
|
+
* {@link onDidRestoreDocument}.
|
|
81
|
+
*
|
|
75
82
|
* Generic over the transfer root so this file names no grammar.
|
|
76
83
|
*
|
|
77
84
|
* `TServer` is bound to a server answering with ITS OWN diagnostic shape, read
|
|
@@ -129,8 +136,9 @@ class DataSession {
|
|
|
129
136
|
unsavedWrites = new Map();
|
|
130
137
|
/**
|
|
131
138
|
* Per URI this session has open, the text of the last document one of its
|
|
132
|
-
* own calls was answered with,
|
|
133
|
-
* otherwise makes for its base
|
|
139
|
+
* own calls was answered with, or another client's update event named. It
|
|
140
|
+
* spares the read a first unsaved write otherwise makes for its base, see
|
|
141
|
+
* {@link baseHashOf}, and lets a restore that finds it refuse nothing.
|
|
134
142
|
*/
|
|
135
143
|
lastAnswers = new Map();
|
|
136
144
|
/**
|
|
@@ -167,6 +175,23 @@ class DataSession {
|
|
|
167
175
|
* late subscriber checks {@link isDisposed} first.
|
|
168
176
|
*/
|
|
169
177
|
onDidDispose = this.disposeEmitter.event;
|
|
178
|
+
/**
|
|
179
|
+
* Per URI, the restores whose event has fired. A call gated on a version
|
|
180
|
+
* from before one is refused, see {@link refuseAcrossRestore}.
|
|
181
|
+
*/
|
|
182
|
+
restores = new Map();
|
|
183
|
+
/** Fires {@link onDidRestoreDocument}. */
|
|
184
|
+
restoreEmitter = new vscode_jsonrpc_1.Emitter();
|
|
185
|
+
/**
|
|
186
|
+
* Fires for each document a restore after a reconnect opened again, and
|
|
187
|
+
* for each it could not open again and did not find deleted. No update
|
|
188
|
+
* event tells of a change made while the connection was down, and a
|
|
189
|
+
* restarted server numbers versions afresh, so a client that keeps a
|
|
190
|
+
* document or its version takes them from here. A call gated on a version
|
|
191
|
+
* and made before this fires is refused, unless the restore found the text
|
|
192
|
+
* the session last saw, at its version.
|
|
193
|
+
*/
|
|
194
|
+
onDidRestoreDocument = this.restoreEmitter.event;
|
|
170
195
|
/**
|
|
171
196
|
* Sent with every registration, so the server lets this session register
|
|
172
197
|
* its id again while the dropped connection's session is still live there:
|
|
@@ -395,6 +420,9 @@ class DataSession {
|
|
|
395
420
|
this.lastAnswers.delete(uri);
|
|
396
421
|
this.savedVersions.delete(uri);
|
|
397
422
|
this.createdUris.delete(uri);
|
|
423
|
+
// A call that took the count before is refused all the same, by the
|
|
424
|
+
// session when a restore was counted, else by the server, as not open.
|
|
425
|
+
this.restores.delete(uri);
|
|
398
426
|
this.host.forgetDirty?.(serverUri);
|
|
399
427
|
}
|
|
400
428
|
/**
|
|
@@ -428,10 +456,16 @@ class DataSession {
|
|
|
428
456
|
}
|
|
429
457
|
}
|
|
430
458
|
}
|
|
431
|
-
/**
|
|
459
|
+
/**
|
|
460
|
+
* Write `args.model` back as this session. The session must have `args.uri`
|
|
461
|
+
* open. Refused unsent with a `ConflictError` when a restore ran between the
|
|
462
|
+
* call and its send, see the class doc.
|
|
463
|
+
*/
|
|
432
464
|
updateDocument(args) {
|
|
465
|
+
const restores = this.restoresOf(args.uri);
|
|
433
466
|
return this.trackWrite([args.uri], async () => {
|
|
434
467
|
const server = await this.connected();
|
|
468
|
+
this.refuseAcrossRestore(restores, args.uri, args.baseVersion);
|
|
435
469
|
const update = { ...args };
|
|
436
470
|
const baseHash = await this.baseHashOf(server, args.uri, args.baseVersion);
|
|
437
471
|
const open = this.opens.get(args.uri);
|
|
@@ -443,14 +477,17 @@ class DataSession {
|
|
|
443
477
|
/**
|
|
444
478
|
* Write several documents this session has open, all or none: the server
|
|
445
479
|
* refuses the whole set, before any text applies, when one is stale or not
|
|
446
|
-
* open. Resolves to the documents in the order given.
|
|
480
|
+
* open. Resolves to the documents in the order given. Refused unsent with a
|
|
481
|
+
* `ConflictError` when a restore ran between the call and its send.
|
|
447
482
|
*/
|
|
448
483
|
updateDocuments(args) {
|
|
484
|
+
const restores = args.updates.map(update => this.restoresOf(update.uri));
|
|
449
485
|
return this.trackWrite(args.updates.map(update => update.uri), async () => {
|
|
450
486
|
// One copy for the whole call: the copy's identity is what ties its
|
|
451
487
|
// records together.
|
|
452
488
|
const updates = { ...args, updates: args.updates.map(update => ({ ...update })) };
|
|
453
489
|
const server = await this.connected();
|
|
490
|
+
args.updates.forEach((update, index) => this.refuseAcrossRestore(restores[index], update.uri, update.baseVersion));
|
|
454
491
|
const baseHashes = await Promise.all(args.updates.map(update => this.baseHashOf(server, update.uri, update.baseVersion)));
|
|
455
492
|
const opens = args.updates.map(update => this.opens.get(update.uri));
|
|
456
493
|
const documents = await server.updateModelDocuments({ ...args, clientId: this.clientId });
|
|
@@ -458,16 +495,21 @@ class DataSession {
|
|
|
458
495
|
return documents;
|
|
459
496
|
});
|
|
460
497
|
}
|
|
461
|
-
/**
|
|
498
|
+
/**
|
|
499
|
+
* Persist `args.model` to disk as this session. The session must have
|
|
500
|
+
* `args.uri` open. Refused unsent with a `ConflictError` when a restore
|
|
501
|
+
* ran between the call and its send, see the class doc.
|
|
502
|
+
*/
|
|
462
503
|
saveDocument(args) {
|
|
463
|
-
return this.trackSave(args.uri, server => server.saveModelDocument({ ...args, clientId: this.clientId }));
|
|
504
|
+
return this.trackSave(args.uri, args.baseVersion, server => server.saveModelDocument({ ...args, clientId: this.clientId }));
|
|
464
505
|
}
|
|
465
506
|
/**
|
|
466
507
|
* Persist the text the server holds for `args.uri` as this session, with no
|
|
467
|
-
* model of its own. The session must have `args.uri` open.
|
|
508
|
+
* model of its own. The session must have `args.uri` open. Refused unsent
|
|
509
|
+
* with a `ConflictError` when a restore ran between the call and its send.
|
|
468
510
|
*/
|
|
469
511
|
persistDocument(args) {
|
|
470
|
-
return this.trackSave(args.uri, server => server.persistModelDocument({ ...args, clientId: this.clientId }));
|
|
512
|
+
return this.trackSave(args.uri, args.baseVersion, server => server.persistModelDocument({ ...args, clientId: this.clientId }));
|
|
471
513
|
}
|
|
472
514
|
/**
|
|
473
515
|
* Delete `args.uri` as this session, at once: its file, then the document.
|
|
@@ -478,13 +520,16 @@ class DataSession {
|
|
|
478
520
|
* The session forgets the document once the delete has succeeded: on
|
|
479
521
|
* hearing its own deletion, which the server sends before it answers, or
|
|
480
522
|
* on the answer, for a client that hears no deletions. A refused delete
|
|
481
|
-
* leaves the document open, as the server does.
|
|
523
|
+
* leaves the document open, as the server does. Refused unsent with a
|
|
524
|
+
* `ConflictError` when a restore ran between the call and its send.
|
|
482
525
|
*/
|
|
483
526
|
deleteDocument(args) {
|
|
527
|
+
const restores = this.restoresOf(args.uri);
|
|
484
528
|
const deleting = this.trackEnding(args.uri, () => this.track([args.uri], async () => {
|
|
485
529
|
this.assertLive();
|
|
486
530
|
await this.settle([this.inFlight.get(args.uri)]);
|
|
487
531
|
const server = await this.connected();
|
|
532
|
+
this.refuseAcrossRestore(restores, args.uri, args.baseVersion);
|
|
488
533
|
const open = this.opens.get(args.uri);
|
|
489
534
|
await server.deleteModelDocument({ ...args, clientId: this.clientId });
|
|
490
535
|
// Still the open it was sent under: the deletion was not heard.
|
|
@@ -497,9 +542,11 @@ class DataSession {
|
|
|
497
542
|
return this.savesInFlight.track(deleting);
|
|
498
543
|
}
|
|
499
544
|
/** Run a save or persist of `uri` and record what it answered as saved. */
|
|
500
|
-
trackSave(uri, send) {
|
|
545
|
+
trackSave(uri, baseVersion, send) {
|
|
546
|
+
const restores = this.restoresOf(uri);
|
|
501
547
|
const saving = this.track([uri], async () => {
|
|
502
548
|
const server = await this.connected();
|
|
549
|
+
this.refuseAcrossRestore(restores, uri, baseVersion, errors_1.STALE_BASE_VERSION_SAVE);
|
|
503
550
|
const open = this.opens.get(uri);
|
|
504
551
|
const document = await send(server);
|
|
505
552
|
// Sent under no open, or under one a close or deletion has ended
|
|
@@ -641,6 +688,7 @@ class DataSession {
|
|
|
641
688
|
this.deletionSubscription?.dispose();
|
|
642
689
|
this.disposeEmitter.fire(undefined);
|
|
643
690
|
this.disposeEmitter.dispose();
|
|
691
|
+
this.restoreEmitter.dispose();
|
|
644
692
|
}
|
|
645
693
|
/**
|
|
646
694
|
* Register again and restore now, after the connection dropped, instead of
|
|
@@ -695,7 +743,8 @@ class DataSession {
|
|
|
695
743
|
*
|
|
696
744
|
* The mark in {@link createdUris} goes on any such event: the unsaved text
|
|
697
745
|
* is then the other client's, and a record still kept reports the
|
|
698
|
-
* session's own.
|
|
746
|
+
* session's own. Its text goes in {@link lastAnswers} unless that holds a
|
|
747
|
+
* later version, so a restore that finds it counts no change.
|
|
699
748
|
*/
|
|
700
749
|
forgetSupersededWrite(event) {
|
|
701
750
|
if (event.reason !== 'changed' || this.isOwnEcho(event.sourceClientId)) {
|
|
@@ -706,6 +755,10 @@ class DataSession {
|
|
|
706
755
|
continue;
|
|
707
756
|
}
|
|
708
757
|
this.createdUris.delete(uri);
|
|
758
|
+
const known = this.lastAnswers.get(uri);
|
|
759
|
+
if (event.document.text && !(known && known.version > event.document.text.version)) {
|
|
760
|
+
this.recordText(uri, event.document);
|
|
761
|
+
}
|
|
709
762
|
const write = this.unsavedWrites.get(uri);
|
|
710
763
|
if (write && this.restoreOutcome(write, event.document) !== 'kept') {
|
|
711
764
|
this.unsavedWrites.delete(uri);
|
|
@@ -780,6 +833,36 @@ class DataSession {
|
|
|
780
833
|
await this.restore(server);
|
|
781
834
|
}
|
|
782
835
|
}
|
|
836
|
+
/** The restores of `uri` whose event has fired. */
|
|
837
|
+
restoresOf(uri) {
|
|
838
|
+
return this.restores.get(uri) ?? 0;
|
|
839
|
+
}
|
|
840
|
+
/**
|
|
841
|
+
* Tell the listeners of a restore of `uri`, and count it when `counted`.
|
|
842
|
+
* Counted just before, so a call made with the version the event hands out
|
|
843
|
+
* is taken, and one made before it, which can only hold the old server's,
|
|
844
|
+
* is refused. A re-open that found the text the session last saw, at its
|
|
845
|
+
* version, is not counted, since a version from before still names it.
|
|
846
|
+
*/
|
|
847
|
+
fireRestored(event, counted = true) {
|
|
848
|
+
if (counted) {
|
|
849
|
+
this.restores.set(event.uri, this.restoresOf(event.uri) + 1);
|
|
850
|
+
}
|
|
851
|
+
// The emitter logs a listener that throws, so a failed listener fails no restore.
|
|
852
|
+
this.restoreEmitter.fire(event);
|
|
853
|
+
}
|
|
854
|
+
/**
|
|
855
|
+
* Refuse a call gated on `baseVersion` if `uri` was restored since the
|
|
856
|
+
* call was made, when its count in {@link restores} was `restores`. A
|
|
857
|
+
* restarted server numbers versions afresh, so the version can match text
|
|
858
|
+
* the caller never saw, and the server would take the call over it.
|
|
859
|
+
*/
|
|
860
|
+
refuseAcrossRestore(restores, uri, baseVersion, message = errors_1.STALE_BASE_VERSION_UPDATE) {
|
|
861
|
+
if (restores !== this.restoresOf(uri) && (0, base_version_1.isModelVersion)(baseVersion)) {
|
|
862
|
+
// No version of the new server's text is known for the call.
|
|
863
|
+
throw new errors_1.ConflictError(uri, baseVersion, base_version_1.UNRECORDED_VERSION, message);
|
|
864
|
+
}
|
|
865
|
+
}
|
|
783
866
|
/**
|
|
784
867
|
* Re-open, each under the options its {@link DataSessionOpen} holds, and
|
|
785
868
|
* re-watch every document the session had open, write again what it wrote
|
|
@@ -831,6 +914,7 @@ class DataSession {
|
|
|
831
914
|
// server numbers afresh, below the versions saved before it.
|
|
832
915
|
this.savedVersions.clear();
|
|
833
916
|
const reopened = new Map();
|
|
917
|
+
const unchanged = new Set();
|
|
834
918
|
const lost = [];
|
|
835
919
|
for (const uri of [...this.openUris]) {
|
|
836
920
|
// Closed, or its file deleted, while the restore ran.
|
|
@@ -869,6 +953,11 @@ class DataSession {
|
|
|
869
953
|
if (this.createdUris.has(uri) && document.text !== undefined && known !== undefined && document.text.hash !== known.hash) {
|
|
870
954
|
this.createdUris.delete(uri);
|
|
871
955
|
}
|
|
956
|
+
// The text the session last saw, at its version, so a version
|
|
957
|
+
// from before names the same text as on the server before.
|
|
958
|
+
if (document.text !== undefined && document.text.version === known?.version && document.text.hash === known.hash) {
|
|
959
|
+
unchanged.add(uri);
|
|
960
|
+
}
|
|
872
961
|
this.recordText(uri, document);
|
|
873
962
|
}
|
|
874
963
|
reopened.set(uri, document);
|
|
@@ -923,6 +1012,7 @@ class DataSession {
|
|
|
923
1012
|
this.savedVersions.delete(uri);
|
|
924
1013
|
this.createdUris.delete(uri);
|
|
925
1014
|
this.host.reportError?.(error, (0, primitives_1.resolve)(exports.DATA_SESSION_RESTORE_FAILED, { uri, detail: (0, primitives_1.describeError)(error) }));
|
|
1015
|
+
this.fireRestored({ uri, reopened: false });
|
|
926
1016
|
}
|
|
927
1017
|
}
|
|
928
1018
|
const sets = new Map();
|
|
@@ -963,6 +1053,9 @@ class DataSession {
|
|
|
963
1053
|
// has the document open and watched, so it stays restored.
|
|
964
1054
|
}
|
|
965
1055
|
}
|
|
1056
|
+
if (this.openUris.has(uri)) {
|
|
1057
|
+
this.fireRestored({ uri, reopened: true, document: current }, !unchanged.has(uri));
|
|
1058
|
+
}
|
|
966
1059
|
}
|
|
967
1060
|
if (lost.length > 0) {
|
|
968
1061
|
const reported = (0, primitives_1.resolve)(exports.DATA_SESSION_UNSAVED_LOST, { uris: lost.join(', ') });
|
|
@@ -1158,14 +1251,15 @@ class DataSession {
|
|
|
1158
1251
|
}
|
|
1159
1252
|
/** Run `call`, counted as in flight on each of `uris` until it settles. */
|
|
1160
1253
|
track(uris, call) {
|
|
1161
|
-
|
|
1254
|
+
// Chained so only the promise handed back can report a failure.
|
|
1255
|
+
let running = call();
|
|
1162
1256
|
for (const uri of uris) {
|
|
1163
1257
|
let tracker = this.inFlight.get(uri);
|
|
1164
1258
|
if (tracker === undefined) {
|
|
1165
1259
|
tracker = new pending_work_tracker_1.PendingWorkTracker();
|
|
1166
1260
|
this.inFlight.set(uri, tracker);
|
|
1167
1261
|
}
|
|
1168
|
-
tracker.track(running);
|
|
1262
|
+
running = tracker.track(running);
|
|
1169
1263
|
}
|
|
1170
1264
|
return running;
|
|
1171
1265
|
}
|
|
@@ -1189,9 +1283,7 @@ class DataSession {
|
|
|
1189
1283
|
}
|
|
1190
1284
|
};
|
|
1191
1285
|
const ending = this.endings.get(uri);
|
|
1192
|
-
|
|
1193
|
-
running.then(done, done);
|
|
1194
|
-
return running;
|
|
1286
|
+
return this.track([uri], () => (ending ? ending.then(() => call(opening)) : call(opening))).finally(done);
|
|
1195
1287
|
}
|
|
1196
1288
|
/**
|
|
1197
1289
|
* Run `end`, a close or delete of `uri`, kept in {@link endings} until it
|
|
@@ -1199,6 +1291,9 @@ class DataSession {
|
|
|
1199
1291
|
*/
|
|
1200
1292
|
trackEnding(uri, end) {
|
|
1201
1293
|
const ending = end();
|
|
1294
|
+
// Derived, so a dropped failure is reported, and before `allSettled`, so
|
|
1295
|
+
// the caller resumes before an open waiting on it starts.
|
|
1296
|
+
const handed = ending.then(() => undefined);
|
|
1202
1297
|
const settled = Promise.allSettled([this.endings.get(uri), ending]);
|
|
1203
1298
|
this.endings.set(uri, settled);
|
|
1204
1299
|
void settled.then(() => {
|
|
@@ -1206,7 +1301,7 @@ class DataSession {
|
|
|
1206
1301
|
this.endings.delete(uri);
|
|
1207
1302
|
}
|
|
1208
1303
|
});
|
|
1209
|
-
return
|
|
1304
|
+
return handed;
|
|
1210
1305
|
}
|
|
1211
1306
|
/** Wait until the work `trackers` hold now has settled, or {@link settleBeforeCloseMs} has passed. */
|
|
1212
1307
|
async settle(trackers) {
|