Skip to content

Commit

Permalink
chore(utils): Cleanup and improve message aggregator (#9300)
Browse files Browse the repository at this point in the history
* chore(utils): Cleanup and improve message aggregator

* fix
  • Loading branch information
adrien2p authored Sep 26, 2024
1 parent be1adac commit 6854fea
Showing 1 changed file with 15 additions and 20 deletions.
35 changes: 15 additions & 20 deletions packages/core/utils/src/event-bus/message-aggregator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,21 @@ import {
import { composeMessage } from "./build-event-messages"

export class MessageAggregator implements IMessageAggregator {
private messages: Message[]
private messages: Message[] = []

constructor() {
this.messages = []
}
constructor() {}

count(): number {
return this.messages.length
}

save(msg: Message | Message[]): void {
if (!msg || (Array.isArray(msg) && msg.length === 0)) {
const messages = Array.isArray(msg) ? msg : [msg]
if (messages.length === 0) {
return
}

if (Array.isArray(msg)) {
this.messages.push(...msg)
} else {
this.messages.push(msg)
}
this.messages.push(...messages)
}

saveRawMessageData<T>(
Expand Down Expand Up @@ -63,10 +58,12 @@ export class MessageAggregator implements IMessageAggregator {
this.messages.sort((a, b) => this.compareMessages(a, b, sortBy))
}

let messages: { [group: string]: Message[] } = { default: this.messages }
let messages: { [group: string]: Message[] } = {
default: [...this.messages],
}

if (groupBy) {
const groupedMessages = this.messages.reduce<{
messages = this.messages.reduce<{
[key: string]: Message[]
}>((acc, msg) => {
const key = groupBy
Expand All @@ -78,8 +75,6 @@ export class MessageAggregator implements IMessageAggregator {
acc[key].push(msg)
return acc
}, {})

messages = groupedMessages
}

if (format.internal) {
Expand All @@ -95,16 +90,16 @@ export class MessageAggregator implements IMessageAggregator {
}

clearMessages(): void {
this.messages = []
// Ensure no references are left over in case something rely on messages
this.messages.length = 0
}

private getValueFromPath(obj: any, path: string): any {
const keys = path.split(".")
for (const key of keys) {
obj = obj[key]
if (obj === undefined) break
}
return obj
return keys.reduce((acc, key) => {
if (acc === undefined) return undefined
return acc[key]
}, obj)
}

private compareMessages(
Expand Down

0 comments on commit 6854fea

Please sign in to comment.