@hydranium/core 1.0.0-next.370 → 1.0.0-next.372
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/langium/document-builder/document-builder.d.ts +37 -5
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +66 -8
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/project/abstract-project-manager.d.ts +184 -13
- package/lib/langium/project/abstract-project-manager.d.ts.map +1 -1
- package/lib/langium/project/abstract-project-manager.js +324 -11
- package/lib/langium/project/abstract-project-manager.js.map +1 -1
- package/lib/langium/project/project-change-event.d.ts +20 -1
- package/lib/langium/project/project-change-event.d.ts.map +1 -1
- package/lib/langium/project/project-manager.d.ts +28 -2
- package/lib/langium/project/project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.d.ts +7 -1
- package/lib/langium/project/single-project-manager.d.ts.map +1 -1
- package/lib/langium/project/single-project-manager.js +12 -0
- package/lib/langium/project/single-project-manager.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts +4 -2
- package/lib/langium/workspace/hydranium-workspace-manager.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-manager.js +4 -2
- package/lib/langium/workspace/hydranium-workspace-manager.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +1 -1
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +7 -0
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/lib/testing/stub-project-manager.d.ts.map +1 -1
- package/lib/testing/stub-project-manager.js +10 -0
- package/lib/testing/stub-project-manager.js.map +1 -1
- package/package.json +5 -5
- package/src/langium/document-builder/document-builder.ts +71 -11
- package/src/langium/project/abstract-project-manager.ts +396 -15
- package/src/langium/project/project-change-event.ts +23 -1
- package/src/langium/project/project-manager.ts +31 -2
- package/src/langium/project/single-project-manager.ts +16 -1
- package/src/langium/workspace/hydranium-workspace-manager.ts +4 -2
- package/src/testing/stub-document-builder.ts +18 -1
- package/src/testing/stub-project-manager.ts +10 -0
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { Deferred, UNQUALIFIED_PROJECT_REFERENCE, describeErrorWithStack } from '@hydranium/protocol';
|
|
10
|
-
import { AstUtils, DocumentState, UriUtils } from '@hydranium/langium';
|
|
10
|
+
import { AstUtils, DocumentState, isOperationCancelled, OperationCancelled, UriUtils } from '@hydranium/langium';
|
|
11
11
|
import { CancellationToken, Disposable } from 'vscode-languageserver';
|
|
12
|
+
import { HYDRANIUM_BUILD_REASONS } from '../document-builder/document-builder.js';
|
|
12
13
|
import { isVirtualUri } from '../workspace/virtual-document.js';
|
|
13
14
|
/**
|
|
14
15
|
* Abstract base for project-aware {@link ProjectManager} implementations.
|
|
@@ -40,7 +41,13 @@ import { isVirtualUri } from '../workspace/virtual-document.js';
|
|
|
40
41
|
* transitively in reverse (projects whose dep closure touches a changed
|
|
41
42
|
* project also rebuild). Override for a different rebuild policy.
|
|
42
43
|
* - {@link getVisibleProjects} — default walks {@link Project.dependencies}
|
|
43
|
-
*
|
|
44
|
+
* as far as {@link ProjectManagerOptions.visibility} reaches. Override for
|
|
45
|
+
* a different visibility model.
|
|
46
|
+
* - {@link shouldDeferMemberRelink} — default follows
|
|
47
|
+
* {@link ProjectManagerOptions.deferMemberRelink}. Override for a different
|
|
48
|
+
* choice of which builds leave the members to a follow-up build.
|
|
49
|
+
* - {@link collectAffectedDocuments} — default collects the affected
|
|
50
|
+
* projects' members. Override to add documents a change affects otherwise.
|
|
44
51
|
* - {@link computeProject} — default uses closest-ancestor-descriptor-folder
|
|
45
52
|
* membership. Override for a different membership model; overriding
|
|
46
53
|
* {@link getProject} instead loses the memoization it wraps.
|
|
@@ -67,15 +74,60 @@ export class AbstractProjectManager {
|
|
|
67
74
|
fileSystemProvider;
|
|
68
75
|
langiumDocuments;
|
|
69
76
|
documentBuilder;
|
|
77
|
+
workspaceLock;
|
|
70
78
|
tracer;
|
|
79
|
+
/** Resolved from {@link ProjectManagerOptions.deferMemberRelink}. */
|
|
80
|
+
deferMemberRelink;
|
|
81
|
+
/** Resolved from {@link ProjectManagerOptions.visibility}. */
|
|
82
|
+
visibility;
|
|
83
|
+
/** Member documents a deferred relink has yet to take, by URI string. */
|
|
84
|
+
pendingMemberRelink = new Map();
|
|
85
|
+
/** The keys of {@link pendingMemberRelink} to reset before they are built, whatever their state. */
|
|
86
|
+
pendingMemberResets = new Set();
|
|
87
|
+
/**
|
|
88
|
+
* The keys of every queued or taken member that no build has relinked yet.
|
|
89
|
+
* A member leaves once a build links it and then delivers its last phase
|
|
90
|
+
* to every listener, whichever build that is: `Validated`, or
|
|
91
|
+
* `IndexedReferences` when that build does not validate it.
|
|
92
|
+
*/
|
|
93
|
+
unrelinkedMembers = new Set();
|
|
94
|
+
/** The keys of {@link unrelinkedMembers} a build has linked since they were queued. */
|
|
95
|
+
linkedMembers = new Set();
|
|
96
|
+
/** Set from {@link queueMemberRelink} until {@link runMemberRelink} takes {@link pendingMemberRelink}. */
|
|
97
|
+
memberRelinkQueued = false;
|
|
98
|
+
/** Set once {@link registerMemberPhaseListeners} has run. */
|
|
99
|
+
memberPhaseListenersRegistered = false;
|
|
100
|
+
/** One per {@link runMemberRelink}, until it ends. */
|
|
101
|
+
memberRelinks = new Set();
|
|
102
|
+
memberRelinkStartedListeners = new Set();
|
|
103
|
+
memberRelinkFinishedListeners = new Set();
|
|
71
104
|
constructor(services, options = {}) {
|
|
72
105
|
this.services = services;
|
|
73
106
|
this.fileSystemProvider = services.workspace.FileSystemProvider;
|
|
74
107
|
this.langiumDocuments = services.workspace.LangiumDocuments;
|
|
75
108
|
this.documentBuilder = services.workspace.DocumentBuilder;
|
|
109
|
+
this.workspaceLock = services.workspace.WorkspaceLock;
|
|
110
|
+
this.deferMemberRelink = options.deferMemberRelink ?? false;
|
|
111
|
+
this.visibility = options.visibility ?? 'transitive';
|
|
76
112
|
this.tracer = services.Tracer.for(options.logName ?? this.constructor.name).trace('instantiated');
|
|
77
113
|
this.documentBuilder.onUpdate((changed, deleted) => this.onBuildUpdate(changed, deleted));
|
|
78
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Track members through every build from the first deferred relink on.
|
|
117
|
+
* Registered then rather than here, so a manager that never defers adds no
|
|
118
|
+
* listener to each document's phases.
|
|
119
|
+
*/
|
|
120
|
+
registerMemberPhaseListeners() {
|
|
121
|
+
this.memberPhaseListenersRegistered = true;
|
|
122
|
+
this.documentBuilder.onDocumentPhase(DocumentState.Linked, document => this.onMemberLinked(document.uri));
|
|
123
|
+
for (const phase of [DocumentState.IndexedReferences, DocumentState.Validated]) {
|
|
124
|
+
this.documentBuilder.onDocumentPhaseDelivered(phase, document => {
|
|
125
|
+
if (this.lastPhaseOf(document) === phase) {
|
|
126
|
+
this.onMemberDelivered(document.uri);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
79
131
|
get ready() {
|
|
80
132
|
return this.readyDeferred.promise;
|
|
81
133
|
}
|
|
@@ -195,10 +247,10 @@ export class AbstractProjectManager {
|
|
|
195
247
|
* Compute the set of projects whose member documents need to rebuild
|
|
196
248
|
* given the directly changed projects. Default walks the dependency
|
|
197
249
|
* graph in reverse — any project whose declared {@link Project.dependencies}
|
|
198
|
-
* include a changed id transitively also rebuilds (cycle-safe)
|
|
250
|
+
* include a changed id transitively also rebuilds (cycle-safe), whatever
|
|
251
|
+
* {@link visibility} is (see {@link ProjectManagerOptions.visibility}).
|
|
199
252
|
*
|
|
200
|
-
* Override for a different rebuild policy (
|
|
201
|
-
* reachability, etc.).
|
|
253
|
+
* Override for a different rebuild policy (custom reachability, etc.).
|
|
202
254
|
*/
|
|
203
255
|
getAffectedProjects(directlyChanged) {
|
|
204
256
|
const result = new Set(directlyChanged);
|
|
@@ -239,13 +291,19 @@ export class AbstractProjectManager {
|
|
|
239
291
|
return previous.referenceName !== updated.referenceName || !sameDependencies(previous, updated);
|
|
240
292
|
}
|
|
241
293
|
/**
|
|
242
|
-
* Default:
|
|
243
|
-
*
|
|
294
|
+
* Default: the source project itself, then the closure of its
|
|
295
|
+
* {@link Project.dependencies}, or only the dependencies it names when
|
|
296
|
+
* {@link visibility} is `'direct'`. A dependency that is not registered is
|
|
297
|
+
* skipped. Override for a different visibility model.
|
|
244
298
|
*/
|
|
245
299
|
getVisibleProjects(projectId) {
|
|
246
|
-
|
|
300
|
+
const project = this.projects.get(projectId);
|
|
301
|
+
if (!project) {
|
|
247
302
|
return [];
|
|
248
303
|
}
|
|
304
|
+
if (this.visibility === 'direct') {
|
|
305
|
+
return [...new Set([projectId, ...(project.dependencies ?? []).filter(dep => this.projects.has(dep))])];
|
|
306
|
+
}
|
|
249
307
|
const visited = new Set();
|
|
250
308
|
const ordered = [];
|
|
251
309
|
this.collectVisibleProjects(projectId, visited, ordered);
|
|
@@ -339,9 +397,22 @@ export class AbstractProjectManager {
|
|
|
339
397
|
*
|
|
340
398
|
* Descriptor URIs that triggered the cycle are excluded from
|
|
341
399
|
* {@link ProjectChangeEvent.affectedDocuments} — re-adding them would
|
|
342
|
-
* loop.
|
|
400
|
+
* loop. When {@link shouldDeferMemberRelink} holds, the event carries only
|
|
401
|
+
* the members already below their last phase, which this build builds
|
|
402
|
+
* anyway, and the rest are queued for a follow-up build. The last phase
|
|
403
|
+
* is the one of the build that last carried each member, since this
|
|
404
|
+
* build's phases have not started yet. If validation was turned on since,
|
|
405
|
+
* a member that build left at `IndexedReferences` is deferred, and this
|
|
406
|
+
* build validates it before the follow-up relinks it.
|
|
407
|
+
*
|
|
408
|
+
* An override calls `super` before its first await, since
|
|
409
|
+
* {@link shouldDeferMemberRelink} only answers for the calling build until
|
|
410
|
+
* then.
|
|
343
411
|
*/
|
|
344
412
|
async onBuildUpdate(changed, deleted) {
|
|
413
|
+
// Asked before the first await, while the builder still answers for
|
|
414
|
+
// this call.
|
|
415
|
+
const deferRelink = this.shouldDeferMemberRelink();
|
|
345
416
|
const changedDescriptors = changed.filter(uri => this.isDescriptorUri(uri));
|
|
346
417
|
const deletedDescriptors = deleted.filter(uri => this.isDescriptorUri(uri));
|
|
347
418
|
if (changedDescriptors.length === 0 && deletedDescriptors.length === 0) {
|
|
@@ -431,9 +502,43 @@ export class AbstractProjectManager {
|
|
|
431
502
|
excluded.add(uri.toString());
|
|
432
503
|
}
|
|
433
504
|
const affectedDocuments = this.collectAffectedDocuments(affectedProjectIds, excluded);
|
|
434
|
-
|
|
505
|
+
if (deferRelink) {
|
|
506
|
+
// The build of the change already builds what it was given.
|
|
507
|
+
const building = new Set(changed.map(uri => uri.toString()));
|
|
508
|
+
const carried = [];
|
|
509
|
+
const deferred = [];
|
|
510
|
+
for (const uri of affectedDocuments) {
|
|
511
|
+
if (building.has(uri.toString())) {
|
|
512
|
+
continue;
|
|
513
|
+
}
|
|
514
|
+
const document = this.langiumDocuments.getDocument(uri);
|
|
515
|
+
// Below its last phase, the build of the change builds it anyway.
|
|
516
|
+
(document && document.state < this.lastPhaseOf(document) ? carried : deferred).push(uri);
|
|
517
|
+
}
|
|
518
|
+
this.queueMemberRelink(deferred);
|
|
519
|
+
this.emit({ added, updated, removed, affectedDocuments: carried });
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
this.emit({ added, updated, removed, affectedDocuments });
|
|
523
|
+
}
|
|
435
524
|
}
|
|
436
|
-
/**
|
|
525
|
+
/**
|
|
526
|
+
* Whether the build calling {@link onBuildUpdate} leaves the documents a
|
|
527
|
+
* change affects to a follow-up build. Default: under
|
|
528
|
+
* {@link deferMemberRelink}, unless an explicit `build` calls it. Called
|
|
529
|
+
* before the first await of {@link onBuildUpdate}, where
|
|
530
|
+
* `isInsideBuildUpdate` still answers for that call.
|
|
531
|
+
*/
|
|
532
|
+
shouldDeferMemberRelink() {
|
|
533
|
+
return this.deferMemberRelink && !this.documentBuilder.isInsideBuildUpdate();
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Iterate the document set once, collecting URIs whose owning project is in
|
|
537
|
+
* the affected set. Override to add documents a change affects otherwise,
|
|
538
|
+
* such as those reached through a project's type, calling `super` to keep
|
|
539
|
+
* the members. What it returns is relinked as the members are, in the
|
|
540
|
+
* build of the change or in the follow-up build.
|
|
541
|
+
*/
|
|
437
542
|
collectAffectedDocuments(affectedProjectIds, excludedUris) {
|
|
438
543
|
const result = [];
|
|
439
544
|
for (const document of this.langiumDocuments.all) {
|
|
@@ -449,6 +554,214 @@ export class AbstractProjectManager {
|
|
|
449
554
|
return result;
|
|
450
555
|
}
|
|
451
556
|
// ============================================================
|
|
557
|
+
// Deferred member relink
|
|
558
|
+
// ============================================================
|
|
559
|
+
/** One that throws is logged and skipped. */
|
|
560
|
+
onMemberRelinkStarted(listener) {
|
|
561
|
+
this.memberRelinkStartedListeners.add(listener);
|
|
562
|
+
return Disposable.create(() => this.memberRelinkStartedListeners.delete(listener));
|
|
563
|
+
}
|
|
564
|
+
/** One that throws is logged and skipped. */
|
|
565
|
+
onMemberRelinkFinished(listener) {
|
|
566
|
+
this.memberRelinkFinishedListeners.add(listener);
|
|
567
|
+
return Disposable.create(() => this.memberRelinkFinishedListeners.delete(listener));
|
|
568
|
+
}
|
|
569
|
+
async memberRelinkSettled() {
|
|
570
|
+
while (this.memberRelinks.size > 0) {
|
|
571
|
+
await Promise.all(this.memberRelinks);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Add `documents` to {@link pendingMemberRelink}, to be reset before they
|
|
576
|
+
* are built when `reset` holds, and start a {@link runMemberRelink} unless
|
|
577
|
+
* one is already waiting to take them.
|
|
578
|
+
*/
|
|
579
|
+
queueMemberRelink(documents, reset = true) {
|
|
580
|
+
if (!this.memberPhaseListenersRegistered && documents.length > 0) {
|
|
581
|
+
this.registerMemberPhaseListeners();
|
|
582
|
+
}
|
|
583
|
+
for (const uri of documents) {
|
|
584
|
+
const key = uri.toString();
|
|
585
|
+
this.pendingMemberRelink.set(key, uri);
|
|
586
|
+
this.unrelinkedMembers.add(key);
|
|
587
|
+
if (reset) {
|
|
588
|
+
this.pendingMemberResets.add(key);
|
|
589
|
+
this.linkedMembers.delete(key);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
if (this.memberRelinkQueued || this.pendingMemberRelink.size === 0) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
this.memberRelinkQueued = true;
|
|
596
|
+
const settled = this.runMemberRelink();
|
|
597
|
+
this.memberRelinks.add(settled);
|
|
598
|
+
void settled.finally(() => this.memberRelinks.delete(settled));
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Take {@link pendingMemberRelink} in a lock read and build it in a write
|
|
602
|
+
* queued from there. The read runs once no write runs or is queued, so the
|
|
603
|
+
* write does not cancel the build of the change, as one queued from inside
|
|
604
|
+
* that build would. It still cancels a write another read of the same batch
|
|
605
|
+
* queued before it. If that write is a build that has started, the
|
|
606
|
+
* follow-up builds the documents it reset, since an update builds every
|
|
607
|
+
* document below `Validated`. The read does not await its write, which
|
|
608
|
+
* waits for the read to end.
|
|
609
|
+
*
|
|
610
|
+
* The follow-up waits for any build already running outside the lock to
|
|
611
|
+
* end, so it does not start alongside one. A build started outside the lock
|
|
612
|
+
* after that can still overlap it, as any two such builds can. The wait
|
|
613
|
+
* runs after the read rather than in it, since a wait under the lock would
|
|
614
|
+
* hold back every write, and a write queued outside a read could cancel one
|
|
615
|
+
* already queued, so the read runs again.
|
|
616
|
+
*/
|
|
617
|
+
async runMemberRelink() {
|
|
618
|
+
const next = await this.workspaceLock.read(() => {
|
|
619
|
+
const running = this.documentBuilder.activeBuild;
|
|
620
|
+
if (running) {
|
|
621
|
+
return { running };
|
|
622
|
+
}
|
|
623
|
+
this.memberRelinkQueued = false;
|
|
624
|
+
const uris = [...this.pendingMemberRelink.values()];
|
|
625
|
+
const resets = new Set(this.pendingMemberResets);
|
|
626
|
+
this.pendingMemberRelink.clear();
|
|
627
|
+
this.pendingMemberResets.clear();
|
|
628
|
+
// A write cancels the one queued before it, so none is queued for nothing.
|
|
629
|
+
if (uris.length === 0) {
|
|
630
|
+
return { relink: Promise.resolve() };
|
|
631
|
+
}
|
|
632
|
+
return { relink: this.workspaceLock.write(token => this.relinkMembers(uris, resets, token)) };
|
|
633
|
+
});
|
|
634
|
+
if (next.running) {
|
|
635
|
+
await next.running;
|
|
636
|
+
return this.runMemberRelink();
|
|
637
|
+
}
|
|
638
|
+
return next.relink;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* The write action of a deferred relink: take the documents still loaded
|
|
642
|
+
* that no build has relinked since they were queued, and build them. Those
|
|
643
|
+
* in `resets`, and those already at their last phase, are reset first by a
|
|
644
|
+
* {@link ProjectChangeEvent} that carries only them, so the workspace
|
|
645
|
+
* manager's `onProjectsChanged` resets them as it does without the option.
|
|
646
|
+
* An `update` with no URIs builds what is left below `Validated`, and
|
|
647
|
+
* Langium relinks every document with a linking error too, without
|
|
648
|
+
* reporting the members to `onUpdate` listeners as changed.
|
|
649
|
+
*
|
|
650
|
+
* A write cancelled before it starts is queued again as it was, unannounced.
|
|
651
|
+
* A cancelled build is queued again, without resets, with only the members
|
|
652
|
+
* it did not relink. One a cancel left at its last phase before its
|
|
653
|
+
* listeners all ran is reset then, since Langium does not run them again.
|
|
654
|
+
* If none is left, nothing is built or announced. A build that ends,
|
|
655
|
+
* completed or failed, stops tracking the members it took, except those a
|
|
656
|
+
* change queued again meanwhile. A failed build is not queued again, since
|
|
657
|
+
* it would fail again. Never throws, so {@link memberRelinkSettled} never
|
|
658
|
+
* rejects.
|
|
659
|
+
*/
|
|
660
|
+
async relinkMembers(uris, resets, token) {
|
|
661
|
+
const loaded = [];
|
|
662
|
+
for (const uri of uris) {
|
|
663
|
+
const key = uri.toString();
|
|
664
|
+
if (!this.unrelinkedMembers.has(key)) {
|
|
665
|
+
continue;
|
|
666
|
+
}
|
|
667
|
+
if (this.langiumDocuments.getDocument(uri)) {
|
|
668
|
+
loaded.push(uri);
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
this.forgetMember(key);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
if (loaded.length === 0) {
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
const forgetTaken = () => loaded.filter(uri => !this.pendingMemberRelink.has(uri.toString())).forEach(uri => this.forgetMember(uri.toString()));
|
|
678
|
+
if (token.isCancellationRequested) {
|
|
679
|
+
this.queueMemberRelink(loaded.filter(uri => resets.has(uri.toString())));
|
|
680
|
+
this.queueMemberRelink(loaded.filter(uri => !resets.has(uri.toString())), false);
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
this.notifyMemberRelink(this.memberRelinkStartedListeners, loaded);
|
|
684
|
+
let completed = false;
|
|
685
|
+
try {
|
|
686
|
+
const reset = loaded.filter(uri => {
|
|
687
|
+
const document = this.langiumDocuments.getDocument(uri);
|
|
688
|
+
return document !== undefined && (resets.has(uri.toString()) || document.state >= this.lastPhaseOf(document));
|
|
689
|
+
});
|
|
690
|
+
if (reset.length > 0) {
|
|
691
|
+
reset.forEach(uri => this.linkedMembers.delete(uri.toString()));
|
|
692
|
+
this.emit({ added: [], updated: [], removed: [], affectedDocuments: reset });
|
|
693
|
+
}
|
|
694
|
+
this.documentBuilder.markNextReason(HYDRANIUM_BUILD_REASONS.memberRelink);
|
|
695
|
+
await this.documentBuilder.update([], [], token);
|
|
696
|
+
// A cancel a last-phase listener swallowed can leave `update` resolved.
|
|
697
|
+
if (token.isCancellationRequested) {
|
|
698
|
+
throw OperationCancelled;
|
|
699
|
+
}
|
|
700
|
+
completed = true;
|
|
701
|
+
// Built all the same if no listener saw it linked or delivered.
|
|
702
|
+
forgetTaken();
|
|
703
|
+
}
|
|
704
|
+
catch (error) {
|
|
705
|
+
if (isOperationCancelled(error)) {
|
|
706
|
+
// A cancel can skip the Linked listeners, and Langium does not
|
|
707
|
+
// notify that phase again.
|
|
708
|
+
for (const uri of loaded) {
|
|
709
|
+
const document = this.langiumDocuments.getDocument(uri);
|
|
710
|
+
if (document && document.state >= DocumentState.Linked) {
|
|
711
|
+
this.onMemberLinked(uri);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
this.queueMemberRelink(loaded.filter(uri => this.unrelinkedMembers.has(uri.toString())), false);
|
|
715
|
+
}
|
|
716
|
+
else {
|
|
717
|
+
forgetTaken();
|
|
718
|
+
this.tracer.error(`Relinking ${this.conceptName()} members failed: ${describeErrorWithStack(error)}`);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
finally {
|
|
722
|
+
this.notifyMemberRelink(this.memberRelinkFinishedListeners, { completed });
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
/** Record that a build linked `uri`, if it is a member not relinked yet. */
|
|
726
|
+
onMemberLinked(uri) {
|
|
727
|
+
const key = uri.toString();
|
|
728
|
+
if (this.unrelinkedMembers.has(key)) {
|
|
729
|
+
this.linkedMembers.add(key);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
/** The last phase the build that carries `document` takes it to. */
|
|
733
|
+
lastPhaseOf(document) {
|
|
734
|
+
return this.documentBuilder.shouldValidateDocument(document) ? DocumentState.Validated : DocumentState.IndexedReferences;
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* A member linked since it was queued and now delivered at its last phase
|
|
738
|
+
* is relinked, whichever build did it, so no follow-up builds it again.
|
|
739
|
+
*/
|
|
740
|
+
onMemberDelivered(uri) {
|
|
741
|
+
const key = uri.toString();
|
|
742
|
+
if (this.linkedMembers.has(key)) {
|
|
743
|
+
this.forgetMember(key);
|
|
744
|
+
this.pendingMemberRelink.delete(key);
|
|
745
|
+
this.pendingMemberResets.delete(key);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
/** Drop `key` from the relink bookkeeping. */
|
|
749
|
+
forgetMember(key) {
|
|
750
|
+
this.unrelinkedMembers.delete(key);
|
|
751
|
+
this.linkedMembers.delete(key);
|
|
752
|
+
}
|
|
753
|
+
/** Call each of `listeners` with `value`, each in isolation. */
|
|
754
|
+
notifyMemberRelink(listeners, value) {
|
|
755
|
+
for (const listener of [...listeners]) {
|
|
756
|
+
try {
|
|
757
|
+
listener(value);
|
|
758
|
+
}
|
|
759
|
+
catch (error) {
|
|
760
|
+
this.tracer.error(`A member relink listener failed: ${describeErrorWithStack(error)}`);
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
// ============================================================
|
|
452
765
|
// Queries
|
|
453
766
|
// ============================================================
|
|
454
767
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/abstract-project-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract-project-manager.js","sourceRoot":"","sources":["../../../src/langium/project/abstract-project-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,10 @@ import type { URI } from '@hydranium/langium';
|
|
|
27
27
|
* default cascade plumbing in `HydraniumWorkspaceManager` subscribes to
|
|
28
28
|
* this event and re-runs `DocumentBuilder.resetToState` for each entry,
|
|
29
29
|
* which the build of the update that changed the descriptor picks up.
|
|
30
|
+
* Empty when the project manager relinks them in a follow-up build of its
|
|
31
|
+
* own instead (`ProjectManagerOptions.deferMemberRelink`). That build
|
|
32
|
+
* emits an event of its own, with no project in it, carrying the members
|
|
33
|
+
* it resets.
|
|
30
34
|
* Consumers can subscribe independently for other reactions.
|
|
31
35
|
*/
|
|
32
36
|
export interface ProjectChangeEvent<TProject extends Project = Project> {
|
|
@@ -52,7 +56,8 @@ export interface ProjectChangeEvent<TProject extends Project = Project> {
|
|
|
52
56
|
* rebuild. Includes the changed projects' own member documents plus
|
|
53
57
|
* any transitive dependents according to the concrete
|
|
54
58
|
* `ProjectManager`'s visibility model (see
|
|
55
|
-
* `AbstractProjectManager.getAffectedProjects`).
|
|
59
|
+
* `AbstractProjectManager.getAffectedProjects`). In the event a deferred
|
|
60
|
+
* relink emits, the members it resets.
|
|
56
61
|
*
|
|
57
62
|
* Descriptor URIs themselves are intentionally excluded: they triggered
|
|
58
63
|
* this cycle and re-adding them would loop.
|
|
@@ -61,4 +66,18 @@ export interface ProjectChangeEvent<TProject extends Project = Project> {
|
|
|
61
66
|
}
|
|
62
67
|
/** Callback shape for `ProjectManager.onProjectsChanged`. */
|
|
63
68
|
export type ProjectChangeListener<TProject extends Project = Project> = (event: ProjectChangeEvent<TProject>) => void;
|
|
69
|
+
/** Callback shape for `ProjectManager.onMemberRelinkStarted`: the documents the follow-up build relinks. */
|
|
70
|
+
export type MemberRelinkStartedListener = (documents: readonly URI[]) => void;
|
|
71
|
+
/** What `ProjectManager.onMemberRelinkFinished` tells a listener. */
|
|
72
|
+
export interface MemberRelinkFinishedEvent {
|
|
73
|
+
/**
|
|
74
|
+
* `false` when the follow-up build was cancelled or failed. A cancelled
|
|
75
|
+
* one is queued again, and another started and finished pair follows only
|
|
76
|
+
* if members are left, since the cancelling write may build them all.
|
|
77
|
+
* Await `ProjectManager.memberRelinkSettled` to learn the relink is done.
|
|
78
|
+
*/
|
|
79
|
+
readonly completed: boolean;
|
|
80
|
+
}
|
|
81
|
+
/** Callback shape for `ProjectManager.onMemberRelinkFinished`. */
|
|
82
|
+
export type MemberRelinkFinishedListener = (event: MemberRelinkFinishedEvent) => void;
|
|
64
83
|
//# sourceMappingURL=project-change-event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-change-event.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-change-event.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"project-change-event.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-change-event.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IACnE,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAEtF;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS,GAAG,EAAE,CAAC;CAC7C;AAED,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AAEtH,4GAA4G;AAC5G,MAAM,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,IAAI,CAAC;AAE9E,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC9B;AAED,kEAAkE;AAClE,MAAM,MAAM,4BAA4B,GAAG,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC"}
|
|
@@ -10,7 +10,7 @@ import type { Project } from '@hydranium/protocol';
|
|
|
10
10
|
import type { AstNode, URI } from '@hydranium/langium';
|
|
11
11
|
import type { Disposable } from 'vscode-languageserver';
|
|
12
12
|
import type { WorkspaceFolder } from 'vscode-languageserver-types';
|
|
13
|
-
import type { ProjectChangeListener } from './project-change-event.js';
|
|
13
|
+
import type { MemberRelinkFinishedListener, MemberRelinkStartedListener, ProjectChangeListener } from './project-change-event.js';
|
|
14
14
|
/**
|
|
15
15
|
* Manages the **project tier** sitting between the LSP `WorkspaceFolder`
|
|
16
16
|
* (protocol-owned: URI + display name only) and `LangiumDocument`
|
|
@@ -82,6 +82,29 @@ export interface ProjectManager<TProject extends Project = Project> {
|
|
|
82
82
|
* Returns a `Disposable` that unregisters the listener.
|
|
83
83
|
*/
|
|
84
84
|
onProjectsChanged(listener: ProjectChangeListener<TProject>): Disposable;
|
|
85
|
+
/**
|
|
86
|
+
* Subscribe to the start of a follow-up build that relinks a changed
|
|
87
|
+
* project's members, with the documents it relinks. Fires only for a
|
|
88
|
+
* manager that defers that relink (`AbstractProjectManager` under its
|
|
89
|
+
* `deferMemberRelink` option), so an adopter forwards it to show progress.
|
|
90
|
+
*/
|
|
91
|
+
onMemberRelinkStarted(listener: MemberRelinkStartedListener): Disposable;
|
|
92
|
+
/** Subscribe to the end of each build {@link onMemberRelinkStarted} announced. */
|
|
93
|
+
onMemberRelinkFinished(listener: MemberRelinkFinishedListener): Disposable;
|
|
94
|
+
/**
|
|
95
|
+
* Resolves once no deferred member relink is pending, queued or building,
|
|
96
|
+
* including one queued while this waits. It covers only relinks already
|
|
97
|
+
* queued, so a test awaits the build of the change first. A test that
|
|
98
|
+
* drives a descriptor change awaits it, and so does a teardown, or the
|
|
99
|
+
* relink runs against a workspace already removed. Resolved at once by a
|
|
100
|
+
* manager that never defers.
|
|
101
|
+
*
|
|
102
|
+
* Never await it inside a workspace lock write or read, which includes a
|
|
103
|
+
* request handler that answers under a read: the relink needs a write,
|
|
104
|
+
* which waits for both. Nor in a listener of a build running outside the
|
|
105
|
+
* lock, since the relink waits for that build to end.
|
|
106
|
+
*/
|
|
107
|
+
memberRelinkSettled(): Promise<void>;
|
|
85
108
|
/**
|
|
86
109
|
* The {@link Project} owning the given document URI, or `undefined` if
|
|
87
110
|
* the URI does not belong to any project. Membership is determined by
|
|
@@ -118,7 +141,10 @@ export interface ProjectManager<TProject extends Project = Project> {
|
|
|
118
141
|
*
|
|
119
142
|
* Default behaviour in `AbstractProjectManager` is the **transitive
|
|
120
143
|
* closure** of {@link Project.dependencies}, including the project
|
|
121
|
-
* itself
|
|
144
|
+
* itself, or only the dependencies it names under its `visibility: 'direct'`
|
|
145
|
+
* option, which narrows visibility only: a change still rebuilds every
|
|
146
|
+
* transitive dependent. An adopter can override to use a different
|
|
147
|
+
* visibility model.
|
|
122
148
|
*
|
|
123
149
|
* `SingleProjectManager` returns `[id]` for its synthetic workspace
|
|
124
150
|
* project, which combined with "synthetic project owns every URI"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IAK/D;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;;;;OAOG;IACH,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAEzE;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,UAAU,CAAC;IAEzE,kFAAkF;IAClF,sBAAsB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,UAAU,CAAC;IAE3E;;;;;;;;;;;;OAYG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAMrC;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEpD;;;;;;;OAOG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEvD,mDAAmD;IACnD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEjD,0DAA0D;IAC1D,WAAW,IAAI,SAAS,QAAQ,EAAE,CAAC;IAEnC;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;IAElD;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAEzD;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAM5F;;;;;;;;;;;;;;;OAeG;IACH,eAAe,IAAI,OAAO,CAAC;IAE3B;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;IAEhD;;;;;;;;;;;;;;OAcG;IACH,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5D"}
|
|
@@ -11,7 +11,7 @@ import { type AstNode, type LangiumDocuments, type URI } from '@hydranium/langiu
|
|
|
11
11
|
import { Disposable } from 'vscode-languageserver';
|
|
12
12
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
13
13
|
import { type ServerSharedServicesMinimal } from '../shared-services.js';
|
|
14
|
-
import type { ProjectChangeListener } from './project-change-event.js';
|
|
14
|
+
import type { MemberRelinkFinishedListener, MemberRelinkStartedListener, ProjectChangeListener } from './project-change-event.js';
|
|
15
15
|
import type { ProjectManager } from './project-manager.js';
|
|
16
16
|
/**
|
|
17
17
|
* Framework default {@link ProjectManager}. Exposes a single synthetic
|
|
@@ -44,6 +44,12 @@ export declare class SingleProjectManager implements ProjectManager {
|
|
|
44
44
|
discoverProjects(): Promise<void>;
|
|
45
45
|
/** Never fires — `SingleProjectManager` exposes a fixed registry. The returned disposable is a safe no-op. */
|
|
46
46
|
onProjectsChanged(_listener: ProjectChangeListener): Disposable;
|
|
47
|
+
/** Never fires: a fixed registry has no member relink to defer. */
|
|
48
|
+
onMemberRelinkStarted(_listener: MemberRelinkStartedListener): Disposable;
|
|
49
|
+
/** Never fires, as {@link onMemberRelinkStarted} does not. */
|
|
50
|
+
onMemberRelinkFinished(_listener: MemberRelinkFinishedListener): Disposable;
|
|
51
|
+
/** Resolved at once: nothing is ever deferred. */
|
|
52
|
+
memberRelinkSettled(): Promise<void>;
|
|
47
53
|
isProjectDescriptor(_uri: URI | string): boolean;
|
|
48
54
|
/** Always `true` — single-project by definition. */
|
|
49
55
|
isSingleProject(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"single-project-manager.d.ts","sourceRoot":"","sources":["../../../src/langium/project/single-project-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAkBrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B;IAjB3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,gBAAgB;IAEpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAGjC;IACF,QAAQ,CAAC,KAAK,gBAAqB;IAEnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,YACsB,QAAQ,EAAE,2BAA2B,EACxD,OAAO,GAAE,cAAmB,EAI9B;IAED,mDAAmD;IAC7C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtC;IAED,8GAA8G;IAC9G,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,UAAU,CAE9D;IAED,mEAAmE;IACnE,qBAAqB,CAAC,SAAS,EAAE,2BAA2B,GAAG,UAAU,CAExE;IAED,8DAA8D;IAC9D,sBAAsB,CAAC,SAAS,EAAE,4BAA4B,GAAG,UAAU,CAE1E;IAED,kDAAkD;IAClD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnC;IAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAE/C;IAED,oDAAoD;IACpD,eAAe,IAAI,OAAO,CAEzB;IAED;;;;OAIG;IACH,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAEzD;IAED,4DAA4D;IAC5D,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAElD;IAED,6DAA6D;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAErD;IAED,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE9C;IAED,WAAW,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED,oFAAoF;IACpF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CAKhD;IAED,mGAAmG;IACnG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEvD;IAED,2FAA2F;IAC3F,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAQxF;CACH"}
|