chore(utils): Cleanup and improve message aggregator (#9300)
* chore(utils): Cleanup and improve message aggregator * fix
This commit is contained in:
1 parent
be1adac024
commit
6854feaf50
1 file changed
+15
-20
@@ -9,26 +9,21 @@ import {
|
|||||||
import { composeMessage } from "./build-event-messages"
|
import { composeMessage } from "./build-event-messages"
|
||||||
|
|
||||||
export class MessageAggregator implements IMessageAggregator {
|
export class MessageAggregator implements IMessageAggregator {
|
||||||
private messages: Message[]
|
private messages: Message[] = []
|
||||||
|
|
||||||
constructor() {
|
constructor() {}
|
||||||
this.messages = []
|
|
||||||
}
|
|
||||||
|
|
||||||
count(): number {
|
count(): number {
|
||||||
return this.messages.length
|
return this.messages.length
|
||||||
}
|
}
|
||||||
|
|
||||||
save(msg: Message | Message[]): void {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(msg)) {
|
this.messages.push(...messages)
|
||||||
this.messages.push(...msg)
|
|
||||||
} else {
|
|
||||||
this.messages.push(msg)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
saveRawMessageData<T>(
|
saveRawMessageData<T>(
|
||||||
@@ -63,10 +58,12 @@ export class MessageAggregator implements IMessageAggregator {
|
|||||||
this.messages.sort((a, b) => this.compareMessages(a, b, sortBy))
|
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) {
|
if (groupBy) {
|
||||||
const groupedMessages = this.messages.reduce<{
|
messages = this.messages.reduce<{
|
||||||
[key: string]: Message[]
|
[key: string]: Message[]
|
||||||
}>((acc, msg) => {
|
}>((acc, msg) => {
|
||||||
const key = groupBy
|
const key = groupBy
|
||||||
@@ -78,8 +75,6 @@ export class MessageAggregator implements IMessageAggregator {
|
|||||||
acc[key].push(msg)
|
acc[key].push(msg)
|
||||||
return acc
|
return acc
|
||||||
}, {})
|
}, {})
|
||||||
|
|
||||||
messages = groupedMessages
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (format.internal) {
|
if (format.internal) {
|
||||||
@@ -95,16 +90,16 @@ export class MessageAggregator implements IMessageAggregator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
clearMessages(): void {
|
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 {
|
private getValueFromPath(obj: any, path: string): any {
|
||||||
const keys = path.split(".")
|
const keys = path.split(".")
|
||||||
for (const key of keys) {
|
return keys.reduce((acc, key) => {
|
||||||
obj = obj[key]
|
if (acc === undefined) return undefined
|
||||||
if (obj === undefined) break
|
return acc[key]
|
||||||
}
|
}, obj)
|
||||||
return obj
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private compareMessages(
|
private compareMessages(
|
||||||
|
|||||||
Reference in new issue
Block a user