@contember/bindx 0.1.49 → 0.1.51

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.
Files changed (50) hide show
  1. package/dist/core/actions.d.ts +3 -3
  2. package/dist/core/actions.d.ts.map +1 -1
  3. package/dist/errors/index.d.ts +1 -1
  4. package/dist/errors/index.d.ts.map +1 -1
  5. package/dist/errors/types.d.ts +11 -0
  6. package/dist/errors/types.d.ts.map +1 -1
  7. package/dist/handles/FieldHandle.d.ts +3 -3
  8. package/dist/handles/FieldHandle.d.ts.map +1 -1
  9. package/dist/handles/HasManyListHandle.d.ts +1 -0
  10. package/dist/handles/HasManyListHandle.d.ts.map +1 -1
  11. package/dist/handles/types.d.ts +9 -8
  12. package/dist/handles/types.d.ts.map +1 -1
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/persistence/BatchPersister.d.ts +6 -0
  16. package/dist/persistence/BatchPersister.d.ts.map +1 -1
  17. package/dist/store/ErrorStore.d.ts +3 -3
  18. package/dist/store/ErrorStore.d.ts.map +1 -1
  19. package/dist/store/HasManyStore.d.ts +10 -0
  20. package/dist/store/HasManyStore.d.ts.map +1 -1
  21. package/dist/store/HasOneStore.d.ts +10 -0
  22. package/dist/store/HasOneStore.d.ts.map +1 -1
  23. package/dist/store/PlannedDeleteIndex.d.ts +19 -0
  24. package/dist/store/PlannedDeleteIndex.d.ts.map +1 -0
  25. package/dist/store/RekeyOrchestrator.d.ts +2 -0
  26. package/dist/store/RekeyOrchestrator.d.ts.map +1 -1
  27. package/dist/store/RelationOwnerIndex.d.ts +8 -0
  28. package/dist/store/RelationOwnerIndex.d.ts.map +1 -0
  29. package/dist/store/RelationStore.d.ts +7 -0
  30. package/dist/store/RelationStore.d.ts.map +1 -1
  31. package/dist/store/SnapshotStore.d.ts +10 -2
  32. package/dist/store/SnapshotStore.d.ts.map +1 -1
  33. package/package.json +2 -2
  34. package/src/core/ActionDispatcher.ts +1 -1
  35. package/src/core/actions.ts +4 -4
  36. package/src/errors/index.ts +2 -0
  37. package/src/errors/types.ts +17 -0
  38. package/src/handles/FieldHandle.ts +4 -4
  39. package/src/handles/HasManyListHandle.ts +5 -0
  40. package/src/handles/types.ts +18 -15
  41. package/src/index.ts +2 -0
  42. package/src/persistence/BatchPersister.ts +48 -0
  43. package/src/store/ErrorStore.ts +15 -12
  44. package/src/store/HasManyStore.ts +39 -3
  45. package/src/store/HasOneStore.ts +41 -3
  46. package/src/store/PlannedDeleteIndex.ts +33 -0
  47. package/src/store/RekeyOrchestrator.ts +7 -0
  48. package/src/store/RelationOwnerIndex.ts +31 -0
  49. package/src/store/RelationStore.ts +10 -0
  50. package/src/store/SnapshotStore.ts +17 -3
