diff --git a/packages/core/src/runtime/dataflow.ts b/packages/core/src/runtime/dataflow.ts index 0ca22df..fef04d7 100644 --- a/packages/core/src/runtime/dataflow.ts +++ b/packages/core/src/runtime/dataflow.ts @@ -75,6 +75,12 @@ export class Graph { subjectObjects.forEach((oid: ObjectId) => MapSet.del(this.edgesForward, oid, subjectId)); } + observersOf(objectId: ObjectId): Array { + const subjects = this.edgesForward.get(objectId); + if (subjects === void 0) return []; + return Array.from(subjects); + } + repairDamage(repairNode: (subjectId: SubjectId) => void) { let repairedThisRound = new FlexSet(this.objectIdCanonicalizer); while (true) { @@ -92,8 +98,7 @@ export class Graph { if (workSet.size === 0) break; workSet.forEach(objectId => { - const subjects = this.edgesForward.get(objectId) ?? [] as Array; - subjects.forEach((subjectId: SubjectId) => { + this.observersOf(objectId).forEach((subjectId: SubjectId) => { this.forgetSubject(subjectId); this.withSubject(subjectId, () => repairNode(subjectId)); });