@rsdk/core 4.0.0-next.9 → 4.0.1-next.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.
Files changed (136) hide show
  1. package/CHANGELOG.md +134 -40
  2. package/dist/app-metadata/app-name.validator.js.map +1 -1
  3. package/dist/config/additional-source/additional-source.initializer.js.map +1 -1
  4. package/dist/config/config-reload.indicator.js.map +1 -1
  5. package/dist/config/config.abstract.js.map +1 -1
  6. package/dist/config/config.module.js.map +1 -1
  7. package/dist/config/context/config.context.js.map +1 -1
  8. package/dist/config/metadata/config-metadata.registry.js.map +1 -1
  9. package/dist/config/metadata/decorators/config-section.decorator.js.map +1 -1
  10. package/dist/config/parsers/array.parser.js.map +1 -1
  11. package/dist/config/parsers/path/fspath.parser.js.map +1 -1
  12. package/dist/config/parsers/url/url.parser.js.map +1 -1
  13. package/dist/config/sources/base/config-source.abstract.js.map +1 -1
  14. package/dist/config/sources/base/reloadable-config-source.abstract.js.map +1 -1
  15. package/dist/config/sources/implementations/relodable-json-file.source.js.map +1 -1
  16. package/dist/config/strategy/app-name-strategy.validator.js.map +1 -1
  17. package/dist/config/types.js.map +1 -1
  18. package/dist/config/vars.class.js.map +1 -1
  19. package/dist/context.aggregator.js.map +1 -1
  20. package/dist/exceptions/base/platform-exception.absract.js.map +1 -1
  21. package/dist/exceptions/implementations/bootstrap/double-init.exception.js.map +1 -1
  22. package/dist/exceptions/implementations/bootstrap/no-init.exception.js.map +1 -1
  23. package/dist/exceptions/metadata/exceptions.registry.js.map +1 -1
  24. package/dist/exceptions.handling/global-exceptions.filter.d.ts +3 -1
  25. package/dist/exceptions.handling/global-exceptions.filter.js +10 -4
  26. package/dist/exceptions.handling/global-exceptions.filter.js.map +1 -1
  27. package/dist/exceptions.handling/types.d.ts +4 -11
  28. package/dist/health/autodoc/heath.autodoc-resolver.js.map +1 -1
  29. package/dist/health/health.service.js.map +1 -1
  30. package/dist/health/indicators.abstract/fs-access.indicator.js.map +1 -1
  31. package/dist/index.d.ts +7 -1
  32. package/dist/index.js +22 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/logging/logging.config.js +1 -2
  35. package/dist/logging/logging.config.js.map +1 -1
  36. package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js.map +1 -1
  37. package/dist/metrics/metrics.module.js.map +1 -1
  38. package/dist/platform.context.js.map +1 -1
  39. package/dist/platform.module.js +0 -1
  40. package/dist/platform.module.js.map +1 -1
  41. package/dist/plugin/plugin.module.js.map +1 -1
  42. package/dist/rsdk-metadata/config-metadata.extractor.js.map +1 -1
  43. package/dist/tracing/active-span.module.d.ts +5 -0
  44. package/dist/tracing/active-span.module.js +25 -0
  45. package/dist/tracing/active-span.module.js.map +1 -0
  46. package/dist/tracing/constants.d.ts +7 -1
  47. package/dist/tracing/constants.js +8 -2
  48. package/dist/tracing/constants.js.map +1 -1
  49. package/dist/tracing/decorators/span.decorator.d.ts +2 -2
  50. package/dist/tracing/decorators/span.decorator.js +14 -2
  51. package/dist/tracing/decorators/span.decorator.js.map +1 -1
  52. package/dist/tracing/index.d.ts +7 -0
  53. package/dist/tracing/index.js +7 -0
  54. package/dist/tracing/index.js.map +1 -1
  55. package/dist/tracing/request-metadata.module.d.ts +5 -0
  56. package/dist/tracing/request-metadata.module.js +25 -0
  57. package/dist/tracing/request-metadata.module.js.map +1 -0
  58. package/dist/tracing/services/active-span.storage.d.ts +17 -0
  59. package/dist/tracing/services/active-span.storage.js +46 -0
  60. package/dist/tracing/services/active-span.storage.js.map +1 -0
  61. package/dist/tracing/services/index.d.ts +0 -1
  62. package/dist/tracing/services/index.js +0 -1
  63. package/dist/tracing/services/index.js.map +1 -1
  64. package/dist/tracing/services/instrumentation.service.d.ts +2 -8
  65. package/dist/tracing/services/instrumentation.service.js +9 -114
  66. package/dist/tracing/services/instrumentation.service.js.map +1 -1
  67. package/dist/tracing/services/request-metadata.injector.d.ts +6 -0
  68. package/dist/tracing/services/request-metadata.injector.js +122 -0
  69. package/dist/tracing/services/request-metadata.injector.js.map +1 -0
  70. package/dist/tracing/services/request-metadata.storage.d.ts +32 -0
  71. package/dist/tracing/services/request-metadata.storage.js +64 -0
  72. package/dist/tracing/services/request-metadata.storage.js.map +1 -0
  73. package/dist/tracing/services/trace.injector.d.ts +1 -1
  74. package/dist/tracing/services/trace.injector.js +213 -18
  75. package/dist/tracing/services/trace.injector.js.map +1 -1
  76. package/dist/tracing/tracing.interceptor.d.ts +9 -0
  77. package/dist/tracing/tracing.interceptor.js +24 -0
  78. package/dist/tracing/tracing.interceptor.js.map +1 -0
  79. package/dist/tracing/tracing.module.d.ts +1 -1
  80. package/dist/tracing/tracing.module.js +15 -16
  81. package/dist/tracing/tracing.module.js.map +1 -1
  82. package/dist/tracing/utils/create-span.d.ts +10 -0
  83. package/dist/tracing/utils/create-span.js +20 -0
  84. package/dist/tracing/utils/create-span.js.map +1 -0
  85. package/dist/tracing/utils/save-async-hooks-context.d.ts +19 -0
  86. package/dist/tracing/utils/save-async-hooks-context.js +57 -0
  87. package/dist/tracing/utils/save-async-hooks-context.js.map +1 -0
  88. package/dist/transport/get-transport-id.d.ts +5 -0
  89. package/dist/transport/get-transport-id.js +14 -0
  90. package/dist/transport/get-transport-id.js.map +1 -0
  91. package/dist/transport/protocol.detector.d.ts +7 -0
  92. package/dist/transport/protocol.detector.js +41 -0
  93. package/dist/transport/protocol.detector.js.map +1 -0
  94. package/dist/transport/transport.module.js +9 -0
  95. package/dist/transport/transport.module.js.map +1 -1
  96. package/dist/types/index.d.ts +1 -0
  97. package/dist/types/index.js +4 -0
  98. package/dist/types/index.js.map +1 -1
  99. package/dist/types/metadata.js.map +1 -1
  100. package/dist/types/transports.d.ts +12 -0
  101. package/dist/types/transports.js.map +1 -1
  102. package/dist/unhandled-rejection.handler.js.map +1 -1
  103. package/package.json +12 -12
  104. package/src/config/reload/config-reload.events.ts +9 -0
  105. package/src/config/sources/base/config-source.abstract.ts +2 -0
  106. package/src/config/types.ts +3 -0
  107. package/src/exceptions.handling/global-exceptions.filter.ts +6 -2
  108. package/src/exceptions.handling/types.ts +4 -11
  109. package/src/index.ts +25 -1
  110. package/src/logging/logging.config.ts +1 -2
  111. package/src/platform.module.ts +1 -2
  112. package/src/tracing/active-span.module.ts +13 -0
  113. package/src/tracing/constants.ts +8 -1
  114. package/src/tracing/decorators/span.decorator.ts +19 -6
  115. package/src/tracing/index.ts +7 -0
  116. package/src/tracing/request-metadata.module.ts +13 -0
  117. package/src/tracing/services/active-span.storage.ts +32 -0
  118. package/src/tracing/services/index.ts +0 -1
  119. package/src/tracing/services/instrumentation.service.ts +16 -130
  120. package/src/tracing/services/request-metadata.injector.ts +153 -0
  121. package/src/tracing/services/request-metadata.storage.ts +69 -0
  122. package/src/tracing/services/trace.injector.ts +268 -19
  123. package/src/tracing/tracing.interceptor.ts +18 -0
  124. package/src/tracing/tracing.module.ts +14 -14
  125. package/src/tracing/utils/create-span.ts +20 -0
  126. package/src/tracing/utils/save-async-hooks-context.ts +61 -0
  127. package/src/transport/get-transport-id.ts +20 -0
  128. package/src/transport/protocol.detector.ts +38 -0
  129. package/src/transport/transport.module.ts +10 -0
  130. package/src/types/index.ts +2 -0
  131. package/src/types/transports.ts +15 -0
  132. package/tsconfig.json +12 -2
  133. package/dist/tracing/services/metadata.scanner.d.ts +0 -11
  134. package/dist/tracing/services/metadata.scanner.js +0 -50
  135. package/dist/tracing/services/metadata.scanner.js.map +0 -1
  136. package/src/tracing/services/metadata.scanner.ts +0 -40
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ActiveSpanStorage_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ActiveSpanStorage = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const sdk_node_1 = require("@opentelemetry/sdk-node");
16
+ /**
17
+ * Обертка вокруг `api.trace.getActiveSpan()`
18
+ */
19
+ let ActiveSpanStorage = class ActiveSpanStorage {
20
+ static { ActiveSpanStorage_1 = this; }
21
+ /**
22
+ * Так как этот сервис используется в разных местах, чтобы не усложнять существующий код путем проксирования модулей и сервисов
23
+ * после создания ложим инстанс в эту статик переменную
24
+ */
25
+ static instance;
26
+ constructor() {
27
+ if (!ActiveSpanStorage_1.instance) {
28
+ ActiveSpanStorage_1.instance = this;
29
+ }
30
+ }
31
+ static getInstance() {
32
+ return ActiveSpanStorage_1.instance;
33
+ }
34
+ /**
35
+ * Получает новое значение в контекст
36
+ */
37
+ getActiveSpan() {
38
+ return sdk_node_1.api.trace.getActiveSpan();
39
+ }
40
+ };
41
+ exports.ActiveSpanStorage = ActiveSpanStorage;
42
+ exports.ActiveSpanStorage = ActiveSpanStorage = ActiveSpanStorage_1 = __decorate([
43
+ (0, common_1.Injectable)(),
44
+ __metadata("design:paramtypes", [])
45
+ ], ActiveSpanStorage);
46
+ //# sourceMappingURL=active-span.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-span.storage.js","sourceRoot":"","sources":["../../../src/tracing/services/active-span.storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,sDAA8C;AAE9C;;GAEG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;;IAC5B;;;OAGG;IACK,MAAM,CAAC,QAAQ,CAAgC;IAEvD;QACE,IAAI,CAAC,mBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,mBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,mBAAiB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,cAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AAvBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;;GACA,iBAAiB,CAuB7B"}
@@ -1,3 +1,2 @@
1
1
  export * from './instrumentation.service';
