Browse Source

feat(event): Add event for a completed initialization (#1619)

Closes #1618
Drayke 3 years ago
parent
commit
43c888fb88

+ 15 - 0
packages/core/src/event-bus/events/initializer-event.ts

@@ -0,0 +1,15 @@
+import { VendureEvent } from '../vendure-event';
+
+/**
+ * @description
+ * This event is fired when vendure finished initializing its services inside the {@code InitializerService}
+ *
+ * @docsCategory events
+ * @docsPage Event Types
+ * @since 1.7.0
+ */
+export class InitializerEvent extends VendureEvent {
+    constructor() {
+        super();
+    }
+}

+ 1 - 0
packages/core/src/event-bus/index.ts

@@ -26,6 +26,7 @@ export * from './events/global-settings-event';
 export * from './events/history-entry-event';
 export * from './events/identifier-change-event';
 export * from './events/identifier-change-request-event';
+export * from './events/initializer-event';
 export * from './events/login-event';
 export * from './events/logout-event';
 export * from './events/order-event';

+ 4 - 0
packages/core/src/service/initializer.service.ts

@@ -3,6 +3,8 @@ import { Injectable } from '@nestjs/common';
 import { Logger } from '../config/logger/vendure-logger';
 import { TransactionalConnection } from '../connection/transactional-connection';
 import { Administrator } from '../entity/administrator/administrator.entity';
+import { EventBus } from '../event-bus';
+import { InitializerEvent } from '../event-bus/events/initializer-event';
 
 import { AdministratorService } from './services/administrator.service';
 import { ChannelService } from './services/channel.service';
@@ -25,6 +27,7 @@ export class InitializerService {
         private administratorService: AdministratorService,
         private shippingMethodService: ShippingMethodService,
         private globalSettingsService: GlobalSettingsService,
+        private eventBus: EventBus,
     ) {}
 
     async onModuleInit() {
@@ -41,6 +44,7 @@ export class InitializerService {
         await this.roleService.initRoles();
         await this.administratorService.initAdministrators();
         await this.shippingMethodService.initShippingMethods();
+        this.eventBus.publish(new InitializerEvent());
     }
 
     /**