From 538a7c51af8942f474b0e125baece8512ad48409 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Fri, 18 Oct 2024 15:55:56 -0700 Subject: [PATCH] Fix conflict on removed values in repository --- package-lock.json | 2 +- packages/store/src/index.ts | 1 + packages/util/src/Repository.ts | 28 ++++++++++------------------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd2eae0..52fa1c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3635,7 +3635,7 @@ }, "packages/app": { "name": "@welshman/app", - "version": "0.0.16", + "version": "0.0.17", "license": "MIT", "dependencies": { "@welshman/dvm": "~0.0.10", diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index fc4188b..8c59c2d 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -191,6 +191,7 @@ export const deriveEventsMapped = (repository: Repository, { for (const update of updates) { for (const event of update.added.values()) { added.set(event.id, event) + removed.delete(event.id) } for (const id of update.removed) { diff --git a/packages/util/src/Repository.ts b/packages/util/src/Repository.ts index 5572cd6..8a95825 100644 --- a/packages/util/src/Repository.ts +++ b/packages/util/src/Repository.ts @@ -32,24 +32,7 @@ export class Repository extends Emitter { } load = (events: E[], chunkSize = 1000) => { - this.clear() - const added = [] - - for (const eventsChunk of chunk(chunkSize, events)) { - for (const event of eventsChunk) { - if (this.publish(event, {shouldNotify: false})) { - added.push(event) - } - } - } - - const removed = new Set(this.deletes.keys()) - - this.emit('update', {added, removed}) - } - - clear = () => { const removed = new Set(this.eventsById.keys()) this.eventsById.clear() @@ -60,7 +43,16 @@ export class Repository extends Emitter { this.eventsByAuthor.clear() this.deletes.clear() - this.emit('update', {added: [], removed}) + for (const eventsChunk of chunk(chunkSize, events)) { + for (const event of eventsChunk) { + if (this.publish(event, {shouldNotify: false})) { + added.push(event) + removed.delete(event.id) + } + } + } + + this.emit('update', {added, removed}) } // API