Skip to content

Commit c0a1f6b

Browse files
Tree-shake EventList (#4457)
1 parent 5c2669a commit c0a1f6b

File tree

1 file changed

+25
-34
lines changed

1 file changed

+25
-34
lines changed

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

Lines changed: 25 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,9 @@ 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]);
113113
this.eventLists_[i] = null;
114114
} else {
115115
sentAll = false;
@@ -125,33 +125,24 @@ export class EventQueue {
125125
}
126126
}
127127

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-
}
128+
interface EventList {
129+
events: Event[];
130+
path: Path;
131+
}
136132

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);
133+
/**
134+
* Iterates through the list and raises each event
135+
*/
136+
function eventListRaise(eventList: EventList) {
137+
for (let i = 0; i < eventList.events.length; i++) {
138+
const eventData = eventList.events[i];
139+
if (eventData !== null) {
140+
eventList.events[i] = null;
141+
const eventFn = eventData.getEventRunner();
142+
if (logger) {
143+
log('event: ' + eventData.toString());
150144
}
145+
exceptionGuard(eventFn);
151146
}
152147
}
153-
154-
getPath(): Path {
155-
return this.path_;
156-
}
157148
}

0 commit comments

Comments
 (0)