@contember/bindx 0.1.50 → 0.1.52
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/handles/HasManyListHandle.d.ts +1 -0
- package/dist/handles/HasManyListHandle.d.ts.map +1 -1
- package/dist/persistence/BatchPersister.d.ts.map +1 -1
- package/dist/store/RekeyOrchestrator.d.ts +2 -0
- package/dist/store/RekeyOrchestrator.d.ts.map +1 -1
- package/dist/store/SnapshotStore.d.ts +6 -1
- package/dist/store/SnapshotStore.d.ts.map +1 -1
- package/dist/store/SubscriptionManager.d.ts +19 -4
- package/dist/store/SubscriptionManager.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/EntityLoader.ts +6 -6
- package/src/handles/HasManyListHandle.ts +5 -0
- package/src/persistence/BatchPersister.ts +15 -11
- package/src/store/RekeyOrchestrator.ts +7 -0
- package/src/store/SnapshotStore.ts +44 -36
- package/src/store/SubscriptionManager.ts +116 -58
|
@@ -20,6 +20,7 @@ export declare class HasManyListHandle<TEntity extends object = object, TSelecte
|
|
|
20
20
|
private readonly selection?;
|
|
21
21
|
private readonly relationPath;
|
|
22
22
|
private itemHandleCacheProxy;
|
|
23
|
+
private itemHandleCacheRekeyVersion;
|
|
23
24
|
/** Runtime brand symbols for validation */
|
|
24
25
|
readonly __brands?: Set<symbol>;
|
|
25
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HasManyListHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasManyListHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA+B,MAAM,iBAAiB,CAAA;AAElF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAS1D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC3H,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,CAAE,SAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"HasManyListHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasManyListHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA+B,MAAM,iBAAiB,CAAA;AAElF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAS1D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC3H,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,CAAE,SAAQ,mBAAmB;IAqC9G,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAG3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IA1C9B,OAAO,CAAC,oBAAoB,CAAwD;IACpF,OAAO,CAAC,2BAA2B,CAAK;IAExC,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAE/B;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,OAAO;IAoBP,MAAM,CAAC,MAAM,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EACjE,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,aAAa,EACzB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAC9B,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC;IAMtC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EACpE,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,aAAa,EACzB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAC9B,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;IAIxC;;;OAGG;IACH,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,CAWnC;IAED;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAchD;IAED;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAItB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,2BAA2B;IAenC;;;OAGG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,wBAAwB;IA0ChC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;;OAIG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CASnC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAsBjE;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAQvD;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAiBrB;IAED;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/E;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7B;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5B;;;;OAIG;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM;IAkBpC;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAO9C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAUb;;;OAGG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,GAAG,WAAW;IAW5E;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,GAAG,WAAW;IAWlF;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,WAAW,CAAC,sBAAsB,CAAC,GAAG,WAAW;IAWtF;;OAEG;IACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,yBAAyB,CAAC,GAAG,WAAW;CAW5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchPersister.d.ts","sourceRoot":"","sources":["../../src/persistence/BatchPersister.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EACX,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EAGZ,UAAU,EACV,MAAM,YAAY,CAAA;AAenB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;IAEzC;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,UAAU,CAAA;CAC9B;AA+BD;;;;;;GAMG;AACH,qBAAa,cAAc;IAUzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAX5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAuB;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmE;IAClG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmE;gBAG/E,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC7C,OAAO,CAAC,EAAE,qBAAqB;IAWhC;;OAEG;IACH,oBAAoB,IAAI,UAAU;IAIlC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E;;OAEG;IACG,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAc/B;;OAEG;IACG,aAAa,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAc/B;;OAEG;IACG,YAAY,CACjB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAqD7B;;;OAGG;YACW,cAAc;
|
|
1
|
+
{"version":3,"file":"BatchPersister.d.ts","sourceRoot":"","sources":["../../src/persistence/BatchPersister.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ export interface Rekeyable {
|
|
|
38
38
|
export declare class RekeyOrchestrator {
|
|
39
39
|
/** "entityType:tempId" → persistedId. The single identity-redirect map. */
|
|
40
40
|
private readonly tempToPersisted;
|
|
41
|
+
private mutationVersion;
|
|
41
42
|
private readonly participants;
|
|
42
43
|
private readonly participantSet;
|
|
43
44
|
/**
|
|
@@ -49,6 +50,7 @@ export declare class RekeyOrchestrator {
|
|
|
49
50
|
registerParticipant(participant: Rekeyable): void;
|
|
50
51
|
/** Resolves an entity key, following a temp→persisted redirect if present. */
|
|
51
52
|
resolveKey(entityType: string, id: string): string;
|
|
53
|
+
getMutationVersion(): number;
|
|
52
54
|
/** Resolves an entity id to its persisted id if it has been rekeyed. */
|
|
53
55
|
resolveId(entityType: string, id: string): string;
|
|
54
56
|
/** The persisted id for an entity, or null if it has none yet. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RekeyOrchestrator.d.ts","sourceRoot":"","sources":["../../src/store/RekeyOrchestrator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACzB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC7B,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAEtD;;;OAGG;gBACS,YAAY,EAAE,SAAS,SAAS,EAAE;IAI9C,8DAA8D;IAC9D,mBAAmB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI;IAMjD,8EAA8E;IAC9E,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAKlD,wEAAwE;IACxE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjD,kEAAkE;IAClE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7D,8EAA8E;IAC9E,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMpD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"RekeyOrchestrator.d.ts","sourceRoot":"","sources":["../../src/store/RekeyOrchestrator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACzB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC7B,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAEtD;;;OAGG;gBACS,YAAY,EAAE,SAAS,SAAS,EAAE;IAI9C,8DAA8D;IAC9D,mBAAmB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI;IAMjD,8EAA8E;IAC9E,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAKlD,kBAAkB,IAAI,MAAM;IAI5B,wEAAwE;IACxE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIjD,kEAAkE;IAClE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7D,8EAA8E;IAC9E,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMpD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAkBpE,KAAK,IAAI,IAAI;CAIb"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EntitySnapshot, LoadStatus } from './snapshots.js';
|
|
2
2
|
import type { FieldError, FieldErrorFilter } from '../errors/types.js';
|
|
3
|
-
import { type SnapshotVersionBumper } from './SubscriptionManager.js';
|
|
3
|
+
import { type SnapshotVersionBumper, type SynchronousResult } from './SubscriptionManager.js';
|
|
4
4
|
import { type HasManyRemovalType, type RelationReconciliationResult, type SentHasManyDelta, type SentHasOneTransition, type StoredHasManyState, type StoredRelationState } from './RelationStore.js';
|
|
5
5
|
import { type EntityMeta } from './EntityMetaStore.js';
|
|
6
6
|
import type { Rekeyable } from './RekeyOrchestrator.js';
|
|
@@ -77,12 +77,16 @@ export declare class SnapshotStore implements SnapshotVersionBumper, JournalTarg
|
|
|
77
77
|
* dispatcher, so their pre-create writes join the same undo entry.
|
|
78
78
|
*/
|
|
79
79
|
transaction<T>(fn: () => T): T;
|
|
80
|
+
/** Coalesces synchronous notifications, even on failure, without changing undo boundaries. */
|
|
81
|
+
batchNotifications<T>(fn: () => SynchronousResult<T>): T;
|
|
80
82
|
private getEntityKey;
|
|
81
83
|
private getRelationKey;
|
|
82
84
|
/**
|
|
83
85
|
* Resolves an ID to its persisted ID if it has been rekeyed.
|
|
84
86
|
*/
|
|
85
87
|
resolveEntityId(entityType: string, id: string): string;
|
|
88
|
+
/** Identity caches only need reconciliation when redirects change, including on clear. */
|
|
89
|
+
getRekeyVersion(): number;
|
|
86
90
|
/** Attaches identity-keyed state to the store's single rekey fan-out. */
|
|
87
91
|
attachRekeyParticipant(participant: Rekeyable): void;
|
|
88
92
|
bumpEntitySnapshotVersion(key: string): void;
|
|
@@ -296,6 +300,7 @@ export declare class SnapshotStore implements SnapshotVersionBumper, JournalTarg
|
|
|
296
300
|
* then present relations, then un-creates, then dropped relations.
|
|
297
301
|
*/
|
|
298
302
|
applyJournalImages(images: JournalCellImage[]): void;
|
|
303
|
+
private notifyRestoredCell;
|
|
299
304
|
private applyEntityImage;
|
|
300
305
|
private applyRelationImage;
|
|
301
306
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnapshotStore.d.ts","sourceRoot":"","sources":["../../src/store/SnapshotStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAE1F,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQvE,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EACX,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE/F,KAAK,UAAU,GAAG,MAAM,IAAI,CAAA;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,qBAAqB,EAAE,aAAa;IACzE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAA2B;;IA0B1C;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAI7C,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMxC,OAAO,CAAC,oBAAoB;IAM5B;;;;;OAKG;IACH,wBAAwB,IAAI,qBAAqB;IAUjD;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAIxB,iBAAiB,IAAI,IAAI;IAIzB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAW9B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIvD,yEAAyE;IACzE,sBAAsB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI;IAMpD,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM5C,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,yBAAyB;IAUjC;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO;IAK9G;;OAEG;IACH,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAKxG;;OAEG;IACH,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKlG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKlD,aAAa,CAAC,CAAC,SAAS,MAAM,EAC7B,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,CAAC,EACP,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GACzB,cAAc,CAAC,CAAC,CAAC;IAmBpB;;;OAGG;IACH,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACjC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,CAAC,EACP,UAAU,GAAE,OAAe,GACzB,cAAc,CAAC,CAAC,CAAC;IAUpB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAUhC,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,OAAO,GACZ,IAAI;IAQP,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOjD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAelD;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQ3C,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS;IAKpG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAQ1F,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKrE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAMhF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKvD,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOzD,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO3D,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAO/D,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IA0B/E;;;;;;;OAOG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAI1D,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAqBrF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI7D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMpD,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACZ,kBAAkB;IAKrB,UAAU,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS;IAKjC,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAMP,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,EACxB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,yBAAyB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS;IAK9C;;;;OAIG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrD,qBAAqB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,4BAA4B,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;IAO1B,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAMP,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,EACvB,KAAK,CAAC,EAAE,MAAM,GACZ,4BAA4B;IAO/B,YAAY,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,YAAY,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,wBAAwB,CACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,IAAI;IAOP,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAWP,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,EAAE;IAKX,gCAAgC,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,EAAE;IAUX,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO;IAMV,yBAAyB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;IAa1B,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKrD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAUxG;;;;;;;;;;;;OAYG;IACH,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAoBxG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAKxF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMzF,gBAAgB,CACf,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,gBAAgB,GACvB,IAAI;IAMP,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOlF,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAKtE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMvE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAMrF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAK9F,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAM/F,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC1B,IAAI;IAMP,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO1D,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOpD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMxD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAQrD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAK1E,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAO1F,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7D,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC3C,mBAAmB;IAKtB,WAAW,CACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS;IAKlC,uBAAuB,CACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS;IAclC,WAAW,CACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,EACtD,UAAU,GAAE,OAAe,GACzB,IAAI;IAcP,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM7E,qBAAqB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,GAC9B,4BAA4B;IAO/B,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO5E;;;OAGG;IACH,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GACrD,IAAI;IAKP,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO7D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,IAAI;IAKnF,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,GAClB,MAAM,IAAI;IAKb,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,IAAI;IAI3C,UAAU,IAAI,MAAM;IAIpB,MAAM,IAAI,IAAI;IAMd;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUnG,qBAAqB,CAAC,IAAI,EAAE;QAC3B,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,WAAW,EAAE,MAAM,EAAE,CAAA;KACrB,GAAG;QACH,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAChD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAC9C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KACpC;IASD,qBAAqB,CAAC,QAAQ,EAAE;QAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAChD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAC9C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KACpC,GAAG,IAAI;IAsBR;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAgB9C,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAWlD;;;;OAIG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAKzD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAiBhD;;;;;;;OAOG;IACH,gCAAgC,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,gBAAgB,EAAE;IAoClF;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAoCpD,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,kBAAkB;IA2B1B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,IAAI,MAAM;IAQzB,mBAAmB,IAAI,KAAK,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;KAC1C,CAAC;IAIF;;;;;;;;OAQG;IACH,uBAAuB,IAAI,IAAI;IAW/B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAI9D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ9E,KAAK,IAAI,IAAI;CAgBb"}
|
|
1
|
+
{"version":3,"file":"SnapshotStore.d.ts","sourceRoot":"","sources":["../../src/store/SnapshotStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAuB,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAElH,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQvE,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EACX,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE/F,KAAK,UAAU,GAAG,MAAM,IAAI,CAAA;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,qBAAqB,EAAE,aAAa;IACzE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAA2B;;IA0B1C;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAI7C,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMxC,OAAO,CAAC,oBAAoB;IAM5B;;;;;OAKG;IACH,wBAAwB,IAAI,qBAAqB;IAUjD;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAIxB,iBAAiB,IAAI,IAAI;IAIzB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAS9B,8FAA8F;IAC9F,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;IAMxD,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIvD,0FAA0F;IAC1F,eAAe,IAAI,MAAM;IAIzB,yEAAyE;IACzE,sBAAsB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI;IAMpD,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM5C,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,yBAAyB;IAUjC;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO;IAK9G;;OAEG;IACH,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAKxG;;OAEG;IACH,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKlG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKlD,aAAa,CAAC,CAAC,SAAS,MAAM,EAC7B,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,CAAC,EACP,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GACzB,cAAc,CAAC,CAAC,CAAC;IAmBpB;;;OAGG;IACH,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACjC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,CAAC,EACP,UAAU,GAAE,OAAe,GACzB,cAAc,CAAC,CAAC,CAAC;IAUpB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAUhC,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,OAAO,GACZ,IAAI;IAQP,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAMlD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOjD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAelD;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQ3C,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS;IAKpG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI;IAQ1F,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKrE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAMhF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKvD,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOzD,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO3D,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAO/D,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IA0B/E;;;;;;;OAOG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAI1D,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAqBrF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI7D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMpD,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACZ,kBAAkB;IAKrB,UAAU,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS;IAKjC,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAMP,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,EACxB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,yBAAyB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,SAAS;IAK9C;;;;OAIG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrD,qBAAqB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,4BAA4B,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;IAO1B,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAMP,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,EACvB,KAAK,CAAC,EAAE,MAAM,GACZ,4BAA4B;IAO/B,YAAY,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,YAAY,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,wBAAwB,CACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,IAAI;IAOP,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAWP,aAAa,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI;IAOP,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,EAAE;IAKX,gCAAgC,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,EAAE;IAUX,oBAAoB,CACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO;IAMV,yBAAyB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;IAa1B,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAKrD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAUxG;;;;;;;;;;;;OAYG;IACH,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAoBxG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAKxF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMzF,gBAAgB,CACf,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,gBAAgB,GACvB,IAAI;IAMP,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOlF,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAKtE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMvE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAMrF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE;IAK9F,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAM/F,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC1B,IAAI;IAMP,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO1D,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAOpD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMxD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAQrD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAK1E,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAO1F,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7D,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC3C,mBAAmB;IAKtB,WAAW,CACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS;IAKlC,uBAAuB,CACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GACf,mBAAmB,GAAG,SAAS;IAclC,WAAW,CACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,EACtD,UAAU,GAAE,OAAe,GACzB,IAAI;IAcP,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM7E,qBAAqB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,GAC9B,4BAA4B;IAO/B,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO5E;;;OAGG;IACH,kBAAkB,CACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GACrD,IAAI;IAKP,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO7D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,IAAI;IAKnF,mBAAmB,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,GAClB,MAAM,IAAI;IAKb,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,IAAI;IAI3C,UAAU,IAAI,MAAM;IAIpB,MAAM,IAAI,IAAI;IAMd;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUnG,qBAAqB,CAAC,IAAI,EAAE;QAC3B,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,WAAW,EAAE,MAAM,EAAE,CAAA;KACrB,GAAG;QACH,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAChD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAC9C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KACpC;IASD,qBAAqB,CAAC,QAAQ,EAAE;QAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;QAChD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAC9C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KACpC,GAAG,IAAI;IAeR;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAgB9C,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAWlD;;;;OAIG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAKzD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAiBhD;;;;;;;OAOG;IACH,gCAAgC,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,gBAAgB,EAAE;IAoClF;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAgCpD,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,kBAAkB;IA2B1B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,IAAI,MAAM;IAQzB,mBAAmB,IAAI,KAAK,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;KAC1C,CAAC;IAIF;;;;;;;;OAQG;IACH,uBAAuB,IAAI,IAAI;IAW/B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAI9D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ9E,KAAK,IAAI,IAAI;CAgBb"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js';
|
|
2
2
|
type Subscriber = () => void;
|
|
3
|
+
/** Rejects async callbacks at compile time: a notification batch would end at the first `await`. */
|
|
4
|
+
export type SynchronousResult<T> = T extends PromiseLike<unknown> ? never : T;
|
|
3
5
|
/**
|
|
4
6
|
* Callback interface for SubscriptionManager to request snapshot version bumps.
|
|
5
7
|
* This decouples notification logic from entity snapshot storage.
|
|
@@ -15,6 +17,8 @@ export interface SnapshotVersionBumper {
|
|
|
15
17
|
*/
|
|
16
18
|
export interface ParentKeyLookup {
|
|
17
19
|
getParentKeysForChild(childId: string): Set<string>;
|
|
20
|
+
/** Increases on every relation write, so an unchanged value proves the edges are unchanged. */
|
|
21
|
+
getMutationVersion(): number;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Manages subscriptions for entity and relation changes.
|
|
@@ -37,6 +41,17 @@ export declare class SubscriptionManager implements Rekeyable {
|
|
|
37
41
|
private readonly rekeyedKeys;
|
|
38
42
|
/** Global version number for change detection */
|
|
39
43
|
private globalVersion;
|
|
44
|
+
private notificationBatchDepth;
|
|
45
|
+
private pendingEntities;
|
|
46
|
+
private pendingRelations;
|
|
47
|
+
private pendingGlobal;
|
|
48
|
+
/** Keys the current batch has already walked; valid only while the relation edges are unchanged. */
|
|
49
|
+
private readonly batchWalkedKeys;
|
|
50
|
+
private batchWalkedEdgeVersion;
|
|
51
|
+
/** Versions advance immediately; callbacks observe the completed synchronous batch. */
|
|
52
|
+
batchNotifications<T>(fn: () => SynchronousResult<T>): T;
|
|
53
|
+
private flushNotifications;
|
|
54
|
+
private notifyGlobalSubscribers;
|
|
40
55
|
/**
|
|
41
56
|
* Resolves a child's parents from live relation edges. Injected after
|
|
42
57
|
* construction (the relation store and this manager are siblings under
|
|
@@ -103,6 +118,8 @@ export declare class SubscriptionManager implements Rekeyable {
|
|
|
103
118
|
* The bumper callback is used to bump parent entity snapshot versions.
|
|
104
119
|
*/
|
|
105
120
|
notifyEntitySubscribers(key: string, bumper: SnapshotVersionBumper): void;
|
|
121
|
+
/** A batch shares one walked set, so rows under a common hub walk it once instead of once per row. */
|
|
122
|
+
private getWalkedKeys;
|
|
106
123
|
/**
|
|
107
124
|
* Walks the entity and its live ancestors. The global version is bumped once by the
|
|
108
125
|
* caller, before the first subscriber runs — a subscriber reading getVersion() from
|
|
@@ -130,10 +147,6 @@ export declare class SubscriptionManager implements Rekeyable {
|
|
|
130
147
|
* Used during batch imports (e.g., undo/redo).
|
|
131
148
|
*/
|
|
132
149
|
notifyRelationDirect(key: string): void;
|
|
133
|
-
/**
|
|
134
|
-
* Bumps global version and notifies global subscribers.
|
|
135
|
-
*/
|
|
136
|
-
notifyGlobal(): void;
|
|
137
150
|
/**
|
|
138
151
|
* Moves entity and relation subscriptions from oldKey to newKey.
|
|
139
152
|
* Also rekeys relation subscribers under oldKeyPrefix to newKeyPrefix.
|
|
@@ -143,6 +156,8 @@ export declare class SubscriptionManager implements Rekeyable {
|
|
|
143
156
|
* relation store's live edges, which migrate their own id references on rekey.
|
|
144
157
|
*/
|
|
145
158
|
rekey(ctx: RekeyContext): void;
|
|
159
|
+
/** Queued keys follow their subscribers, so a flush never reads the long-lived redirect map. */
|
|
160
|
+
private movePendingNotifications;
|
|
146
161
|
/**
|
|
147
162
|
* Re-homes a subscriber set under a new key. The destination may already hold
|
|
148
163
|
* subscribers (a component mounted on the persisted id before the draft was rekeyed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/store/SubscriptionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAErE,KAAK,UAAU,GAAG,MAAM,IAAI,CAAA;AAE5B;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"SubscriptionManager.d.ts","sourceRoot":"","sources":["../../src/store/SubscriptionManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/bindx",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.52",
|
|
4
4
|
"description": "Type-safe data binding framework (core)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@contember/bindx-client": "0.1.
|
|
20
|
+
"@contember/bindx-client": "0.1.52",
|
|
21
21
|
"@contember/graphql-client": "^2.1.0-beta.1"
|
|
22
22
|
},
|
|
23
23
|
"repository": {
|
package/src/core/EntityLoader.ts
CHANGED
|
@@ -124,13 +124,13 @@ export class EntityLoader {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
this.store.batchNotifications(() => {
|
|
128
|
+
for (const record of result.data) {
|
|
129
|
+
if (typeof record['id'] === 'string') {
|
|
130
|
+
this.store.setEntityData(entityType, record['id'], record, true)
|
|
131
|
+
}
|
|
132
132
|
}
|
|
133
|
-
}
|
|
133
|
+
})
|
|
134
134
|
|
|
135
135
|
return { status: 'success', data: result.data as T[] }
|
|
136
136
|
} catch (error) {
|
|
@@ -38,6 +38,7 @@ export class HasManyListHandle<TEntity extends object = object, TSelected = TEnt
|
|
|
38
38
|
// proxy is the only reference to. Kept bounded by syncItemHandleCache, which drops ids
|
|
39
39
|
// that have left the list.
|
|
40
40
|
private itemHandleCacheProxy = new Map<string, EntityAccessor<TEntity, TSelected>>()
|
|
41
|
+
private itemHandleCacheRekeyVersion = -1
|
|
41
42
|
|
|
42
43
|
/** Runtime brand symbols for validation */
|
|
43
44
|
readonly __brands?: Set<symbol>
|
|
@@ -197,6 +198,10 @@ export class HasManyListHandle<TEntity extends object = object, TSelected = TEnt
|
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
private canonicalizeItemHandleCache(): void {
|
|
201
|
+
const version = this.store.getRekeyVersion()
|
|
202
|
+
if (this.itemHandleCacheRekeyVersion === version) return
|
|
203
|
+
this.itemHandleCacheRekeyVersion = version
|
|
204
|
+
|
|
200
205
|
for (const [key, proxy] of [...this.itemHandleCacheProxy]) {
|
|
201
206
|
const canonicalKey = this.resolveItemKey(key)
|
|
202
207
|
if (canonicalKey === key) continue
|
|
@@ -327,16 +327,18 @@ export class BatchPersister {
|
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
const transactionResult = await this.executeTransaction(execution, options?.signal)
|
|
330
|
-
result = this.processExecutionResult(execution, transactionResult, options)
|
|
330
|
+
result = this.store.batchNotifications(() => this.processExecutionResult(execution, transactionResult, options))
|
|
331
331
|
result = this.mergeCancelled(result, execution.vetoed)
|
|
332
332
|
return result
|
|
333
333
|
|
|
334
334
|
} finally {
|
|
335
|
-
this.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
335
|
+
this.store.batchNotifications(() => {
|
|
336
|
+
this.releaseEntities([...claimed.values()])
|
|
337
|
+
this.undoManager?.unblock()
|
|
338
|
+
if (result?.success) {
|
|
339
|
+
this.store.sweepUnreachableCreated()
|
|
340
|
+
}
|
|
341
|
+
})
|
|
340
342
|
}
|
|
341
343
|
|
|
342
344
|
// Unreachable, but keeps the return type explicit when control-flow analysis changes.
|
|
@@ -991,11 +993,13 @@ export class BatchPersister {
|
|
|
991
993
|
const fresh = entities.filter(entity => !claimed.has(entityIdentityKey(entity.entityType, entity.entityId)))
|
|
992
994
|
if (fresh.length === 0) return
|
|
993
995
|
this.changeRegistry.markInFlight(fresh)
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
996
|
+
this.store.batchNotifications(() => {
|
|
997
|
+
for (const entity of fresh) {
|
|
998
|
+
claimed.set(entityIdentityKey(entity.entityType, entity.entityId), entity)
|
|
999
|
+
this.dispatcher.dispatch(setPersisting(entity.entityType, entity.entityId, true, updateMode === 'pessimistic'))
|
|
1000
|
+
this.dispatcher.dispatch(clearAllServerErrors(entity.entityType, entity.entityId))
|
|
1001
|
+
}
|
|
1002
|
+
})
|
|
999
1003
|
}
|
|
1000
1004
|
|
|
1001
1005
|
private releaseEntities(entities: readonly DirtyEntity[]): void {
|
|
@@ -42,6 +42,7 @@ export interface Rekeyable {
|
|
|
42
42
|
export class RekeyOrchestrator {
|
|
43
43
|
/** "entityType:tempId" → persistedId. The single identity-redirect map. */
|
|
44
44
|
private readonly tempToPersisted = new Map<string, string>()
|
|
45
|
+
private mutationVersion = 0
|
|
45
46
|
private readonly participants: Rekeyable[] = []
|
|
46
47
|
private readonly participantSet = new Set<Rekeyable>()
|
|
47
48
|
|
|
@@ -66,6 +67,10 @@ export class RekeyOrchestrator {
|
|
|
66
67
|
return persisted !== undefined ? `${entityType}:${persisted}` : `${entityType}:${id}`
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
getMutationVersion(): number {
|
|
71
|
+
return this.mutationVersion
|
|
72
|
+
}
|
|
73
|
+
|
|
69
74
|
/** Resolves an entity id to its persisted id if it has been rekeyed. */
|
|
70
75
|
resolveId(entityType: string, id: string): string {
|
|
71
76
|
return this.tempToPersisted.get(`${entityType}:${id}`) ?? id
|
|
@@ -111,6 +116,7 @@ export class RekeyOrchestrator {
|
|
|
111
116
|
}
|
|
112
117
|
|
|
113
118
|
this.tempToPersisted.set(ctx.oldKey, persistedId)
|
|
119
|
+
this.mutationVersion++
|
|
114
120
|
|
|
115
121
|
for (const participant of this.participants) {
|
|
116
122
|
participant.rekey(ctx)
|
|
@@ -119,5 +125,6 @@ export class RekeyOrchestrator {
|
|
|
119
125
|
|
|
120
126
|
clear(): void {
|
|
121
127
|
this.tempToPersisted.clear()
|
|
128
|
+
this.mutationVersion++
|
|
122
129
|
}
|
|
123
130
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EntitySnapshot, LoadStatus } from './snapshots.js'
|
|
2
2
|
import { createEntitySnapshot } from './snapshots.js'
|
|
3
3
|
import type { FieldError, FieldErrorFilter } from '../errors/types.js'
|
|
4
|
-
import { SubscriptionManager, type SnapshotVersionBumper } from './SubscriptionManager.js'
|
|
4
|
+
import { SubscriptionManager, type SnapshotVersionBumper, type SynchronousResult } from './SubscriptionManager.js'
|
|
5
5
|
import { ErrorStore } from './ErrorStore.js'
|
|
6
6
|
import {
|
|
7
7
|
RelationStore,
|
|
@@ -176,6 +176,11 @@ export class SnapshotStore implements SnapshotVersionBumper, JournalTarget {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
+
/** Coalesces synchronous notifications, even on failure, without changing undo boundaries. */
|
|
180
|
+
batchNotifications<T>(fn: () => SynchronousResult<T>): T {
|
|
181
|
+
return this.subscriptions.batchNotifications(fn)
|
|
182
|
+
}
|
|
183
|
+
|
|
179
184
|
// ==================== Key Generation ====================
|
|
180
185
|
|
|
181
186
|
private getEntityKey(entityType: string, id: string): string {
|
|
@@ -194,6 +199,11 @@ export class SnapshotStore implements SnapshotVersionBumper, JournalTarget {
|
|
|
194
199
|
return this.rekeyOrchestrator.resolveId(entityType, id)
|
|
195
200
|
}
|
|
196
201
|
|
|
202
|
+
/** Identity caches only need reconciliation when redirects change, including on clear. */
|
|
203
|
+
getRekeyVersion(): number {
|
|
204
|
+
return this.rekeyOrchestrator.getMutationVersion()
|
|
205
|
+
}
|
|
206
|
+
|
|
197
207
|
/** Attaches identity-keyed state to the store's single rekey fan-out. */
|
|
198
208
|
attachRekeyParticipant(participant: Rekeyable): void {
|
|
199
209
|
this.rekeyOrchestrator.registerParticipant(participant)
|
|
@@ -1100,23 +1110,16 @@ export class SnapshotStore implements SnapshotVersionBumper, JournalTarget {
|
|
|
1100
1110
|
hasManyStates: Map<string, StoredHasManyState>
|
|
1101
1111
|
entityMetas: Map<string, EntityMeta>
|
|
1102
1112
|
}): void {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
const hasManyKeys = this.relations.importHasManyStates(snapshot.hasManyStates)
|
|
1109
|
-
const notifiedRelationKeys = new Set([...relationKeys, ...hasManyKeys])
|
|
1110
|
-
|
|
1111
|
-
this.subscriptions.notifyGlobal()
|
|
1112
|
-
|
|
1113
|
-
for (const key of notifiedEntityKeys) {
|
|
1114
|
-
this.subscriptions.notifyEntityDirect(key)
|
|
1115
|
-
}
|
|
1113
|
+
this.subscriptions.batchNotifications(() => {
|
|
1114
|
+
const entityKeys = this.entitySnapshots.importSnapshots(snapshot.entitySnapshots)
|
|
1115
|
+
this.meta.importMetas(snapshot.entityMetas)
|
|
1116
|
+
const relationKeys = this.relations.importRelationStates(snapshot.relationStates)
|
|
1117
|
+
const hasManyKeys = this.relations.importHasManyStates(snapshot.hasManyStates)
|
|
1116
1118
|
|
|
1117
|
-
|
|
1118
|
-
this.subscriptions.
|
|
1119
|
-
|
|
1119
|
+
this.subscriptions.notify()
|
|
1120
|
+
for (const key of entityKeys) this.subscriptions.notifyEntityDirect(key)
|
|
1121
|
+
for (const key of [...relationKeys, ...hasManyKeys]) this.subscriptions.notifyRelationDirect(key)
|
|
1122
|
+
})
|
|
1120
1123
|
}
|
|
1121
1124
|
|
|
1122
1125
|
// ==================== Undo Journal Target (cell capture / restore) ====================
|
|
@@ -1231,9 +1234,6 @@ export class SnapshotStore implements SnapshotVersionBumper, JournalTarget {
|
|
|
1231
1234
|
* then present relations, then un-creates, then dropped relations.
|
|
1232
1235
|
*/
|
|
1233
1236
|
applyJournalImages(images: JournalCellImage[]): void {
|
|
1234
|
-
const notifyEntities = new Set<string>()
|
|
1235
|
-
const notifyRelations = new Set<string>()
|
|
1236
|
-
|
|
1237
1237
|
const presentEntities: EntityCellImage[] = []
|
|
1238
1238
|
const presentRelations: Array<RelationCellImage | HasManyCellImage> = []
|
|
1239
1239
|
const absentEntities: EntityCellImage[] = []
|
|
@@ -1241,29 +1241,37 @@ export class SnapshotStore implements SnapshotVersionBumper, JournalTarget {
|
|
|
1241
1241
|
|
|
1242
1242
|
for (const img of images) {
|
|
1243
1243
|
if (img.kind === 'entity') {
|
|
1244
|
-
notifyEntities.add(img.key)
|
|
1245
1244
|
;(img.present ? presentEntities : absentEntities).push(img)
|
|
1246
1245
|
} else {
|
|
1247
|
-
notifyRelations.add(img.key)
|
|
1248
|
-
notifyEntities.add(entityKeyOfRelationKey(img.key))
|
|
1249
1246
|
;(img.present ? presentRelations : absentRelations).push(img)
|
|
1250
1247
|
}
|
|
1251
1248
|
}
|
|
1252
1249
|
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
const
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1250
|
+
// removeEntity notifies; the batch holds that back until the restore is complete.
|
|
1251
|
+
this.subscriptions.batchNotifications(() => {
|
|
1252
|
+
for (const img of presentEntities) this.applyEntityImage(img)
|
|
1253
|
+
for (const img of presentRelations) this.applyRelationImage(img)
|
|
1254
|
+
for (const img of absentEntities) {
|
|
1255
|
+
const [type, id] = splitEntityKey(img.key)
|
|
1256
|
+
this.removeEntity(type, id)
|
|
1257
|
+
}
|
|
1258
|
+
for (const img of absentRelations) {
|
|
1259
|
+
if (img.kind === 'relation') this.relations.removeRelationState(img.key)
|
|
1260
|
+
else this.relations.removeHasManyState(img.key)
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
this.subscriptions.notify()
|
|
1264
|
+
for (const img of images) this.notifyRestoredCell(img)
|
|
1265
|
+
})
|
|
1266
|
+
}
|
|
1263
1267
|
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1268
|
+
private notifyRestoredCell(img: JournalCellImage): void {
|
|
1269
|
+
if (img.kind === 'entity') {
|
|
1270
|
+
this.subscriptions.notifyEntityDirect(img.key)
|
|
1271
|
+
return
|
|
1272
|
+
}
|
|
1273
|
+
this.subscriptions.notifyRelationDirect(img.key)
|
|
1274
|
+
this.subscriptions.notifyEntityDirect(entityKeyOfRelationKey(img.key))
|
|
1267
1275
|
}
|
|
1268
1276
|
|
|
1269
1277
|
private applyEntityImage(img: EntityCellImage): void {
|
|
@@ -2,6 +2,9 @@ import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js'
|
|
|
2
2
|
|
|
3
3
|
type Subscriber = () => void
|
|
4
4
|
|
|
5
|
+
/** Rejects async callbacks at compile time: a notification batch would end at the first `await`. */
|
|
6
|
+
export type SynchronousResult<T> = T extends PromiseLike<unknown> ? never : T
|
|
7
|
+
|
|
5
8
|
/**
|
|
6
9
|
* Callback interface for SubscriptionManager to request snapshot version bumps.
|
|
7
10
|
* This decouples notification logic from entity snapshot storage.
|
|
@@ -18,6 +21,8 @@ export interface SnapshotVersionBumper {
|
|
|
18
21
|
*/
|
|
19
22
|
export interface ParentKeyLookup {
|
|
20
23
|
getParentKeysForChild(childId: string): Set<string>
|
|
24
|
+
/** Increases on every relation write, so an unchanged value proves the edges are unchanged. */
|
|
25
|
+
getMutationVersion(): number
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
/**
|
|
@@ -45,6 +50,61 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
45
50
|
|
|
46
51
|
/** Global version number for change detection */
|
|
47
52
|
private globalVersion = 0
|
|
53
|
+
private notificationBatchDepth = 0
|
|
54
|
+
private pendingEntities = new Set<string>()
|
|
55
|
+
private pendingRelations = new Set<string>()
|
|
56
|
+
private pendingGlobal = false
|
|
57
|
+
/** Keys the current batch has already walked; valid only while the relation edges are unchanged. */
|
|
58
|
+
private readonly batchWalkedKeys = new Set<string>()
|
|
59
|
+
private batchWalkedEdgeVersion = -1
|
|
60
|
+
|
|
61
|
+
/** Versions advance immediately; callbacks observe the completed synchronous batch. */
|
|
62
|
+
batchNotifications<T>(fn: () => SynchronousResult<T>): T {
|
|
63
|
+
this.notificationBatchDepth++
|
|
64
|
+
let completed = false
|
|
65
|
+
try {
|
|
66
|
+
const result = fn()
|
|
67
|
+
completed = true
|
|
68
|
+
return result
|
|
69
|
+
} finally {
|
|
70
|
+
if (--this.notificationBatchDepth === 0) this.flushNotifications(completed)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private flushNotifications(callbackCompleted: boolean): void {
|
|
75
|
+
const entities = this.pendingEntities
|
|
76
|
+
const relations = this.pendingRelations
|
|
77
|
+
const global = this.pendingGlobal
|
|
78
|
+
this.pendingEntities = new Set()
|
|
79
|
+
this.pendingRelations = new Set()
|
|
80
|
+
this.pendingGlobal = false
|
|
81
|
+
this.batchWalkedKeys.clear()
|
|
82
|
+
const notified = new Set<Subscriber>()
|
|
83
|
+
const errors: unknown[] = []
|
|
84
|
+
const deliver = (subscribers: Set<Subscriber> | undefined): void => {
|
|
85
|
+
for (const sub of subscribers ?? []) {
|
|
86
|
+
if (notified.has(sub)) continue
|
|
87
|
+
notified.add(sub)
|
|
88
|
+
try {
|
|
89
|
+
sub()
|
|
90
|
+
} catch (error) {
|
|
91
|
+
errors.push(error)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
for (const key of entities) deliver(this.entitySubscribers.get(key))
|
|
96
|
+
for (const key of relations) deliver(this.relationSubscribers.get(key))
|
|
97
|
+
if (global) deliver(this.globalSubscribers)
|
|
98
|
+
throwSubscriberErrors(errors, callbackCompleted)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private notifyGlobalSubscribers(): void {
|
|
102
|
+
if (this.notificationBatchDepth > 0) {
|
|
103
|
+
this.pendingGlobal = true
|
|
104
|
+
return
|
|
105
|
+
}
|
|
106
|
+
for (const sub of this.globalSubscribers) sub()
|
|
107
|
+
}
|
|
48
108
|
|
|
49
109
|
/**
|
|
50
110
|
* Resolves a child's parents from live relation edges. Injected after
|
|
@@ -127,9 +187,7 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
127
187
|
*/
|
|
128
188
|
notify(): void {
|
|
129
189
|
this.globalVersion++
|
|
130
|
-
|
|
131
|
-
sub()
|
|
132
|
-
}
|
|
190
|
+
this.notifyGlobalSubscribers()
|
|
133
191
|
}
|
|
134
192
|
|
|
135
193
|
/**
|
|
@@ -145,13 +203,9 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
145
203
|
// Iterate the live sets, as the per-key paths do: a subscriber that unsubscribes a
|
|
146
204
|
// not-yet-visited sibling removes it from the iteration, whereas a copied array would
|
|
147
205
|
// still invoke it after its unsubscribe() returned.
|
|
148
|
-
for (const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
for (const subs of this.relationSubscribers.values()) {
|
|
152
|
-
for (const sub of subs) sub()
|
|
153
|
-
}
|
|
154
|
-
for (const sub of this.globalSubscribers) sub()
|
|
206
|
+
for (const key of this.entitySubscribers.keys()) this.notifyEntityDirect(key)
|
|
207
|
+
for (const key of this.relationSubscribers.keys()) this.notifyRelationDirect(key)
|
|
208
|
+
this.notifyGlobalSubscribers()
|
|
155
209
|
}
|
|
156
210
|
|
|
157
211
|
// ==================== Parent-Child Relationships ====================
|
|
@@ -193,7 +247,19 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
193
247
|
bumper: SnapshotVersionBumper,
|
|
194
248
|
): void {
|
|
195
249
|
this.globalVersion++
|
|
196
|
-
this.notifyEntityAndParentSubscribers(key, bumper,
|
|
250
|
+
this.notifyEntityAndParentSubscribers(key, bumper, this.getWalkedKeys())
|
|
251
|
+
this.notifyGlobalSubscribers()
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/** A batch shares one walked set, so rows under a common hub walk it once instead of once per row. */
|
|
255
|
+
private getWalkedKeys(): Set<string> {
|
|
256
|
+
if (this.notificationBatchDepth === 0) return new Set()
|
|
257
|
+
const edgeVersion = this.parentKeyLookup?.getMutationVersion() ?? 0
|
|
258
|
+
if (edgeVersion !== this.batchWalkedEdgeVersion) {
|
|
259
|
+
this.batchWalkedKeys.clear()
|
|
260
|
+
this.batchWalkedEdgeVersion = edgeVersion
|
|
261
|
+
}
|
|
262
|
+
return this.batchWalkedKeys
|
|
197
263
|
}
|
|
198
264
|
|
|
199
265
|
/**
|
|
@@ -209,43 +275,21 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
209
275
|
private notifyEntityAndParentSubscribers(
|
|
210
276
|
key: string,
|
|
211
277
|
bumper: SnapshotVersionBumper,
|
|
212
|
-
|
|
278
|
+
walkedKeys: Set<string>,
|
|
213
279
|
): void {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
// size after recursion would misclassify any child-with-parent as non-root
|
|
219
|
-
// and skip the global notification (see issue #51).
|
|
220
|
-
const isRoot = notifiedKeys.size === 0
|
|
221
|
-
notifiedKeys.add(key)
|
|
222
|
-
|
|
223
|
-
// Notify entity-specific subscribers
|
|
224
|
-
const entitySubs = this.entitySubscribers.get(key)
|
|
225
|
-
if (entitySubs) {
|
|
226
|
-
for (const sub of entitySubs) {
|
|
227
|
-
sub()
|
|
228
|
-
}
|
|
229
|
-
}
|
|
280
|
+
if (walkedKeys.has(key)) return
|
|
281
|
+
walkedKeys.add(key)
|
|
282
|
+
|
|
283
|
+
this.notifyEntityDirect(key)
|
|
230
284
|
|
|
231
|
-
// Notify parent entity subscribers (propagate change up the tree).
|
|
232
285
|
// Parents are derived from the relation store's LIVE edges, so a
|
|
233
286
|
// disconnected child no longer reaches its former parent.
|
|
234
|
-
const
|
|
235
|
-
for (const parentKey of parents) {
|
|
287
|
+
for (const parentKey of this.getParentKeys(key)) {
|
|
236
288
|
// An ancestor reachable through several edges is bumped and walked once.
|
|
237
|
-
if (
|
|
289
|
+
if (walkedKeys.has(parentKey)) continue
|
|
238
290
|
// Bump parent snapshot version so useSyncExternalStore detects a change
|
|
239
291
|
bumper.bumpEntitySnapshotVersion(parentKey)
|
|
240
|
-
this.notifyEntityAndParentSubscribers(parentKey, bumper,
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// Notify global subscribers (only once, from the root invocation — not
|
|
244
|
-
// again for each parent reached via propagation)
|
|
245
|
-
if (isRoot) {
|
|
246
|
-
for (const sub of this.globalSubscribers) {
|
|
247
|
-
sub()
|
|
248
|
-
}
|
|
292
|
+
this.notifyEntityAndParentSubscribers(parentKey, bumper, walkedKeys)
|
|
249
293
|
}
|
|
250
294
|
}
|
|
251
295
|
|
|
@@ -262,17 +306,13 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
262
306
|
this.globalVersion++
|
|
263
307
|
|
|
264
308
|
// Notify relation-specific subscribers
|
|
265
|
-
|
|
266
|
-
if (relationSubs) {
|
|
267
|
-
for (const sub of relationSubs) {
|
|
268
|
-
sub()
|
|
269
|
-
}
|
|
270
|
-
}
|
|
309
|
+
this.notifyRelationDirect(key)
|
|
271
310
|
|
|
272
311
|
// Bump entity snapshot version so isEqual detects a change
|
|
273
312
|
bumper.bumpEntitySnapshotVersion(entityKey)
|
|
274
313
|
|
|
275
|
-
this.notifyEntityAndParentSubscribers(entityKey, bumper,
|
|
314
|
+
this.notifyEntityAndParentSubscribers(entityKey, bumper, this.getWalkedKeys())
|
|
315
|
+
this.notifyGlobalSubscribers()
|
|
276
316
|
}
|
|
277
317
|
|
|
278
318
|
/**
|
|
@@ -280,6 +320,10 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
280
320
|
* Used during batch imports (e.g., undo/redo).
|
|
281
321
|
*/
|
|
282
322
|
notifyEntityDirect(key: string): void {
|
|
323
|
+
if (this.notificationBatchDepth > 0) {
|
|
324
|
+
this.pendingEntities.add(key)
|
|
325
|
+
return
|
|
326
|
+
}
|
|
283
327
|
const subs = this.entitySubscribers.get(key)
|
|
284
328
|
if (subs) {
|
|
285
329
|
for (const sub of subs) {
|
|
@@ -293,6 +337,10 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
293
337
|
* Used during batch imports (e.g., undo/redo).
|
|
294
338
|
*/
|
|
295
339
|
notifyRelationDirect(key: string): void {
|
|
340
|
+
if (this.notificationBatchDepth > 0) {
|
|
341
|
+
this.pendingRelations.add(key)
|
|
342
|
+
return
|
|
343
|
+
}
|
|
296
344
|
const subs = this.relationSubscribers.get(key)
|
|
297
345
|
if (subs) {
|
|
298
346
|
for (const sub of subs) {
|
|
@@ -301,16 +349,6 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
301
349
|
}
|
|
302
350
|
}
|
|
303
351
|
|
|
304
|
-
/**
|
|
305
|
-
* Bumps global version and notifies global subscribers.
|
|
306
|
-
*/
|
|
307
|
-
notifyGlobal(): void {
|
|
308
|
-
this.globalVersion++
|
|
309
|
-
for (const sub of this.globalSubscribers) {
|
|
310
|
-
sub()
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
352
|
/**
|
|
315
353
|
* Moves entity and relation subscriptions from oldKey to newKey.
|
|
316
354
|
* Also rekeys relation subscribers under oldKeyPrefix to newKeyPrefix.
|
|
@@ -328,6 +366,7 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
328
366
|
}
|
|
329
367
|
}
|
|
330
368
|
this.rekeyedKeys.set(oldKey, newKey)
|
|
369
|
+
this.movePendingNotifications(ctx)
|
|
331
370
|
|
|
332
371
|
// Move entity subscribers, merging into anything already subscribed under the new key
|
|
333
372
|
this.moveSubscribers(this.entitySubscribers, oldKey, newKey)
|
|
@@ -354,6 +393,16 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
354
393
|
}
|
|
355
394
|
}
|
|
356
395
|
|
|
396
|
+
/** Queued keys follow their subscribers, so a flush never reads the long-lived redirect map. */
|
|
397
|
+
private movePendingNotifications({ oldKey, newKey, oldKeyPrefix, newKeyPrefix }: RekeyContext): void {
|
|
398
|
+
if (this.pendingEntities.delete(oldKey)) this.pendingEntities.add(newKey)
|
|
399
|
+
for (const key of [...this.pendingRelations]) {
|
|
400
|
+
if (!key.startsWith(oldKeyPrefix)) continue
|
|
401
|
+
this.pendingRelations.delete(key)
|
|
402
|
+
this.pendingRelations.add(newKeyPrefix + key.slice(oldKeyPrefix.length))
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
357
406
|
/**
|
|
358
407
|
* Re-homes a subscriber set under a new key. The destination may already hold
|
|
359
408
|
* subscribers (a component mounted on the persisted id before the draft was rekeyed
|
|
@@ -372,3 +421,12 @@ export class SubscriptionManager implements Rekeyable {
|
|
|
372
421
|
for (const sub of moved) existing.add(sub)
|
|
373
422
|
}
|
|
374
423
|
}
|
|
424
|
+
|
|
425
|
+
/** The first subscriber error propagates, as it would unbatched, and the rest are logged; a failed callback's own error wins. */
|
|
426
|
+
function throwSubscriberErrors(errors: readonly unknown[], callbackCompleted: boolean): void {
|
|
427
|
+
const [first, ...rest] = errors
|
|
428
|
+
for (const error of callbackCompleted ? rest : errors) {
|
|
429
|
+
console.error('[Bindx SubscriptionManager] Subscriber error:', error)
|
|
430
|
+
}
|
|
431
|
+
if (callbackCompleted && errors.length > 0) throw first
|
|
432
|
+
}
|