@hydranium/protocol 1.0.0-next.285 → 1.0.0-next.288
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 +61 -7
- package/lib/client/data-connection.d.ts.map +1 -1
- package/lib/client/data-connection.js +110 -16
- 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 +5 -1
- package/lib/client/data-events.js.map +1 -1
- package/lib/client/data-session.d.ts +60 -23
- package/lib/client/data-session.d.ts.map +1 -1
- package/lib/client/data-session.js +97 -23
- package/lib/client/data-session.js.map +1 -1
- package/lib/data/data-server-protocol.d.ts +13 -9
- package/lib/data/data-server-protocol.d.ts.map +1 -1
- package/lib/data/events.d.ts +14 -1
- package/lib/data/events.d.ts.map +1 -1
- package/lib/transfer-document.d.ts +9 -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 +162 -44
- package/src/client/data-events.ts +5 -1
- package/src/client/data-session.ts +146 -39
- package/src/data/data-server-protocol.ts +13 -9
- package/src/data/events.ts +14 -1
- package/src/transfer-document.ts +10 -0
|
@@ -12,7 +12,6 @@ import type { DataServerProtocol, DiagnosticOf, TransferDocumentDeletedEvent, Tr
|
|
|
12
12
|
import type { Logger } from '../logger';
|
|
13
13
|
import { type BaseVersion, type ModelVersion } from '../model-service/base-version';
|
|
14
14
|
import { type ResolvedMessage } from '../messages/primitives';
|
|
15
|
-
import type { OpenModelArgs } from '../model-server';
|
|
16
15
|
import type { MaybePromise } from '../util';
|
|
17
16
|
import type { RpcProxy } from '../rpc';
|
|
18
17
|
import type { TextState, TransferDocument, TransferSavedDocument } from '../transfer-document';
|
|
@@ -46,11 +45,17 @@ export declare const DATA_SESSION_UNSAVED_LOST: import("../messages/primitives")
|
|
|
46
45
|
export type DataSessionArgs<TMethod extends (args: never) => unknown> = Omit<Parameters<TMethod>[0], 'clientId'>;
|
|
47
46
|
/**
|
|
48
47
|
* Open a document through a session; the session supplies `clientId`. Only the
|
|
49
|
-
* URI and the open's options
|
|
50
|
-
* ignores the `languageId`, `version` and `text` seeds of `OpenModelArgs`,
|
|
51
|
-
*
|
|
48
|
+
* URI and the open's options, read off the server's signature: the server
|
|
49
|
+
* ignores the `languageId`, `version` and `text` seeds of `OpenModelArgs`, and
|
|
50
|
+
* a field an adopter adds never reaches the server session's open, so
|
|
51
|
+
* accepting either would let a caller believe it took effect.
|
|
52
52
|
*/
|
|
53
|
-
export type DataSessionOpenArgs<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = Pick<
|
|
53
|
+
export type DataSessionOpenArgs<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = Pick<Parameters<TServer['openModelDocument']>[0], 'uri' | ('options' & keyof Parameters<TServer['openModelDocument']>[0])>;
|
|
54
|
+
/**
|
|
55
|
+
* The options an open through a session passes to `TServer`, `undefined` when
|
|
56
|
+
* it passed none; only `undefined` for a server whose open takes none.
|
|
57
|
+
*/
|
|
58
|
+
export type DataSessionOpenOptions<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = DataSessionOpenArgs<TTransfer, TServer>['options' & keyof DataSessionOpenArgs<TTransfer, TServer>] | undefined;
|
|
54
59
|
/** Create a document through a session; the session supplies `clientId`. */
|
|
55
60
|
export type DataSessionCreateArgs<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> = DataSessionArgs<TServer['createModelDocument']>;
|
|
56
61
|
/** Close a document through a session; the session supplies `clientId`. */
|
|
@@ -108,9 +113,15 @@ export interface DataSessionUnsavedWrite<TTransfer extends TransferElement, TSer
|
|
|
108
113
|
* that the URI is open accepts an answer from before a close or deletion
|
|
109
114
|
* once the URI is open again.
|
|
110
115
|
*/
|
|
111
|
-
export interface DataSessionOpen {
|
|
116
|
+
export interface DataSessionOpen<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> {
|
|
112
117
|
/** The URI the open's answer named, which the server keys its notifications by. */
|
|
113
118
|
readonly serverUri: string;
|
|
119
|
+
/**
|
|
120
|
+
* The options the server opened under, which a re-open after a reconnect
|
|
121
|
+
* passes again: those of the earliest open of the URI under way when the
|
|
122
|
+
* first answered, since the server keeps the open that arrives first.
|
|
123
|
+
*/
|
|
124
|
+
readonly options: DataSessionOpenOptions<TTransfer, TServer>;
|
|
114
125
|
/** Whether a deletion ended the open, which an open still watching sends again; a close does not. */
|
|
115
126
|
deleted: boolean;
|
|
116
127
|
}
|
|
@@ -120,9 +131,11 @@ export interface DataSessionOpen {
|
|
|
120
131
|
* nothing and is not sent again, so the close stands. Without the mark, a
|
|
121
132
|
* deletion during its watch has it sent again after the close.
|
|
122
133
|
*/
|
|
123
|
-
export interface DataSessionOpening {
|
|
134
|
+
export interface DataSessionOpening<TTransfer extends TransferElement, TServer extends DataServerProtocol<TTransfer, DiagnosticOf<TServer>> = DataServerProtocol<TTransfer>> {
|
|
124
135
|
/** Whether a close of the URI came while this open was under way. */
|
|
125
136
|
closed: boolean;
|
|
137
|
+
/** The options the open was sent with; none for a create. */
|
|
138
|
+
readonly options: DataSessionOpenOptions<TTransfer, TServer>;
|
|
126
139
|
}
|
|
127
140
|
/**
|
|
128
141
|
* What a {@link DataSession} needs from the connection that minted it.
|
|
@@ -140,6 +153,13 @@ export interface DataSessionHost<TTransfer extends TransferElement, TServer exte
|
|
|
140
153
|
* is what the client was last told of the URI since the URI's last open.
|
|
141
154
|
*/
|
|
142
155
|
restoreDirty?(event: TransferDocumentDirtyChangedEvent): void;
|
|
156
|
+
/**
|
|
157
|
+
* Tell the connection's client of a document a restore found gone, whose
|
|
158
|
+
* deletion reached no one while the connection was down, as the server
|
|
159
|
+
* tells it of a deletion over a live connection. Without it, the restore
|
|
160
|
+
* reports the unsaved text such a document took with it as lost.
|
|
161
|
+
*/
|
|
162
|
+
restoreDeletion?(event: TransferDocumentDeletedEvent): void;
|
|
143
163
|
/**
|
|
144
164
|
* Forget what the client was told of `uri`'s dirty state: an open just
|
|
145
165
|
* made answered its caller afresh, and the client heard none of it, or a
|
|
@@ -163,7 +183,7 @@ export interface DataSessionHost<TTransfer extends TransferElement, TServer exte
|
|
|
163
183
|
/**
|
|
164
184
|
* Fires with each deletion the server sends. A session forgets a document
|
|
165
185
|
* whose file was deleted; without this event it keeps it as open until a
|
|
166
|
-
* restore finds it gone
|
|
186
|
+
* restore finds it gone.
|
|
167
187
|
*/
|
|
168
188
|
readonly onDidDeleteDocument?: Event<TransferDocumentDeletedEvent>;
|
|
169
189
|
/** Where the session logs the documents it forgets as gone. */
|
|
@@ -238,13 +258,13 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
238
258
|
* still under way, the open it is under. A repeat open keeps it, as the
|
|
239
259
|
* server keeps its earlier open.
|
|
240
260
|
*/
|
|
241
|
-
protected readonly opens: Map<string, DataSessionOpen
|
|
261
|
+
protected readonly opens: Map<string, DataSessionOpen<TTransfer, TServer>>;
|
|
242
262
|
/**
|
|
243
263
|
* Per URI, the opens of it this session has under way. Such a URI counts
|
|
244
264
|
* as open for {@link withOpenDocument}, which would otherwise close it
|
|
245
265
|
* under the open that is still being made.
|
|
246
266
|
*/
|
|
247
|
-
protected readonly openings: Map<string, Set<DataSessionOpening
|
|
267
|
+
protected readonly openings: Map<string, Set<DataSessionOpening<TTransfer, TServer>>>;
|
|
248
268
|
/**
|
|
249
269
|
* Per URI, the closes and deletes of it this session has under way, which
|
|
250
270
|
* an open or create called meanwhile waits for; see {@link trackEnding}.
|
|
@@ -307,6 +327,13 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
307
327
|
* over a connection that is going away.
|
|
308
328
|
*/
|
|
309
329
|
protected detached: boolean;
|
|
330
|
+
/**
|
|
331
|
+
* Write sets, keyed as a restore groups them, that lost a document to
|
|
332
|
+
* another client's deletion. A restore cannot write such a set again
|
|
333
|
+
* whole, so it writes none of it. Weak, so a set goes once no write
|
|
334
|
+
* record holds it.
|
|
335
|
+
*/
|
|
336
|
+
protected readonly brokenSets: WeakSet<object>;
|
|
310
337
|
/** The subscription to the host's `onDidChangeDirty`, disposed with the session. */
|
|
311
338
|
protected readonly dirtySubscription?: Disposable;
|
|
312
339
|
/** The subscription to the host's `onDidUpdateDocument`, disposed with the session. */
|
|
@@ -360,7 +387,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
360
387
|
* undone, since the server may have taken the close first. A failed watch
|
|
361
388
|
* is undone too: the caller sees a failed open, and so would never close it.
|
|
362
389
|
*/
|
|
363
|
-
protected openAndWatch(uri: string, opening: DataSessionOpening, created: boolean, open: (server: RpcProxy<TServer>) => Promise<DataSessionDocument<TTransfer, TServer>>): Promise<DataSessionDocument<TTransfer, TServer>>;
|
|
390
|
+
protected openAndWatch(uri: string, opening: DataSessionOpening<TTransfer, TServer>, created: boolean, open: (server: RpcProxy<TServer>) => Promise<DataSessionDocument<TTransfer, TServer>>): Promise<DataSessionDocument<TTransfer, TServer>>;
|
|
364
391
|
/**
|
|
365
392
|
* Watch a document this session just opened, and record it as open.
|
|
366
393
|
* Answers `undefined`, recording nothing, when a deletion heard while the
|
|
@@ -381,7 +408,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
381
408
|
* see {@link hasOpen}: the server holds one open per session and URI, so
|
|
382
409
|
* the close would end that one too.
|
|
383
410
|
*/
|
|
384
|
-
protected undoOpen(server: RpcProxy<TServer>, uri: string, opening: DataSessionOpening): Promise<void>;
|
|
411
|
+
protected undoOpen(server: RpcProxy<TServer>, uri: string, opening: DataSessionOpening<TTransfer, TServer>): Promise<void>;
|
|
385
412
|
/** Drop everything this session keeps of `uri`, which it no longer has open. */
|
|
386
413
|
protected forgetDocument(uri: string): void;
|
|
387
414
|
/**
|
|
@@ -389,7 +416,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
389
416
|
* no close has marked, other than `except`. A marked open records nothing,
|
|
390
417
|
* so nothing can rely on it.
|
|
391
418
|
*/
|
|
392
|
-
protected hasOpen(uri: string, except?: DataSessionOpening): boolean;
|
|
419
|
+
protected hasOpen(uri: string, except?: DataSessionOpening<TTransfer, TServer>): boolean;
|
|
393
420
|
/**
|
|
394
421
|
* Open `args.uri`, run `fn` with the opened snapshot, and close it once
|
|
395
422
|
* `fn` settles, whether it returned or threw. A URI this session already
|
|
@@ -525,7 +552,10 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
525
552
|
* let a restore re-open the file that is gone. Unwatched rather than
|
|
526
553
|
* closed: the server keeps the watch, and a close could end a re-open of a
|
|
527
554
|
* re-created file still in flight. Unsaved writes are logged, not
|
|
528
|
-
* reported: the client hears the deletion too.
|
|
555
|
+
* reported: the client hears the deletion too. A document this session
|
|
556
|
+
* created and never saved, deleted by no session, is reported as well: a
|
|
557
|
+
* drop released it. An unsaved write breaks the set it was written with,
|
|
558
|
+
* see {@link brokenSets}.
|
|
529
559
|
*
|
|
530
560
|
* This session's own deletion is neither unwatched nor logged as dropping
|
|
531
561
|
* unsaved text: its delete released the watch, and its caller chose to
|
|
@@ -543,9 +573,10 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
543
573
|
*/
|
|
544
574
|
protected register(server: RpcProxy<TServer>, reconnected: boolean): Promise<void>;
|
|
545
575
|
/**
|
|
546
|
-
* Re-open
|
|
547
|
-
*
|
|
548
|
-
*
|
|
576
|
+
* Re-open, each under the options its {@link DataSessionOpen} holds, and
|
|
577
|
+
* re-watch every document the session had open, write again what it wrote
|
|
578
|
+
* since their last save where the re-open lost it, and tell the host which
|
|
579
|
+
* of them lost it for good.
|
|
549
580
|
*
|
|
550
581
|
* Decided per document by the re-opened document's `text.hash`,
|
|
551
582
|
* in {@link restoreOutcome}. Versions cannot decide a write: a revert moves
|
|
@@ -562,7 +593,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
562
593
|
* write, so an edit arriving in between conflicts, and a conflict is not
|
|
563
594
|
* retried. Documents last written by one {@link updateDocuments} are sent
|
|
564
595
|
* again by one, and only when every one of them may be; a document that
|
|
565
|
-
* could not be re-opened blocks its set.
|
|
596
|
+
* could not be re-opened, or that another client deleted, blocks its set.
|
|
566
597
|
*
|
|
567
598
|
* No caller is waiting, so the outcomes go through the host: one report
|
|
568
599
|
* naming every document whose unsaved text is gone, whose record is then
|
|
@@ -572,8 +603,13 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
572
603
|
* restore to decide again. A document closed while the restore runs, or
|
|
573
604
|
* whose file is deleted then, is neither restored nor reported. One gone
|
|
574
605
|
* while the connection was down, which the server reads back without a
|
|
575
|
-
* model, is forgotten, and goes
|
|
576
|
-
*
|
|
606
|
+
* model, is forgotten, and its deletion goes to the host as the deletion
|
|
607
|
+
* no event brought; unsaved text it took with it is logged, as for a
|
|
608
|
+
* deletion heard live, and reported as well for a document the session
|
|
609
|
+
* created and never saved, which the drop released. A host that cannot
|
|
610
|
+
* tell the client has the unsaved text of either reported. Once the session
|
|
611
|
+
* is disposed, its caller has ended it, and the restore returns at its
|
|
612
|
+
* next await: nothing more goes to the server or the host.
|
|
577
613
|
*
|
|
578
614
|
* Each document's dirty state goes to the host too, read once the watch is
|
|
579
615
|
* in place and any write is sent: a flip while the connection was down, or
|
|
@@ -600,7 +636,8 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
600
636
|
*
|
|
601
637
|
* A member whose record is no longer the one the restore started with was
|
|
602
638
|
* closed, saved or disposed meanwhile, and is left out: writing it would
|
|
603
|
-
* put back text its caller discarded.
|
|
639
|
+
* put back text its caller discarded. A set in {@link brokenSets} is
|
|
640
|
+
* not written again.
|
|
604
641
|
*/
|
|
605
642
|
protected reapply(server: RpcProxy<TServer>, members: readonly [string, DataSessionUnsavedWrite<TTransfer, TServer>][], reopened: ReadonlyMap<string, DataSessionDocument<TTransfer, TServer>>): Promise<string[]>;
|
|
606
643
|
/**
|
|
@@ -626,7 +663,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
626
663
|
* text or a later write replaced it, and its answer carries the text as it
|
|
627
664
|
* was when sent, which a restore would report as lost.
|
|
628
665
|
*/
|
|
629
|
-
protected recordWrite(uri: string, open: DataSessionOpen | undefined, document: DataSessionDocument<TTransfer, TServer>, baseHash: string | undefined, call: DataSessionUnsavedWrite<TTransfer, TServer>['call']): void;
|
|
666
|
+
protected recordWrite(uri: string, open: DataSessionOpen<TTransfer, TServer> | undefined, document: DataSessionDocument<TTransfer, TServer>, baseHash: string | undefined, call: DataSessionUnsavedWrite<TTransfer, TServer>['call']): void;
|
|
630
667
|
/**
|
|
631
668
|
* What {@link DataSessionUnsavedWrite.answer} keeps of `document`. Every write
|
|
632
669
|
* and open answers with a model; one without is reported and counted older
|
|
@@ -642,7 +679,7 @@ export declare class DataSession<TTransfer extends TransferElement, TServer exte
|
|
|
642
679
|
* and sent once the closes and deletes of `uri` called before it have
|
|
643
680
|
* answered.
|
|
644
681
|
*/
|
|
645
|
-
protected trackOpen<T>(uri: string, call: (opening: DataSessionOpening) => Promise<T>): Promise<T>;
|
|
682
|
+
protected trackOpen<T>(uri: string, options: DataSessionOpenOptions<TTransfer, TServer>, call: (opening: DataSessionOpening<TTransfer, TServer>) => Promise<T>): Promise<T>;
|
|
646
683
|
/**
|
|
647
684
|
* Run `end`, a close or delete of `uri`, kept in {@link endings} until it
|
|
648
685
|
* and every earlier one of `uri` have settled.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EACT,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC9B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,WAAW,EAAkB,KAAK,YAAY,EAAwC,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,KAAK,eAAe,EAAyC,MAAM,wBAAwB,CAAC;AACrG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,+HAGvC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,8KAG7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,oJAGrC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAEjH;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAC5B,SAAS,SAAS,eAAe,EAEjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,CAC9B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,CAC7B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAEnD,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,CAC9B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEpD,2FAA2F;AAC3F,MAAM,MAAM,sBAAsB,CAC/B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAErD,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,CAC5B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAElD,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,CAC/B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAErD,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,CAC9B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEpD,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,CAC5B,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,IACnG,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CACrC,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAEpG;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EACR;QAAE,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;KAAE,GAC9D;QAAE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qGAAqG;IACrG,OAAO,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IAChC,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CAClB;AAOD;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACrI,+FAA+F;IAC/F,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,iGAAiG;IACjG,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9D;;;OAGG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,iCAAiC,GAAG,IAAI,CAAC;IAC9D;;;;;OAKG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrE;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrG;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnE,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,SAAS,SAAS,eAAe,EAAE,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CACvI,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EACzC,KAAK,EAAE,MAAM,KACX,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,WAAW,CACrB,SAAS,SAAS,eAAe,EACjC,OAAO,SAAS,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,CACrG,YAAW,UAAU;IAqGjB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM;IAtGzB;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAU;IACxD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAqB;IACpD,+DAA+D;IAC/D,SAAS,CAAC,QAAQ,CAAC,QAAQ,cAAqB;IAChD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,+BAAsC;IAC9D;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,uCAA8C;IACzE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,gCAAuC;IACjE,yFAAyF;IACzF,SAAS,CAAC,QAAQ,CAAC,aAAa,2DAAkE;IAClG;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,yBAAgC;IAC9D;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,sBAAkC;IAClE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,cAAqB;IACnD,8FAA8F;IAC9F,SAAS,CAAC,QAAQ,CAAC,QAAQ,qCAA4C;IACvE,+HAA+H;IAC/H,SAAS,CAAC,QAAQ,CAAC,aAAa,wBAA+B;IAC/D,SAAS,CAAC,QAAQ,CAAC,cAAc,gBAAuB;IACxD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAA6B;IAC/D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAgB;IACtD,6FAA6F;IAC7F,SAAS,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,SAAS,CAAC,QAAQ,UAAS;IAC3B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,UAAS;IAC3B,oFAAoF;IACpF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAClD,uFAAuF;IACvF,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;IACnD,uFAAuF;IACvF,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC;IACrD,mDAAmD;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACY,QAAQ,EAAE,MAAM,EACN,IAAI,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EACnD,KAAK,EAAE,MAAM,EAMxB;IAED;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAmB5C;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAI5G;IAED;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAIhH;IAED;;;;;;;;;;;;OAYG;IACH,UAAgB,YAAY,CACzB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GACrF,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAsBlD;IAED;;;;;;OAMG;IACH,UAAgB,WAAW,CACxB,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GACjD,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAiB9D;IAED;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjF;IAED;;;;;OAKG;IACH,UAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3G;IAED,gFAAgF;IAChF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAS1C;IAED;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAEnE;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,CAAC,EACrB,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,EAC7C,EAAE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,GAC1E,OAAO,CAAC,CAAC,CAAC,CAeZ;IAED,sFAAsF;IACtF,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAUhH;IAED;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAiBpH;IAED,2FAA2F;IAC3F,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAE5H;IAED;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAElI;IAED;;;;;;;;;;OAUG;IACH,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;IAED,2EAA2E;IAC3E,SAAS,CAAC,SAAS,CAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GACrG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CA8BlE;IAED,2EAA2E;IAC3E,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAEzC;IAED;;;;;;;;;;OAUG;IACH,OAAO,IAAI,IAAI,CAgBd;IAED;;;;;;;;;;;OAWG;IACH,MAAM,IAAI,IAAI,CAYb;IAED;;;;OAIG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI,CAM5B;IAED;;;;;;OAMG;IACH,SAAS,IAAI,IAAI,CAIhB;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,iCAAiC,GAAG,IAAI,CAYzE;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAc3G;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,GAAG,IAAI,CAgBzE;IAED;;;OAGG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASjD;IAED;;;OAGG;IACH,UAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvF;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,UAAgB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGhE;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,cAAc,CACrB,KAAK,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,EAClD,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GACjD,MAAM,GAAG,QAAQ,GAAG,MAAM,CAQ5B;IAED;;;;;;;;;OASG;IACH,UAAgB,OAAO,CACpB,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,EACzE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GACtE,OAAO,CAAC,MAAM,EAAE,CAAC,CAiFnB;IAED;;;;;;;;;OASG;IACH,UAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAUxH;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,WAAW,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,EACjD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GACzD,IAAI,CAgBN;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CACf,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GACjD,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAOvD;IAED,gGAAgG;IAChG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,CAMzF;IAED,2EAA2E;IAC3E,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ9E;IAED;;;;OAIG;IACH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAcjG;IAED;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1E;IAED,kFAAkF;IAClF,UAAgB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;IAED,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;CACH"}
|
|
1
|
+
{"version":3,"file":"data-session.d.ts","sourceRoot":"","sources":["../../src/client/data-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.DataSession = exports.DATA_SESSION_UNSAVED_LOST = exports.DATA_SESSION_ANSWER_WITHOUT_MODEL = exports.DATA_SESSION_RESTORE_FAILED = void 0;
|
|
12
12
|
const vscode_jsonrpc_1 = require("vscode-jsonrpc");
|
|
13
|
+
const client_ids_1 = require("../client-ids");
|
|
13
14
|
const clock_1 = require("../clock");
|
|
14
15
|
const errors_1 = require("../errors");
|
|
15
16
|
const base_version_1 = require("../model-service/base-version");
|
|
@@ -37,6 +38,10 @@ exports.DATA_SESSION_UNSAVED_LOST = (0, primitives_1.defineMessage)('hydranium/p
|
|
|
37
38
|
function indexOf(write) {
|
|
38
39
|
return 'index' in write.call ? write.call.index : 0;
|
|
39
40
|
}
|
|
41
|
+
/** The call `write` was last written by, which a restore writes again as one set. */
|
|
42
|
+
function setOf(write) {
|
|
43
|
+
return 'update' in write.call ? write.call.update : write.call.updates;
|
|
44
|
+
}
|
|
40
45
|
/**
|
|
41
46
|
* One participant on a data connection: a properties panel, a tree, a form
|
|
42
47
|
* editor. The client side of a server client session, registered over the
|
|
@@ -169,6 +174,13 @@ class DataSession {
|
|
|
169
174
|
* over a connection that is going away.
|
|
170
175
|
*/
|
|
171
176
|
detached = false;
|
|
177
|
+
/**
|
|
178
|
+
* Write sets, keyed as a restore groups them, that lost a document to
|
|
179
|
+
* another client's deletion. A restore cannot write such a set again
|
|
180
|
+
* whole, so it writes none of it. Weak, so a set goes once no write
|
|
181
|
+
* record holds it.
|
|
182
|
+
*/
|
|
183
|
+
brokenSets = new WeakSet();
|
|
172
184
|
/** The subscription to the host's `onDidChangeDirty`, disposed with the session. */
|
|
173
185
|
dirtySubscription;
|
|
174
186
|
/** The subscription to the host's `onDidUpdateDocument`, disposed with the session. */
|
|
@@ -230,7 +242,7 @@ class DataSession {
|
|
|
230
242
|
* from `getModelDocument({ includeDiagnostics: true })`.
|
|
231
243
|
*/
|
|
232
244
|
openDocument(args) {
|
|
233
|
-
return this.trackOpen(args.uri, opening => this.openAndWatch(args.uri, opening, false, server => server.openModelDocument({ ...args, clientId: this.clientId })));
|
|
245
|
+
return this.trackOpen(args.uri, args.options, opening => this.openAndWatch(args.uri, opening, false, server => server.openModelDocument({ ...args, clientId: this.clientId })));
|
|
234
246
|
}
|
|
235
247
|
/**
|
|
236
248
|
* Create a document that exists nowhere yet, open and watched for this
|
|
@@ -238,7 +250,7 @@ class DataSession {
|
|
|
238
250
|
* refuses a URI that exists on disk or that any client has open.
|
|
239
251
|
*/
|
|
240
252
|
createDocument(args) {
|
|
241
|
-
return this.trackOpen(args.uri, opening => this.openAndWatch(args.uri, opening, true, server => server.createModelDocument({ ...args, clientId: this.clientId })));
|
|
253
|
+
return this.trackOpen(args.uri, undefined, opening => this.openAndWatch(args.uri, opening, true, server => server.createModelDocument({ ...args, clientId: this.clientId })));
|
|
242
254
|
}
|
|
243
255
|
/**
|
|
244
256
|
* Send `open` and watch what it answered, again for as long as a deletion
|
|
@@ -287,7 +299,14 @@ class DataSession {
|
|
|
287
299
|
async watchOpened(server, uri, document) {
|
|
288
300
|
// Recorded before the watch, so a deletion heard while it is under way
|
|
289
301
|
// finds this open, which the server made before the deletion.
|
|
290
|
-
|
|
302
|
+
// Under the options of the earliest open still under way, which the
|
|
303
|
+
// server took first; one that failed is gone from `openings` by now,
|
|
304
|
+
// as the connection handles each answer in a task of its own.
|
|
305
|
+
const open = this.opens.get(uri) ?? {
|
|
306
|
+
serverUri: document.uri,
|
|
307
|
+
deleted: false,
|
|
308
|
+
options: [...(this.openings.get(uri) ?? [])].find(opening => !opening.closed)?.options
|
|
309
|
+
};
|
|
291
310
|
this.opens.set(uri, open);
|
|
292
311
|
await server.watchModelDocument({ uri, clientId: this.clientId });
|
|
293
312
|
if (this.opens.get(uri) !== open) {
|
|
@@ -655,7 +674,10 @@ class DataSession {
|
|
|
655
674
|
* let a restore re-open the file that is gone. Unwatched rather than
|
|
656
675
|
* closed: the server keeps the watch, and a close could end a re-open of a
|
|
657
676
|
* re-created file still in flight. Unsaved writes are logged, not
|
|
658
|
-
* reported: the client hears the deletion too.
|
|
677
|
+
* reported: the client hears the deletion too. A document this session
|
|
678
|
+
* created and never saved, deleted by no session, is reported as well: a
|
|
679
|
+
* drop released it. An unsaved write breaks the set it was written with,
|
|
680
|
+
* see {@link brokenSets}.
|
|
659
681
|
*
|
|
660
682
|
* This session's own deletion is neither unwatched nor logged as dropping
|
|
661
683
|
* unsaved text: its delete released the watch, and its caller chose to
|
|
@@ -672,7 +694,18 @@ class DataSession {
|
|
|
672
694
|
this.forgetDocument(uri);
|
|
673
695
|
continue;
|
|
674
696
|
}
|
|
697
|
+
const write = this.unsavedWrites.get(uri);
|
|
698
|
+
if (write) {
|
|
699
|
+
this.brokenSets.add(setOf(write));
|
|
700
|
+
}
|
|
701
|
+
// Never saved, so no file a watcher could see removed: a deletion
|
|
702
|
+
// naming no session is the release of the text a drop left behind.
|
|
703
|
+
const released = this.createdUris.has(uri) && event.sourceClientId === client_ids_1.UNKNOWN_CLIENT_ID;
|
|
675
704
|
this.forgetGoneDocument(uri);
|
|
705
|
+
if (released) {
|
|
706
|
+
const reported = (0, primitives_1.resolve)(exports.DATA_SESSION_UNSAVED_LOST, { uris: uri });
|
|
707
|
+
this.host.reportError?.(new Error(reported.text), reported);
|
|
708
|
+
}
|
|
676
709
|
this.connected()
|
|
677
710
|
.then(server => server.unwatchModelDocument({ uri, clientId: this.clientId }))
|
|
678
711
|
.catch(() => undefined);
|
|
@@ -704,9 +737,10 @@ class DataSession {
|
|
|
704
737
|
}
|
|
705
738
|
}
|
|
706
739
|
/**
|
|
707
|
-
* Re-open
|
|
708
|
-
*
|
|
709
|
-
*
|
|
740
|
+
* Re-open, each under the options its {@link DataSessionOpen} holds, and
|
|
741
|
+
* re-watch every document the session had open, write again what it wrote
|
|
742
|
+
* since their last save where the re-open lost it, and tell the host which
|
|
743
|
+
* of them lost it for good.
|
|
710
744
|
*
|
|
711
745
|
* Decided per document by the re-opened document's `text.hash`,
|
|
712
746
|
* in {@link restoreOutcome}. Versions cannot decide a write: a revert moves
|
|
@@ -723,7 +757,7 @@ class DataSession {
|
|
|
723
757
|
* write, so an edit arriving in between conflicts, and a conflict is not
|
|
724
758
|
* retried. Documents last written by one {@link updateDocuments} are sent
|
|
725
759
|
* again by one, and only when every one of them may be; a document that
|
|
726
|
-
* could not be re-opened blocks its set.
|
|
760
|
+
* could not be re-opened, or that another client deleted, blocks its set.
|
|
727
761
|
*
|
|
728
762
|
* No caller is waiting, so the outcomes go through the host: one report
|
|
729
763
|
* naming every document whose unsaved text is gone, whose record is then
|
|
@@ -733,8 +767,13 @@ class DataSession {
|
|
|
733
767
|
* restore to decide again. A document closed while the restore runs, or
|
|
734
768
|
* whose file is deleted then, is neither restored nor reported. One gone
|
|
735
769
|
* while the connection was down, which the server reads back without a
|
|
736
|
-
* model, is forgotten, and goes
|
|
737
|
-
*
|
|
770
|
+
* model, is forgotten, and its deletion goes to the host as the deletion
|
|
771
|
+
* no event brought; unsaved text it took with it is logged, as for a
|
|
772
|
+
* deletion heard live, and reported as well for a document the session
|
|
773
|
+
* created and never saved, which the drop released. A host that cannot
|
|
774
|
+
* tell the client has the unsaved text of either reported. Once the session
|
|
775
|
+
* is disposed, its caller has ended it, and the restore returns at its
|
|
776
|
+
* next await: nothing more goes to the server or the host.
|
|
738
777
|
*
|
|
739
778
|
* Each document's dirty state goes to the host too, read once the watch is
|
|
740
779
|
* in place and any write is sent: a flip while the connection was down, or
|
|
@@ -755,7 +794,11 @@ class DataSession {
|
|
|
755
794
|
continue;
|
|
756
795
|
}
|
|
757
796
|
try {
|
|
758
|
-
const
|
|
797
|
+
const options = this.opens.get(uri)?.options;
|
|
798
|
+
const document = await server.openModelDocument({ uri, clientId: this.clientId, options });
|
|
799
|
+
if (this.disposed) {
|
|
800
|
+
return;
|
|
801
|
+
}
|
|
759
802
|
if (!this.openUris.has(uri)) {
|
|
760
803
|
// Forgotten while it re-opened. A close of the caller's would
|
|
761
804
|
// follow, but a deletion sends none.
|
|
@@ -765,13 +808,16 @@ class DataSession {
|
|
|
765
808
|
// Recorded before the watch, so a deletion heard while it is under
|
|
766
809
|
// way finds the re-open under the URI it answered with, which a
|
|
767
810
|
// restarted server may key differently.
|
|
768
|
-
this.opens.set(uri, { serverUri: document.uri, deleted: false });
|
|
811
|
+
this.opens.set(uri, { serverUri: document.uri, deleted: false, options });
|
|
769
812
|
await server.watchModelDocument({ uri, clientId: this.clientId }).catch(async (error) => {
|
|
770
813
|
// Closed, or the server holds the re-open until the session
|
|
771
814
|
// ends; no other call relies on it while the restore runs.
|
|
772
815
|
await server.closeModelDocument({ uri, clientId: this.clientId }).catch(() => undefined);
|
|
773
816
|
throw error;
|
|
774
817
|
});
|
|
818
|
+
if (this.disposed) {
|
|
819
|
+
return;
|
|
820
|
+
}
|
|
775
821
|
if (this.openUris.has(uri)) {
|
|
776
822
|
this.recordText(uri, document);
|
|
777
823
|
}
|
|
@@ -781,22 +827,43 @@ class DataSession {
|
|
|
781
827
|
// Gone while the connection was down, which no deletion told the
|
|
782
828
|
// session of: the server answers a read of it without a model.
|
|
783
829
|
const read = await server.getModelDocument({ uri }).catch(() => undefined);
|
|
830
|
+
if (this.disposed) {
|
|
831
|
+
return;
|
|
832
|
+
}
|
|
784
833
|
// Forgotten meanwhile, so nothing is lost.
|
|
785
834
|
if (!this.openUris.has(uri)) {
|
|
786
835
|
continue;
|
|
787
836
|
}
|
|
788
837
|
if (read && !read.model) {
|
|
789
|
-
// No deletion reached the client either, so unsaved text the
|
|
790
|
-
// document took with it is reported, as a drop's other losses are.
|
|
791
838
|
const write = this.unsavedWrites.get(uri);
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
839
|
+
// Named as the client last heard it, by the open's answer.
|
|
840
|
+
const serverUri = this.opens.get(uri)?.serverUri ?? uri;
|
|
841
|
+
// Never saved, so the drop released it and no one deleted it.
|
|
842
|
+
const created = this.createdUris.has(uri);
|
|
843
|
+
const unsaved = this.forgetGoneDocument(uri);
|
|
795
844
|
// Kept for `reapply`, where it blocks its set as a document
|
|
796
845
|
// that could not be re-opened does, and goes.
|
|
797
846
|
if (write) {
|
|
798
847
|
this.unsavedWrites.set(uri, write);
|
|
799
848
|
}
|
|
849
|
+
if (!this.host.restoreDeletion) {
|
|
850
|
+
// No client hears of the deletion, so the loss is reported.
|
|
851
|
+
if (unsaved) {
|
|
852
|
+
lost.push(uri);
|
|
853
|
+
}
|
|
854
|
+
continue;
|
|
855
|
+
}
|
|
856
|
+
// The client hears of the deletion, so unsaved text is logged,
|
|
857
|
+
// as for one heard live; the drop's release is reported too.
|
|
858
|
+
if (created) {
|
|
859
|
+
lost.push(uri);
|
|
860
|
+
}
|
|
861
|
+
try {
|
|
862
|
+
this.host.restoreDeletion({ uri: serverUri, sourceClientId: client_ids_1.UNKNOWN_CLIENT_ID });
|
|
863
|
+
}
|
|
864
|
+
catch {
|
|
865
|
+
// The client's listener failed, not the restore.
|
|
866
|
+
}
|
|
800
867
|
continue;
|
|
801
868
|
}
|
|
802
869
|
// Its record goes with its set's, in `reapply`, which it blocks.
|
|
@@ -810,11 +877,14 @@ class DataSession {
|
|
|
810
877
|
}
|
|
811
878
|
const sets = new Map();
|
|
812
879
|
for (const [uri, write] of writes) {
|
|
813
|
-
const
|
|
814
|
-
sets.set(
|
|
880
|
+
const set = setOf(write);
|
|
881
|
+
sets.set(set, [...(sets.get(set) ?? []), [uri, write]]);
|
|
815
882
|
}
|
|
816
883
|
for (const members of sets.values()) {
|
|
817
884
|
lost.push(...(await this.reapply(server, members, reopened)));
|
|
885
|
+
if (this.disposed) {
|
|
886
|
+
return;
|
|
887
|
+
}
|
|
818
888
|
}
|
|
819
889
|
for (const uri of reopened.keys()) {
|
|
820
890
|
if (!this.openUris.has(uri)) {
|
|
@@ -823,6 +893,9 @@ class DataSession {
|
|
|
823
893
|
// A failed read, or one without text, leaves the client's dirty
|
|
824
894
|
// state as it was; the document is restored all the same.
|
|
825
895
|
const current = await server.getModelDocument({ uri }).catch(() => undefined);
|
|
896
|
+
if (this.disposed) {
|
|
897
|
+
return;
|
|
898
|
+
}
|
|
826
899
|
// Again after the read: one closed or deleted meanwhile has no
|
|
827
900
|
// state to tell.
|
|
828
901
|
if (current?.text !== undefined && this.openUris.has(uri)) {
|
|
@@ -872,7 +945,8 @@ class DataSession {
|
|
|
872
945
|
*
|
|
873
946
|
* A member whose record is no longer the one the restore started with was
|
|
874
947
|
* closed, saved or disposed meanwhile, and is left out: writing it would
|
|
875
|
-
* put back text its caller discarded.
|
|
948
|
+
* put back text its caller discarded. A set in {@link brokenSets} is
|
|
949
|
+
* not written again.
|
|
876
950
|
*/
|
|
877
951
|
async reapply(server, members, reopened) {
|
|
878
952
|
const current = (uri, write) => !this.disposed && this.unsavedWrites.get(uri) === write;
|
|
@@ -899,7 +973,7 @@ class DataSession {
|
|
|
899
973
|
});
|
|
900
974
|
return gone.filter(member => member.outcome === 'lost' || member.outcome === 'resend').map(member => member.uri);
|
|
901
975
|
};
|
|
902
|
-
if (outcomes.some(member => member.outcome === 'lost' || member.outcome === 'failed')) {
|
|
976
|
+
if (this.brokenSets.has(setOf(members[0][1])) || outcomes.some(member => member.outcome === 'lost' || member.outcome === 'failed')) {
|
|
903
977
|
return lose();
|
|
904
978
|
}
|
|
905
979
|
// In the order of the call's updates, which is the order of its answers.
|
|
@@ -1042,8 +1116,8 @@ class DataSession {
|
|
|
1042
1116
|
* and sent once the closes and deletes of `uri` called before it have
|
|
1043
1117
|
* answered.
|
|
1044
1118
|
*/
|
|
1045
|
-
trackOpen(uri, call) {
|
|
1046
|
-
const opening = { closed: false };
|
|
1119
|
+
trackOpen(uri, options, call) {
|
|
1120
|
+
const opening = { closed: false, options };
|
|
1047
1121
|
const openings = this.openings.get(uri) ?? new Set();
|
|
1048
1122
|
this.openings.set(uri, openings.add(opening));
|
|
1049
1123
|
const done = () => {
|