chore(): Module Internal Events (#13296)
* chore(): Ensure the product module emits all necessary events * chore(): Ensure the product module emits all necessary events * Update events tests * more events and fixes * more tests and category fixes * more tests and category fixes * Add todo * update updateProduct_ event emitting and adjust test * Adjust update products implementation to rely on already computed events * rm unnecessary update variants events * Fix formatting in changeset for product events * refactor: Manage event emitting automatically (WIP) * refactor: Manage event emitting automatically (WIP) * chore(api-key): Add missing emit events and refactoring * chore(cart): Add missing emit events and refactoring * chore(customer): Add missing emit events and refactoring * chore(fufillment, utils): Add missing emit events and refactoring * chore(fufillment, utils): Add missing emit events and refactoring * chore(inventory): Add missing emit events and refactoring * chore(notification): Add missing emit events and refactoring * chore(utils): Remove medusa service event handling legacy * chore(product): Add missing emit events and refactoring * chore(order): Add missing emit events and refactoring * chore(payment): Add missing emit events and refactoring * chore(pricing, util): Add missing emit events and refactoring, fix internal service upsertWithReplace event dispatching * chore(promotions): Add missing emit events and refactoring * chore(region): Add missing emit events and refactoring * chore(sales-channel): Add missing emit events and refactoring * chore(settings): Add missing emit events and refactoring * chore(stock-location): Add missing emit events and refactoring * chore(store): Add missing emit events and refactoring * chore(taxes): Add missing emit events and refactoring * chore(user): Add missing emit events and refactoring * fix unit tests * rm changeset for regeneration * Create changeset for Medusa.js patch updates Add a changeset for patch updates to multiple Medusa.js modules. * rm unused product event builders * address feedback * remove old changeset * fix event action for token generated * fix user module events * fix import * fix promotion events * add new module integration tests shard * fix medusa service * revert shard * fix event action * fix pipeline * fix pipeline --------- Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
afe21741c4
commit
e8822f3e69
@@ -9,12 +9,13 @@ import {
|
||||
import { composeMessage } from "./build-event-messages"
|
||||
|
||||
export class MessageAggregator implements IMessageAggregator {
|
||||
private messages: Message[] = []
|
||||
#messagesHash: Set<string> = new Set()
|
||||
#messages: Message[] = []
|
||||
|
||||
constructor() {}
|
||||
|
||||
count(): number {
|
||||
return this.messages.length
|
||||
return this.#messages.length
|
||||
}
|
||||
|
||||
save(msg: Message | Message[]): void {
|
||||
@@ -23,7 +24,19 @@ export class MessageAggregator implements IMessageAggregator {
|
||||
return
|
||||
}
|
||||
|
||||
this.messages.push(...messages)
|
||||
for (const message of messages) {
|
||||
try {
|
||||
const hash = JSON.stringify(message)
|
||||
if (!this.#messagesHash.has(hash)) {
|
||||
this.#messagesHash.add(hash)
|
||||
this.#messages.push(message)
|
||||
}
|
||||
} catch (e) {
|
||||
// noop: if the message is not serializable, we don't want to deduplicate it
|
||||
// It should not happen, but we don't want to fail the whole process
|
||||
this.#messages.push(message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
saveRawMessageData<T>(
|
||||
@@ -55,15 +68,15 @@ export class MessageAggregator implements IMessageAggregator {
|
||||
const { groupBy, sortBy } = format ?? {}
|
||||
|
||||
if (sortBy) {
|
||||
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],
|
||||
default: [...this.#messages],
|
||||
}
|
||||
|
||||
if (groupBy) {
|
||||
messages = this.messages.reduce<{
|
||||
messages = this.#messages.reduce<{
|
||||
[key: string]: Message[]
|
||||
}>((acc, msg) => {
|
||||
const key = groupBy
|
||||
@@ -91,7 +104,8 @@ export class MessageAggregator implements IMessageAggregator {
|
||||
|
||||
clearMessages(): void {
|
||||
// Ensure no references are left over in case something rely on messages
|
||||
this.messages.length = 0
|
||||
this.#messages.length = 0
|
||||
this.#messagesHash.clear()
|
||||
}
|
||||
|
||||
private getValueFromPath(obj: any, path: string): any {
|
||||
|
||||
Reference in New Issue
Block a user