moost 0.3.31 → 0.3.32

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
  }
@@ -836,6 +846,10 @@ Object.defineProperty(exports, "createProvideRegistry", {
836
846
  enumerable: true,
837
847
  get: function () { return infact$1.createProvideRegistry; }
838
848
  });
849
+ Object.defineProperty(exports, "createReplaceRegistry", {
850
+ enumerable: true,
851
+ get: function () { return infact$1.createReplaceRegistry; }
852
+ });
839
853
  Object.defineProperty(exports, "getConstructor", {
840
854
  enumerable: true,
841
855
  get: function () { return mate$1.getConstructor; }
@@ -864,6 +878,7 @@ exports.Param = Param;
864
878
  exports.Params = Params;
865
879
  exports.Pipe = Pipe;
866
880
  exports.Provide = Provide;
881
+ exports.Replace = Replace;
867
882
  exports.Required = Required;
868
883
  exports.Resolve = Resolve;
869
884
  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
  /**
@@ -566,4 +576,4 @@ type TInterceptorClass = TClassFunction<TInterceptorFn>;
566
576
  */
567
577
  declare function definePipeFn<T extends TObject = TEmpty>(fn: TPipeFn<T>, priority?: TPipePriority): TPipeFn<T>;
568
578
 
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 };
579
+ 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
  }
@@ -821,4 +831,4 @@ class Moost {
821
831
  }
822
832
  }
823
833
 
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 };
834
+ 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.32",
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",