2
- export * from './metadata.scanner';
3
2
  export * from './trace.injector';
@@ -15,6 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./instrumentation.service"), exports);
18
- __exportStar(require("./metadata.scanner"), exports);
19
18
  __exportStar(require("./trace.injector"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,qDAAmC;AACnC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,mDAAiC"}
@@ -1,10 +1,4 @@
1
- import { ILogger } from '@rsdk/logging';
2
- import { ExtendedMetadataScanner } from './metadata.scanner';
3
1
  export declare class InstrumentationService {
4
- private readonly logger;
5
- protected readonly scanner: ExtendedMetadataScanner;
6
- constructor(logger: ILogger, scanner: ExtendedMetadataScanner);
7
- inject(): void;
8
- private wrapAugmentations;
9
- private wrapMethods;
2
+ injectWrapRequestMetadataInjector(): void;
3
+ injectWrapTraceInjector(): void;
10
4
  }
@@ -5,133 +5,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
8
  Object.defineProperty(exports, "__esModule", { value: true });
15
9
  exports.InstrumentationService = void 0;
16
10
  const common_1 = require("@nestjs/common");
17
- const constants_1 = require("@nestjs/common/constants");
18
- const core_1 = require("@nestjs/core");
19
- const logging_1 = require("../../logging");
20
- const metadata_scanner_1 = require("./metadata.scanner");
11
+ const tracing_interceptor_1 = require("../tracing.interceptor");
12
+ const request_metadata_injector_1 = require("./request-metadata.injector");
21
13
  const trace_injector_1 = require("./trace.injector");
22
- const types = [
23
- constants_1.EXCEPTION_FILTERS_METADATA,
24
- constants_1.GUARDS_METADATA,
25
- constants_1.INTERCEPTORS_METADATA,
26
- constants_1.PIPES_METADATA,
27
- ];
28
14
  let InstrumentationService = class InstrumentationService {
29
- logger;
30
- scanner;
31
- constructor(logger, scanner) {
32
- this.logger = logger;
33
- this.scanner = scanner;
34
- }
35
- inject() {
36
- /**
37
- * Для каждого контроллера
38
- */
39
- for (const controller of this.scanner.getControllers()) {
40
- /**
41
- * Перебираем методы контроллера и оборачиваем их.
42
- */
43
- this.wrapMethods(controller.metatype.prototype);
44
- this.wrapAugmentations(controller.metatype);
45
- /**
46
- * Для каждого метода контроллера
47
- */
48
- for (const name of this.scanner.getMethods(controller.metatype.prototype)) {
49
- /**
50
- * Во вложенном цикле находим все гарды, интерцепторы, пайпы и фильтры,
51
- * привязанные к методу.
52
- * Уровни вложенности, как в цикле выше
53
- */
54
- const method = controller.metatype.prototype[name];
55
- this.wrapAugmentations(method);
56
- }
57
- }
58
- /**
59
- * Глобальные гарды, интерцепторы, пайпы и фильтры находятся
60
- * в общем списке провайдеров по injection-токенам.
61
- */
62
- for (const { metatype, token } of this.scanner.getProviders()) {
63
- if (typeof token !== 'string') {
64
- continue;
65
- }
66
- if (token.includes(core_1.APP_GUARD) ||
67
- token.includes(core_1.APP_PIPE) ||
68
- token.includes(core_1.APP_INTERCEPTOR) ||
69
- token.includes(core_1.APP_FILTER)) {
70
- this.wrapMethods(metatype.prototype);
71
- }
72
- }
15
+ injectWrapRequestMetadataInjector() {
73
16
  /**
74
- * Глобальные гарды, интерцепторы, пайпы и фильтры находятся
75
- * в общем списке провайдеров по injection-токенам.
17
+ * Оборачиваем интерцептор в логику которая несет с собою асинк локал сторадж с requestId
76
18
  */
77
- for (const { metatype: { name, prototype }, } of this.scanner.getProviders()) {
78
- if (name.toLowerCase().endsWith('module')) {
79
- continue;
80
- }
81
- if (name === 'ModuleRef' ||
82
- name === 'Reflector' ||
83
- name === 'OrphanedReferenceRegistry' ||
84
- name === 'TypeFieldsAccessor' ||
85
- name === 'TypeMapperSevice' ||
86
- name === 'TypeDefinitionsStorage' ||
87
- name === 'FileSystemHelper' ||
88
- name === 'TypeDefinitionsGenerator' ||
89
- name === 'GraphQLSchemaFactory' ||
90
- name === 'AstDefinitionNodeFactory' ||
91
- name === 'UnionDefinitionFactory' ||
92
- name === 'SubscriptionTypeFactory' ||
93
- name === 'RootTypeFactory' ||
94
- name === 'ResolveTypeFactory' ||
95
- name === 'QueryTypeFactory' ||
96
- name === 'OrphanedTypesFactory' ||
97
- name === 'OutputTypeFactory' ||
98
- name === 'ObjectTypeDefinitionFactory' ||
99
- name === 'MutationTypeFactory' ||
100
- name === 'InterfaceDefinitionFactory' ||
101
- name === 'InputTypeFactory' ||
102
- name === 'ArgsFactory' ||
103
- name === 'InputTypeDefinitionFactory' ||
104
- name === 'EnumDefinitionFactory') {
105
- continue;
106
- }
107
- this.wrapMethods(prototype);
108
- }
19
+ request_metadata_injector_1.RequestMetadataInjector.wrap(tracing_interceptor_1.TracingInterceptor.prototype, tracing_interceptor_1.TracingInterceptor.prototype['intercept']);
109
20
  }
110
- wrapAugmentations(metatype) {
21
+ injectWrapTraceInjector() {
111
22
  /**
112
- * Перебираем во вложенных циклах все гарды, интерцепторы, пайпы и фильтры,
113
- * повешенные на переданный прототип (metatype).
114
- * 1-й уровень - типы сущностей: интерцепторы, гарды, пайпы, фильтры
115
- * 2-й уровень - методы сущностей
23
+ * Оборачиваем интерцептор в логику которая несет с собою асинк локал сторадж с traceId, spanId
116
24
  */
117
- for (const metakey of types) {
118
- for (const instance of Reflect.getMetadata(metakey, metatype) || []) {
119
- this.wrapMethods(instance);
120
- }
121
- }
122
- }
123
- wrapMethods(obj) {
124
- const prototype = obj.prototype ?? obj;
125
- this.logger.trace(`Wrapping methods of ${prototype.constructor.name}...`);
126
- for (const name of this.scanner.getMethods(prototype)) {
127
- trace_injector_1.TraceInjector.wrap(prototype, prototype[name]);
128
- }
25
+ trace_injector_1.TraceInjector.wrap(tracing_interceptor_1.TracingInterceptor.prototype, tracing_interceptor_1.TracingInterceptor.prototype['intercept'], undefined, true);
129
26
  }
130
27
  };
131
28
  exports.InstrumentationService = InstrumentationService;
132
29
  exports.InstrumentationService = InstrumentationService = __decorate([
133
- (0, common_1.Injectable)(),
134
- __param(0, (0, logging_1.InjectLogger)(InstrumentationService)),
135
- __metadata("design:paramtypes", [Object, metadata_scanner_1.ExtendedMetadataScanner])
30
+ (0, common_1.Injectable)()
136
31
  ], InstrumentationService);
137
32
  //# sourceMappingURL=instrumentation.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.service.js","sourceRoot":"","sources":["../../../src/tracing/services/instrumentation.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.service.js","sourceRoot":"","sources":["../../../src/tracing/services/instrumentation.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,gEAA4D;AAE5D,2EAAsE;AACtE,qDAAiD;AAG1C,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAC1B,iCAAiC;QACtC;;WAEG;QACH,mDAAuB,CAAC,IAAI,CAC1B,wCAAkB,CAAC,SAAS,EAC5B,wCAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAC1C,CAAC;IACJ,CAAC;IAEM,uBAAuB;QAC5B;;WAEG;QACH,8BAAa,CAAC,IAAI,CAChB,wCAAkB,CAAC,SAAS,EAC5B,wCAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,EACzC,SAAS,EACT,IAAI,CACL,CAAC;IACJ,CAAC;CACF,CAAA;AAtBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CAsBlC"}
@@ -0,0 +1,6 @@
1
+ export declare class RequestMetadataInjector {
2
+ static wrap(cls: any, original: Function): void;
3
+ private static createWrapper;
4
+ private static isWrapped;
5
+ private static setWrapped;
6
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RequestMetadataInjector = void 0;
7
+ const decorators_1 = require("@rsdk/decorators");
8
+ const logging_1 = require("@rsdk/logging");
9
+ const node_assert_1 = __importDefault(require("node:assert"));
10
+ const node_crypto_1 = require("node:crypto");
11
+ const constants_1 = require("../constants");
12
+ const request_metadata_storage_1 = require("./request-metadata.storage");
13
+ const logger = logging_1.LoggerFactory.create('RequestMetadataInjector');
14
+ class RequestMetadataInjector {
15
+ // eslint-disable-next-line @typescript-eslint/ban-types
16
+ static wrap(cls,
17
+ // eslint-disable-next-line @typescript-eslint/ban-types
18
+ original) {
19
+ /**
20
+ * Означает, что данный метод уже обёрнут
21
+ */
22
+ if (RequestMetadataInjector.isWrapped(original)) {
23
+ return;
24
+ }
25
+ logger.trace(`Wrapping method: ${cls.constructor.name}.${original.name}()`);
26
+ const wrapped = RequestMetadataInjector.createWrapper(original);
27
+ (0, decorators_1.redecorate)(original, wrapped);
28
+ cls[original.name] = wrapped;
29
+ /**
30
+ * Отмечает метод, как обёрнутый (чтобы избежать повторного оборачивания)
31
+ */
32
+ RequestMetadataInjector.setWrapped(wrapped);
33
+ }
34
+ static createWrapper(original) {
35
+ return {
36
+ [original.name](...args) {
37
+ const executionContext = args[0];
38
+ /**
39
+ * Переменный для хранения значений
40
+ */
41
+ let requestId;
42
+ /**
43
+ * Переменная для хранения Request/виртуального Request
44
+ */
45
+ let req;
46
+ /**
47
+ * В зависимости от типа контекста запускаем парсинг переданной Metadata
48
+ */
49
+ if (executionContext.getType() === 'rpc') {
50
+ const metadata = executionContext.switchToRpc().getContext();
51
+ /**
52
+ * Если мы пришли в GRPC и у нас есть методы для работы с Metadata
53
+ * то мы конвертируем Metadata в некий виртуальный request с заголовками (заголовки выбраны как общий стандарт проброса мета информации)
54
+ */
55
+ if (metadata?.get) {
56
+ req = {
57
+ headers: {
58
+ /**
59
+ * Пробрасываем текущий ид запроса
60
+ */
61
+ ...(metadata.get(constants_1.X_REQUEST_ID).length > 0
62
+ ? {
63
+ [constants_1.X_REQUEST_ID]: metadata.get(constants_1.X_REQUEST_ID)[0],
64
+ }
65
+ : {}),
66
+ },
67
+ };
68
+ }
69
+ }
70
+ if (executionContext.getType() === 'http') {
71
+ req = executionContext.switchToHttp().getRequest();
72
+ }
73
+ if (executionContext.getType() === 'graphql') {
74
+ req = executionContext.getArgs()[2]?.req; // аналог GqlExecutionContext.create(executionContext).getContext().req
75
+ if (req.connectionInitReceived) {
76
+ /**
77
+ * При работе с сабскрипшен через веб сокет, заголовки передаются в опции подключения к сабскрипшен в переменную connectionParams
78
+ * и мы перегоняем эти данные в request заголовки
79
+ */
80
+ req.headers = {
81
+ ...req?.headers,
82
+ ...Object.entries(req?.connectionParams?.headers || {}).reduce((acc, [key, value]) => {
83
+ acc[key] = value;
84
+ return acc;
85
+ }, {}),
86
+ };
87
+ }
88
+ }
89
+ if (req?.headers) {
90
+ /**
91
+ * Мы приводим все ключи заголовков к одному **lower_case** регистру, так как у разных транспортов разные регистры в именовании ключей для заголовков
92
+ */
93
+ req.headers = {
94
+ ...Object.entries(req.headers).reduce((acc, [key, value]) => {
95
+ acc[key.toLowerCase()] = req.headers[key.toLowerCase()] || value;
96
+ return acc;
97
+ }, {}),
98
+ };
99
+ /**
100
+ * Идентификатор запроса, если не передали то генерируем рандомный
101
+ */
102
+ requestId = req.headers[constants_1.X_REQUEST_ID] || (0, node_crypto_1.randomUUID)();
103
+ }
104
+ return (request_metadata_storage_1.RequestMetadataStorage.getInstance()?.run({ requestId }, async () => {
105
+ return original.apply(this, args);
106
+ }) ?? original.apply(this, args));
107
+ },
108
+ }[original.name];
109
+ }
110
+ static isWrapped(prototype) {
111
+ node_assert_1.default.ok(prototype);
112
+ return Reflect.hasMetadata(constants_1.Constants.REQUEST_METADATA_ASYNC_LOCAL_STORAGE_ACTIVE, prototype);
113
+ }
114
+ static setWrapped(prototype) {
115
+ node_assert_1.default.ok(prototype);
116
+ // Value doesn't matter
117
+ const NOOP = 1;
118
+ Reflect.defineMetadata(constants_1.Constants.REQUEST_METADATA_ASYNC_LOCAL_STORAGE_ACTIVE, NOOP, prototype);
119
+ }
120
+ }
121
+ exports.RequestMetadataInjector = RequestMetadataInjector;
122
+ //# sourceMappingURL=request-metadata.injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-metadata.injector.js","sourceRoot":"","sources":["../../../src/tracing/services/request-metadata.injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type RequestMetadata = {
2
+ requestId: string | undefined;
3
+ };
4
+ /**
5
+ * Обертка вокруг `AsyncLocalStorage`
6
+ * В теории можно запустить с пустым `payload`, для того чтобы добавлять
7
+ * значения в процессе
8
+ */
9
+ export declare class RequestMetadataStorage {
10
+ /**
11
+ * Так как этот сервис используется в разных местах, чтобы не усложнять существующий код путем проксирования модулей и сервисов
12
+ * после создания ложим инстанс в эту статик переменную
13
+ */
14
+ private static instance;
15
+ private asyncLocalStorage;
16
+ constructor();
17
+ static getInstance(): RequestMetadataStorage | undefined;
18
+ /**
19
+ * Получает новое значение из контекста
20
+ */
21
+ getRequestMetadata(): Promise<RequestMetadata>;
22
+ /**
23
+ * Запускает переданную фунцию в контексте
24
+ * @template TResult
25
+ * @template TArgs
26
+ * @param context Контекст исполнения (данные)
27
+ * @param fn Функция для запуска
28
+ * @param args Аргументы функции
29
+ * @returns Результат выполнения функции
30
+ */
31
+ run<TResult, TArgs extends any[]>(requestMetadata: RequestMetadata, fn: (...args: TArgs) => TResult, ...args: TArgs): TResult;
32
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var RequestMetadataStorage_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.RequestMetadataStorage = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const node_async_hooks_1 = require("node:async_hooks");
16
+ /**
17
+ * Обертка вокруг `AsyncLocalStorage`
18
+ * В теории можно запустить с пустым `payload`, для того чтобы добавлять
19
+ * значения в процессе
20
+ */
21
+ let RequestMetadataStorage = class RequestMetadataStorage {
22
+ static { RequestMetadataStorage_1 = this; }
23
+ /**
24
+ * Так как этот сервис используется в разных местах, чтобы не усложнять существующий код путем проксирования модулей и сервисов
25
+ * после создания ложим инстанс в эту статик переменную
26
+ */
27
+ static instance;
28
+ asyncLocalStorage = new node_async_hooks_1.AsyncLocalStorage();
29
+ constructor() {
30
+ if (!RequestMetadataStorage_1.instance) {
31
+ RequestMetadataStorage_1.instance = this;
32
+ }
33
+ }
34
+ static getInstance() {
35
+ return RequestMetadataStorage_1.instance;
36
+ }
37
+ /**
38
+ * Получает новое значение из контекста
39
+ */
40
+ async getRequestMetadata() {
41
+ return (RequestMetadataStorage_1.instance?.asyncLocalStorage.getStore()
42
+ ?.requestMetadata ?? {
43
+ requestId: undefined,
44
+ });
45
+ }
46
+ /**
47
+ * Запускает переданную фунцию в контексте
48
+ * @template TResult
49
+ * @template TArgs
50
+ * @param context Контекст исполнения (данные)
51
+ * @param fn Функция для запуска
52
+ * @param args Аргументы функции
53
+ * @returns Результат выполнения функции
54
+ */
55
+ run(requestMetadata, fn, ...args) {
56
+ return (RequestMetadataStorage_1?.instance?.asyncLocalStorage.run({ requestMetadata }, fn, ...args) ?? fn(...args));
57
+ }
58
+ };
59
+ exports.RequestMetadataStorage = RequestMetadataStorage;
60
+ exports.RequestMetadataStorage = RequestMetadataStorage = RequestMetadataStorage_1 = __decorate([
61
+ (0, common_1.Injectable)(),
62
+ __metadata("design:paramtypes", [])
63
+ ], RequestMetadataStorage);
64
+ //# sourceMappingURL=request-metadata.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-metadata.storage.js","sourceRoot":"","sources":["../../../src/tracing/services/request-metadata.storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uDAAqD;AAMrD;;;;GAIG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;;IACjC;;;OAGG;IACK,MAAM,CAAC,QAAQ,CAAqC;IAEpD,iBAAiB,GAAG,IAAI,oCAAiB,EAE7C,CAAC;IAEL;QACE,IAAI,CAAC,wBAAsB,CAAC,QAAQ,EAAE,CAAC;YACrC,wBAAsB,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,wBAAsB,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,CACL,wBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;YAC3D,EAAE,eAAe,IAAI;YACrB,SAAS,EAAE,SAAS;SACrB,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CACD,eAAgC,EAChC,EAA+B,EAC/B,GAAG,IAAW;QAEd,OAAO,CACL,wBAAsB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CACrD,EAAE,eAAe,EAAE,EACnB,EAAE,EACF,GAAG,IAAI,CACR,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAvDY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;;GACA,sBAAsB,CAuDlC"}
@@ -1,6 +1,6 @@
1
1
  import type { AttributeValue } from '@opentelemetry/api';
2
2
  export declare class TraceInjector {
3
- static wrap(cls: any, original: Function, descriptor?: TypedPropertyDescriptor<any>): void;
3
+ static wrap(cls: any, original: Function, descriptor?: TypedPropertyDescriptor<any>, isTracingInterceptor?: boolean): void;
4
4
  static toAttribute(data: unknown): AttributeValue;
5
5
  private static createWrapper;
6
6
  private static createSpanName;