moost 0.3.31 → 0.3.33

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.
package/dist/index.cjs CHANGED
@@ -568,6 +568,13 @@ function Provide(type, fn) {
568
568
  return meta;
569
569
  });
570
570
  }
571
+ function Replace(type, newType) {
572
+ return getMoostMate().decorate(meta => {
573
+ meta.replace = meta.replace || {};
574
+ Object.assign(meta.replace, infact$1.createReplaceRegistry([type, newType]));
575
+ return meta;
576
+ });
577
+ }
571
578
  function Inject(type) {
572
579
  return getMoostMate().decorate('inject', type);
573
580
  }
@@ -646,6 +653,7 @@ class Moost {
646
653
  this.adapters = [];
647
654
  this.controllersOverview = [];
648
655
  this.provide = infact$1.createProvideRegistry([infact$1.Infact, getMoostInfact], [mate$1.Mate, getMoostMate]);
656
+ this.replace = {};
649
657
  this.unregisteredControllers = [];
650
658
  this.logger = options?.logger || getDefaultLogger('moost');
651
659
  getMoostInfact().setLogger(this.getLogger('infact'));
@@ -695,18 +703,18 @@ class Moost {
695
703
  newPrefix = _controller[0];
696
704
  controller = _controller[1];
697
705
  }
698
- await this.bindController(controller, provide, this.options?.globalPrefix || '', newPrefix);
706
+ await this.bindController(controller, provide, this.replace, this.options?.globalPrefix || '', newPrefix);
699
707
  }
700
708
  this.unregisteredControllers = [];
701
709
  }
