feat(medusa): Migrate NotificationService to TS + add NotificationInterface (#1922)

This commit is contained in:
Adrien de Peretti
2022-07-27 20:07:57 +02:00
committed by GitHub
parent 902af55723
commit 6014872a72
8 changed files with 355 additions and 271 deletions
+2
View File
@@ -4,5 +4,7 @@ export * from "./tax-service"
export * from "./transaction-base-service"
export * from "./batch-job-strategy"
export * from "./file-service"
export * from "./notification-service"
export * from "./price-selection-strategy"
export * from "./models/base-entity"
export * from "./models/soft-deletable-entity"
@@ -0,0 +1,55 @@
import { TransactionBaseService } from "./transaction-base-service"
import BaseNotificationService from "medusa-interfaces/dist/notification-service"
type ReturnedData = {
to: string
status: string
data: Record<string, unknown>
}
export interface INotificationService<T extends TransactionBaseService<never>>
extends TransactionBaseService<T> {
sendNotification(
event: string,
data: unknown,
attachmentGenerator: unknown
): Promise<ReturnedData>
resendNotification(
notification: unknown,
config: unknown,
attachmentGenerator: unknown
): Promise<ReturnedData>
}
export abstract class AbstractNotificationService<
T extends TransactionBaseService<never>
>
extends TransactionBaseService<T>
implements INotificationService<T>
{
static identifier: string
getIdentifier(): string {
return (this.constructor as any).identifier
}
abstract sendNotification(
event: string,
data: unknown,
attachmentGenerator: unknown
): Promise<ReturnedData>
abstract resendNotification(
notification: unknown,
config: unknown,
attachmentGenerator: unknown
): Promise<ReturnedData>
}
export const isNotificationService = (obj: unknown): boolean => {
return (
obj instanceof AbstractNotificationService ||
obj instanceof BaseNotificationService
)
}