@@ -1 +1 @@
1
- {"version":3,"file":"RelationStore.d.ts","sourceRoot":"","sources":["../../src/store/RelationStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationStore.d.ts","sourceRoot":"","sources":["../../src/store/RelationStore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { EntitySnapshot, LoadStatus } from './snapshots.js';
2
- import type { FieldError } from '../errors/types.js';
2
+ import type { FieldError, FieldErrorFilter } from '../errors/types.js';
3
3
  import { type SnapshotVersionBumper } 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';
@@ -83,6 +83,8 @@ export declare class SnapshotStore implements SnapshotVersionBumper, JournalTarg
83
83
  * Resolves an ID to its persisted ID if it has been rekeyed.
84
84
  */
85
85
  resolveEntityId(entityType: string, id: string): string;
86
+ /** Identity caches only need reconciliation when redirects change, including on clear. */
87
+ getRekeyVersion(): number;
86
88
  /** Attaches identity-keyed state to the store's single rekey fan-out. */
87
89
  attachRekeyParticipant(participant: Rekeyable): void;
88
90
  bumpEntitySnapshotVersion(key: string): void;
@@ -168,6 +170,12 @@ export declare class SnapshotStore implements SnapshotVersionBumper, JournalTarg
168
170
  setHasManyServerIds(parentType: string, parentId: string, fieldName: string, serverIds: string[], alias?: string): void;
169
171
  planHasManyRemoval(parentType: string, parentId: string, fieldName: string, itemId: string, type: HasManyRemovalType, alias?: string): void;
170
172
  getHasManyPlannedRemovals(parentType: string, parentId: string, fieldName: string, alias?: string): Map<string, HasManyRemovalType> | undefined;
173
+ /**
174
+ * Whether some relation plans to delete {@link entityId} through its parent, i.e.
175
+ * the row goes away with the parent's update rather than with a mutation of its
176
+ * own (see issue #91).
177
+ */
178
+ isPlannedForDeleteByParent(entityId: string): boolean;
171
179
  planHasManyConnection(parentType: string, parentId: string, fieldName: string, itemId: string, alias?: string): void;
172
180
  getHasManyPlannedConnections(parentType: string, parentId: string, fieldName: string, alias?: string): Set<string> | undefined;
173
181
  commitHasMany(parentType: string, parentId: string, fieldName: string, newServerIds: string[], alias?: string): void;
@@ -199,7 +207,7 @@ export declare class SnapshotStore implements SnapshotVersionBumper, JournalTarg
199
207
  getPresentationSnapshot<T extends object>(entityType: string, id: string): EntitySnapshot<T> | undefined;
200
208
  getFieldErrors(entityType: string, id: string, fieldName: string): readonly FieldError[];
201
209
  addFieldError(entityType: string, id: string, fieldName: string, error: FieldError): void;
202
- clearFieldErrors(entityType: string, id: string, fieldName: string, source?: 'client' | 'server'): void;
210
+ clearFieldErrors(entityType: string, id: string, fieldName: string, filter?: FieldErrorFilter): void;
203
211
  clearNonStickyFieldErrors(entityType: string, id: string, fieldName: string): void;
204
212
  getEntityErrors(entityType: string, id: string): readonly FieldError[];
205
213
  addEntityError(entityType: string, id: string, error: FieldError): void;
@@ -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,MAAM,oBAAoB,CAAA;AACpD,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,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,QAAQ,GAAG,QAAQ,GAC1B,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/bindx",
3
- "version": "0.1.49",
3
+ "version": "0.1.51",
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.49",
20
+ "@contember/bindx-client": "0.1.51",
21
21
  "@contember/graphql-client": "^2.1.0-beta.1"
22
22
  },
23
23
  "repository": {
@@ -407,7 +407,7 @@ export class ActionDispatcher {
407
407
  action.entityType,
408
408
  action.entityId,
409
409
  action.fieldName,
410
- action.source,
410
+ action.filter,
411
411
  )
412
412
  break
413
413
 
@@ -1,5 +1,5 @@
1
1
  import type { HasOneRelationState } from '../handles/types.js'
2
- import type { FieldError } from '../errors/types.js'
2
+ import type { FieldError, FieldErrorFilter } from '../errors/types.js'
3
3
 
4
4
  /**
5
5
  * Action types for the ActionDispatcher.
@@ -231,7 +231,7 @@ export interface ClearFieldErrorsAction {
231
231
  readonly entityType: string
232
232
  readonly entityId: string
233
233
  readonly fieldName: string
234
- readonly source?: 'client' | 'server'
234
+ readonly filter?: FieldErrorFilter
235
235
  }
236
236
 
237
237
  /**
@@ -471,9 +471,9 @@ export function clearFieldErrors(
471
471
  entityType: string,
472
472
  entityId: string,
473
473
  fieldName: string,
474
- source?: 'client' | 'server',
474
+ filter?: FieldErrorFilter,
475
475
  ): ClearFieldErrorsAction {
476
- return { type: 'CLEAR_FIELD_ERRORS', entityType, entityId, fieldName, source }
476
+ return { type: 'CLEAR_FIELD_ERRORS', entityType, entityId, fieldName, filter }
477
477
  }
478
478
 
479
479
  /**
@@ -8,6 +8,8 @@ export {
8
8
  type FieldError,
9
9
  type ErrorState,
10
10
  type ErrorInput,
11
+ type FieldErrorFilter,
12
+ matchesErrorFilter,
11
13
  ExecutionErrorTypes,
12
14
  isExecutionErrorType,
13
15
  classifyError,
@@ -125,6 +125,23 @@ export interface LoadError extends BindxError {
125
125
  */
126
126
  export type FieldError = ClientError | ServerError | LoadError
127
127
 
128
+ /**
129
+ * Selects which errors a clear operation removes. An omitted key matches any error.
130
+ */
131
+ export interface FieldErrorFilter {
132
+ readonly source?: FieldError['source']
133
+ readonly code?: string
134
+ }
135
+
136
+ /**
137
+ * Checks whether an error matches every key present in the filter.
138
+ */
139
+ export function matchesErrorFilter(error: FieldError, filter: FieldErrorFilter): boolean {
140
+ if (filter.source !== undefined && error.source !== filter.source) return false
141
+ if (filter.code !== undefined && error.code !== filter.code) return false
142
+ return true
143
+ }
144
+
128
145
  /**
129
146
  * Error state stored in the SnapshotStore.
130
147
  */
@@ -4,7 +4,7 @@ import type { SnapshotStore } from '../store/SnapshotStore.js'
4
4
  import { addFieldError, clearFieldErrors, setField } from '../core/actions.js'
5
5
  import { FIELD_REF_META, type FieldAccessor, type FieldRefMeta, type InputProps, type Unsubscribe } from './types.js'
6
6
  import { deepEqual } from '../utils/deepEqual.js'
7
- import { createClientError, type ErrorInput, type FieldError } from '../errors/types.js'
7
+ import { createClientError, type ErrorInput, type FieldError, type FieldErrorFilter } from '../errors/types.js'
8
8
  import type {
9
9
  FieldChangedEvent,
10
10
  FieldChangingEvent,
@@ -186,11 +186,11 @@ export class FieldHandle<T = unknown> extends EntityRelatedHandle {
186
186
  }
187
187
 
188
188
  /**
189
- * Clears all errors from this field.
189
+ * Clears errors from this field, or only those matching the filter.
190
190
  */
191
- clearErrors(): void {
191
+ clearErrors(filter?: FieldErrorFilter): void {
192
192
  this.dispatcher.dispatch(
193
- clearFieldErrors(this.entityType, this.entityId, this.fieldName),
193
+ clearFieldErrors(this.entityType, this.entityId, this.fieldName, filter),
194
194
  )
195
195
  }
196
196
 
@@ -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
@@ -9,6 +9,7 @@
9
9
  * - EntityRef / EntityAccessor
10
10
  */
11
11
 
12
+ import type { IsPlainObject } from '@contember/bindx-client'
12
13
  import type { FieldHandle } from './FieldHandle.js'
13
14
 
14
15
  // ============================================================================
@@ -22,7 +23,7 @@ export type HasOneRelationState =
22
23
  | 'creating'
23
24
 
24
25
  import type { ComponentBrand, AnyBrand } from '../brand/ComponentBrand.js'
25
- import type { FieldError, ErrorInput } from '../errors/types.js'
26
+ import type { FieldError, FieldErrorFilter, ErrorInput } from '../errors/types.js'
26
27
  import type {
27
28
  FieldChangedEvent,
28
29
  FieldChangingEvent,
@@ -51,8 +52,10 @@ export type { UnsubscribeType as Unsubscribe }
51
52
  // ============================================================================
52
53
 
53
54
  export type ScalarKeys<T> = {
54
- [K in keyof T]: T[K] extends (infer _U)[]
55
- ? never
55
+ [K in keyof T]: NonNullable<T[K]> extends readonly (infer U)[]
56
+ ? IsPlainObject<U> extends true
57
+ ? never
58
+ : K
56
59
  : NonNullable<T[K]> extends object
57
60
  ? K extends 'id'
58
61
  ? K
@@ -61,15 +64,15 @@ export type ScalarKeys<T> = {
61
64
  }[keyof T]
62
65
 
63
66
  export type HasManyKeys<T> = {
64
- [K in keyof T]: T[K] extends (infer U)[]
65
- ? U extends object
67
+ [K in keyof T]: NonNullable<T[K]> extends readonly (infer U)[]
68
+ ? IsPlainObject<U> extends true
66
69
  ? K
67
70
  : never
68
71
  : never
69
72
  }[keyof T]
70
73
 
71
74
  export type HasOneKeys<T> = {
72
- [K in keyof T]: T[K] extends (infer _U)[]
75
+ [K in keyof T]: NonNullable<T[K]> extends readonly (infer _U)[]
73
76
  ? never
74
77
  : NonNullable<T[K]> extends object
75
78
  ? K extends 'id'
@@ -140,7 +143,7 @@ export interface FieldRef<T> {
140
143
  readonly errors: readonly FieldError[]
141
144
  readonly hasError: boolean
142
145
  addError(error: ErrorInput): void
143
- clearErrors(): void
146
+ clearErrors(filter?: FieldErrorFilter): void
144
147
  onChange(listener: EventListener<FieldChangedEvent>): UnsubscribeType
145
148
  onChanging(interceptor: Interceptor<FieldChangingEvent>): UnsubscribeType
146
149
  }
@@ -413,8 +416,8 @@ export type EntityAccessorLike<TEntity> = EntityRefLike<TEntity> & {
413
416
  export type EntityFields<T> = {
414
417
  [K in ScalarKeys<T>]: FieldHandle<T[K]>
415
418
  } & {
416
- [K in HasManyKeys<T>]: T[K] extends (infer U)[]
417
- ? U extends object
419
+ [K in HasManyKeys<T>]: NonNullable<T[K]> extends readonly (infer U)[]
420
+ ? IsPlainObject<U> extends true
418
421
  ? HasManyAccessor<U>
419
422
  : never
420
423
  : never
@@ -427,9 +430,9 @@ export type EntityFields<T> = {
427
430
  */
428
431
  type FieldRefType<TEntity, TSelected, TSchema extends Record<string, object>, K extends keyof TEntity & keyof TSelected> =
429
432
  K extends ScalarKeys<TEntity> ? FieldRef<TEntity[K]> :
430
- K extends HasManyKeys<TEntity> ? (TEntity[K] extends (infer U)[]
431
- ? U extends object
432
- ? HasManyRef<U, ExtractNestedSelection<TSelected, K> extends (infer S)[] ? S : U, AnyBrand, EntityNameFromType<TSchema, U>, TSchema>
433
+ K extends HasManyKeys<TEntity> ? (NonNullable<TEntity[K]> extends readonly (infer U)[]
434
+ ? IsPlainObject<U> extends true
435
+ ? HasManyRef<U, ExtractNestedSelection<TSelected, K> extends readonly (infer S)[] ? S : U, AnyBrand, EntityNameFromType<TSchema, U>, TSchema>
433
436
  : never
434
437
  : never) :
435
438
  K extends HasOneKeys<TEntity> ? HasOneRef<
@@ -446,9 +449,9 @@ type FieldRefType<TEntity, TSelected, TSchema extends Record<string, object>, K
446
449
  */
447
450
  type FieldAccessorType<TEntity, TSelected, TSchema extends Record<string, object>, K extends keyof TEntity & keyof TSelected> =
448
451
  K extends ScalarKeys<TEntity> ? FieldAccessor<TEntity[K]> :
449
- K extends HasManyKeys<TEntity> ? (TEntity[K] extends (infer U)[]
450
- ? U extends object
451
- ? HasManyAccessor<U, ExtractNestedSelection<TSelected, K> extends (infer S)[] ? S : U, AnyBrand, EntityNameFromType<TSchema, U>, TSchema>
452
+ K extends HasManyKeys<TEntity> ? (NonNullable<TEntity[K]> extends readonly (infer U)[]
453
+ ? IsPlainObject<U> extends true
454
+ ? HasManyAccessor<U, ExtractNestedSelection<TSelected, K> extends readonly (infer S)[] ? S : U, AnyBrand, EntityNameFromType<TSchema, U>, TSchema>
452
455
  : never
453
456
  : never) :
454
457
  K extends HasOneKeys<TEntity> ? HasOneAccessor<
package/src/index.ts CHANGED
@@ -317,6 +317,7 @@ export type {
317
317
  ServerError,
318
318
  LoadError,
319
319
  FieldError,
320
+ FieldErrorFilter,
320
321
  ErrorState,
321
322
  ErrorInput,
322
323
  PathElement,
@@ -341,6 +342,7 @@ export {
341
342
  isLoadError,
342
343
  filterErrorsBySource,
343
344
  filterStickyErrors,
345
+ matchesErrorFilter,
344
346
  UnfetchedFieldError,
345
347
  resolveErrorPath,
346
348
  resolveAllErrors,
@@ -598,6 +598,11 @@ export class BatchPersister {
598
598
  for (const entity of entities) {
599
599
  let data: Record<string, unknown> | null = null
600
600
 
601
+ // The parent's update carries this row's nested `delete`, so a standalone
602
+ // update would target a row that no longer exists (issue #91). The entity
603
+ // stays in the dirty set so a persisting interceptor can still veto it.
604
+ if (entity.changeType === 'update' && this.store.isPlannedForDeleteByParent(entity.entityId)) continue
605
+
601
606
  if (entity.changeType === 'delete') {
602
607
  mutations.push({
603
608
  entityType: entity.entityType,
@@ -1186,9 +1191,39 @@ export class BatchPersister {
1186
1191
  )
1187
1192
  if (outcome === 'conflict') addConflict(ownerKey, relationConflictMessage(change.entityType, change.entityId, change.fieldName))
1188
1193
  }
1194
+ this.purgeChildrenDeletedByParent(execution, keys)
1189
1195
  return conflicts
1190
1196
  }
1191
1197
 
1198
+ /**
1199
+ * Drops the entities whose rows a confirmed parent mutation deleted through a
1200
+ * nested `delete`, the way a top-level delete already does — otherwise the
1201
+ * snapshot lingers and the next save writes a row that is gone (issue #91).
1202
+ */
1203
+ private purgeChildrenDeletedByParent(execution: PersistExecution, ownerKeys: ReadonlySet<string>): void {
1204
+ const targets = targetEntityTypesByRelation(execution)
1205
+ const deleted = new Set<string>()
1206
+ const collect = (entityType: string, entityId: string, fieldName: string, childId: string): void => {
1207
+ const targetType = targets.get(relationIdentityKey(entityType, entityId, fieldName))
1208
+ if (targetType) deleted.add(entityIdentityKey(targetType, childId))
1209
+ }
1210
+ for (const change of execution.hasOneChanges) {
1211
+ if (!ownerKeys.has(entityIdentityKey(change.entityType, change.entityId))) continue
1212
+ if (change.transition.operation !== 'delete') continue
1213
+ collect(change.entityType, change.entityId, change.fieldName, change.transition.targetId)
1214
+ }
1215
+ for (const change of execution.hasManyChanges) {
1216
+ if (!ownerKeys.has(entityIdentityKey(change.entityType, change.entityId))) continue
1217
+ for (const removal of change.removals) {
1218
+ if (removal.type === 'delete') collect(change.entityType, change.entityId, change.fieldName, removal.itemId)
1219
+ }
1220
+ }
1221
+ for (const key of deleted) {
1222
+ const child = splitExecutionKey(key)
1223
+ this.store.removeEntity(child.entityType, child.entityId)
1224
+ }
1225
+ }
1226
+
1192
1227
  private mapConfirmedIds(
1193
1228
  entity: ExecutionEntity,
1194
1229
  persistedId: string | undefined,
@@ -1565,3 +1600,16 @@ function splitExecutionKey(key: string): { entityType: string; entityId: string
1565
1600
  entityId: separator < 0 ? key : key.slice(separator + 1),
1566
1601
  }
1567
1602
  }
1603
+
1604
+ function relationIdentityKey(entityType: string, entityId: string, fieldName: string): string {
1605
+ return `${entityIdentityKey(entityType, entityId)}:${fieldName}`
1606
+ }
1607
+
1608
+ /** Relation key → the entity type its children have, the only source of a nested child's type. */
1609
+ function targetEntityTypesByRelation(execution: PersistExecution): ReadonlyMap<string, string> {
1610
+ const targets = new Map<string, string>()
1611
+ for (const field of execution.relationFields) {
1612
+ targets.set(relationIdentityKey(field.entityType, field.entityId, field.fieldName), field.targetEntityType)
1613
+ }
1614
+ return targets
1615
+ }
@@ -1,5 +1,5 @@
1
- import type { ErrorState, FieldError } from '../errors/types.js'
2
- import { filterStickyErrors } from '../errors/types.js'
1
+ import type { ErrorState, FieldError, FieldErrorFilter } from '../errors/types.js'
2
+ import { filterStickyErrors, matchesErrorFilter } from '../errors/types.js'
3
3
  import type { RekeyContext, Rekeyable } from './RekeyOrchestrator.js'
4
4
 
5
5
  /**
@@ -39,21 +39,24 @@ export class ErrorStore implements Rekeyable {
39
39
  }
40
40
 
41
41
  /**
42
- * Clears field errors, optionally filtering by source.
42
+ * Clears field errors, optionally narrowed to those matching the filter.
43
43
  */
44
- clearFieldErrors(fieldKey: string, source?: 'client' | 'server'): void {
44
+ clearFieldErrors(fieldKey: string, filter?: FieldErrorFilter): void {
45
45
  const existing = this.fieldErrors.get(fieldKey)
46
46
  if (!existing) return
47
47
 
48
- if (source === undefined) {
48
+ if (filter === undefined) {
49
+ this.fieldErrors.delete(fieldKey)
50
+ return
51
+ }
52
+
53
+ const filtered = existing.errors.filter(e => !matchesErrorFilter(e, filter))
54
+ if (filtered.length === existing.errors.length) return
55
+
56
+ if (filtered.length === 0) {
49
57
  this.fieldErrors.delete(fieldKey)
50
58
  } else {
51
- const filtered = existing.errors.filter(e => e.source !== source)
52
- if (filtered.length === 0) {
53
- this.fieldErrors.delete(fieldKey)
54
- } else {
55
- this.fieldErrors.set(fieldKey, { errors: filtered, version: existing.version + 1 })
56
- }
59
+ this.fieldErrors.set(fieldKey, { errors: filtered, version: existing.version + 1 })
57
60
  }
58
61
  }
59
62
 
@@ -162,7 +165,7 @@ export class ErrorStore implements Rekeyable {
162
165
 
163
166
  for (const key of this.fieldErrors.keys()) {
164
167
  if (key.startsWith(keyPrefix)) {
165
- this.clearFieldErrors(key, 'server')
168
+ this.clearFieldErrors(key, { source: 'server' })
166
169
  }
167
170
  }
168
171
 
@@ -1,5 +1,7 @@
1
1
  import { parentKeyFromOwnerPrefix, parentKeyFromRelationKey } from './relationKey.js'
2
+ import { PlannedDeleteIndex } from './PlannedDeleteIndex.js'
2
3
  import { RelationEdgeIndex } from './RelationEdgeIndex.js'
4
+ import { RelationOwnerIndex } from './RelationOwnerIndex.js'
3
5
 
4
6
  type ReconciliationResult = 'applied' | 'conflict'
5
7
 
@@ -109,6 +111,7 @@ export function computeDefaultOrderedIds(state: StoredHasManyState): string[] {
109
111
  export class HasManyStore {
110
112
  /** Has-many list states keyed by "parentType:parentId:fieldName" */
111
113
  private readonly hasManyStates = new Map<string, StoredHasManyState>()
114
+ private readonly owners = new RelationOwnerIndex()
112
115
 
113
116
  /**
114
117
  * Bidirectional live-edge index, maintained by {@link writeHasMany} /
@@ -117,6 +120,12 @@ export class HasManyStore {
117
120
  */
118
121
  private readonly edges = new RelationEdgeIndex()
119
122
 
123
+ /**
124
+ * Children some relation plans to remove with `delete`, maintained by
125
+ * {@link writeHasMany} / {@link deleteHasMany}, like {@link edges}.
126
+ */
127
+ private readonly plannedDeletes = new PlannedDeleteIndex()
128
+
120
129
  private mutationVersion = 0
121
130
 
122
131
  /**
@@ -143,12 +152,15 @@ export class HasManyStore {
143
152
  * keeps the index correct without tracking the reverse direction itself.
144
153
  */
145
154
  private writeHasMany(key: string, state: StoredHasManyState): void {
146
- const oldLive = liveHasManyChildIds(this.hasManyStates.get(key))
155
+ const previous = this.hasManyStates.get(key)
156
+ const oldLive = liveHasManyChildIds(previous)
147
157
  const newLive = liveHasManyChildIds(state)
148
158
  this.hasManyStates.set(key, state)
159
+ if (!previous) this.owners.add(key)
149
160
  const parentKey = parentKeyFromRelationKey(key)
150
161
  for (const id of newLive) if (!oldLive.has(id)) this.edges.addEdge(parentKey, id)
151
162
  for (const id of oldLive) if (!newLive.has(id)) this.edges.removeEdge(parentKey, id)
163
+ this.reconcilePlannedDeletes(plannedDeleteChildIds(previous), plannedDeleteChildIds(state))
152
164
  this.mutationVersion++
153
165
  }
154
166
 
@@ -162,9 +174,22 @@ export class HasManyStore {
162
174
  const parentKey = parentKeyFromRelationKey(key)
163
175
  for (const id of liveHasManyChildIds(existing)) this.edges.removeEdge(parentKey, id)
164
176
  this.hasManyStates.delete(key)
177
+ this.owners.delete(key)
178
+ this.reconcilePlannedDeletes(plannedDeleteChildIds(existing), new Set())
165
179
  this.mutationVersion++
166
180
  }
167
181
 
182
+ /** Applies one relation's planned-delete diff to the refcounted index. */
183
+ private reconcilePlannedDeletes(previous: ReadonlySet<string>, next: ReadonlySet<string>): void {
184
+ for (const id of next) if (!previous.has(id)) this.plannedDeletes.retain(id)
185
+ for (const id of previous) if (!next.has(id)) this.plannedDeletes.release(id)
186
+ }
187
+
188
+ /** Whether any has-many relation plans to remove {@link childId} with `delete`. */
189
+ isPlannedForDelete(childId: string): boolean {
190
+ return this.plannedDeletes.has(childId)
191
+ }
192
+
168
193
  /**
169
194
  * Gets or creates has-many list state.
170
195
  */
@@ -608,8 +633,8 @@ export class HasManyStore {
608
633
  * Collects the field names of dirty has-many relations for an entity.
609
634
  */
610
635
  collectDirtyRelations(keyPrefix: string, dirtyRelations: string[]): void {
611
- for (const [key, state] of this.hasManyStates) {
612
- if (!key.startsWith(keyPrefix)) continue
636
+ for (const key of this.owners.get(parentKeyFromOwnerPrefix(keyPrefix))) {
637
+ const state = this.hasManyStates.get(key)!
613
638
  const fieldName = key.slice(keyPrefix.length)
614
639
 
615
640
  if (state.plannedRemovals.size > 0 || state.plannedAdditions.size > 0) {
@@ -732,7 +757,9 @@ export class HasManyStore {
732
757
  */
733
758
  clear(): void {
734
759
  this.hasManyStates.clear()
760
+ this.owners.clear()
735
761
  this.edges.clear()
762
+ this.plannedDeletes.clear()
736
763
  this.mutationVersion++
737
764
  }
738
765
  }
@@ -754,6 +781,15 @@ function liveHasManyChildIds(state: StoredHasManyState | undefined): Set<string>
754
781
  return live
755
782
  }
756
783
 
784
+ function plannedDeleteChildIds(state: StoredHasManyState | undefined): Set<string> {
785
+ const ids = new Set<string>()
786
+ if (!state) return ids
787
+ for (const [id, type] of state.plannedRemovals) {
788
+ if (type === 'delete') ids.add(id)
789
+ }
790
+ return ids
791
+ }
792
+
757
793
  interface HasManyReconciliation {
758
794
  state: StoredHasManyState
759
795
  result: ReconciliationResult