@kithinji/orca 1.0.33 → 1.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2579,7 +2579,7 @@ var ControllerRegistrationService = class {
2579
2579
  this.injector = injector;
2580
2580
  this.app = app;
2581
2581
  }
2582
- registerEventHandlers(CtrlCls, instance, actor) {
2582
+ async registerEventHandlers(CtrlCls, instance, actor) {
2583
2583
  const eventHandlers = Reflect.ownKeys(CtrlCls.prototype).filter(
2584
2584
  (key) => Reflect.hasOwnMetadata(EVENT_HANDLER, CtrlCls.prototype, key)
2585
2585
  );
@@ -2590,7 +2590,16 @@ var ControllerRegistrationService = class {
2590
2590
  methodKey
2591
2591
  );
2592
2592
  const handler = instance[methodKey];
2593
- actor.subscribe(eventName, (data) => handler.call(instance, data));
2593
+ actor.subscribe(eventName, async (data) => {
2594
+ try {
2595
+ await handler.call(instance, data);
2596
+ } catch (err) {
2597
+ console.error(
2598
+ `Unhandled error in event handler "${eventName}":`,
2599
+ err
2600
+ );
2601
+ }
2602
+ });
2594
2603
  }
2595
2604
  }
2596
2605
  buildMethodArgs(req, res, paramsMeta, designParams) {
@@ -2734,7 +2743,7 @@ var ControllerRegistrationService = class {
2734
2743
  const instance = await this.injector.resolve(CtrlCls);
2735
2744
  const prefix = Reflect.getMetadata(CONTROLLER_PREFIX_KEY, CtrlCls) ?? "/";
2736
2745
  const actor = await this.injector.resolve(Actor);
2737
- this.registerEventHandlers(CtrlCls, instance, actor);
2746
+ await this.registerEventHandlers(CtrlCls, instance, actor);
2738
2747
  this.registerHttpMethods(CtrlCls, instance, prefix);
2739
2748
  }
2740
2749
  };
@@ -2926,7 +2935,7 @@ var NodeFactory = class {
2926
2935
  { provide: Actor, useClass: Actor, eager: true }
2927
2936
  ]);
2928
2937
  }
2929
- static registerControllers(appNode, injector, app) {
2938
+ static async registerControllers(appNode, injector, app) {
2930
2939
  const registrationService = new ControllerRegistrationService(
2931
2940
  injector,
2932
2941
  app
@@ -2934,18 +2943,29 @@ var NodeFactory = class {
2934
2943
  const rootControllers = [
2935
2944
  ...store.get("root_controllers")
2936
2945
  ];
2937
- rootControllers.forEach((ctrl) => registrationService.register(ctrl));
2946
+ await Promise.all(
2947
+ rootControllers.map((ctrl) => registrationService.register(ctrl))
2948
+ );
2949
+ const nodeRegistrationPromises = [];
2938
2950
  appNode.traverse((node) => {
2939
2951
  const providers = [...node.getProviders().values()];
2940
2952
  const controllers = providers.filter((provider) => {
2941
2953
  const token = provider.provide;
2942
2954
  return typeof token === "function" && Reflect.getMetadata(CONTROLLER, token);
2943
2955
  });
2944
- controllers.forEach((c) => registrationService.register(c.useClass));
2945
- providers.filter((provider) => provider.eager).forEach(async (p) => {
2946
- await injector.resolve(p.provide);
2947
- });
2956
+ controllers.forEach(
2957
+ (c) => nodeRegistrationPromises.push(
2958
+ registrationService.register(c.useClass)
2959
+ )
2960
+ );
2961
+ providers.filter((provider) => provider.eager).forEach(
2962
+ (p) => nodeRegistrationPromises.push(
2963
+ injector.resolve(p.provide).then(() => {
2964
+ })
2965
+ )
2966
+ );
2948
2967
  });
2968
+ await Promise.all(nodeRegistrationPromises);
2949
2969
  }
2950
2970
  static setupOscRoute(app, injector, rootModule) {
2951
2971
  const componentResolver = new ComponentResolver(rootModule);
@@ -2966,7 +2986,7 @@ var NodeFactory = class {
2966
2986
  scanner
2967
2987
  );
2968
2988
  setCurrentInjector(rootInjector);
2969
- this.registerControllers(appNode, rootInjector, app);
2989
+ await this.registerControllers(appNode, rootInjector, app);
2970
2990
  this.setupOscRoute(app, rootInjector, rootModule);
2971
2991
  SocketService.setup(server, rootInjector);
2972
2992
  return server;