@hydranium/glsp-server 1.0.0-next.67 → 1.0.0-next.70
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 +2 -2
- package/lib/storage/hydranium-glsp-storage.d.ts +57 -37
- package/lib/storage/hydranium-glsp-storage.d.ts.map +1 -1
- package/lib/storage/hydranium-glsp-storage.js +73 -53
- package/lib/storage/hydranium-glsp-storage.js.map +1 -1
- package/lib/storage/index.d.ts +1 -1
- package/lib/storage/index.js +1 -1
- package/lib/storage/save-delivery-policy.d.ts +46 -0
- package/lib/storage/save-delivery-policy.d.ts.map +1 -0
- package/lib/storage/{save-conflict-policy.js → save-delivery-policy.js} +7 -8
- package/lib/storage/save-delivery-policy.js.map +1 -0
- package/package.json +7 -7
- package/src/storage/hydranium-glsp-storage.ts +73 -52
- package/src/storage/index.ts +1 -1
- package/src/storage/save-delivery-policy.ts +44 -0
- package/lib/storage/save-conflict-policy.d.ts +0 -56
- package/lib/storage/save-conflict-policy.d.ts.map +0 -1
- package/lib/storage/save-conflict-policy.js.map +0 -1
- package/src/storage/save-conflict-policy.ts +0 -52
package/README.md
CHANGED
|
@@ -20,8 +20,8 @@ the diagram model is adopter-side, bound per diagram module.
|
|
|
20
20
|
over the GModel.
|
|
21
21
|
- **Load / save against the live AST.** `HydraniumGlspStorage` loads a document
|
|
22
22
|
on diagram open and writes user operations back through the shared model
|
|
23
|
-
coordination layer, with `
|
|
24
|
-
|
|
23
|
+
coordination layer, with `SaveDeliveryPolicy` deciding whether the save action
|
|
24
|
+
awaits the write. `HydraniumGlspRecordingCommand` is the operation-handler
|
|
25
25
|
seam — the framework provides no base handler class.
|
|
26
26
|
- **A submission and dispatch lifecycle that waits for the model.**
|
|
27
27
|
`HydraniumGlspSubmissionHandler` gates submit on the readiness event,
|
|
@@ -12,7 +12,7 @@ import { type AstNode } from '@hydranium/langium';
|
|
|
12
12
|
import { AstDocument, type AstDocumentSavedEvent, type AstDocumentUpdatedEvent, type ServerSharedServices } from '@hydranium/core';
|
|
13
13
|
import { type AbstractHydraniumGlspState } from '../state/abstract-hydranium-glsp-state.js';
|
|
14
14
|
import { type HydraniumGlspSubmissionHandler } from '../submission/hydranium-glsp-submission-handler.js';
|
|
15
|
-
import {
|
|
15
|
+
import { SaveDeliveryPolicy } from './save-delivery-policy.js';
|
|
16
16
|
/**
|
|
17
17
|
* A save action arrived with nowhere to write to. A save action carries no
|
|
18
18
|
* request id, so it falls through to the error handler and `message` becomes
|
|
@@ -72,17 +72,14 @@ export declare const DIAGRAM_READONLY_PARSE_ERROR: import("@hydranium/protocol")
|
|
|
72
72
|
*
|
|
73
73
|
* Adopters with richer needs override the seams ({@link isStructurallyBroken},
|
|
74
74
|
* {@link onParseErrorChanged}, {@link onSourceModelSettled}) rather than the
|
|
75
|
-
* whole flow, and select a {@link
|
|
76
|
-
* tune how {@link saveSourceModel}
|
|
75
|
+
* whole flow, and select a {@link SaveDeliveryPolicy} via the bound option to
|
|
76
|
+
* tune how {@link saveSourceModel} delivers its result.
|
|
77
77
|
*
|
|
78
|
-
* **Default `saveSourceModel` flow.**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* {@link SaveConflictPolicy} (default {@link DEFAULT_SAVE_CONFLICT_POLICY},
|
|
84
|
-
* `overwrite`) decides the based-on-version guard, await-vs-fire-and-forget, and
|
|
85
|
-
* failure handling.
|
|
78
|
+
* **Default `saveSourceModel` flow.** Flushes the stored text of the primary and
|
|
79
|
+
* every tracked secondary via `AstDocumentManager.save`, with no serializer in
|
|
80
|
+
* the path — the update path already put the settled text in the store. The
|
|
81
|
+
* bound {@link SaveDeliveryPolicy} (default {@link DEFAULT_SAVE_DELIVERY_POLICY},
|
|
82
|
+
* `await`) decides await-vs-fire-and-forget and failure handling.
|
|
86
83
|
*
|
|
87
84
|
* **tempId filter.** GLSP's `DefaultGlobalActionProvider` spins up a
|
|
88
85
|
* throwaway per-diagram-type container with upstream's {@link TEMPORARY_CLIENT_ID}
|
|
@@ -114,14 +111,13 @@ export declare class HydraniumGlspStorage<TRoot extends AstNode, TSourceModel =
|
|
|
114
111
|
*/
|
|
115
112
|
protected readonly modelValidator?: ModelValidator;
|
|
116
113
|
/**
|
|
117
|
-
* Selected {@link
|
|
118
|
-
* {@link
|
|
119
|
-
* left unbound it resolves to {@link
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* `@optional()` member.
|
|
114
|
+
* Selected {@link SaveDeliveryPolicy} for {@link saveSourceModel}. Bind the
|
|
115
|
+
* {@link SaveDeliveryPolicy} token in a `DiagramModule` to choose a policy;
|
|
116
|
+
* left unbound it resolves to {@link DEFAULT_SAVE_DELIVERY_POLICY}. Read via
|
|
117
|
+
* {@link saveDeliveryPolicy} so the fallback is applied even when inversify
|
|
118
|
+
* injects `undefined` for an unbound `@optional()` member.
|
|
123
119
|
*/
|
|
124
|
-
protected readonly
|
|
120
|
+
protected readonly boundSaveDeliveryPolicy?: SaveDeliveryPolicy;
|
|
125
121
|
/** Disposables created during {@link doLoadSourceModel}; drained on session disposal. */
|
|
126
122
|
protected toDispose: DisposableCollection;
|
|
127
123
|
/**
|
|
@@ -335,31 +331,55 @@ export declare class HydraniumGlspStorage<TRoot extends AstNode, TSourceModel =
|
|
|
335
331
|
* captured (e.g. an adopter-specific status or palette refresh). Default: none.
|
|
336
332
|
*/
|
|
337
333
|
protected onSourceModelSettled(_document: AstDocument<AstNode, never>): Action[];
|
|
338
|
-
/** The effective {@link
|
|
339
|
-
protected get
|
|
334
|
+
/** The effective {@link SaveDeliveryPolicy}: the bound option, or {@link DEFAULT_SAVE_DELIVERY_POLICY} when unbound. */
|
|
335
|
+
protected get saveDeliveryPolicy(): SaveDeliveryPolicy;
|
|
340
336
|
/**
|
|
341
|
-
* Default save flow:
|
|
342
|
-
*
|
|
343
|
-
* language-specific `Serializer` bound at `services.serializer.Serializer`),
|
|
344
|
-
* the multi-client text-document update, the rebuild, and the eventual
|
|
345
|
-
* `WritableFileSystemProvider.writeFile`.
|
|
337
|
+
* Default save flow: persist the store's current text for every document this
|
|
338
|
+
* diagram owns.
|
|
346
339
|
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
*
|
|
340
|
+
* **A save persists, it does not author.** Every diagram gesture already
|
|
341
|
+
* reached the store through `ModelService.update`, so the store holds the
|
|
342
|
+
* settled text and disk is the only thing behind. Re-serializing from the AST
|
|
343
|
+
* here cannot improve on that text and can only damage it: a serializer
|
|
344
|
+
* normalises formatting and carries no comments, so a save would reflow and
|
|
345
|
+
* strip a document nothing changed — which is what a pure bounds drag does to
|
|
346
|
+
* the semantic file when only its layout moved.
|
|
347
|
+
*
|
|
348
|
+
* **The write set is the primary plus every tracked secondary**
|
|
349
|
+
* (`AbstractHydraniumGlspState.trackSecondaryDocument`), so a document the
|
|
350
|
+
* diagram wrote is persisted whether or not it is the one the client named.
|
|
351
|
+
* The primary is flushed first, then secondaries in tracking order. A
|
|
352
|
+
* document no client holds open is skipped — there is no stored text to
|
|
353
|
+
* persist.
|
|
354
|
+
*
|
|
355
|
+
* **A save therefore names documents the gesture did not aim at**, which is
|
|
356
|
+
* why an unchanged one is not rewritten even though the user asked for a
|
|
357
|
+
* save: the mtime would move on a file they never touched.
|
|
358
|
+
* `AstDocumentManager.save` decides that per document and announces the save
|
|
359
|
+
* either way.
|
|
360
|
+
*
|
|
361
|
+
* The configured {@link SaveDeliveryPolicy} (see {@link saveDeliveryPolicy})
|
|
362
|
+
* decides await-vs-fire-and-forget and failure handling. It carries no
|
|
363
|
+
* based-on guard: the guard exists to stop a stale writer overwriting a newer
|
|
364
|
+
* document, and a flush persists the store — which already holds every other
|
|
365
|
+
* client's change, including the one that advanced the version.
|
|
356
366
|
*
|
|
357
367
|
* Returns `MaybePromise<void>` to match upstream `SourceModelStorage`:
|
|
358
|
-
* resolves with the
|
|
359
|
-
*
|
|
360
|
-
* `WritableFileSystemProvider` directly) still override the whole
|
|
368
|
+
* resolves with the flush under `await`, returns synchronously under
|
|
369
|
+
* `fire-and-forget`. Adopters that bypass `AstDocumentManager` (writing
|
|
370
|
+
* through `WritableFileSystemProvider` directly) still override the whole
|
|
371
|
+
* method.
|
|
361
372
|
*/
|
|
362
373
|
saveSourceModel(action: SaveModelAction): MaybePromise<void>;
|
|
374
|
+
/**
|
|
375
|
+
* Save the stored text of `primaryUri` and every tracked secondary.
|
|
376
|
+
*
|
|
377
|
+
* Deduplicated, because a state that tracks its own primary as a secondary
|
|
378
|
+
* would otherwise save it twice and fire two save notifications for one
|
|
379
|
+
* save. A document no client holds open is skipped: there is no stored text
|
|
380
|
+
* to persist, and `AstDocumentManager.save` throws on one.
|
|
381
|
+
*/
|
|
382
|
+
protected flushWriteSet(primaryUri: string): Promise<void>;
|
|
363
383
|
/**
|
|
364
384
|
* Normalise GLSP's `sourceUri` — which may be a filesystem PATH or a URI
|
|
365
385
|
* string — to the URI string the workspace keys documents by.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-glsp-storage.d.ts","sourceRoot":"","sources":["../../src/storage/hydranium-glsp-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EACJ,KAAK,MAAM,EACX,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,oBAAoB,EAEpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAGf,MAAM,IAAI,UAAU,EACpB,KAAK,YAAY,EAGjB,cAAc,EACd,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAiB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEnI,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AAEzG,OAAO,EAAgC,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE7F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,iGAG/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8HAG9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,4BAA4B,mIAGxC,CAAC;AA8BF
|
|
1
|
+
{"version":3,"file":"hydranium-glsp-storage.d.ts","sourceRoot":"","sources":["../../src/storage/hydranium-glsp-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ import { URI } from '@hydranium/langium';
|
|
|
23
23
|
import { AstDocument } from '@hydranium/core';
|
|
24
24
|
import { DiagnosticSeverity } from 'vscode-languageserver-types';
|
|
25
25
|
import { HydraniumTypes } from '../state/hydranium-shared-core-services.js';
|
|
26
|
-
import {
|
|
26
|
+
import { DEFAULT_SAVE_DELIVERY_POLICY, SaveDeliveryPolicy } from './save-delivery-policy.js';
|
|
27
27
|
/**
|
|
28
28
|
* A save action arrived with nowhere to write to. A save action carries no
|
|
29
29
|
* request id, so it falls through to the error handler and `message` becomes
|
|
@@ -108,17 +108,14 @@ function isStructuralDiagnostic(diagnostic) {
|
|
|
108
108
|
*
|
|
109
109
|
* Adopters with richer needs override the seams ({@link isStructurallyBroken},
|
|
110
110
|
* {@link onParseErrorChanged}, {@link onSourceModelSettled}) rather than the
|
|
111
|
-
* whole flow, and select a {@link
|
|
112
|
-
* tune how {@link saveSourceModel}
|
|
111
|
+
* whole flow, and select a {@link SaveDeliveryPolicy} via the bound option to
|
|
112
|
+
* tune how {@link saveSourceModel} delivers its result.
|
|
113
113
|
*
|
|
114
|
-
* **Default `saveSourceModel` flow.**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* {@link SaveConflictPolicy} (default {@link DEFAULT_SAVE_CONFLICT_POLICY},
|
|
120
|
-
* `overwrite`) decides the based-on-version guard, await-vs-fire-and-forget, and
|
|
121
|
-
* failure handling.
|
|
114
|
+
* **Default `saveSourceModel` flow.** Flushes the stored text of the primary and
|
|
115
|
+
* every tracked secondary via `AstDocumentManager.save`, with no serializer in
|
|
116
|
+
* the path — the update path already put the settled text in the store. The
|
|
117
|
+
* bound {@link SaveDeliveryPolicy} (default {@link DEFAULT_SAVE_DELIVERY_POLICY},
|
|
118
|
+
* `await`) decides await-vs-fire-and-forget and failure handling.
|
|
122
119
|
*
|
|
123
120
|
* **tempId filter.** GLSP's `DefaultGlobalActionProvider` spins up a
|
|
124
121
|
* throwaway per-diagram-type container with upstream's {@link TEMPORARY_CLIENT_ID}
|
|
@@ -150,14 +147,13 @@ let HydraniumGlspStorage = class HydraniumGlspStorage {
|
|
|
150
147
|
*/
|
|
151
148
|
modelValidator;
|
|
152
149
|
/**
|
|
153
|
-
* Selected {@link
|
|
154
|
-
* {@link
|
|
155
|
-
* left unbound it resolves to {@link
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* `@optional()` member.
|
|
150
|
+
* Selected {@link SaveDeliveryPolicy} for {@link saveSourceModel}. Bind the
|
|
151
|
+
* {@link SaveDeliveryPolicy} token in a `DiagramModule` to choose a policy;
|
|
152
|
+
* left unbound it resolves to {@link DEFAULT_SAVE_DELIVERY_POLICY}. Read via
|
|
153
|
+
* {@link saveDeliveryPolicy} so the fallback is applied even when inversify
|
|
154
|
+
* injects `undefined` for an unbound `@optional()` member.
|
|
159
155
|
*/
|
|
160
|
-
|
|
156
|
+
boundSaveDeliveryPolicy;
|
|
161
157
|
/** Disposables created during {@link doLoadSourceModel}; drained on session disposal. */
|
|
162
158
|
toDispose = new DisposableCollection();
|
|
163
159
|
/**
|
|
@@ -528,31 +524,46 @@ let HydraniumGlspStorage = class HydraniumGlspStorage {
|
|
|
528
524
|
onSourceModelSettled(_document) {
|
|
529
525
|
return [];
|
|
530
526
|
}
|
|
531
|
-
/** The effective {@link
|
|
532
|
-
get
|
|
533
|
-
return this.
|
|
527
|
+
/** The effective {@link SaveDeliveryPolicy}: the bound option, or {@link DEFAULT_SAVE_DELIVERY_POLICY} when unbound. */
|
|
528
|
+
get saveDeliveryPolicy() {
|
|
529
|
+
return this.boundSaveDeliveryPolicy ?? DEFAULT_SAVE_DELIVERY_POLICY;
|
|
534
530
|
}
|
|
535
531
|
/**
|
|
536
|
-
* Default save flow:
|
|
537
|
-
*
|
|
538
|
-
* language-specific `Serializer` bound at `services.serializer.Serializer`),
|
|
539
|
-
* the multi-client text-document update, the rebuild, and the eventual
|
|
540
|
-
* `WritableFileSystemProvider.writeFile`.
|
|
532
|
+
* Default save flow: persist the store's current text for every document this
|
|
533
|
+
* diagram owns.
|
|
541
534
|
*
|
|
542
|
-
*
|
|
543
|
-
*
|
|
544
|
-
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
548
|
-
*
|
|
549
|
-
*
|
|
550
|
-
*
|
|
535
|
+
* **A save persists, it does not author.** Every diagram gesture already
|
|
536
|
+
* reached the store through `ModelService.update`, so the store holds the
|
|
537
|
+
* settled text and disk is the only thing behind. Re-serializing from the AST
|
|
538
|
+
* here cannot improve on that text and can only damage it: a serializer
|
|
539
|
+
* normalises formatting and carries no comments, so a save would reflow and
|
|
540
|
+
* strip a document nothing changed — which is what a pure bounds drag does to
|
|
541
|
+
* the semantic file when only its layout moved.
|
|
542
|
+
*
|
|
543
|
+
* **The write set is the primary plus every tracked secondary**
|
|
544
|
+
* (`AbstractHydraniumGlspState.trackSecondaryDocument`), so a document the
|
|
545
|
+
* diagram wrote is persisted whether or not it is the one the client named.
|
|
546
|
+
* The primary is flushed first, then secondaries in tracking order. A
|
|
547
|
+
* document no client holds open is skipped — there is no stored text to
|
|
548
|
+
* persist.
|
|
549
|
+
*
|
|
550
|
+
* **A save therefore names documents the gesture did not aim at**, which is
|
|
551
|
+
* why an unchanged one is not rewritten even though the user asked for a
|
|
552
|
+
* save: the mtime would move on a file they never touched.
|
|
553
|
+
* `AstDocumentManager.save` decides that per document and announces the save
|
|
554
|
+
* either way.
|
|
555
|
+
*
|
|
556
|
+
* The configured {@link SaveDeliveryPolicy} (see {@link saveDeliveryPolicy})
|
|
557
|
+
* decides await-vs-fire-and-forget and failure handling. It carries no
|
|
558
|
+
* based-on guard: the guard exists to stop a stale writer overwriting a newer
|
|
559
|
+
* document, and a flush persists the store — which already holds every other
|
|
560
|
+
* client's change, including the one that advanced the version.
|
|
551
561
|
*
|
|
552
562
|
* Returns `MaybePromise<void>` to match upstream `SourceModelStorage`:
|
|
553
|
-
* resolves with the
|
|
554
|
-
*
|
|
555
|
-
* `WritableFileSystemProvider` directly) still override the whole
|
|
563
|
+
* resolves with the flush under `await`, returns synchronously under
|
|
564
|
+
* `fire-and-forget`. Adopters that bypass `AstDocumentManager` (writing
|
|
565
|
+
* through `WritableFileSystemProvider` directly) still override the whole
|
|
566
|
+
* method.
|
|
556
567
|
*/
|
|
557
568
|
saveSourceModel(action) {
|
|
558
569
|
// Normalised for the same reason the load path is: `SaveModelAction.fileUri`
|
|
@@ -562,24 +573,33 @@ let HydraniumGlspStorage = class HydraniumGlspStorage {
|
|
|
562
573
|
// the call site rather than inside `getFileUri` so that method's contract —
|
|
563
574
|
// return what the action said — is unchanged for adopters overriding it.
|
|
564
575
|
const uri = this.toSourceModelUri(this.getFileUri(action));
|
|
565
|
-
const policy = this.
|
|
566
|
-
const persisted = this.
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
baseVersion: policy.kind === 'overwrite' ? undefined : this.state.version
|
|
571
|
-
}).then(() => undefined);
|
|
572
|
-
if (policy.kind === 'drop-and-log') {
|
|
573
|
-
// Fire-and-forget: the diagram save lost the race to a concurrent edit
|
|
574
|
-
// that already persisted the truth, so it must neither block the action
|
|
575
|
-
// nor surface. Log rather than leave an unhandled rejection.
|
|
576
|
+
const policy = this.saveDeliveryPolicy;
|
|
577
|
+
const persisted = this.flushWriteSet(uri);
|
|
578
|
+
if (policy.kind === 'fire-and-forget') {
|
|
579
|
+
// Log rather than leave an unhandled rejection: the promise is not
|
|
580
|
+
// returned, so nothing else will observe a failure.
|
|
576
581
|
persisted.catch(error => this.logger.error(`Save failed for ${uri}: ${error instanceof Error ? error.message : String(error)}`));
|
|
577
582
|
return undefined;
|
|
578
583
|
}
|
|
579
|
-
//
|
|
580
|
-
// propagates to GLSP's save-action handler.
|
|
584
|
+
// Awaited: any failure propagates to GLSP's save-action handler.
|
|
581
585
|
return persisted;
|
|
582
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* Save the stored text of `primaryUri` and every tracked secondary.
|
|
589
|
+
*
|
|
590
|
+
* Deduplicated, because a state that tracks its own primary as a secondary
|
|
591
|
+
* would otherwise save it twice and fire two save notifications for one
|
|
592
|
+
* save. A document no client holds open is skipped: there is no stored text
|
|
593
|
+
* to persist, and `AstDocumentManager.save` throws on one.
|
|
594
|
+
*/
|
|
595
|
+
async flushWriteSet(primaryUri) {
|
|
596
|
+
const documents = this.sharedServices.workspace.AstDocumentManager;
|
|
597
|
+
for (const target of new Set([primaryUri, ...this.state.secondaryUris])) {
|
|
598
|
+
if (documents.isOpen(target)) {
|
|
599
|
+
await documents.save(target, this.state.clientId);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
583
603
|
/**
|
|
584
604
|
* Normalise GLSP's `sourceUri` — which may be a filesystem PATH or a URI
|
|
585
605
|
* string — to the URI string the workspace keys documents by.
|
|
@@ -726,10 +746,10 @@ __decorate([
|
|
|
726
746
|
__metadata("design:type", Object)
|
|
727
747
|
], HydraniumGlspStorage.prototype, "modelValidator", void 0);
|
|
728
748
|
__decorate([
|
|
729
|
-
inject(
|
|
749
|
+
inject(SaveDeliveryPolicy),
|
|
730
750
|
optional(),
|
|
731
751
|
__metadata("design:type", Object)
|
|
732
|
-
], HydraniumGlspStorage.prototype, "
|
|
752
|
+
], HydraniumGlspStorage.prototype, "boundSaveDeliveryPolicy", void 0);
|
|
733
753
|
__decorate([
|
|
734
754
|
postConstruct(),
|
|
735
755
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-glsp-storage.js","sourceRoot":"","sources":["../../src/storage/hydranium-glsp-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hydranium-glsp-storage.js","sourceRoot":"","sources":["../../src/storage/hydranium-glsp-storage.ts"],"names":[],"mappings":"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"}
|
package/lib/storage/index.d.ts
CHANGED
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
export * from './hydranium-glsp-storage.js';
|
|
10
|
-
export * from './save-
|
|
10
|
+
export * from './save-delivery-policy.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/storage/index.js
CHANGED
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
export * from './hydranium-glsp-storage.js';
|
|
10
|
-
export * from './save-
|
|
10
|
+
export * from './save-delivery-policy.js';
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* How `HydraniumGlspStorage.saveSourceModel` delivers its result: whether the
|
|
11
|
+
* GLSP save action awaits the write, and what happens on failure.
|
|
12
|
+
*
|
|
13
|
+
* The two are not independent — fire-and-forget plus rethrow would leave an
|
|
14
|
+
* unhandled rejection — so each arm bundles them into one coherent, nameable
|
|
15
|
+
* policy an adopter selects whole. It is a *selection of configuration*,
|
|
16
|
+
* delivered as a bound option (see the {@link SaveDeliveryPolicy} symbol) rather
|
|
17
|
+
* than a behaviour hook.
|
|
18
|
+
*
|
|
19
|
+
* **Neither arm guards on a based-on version.** A save flushes the store's
|
|
20
|
+
* settled text rather than authoring from the diagram's captured model, and the
|
|
21
|
+
* store already holds every other client's change — so a guard here refuses a
|
|
22
|
+
* write whose content is already correct. The gate that does exist sits on the
|
|
23
|
+
* update path, per operation, where the diagram authors.
|
|
24
|
+
*/
|
|
25
|
+
export type SaveDeliveryPolicy =
|
|
26
|
+
/** Await the write and propagate any failure to the GLSP save action. The default. */
|
|
27
|
+
{
|
|
28
|
+
kind: 'await';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fire-and-forget, logging and swallowing every failure. Correct when a
|
|
32
|
+
* failed diagram save must neither block the action nor surface as an error.
|
|
33
|
+
*/
|
|
34
|
+
| {
|
|
35
|
+
kind: 'fire-and-forget';
|
|
36
|
+
};
|
|
37
|
+
/** The policy applied when no {@link SaveDeliveryPolicy} option is bound. */
|
|
38
|
+
export declare const DEFAULT_SAVE_DELIVERY_POLICY: SaveDeliveryPolicy;
|
|
39
|
+
/**
|
|
40
|
+
* DI token for the {@link SaveDeliveryPolicy} option. Bind a constant value in a
|
|
41
|
+
* `DiagramModule` to select a non-default policy; left unbound,
|
|
42
|
+
* `HydraniumGlspStorage` falls back to {@link DEFAULT_SAVE_DELIVERY_POLICY}.
|
|
43
|
+
* Shares its name with the type, the way a `class` is both a value and a type.
|
|
44
|
+
*/
|
|
45
|
+
export declare const SaveDeliveryPolicy: unique symbol;
|
|
46
|
+
//# sourceMappingURL=save-delivery-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-delivery-policy.d.ts","sourceRoot":"","sources":["../../src/storage/save-delivery-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB;AAC3B,sFAAsF;AACpF;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB;;;GAGG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEjC,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,EAAE,kBAAsC,CAAC;AAElF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC"}
|
|
@@ -6,14 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
/** The policy applied when no {@link
|
|
10
|
-
export const
|
|
9
|
+
/** The policy applied when no {@link SaveDeliveryPolicy} option is bound. */
|
|
10
|
+
export const DEFAULT_SAVE_DELIVERY_POLICY = { kind: 'await' };
|
|
11
11
|
/**
|
|
12
|
-
* DI token for the {@link
|
|
12
|
+
* DI token for the {@link SaveDeliveryPolicy} option. Bind a constant value in a
|
|
13
13
|
* `DiagramModule` to select a non-default policy; left unbound,
|
|
14
|
-
* `HydraniumGlspStorage` falls back to
|
|
15
|
-
*
|
|
16
|
-
* `class` is both a value and a type.
|
|
14
|
+
* `HydraniumGlspStorage` falls back to {@link DEFAULT_SAVE_DELIVERY_POLICY}.
|
|
15
|
+
* Shares its name with the type, the way a `class` is both a value and a type.
|
|
17
16
|
*/
|
|
18
|
-
export const
|
|
19
|
-
//# sourceMappingURL=save-
|
|
17
|
+
export const SaveDeliveryPolicy = Symbol('SaveDeliveryPolicy');
|
|
18
|
+
//# sourceMappingURL=save-delivery-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-delivery-policy.js","sourceRoot":"","sources":["../../src/storage/save-delivery-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AA2BlF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,4BAA4B,GAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAElF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/glsp-server",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.70",
|
|
4
4
|
"description": "GLSP protocol head for the hydranium framework. Peer of @hydranium/core/lsp and @hydranium/data-server; built on @hydranium/core.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hydranium",
|
|
@@ -87,9 +87,9 @@
|
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@eclipse-glsp/protocol": "2.7.0",
|
|
89
89
|
"@eclipse-glsp/server": "2.7.0",
|
|
90
|
-
"@hydranium/core": "1.0.0-next.
|
|
91
|
-
"@hydranium/langium": "1.0.0-next.
|
|
92
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
90
|
+
"@hydranium/core": "1.0.0-next.70",
|
|
91
|
+
"@hydranium/langium": "1.0.0-next.70",
|
|
92
|
+
"@hydranium/protocol": "1.0.0-next.70",
|
|
93
93
|
"inversify": "6.2.2",
|
|
94
94
|
"reflect-metadata": "0.2.2",
|
|
95
95
|
"rimraf": "^5.0.0",
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"@eclipse-glsp/protocol": "^2.6.0",
|
|
102
102
|
"@eclipse-glsp/server": "^2.6.0",
|
|
103
|
-
"@hydranium/core": "1.0.0-next.
|
|
104
|
-
"@hydranium/langium": "1.0.0-next.
|
|
105
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
103
|
+
"@hydranium/core": "1.0.0-next.70",
|
|
104
|
+
"@hydranium/langium": "1.0.0-next.70",
|
|
105
|
+
"@hydranium/protocol": "1.0.0-next.70",
|
|
106
106
|
"inversify": "^6.0.0",
|
|
107
107
|
"reflect-metadata": "^0.2.2",
|
|
108
108
|
"vscode-jsonrpc": "9.0.1",
|
|
@@ -40,7 +40,7 @@ import { DiagnosticSeverity } from 'vscode-languageserver-types';
|
|
|
40
40
|
import { type AbstractHydraniumGlspState } from '../state/abstract-hydranium-glsp-state.js';
|
|
41
41
|
import { type HydraniumGlspSubmissionHandler } from '../submission/hydranium-glsp-submission-handler.js';
|
|
42
42
|
import { HydraniumTypes } from '../state/hydranium-shared-core-services.js';
|
|
43
|
-
import {
|
|
43
|
+
import { DEFAULT_SAVE_DELIVERY_POLICY, SaveDeliveryPolicy } from './save-delivery-policy.js';
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* A save action arrived with nowhere to write to. A save action carries no
|
|
@@ -141,17 +141,14 @@ function isStructuralDiagnostic(diagnostic: unknown): boolean {
|
|
|
141
141
|
*
|
|
142
142
|
* Adopters with richer needs override the seams ({@link isStructurallyBroken},
|
|
143
143
|
* {@link onParseErrorChanged}, {@link onSourceModelSettled}) rather than the
|
|
144
|
-
* whole flow, and select a {@link
|
|
145
|
-
* tune how {@link saveSourceModel}
|
|
144
|
+
* whole flow, and select a {@link SaveDeliveryPolicy} via the bound option to
|
|
145
|
+
* tune how {@link saveSourceModel} delivers its result.
|
|
146
146
|
*
|
|
147
|
-
* **Default `saveSourceModel` flow.**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* {@link SaveConflictPolicy} (default {@link DEFAULT_SAVE_CONFLICT_POLICY},
|
|
153
|
-
* `overwrite`) decides the based-on-version guard, await-vs-fire-and-forget, and
|
|
154
|
-
* failure handling.
|
|
147
|
+
* **Default `saveSourceModel` flow.** Flushes the stored text of the primary and
|
|
148
|
+
* every tracked secondary via `AstDocumentManager.save`, with no serializer in
|
|
149
|
+
* the path — the update path already put the settled text in the store. The
|
|
150
|
+
* bound {@link SaveDeliveryPolicy} (default {@link DEFAULT_SAVE_DELIVERY_POLICY},
|
|
151
|
+
* `await`) decides await-vs-fire-and-forget and failure handling.
|
|
155
152
|
*
|
|
156
153
|
* **tempId filter.** GLSP's `DefaultGlobalActionProvider` spins up a
|
|
157
154
|
* throwaway per-diagram-type container with upstream's {@link TEMPORARY_CLIENT_ID}
|
|
@@ -188,14 +185,13 @@ export class HydraniumGlspStorage<TRoot extends AstNode, TSourceModel = string>
|
|
|
188
185
|
@inject(ModelValidator) @optional() protected readonly modelValidator?: ModelValidator;
|
|
189
186
|
|
|
190
187
|
/**
|
|
191
|
-
* Selected {@link
|
|
192
|
-
* {@link
|
|
193
|
-
* left unbound it resolves to {@link
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* `@optional()` member.
|
|
188
|
+
* Selected {@link SaveDeliveryPolicy} for {@link saveSourceModel}. Bind the
|
|
189
|
+
* {@link SaveDeliveryPolicy} token in a `DiagramModule` to choose a policy;
|
|
190
|
+
* left unbound it resolves to {@link DEFAULT_SAVE_DELIVERY_POLICY}. Read via
|
|
191
|
+
* {@link saveDeliveryPolicy} so the fallback is applied even when inversify
|
|
192
|
+
* injects `undefined` for an unbound `@optional()` member.
|
|
197
193
|
*/
|
|
198
|
-
@inject(
|
|
194
|
+
@inject(SaveDeliveryPolicy) @optional() protected readonly boundSaveDeliveryPolicy?: SaveDeliveryPolicy;
|
|
199
195
|
|
|
200
196
|
/** Disposables created during {@link doLoadSourceModel}; drained on session disposal. */
|
|
201
197
|
protected toDispose = new DisposableCollection();
|
|
@@ -604,32 +600,47 @@ export class HydraniumGlspStorage<TRoot extends AstNode, TSourceModel = string>
|
|
|
604
600
|
return [];
|
|
605
601
|
}
|
|
606
602
|
|
|
607
|
-
/** The effective {@link
|
|
608
|
-
protected get
|
|
609
|
-
return this.
|
|
603
|
+
/** The effective {@link SaveDeliveryPolicy}: the bound option, or {@link DEFAULT_SAVE_DELIVERY_POLICY} when unbound. */
|
|
604
|
+
protected get saveDeliveryPolicy(): SaveDeliveryPolicy {
|
|
605
|
+
return this.boundSaveDeliveryPolicy ?? DEFAULT_SAVE_DELIVERY_POLICY;
|
|
610
606
|
}
|
|
611
607
|
|
|
612
608
|
/**
|
|
613
|
-
* Default save flow:
|
|
614
|
-
*
|
|
615
|
-
* language-specific `Serializer` bound at `services.serializer.Serializer`),
|
|
616
|
-
* the multi-client text-document update, the rebuild, and the eventual
|
|
617
|
-
* `WritableFileSystemProvider.writeFile`.
|
|
609
|
+
* Default save flow: persist the store's current text for every document this
|
|
610
|
+
* diagram owns.
|
|
618
611
|
*
|
|
619
|
-
*
|
|
620
|
-
*
|
|
621
|
-
*
|
|
622
|
-
*
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
627
|
-
*
|
|
612
|
+
* **A save persists, it does not author.** Every diagram gesture already
|
|
613
|
+
* reached the store through `ModelService.update`, so the store holds the
|
|
614
|
+
* settled text and disk is the only thing behind. Re-serializing from the AST
|
|
615
|
+
* here cannot improve on that text and can only damage it: a serializer
|
|
616
|
+
* normalises formatting and carries no comments, so a save would reflow and
|
|
617
|
+
* strip a document nothing changed — which is what a pure bounds drag does to
|
|
618
|
+
* the semantic file when only its layout moved.
|
|
619
|
+
*
|
|
620
|
+
* **The write set is the primary plus every tracked secondary**
|
|
621
|
+
* (`AbstractHydraniumGlspState.trackSecondaryDocument`), so a document the
|
|
622
|
+
* diagram wrote is persisted whether or not it is the one the client named.
|
|
623
|
+
* The primary is flushed first, then secondaries in tracking order. A
|
|
624
|
+
* document no client holds open is skipped — there is no stored text to
|
|
625
|
+
* persist.
|
|
626
|
+
*
|
|
627
|
+
* **A save therefore names documents the gesture did not aim at**, which is
|
|
628
|
+
* why an unchanged one is not rewritten even though the user asked for a
|
|
629
|
+
* save: the mtime would move on a file they never touched.
|
|
630
|
+
* `AstDocumentManager.save` decides that per document and announces the save
|
|
631
|
+
* either way.
|
|
632
|
+
*
|
|
633
|
+
* The configured {@link SaveDeliveryPolicy} (see {@link saveDeliveryPolicy})
|
|
634
|
+
* decides await-vs-fire-and-forget and failure handling. It carries no
|
|
635
|
+
* based-on guard: the guard exists to stop a stale writer overwriting a newer
|
|
636
|
+
* document, and a flush persists the store — which already holds every other
|
|
637
|
+
* client's change, including the one that advanced the version.
|
|
628
638
|
*
|
|
629
639
|
* Returns `MaybePromise<void>` to match upstream `SourceModelStorage`:
|
|
630
|
-
* resolves with the
|
|
631
|
-
*
|
|
632
|
-
* `WritableFileSystemProvider` directly) still override the whole
|
|
640
|
+
* resolves with the flush under `await`, returns synchronously under
|
|
641
|
+
* `fire-and-forget`. Adopters that bypass `AstDocumentManager` (writing
|
|
642
|
+
* through `WritableFileSystemProvider` directly) still override the whole
|
|
643
|
+
* method.
|
|
633
644
|
*/
|
|
634
645
|
saveSourceModel(action: SaveModelAction): MaybePromise<void> {
|
|
635
646
|
// Normalised for the same reason the load path is: `SaveModelAction.fileUri`
|
|
@@ -639,26 +650,36 @@ export class HydraniumGlspStorage<TRoot extends AstNode, TSourceModel = string>
|
|
|
639
650
|
// the call site rather than inside `getFileUri` so that method's contract —
|
|
640
651
|
// return what the action said — is unchanged for adopters overriding it.
|
|
641
652
|
const uri = this.toSourceModelUri(this.getFileUri(action));
|
|
642
|
-
const policy = this.
|
|
643
|
-
const persisted = this.
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
}).then(() => undefined);
|
|
649
|
-
|
|
650
|
-
if (policy.kind === 'drop-and-log') {
|
|
651
|
-
// Fire-and-forget: the diagram save lost the race to a concurrent edit
|
|
652
|
-
// that already persisted the truth, so it must neither block the action
|
|
653
|
-
// nor surface. Log rather than leave an unhandled rejection.
|
|
653
|
+
const policy = this.saveDeliveryPolicy;
|
|
654
|
+
const persisted = this.flushWriteSet(uri);
|
|
655
|
+
|
|
656
|
+
if (policy.kind === 'fire-and-forget') {
|
|
657
|
+
// Log rather than leave an unhandled rejection: the promise is not
|
|
658
|
+
// returned, so nothing else will observe a failure.
|
|
654
659
|
persisted.catch(error => this.logger.error(`Save failed for ${uri}: ${error instanceof Error ? error.message : String(error)}`));
|
|
655
660
|
return undefined;
|
|
656
661
|
}
|
|
657
|
-
//
|
|
658
|
-
// propagates to GLSP's save-action handler.
|
|
662
|
+
// Awaited: any failure propagates to GLSP's save-action handler.
|
|
659
663
|
return persisted;
|
|
660
664
|
}
|
|
661
665
|
|
|
666
|
+
/**
|
|
667
|
+
* Save the stored text of `primaryUri` and every tracked secondary.
|
|
668
|
+
*
|
|
669
|
+
* Deduplicated, because a state that tracks its own primary as a secondary
|
|
670
|
+
* would otherwise save it twice and fire two save notifications for one
|
|
671
|
+
* save. A document no client holds open is skipped: there is no stored text
|
|
672
|
+
* to persist, and `AstDocumentManager.save` throws on one.
|
|
673
|
+
*/
|
|
674
|
+
protected async flushWriteSet(primaryUri: string): Promise<void> {
|
|
675
|
+
const documents = this.sharedServices.workspace.AstDocumentManager;
|
|
676
|
+
for (const target of new Set([primaryUri, ...this.state.secondaryUris])) {
|
|
677
|
+
if (documents.isOpen(target)) {
|
|
678
|
+
await documents.save(target, this.state.clientId);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
662
683
|
/**
|
|
663
684
|
* Normalise GLSP's `sourceUri` — which may be a filesystem PATH or a URI
|
|
664
685
|
* string — to the URI string the workspace keys documents by.
|
package/src/storage/index.ts
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* How `HydraniumGlspStorage.saveSourceModel` delivers its result: whether the
|
|
12
|
+
* GLSP save action awaits the write, and what happens on failure.
|
|
13
|
+
*
|
|
14
|
+
* The two are not independent — fire-and-forget plus rethrow would leave an
|
|
15
|
+
* unhandled rejection — so each arm bundles them into one coherent, nameable
|
|
16
|
+
* policy an adopter selects whole. It is a *selection of configuration*,
|
|
17
|
+
* delivered as a bound option (see the {@link SaveDeliveryPolicy} symbol) rather
|
|
18
|
+
* than a behaviour hook.
|
|
19
|
+
*
|
|
20
|
+
* **Neither arm guards on a based-on version.** A save flushes the store's
|
|
21
|
+
* settled text rather than authoring from the diagram's captured model, and the
|
|
22
|
+
* store already holds every other client's change — so a guard here refuses a
|
|
23
|
+
* write whose content is already correct. The gate that does exist sits on the
|
|
24
|
+
* update path, per operation, where the diagram authors.
|
|
25
|
+
*/
|
|
26
|
+
export type SaveDeliveryPolicy =
|
|
27
|
+
/** Await the write and propagate any failure to the GLSP save action. The default. */
|
|
28
|
+
| { kind: 'await' }
|
|
29
|
+
/**
|
|
30
|
+
* Fire-and-forget, logging and swallowing every failure. Correct when a
|
|
31
|
+
* failed diagram save must neither block the action nor surface as an error.
|
|
32
|
+
*/
|
|
33
|
+
| { kind: 'fire-and-forget' };
|
|
34
|
+
|
|
35
|
+
/** The policy applied when no {@link SaveDeliveryPolicy} option is bound. */
|
|
36
|
+
export const DEFAULT_SAVE_DELIVERY_POLICY: SaveDeliveryPolicy = { kind: 'await' };
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* DI token for the {@link SaveDeliveryPolicy} option. Bind a constant value in a
|
|
40
|
+
* `DiagramModule` to select a non-default policy; left unbound,
|
|
41
|
+
* `HydraniumGlspStorage` falls back to {@link DEFAULT_SAVE_DELIVERY_POLICY}.
|
|
42
|
+
* Shares its name with the type, the way a `class` is both a value and a type.
|
|
43
|
+
*/
|
|
44
|
+
export const SaveDeliveryPolicy = Symbol('SaveDeliveryPolicy');
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made available under the
|
|
5
|
-
* terms of the MIT License which is available in the project root.
|
|
6
|
-
*
|
|
7
|
-
* SPDX-License-Identifier: MIT
|
|
8
|
-
********************************************************************************/
|
|
9
|
-
/**
|
|
10
|
-
* How `HydraniumGlspStorage.saveSourceModel` reacts when a concurrent edit has
|
|
11
|
-
* advanced the document past the version this diagram was last captured at.
|
|
12
|
-
*
|
|
13
|
-
* A save spans otherwise-independent choices — whether to guard on the captured
|
|
14
|
-
* based-on version, whether the GLSP save action awaits the persist, and what
|
|
15
|
-
* happens on failure. Each arm bundles those into one coherent, nameable policy
|
|
16
|
-
* so an adopter selects a whole behaviour rather than assembling an incoherent
|
|
17
|
-
* mix: fire-and-forget plus rethrow would leave an unhandled rejection. It is a
|
|
18
|
-
* *selection of configuration*, delivered as a bound option (see the
|
|
19
|
-
* {@link SaveConflictPolicy} symbol) rather than a behaviour hook.
|
|
20
|
-
*/
|
|
21
|
-
export type SaveConflictPolicy =
|
|
22
|
-
/**
|
|
23
|
-
* Last-write-wins: no based-on guard, await the persist, propagate any
|
|
24
|
-
* failure to the GLSP save action. The default; correct for a single-editor
|
|
25
|
-
* head where nothing races the save.
|
|
26
|
-
*/
|
|
27
|
-
{
|
|
28
|
-
kind: 'overwrite';
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Guard on the captured version, await the persist, and surface a
|
|
32
|
-
* `ConflictError` (and any other failure) to the GLSP save action.
|
|
33
|
-
*/
|
|
34
|
-
| {
|
|
35
|
-
kind: 'reject';
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Guard on the captured version, fire-and-forget, and log + swallow every
|
|
39
|
-
* failure. Correct when another editor of the same document may already have
|
|
40
|
-
* written the truth, so a stale diagram save is benign and must neither
|
|
41
|
-
* block the action nor surface as an error.
|
|
42
|
-
*/
|
|
43
|
-
| {
|
|
44
|
-
kind: 'drop-and-log';
|
|
45
|
-
};
|
|
46
|
-
/** The policy applied when no {@link SaveConflictPolicy} option is bound. */
|
|
47
|
-
export declare const DEFAULT_SAVE_CONFLICT_POLICY: SaveConflictPolicy;
|
|
48
|
-
/**
|
|
49
|
-
* DI token for the {@link SaveConflictPolicy} option. Bind a constant value in a
|
|
50
|
-
* `DiagramModule` to select a non-default policy; left unbound,
|
|
51
|
-
* `HydraniumGlspStorage` falls back to
|
|
52
|
-
* {@link DEFAULT_SAVE_CONFLICT_POLICY}. Shares its name with the type, the way a
|
|
53
|
-
* `class` is both a value and a type.
|
|
54
|
-
*/
|
|
55
|
-
export declare const SaveConflictPolicy: unique symbol;
|
|
56
|
-
//# sourceMappingURL=save-conflict-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"save-conflict-policy.d.ts","sourceRoot":"","sources":["../../src/storage/save-conflict-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB;AAC3B;;;;GAIG;AACD;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB;;;GAGG;GACD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB;;;;;GAKG;GACD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAE9B,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,EAAE,kBAA0C,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"save-conflict-policy.js","sourceRoot":"","sources":["../../src/storage/save-conflict-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAkClF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,4BAA4B,GAAuB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2026 CrossBreeze, EclipseSource and others.
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made available under the
|
|
5
|
-
* terms of the MIT License which is available in the project root.
|
|
6
|
-
*
|
|
7
|
-
* SPDX-License-Identifier: MIT
|
|
8
|
-
********************************************************************************/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* How `HydraniumGlspStorage.saveSourceModel` reacts when a concurrent edit has
|
|
12
|
-
* advanced the document past the version this diagram was last captured at.
|
|
13
|
-
*
|
|
14
|
-
* A save spans otherwise-independent choices — whether to guard on the captured
|
|
15
|
-
* based-on version, whether the GLSP save action awaits the persist, and what
|
|
16
|
-
* happens on failure. Each arm bundles those into one coherent, nameable policy
|
|
17
|
-
* so an adopter selects a whole behaviour rather than assembling an incoherent
|
|
18
|
-
* mix: fire-and-forget plus rethrow would leave an unhandled rejection. It is a
|
|
19
|
-
* *selection of configuration*, delivered as a bound option (see the
|
|
20
|
-
* {@link SaveConflictPolicy} symbol) rather than a behaviour hook.
|
|
21
|
-
*/
|
|
22
|
-
export type SaveConflictPolicy =
|
|
23
|
-
/**
|
|
24
|
-
* Last-write-wins: no based-on guard, await the persist, propagate any
|
|
25
|
-
* failure to the GLSP save action. The default; correct for a single-editor
|
|
26
|
-
* head where nothing races the save.
|
|
27
|
-
*/
|
|
28
|
-
| { kind: 'overwrite' }
|
|
29
|
-
/**
|
|
30
|
-
* Guard on the captured version, await the persist, and surface a
|
|
31
|
-
* `ConflictError` (and any other failure) to the GLSP save action.
|
|
32
|
-
*/
|
|
33
|
-
| { kind: 'reject' }
|
|
34
|
-
/**
|
|
35
|
-
* Guard on the captured version, fire-and-forget, and log + swallow every
|
|
36
|
-
* failure. Correct when another editor of the same document may already have
|
|
37
|
-
* written the truth, so a stale diagram save is benign and must neither
|
|
38
|
-
* block the action nor surface as an error.
|
|
39
|
-
*/
|
|
40
|
-
| { kind: 'drop-and-log' };
|
|
41
|
-
|
|
42
|
-
/** The policy applied when no {@link SaveConflictPolicy} option is bound. */
|
|
43
|
-
export const DEFAULT_SAVE_CONFLICT_POLICY: SaveConflictPolicy = { kind: 'overwrite' };
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* DI token for the {@link SaveConflictPolicy} option. Bind a constant value in a
|
|
47
|
-
* `DiagramModule` to select a non-default policy; left unbound,
|
|
48
|
-
* `HydraniumGlspStorage` falls back to
|
|
49
|
-
* {@link DEFAULT_SAVE_CONFLICT_POLICY}. Shares its name with the type, the way a
|
|
50
|
-
* `class` is both a value and a type.
|
|
51
|
-
*/
|
|
52
|
-
export const SaveConflictPolicy = Symbol('SaveConflictPolicy');
|