@hydranium/data-server 1.0.0-next.117 → 1.0.0-next.123
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 +5 -0
- package/lib/data-server.d.ts +94 -53
- package/lib/data-server.d.ts.map +1 -1
- package/lib/data-server.js +178 -135
- package/lib/data-server.js.map +1 -1
- package/package.json +7 -7
- package/src/data-server.ts +212 -135
package/README.md
CHANGED
|
@@ -19,6 +19,11 @@ Installed by the server process that already composes
|
|
|
19
19
|
`getModelDocument`, `updateModelDocument`, `saveModelDocument`,
|
|
20
20
|
`closeModelDocument`, `watchModelDocument` / `unwatchModelDocument`, and
|
|
21
21
|
`waitForReady` for clients that must not race workspace initialisation.
|
|
22
|
+
- **Client sessions per connection:** `createSession` registers a participant,
|
|
23
|
+
whose requests then write only what it has open; `createModelDocument` and
|
|
24
|
+
the all-or-none `updateModelDocuments` serve sessions only; `closeSession`, or
|
|
25
|
+
the connection closing, ends a session and closes everything it has open. See
|
|
26
|
+
[Client sessions](../../docs/concepts/client-sessions.md).
|
|
22
27
|
- **Push notifications instead of polling:** `onDocumentUpdated` when a
|
|
23
28
|
subscribed document reaches the configured build phase
|
|
24
29
|
(`DataServerOptions.subscriptionPhase`, `DocumentState.Validated` by default),
|
package/lib/data-server.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { DisposableCollection, ReferenceSource, type CloseModelArgs, type HydraniumResponseError, type Disposable, type ElementSource, type FindNextNameArgs, type LatencyCollector, type LatencyReport, type OpenModelArgs, type Project, type ReferenceCandidate, type ReferenceContext, type ReferenceRequest, type ReferenceTarget, type Tracer, type TransferDiagnostic, TransferDocument, type TransferElement } from '@hydranium/protocol';
|
|
10
|
-
import { type DataClientProtocol, type DataServerDiagnosticsProtocol, type DataServerProtocol, type DumpServerStateArgs, type StartProfilingArgs, type StopProfilingArgs, type WriteServerHeapSnapshotArgs, type GetModelDocumentArgs, type GetProjectForUriArgs, type TransferSaveDocumentArgs, type WatchModelDocumentArgs, type TransferDocumentUpdatedEvent, type TransferUpdateDocumentArgs } from '@hydranium/protocol/data';
|
|
10
|
+
import { type DataClientProtocol, type DataServerDiagnosticsProtocol, type DataServerProtocol, type DumpServerStateArgs, type StartProfilingArgs, type StopProfilingArgs, type WriteServerHeapSnapshotArgs, type CloseSessionArgs, type CreateModelDocumentArgs, type CreateSessionArgs, type GetModelDocumentArgs, type GetProjectForUriArgs, type TransferSaveDocumentArgs, type WatchModelDocumentArgs, type TransferDocumentUpdatedEvent, type TransferUpdateDocumentArgs, type TransferUpdateDocumentsArgs } from '@hydranium/protocol/data';
|
|
11
11
|
/**
|
|
12
12
|
* Raised when a profiling command arrives with no capture running.
|
|
13
13
|
*
|
|
@@ -36,10 +36,19 @@ export declare const REFERENCE_SETTLE_TIMEOUT: import("@hydranium/protocol").Mes
|
|
|
36
36
|
export declare const REFERENCE_SETTLE_TIMEOUT_CODE = 1003;
|
|
37
37
|
export declare const referenceSettleTimeoutError: (elapsedMs: number) => HydraniumResponseError;
|
|
38
38
|
import type { DataServerDiagnosticsProvider, DataServerProfileCapture } from './diagnostics-provider.js';
|
|
39
|
-
import type { ClientTextDocumentChangeEvent, HydraniumLanguageServices, LogNameOptions, AstDiagnostic, ModelService, ProjectChangeEvent, ServerSharedServices, TransferEncoder } from '@hydranium/core';
|
|
39
|
+
import type { ClientSession, ClientSessionWriteArgs, ClientTextDocumentChangeEvent, HydraniumLanguageServices, LogNameOptions, AstDiagnostic, ModelService, ProjectChangeEvent, ServerSharedServices, SessionEndCause, TransferEncoder } from '@hydranium/core';
|
|
40
40
|
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
41
41
|
import { type AstNode, DocumentState, type LangiumDocument, type URI } from '@hydranium/langium';
|
|
42
42
|
import type { CancellationToken, MessageConnection } from 'vscode-jsonrpc';
|
|
43
|
+
/**
|
|
44
|
+
* A session a data connection registered with a resume token, and how to end
|
|
45
|
+
* it from another connection. See {@link DataServer.resumableSessions}.
|
|
46
|
+
*/
|
|
47
|
+
export interface ResumableSession {
|
|
48
|
+
readonly token: string;
|
|
49
|
+
/** End the session as its connection closing would. */
|
|
50
|
+
readonly end: () => void;
|
|
51
|
+
}
|
|
43
52
|
/**
|
|
44
53
|
* Which observable state {@link DataServer.computeDocumentFingerprint} hashes to
|
|
45
54
|
* de-dup `onDocumentUpdated` emissions.
|
|
@@ -258,17 +267,15 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
258
267
|
/** Subscription bookkeeping: URI → set of clientIds that subscribed for that URI. */
|
|
259
268
|
protected readonly subscriptions: Map<string, Set<string>>;
|
|
260
269
|
/**
|
|
261
|
-
*
|
|
262
|
-
*
|
|
270
|
+
* The client sessions this connection registered, by client id. A document
|
|
271
|
+
* request carrying one of these ids acts as that session; one carrying any
|
|
272
|
+
* other id fails.
|
|
263
273
|
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
* suppressed. The store has no notion of which connection a clientId reached
|
|
268
|
-
* it over, so the connection-scoped set has to live here; teaching it a client
|
|
269
|
-
* identity is the more robust and much larger alternative.
|
|
274
|
+
* Entries stay after {@link dispose} has ended their sessions, so a request
|
|
275
|
+
* still running from before the connection closed reaches the ended handle
|
|
276
|
+
* and fails with the session's own error.
|
|
270
277
|
*/
|
|
271
|
-
protected readonly
|
|
278
|
+
protected readonly clientSessions: Map<string, ClientSession<AstNode, AstDiagnostic, TTransfer, object>>;
|
|
272
279
|
/** Typed client proxy — sends `data-server/on*` notifications back over the same wire. */
|
|
273
280
|
protected readonly clientProxy: DataClientProtocol<TTransfer, TDiagnostic, TProject>;
|
|
274
281
|
protected readonly disposables: DisposableCollection;
|
|
@@ -323,12 +330,12 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
323
330
|
*/
|
|
324
331
|
protected readonly lastEmittedFingerprint: Map<string, string>;
|
|
325
332
|
/**
|
|
326
|
-
* URIs
|
|
327
|
-
* document from its disk content (discarding unsaved
|
|
328
|
-
* but {@link dispatchPhaseEvent} gates on the
|
|
329
|
-
* last close typically also removed the last
|
|
330
|
-
* only ever fetch via `getModelDocument` would
|
|
331
|
-
* discarded state forever. Marked on the
|
|
333
|
+
* URIs the text store just released after their last close. The store
|
|
334
|
+
* rebuilds such a document from its disk content (discarding unsaved
|
|
335
|
+
* in-session edits), but {@link dispatchPhaseEvent} gates on the
|
|
336
|
+
* subscription map — and the last close typically also removed the last
|
|
337
|
+
* watcher, so consumers that only ever fetch via `getModelDocument` would
|
|
338
|
+
* keep showing the discarded state forever. Marked on the release (see
|
|
332
339
|
* {@link subscribeToTextDocumentCloses}) and consumed by
|
|
333
340
|
* {@link dispatchPhaseEvent}, which broadcasts the following rebuild's
|
|
334
341
|
* phase event even without a subscription — de-duplicated against
|
|
@@ -360,39 +367,71 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
360
367
|
* handlers and every listener — and clear the subscription map and the
|
|
361
368
|
* per-URI emission-fingerprint cache, so a long-lived shared services
|
|
362
369
|
* bundle does not retain per-connection memory after the connection
|
|
363
|
-
* closes. Also
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
* Idempotent: subsequent calls are no-ops.
|
|
368
|
-
*
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
* closes. Also ends every session this connection registered, which closes
|
|
371
|
+
* every document it has open: the SHARED store's state rather than this
|
|
372
|
+
* server's, which outlives the connection unless released here.
|
|
373
|
+
*
|
|
374
|
+
* Idempotent: subsequent calls are no-ops. Runs by itself when the
|
|
375
|
+
* connection closes, so adopters who don't hold a reference still get
|
|
376
|
+
* per-connection cleanup; adopters that DO hold a reference may call
|
|
377
|
+
* `dispose()` directly for early teardown. The sessions end with `cause`:
|
|
378
|
+
* `'closed'` reverts every document whose last open they close at once,
|
|
379
|
+
* and `'lost'`, the connection's own close, lets each wait out the revert
|
|
380
|
+
* grace.
|
|
381
|
+
*/
|
|
382
|
+
dispose(cause?: SessionEndCause): void;
|
|
383
|
+
createSession(args: CreateSessionArgs): Promise<void>;
|
|
384
|
+
/**
|
|
385
|
+
* End a session this connection registered. The ended handle stays in
|
|
386
|
+
* {@link clientSessions}, as it does after {@link dispose}, so a request for
|
|
387
|
+
* the id still arriving fails with the ended session's own error.
|
|
388
|
+
*/
|
|
389
|
+
closeSession(args: CloseSessionArgs): Promise<void>;
|
|
390
|
+
/** End `session`, registered here under `clientId`, with `cause`, and drop its watches on this connection. */
|
|
391
|
+
protected endSession(clientId: string, session: ClientSession<AstNode, AstDiagnostic, TTransfer>, cause?: SessionEndCause): void;
|
|
392
|
+
/**
|
|
393
|
+
* The resumable sessions of this services tree, by client id, across all of
|
|
394
|
+
* its data connections: a client resumes on another connection than the one
|
|
395
|
+
* that registered it. An entry leaves when its session ends, by any path, so
|
|
396
|
+
* it keeps no ended connection alive.
|
|
397
|
+
*
|
|
398
|
+
* A takeover by resume token ends the old session even when its connection
|
|
399
|
+
* is still alive, so two clients that shared an id and its token would end
|
|
400
|
+
* each other's sessions. And the token is a guard against colliding with a
|
|
401
|
+
* session the server has not yet seen end, not a secret: the wire carries no
|
|
402
|
+
* authentication, and a peer that learns the token can end the session.
|
|
403
|
+
*/
|
|
404
|
+
protected resumableSessions(): Map<string, ResumableSession>;
|
|
405
|
+
createModelDocument(args: CreateModelDocumentArgs): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
406
|
+
updateModelDocuments(args: TransferUpdateDocumentsArgs<TTransfer>): Promise<TransferDocument<TTransfer, TDiagnostic>[]>;
|
|
407
|
+
/**
|
|
408
|
+
* The session write a wire write request carries. Only the fields a session
|
|
409
|
+
* takes: a field an adopter adds to a request reaches the session only
|
|
410
|
+
* through an override of this.
|
|
411
|
+
*/
|
|
412
|
+
protected toSessionWrite(request: Omit<TransferUpdateDocumentArgs<TTransfer>, 'clientId'>): ClientSessionWriteArgs<TTransfer>;
|
|
413
|
+
/**
|
|
414
|
+
* The session this connection registered under `clientId`, which every
|
|
415
|
+
* document request acts as. An id that is not one fails with the
|
|
416
|
+
* closed-session code: opening or writing under it would leave an open that
|
|
417
|
+
* no session end ever closes.
|
|
418
|
+
*/
|
|
419
|
+
protected requireSession(clientId: string): ClientSession<AstNode, AstDiagnostic, TTransfer>;
|
|
420
|
+
openModelDocument(args: Pick<OpenModelArgs, 'uri' | 'clientId' | 'options'>): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
421
|
+
/**
|
|
422
|
+
* The snapshot a session's open or create answers with. When the read
|
|
423
|
+
* fails, `rollback` undoes the open this call made before the failure is
|
|
424
|
+
* rethrown: the caller sees no open, so nothing on its side would ever close
|
|
425
|
+
* it.
|
|
426
|
+
*
|
|
427
|
+
* Versioned with the store's shared version rather than the snapshot's own:
|
|
428
|
+
* the built document's `textDocument.version` lags the store's whenever the
|
|
429
|
+
* store assigned the version, and the store's is what a write's `basedOn` is
|
|
430
|
+
* compared against, so reporting the snapshot's would make the caller's
|
|
431
|
+
* first based-on write conflict with itself.
|
|
432
|
+
*/
|
|
433
|
+
protected openedSnapshot(uri: string, rollback?: () => Promise<void>): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
374
434
|
closeModelDocument(args: CloseModelArgs): Promise<void>;
|
|
375
|
-
/**
|
|
376
|
-
* Drop the recorded hold for `(uri, clientId)` so {@link dispose} does not
|
|
377
|
-
* close it a second time. Idempotent.
|
|
378
|
-
*/
|
|
379
|
-
protected forgetOpenDocument(uri: string, clientId: string): void;
|
|
380
|
-
/**
|
|
381
|
-
* Close every document still open over this connection, for the clients that
|
|
382
|
-
* opened it here.
|
|
383
|
-
*
|
|
384
|
-
* The document store releases a per-URI hold only from an explicit close, so
|
|
385
|
-
* without this a client that dies mid-session keeps its documents open for the
|
|
386
|
-
* lifetime of the process: `isOpenInAnyClient` stays true, the document stays
|
|
387
|
-
* resident, and the last-close revert never runs. A long-lived multi-client
|
|
388
|
-
* head is the configuration where a dead client is normal rather than
|
|
389
|
-
* exceptional, so the leak accumulates there.
|
|
390
|
-
*
|
|
391
|
-
* Runs from {@link dispose}, which is synchronous, so each close is fired and
|
|
392
|
-
* its failure swallowed — a teardown must not reject, and a URI whose close
|
|
393
|
-
* fails is no worse off than it was before this drain existed.
|
|
394
|
-
*/
|
|
395
|
-
protected closeOpenDocuments(): void;
|
|
396
435
|
getModelDocument(args: GetModelDocumentArgs): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
397
436
|
updateModelDocument(args: TransferUpdateDocumentArgs<TTransfer>): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
398
437
|
saveModelDocument(args: TransferSaveDocumentArgs<TTransfer>): Promise<TransferDocument<TTransfer, TDiagnostic>>;
|
|
@@ -613,10 +652,12 @@ export declare class DataServer<TTransfer extends TransferElement, TDiagnostic e
|
|
|
613
652
|
*/
|
|
614
653
|
protected subscribeToTextDocumentSaves(): void;
|
|
615
654
|
/**
|
|
616
|
-
* Mark the
|
|
617
|
-
* {@link pendingRevertBroadcasts}).
|
|
618
|
-
*
|
|
619
|
-
*
|
|
655
|
+
* Mark each document the store releases after its last close (see
|
|
656
|
+
* {@link pendingRevertBroadcasts}). A release, not the close itself: a
|
|
657
|
+
* document whose last client lost its connection is released only once
|
|
658
|
+
* the revert grace runs out, or when another client opens it meanwhile, and
|
|
659
|
+
* not at all when a client lost from it opens it again within its own
|
|
660
|
+
* grace.
|
|
620
661
|
*/
|
|
621
662
|
protected subscribeToTextDocumentCloses(): void;
|
|
622
663
|
/**
|
package/lib/data-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAGJ,oBAAoB,EAKpB,eAAe,
|
|
1
|
+
{"version":3,"file":"data-server.d.ts","sourceRoot":"","sources":["../src/data-server.ts"],"names":[],"mappings":"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"}
|