@rsdk/core 2.1.0 → 2.4.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.4.0](https://github.com/R-Vision/rsdk/compare/v2.3.1...v2.4.0) (2023-06-15)
7
+
8
+ **Note:** Version bump only for package @rsdk/core
9
+
10
+ ## [2.3.1](https://github.com/R-Vision/rsdk/compare/v2.3.0...v2.3.1) (2023-06-08)
11
+
12
+ ### Bug Fixes
13
+
14
+ * testing correct work with metadata ([d1734fa](https://github.com/R-Vision/rsdk/commit/d1734fa093a5bd905cc81a8c480f5ca4e88e0029))
15
+
6
16
  # [2.1.0](https://github.com/R-Vision/rsdk/compare/v2.0.0...v2.1.0) (2023-06-06)
7
17
 
8
18
  **Note:** Version bump only for package @rsdk/core
@@ -8,5 +8,35 @@ export declare class LoggingModule {
8
8
  * Возвращает модуль которые нужны для логгирования в любом случае, например его конфиг
9
9
  */
10
10
  static pureRoot(): DynamicModule;
11
- static register(target: object, context: string | Constructor, token: string): void;
11
+ static register(target: object, context: string | Constructor, token?: string): void;
12
+ /**
13
+ * Дополнительная возможность добавить в DI контейнер логгер в случаях когда нужен инлайн вызов например через `useFactory`
14
+ * @example
15
+ * const moduleDef = {
16
+ * imports: [LoggerModule.forFeature(MyService)],
17
+ * module: MyModule,
18
+ * providers: [
19
+ * {
20
+ * inject: [getLoggerToken(MyService)],
21
+ * provide: MyService,
22
+ * useFactory(logger: ILogger)
23
+ * }
24
+ * ]
25
+ * }
26
+ * // Но по возможности
27
+ * const moduleDef = {
28
+ * module: MyModule,
29
+ * providers: [
30
+ * {
31
+ * inject: [getLoggerToken(MyService)],
32
+ * provide: MyService,
33
+ * useFactory(logger: ILogger)
34
+ * }
35
+ * ]
36
+ * }
37
+ * LoggerModule.register(moduleDef, MyService)
38
+ * @param context в обычном случае это или класс или строка по которой вы его инжектите например для `getLoggerToken(MyService)`/`@InjectLogger(MyService)`, необходимо будет сделать LoggerModule.forFeature(MyService)
39
+ * @param token если по какой-то причине вы хотите подменить логгер `@InjectLogger(MyService)` на логгер `@InjectLogger(NotMyService)`, используйте `getLoggerToken(MyService)` в качестве второго аргумента
40
+ */
41
+ static forFeature(context: string | Constructor, token?: string): DynamicModule;
12
42
  }
@@ -18,6 +18,7 @@ const metadata_1 = require("@rsdk/metadata");
18
18
  const config_1 = require("../config");
19
19
  const constants_1 = require("../rsdk-metadata/constants");
20
20
  const constants_2 = require("./metadata/constants");
21
+ const helpers_1 = require("./helpers");
21
22
  const logging_config_1 = require("./logging.config");
22
23
  let LoggingModule = LoggingModule_1 = class LoggingModule {
23
24
  static logger = logging_1.LoggerFactory.create('LoggingModule');
@@ -42,8 +43,41 @@ let LoggingModule = LoggingModule_1 = class LoggingModule {
42
43
  exports: [config_1.PlatformConfigModule],
43
44
  };
44
45
  }
45
- static register(target, context, token) {
46
- metadata_1.RsdkMetadata.add(target, {
46
+ static register(target, context, token = (0, helpers_1.getLoggerToken)(context)) {
47
+ metadata_1.RsdkMetadata.add(target, this.forFeature(context, token), constants_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE);
48
+ metadata_1.RsdkMetadata.add(target, { context, token, target }, constants_2.LOGGING_RSDK_METADATA_SCOPE);
49
+ }
50
+ /**
51
+ * Дополнительная возможность добавить в DI контейнер логгер в случаях когда нужен инлайн вызов например через `useFactory`
52
+ * @example
53
+ * const moduleDef = {
54
+ * imports: [LoggerModule.forFeature(MyService)],
55
+ * module: MyModule,
56
+ * providers: [
57
+ * {
58
+ * inject: [getLoggerToken(MyService)],
59
+ * provide: MyService,
60
+ * useFactory(logger: ILogger)
61
+ * }
62
+ * ]
63
+ * }
64
+ * // Но по возможности
65
+ * const moduleDef = {
66
+ * module: MyModule,
67
+ * providers: [
68
+ * {
69
+ * inject: [getLoggerToken(MyService)],
70
+ * provide: MyService,
71
+ * useFactory(logger: ILogger)
72
+ * }
73
+ * ]
74
+ * }
75
+ * LoggerModule.register(moduleDef, MyService)
76
+ * @param context в обычном случае это или класс или строка по которой вы его инжектите например для `getLoggerToken(MyService)`/`@InjectLogger(MyService)`, необходимо будет сделать LoggerModule.forFeature(MyService)
77
+ * @param token если по какой-то причине вы хотите подменить логгер `@InjectLogger(MyService)` на логгер `@InjectLogger(NotMyService)`, используйте `getLoggerToken(MyService)` в качестве второго аргумента
78
+ */
79
+ static forFeature(context, token = (0, helpers_1.getLoggerToken)(context)) {
80
+ return {
47
81
  global: true,
48
82
  imports: [config_1.PlatformConfigModule.forFeature(logging_config_1.LoggingConfig)],
49
83
  module: LoggingModule_1,
@@ -54,8 +88,7 @@ let LoggingModule = LoggingModule_1 = class LoggingModule {
54
88
  },
55
89
  ],
56
90
  exports: [token],
57
- }, constants_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE);
58
- metadata_1.RsdkMetadata.add(target, { context, token, target }, constants_2.LOGGING_RSDK_METADATA_SCOPE);
91
+ };
59
92
  }
60
93
  };
61
94
  LoggingModule = LoggingModule_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"logging.module.js","sourceRoot":"","sources":["../../src/logging/logging.module.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;;;;AAG9B,2CAAwC;AAExC,2CAA8C;AAC9C,6CAA8C;AAE9C,sCAAiD;AAEjD,0DAAgF;AAEhF,oDAAmE;AACnE,qDAAiD;AAGjD,IACa,aAAa,qBAD1B,MACa,aAAa;IAChB,MAAM,CAAC,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAE9D,YAAY,MAAqB;QAC/B,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,eAAa,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,KAAK,GAAG,EAAE;gBAChE,QAAQ,EAAE,MAAM,CAAC,KAAK;aACvB,CAAC,CAAC;YAEH,uBAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,GAAG,EAAE,CAAC;IACR,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,8BAAa,CAAC,CAAC;YACzD,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,6BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,MAAc,EACd,OAA6B,EAC7B,KAAa;QAEb,uBAAY,CAAC,GAAG,CACd,MAAM,EACN;YACE,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,8BAAa,CAAC,CAAC;YACzD,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,uBAAa,CAAC,MAAM,CAAC,OAAO,CAAC;iBACxC;aACF;YACD,OAAO,EAAE,CAAC,KAAK,CAAC;SACjB,EACD,8CAAkC,CACnC,CAAC;QAEF,uBAAY,CAAC,GAAG,CACd,MAAM,EACN,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAC1B,uCAA2B,CAC5B,CAAC;IACJ,CAAC;;AAvDU,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;qCAIW,8BAAa;GAHtB,aAAa,CAwDzB;AAxDY,sCAAa"}
1
+ {"version":3,"file":"logging.module.js","sourceRoot":"","sources":["../../src/logging/logging.module.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;;;;AAG9B,2CAAwC;AAExC,2CAA8C;AAC9C,6CAA8C;AAE9C,sCAAiD;AAEjD,0DAAgF;AAEhF,oDAAmE;AACnE,uCAA2C;AAC3C,qDAAiD;AAGjD,IACa,aAAa,qBAD1B,MACa,aAAa;IAChB,MAAM,CAAC,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAE9D,YAAY,MAAqB;QAC/B,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,eAAa,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,KAAK,GAAG,EAAE;gBAChE,QAAQ,EAAE,MAAM,CAAC,KAAK;aACvB,CAAC,CAAC;YAEH,uBAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,GAAG,EAAE,CAAC;IACR,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,8BAAa,CAAC,CAAC;YACzD,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,6BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,MAAc,EACd,OAA6B,EAC7B,KAAK,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC;QAE/B,uBAAY,CAAC,GAAG,CACd,MAAM,EACN,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAC/B,8CAAkC,CACnC,CAAC;QAEF,uBAAY,CAAC,GAAG,CACd,MAAM,EACN,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAC1B,uCAA2B,CAC5B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,CAAC,UAAU,CACf,OAA6B,EAC7B,KAAK,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC;QAE/B,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,8BAAa,CAAC,CAAC;YACzD,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,uBAAa,CAAC,MAAM,CAAC,OAAO,CAAC;iBACxC;aACF;YACD,OAAO,EAAE,CAAC,KAAK,CAAC;SACjB,CAAC;IACJ,CAAC;;AA3FU,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;qCAIW,8BAAa;GAHtB,aAAa,CA4FzB;AA5FY,sCAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/core",
3
- "version": "2.1.0",
3
+ "version": "2.4.0",
4
4
  "description": "Nestjs based microservice chassis",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -29,14 +29,14 @@
29
29
  "@nestjs/core": "^9.0.0",
30
30
  "@nestjs/microservices": "^9.0.0",
31
31
  "@rsdk/autodoc.protocol": "^2.0.0",
32
- "@rsdk/common": "^2.0.0",
33
- "@rsdk/decorators": "^2.0.0",
34
- "@rsdk/logging": "^2.0.0",
35
- "@rsdk/metadata": "^2.0.0",
32
+ "@rsdk/common": "^2.4.0",
33
+ "@rsdk/decorators": "^2.4.0",
34
+ "@rsdk/logging": "^2.4.0",
35
+ "@rsdk/metadata": "^2.4.0",
36
36
  "@rsdk/nest-tools": "^2.0.0",
37
37
  "axios": "^1.1.3",
38
38
  "reflect-metadata": "^0.1.13",
39
39
  "rxjs": "^7.0.0"
40
40
  },
41
- "gitHead": "b98d43696f973cf6e21c6299bdddae9b1d8b8d4d"
41
+ "gitHead": "2c2c1eac3027955838c0883ca1cb76b051a541ed"
42
42
  }
@@ -11,6 +11,7 @@ import type { PlatformRawGlobalMetadata } from '../rsdk-metadata/constants';
11
11
  import { PLATFORM_RAW_GLOBAL_METADATA_SCOPE } from '../rsdk-metadata/constants';
12
12
 
13
13
  import { LOGGING_RSDK_METADATA_SCOPE } from './metadata/constants';
14
+ import { getLoggerToken } from './helpers';
14
15
  import { LoggingConfig } from './logging.config';
15
16
  import type { LoggingRsdkMetadata } from './types';
16
17
 
@@ -46,22 +47,11 @@ export class LoggingModule {
46
47
  static register(
47
48
  target: object,
48
49
  context: string | Constructor,
49
- token: string,
50
+ token = getLoggerToken(context),
50
51
  ): void {
51
52
  RsdkMetadata.add<PlatformRawGlobalMetadata>(
52
53
  target,
53
- {
54
- global: true,
55
- imports: [PlatformConfigModule.forFeature(LoggingConfig)],
56
- module: LoggingModule,
57
- providers: [
58
- {
59
- provide: token,
60
- useValue: LoggerFactory.create(context),
61
- },
62
- ],
63
- exports: [token],
64
- },
54
+ this.forFeature(context, token),
65
55
  PLATFORM_RAW_GLOBAL_METADATA_SCOPE,
66
56
  );
67
57
 
@@ -71,4 +61,51 @@ export class LoggingModule {
71
61
  LOGGING_RSDK_METADATA_SCOPE,
72
62
  );
73
63
  }
64
+
65
+ /**
66
+ * Дополнительная возможность добавить в DI контейнер логгер в случаях когда нужен инлайн вызов например через `useFactory`
67
+ * @example
68
+ * const moduleDef = {
69
+ * imports: [LoggerModule.forFeature(MyService)],
70
+ * module: MyModule,
71
+ * providers: [
72
+ * {
73
+ * inject: [getLoggerToken(MyService)],
74
+ * provide: MyService,
75
+ * useFactory(logger: ILogger)
76
+ * }
77
+ * ]
78
+ * }
79
+ * // Но по возможности
80
+ * const moduleDef = {
81
+ * module: MyModule,
82
+ * providers: [
83
+ * {
84
+ * inject: [getLoggerToken(MyService)],
85
+ * provide: MyService,
86
+ * useFactory(logger: ILogger)
87
+ * }
88
+ * ]
89
+ * }
90
+ * LoggerModule.register(moduleDef, MyService)
91
+ * @param context в обычном случае это или класс или строка по которой вы его инжектите например для `getLoggerToken(MyService)`/`@InjectLogger(MyService)`, необходимо будет сделать LoggerModule.forFeature(MyService)
92
+ * @param token если по какой-то причине вы хотите подменить логгер `@InjectLogger(MyService)` на логгер `@InjectLogger(NotMyService)`, используйте `getLoggerToken(MyService)` в качестве второго аргумента
93
+ */
94
+ static forFeature(
95
+ context: string | Constructor,
96
+ token = getLoggerToken(context),
97
+ ): DynamicModule {
98
+ return {
99
+ global: true,
100
+ imports: [PlatformConfigModule.forFeature(LoggingConfig)],
101
+ module: LoggingModule,
102
+ providers: [
103
+ {
104
+ provide: token,
105
+ useValue: LoggerFactory.create(context),
106
+ },
107
+ ],
108
+ exports: [token],
109
+ };
110
+ }
74
111
  }