Skip to content

Commit 08660dd

Browse files
Tree-shake EventList
1 parent 384b64d commit 08660dd

File tree

1 file changed

+36
-34
lines changed

1 file changed

+36
-34
lines changed

packages/database/src/core/view/EventQueue.ts

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import { Path } from '../util/Path';
19-
import { log, logger, exceptionGuard } from '../util/util';
19+
import { exceptionGuard, log, logger } from '../util/util';
2020
import { Event } from './Event';
2121

2222
/**
@@ -45,20 +45,20 @@ export class EventQueue {
4545
*/
4646
queueEvents(eventDataList: Event[]) {
4747
// We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.
48-
let currList = null;
48+
let currList: EventList | null = null;
4949
for (let i = 0; i < eventDataList.length; i++) {
50-
const eventData = eventDataList[i];
51-
const eventPath = eventData.getPath();
52-
if (currList !== null && !eventPath.equals(currList.getPath())) {
50+
const data = eventDataList[i];
51+
const path = data.getPath();
52+
if (currList !== null && !path.equals(currList.path)) {
5353
this.eventLists_.push(currList);
5454
currList = null;
5555
}
5656

5757
if (currList === null) {
58-
currList = new EventList(eventPath);
58+
currList = { events: [], path };
5959
}
6060

61-
currList.add(eventData);
61+
currList.events.push(data);
6262
}
6363
if (currList) {
6464
this.eventLists_.push(currList);
@@ -107,9 +107,20 @@ export class EventQueue {
107107
for (let i = 0; i < this.eventLists_.length; i++) {
108108
const eventList = this.eventLists_[i];
109109
if (eventList) {
110-
const eventPath = eventList.getPath();
110+
const eventPath = eventList.path;
111111
if (predicate(eventPath)) {
112-
this.eventLists_[i].raise();
112+
eventListRaise(this.eventLists_[i]);
113+
for (let i1 = 0; i1 < this.eventLists_[i].events.length; i1++) {
114+
const eventData = this.eventLists_[i].events[i1];
115+
if (eventData !== null) {
116+
this.eventLists_[i].events[i1] = null;
117+
const eventFn = eventData.getEventRunner();
118+
if (logger) {
119+
log('event: ' + eventData.toString());
120+
}
121+
exceptionGuard(eventFn);
122+
}
123+
}
113124
this.eventLists_[i] = null;
114125
} else {
115126
sentAll = false;
@@ -125,33 +136,24 @@ export class EventQueue {
125136
}
126137
}
127138

128-
export class EventList {
129-
private events_: Event[] = [];
130-
131-
constructor(private readonly path_: Path) {}
132-
133-
add(eventData: Event) {
134-
this.events_.push(eventData);
135-
}
139+
interface EventList {
140+
events: Event[];
141+
path: Path;
142+
}
136143

137-
/**
138-
* Iterates through the list and raises each event
139-
*/
140-
raise() {
141-
for (let i = 0; i < this.events_.length; i++) {
142-
const eventData = this.events_[i];
143-
if (eventData !== null) {
144-
this.events_[i] = null;
145-
const eventFn = eventData.getEventRunner();
146-
if (logger) {
147-
log('event: ' + eventData.toString());
148-
}
149-
exceptionGuard(eventFn);
144+
/**
145+
* Iterates through the list and raises each event
146+
*/
147+
function eventListRaise(eventList: EventList) {
148+
for (let i = 0; i < eventList.events.length; i++) {
149+
const eventData = eventList.events[i];
150+
if (eventData !== null) {
151+
eventList.events[i] = null;
152+
const eventFn = eventData.getEventRunner();
153+
if (logger) {
154+
log('event: ' + eventData.toString());
150155
}
156+
exceptionGuard(eventFn);
151157
}
152158
}
153-
154-
getPath(): Path {
155-
return this.path_;
156-
}
157159
}

0 commit comments

Comments
 (0)