@contember/bindx 0.1.46 → 0.1.48
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/dist/adapter/MockAdapter.d.ts +4 -1
- package/dist/adapter/MockAdapter.d.ts.map +1 -1
- package/dist/core/ActionDispatcher.d.ts +4 -1
- package/dist/core/ActionDispatcher.d.ts.map +1 -1
- package/dist/core/actions.d.ts +7 -1
- package/dist/core/actions.d.ts.map +1 -1
- package/dist/events/EventEmitter.d.ts +13 -1
- package/dist/events/EventEmitter.d.ts.map +1 -1
- package/dist/handles/BaseHandle.d.ts +14 -3
- package/dist/handles/BaseHandle.d.ts.map +1 -1
- package/dist/handles/EntityHandle.d.ts +14 -5
- package/dist/handles/EntityHandle.d.ts.map +1 -1
- package/dist/handles/FieldHandle.d.ts +11 -4
- package/dist/handles/FieldHandle.d.ts.map +1 -1
- package/dist/handles/HasManyListHandle.d.ts +36 -2
- package/dist/handles/HasManyListHandle.d.ts.map +1 -1
- package/dist/handles/HasOneHandle.d.ts +52 -9
- package/dist/handles/HasOneHandle.d.ts.map +1 -1
- package/dist/handles/PlaceholderHandle.d.ts +25 -13
- package/dist/handles/PlaceholderHandle.d.ts.map +1 -1
- package/dist/handles/index.d.ts +1 -1
- package/dist/handles/index.d.ts.map +1 -1
- package/dist/handles/proxyFactory.d.ts +7 -1
- package/dist/handles/proxyFactory.d.ts.map +1 -1
- package/dist/handles/types.d.ts +33 -0
- package/dist/handles/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/persistence/BatchPersister.d.ts +53 -37
- package/dist/persistence/BatchPersister.d.ts.map +1 -1
- package/dist/persistence/ChangeRegistry.d.ts +15 -0
- package/dist/persistence/ChangeRegistry.d.ts.map +1 -1
- package/dist/persistence/MutationCollector.d.ts +106 -3
- package/dist/persistence/MutationCollector.d.ts.map +1 -1
- package/dist/persistence/PersistExecution.d.ts +26 -0
- package/dist/persistence/PersistExecution.d.ts.map +1 -0
- package/dist/persistence/types.d.ts +8 -2
- package/dist/persistence/types.d.ts.map +1 -1
- package/dist/store/EntityMetaStore.d.ts +32 -10
- package/dist/store/EntityMetaStore.d.ts.map +1 -1
- package/dist/store/EntitySnapshotStore.d.ts +50 -3
- package/dist/store/EntitySnapshotStore.d.ts.map +1 -1
- package/dist/store/ErrorStore.d.ts +3 -2
- package/dist/store/ErrorStore.d.ts.map +1 -1
- package/dist/store/HasManyStore.d.ts +214 -0
- package/dist/store/HasManyStore.d.ts.map +1 -0
- package/dist/store/HasOneStore.d.ts +159 -0
- package/dist/store/HasOneStore.d.ts.map +1 -0
- package/dist/store/ReachabilityAnalyzer.d.ts +19 -0
- package/dist/store/ReachabilityAnalyzer.d.ts.map +1 -1
- package/dist/store/RekeyOrchestrator.d.ts +76 -0
- package/dist/store/RekeyOrchestrator.d.ts.map +1 -0
- package/dist/store/RelationEdgeIndex.d.ts +34 -0
- package/dist/store/RelationEdgeIndex.d.ts.map +1 -0
- package/dist/store/RelationStore.d.ts +74 -137
- package/dist/store/RelationStore.d.ts.map +1 -1
- package/dist/store/RootRegistry.d.ts +25 -4
- package/dist/store/RootRegistry.d.ts.map +1 -1
- package/dist/store/SnapshotStore.d.ts +137 -13
- package/dist/store/SnapshotStore.d.ts.map +1 -1
- package/dist/store/SubscriptionManager.d.ts +63 -14
- package/dist/store/SubscriptionManager.d.ts.map +1 -1
- package/dist/store/TouchedStore.d.ts +3 -2
- package/dist/store/TouchedStore.d.ts.map +1 -1
- package/dist/store/relationKey.d.ts +15 -0
- package/dist/store/relationKey.d.ts.map +1 -0
- package/dist/undo/UndoJournal.d.ts +133 -0
- package/dist/undo/UndoJournal.d.ts.map +1 -0
- package/dist/undo/UndoManager.d.ts +25 -82
- package/dist/undo/UndoManager.d.ts.map +1 -1
- package/dist/undo/UnrecordedWriteError.d.ts +16 -0
- package/dist/undo/UnrecordedWriteError.d.ts.map +1 -0
- package/dist/undo/index.d.ts +3 -1
- package/dist/undo/index.d.ts.map +1 -1
- package/dist/undo/rekeyJournalEntry.d.ts +20 -0
- package/dist/undo/rekeyJournalEntry.d.ts.map +1 -0
- package/dist/undo/types.d.ts +0 -48
- package/dist/undo/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/adapter/MockAdapter.ts +15 -5
- package/src/core/ActionDispatcher.ts +56 -36
- package/src/core/actions.ts +8 -1
- package/src/events/EventEmitter.ts +78 -24
- package/src/handles/BaseHandle.ts +19 -2
- package/src/handles/EntityHandle.ts +48 -17
- package/src/handles/FieldHandle.ts +36 -10
- package/src/handles/HasManyListHandle.ts +120 -16
- package/src/handles/HasOneHandle.ts +177 -44
- package/src/handles/PlaceholderHandle.ts +184 -36
- package/src/handles/index.ts +3 -0
- package/src/handles/proxyFactory.ts +27 -0
- package/src/handles/types.ts +39 -0
- package/src/index.ts +4 -4
- package/src/persistence/BatchPersister.ts +810 -446
- package/src/persistence/ChangeRegistry.ts +27 -3
- package/src/persistence/MutationCollector.ts +265 -31
- package/src/persistence/PersistExecution.ts +217 -0
- package/src/persistence/types.ts +8 -2
- package/src/store/EntityMetaStore.ts +89 -45
- package/src/store/EntitySnapshotStore.ts +102 -19
- package/src/store/ErrorStore.ts +6 -5
- package/src/store/HasManyStore.ts +810 -0
- package/src/store/HasOneStore.ts +454 -0
- package/src/store/ReachabilityAnalyzer.ts +37 -0
- package/src/store/RekeyOrchestrator.ts +123 -0
- package/src/store/RelationEdgeIndex.ts +79 -0
- package/src/store/RelationStore.ts +176 -725
- package/src/store/RootRegistry.ts +50 -8
- package/src/store/SnapshotStore.ts +572 -101
- package/src/store/SubscriptionManager.ts +122 -75
- package/src/store/TouchedStore.ts +5 -2
- package/src/store/relationKey.ts +20 -0
- package/src/undo/UndoJournal.ts +258 -0
- package/src/undo/UndoManager.ts +151 -281
- package/src/undo/UnrecordedWriteError.ts +23 -0
- package/src/undo/index.ts +8 -7
- package/src/undo/rekeyJournalEntry.ts +145 -0
- package/src/undo/types.ts +0 -58
- package/dist/core/actionClassification.d.ts +0 -48
- package/dist/core/actionClassification.d.ts.map +0 -1
- package/src/core/actionClassification.ts +0 -199
|
@@ -14,6 +14,67 @@ export interface EntityMutationResult {
|
|
|
14
14
|
/** The mutation data (for create/update) */
|
|
15
15
|
data?: Record<string, unknown>;
|
|
16
16
|
}
|
|
17
|
+
export interface CollectedNestedEntity {
|
|
18
|
+
readonly entityType: string;
|
|
19
|
+
readonly entityId: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CollectedHasOneChange {
|
|
22
|
+
readonly entityType: string;
|
|
23
|
+
readonly entityId: string;
|
|
24
|
+
readonly fieldName: string;
|
|
25
|
+
readonly transition: {
|
|
26
|
+
readonly operation: 'connect';
|
|
27
|
+
readonly targetId: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly operation: 'create';
|
|
30
|
+
readonly targetId: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly operation: 'disconnect';
|
|
33
|
+
readonly targetId: string;
|
|
34
|
+
} | {
|
|
35
|
+
readonly operation: 'delete';
|
|
36
|
+
readonly targetId: string;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface CollectedHasManyChange {
|
|
40
|
+
readonly entityType: string;
|
|
41
|
+
readonly entityId: string;
|
|
42
|
+
readonly fieldName: string;
|
|
43
|
+
readonly additions: readonly {
|
|
44
|
+
readonly itemId: string;
|
|
45
|
+
readonly kind: 'created' | 'connected';
|
|
46
|
+
}[];
|
|
47
|
+
readonly removals: readonly {
|
|
48
|
+
readonly itemId: string;
|
|
49
|
+
readonly type: 'delete' | 'disconnect';
|
|
50
|
+
}[];
|
|
51
|
+
}
|
|
52
|
+
export interface CollectedRelationField {
|
|
53
|
+
readonly entityType: string;
|
|
54
|
+
readonly entityId: string;
|
|
55
|
+
readonly fieldName: string;
|
|
56
|
+
readonly relationType: 'hasOne' | 'hasMany';
|
|
57
|
+
readonly targetEntityType: string;
|
|
58
|
+
}
|
|
59
|
+
export interface CollectedNestedCreate {
|
|
60
|
+
readonly parentEntityType: string;
|
|
61
|
+
readonly parentEntityId: string;
|
|
62
|
+
readonly fieldName: string;
|
|
63
|
+
readonly relationType: 'hasOne' | 'hasMany';
|
|
64
|
+
readonly entityType: string;
|
|
65
|
+
readonly entityId: string;
|
|
66
|
+
readonly createData: Readonly<Record<string, unknown>>;
|
|
67
|
+
readonly knownServerIds: readonly string[];
|
|
68
|
+
}
|
|
69
|
+
export interface CollectedNestedUpdate {
|
|
70
|
+
readonly parentEntityType: string;
|
|
71
|
+
readonly parentEntityId: string;
|
|
72
|
+
readonly fieldName: string;
|
|
73
|
+
readonly relationType: 'hasOne' | 'hasMany';
|
|
74
|
+
readonly entityType: string;
|
|
75
|
+
readonly entityId: string;
|
|
76
|
+
readonly data: Readonly<Record<string, unknown>>;
|
|
77
|
+
}
|
|
17
78
|
/**
|
|
18
79
|
* MutationCollector builds Contember-compatible mutation input
|
|
19
80
|
* by collecting changes from SnapshotStore including:
|
|
@@ -28,17 +89,43 @@ export interface EntityMutationResult {
|
|
|
28
89
|
export declare class MutationCollector implements MutationDataCollector {
|
|
29
90
|
private readonly store;
|
|
30
91
|
private readonly schemaProvider;
|
|
92
|
+
/** Entities with their own top-level mutation; only their nested update is skipped. */
|
|
31
93
|
private excludedEntityIds;
|
|
94
|
+
/** Entities vetoed by an `entity:persisting` interceptor; nothing is emitted for them. */
|
|
95
|
+
private vetoedEntityIds;
|
|
96
|
+
/**
|
|
97
|
+
* Relation items whose op was dropped because the item is vetoed, keyed by relation
|
|
98
|
+
* key (`Type:id:field`). The commit step leaves exactly these pending, so the planned
|
|
99
|
+
* create/delete is sent once the veto is lifted instead of being committed unsent.
|
|
100
|
+
*/
|
|
101
|
+
private readonly _suppressedRelationItems;
|
|
32
102
|
private readonly _nestedEntityIds;
|
|
33
103
|
/** Maps nested entity temp IDs to their entity types for post-persist processing */
|
|
34
104
|
private readonly _nestedEntityTypes;
|
|
105
|
+
private readonly _nestedEntities;
|
|
106
|
+
private readonly _hasOneChanges;
|
|
107
|
+
private readonly _hasManyChanges;
|
|
108
|
+
private readonly _relationFields;
|
|
109
|
+
private readonly _nestedCreates;
|
|
110
|
+
private readonly _nestedUpdates;
|
|
35
111
|
constructor(store: SnapshotStore, schemaProvider: MutationSchemaProvider);
|
|
112
|
+
/** Creates an isolated collection session for one persist operation. */
|
|
113
|
+
forkSession(): MutationCollector;
|
|
114
|
+
private entityKey;
|
|
36
115
|
/**
|
|
37
|
-
* Sets entity IDs that
|
|
38
|
-
*
|
|
39
|
-
*
|
|
116
|
+
* Sets entity IDs that get their own top-level mutation, so their nested
|
|
117
|
+
* update is skipped to avoid duplicate changes. Relation operations that only
|
|
118
|
+
* exist on the parent (delete, disconnect) are still emitted for them.
|
|
40
119
|
*/
|
|
41
120
|
setExcludedEntities(ids: ReadonlySet<string>): void;
|
|
121
|
+
setExcludedEntityKeys(keys: ReadonlySet<string>): void;
|
|
122
|
+
/**
|
|
123
|
+
* Sets entity IDs vetoed by an `entity:persisting` interceptor. Unlike excluded
|
|
124
|
+
* entities they have no top-level mutation either, so every nested operation
|
|
125
|
+
* that would write them — create, update or delete — is dropped.
|
|
126
|
+
*/
|
|
127
|
+
setVetoedEntities(ids: ReadonlySet<string>): void;
|
|
128
|
+
setVetoedEntityKeys(keys: ReadonlySet<string>): void;
|
|
42
129
|
/**
|
|
43
130
|
* Returns IDs of entities that were included as nested inline creates
|
|
44
131
|
* inside another entity's mutation data. These entities don't need
|
|
@@ -50,6 +137,22 @@ export declare class MutationCollector implements MutationDataCollector {
|
|
|
50
137
|
* Used by BatchPersister to commit and map IDs for nested entities after persist.
|
|
51
138
|
*/
|
|
52
139
|
getNestedEntityTypes(): ReadonlyMap<string, string>;
|
|
140
|
+
getNestedEntities(): readonly CollectedNestedEntity[];
|
|
141
|
+
getCollectedHasOneChanges(): readonly CollectedHasOneChange[];
|
|
142
|
+
getCollectedHasManyChanges(): readonly CollectedHasManyChange[];
|
|
143
|
+
getCollectedRelationFields(): readonly CollectedRelationField[];
|
|
144
|
+
getCollectedNestedCreates(): readonly CollectedNestedCreate[];
|
|
145
|
+
getCollectedNestedUpdates(): readonly CollectedNestedUpdate[];
|
|
146
|
+
private recordRelationField;
|
|
147
|
+
private registerNestedEntity;
|
|
148
|
+
private isExcluded;
|
|
149
|
+
private isVetoed;
|
|
150
|
+
/**
|
|
151
|
+
* Returns relation items (by relation key) whose planned op was not emitted because
|
|
152
|
+
* the item is vetoed. BatchPersister keeps these pending when it commits relations.
|
|
153
|
+
*/
|
|
154
|
+
getSuppressedRelationItems(): ReadonlyMap<string, ReadonlySet<string>>;
|
|
155
|
+
private suppressRelationItem;
|
|
53
156
|
/**
|
|
54
157
|
* Collects all changes for an entity into appropriate mutation format.
|
|
55
158
|
* Returns the mutation result or null if no changes/entity doesn't exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationCollector.d.ts","sourceRoot":"","sources":["../../src/persistence/MutationCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,2BAA2B,CAAA;AAEvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,kDAAkD;IAClD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,qBAAqB;
|
|
1
|
+
{"version":3,"file":"MutationCollector.d.ts","sourceRoot":"","sources":["../../src/persistence/MutationCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DirtyEntity } from './ChangeRegistry.js';
|
|
2
|
+
import type { CollectedHasManyChange, CollectedHasOneChange, CollectedNestedCreate, CollectedNestedEntity, CollectedNestedUpdate, CollectedRelationField } from './MutationCollector.js';
|
|
3
|
+
import type { PersistScope, TransactionMutation } from './types.js';
|
|
4
|
+
import type { SnapshotStore } from '../store/SnapshotStore.js';
|
|
5
|
+
export interface ExecutionEntity {
|
|
6
|
+
readonly entityType: string;
|
|
7
|
+
readonly entityId: string;
|
|
8
|
+
readonly operation: 'create' | 'update' | 'delete';
|
|
9
|
+
readonly scalarData: Readonly<Record<string, unknown>>;
|
|
10
|
+
readonly nested: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface PersistExecution {
|
|
13
|
+
readonly mutations: readonly TransactionMutation[];
|
|
14
|
+
readonly entities: readonly ExecutionEntity[];
|
|
15
|
+
readonly hasOneChanges: readonly CollectedHasOneChange[];
|
|
16
|
+
readonly hasManyChanges: readonly CollectedHasManyChange[];
|
|
17
|
+
readonly vetoed: readonly DirtyEntity[];
|
|
18
|
+
readonly nestedEntities: readonly CollectedNestedEntity[];
|
|
19
|
+
readonly relationFields: readonly CollectedRelationField[];
|
|
20
|
+
readonly nestedCreates: readonly CollectedNestedCreate[];
|
|
21
|
+
readonly nestedUpdates: readonly CollectedNestedUpdate[];
|
|
22
|
+
readonly suppressedRelationItems: ReadonlyMap<string, ReadonlySet<string>>;
|
|
23
|
+
}
|
|
24
|
+
export declare function entityIdentityKey(entityType: string, entityId: string): string;
|
|
25
|
+
export declare function createPersistExecution(store: SnapshotStore, mutations: readonly TransactionMutation[], entities: readonly DirtyEntity[], nestedEntities: readonly CollectedNestedEntity[], relationFieldMetadata: readonly CollectedRelationField[], nestedCreateMetadata: readonly CollectedNestedCreate[], nestedUpdateMetadata: readonly CollectedNestedUpdate[], hasOneChanges: readonly CollectedHasOneChange[], hasManyChanges: readonly CollectedHasManyChange[], vetoed: readonly DirtyEntity[], suppressedRelationItems: ReadonlyMap<string, ReadonlySet<string>>, scope: PersistScope): PersistExecution;
|
|
26
|
+
//# sourceMappingURL=PersistExecution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistExecution.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistExecution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EACX,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAClD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAA;IAC7C,QAAQ,CAAC,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACzD,QAAQ,CAAC,cAAc,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAC1D,QAAQ,CAAC,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACxD,QAAQ,CAAC,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACxD,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,mBAAmB,EAAE,EACzC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,cAAc,EAAE,SAAS,qBAAqB,EAAE,EAChD,qBAAqB,EAAE,SAAS,sBAAsB,EAAE,EACxD,oBAAoB,EAAE,SAAS,qBAAqB,EAAE,EACtD,oBAAoB,EAAE,SAAS,qBAAqB,EAAE,EACtD,aAAa,EAAE,SAAS,qBAAqB,EAAE,EAC/C,cAAc,EAAE,SAAS,sBAAsB,EAAE,EACjD,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EACjE,KAAK,EAAE,YAAY,GACjB,gBAAgB,CAwHlB"}
|
|
@@ -81,6 +81,12 @@ export interface EntityPersistResult {
|
|
|
81
81
|
readonly entityId: string;
|
|
82
82
|
readonly operation: 'create' | 'update' | 'delete';
|
|
83
83
|
readonly success: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* The entity was deliberately not sent (vetoed by an `entity:persisting`
|
|
86
|
+
* interceptor). `success` is false, but it counts towards `skippedCount`,
|
|
87
|
+
* not `failedCount`.
|
|
88
|
+
*/
|
|
89
|
+
readonly skipped?: true;
|
|
84
90
|
readonly error?: PersistError;
|
|
85
91
|
readonly fieldResults?: readonly FieldPersistResult[];
|
|
86
92
|
/** Server-assigned ID for creates (when tempId was used) */
|
|
@@ -103,9 +109,9 @@ export interface PersistenceResult {
|
|
|
103
109
|
readonly results: readonly EntityPersistResult[];
|
|
104
110
|
/** Number of successfully persisted entities */
|
|
105
111
|
readonly successCount: number;
|
|
106
|
-
/** Number of
|
|
112
|
+
/** Number of entities the server rejected — results with `success: false` and no `skipped` flag */
|
|
107
113
|
readonly failedCount: number;
|
|
108
|
-
/** Number of entities
|
|
114
|
+
/** Number of entities not sent: already in-flight, or vetoed by an interceptor (listed in `results` with `skipped`) */
|
|
109
115
|
readonly skippedCount: number;
|
|
110
116
|
}
|
|
111
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { LoadStatus } from './snapshots.js';
|
|
2
2
|
import type { FieldError } from '../errors/types.js';
|
|
3
|
+
import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js';
|
|
3
4
|
/**
|
|
4
5
|
* Entity load state tracking.
|
|
5
6
|
*/
|
|
@@ -22,15 +23,36 @@ export interface EntityMeta {
|
|
|
22
23
|
* Keys are pre-computed composite strings (e.g., "entityType:id").
|
|
23
24
|
* Follows the same pattern as ErrorStore and RelationStore.
|
|
24
25
|
*/
|
|
25
|
-
export declare class EntityMetaStore {
|
|
26
|
+
export declare class EntityMetaStore implements Rekeyable {
|
|
26
27
|
/** Load states keyed by "entityType:id" */
|
|
27
28
|
private readonly loadStates;
|
|
28
29
|
/** Entity metadata keyed by "entityType:id" */
|
|
29
30
|
private readonly entityMetas;
|
|
30
31
|
/** Persisting status keyed by "entityType:id" */
|
|
31
32
|
private readonly persistingEntities;
|
|
32
|
-
/**
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Entities whose in-flight persist is pessimistic, keyed by "entityType:id".
|
|
35
|
+
* A subset of {@link persistingEntities}. While present, the entity is
|
|
36
|
+
* presented at its server baseline (see SnapshotStore.getPresentationSnapshot)
|
|
37
|
+
* even though its canonical data stays dirty.
|
|
38
|
+
*/
|
|
39
|
+
private readonly pessimisticInFlight;
|
|
40
|
+
/**
|
|
41
|
+
* Monotonic counter bumped when reachability-relevant metadata changes —
|
|
42
|
+
* `existsOnServer` and `isPersisting` (which seed the reachability roots) plus
|
|
43
|
+
* entity removal/rekey. Load state and deletion scheduling do NOT bump it.
|
|
44
|
+
* Used by {@link ReachabilityAnalyzer} to memoize its walk.
|
|
45
|
+
*/
|
|
46
|
+
private mutationVersion;
|
|
47
|
+
/**
|
|
48
|
+
* Monotonic counter bumped on EDITABLE-layer meta writes — deletion scheduling,
|
|
49
|
+
* the one undoable gesture this store owns. Server-baseline (`setExistsOnServer`),
|
|
50
|
+
* load/persist state, removal, rekey, import and clear deliberately do NOT bump
|
|
51
|
+
* it. Read by the undo write-guard (see UndoJournal).
|
|
52
|
+
*/
|
|
53
|
+
private editableWriteVersion;
|
|
54
|
+
getMutationVersion(): number;
|
|
55
|
+
getEditableWriteVersion(): number;
|
|
34
56
|
getLoadState(key: string): EntityLoadState | undefined;
|
|
35
57
|
setLoadState(key: string, status: LoadStatus, error?: FieldError): void;
|
|
36
58
|
clearLoadState(key: string): void;
|
|
@@ -41,18 +63,18 @@ export declare class EntityMetaStore {
|
|
|
41
63
|
unscheduleForDeletion(key: string): void;
|
|
42
64
|
isScheduledForDeletion(key: string): boolean;
|
|
43
65
|
isPersisting(key: string): boolean;
|
|
44
|
-
setPersisting(key: string, isPersisting: boolean): void;
|
|
45
|
-
|
|
46
|
-
getPersistedId(key: string, id: string): string | null;
|
|
47
|
-
isNewEntity(key: string, id: string): boolean;
|
|
66
|
+
setPersisting(key: string, isPersisting: boolean, pessimistic?: boolean): void;
|
|
67
|
+
isPessimisticInFlight(key: string): boolean;
|
|
48
68
|
/**
|
|
49
|
-
* Removes all metadata for an entity (load state, meta, persisting
|
|
69
|
+
* Removes all metadata for an entity (load state, meta, persisting).
|
|
50
70
|
*/
|
|
51
71
|
remove(key: string): void;
|
|
52
72
|
/**
|
|
53
|
-
* Moves all metadata from
|
|
73
|
+
* Moves all metadata from the temp key to the persisted key. The entity has
|
|
74
|
+
* just been confirmed by the server, so it is also marked as existing there
|
|
75
|
+
* (this replaces the former separate mapTempIdToPersistedId step).
|
|
54
76
|
*/
|
|
55
|
-
rekey(
|
|
77
|
+
rekey(ctx: RekeyContext): void;
|
|
56
78
|
exportMetas(keys: string[]): Map<string, EntityMeta>;
|
|
57
79
|
importMetas(metas: Map<string, EntityMeta>): void;
|
|
58
80
|
clear(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMetaStore.d.ts","sourceRoot":"","sources":["../../src/store/EntityMetaStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntityMetaStore.d.ts","sourceRoot":"","sources":["../../src/store/EntityMetaStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,UAAU,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,8CAA8C;IAC9C,cAAc,EAAE,OAAO,CAAA;IACvB,mDAAmD;IACnD,sBAAsB,EAAE,OAAO,CAAA;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAChD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAEhE,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAE5D,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IAEvD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoB;IAExD;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAAI;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB,CAAI;IAEhC,kBAAkB,IAAI,MAAM;IAI5B,uBAAuB,IAAI,MAAM;IAMjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAItD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAIvE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIlD,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAY7D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIpC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMtC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMxC,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAM5C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAqBrF,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IA6B9B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAWpD,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI;IASjD,KAAK,IAAI,IAAI;CAOb"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type EntitySnapshot } from './snapshots.js';
|
|
2
|
+
import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js';
|
|
2
3
|
/**
|
|
3
4
|
* Manages entity snapshots — core CRUD for immutable entity data.
|
|
4
5
|
*
|
|
@@ -8,7 +9,7 @@ import { type EntitySnapshot } from './snapshots.js';
|
|
|
8
9
|
* Follows the same sub-store pattern as ErrorStore, RelationStore, etc.
|
|
9
10
|
* SnapshotStore delegates entity snapshot operations here.
|
|
10
11
|
*/
|
|
11
|
-
export declare class EntitySnapshotStore {
|
|
12
|
+
export declare class EntitySnapshotStore implements Rekeyable {
|
|
12
13
|
private readonly snapshots;
|
|
13
14
|
/**
|
|
14
15
|
* Index from entity id to its composite key, so reachability walks can resolve
|
|
@@ -17,6 +18,46 @@ export declare class EntitySnapshotStore {
|
|
|
17
18
|
* single key per id is unambiguous.
|
|
18
19
|
*/
|
|
19
20
|
private readonly idIndex;
|
|
21
|
+
/**
|
|
22
|
+
* Monotonic counter bumped only when the set of keys or the id→key index
|
|
23
|
+
* changes (new key, removal, rekey, bulk import, clear). Pure value edits
|
|
24
|
+
* (setFieldValue/updateFields/commit/reset/...) do NOT bump it — they cannot
|
|
25
|
+
* change reachability — so the per-keystroke edit path keeps the
|
|
26
|
+
* {@link ReachabilityAnalyzer} cache warm.
|
|
27
|
+
*/
|
|
28
|
+
private mutationVersion;
|
|
29
|
+
/**
|
|
30
|
+
* Monotonic counter bumped on every EDITABLE-layer snapshot write (local
|
|
31
|
+
* setData / updateFields / setFieldValue / reset) — the writes an undo gesture
|
|
32
|
+
* must first record. Server-baseline writes (server setData, refreshServerData,
|
|
33
|
+
* commit, commitFields) and non-write bookkeeping (remove, bumpVersion, import,
|
|
34
|
+
* rekey, clear) deliberately do NOT bump it. Read by the undo write-guard to
|
|
35
|
+
* detect a mutating path that wrote without recording. See UndoJournal.
|
|
36
|
+
*/
|
|
37
|
+
private editableWriteVersion;
|
|
38
|
+
/**
|
|
39
|
+
* Monotonic counter bumped on every write that can change a snapshot's `data`
|
|
40
|
+
* or `serverData` — i.e. every write that can change whether the entity is
|
|
41
|
+
* dirty. Unlike the two counters above it spans BOTH layers: `mutationVersion`
|
|
42
|
+
* ignores value edits and `editableWriteVersion` ignores server-baseline writes
|
|
43
|
+
* (refreshServerData/commit/commitFields), so neither alone is a sound dirty
|
|
44
|
+
* key. {@link bumpVersion} is excluded — it rewrites neither side. Read by
|
|
45
|
+
* SnapshotStore.getDirtyVersion() to memoize the full-store dirty scan.
|
|
46
|
+
*/
|
|
47
|
+
private dataWriteVersion;
|
|
48
|
+
getMutationVersion(): number;
|
|
49
|
+
getEditableWriteVersion(): number;
|
|
50
|
+
getDataWriteVersion(): number;
|
|
51
|
+
/**
|
|
52
|
+
* The single write chokepoint. Every path that installs a snapshot goes through
|
|
53
|
+
* here, so {@link dataWriteVersion} cannot be forgotten by a new mutating method
|
|
54
|
+
* or a new early-return branch — a stale dirty memo is silent (dead Save button),
|
|
55
|
+
* so the bump must not be hand-maintained per call site. Mirrors
|
|
56
|
+
* HasOneStore.writeRelation / HasManyStore.writeHasMany.
|
|
57
|
+
*/
|
|
58
|
+
private writeSnapshot;
|
|
59
|
+
/** The single delete chokepoint — counterpart of {@link writeSnapshot}. */
|
|
60
|
+
private deleteSnapshot;
|
|
20
61
|
get(key: string): EntitySnapshot | undefined;
|
|
21
62
|
has(key: string): boolean;
|
|
22
63
|
/**
|
|
@@ -62,6 +103,11 @@ export declare class EntitySnapshotStore {
|
|
|
62
103
|
/**
|
|
63
104
|
* Bumps the version of an entity snapshot without changing data.
|
|
64
105
|
* Used by SubscriptionManager when child entities change.
|
|
106
|
+
*
|
|
107
|
+
* The ONE deliberate bypass of {@link writeSnapshot}: it reinstalls the very same
|
|
108
|
+
* `data` and `serverData` references under a new version, so it cannot change
|
|
109
|
+
* dirtiness and must not invalidate the dirty memo — it runs once per ancestor on
|
|
110
|
+
* every notification, which would keep the cache permanently cold.
|
|
65
111
|
*/
|
|
66
112
|
bumpVersion(key: string): void;
|
|
67
113
|
/**
|
|
@@ -78,9 +124,10 @@ export declare class EntitySnapshotStore {
|
|
|
78
124
|
*/
|
|
79
125
|
importSnapshots(snapshots: Map<string, EntitySnapshot>): Set<string>;
|
|
80
126
|
/**
|
|
81
|
-
* Moves a snapshot from
|
|
127
|
+
* Moves a snapshot from the temp key to the persisted key, updating the id in
|
|
128
|
+
* the snapshot data.
|
|
82
129
|
*/
|
|
83
|
-
rekey(
|
|
130
|
+
rekey(ctx: RekeyContext): void;
|
|
84
131
|
keys(): IterableIterator<string>;
|
|
85
132
|
/**
|
|
86
133
|
* Resolves an entity id (without its type) to its composite key in O(1).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySnapshotStore.d.ts","sourceRoot":"","sources":["../../src/store/EntitySnapshotStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"EntitySnapshotStore.d.ts","sourceRoot":"","sources":["../../src/store/EntitySnapshotStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAErE;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAE9D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD;;;;;;OAMG;IACH,OAAO,CAAC,eAAe,CAAI;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB,CAAI;IAEhC;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB,CAAI;IAE5B,kBAAkB,IAAI,MAAM;IAI5B,uBAAuB,IAAI,MAAM;IAIjC,mBAAmB,IAAI,MAAM;IAI7B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAKrB,2EAA2E;IAC3E,OAAO,CAAC,cAAc;IAMtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,EACP,YAAY,EAAE,OAAO,GACnB,cAAc,CAAC,CAAC,CAAC;IA6BpB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACjC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GACL,cAAc,CAAC,CAAC,CAAC;IAiCpB;;;OAGG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAkBhC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAkBxE;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAezB;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAgBxB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAczB;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAe9B;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAyBrD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAW5D;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAWpE;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAuB9B,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIhC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC,KAAK,IAAI,IAAI;CAQb"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FieldError } from '../errors/types.js';
|
|
2
|
+
import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js';
|
|
2
3
|
/**
|
|
3
4
|
* Manages error state for fields, entities, and relations.
|
|
4
5
|
*
|
|
@@ -7,7 +8,7 @@ import type { FieldError } from '../errors/types.js';
|
|
|
7
8
|
* - Entity errors: "entityType:id"
|
|
8
9
|
* - Relation errors: "entityType:id:relationName"
|
|
9
10
|
*/
|
|
10
|
-
export declare class ErrorStore {
|
|
11
|
+
export declare class ErrorStore implements Rekeyable {
|
|
11
12
|
/** Field errors keyed by "entityType:id:fieldName" */
|
|
12
13
|
private readonly fieldErrors;
|
|
13
14
|
/** Entity-level errors keyed by "entityType:id" */
|
|
@@ -81,7 +82,7 @@ export declare class ErrorStore {
|
|
|
81
82
|
/**
|
|
82
83
|
* Rekeys all errors from oldKeyPrefix to newKeyPrefix.
|
|
83
84
|
*/
|
|
84
|
-
rekey(
|
|
85
|
+
rekey(ctx: RekeyContext): void;
|
|
85
86
|
private rekeyMap;
|
|
86
87
|
private rekeyByPrefix;
|
|
87
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorStore.d.ts","sourceRoot":"","sources":["../../src/store/ErrorStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"ErrorStore.d.ts","sourceRoot":"","sources":["../../src/store/ErrorStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAErE;;;;;;;GAOG;AACH,qBAAa,UAAW,YAAW,SAAS;IAC3C,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAE5D,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAE7D,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAI/D;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAIvD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMxD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAgBtE;;;;OAIG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAiBpD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAIzD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAM1D;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAkBxE;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAI7D;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAM9D;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAkB5E;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBhE;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB1D;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAqB9D;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAqB3D;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAM9B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,aAAa;CAYrB"}
|