From 08660dd99e4f5629dc71089685a6d59208a5ca0e Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Thu, 11 Feb 2021 10:33:02 -0700 Subject: [PATCH 1/2] Tree-shake EventList --- packages/database/src/core/view/EventQueue.ts | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/packages/database/src/core/view/EventQueue.ts b/packages/database/src/core/view/EventQueue.ts index 9e0db2e4a9d..8c4e9f185b6 100644 --- a/packages/database/src/core/view/EventQueue.ts +++ b/packages/database/src/core/view/EventQueue.ts @@ -16,7 +16,7 @@ */ import { Path } from '../util/Path'; -import { log, logger, exceptionGuard } from '../util/util'; +import { exceptionGuard, log, logger } from '../util/util'; import { Event } from './Event'; /** @@ -45,20 +45,20 @@ export class EventQueue { */ queueEvents(eventDataList: Event[]) { // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly. - let currList = null; + let currList: EventList | null = null; for (let i = 0; i < eventDataList.length; i++) { - const eventData = eventDataList[i]; - const eventPath = eventData.getPath(); - if (currList !== null && !eventPath.equals(currList.getPath())) { + const data = eventDataList[i]; + const path = data.getPath(); + if (currList !== null && !path.equals(currList.path)) { this.eventLists_.push(currList); currList = null; } if (currList === null) { - currList = new EventList(eventPath); + currList = { events: [], path }; } - currList.add(eventData); + currList.events.push(data); } if (currList) { this.eventLists_.push(currList); @@ -107,9 +107,20 @@ export class EventQueue { for (let i = 0; i < this.eventLists_.length; i++) { const eventList = this.eventLists_[i]; if (eventList) { - const eventPath = eventList.getPath(); + const eventPath = eventList.path; if (predicate(eventPath)) { - this.eventLists_[i].raise(); + eventListRaise(this.eventLists_[i]); + for (let i1 = 0; i1 < this.eventLists_[i].events.length; i1++) { + const eventData = this.eventLists_[i].events[i1]; + if (eventData !== null) { + this.eventLists_[i].events[i1] = null; + const eventFn = eventData.getEventRunner(); + if (logger) { + log('event: ' + eventData.toString()); + } + exceptionGuard(eventFn); + } + } this.eventLists_[i] = null; } else { sentAll = false; @@ -125,33 +136,24 @@ export class EventQueue { } } -export class EventList { - private events_: Event[] = []; - - constructor(private readonly path_: Path) {} - - add(eventData: Event) { - this.events_.push(eventData); - } +interface EventList { + events: Event[]; + path: Path; +} - /** - * Iterates through the list and raises each event - */ - raise() { - for (let i = 0; i < this.events_.length; i++) { - const eventData = this.events_[i]; - if (eventData !== null) { - this.events_[i] = null; - const eventFn = eventData.getEventRunner(); - if (logger) { - log('event: ' + eventData.toString()); - } - exceptionGuard(eventFn); +/** + * Iterates through the list and raises each event + */ +function eventListRaise(eventList: EventList) { + for (let i = 0; i < eventList.events.length; i++) { + const eventData = eventList.events[i]; + if (eventData !== null) { + eventList.events[i] = null; + const eventFn = eventData.getEventRunner(); + if (logger) { + log('event: ' + eventData.toString()); } + exceptionGuard(eventFn); } } - - getPath(): Path { - return this.path_; - } } From 22b71d8e94ae47340b27ec26f82d024ce87ab451 Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Thu, 11 Feb 2021 10:34:16 -0700 Subject: [PATCH 2/2] Cleanup --- packages/database/src/core/view/EventQueue.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/database/src/core/view/EventQueue.ts b/packages/database/src/core/view/EventQueue.ts index 8c4e9f185b6..84fc3f355f7 100644 --- a/packages/database/src/core/view/EventQueue.ts +++ b/packages/database/src/core/view/EventQueue.ts @@ -110,17 +110,6 @@ export class EventQueue { const eventPath = eventList.path; if (predicate(eventPath)) { eventListRaise(this.eventLists_[i]); - for (let i1 = 0; i1 < this.eventLists_[i].events.length; i1++) { - const eventData = this.eventLists_[i].events[i1]; - if (eventData !== null) { - this.eventLists_[i].events[i1] = null; - const eventFn = eventData.getEventRunner(); - if (logger) { - log('event: ' + eventData.toString()); - } - exceptionGuard(eventFn); - } - } this.eventLists_[i] = null; } else { sentAll = false;