From 08e358b32d698794cd64dc6fb69ebb6b0ce33d00 Mon Sep 17 00:00:00 2001 From: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com> Date: Thu, 18 May 2023 21:34:39 -0500 Subject: [PATCH] feat: add new sern emitter event --- src/handler/sern.ts | 15 +++++---------- src/shared.ts | 1 + 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/handler/sern.ts b/src/handler/sern.ts index 8287815..0fca62d 100644 --- a/src/handler/sern.ts +++ b/src/handler/sern.ts @@ -8,6 +8,7 @@ import { catchError, finalize, merge } from 'rxjs'; import { handleError } from '../core/operators'; import { Services, useContainerRaw } from '../core/ioc'; import { Wrapper } from '../shared'; +import { handleCrash } from './events/generic'; /** * @since 1.0.0 @@ -34,8 +35,10 @@ export function init(wrapper: Wrapper) { makeEventsHandler(dependencies, getFullPathTree(wrapper.events, mode)); } - startReadyEvent(dependencies, getFullPathTree(wrapper.commands, mode)).add(() => { + startReadyEvent(dependencies, getFullPathTree(wrapper.commands, mode)) + .add(() => { const time = ((performance.now() - startTime) / 1000).toFixed(2); + dependencies[0].emit('modulesLoaded'); logger?.info({ message: `sern: registered all modules in ${time} s`, }); @@ -45,15 +48,7 @@ export function init(wrapper: Wrapper) { const interactions$ = makeInteractionHandler(dependencies); merge(messages$, interactions$) - .pipe( - catchError(handleError(errorHandler, logger)), - finalize(() => { - logger?.info({ message: 'A stream closed or reached end of lifetime' }); - useContainerRaw() - ?.disposeAll() - .then(() => logger?.info({ message: 'Cleaning container and crashing' })); - }), - ) + .pipe(handleCrash(errorHandler, logger)) .subscribe(); } diff --git a/src/shared.ts b/src/shared.ts index aec7fb9..be25896 100644 --- a/src/shared.ts +++ b/src/shared.ts @@ -21,6 +21,7 @@ export interface SernEventsMapping { 'module.activate': [Payload]; error: [Payload]; warning: [Payload]; + 'modulesLoaded' : []; } export type Awaitable = PromiseLike | T;