refactor(notification): replace static factory class with function exports

This commit is contained in:
jeffusion
2026-03-24 13:16:52 +08:00
committed by 路遥知码力
parent 2392808b82
commit 8f9910a3fd
3 changed files with 22 additions and 24 deletions

View File

@@ -8,7 +8,10 @@ export type {
} from './types.js';
export { BaseNotificationService } from './base-notification-service.js';
export { NotificationFactory } from './notification-factory.js';
export {
createNotificationService,
createNotificationServices,
} from './notification-factory.js';
export { NotificationManager, createNotificationManager } from './notification-manager.js';
export { FeishuNotificationService } from './providers/feishu-notification-service.js';
export { WeComNotificationService } from './providers/wecom-notification-service.js';

View File

@@ -1,12 +1,8 @@
import type {
INotificationService,
NotificationServiceConfig,
} from './types.js';
import { FeishuNotificationService } from './providers/feishu-notification-service.js';
import { WeComNotificationService } from './providers/wecom-notification-service.js';
import type { INotificationService, NotificationServiceConfig } from './types.js';
export class NotificationFactory {
static createService(config: NotificationServiceConfig): INotificationService {
export function createNotificationService(config: NotificationServiceConfig): INotificationService {
switch (config.provider) {
case 'feishu':
return new FeishuNotificationService(config);
@@ -15,11 +11,10 @@ export class NotificationFactory {
default:
throw new Error(`Unknown notification provider: ${config.provider}`);
}
}
static createServices(configs: NotificationServiceConfig[]): INotificationService[] {
return configs
.filter((c) => c.enabled && c.webhookUrl)
.map((c) => this.createService(c));
}
}
export function createNotificationServices(
configs: NotificationServiceConfig[]
): INotificationService[] {
return configs.filter((c) => c.enabled && c.webhookUrl).map((c) => createNotificationService(c));
}

View File

@@ -1,11 +1,11 @@
import { logger } from '../../utils/logger.js';
import { createNotificationServices } from './notification-factory.js';
import type {
INotificationService,
NotificationContext,
NotificationMessage,
NotificationProvider,
} from './types.js';
import { NotificationFactory } from './notification-factory.js';
import { logger } from '../../utils/logger.js';
export class NotificationManager {
private services: INotificationService[] = [];
@@ -100,6 +100,6 @@ export class NotificationManager {
export function createNotificationManager(
configs: import('./types.js').NotificationServiceConfig[]
): NotificationManager {
const services = NotificationFactory.createServices(configs);
const services = createNotificationServices(configs);
return new NotificationManager(services);
}