702
- async bindController(controller, provide, globalPrefix, replaceOwnPrefix) {
710
+ async bindController(controller, provide, replace, globalPrefix, replaceOwnPrefix) {
703
711
  const mate = getMoostMate();
704
712
  const classMeta = mate.read(controller);
705
713
  const infact = getMoostInfact();
706
714
  const isControllerConsructor = mate$1.isConstructor(controller);
707
715
  const pipes = [...this.pipes, ...(classMeta?.pipes || [])].sort((a, b) => a.priority - b.priority);
708
716
  let instance;
709
- const infactOpts = { provide, customData: { pipes } };
717
+ const infactOpts = { provide, replace, customData: { pipes } };
710
718
  if (isControllerConsructor &&
711
719
  (classMeta?.injectable === 'SINGLETON' || classMeta?.injectable === true)) {
712
720
  eventCore.createEventContext({
@@ -743,12 +751,14 @@ class Moost {
743
751
  replaceOwnPrefix,
744
752
  interceptors: Array.from(this.interceptors),
745
753
  pipes,
746
- provide: classMeta?.provide || {},
754
+ provide: classMeta?.provide,
755
+ replace: classMeta?.replace,
747
756
  logger: this.logger,
748
757
  }));
749
758
  if (classMeta && classMeta.importController) {
750
759
  const prefix = typeof replaceOwnPrefix === 'string' ? replaceOwnPrefix : classMeta.controller?.prefix;
751
760
  const mergedProvide = { ...provide, ...classMeta.provide };
761
+ const mergedReplace = { ...this.replace, ...classMeta.replace };
752
762
  for (const ic of classMeta.importController) {
753
763
  if (ic.typeResolver) {
754
764
  const isConstr = mate$1.isConstructor(ic.typeResolver);
@@ -757,7 +767,7 @@ class Moost {
757
767
  ? ic.typeResolver
758
768
  : isFunc
759
769
  ? await ic.typeResolver()
760
- : ic.typeResolver, ic.provide ? { ...mergedProvide, ...ic.provide } : mergedProvide, `${globalPrefix}/${prefix || ''}`, ic.prefix);
770
+ : ic.typeResolver, ic.provide ? { ...mergedProvide, ...ic.provide } : mergedProvide, mergedReplace, `${globalPrefix}/${prefix || ''}`, ic.prefix);
761
771
  }
762
772
  }
763
773
  }
@@ -814,6 +824,10 @@ class Moost {
814
824
  this.provide = { ...this.provide, ...provide };
815
825
  return this;
816
826
  }
827
+ setReplaceRegistry(replace) {
828
+ this.replace = { ...this.replace, ...replace };
829
+ return this;
830
+ }
817
831
  registerControllers(...controllers) {
818
832
  this.unregisteredControllers.push(...controllers);
819
833
  return this;
@@ -836,6 +850,10 @@ Object.defineProperty(exports, "createProvideRegistry", {
836
850
  enumerable: true,
837
851
  get: function () { return infact$1.createProvideRegistry; }
838
852
  });
853
+ Object.defineProperty(exports, "createReplaceRegistry", {
854
+ enumerable: true,
855
+ get: function () { return infact$1.createReplaceRegistry; }
856
+ });
839
857
  Object.defineProperty(exports, "getConstructor", {
840
858
  enumerable: true,
841
859
  get: function () { return mate$1.getConstructor; }
@@ -864,6 +882,7 @@ exports.Param = Param;
864
882
  exports.Params = Params;
865
883
  exports.Pipe = Pipe;
866
884
  exports.Provide = Provide;
885
+ exports.Replace = Replace;
867
886
  exports.Required = Required;
868
887
  exports.Resolve = Resolve;
869
888
  exports.Value = Value;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { useEventLogger } from '@wooksjs/event-core';
2
2
  export { EventLogger, THook, useEventContext, useEventLogger } from '@wooksjs/event-core';
3
- import { TProvideRegistry, Infact, TProvideFn } from '@prostojs/infact';
4
- export { TProvideRegistry, createProvideRegistry } from '@prostojs/infact';
3
+ import { TProvideRegistry, Infact, TReplaceRegistry, TProvideFn } from '@prostojs/infact';
4
+ export { TProvideRegistry, createProvideRegistry, createReplaceRegistry } from '@prostojs/infact';
5
5
  import { TConsoleBase } from '@prostojs/logger';
6
6
  import * as _prostojs_mate from '@prostojs/mate';
7
7
  import { TMateParamMeta, Mate } from '@prostojs/mate';
@@ -188,6 +188,7 @@ interface TMoostMetadata<H extends TObject = TEmpty> extends TCommonMetaFields,
188
188
  handlers?: Array<TMoostHandler<H>>;
189
189
  returnType?: TFunction;
190
190
  provide?: TProvideRegistry;
191
+ replace?: TReplaceRegistry;
191
192
  params: Array<TMateParamMeta & TMoostParamsMetadata>;
192
193
  }
193
194
  interface TMoostParamsMetadata extends TCommonMetaFields, TCommonMoostMeta {
@@ -255,6 +256,14 @@ declare function Pipe(handler: TPipeFn, priority?: TPipePriority): ClassDecorato
255
256
  * @param fn - factory function for provided value
256
257
  */
257
258
  declare function Provide(type: string | TClassConstructor, fn: TProvideFn): ClassDecorator;
259
+ /**
260
+ * ## Replace
261
+ * ### @Decorator
262
+ * Defines class to replace in DI
263
+ * @param type - class to replace
264
+ * @param newType - new class
265
+ */
266
+ declare function Replace(type: TClassConstructor, newType: TClassConstructor): ClassDecorator;
258
267
  /**
259
268
  * ## Inject
260
269
  * ### @Decorator
@@ -436,6 +445,7 @@ declare class Moost {
436
445
  protected adapters: Array<TMoostAdapter<TAny>>;
437
446
  protected controllersOverview: TControllerOverview[];
438
447
  protected provide: TProvideRegistry;
448
+ protected replace: TReplaceRegistry;
439
449
  protected unregisteredControllers: Array<TObject | TFunction | [string, TObject | TFunction]>;
440
450
  constructor(options?: TMoostOptions | undefined);
441
451
  /**
@@ -458,7 +468,7 @@ declare class Moost {
458
468
  */
459
469
  init(): Promise<void>;
460
470
  protected bindControllers(): Promise<void>;
461
- protected bindController(controller: TFunction | TObject, provide: TProvideRegistry, globalPrefix: string, replaceOwnPrefix?: string): Promise<void>;
471
+ protected bindController(controller: TFunction | TObject, provide: TProvideRegistry, replace: TReplaceRegistry, globalPrefix: string, replaceOwnPrefix?: string): Promise<void>;
462
472
  applyGlobalPipes(...items: Array<TPipeFn | TPipeData>): this;
463
473
  protected globalInterceptorHandler?: () => Promise<InterceptorHandler>;
464
474
  /**
@@ -470,11 +480,17 @@ declare class Moost {
470
480
  getGlobalInterceptorHandler(): Promise<InterceptorHandler>;
471
481
  applyGlobalInterceptors(...items: Array<TInterceptorData['handler'] | TInterceptorData>): this;
472
482
  /**
473
- * Register new entried to provide as dependency injections
483
+ * Register new entries to provide as dependency injections
474
484
  * @param provide - Provide Registry (use createProvideRegistry from '\@prostojs/infact')
475
485
  * @returns
476
486
  */
477
487
  setProvideRegistry(provide: TProvideRegistry): this;
488
+ /**
489
+ * Register replace classes to provide as dependency injections
490
+ * @param replace - Replace Registry (use createReplaceRegistry from '\@prostojs/infact')
491
+ * @returns
492
+ */
493
+ setReplaceRegistry(replace: TReplaceRegistry): this;
478
494
  /**
479
495
  * Register controllers (similar to @ImportController decorator)
480
496
  * @param controllers - list of target controllers (instances)
@@ -566,4 +582,4 @@ type TInterceptorClass = TClassFunction<TInterceptorFn>;
566
582
  */
567
583
  declare function definePipeFn<T extends TObject = TEmpty>(fn: TPipeFn<T>, priority?: TPipePriority): TPipeFn<T>;
568
584
 
569
- export { Circular, Const, ConstFactory, Controller, Description, Id, ImportController, Inherit, Inject, InjectEventLogger, Injectable, Intercept, InterceptorHandler, Label, Moost, Optional, Param, Params, Pipe, Provide, Required, Resolve, type TCallableClassFunction, type TClassConstructor, type TClassFunction, type TControllerOverview, type TInjectableScope, type TInterceptorAfter, type TInterceptorBefore, type TInterceptorClass, type TInterceptorData, type TInterceptorFn, type TInterceptorOnError, TInterceptorPriority, type TMoostAdapter, type TMoostAdapterOptions, type TMoostEventHandlerHookOptions, type TMoostEventHandlerOptions, type TMoostHandler, type TMoostMetadata, type TMoostOptions, type TMoostParamsMetadata, type TPipeData, type TPipeFn, type TPipeMetas, TPipePriority, Value, defineInterceptorFn, defineMoostEventHandler, definePipeFn, getInstanceOwnMethods, getInstanceOwnProps, getMoostInfact, getMoostMate, getNewMoostInfact, registerEventScope, resolvePipe, setControllerContext, useControllerContext };
585
+ export { Circular, Const, ConstFactory, Controller, Description, Id, ImportController, Inherit, Inject, InjectEventLogger, Injectable, Intercept, InterceptorHandler, Label, Moost, Optional, Param, Params, Pipe, Provide, Replace, Required, Resolve, type TCallableClassFunction, type TClassConstructor, type TClassFunction, type TControllerOverview, type TInjectableScope, type TInterceptorAfter, type TInterceptorBefore, type TInterceptorClass, type TInterceptorData, type TInterceptorFn, type TInterceptorOnError, TInterceptorPriority, type TMoostAdapter, type TMoostAdapterOptions, type TMoostEventHandlerHookOptions, type TMoostEventHandlerOptions, type TMoostHandler, type TMoostMetadata, type TMoostOptions, type TMoostParamsMetadata, type TPipeData, type TPipeFn, type TPipeMetas, TPipePriority, Value, defineInterceptorFn, defineMoostEventHandler, definePipeFn, getInstanceOwnMethods, getInstanceOwnProps, getMoostInfact, getMoostMate, getNewMoostInfact, registerEventScope, resolvePipe, setControllerContext, useControllerContext };
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { useEventId, useEventContext, useEventLogger, useRouteParams, createEventContext } from '@wooksjs/event-core';
2
2
  export { EventLogger, useEventContext, useEventLogger } from '@wooksjs/event-core';
3
- import { Infact, createProvideRegistry } from '@prostojs/infact';
4
- export { createProvideRegistry } from '@prostojs/infact';
3
+ import { Infact, createProvideRegistry, createReplaceRegistry } from '@prostojs/infact';
4
+ export { createProvideRegistry, createReplaceRegistry } from '@prostojs/infact';
5
5
  import { Mate, getConstructor, isConstructor } from '@prostojs/mate';
6
6
  export { getConstructor, isConstructor } from '@prostojs/mate';
7
7
  import { ProstoLogger, createConsoleTransort, coloredConsole } from '@prostojs/logger';
@@ -569,6 +569,13 @@ function Provide(type, fn) {
569
569
  return meta;
570
570
  });
571
571
  }
572
+ function Replace(type, newType) {
573
+ return getMoostMate().decorate(meta => {
574
+ meta.replace = meta.replace || {};
575
+ Object.assign(meta.replace, createReplaceRegistry([type, newType]));
576
+ return meta;
577
+ });
578
+ }
572
579
  function Inject(type) {
573
580
  return getMoostMate().decorate('inject', type);
574
581
  }
@@ -647,6 +654,7 @@ class Moost {
647
654
  this.adapters = [];
648
655
  this.controllersOverview = [];
649
656
  this.provide = createProvideRegistry([Infact, getMoostInfact], [Mate, getMoostMate]);
657
+ this.replace = {};
650
658
  this.unregisteredControllers = [];
651
659
  this.logger = options?.logger || getDefaultLogger('moost');
652
660
  getMoostInfact().setLogger(this.getLogger('infact'));
@@ -696,18 +704,18 @@ class Moost {
696
704
  newPrefix = _controller[0];
697
705
  controller = _controller[1];
698
706
  }
699
- await this.bindController(controller, provide, this.options?.globalPrefix || '', newPrefix);
707
+ await this.bindController(controller, provide, this.replace, this.options?.globalPrefix || '', newPrefix);
700
708
  }
701
709
  this.unregisteredControllers = [];
702
710
  }
703
- async bindController(controller, provide, globalPrefix, replaceOwnPrefix) {
711
+ async bindController(controller, provide, replace, globalPrefix, replaceOwnPrefix) {
704
712
  const mate = getMoostMate();
705
713
  const classMeta = mate.read(controller);
706
714
  const infact = getMoostInfact();
707
715
  const isControllerConsructor = isConstructor(controller);
708
716
  const pipes = [...this.pipes, ...(classMeta?.pipes || [])].sort((a, b) => a.priority - b.priority);
709
717
  let instance;
710
- const infactOpts = { provide, customData: { pipes } };
718
+ const infactOpts = { provide, replace, customData: { pipes } };
711
719
  if (isControllerConsructor &&
712
720
  (classMeta?.injectable === 'SINGLETON' || classMeta?.injectable === true)) {
713
721
  createEventContext({
@@ -744,12 +752,14 @@ class Moost {
744
752
  replaceOwnPrefix,
745
753
  interceptors: Array.from(this.interceptors),
746
754
  pipes,
747
- provide: classMeta?.provide || {},
755
+ provide: classMeta?.provide,
756
+ replace: classMeta?.replace,
748
757
  logger: this.logger,
749
758
  }));
750
759
  if (classMeta && classMeta.importController) {
751
760
  const prefix = typeof replaceOwnPrefix === 'string' ? replaceOwnPrefix : classMeta.controller?.prefix;
752
761
  const mergedProvide = { ...provide, ...classMeta.provide };
762
+ const mergedReplace = { ...this.replace, ...classMeta.replace };
753
763
  for (const ic of classMeta.importController) {
754
764
  if (ic.typeResolver) {
755
765
  const isConstr = isConstructor(ic.typeResolver);
@@ -758,7 +768,7 @@ class Moost {
758
768
  ? ic.typeResolver
759
769
  : isFunc
760
770
  ? await ic.typeResolver()
761
- : ic.typeResolver, ic.provide ? { ...mergedProvide, ...ic.provide } : mergedProvide, `${globalPrefix}/${prefix || ''}`, ic.prefix);
771
+ : ic.typeResolver, ic.provide ? { ...mergedProvide, ...ic.provide } : mergedProvide, mergedReplace, `${globalPrefix}/${prefix || ''}`, ic.prefix);
762
772
  }
763
773
  }
764
774
  }
@@ -815,10 +825,14 @@ class Moost {
815
825
  this.provide = { ...this.provide, ...provide };
816
826
  return this;
817
827
  }
828
+ setReplaceRegistry(replace) {
829
+ this.replace = { ...this.replace, ...replace };
830
+ return this;
831
+ }
818
832
  registerControllers(...controllers) {
819
833
  this.unregisteredControllers.push(...controllers);
820
834
  return this;
821
835
  }
822
836
  }
823
837
 
824
- export { Circular, Const, ConstFactory, Controller, Description, Id, ImportController, Inherit, Inject, InjectEventLogger, Injectable, Intercept, InterceptorHandler, Label, Moost, Optional, Param, Params, Pipe, Provide, Required, Resolve, TInterceptorPriority, TPipePriority, Value, defineInterceptorFn, defineMoostEventHandler, definePipeFn, getInstanceOwnMethods, getInstanceOwnProps, getMoostInfact, getMoostMate, getNewMoostInfact, registerEventScope, resolvePipe, setControllerContext, useControllerContext };
838
+ export { Circular, Const, ConstFactory, Controller, Description, Id, ImportController, Inherit, Inject, InjectEventLogger, Injectable, Intercept, InterceptorHandler, Label, Moost, Optional, Param, Params, Pipe, Provide, Replace, Required, Resolve, TInterceptorPriority, TPipePriority, Value, defineInterceptorFn, defineMoostEventHandler, definePipeFn, getInstanceOwnMethods, getInstanceOwnProps, getMoostInfact, getMoostMate, getNewMoostInfact, registerEventScope, resolvePipe, setControllerContext, useControllerContext };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moost",
3
- "version": "0.3.31",
3
+ "version": "0.3.33",
4
4
  "description": "moost",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -31,7 +31,7 @@
31
31
  "prostojs"
32
32
  ],
33
33
  "dependencies": {
34
- "@prostojs/infact": "^0.1.13",
34
+ "@prostojs/infact": "^0.1.14",
35
35
  "@prostojs/mate": "^0.3.2",
36
36
  "@prostojs/logger": "^0.4.0",
37
37
  "@wooksjs/event-core": "^0.4.34",