@hydranium/protocol 1.0.0-next.381 → 1.0.0-next.382

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 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
@@ -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, which spares the read a first unsaved write
286
- * otherwise makes for its base; see {@link baseHashOf}.
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
- /** Write `args.model` back as this session. The session must have `args.uri` open. */
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
- /** Persist `args.model` to disk as this session. The session must have `args.uri` open. */
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, which spares the read a first unsaved write
133
- * otherwise makes for its base; see {@link baseHashOf}.
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
- /** Write `args.model` back as this session. The session must have `args.uri` open. */
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
- /** Persist `args.model` to disk as this session. The session must have `args.uri` open. */
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(', ') });