chore: Rename all event keys to uppercase (#7787)

* chore: Rename all event keys to uppercase

* fix: Remove main entity from event builder
This commit is contained in:
Stevche Radevski
2024-06-21 10:41:35 +02:00
committed by GitHub
parent 937a632eb6
commit ee35379e21
22 changed files with 166 additions and 187 deletions

View File

@@ -2,56 +2,43 @@ import { camelToSnakeCase, kebabCase, lowerCaseFirst } from "../common"
import { CommonEvents } from "./common-events"
import { KebabCase, SnakeCase } from "@medusajs/types"
type ReturnType<TNames extends string[]> = TNames extends [
infer TFirstName,
...infer TRest
]
? {
[K in Lowercase<CommonEvents>]: `${KebabCase<TFirstName & string>}.${K}`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_created`]: `${KebabCase<
K & string
>}.created`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_updated`]: `${KebabCase<
K & string
>}.updated`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_deleted`]: `${KebabCase<
K & string
>}.deleted`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_restored`]: `${KebabCase<
K & string
>}.restored`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_attached`]: `${KebabCase<
K & string
>}.attached`
} & {
[K in TRest[number] as `${SnakeCase<K & string>}_detached`]: `${KebabCase<
K & string
>}.detached`
}
: {}
type ReturnType<TNames extends string[]> = {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_CREATED`]: `${KebabCase<K & string>}.created`
} & {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_UPDATED`]: `${KebabCase<K & string>}.updated`
} & {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_DELETED`]: `${KebabCase<K & string>}.deleted`
} & {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_RESTORED`]: `${KebabCase<K & string>}.restored`
} & {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_ATTACHED`]: `${KebabCase<K & string>}.attached`
} & {
[K in TNames[number] as `${Uppercase<
SnakeCase<K & string>
>}_DETACHED`]: `${KebabCase<K & string>}.detached`
}
/**
* From the given strings it will produce the event names accordingly.
* the result will look like:
* input: 'serviceZone'
* output: {
* created: 'fulfillment-set.created',
* updated: 'fulfillment-set.updated',
* deleted: 'fulfillment-set.deleted',
* restored: 'fulfillment-set.restored',
* attached: 'fulfillment-set.attached',
* detached: 'fulfillment-set.detached',
* service_zone_created: 'service-zone.created',
* service_zone_updated: 'service-zone.updated',
* service_zone_deleted: 'service-zone.deleted',
* service_zone_restored: 'service-zone.restored',
* service_zone_attached: 'service-zone.attached',
* service_zone_detached: 'service-zone.detached',
* SERVICE_ZONE_CREATED: 'service-zone.created',
* SERVICE_ZONE_UPDATED: 'service-zone.updated',
* SERVICE_ZONE_DELETED: 'service-zone.deleted',
* SERVICE_ZONE_RESTORED: 'service-zone.restored',
* SERVICE_ZONE_ATTACHED: 'service-zone.attached',
* SERVICE_ZONE_DETACHED: 'service-zone.detached',
* ...
* }
*
@@ -65,16 +52,9 @@ export function buildEventNamesFromEntityName<TNames extends string[]>(
for (let i = 0; i < names.length; i++) {
const name = names[i]
const snakedCaseName = lowerCaseFirst(camelToSnakeCase(name))
const snakedCaseName = camelToSnakeCase(name).toUpperCase()
const kebabCaseName = lowerCaseFirst(kebabCase(name))
if (i === 0) {
for (const event of Object.values(CommonEvents) as string[]) {
events[event] = `${prefix ? prefix + "." : ""}${kebabCaseName}.${event}`
}
continue
}
for (const event of Object.values(CommonEvents) as string[]) {
events[`${snakedCaseName}_${event}`] = `${
prefix ? prefix + "." : ""

View File

@@ -16,20 +16,17 @@ import { Context, EventBusTypes } from "@medusajs/types"
* sharedContext,
* })
*
* @param isMainEntity
* @param action
* @param object
* @param eventsEnum
* @param service
*/
export function eventBuilderFactory({
isMainEntity,
action,
object,
eventsEnum,
source,
}: {
isMainEntity?: boolean
action: string
object: string
eventsEnum: Record<string, string>
@@ -55,9 +52,7 @@ export function eventBuilderFactory({
action,
context: sharedContext,
data: { id: dataItem.id },
eventName: isMainEntity
? eventsEnum[action]
: eventsEnum[`${object}_${action}`],
eventName: eventsEnum[`${object}_${action}`],
object,
})
})

View File

@@ -1,5 +1,5 @@
export const OrderEvents = {
placed: "order.placed",
canceled: "order.canceled",
completed: "order.completed",
PLACED: "order.placed",
CANCELED: "order.canceled",
COMPLETED: "order.completed",
}

View File

@@ -5,5 +5,5 @@ const eventBaseNames: ["user", "invite"] = ["user", "invite"]
export const UserEvents = {
...buildEventNamesFromEntityName(eventBaseNames, Modules.USER),
invite_token_generated: `${Modules.USER}.user.invite.token_generated`,
INVITE_TOKEN_GENERATED: `${Modules.USER}.user.invite.token_generated`,
}