@rsdk/core 4.2.4 → 4.3.0-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 (102) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/index.d.ts +1 -2
  3. package/dist/index.js +1 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/noop.http-adapter.d.ts +2 -0
  6. package/dist/noop.http-adapter.js +6 -0
  7. package/dist/noop.http-adapter.js.map +1 -1
  8. package/dist/platform.module.d.ts +3 -3
  9. package/dist/platform.module.js +23 -23
  10. package/dist/platform.module.js.map +1 -1
  11. package/dist/tracing/decorators/span.decorator.js +5 -6
  12. package/dist/tracing/decorators/span.decorator.js.map +1 -1
  13. package/dist/tracing/index.d.ts +0 -2
  14. package/dist/tracing/index.js +0 -2
  15. package/dist/tracing/index.js.map +1 -1
  16. package/dist/tracing/services/index.d.ts +0 -1
  17. package/dist/tracing/services/index.js +0 -1
  18. package/dist/tracing/services/index.js.map +1 -1
  19. package/dist/tracing/services/trace.injector.d.ts +4 -4
  20. package/dist/tracing/services/trace.injector.js +38 -68
  21. package/dist/tracing/services/trace.injector.js.map +1 -1
  22. package/dist/tracing/tracing.interceptor.d.ts +3 -5
  23. package/dist/tracing/tracing.interceptor.js +15 -91
  24. package/dist/tracing/tracing.interceptor.js.map +1 -1
  25. package/dist/tracing/tracing.module.d.ts +4 -16
  26. package/dist/tracing/tracing.module.js +18 -82
  27. package/dist/tracing/tracing.module.js.map +1 -1
  28. package/dist/tracing/types.d.ts +11 -0
  29. package/dist/tracing/types.js +23 -0
  30. package/dist/tracing/types.js.map +1 -0
  31. package/dist/tracing/utils/save-async-hooks-context.js +2 -3
  32. package/dist/tracing/utils/save-async-hooks-context.js.map +1 -1
  33. package/dist/transport/protocol.detector.d.ts +1 -0
  34. package/dist/transport/protocol.detector.js +5 -2
  35. package/dist/transport/protocol.detector.js.map +1 -1
  36. package/dist/transport/transport.module.js +1 -1
  37. package/dist/transport/transport.module.js.map +1 -1
  38. package/dist/types/constants.d.ts +2 -0
  39. package/dist/types/constants.js +6 -0
  40. package/dist/types/constants.js.map +1 -0
  41. package/dist/types/index.d.ts +2 -0
  42. package/dist/types/index.js +5 -1
  43. package/dist/types/index.js.map +1 -1
  44. package/dist/types/plugins.d.ts +5 -0
  45. package/dist/types/plugins.js.map +1 -1
  46. package/dist/types/tracing.headers-extractor.d.ts +15 -0
  47. package/dist/types/tracing.headers-extractor.js +67 -0
  48. package/dist/types/tracing.headers-extractor.js.map +1 -0
  49. package/dist/types/transports.d.ts +6 -1
  50. package/dist/types/transports.js.map +1 -1
  51. package/package.json +13 -12
  52. package/src/index.ts +0 -3
  53. package/src/noop.http-adapter.ts +8 -0
  54. package/src/platform.module.ts +20 -25
  55. package/src/tracing/decorators/span.decorator.ts +6 -6
  56. package/src/tracing/index.ts +0 -2
  57. package/src/tracing/services/index.ts +0 -1
  58. package/src/tracing/services/trace.injector.ts +49 -92
  59. package/src/tracing/tracing.interceptor.ts +7 -127
  60. package/src/tracing/tracing.module.ts +19 -104
  61. package/src/tracing/types.ts +28 -0
  62. package/src/tracing/utils/save-async-hooks-context.ts +2 -3
  63. package/src/transport/protocol.detector.ts +6 -2
  64. package/src/transport/transport.module.ts +1 -1
  65. package/src/types/constants.ts +2 -0
  66. package/src/types/index.ts +2 -0
  67. package/src/types/plugins.ts +6 -0
  68. package/src/types/tracing.headers-extractor.ts +51 -0
  69. package/src/types/transports.ts +8 -1
  70. package/tsconfig.build.json +1 -1
  71. package/dist/tracing/active-span.module.d.ts +0 -5
  72. package/dist/tracing/active-span.module.js +0 -25
  73. package/dist/tracing/active-span.module.js.map +0 -1
  74. package/dist/tracing/auto-instrumentations.config.d.ts +0 -1
  75. package/dist/tracing/auto-instrumentations.config.js +0 -42
  76. package/dist/tracing/auto-instrumentations.config.js.map +0 -1
  77. package/dist/tracing/grpc.headers.d.ts +0 -11
  78. package/dist/tracing/grpc.headers.js +0 -24
  79. package/dist/tracing/grpc.headers.js.map +0 -1
  80. package/dist/tracing/http.headers.d.ts +0 -11
  81. package/dist/tracing/http.headers.js +0 -22
  82. package/dist/tracing/http.headers.js.map +0 -1
  83. package/dist/tracing/open-telemetry.interceptor.d.ts +0 -5
  84. package/dist/tracing/open-telemetry.interceptor.js +0 -83
  85. package/dist/tracing/open-telemetry.interceptor.js.map +0 -1
  86. package/dist/tracing/services/active-span.storage.d.ts +0 -17
  87. package/dist/tracing/services/active-span.storage.js +0 -46
  88. package/dist/tracing/services/active-span.storage.js.map +0 -1
  89. package/dist/tracing/services/instrumentation.service.d.ts +0 -3
  90. package/dist/tracing/services/instrumentation.service.js +0 -25
  91. package/dist/tracing/services/instrumentation.service.js.map +0 -1
  92. package/dist/tracing/services/request-id.provider.d.ts +0 -11
  93. package/dist/tracing/services/request-id.provider.js +0 -13
  94. package/dist/tracing/services/request-id.provider.js.map +0 -1
  95. package/src/tracing/active-span.module.ts +0 -13
  96. package/src/tracing/auto-instrumentations.config.ts +0 -44
  97. package/src/tracing/grpc.headers.ts +0 -29
  98. package/src/tracing/http.headers.ts +0 -32
  99. package/src/tracing/open-telemetry.interceptor.ts +0 -114
  100. package/src/tracing/services/active-span.storage.ts +0 -32
  101. package/src/tracing/services/instrumentation.service.ts +0 -20
  102. package/src/tracing/services/request-id.provider.ts +0 -21
@@ -1,22 +1,10 @@
1
- import type { BeforeApplicationShutdown, DynamicModule, OnModuleInit } from '@nestjs/common';
2
- import { NodeSDK } from '@opentelemetry/sdk-node';
3
- import type { SpanExporter } from '@opentelemetry/sdk-trace-base';
1
+ import type { DynamicModule, OnModuleInit } from '@nestjs/common';
4
2
  import { ILogger } from '@rsdk/logging';
5
- import { InstrumentationService } from './services';
6
3
  import { TracingModuleConfig } from './tracing.config';
7
- export interface TracingModuleOptions {
8
- appName: string;
9
- processing: 'simple' | 'batch';
10
- exporter?: SpanExporter;
11
- }
12
- export declare class TracingModule implements OnModuleInit, BeforeApplicationShutdown {
4
+ export declare class TracingModule implements OnModuleInit {
13
5
  private readonly logger;
14
- private readonly instrumentations;
15
- private readonly sdk;
16
6
  private readonly config;
17
- constructor(logger: ILogger, instrumentations: InstrumentationService, sdk: NodeSDK, config: TracingModuleConfig);
18
- static forRoot(options: TracingModuleOptions): DynamicModule;
7
+ constructor(logger: ILogger, config: TracingModuleConfig);
8
+ static forRoot(): DynamicModule;
19
9
  onModuleInit(): Promise<void>;
20
- private static createSDKProvider;
21
- beforeApplicationShutdown(): Promise<void>;
22
10
  }
@@ -17,118 +17,54 @@ exports.TracingModule = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const core_1 = require("@nestjs/core");
19
19
  const api_1 = require("@opentelemetry/api");
20
- const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
21
- const core_2 = require("@opentelemetry/core");
22
- const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
23
- const propagator_b3_1 = require("@opentelemetry/propagator-b3");
24
- const resources_1 = require("@opentelemetry/resources");
25
- const sdk_node_1 = require("@opentelemetry/sdk-node");
26
- const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
27
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
28
20
  const logging_1 = require("@rsdk/logging");
21
+ const tracing_1 = require("@rsdk/tracing");
29
22
  const logging_2 = require("../logging");
30
- const request_id_provider_1 = require("./services/request-id.provider");
31
- const active_span_module_1 = require("./active-span.module");
32
- const auto_instrumentations_config_1 = require("./auto-instrumentations.config");
33
- const open_telemetry_interceptor_1 = require("./open-telemetry.interceptor");
23
+ const tracing_headers_extractor_1 = require("../types/tracing.headers-extractor");
34
24
  const request_metadata_module_1 = require("./request-metadata.module");
35
- const services_1 = require("./services");
36
25
  const tracing_config_1 = require("./tracing.config");
37
26
  const tracing_interceptor_1 = require("./tracing.interceptor");
38
27
  let TracingModule = TracingModule_1 = class TracingModule {
39
28
  logger;
40
- instrumentations;
41
- sdk;
42
29
  config;
43
- constructor(logger, instrumentations, sdk, config) {
30
+ constructor(logger, config) {
44
31
  this.logger = logger;
45
- this.instrumentations = instrumentations;
46
- this.sdk = sdk;
47
32
  this.config = config;
48
33
  }
49
- static forRoot(options) {
34
+ static forRoot() {
50
35
  return {
51
36
  module: TracingModule_1,
52
- imports: [request_metadata_module_1.RequestMetadataModule, active_span_module_1.ActiveSpanModule],
37
+ imports: [request_metadata_module_1.RequestMetadataModule],
53
38
  providers: [
54
- { provide: core_1.APP_INTERCEPTOR, useValue: new tracing_interceptor_1.TracingInterceptor() },
55
- {
56
- provide: core_1.APP_INTERCEPTOR,
57
- useValue: new open_telemetry_interceptor_1.OpenTelemetryInterceptor(),
58
- },
59
- services_1.InstrumentationService,
60
- this.createSDKProvider(options),
39
+ { provide: core_1.APP_INTERCEPTOR, useClass: tracing_interceptor_1.TracingInterceptor },
40
+ tracing_headers_extractor_1.TracingHeadersExtractor,
61
41
  ],
62
42
  };
63
43
  }
64
44
  // Можно добавить включение и выключение при изменении конфига.
65
45
  async onModuleInit() {
66
- if (!this.config.enabled) {
67
- this.logger.info('Tracing is disabled');
68
- logging_1.LoggerFactory.applyInstrumentations((record) => {
69
- record['request_id'] = request_id_provider_1.RequestIdProvider.get();
70
- });
71
- return;
72
- }
46
+ logging_1.LoggerFactory.applyInstrumentations((record) => {
47
+ record['request_id'] = tracing_1.RequestIdProvider.get();
48
+ const span = api_1.trace.getSpan(api_1.context.active());
49
+ if (!span) {
50
+ return;
51
+ }
52
+ const spanContext = span.spanContext();
53
+ record['trace_id'] = spanContext.traceId;
54
+ record['span_id'] = spanContext.spanId;
55
+ });
73
56
  this.logger.info('Tracing is enabled');
74
- this.logger.debug('Starting Open Telemetry SDK...');
75
- this.sdk.start();
76
- this.logger.debug('Instrumenting nest.js entities...');
77
- this.instrumentations.injectWrapTraceInjector();
78
57
  this.logger.debug('Attaching log messages to spans...');
79
- logging_1.LoggerFactory.applyInstrumentations();
80
58
  logging_1.LoggerFactory.onMessage((level, msg) => {
81
59
  const span = api_1.trace.getSpan(api_1.context.active());
82
60
  span?.addEvent('log', { ...msg, level });
83
61
  });
84
62
  }
85
- static createSDKProvider(options) {
86
- return {
87
- provide: sdk_node_1.NodeSDK,
88
- inject: [tracing_config_1.TracingModuleConfig],
89
- useFactory: (config) => {
90
- const exporter = options.exporter ||
91
- new exporter_trace_otlp_http_1.OTLPTraceExporter({
92
- url: config.collectorUrl?.toString(),
93
- });
94
- const processor = options.processing === 'simple'
95
- ? new sdk_trace_base_1.SimpleSpanProcessor(exporter)
96
- : new sdk_trace_base_1.BatchSpanProcessor(exporter);
97
- return new sdk_node_1.NodeSDK({
98
- autoDetectResources: true,
99
- contextManager: new context_async_hooks_1.AsyncLocalStorageContextManager(),
100
- instrumentations: config.enabled ? [auto_instrumentations_config_1.autoInstumentationOptions] : [],
101
- resource: new resources_1.Resource({
102
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: options.appName,
103
- }),
104
- spanProcessor: processor,
105
- textMapPropagator: new core_2.CompositePropagator({
106
- propagators: [
107
- new propagator_b3_1.B3Propagator(),
108
- new propagator_b3_1.B3Propagator({
109
- injectEncoding: propagator_b3_1.B3InjectEncoding.MULTI_HEADER,
110
- }),
111
- ],
112
- }),
113
- });
114
- },
115
- };
116
- }
117
- async beforeApplicationShutdown() {
118
- if (!this.config.enabled) {
119
- return;
120
- }
121
- this.logger.info('Shutting down Open Telemetry SDK...');
122
- await this.sdk.shutdown();
123
- this.logger.info('Shutting down Open Telemetry SDK has been done!');
124
- }
125
63
  };
126
64
  exports.TracingModule = TracingModule;
127
65
  exports.TracingModule = TracingModule = TracingModule_1 = __decorate([
128
66
  (0, common_1.Module)({}),
129
67
  __param(0, (0, logging_2.InjectLogger)(TracingModule)),
130
- __metadata("design:paramtypes", [Object, services_1.InstrumentationService,
131
- sdk_node_1.NodeSDK,
132
- tracing_config_1.TracingModuleConfig])
68
+ __metadata("design:paramtypes", [Object, tracing_config_1.TracingModuleConfig])
133
69
  ], TracingModule);
134
70
  //# sourceMappingURL=tracing.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.module.js","sourceRoot":"","sources":["../../src/tracing/tracing.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracing.module.js","sourceRoot":"","sources":["../../src/tracing/tracing.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2CAAwC;AACxC,uCAA+C;AAE/C,4CAAoD;AACpD,2CAAuD;AACvD,2CAAkD;AAElD,wCAA0C;AAC1C,kFAA6E;AAE7E,uEAAkE;AAClE,qDAAuD;AACvD,+DAA2D;AAGpD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAEwB;IAC7B;IAFnB,YACgD,MAAe,EAC5C,MAA2B;QADE,WAAM,GAAN,MAAM,CAAS;QAC5C,WAAM,GAAN,MAAM,CAAqB;IAC3C,CAAC;IAEJ,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,+CAAqB,CAAC;YAChC,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,sBAAe,EAAE,QAAQ,EAAE,wCAAkB,EAAE;gBAC1D,mDAAuB;aACxB;SACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,YAAY;QAChB,uBAAa,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,2BAAiB,CAAC,GAAG,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEpD,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,uBAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7C,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;IAGN,WAAA,IAAA,sBAAY,EAAC,aAAa,CAAC,CAAA;6CACH,oCAAmB;GAHnC,aAAa,CAuCzB"}
@@ -0,0 +1,11 @@
1
+ import { X_REQUEST_ID } from './constants';
2
+ export type Headers = {
3
+ [X_REQUEST_ID]: string;
4
+ };
5
+ export declare const tracingHeaders: readonly ["x-requestid"];
6
+ export declare class TracingHeaders {
7
+ constructor(headers: Partial<Headers>);
8
+ getHeaders(): Headers;
9
+ private createRequestId;
10
+ private headers;
11
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TracingHeaders = exports.tracingHeaders = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const constants_1 = require("./constants");
6
+ exports.tracingHeaders = [constants_1.X_REQUEST_ID];
7
+ class TracingHeaders {
8
+ constructor(headers) {
9
+ this.headers = {
10
+ ...headers,
11
+ [constants_1.X_REQUEST_ID]: headers[constants_1.X_REQUEST_ID] ?? this.createRequestId(),
12
+ };
13
+ }
14
+ getHeaders() {
15
+ return this.headers;
16
+ }
17
+ createRequestId() {
18
+ return (0, node_crypto_1.randomUUID)();
19
+ }
20
+ headers;
21
+ }
22
+ exports.TracingHeaders = TracingHeaders;
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,2CAA2C;AAM9B,QAAA,cAAc,GAAG,CAAC,wBAAY,CAAU,CAAC;AAEtD,MAAa,cAAc;IACzB,YAAY,OAAyB;QACnC,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,OAAO;YACV,CAAC,wBAAY,CAAC,EAAE,OAAO,CAAC,wBAAY,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;SACrD,CAAC;IACf,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,eAAe;QACrB,OAAO,IAAA,wBAAU,GAAE,CAAC;IACtB,CAAC;IAEO,OAAO,CAAU;CAC1B;AAjBD,wCAiBC"}
@@ -4,7 +4,6 @@ exports.saveAsyncHooksContext = void 0;
4
4
  const api_1 = require("@opentelemetry/api");
5
5
  const sdk_node_1 = require("@opentelemetry/sdk-node");
6
6
  const services_1 = require("../services");
7
- const active_span_storage_1 = require("../services/active-span.storage");
8
7
  /**
9
8
  * Проблема: при передаче управления в rxjs теряется контекст асинк локал стораджа
10
9
  *
@@ -24,9 +23,9 @@ const active_span_storage_1 = require("../services/active-span.storage");
24
23
  * ```
25
24
  */
26
25
  function saveAsyncHooksContext(fn) {
27
- const span = active_span_storage_1.ActiveSpanStorage.getInstance()?.getActiveSpan();
26
+ const span = sdk_node_1.api.trace.getActiveSpan();
28
27
  return async function (...args) {
29
- const activeSpan = active_span_storage_1.ActiveSpanStorage.getInstance()?.getActiveSpan();
28
+ const activeSpan = sdk_node_1.api.trace.getActiveSpan();
30
29
  if (activeSpan) {
31
30
  Object.assign(activeSpan.spanContext(), span?.spanContext());
32
31
  return fn(...args);
@@ -1 +1 @@
1
- {"version":3,"file":"save-async-hooks-context.js","sourceRoot":"","sources":["../../../src/tracing/utils/save-async-hooks-context.ts"],"names":[],"mappings":";;;AAAA,4CAAoD;AACpD,sDAA8C;AAG9C,0CAA4C;AAC5C,yEAAoE;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CACnC,EAAkC;IAElC,MAAM,IAAI,GAAG,uCAAiB,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC;IAE9D,OAAO,KAAK,WAAW,GAAG,IAAI;QAC5B,MAAM,UAAU,GAAG,uCAAiB,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,WAAW,GAAG,cAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO,cAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAC9C,EAAE,CAAC,GAAG,IAAI,CAAC;aACR,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,wBAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,KAAkB,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,oBAAc,CAAC,KAAK;gBAC1B,OAAO,EAAG,KAAmB,CAAC,OAAO;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAnCD,sDAmCC"}
1
+ {"version":3,"file":"save-async-hooks-context.js","sourceRoot":"","sources":["../../../src/tracing/utils/save-async-hooks-context.ts"],"names":[],"mappings":";;;AAAA,4CAAoD;AACpD,sDAA8C;AAG9C,0CAA4C;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CACnC,EAAkC;IAElC,MAAM,IAAI,GAAG,cAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAEvC,OAAO,KAAK,WAAW,GAAG,IAAI;QAC5B,MAAM,UAAU,GAAG,cAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC7C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,WAAW,GAAG,cAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO,cAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAC9C,EAAE,CAAC,GAAG,IAAI,CAAC;aACR,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,wBAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,KAAkB,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,oBAAc,CAAC,KAAK;gBAC1B,OAAO,EAAG,KAAmB,CAAC,OAAO;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAnCD,sDAmCC"}
@@ -3,5 +3,6 @@ import type { ITransport } from '../types';
3
3
  export declare class ProtocolDetector {
4
4
  private transports;
5
5
  constructor(transports: ITransport[]);
6
+ getTransport(context: ArgumentsHost): ITransport | undefined;
6
7
  getProtocol(context: ArgumentsHost): string | undefined;
7
8
  }
@@ -7,7 +7,7 @@ class ProtocolDetector {
7
7
  constructor(transports) {
8
8
  this.transports = transports;
9
9
  }
10
- getProtocol(context) {
10
+ getTransport(context) {
11
11
  if (this.transports.length === 0) {
12
12
  return;
13
13
  }
@@ -28,7 +28,10 @@ class ProtocolDetector {
28
28
  if (matched.length === 0) {
29
29
  return;
30
30
  }
31
- return matched[0].tr.getProtocol();
31
+ return matched[0].tr;
32
+ }
33
+ getProtocol(context) {
34
+ return this.getTransport(context)?.getProtocol();
32
35
  }
33
36
  }
34
37
  exports.ProtocolDetector = ProtocolDetector;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.detector.js","sourceRoot":"","sources":["../../src/transport/protocol.detector.ts"],"names":[],"mappings":";;;AAEA,8CAAkD;AAGlD,MAAa,gBAAgB;IACP;IAApB,YAAoB,UAAwB;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAG,CAAC;IAEhD,WAAW,CAAC,OAAsB;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;YACnC,EAAE;SACH,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,8BAAiB,CAAC,iCAAiC,EAAE;gBAC7D,KAAK,EAAE;oBACL,QAAQ;oBACR,OAAO;oBACP,OAAO;iBACR;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;CACF;AA1BD,4CA0BC"}
1
+ {"version":3,"file":"protocol.detector.js","sourceRoot":"","sources":["../../src/transport/protocol.detector.ts"],"names":[],"mappings":";;;AAEA,8CAAkD;AAGlD,MAAa,gBAAgB;IACP;IAApB,YAAoB,UAAwB;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAG,CAAC;IAEhD,YAAY,CAAC,OAAsB;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;YACnC,EAAE;SACH,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,8BAAiB,CAAC,iCAAiC,EAAE;gBAC7D,KAAK,EAAE;oBACL,QAAQ;oBACR,OAAO;oBACP,OAAO;iBACR;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,OAAsB;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACnD,CAAC;CACF;AA9BD,4CA8BC"}
@@ -31,7 +31,7 @@ class PlatformTransportModule {
31
31
  providers: [
32
32
  {
33
33
  provide: protocol_detector_1.ProtocolDetector,
34
- useFactory: () => new protocol_detector_1.ProtocolDetector(options.transports ?? []),
34
+ useValue: new protocol_detector_1.ProtocolDetector(options.transports ?? []),
35
35
  },
36
36
  ],
37
37
  global: true,
@@ -1 +1 @@
1
- {"version":3,"file":"transport.module.js","sourceRoot":"","sources":["../../src/transport/transport.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.module.js","sourceRoot":"","sources":["../../src/transport/transport.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const APP_PLUGINS: unique symbol;
2
+ export declare const APP_TRANSPORTS: unique symbol;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_TRANSPORTS = exports.APP_PLUGINS = void 0;
4
+ exports.APP_PLUGINS = Symbol('PLUGINS');
5
+ exports.APP_TRANSPORTS = Symbol('TRANSPORTS');
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC"}
@@ -3,3 +3,5 @@ export * from './metadata';
3
3
  export * from './options';
4
4
  export * from './transports';
5
5
  export * from './plugins';
6
+ export { APP_TRANSPORTS } from './constants';
7
+ export { APP_PLUGINS } from './constants';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.TransportId = exports.getTransportId = void 0;
17
+ exports.APP_PLUGINS = exports.APP_TRANSPORTS = exports.TransportId = exports.getTransportId = void 0;
18
18
  var get_transport_id_1 = require("../transport/get-transport-id");
19
19
  Object.defineProperty(exports, "getTransportId", { enumerable: true, get: function () { return get_transport_id_1.getTransportId; } });
20
20
  Object.defineProperty(exports, "TransportId", { enumerable: true, get: function () { return get_transport_id_1.TransportId; } });
@@ -22,4 +22,8 @@ __exportStar(require("./metadata"), exports);
22
22
  __exportStar(require("./options"), exports);
23
23
  __exportStar(require("./transports"), exports);
24
24
  __exportStar(require("./plugins"), exports);
25
+ var constants_1 = require("./constants");
26
+ Object.defineProperty(exports, "APP_TRANSPORTS", { enumerable: true, get: function () { return constants_1.APP_TRANSPORTS; } });
27
+ var constants_2 = require("./constants");
28
+ Object.defineProperty(exports, "APP_PLUGINS", { enumerable: true, get: function () { return constants_2.APP_PLUGINS; } });
25
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAA4E;AAAnE,kHAAA,cAAc,OAAA;AAAE,+GAAA,WAAW,OAAA;AAEpC,6CAA2B;AAC3B,4CAA0B;AAC1B,+CAA6B;AAC7B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAA4E;AAAnE,kHAAA,cAAc,OAAA;AAAE,+GAAA,WAAW,OAAA;AAEpC,6CAA2B;AAC3B,4CAA0B;AAC1B,+CAA6B;AAC7B,4CAA0B;AAC1B,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,yCAA0C;AAAjC,wGAAA,WAAW,OAAA"}
@@ -1,6 +1,7 @@
1
1
  import type { DynamicModule, MiddlewareConsumer } from '@nestjs/common';
2
2
  import type { Constructor } from '@rsdk/common';
3
3
  import type { IErrorsFormatter, IErrorsSender, IErrorsTransformer } from '../exceptions.handling';
4
+ import type { ProtocolTracingHeadersExtractor } from './transports';
4
5
  export type SpecifiedTransports = Readonly<string[]>;
5
6
  export type AppropriateTransports = SpecifiedTransports | 'any';
6
7
  export declare const hasSpecifiedTransports: (x: PlatformAppPlugin) => x is PlatformAppPlugin<readonly string[]>;
@@ -11,6 +12,10 @@ export declare const hasSpecifiedTransports: (x: PlatformAppPlugin) => x is Plat
11
12
  * outside. This is where plugins come in.
12
13
  */
13
14
  export interface PlatformAppPlugin<T extends AppropriateTransports = AppropriateTransports> {
15
+ tracingHeadersExtractors?(): {
16
+ extractor: ProtocolTracingHeadersExtractor;
17
+ protocol: string;
18
+ }[];
14
19
  /**
15
20
  * Returns list of appropriate transports.
16
21
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":";;;AAYO,MAAM,sBAAsB,GAAG,CACpC,CAAoB,EACyB,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,KAAK,CAAC;AAFjE,QAAA,sBAAsB,0BAE2C"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":";;;AAcO,MAAM,sBAAsB,GAAG,CACpC,CAAoB,EACyB,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,KAAK,CAAC;AAFjE,QAAA,sBAAsB,0BAE2C"}
@@ -0,0 +1,15 @@
1
+ import { type ExecutionContext } from '@nestjs/common';
2
+ import { ILogger } from '@rsdk/logging';
3
+ import { TracingHeaders } from '../tracing/types';
4
+ import { ProtocolDetector } from '../transport/protocol.detector';
5
+ import type { PlatformAppPlugin } from './plugins';
6
+ import type { ITransport } from './transports';
7
+ export declare class TracingHeadersExtractor {
8
+ private plugins;
9
+ private transports;
10
+ private protocolDetector;
11
+ private logger;
12
+ constructor(plugins: Set<PlatformAppPlugin>, transports: Set<ITransport>, protocolDetector: ProtocolDetector, logger: ILogger);
13
+ extract(ctx: ExecutionContext): TracingHeaders;
14
+ private extractors;
15
+ }
@@ -0,0 +1,67 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TracingHeadersExtractor = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const logging_1 = require("../logging");
18
+ const types_1 = require("../tracing/types");
19
+ const protocol_detector_1 = require("../transport/protocol.detector");
20
+ const constants_1 = require("./constants");
21
+ let TracingHeadersExtractor = class TracingHeadersExtractor {
22
+ plugins;
23
+ transports;
24
+ protocolDetector;
25
+ logger;
26
+ constructor(plugins, transports, protocolDetector, logger) {
27
+ this.plugins = plugins;
28
+ this.transports = transports;
29
+ this.protocolDetector = protocolDetector;
30
+ this.logger = logger;
31
+ this.extractors = new Map();
32
+ for (const transport of this.transports) {
33
+ const e = transport.getHeaderExtractor();
34
+ if (e) {
35
+ this.extractors.set(transport.getProtocol(), e);
36
+ }
37
+ }
38
+ for (const plugin of this.plugins) {
39
+ for (const x of plugin.tracingHeadersExtractors?.() ?? []) {
40
+ this.extractors.set(x.protocol, x.extractor);
41
+ }
42
+ }
43
+ }
44
+ extract(ctx) {
45
+ const protocol = this.protocolDetector.getProtocol(ctx) ?? ctx.getType();
46
+ const extracted = this.extractors.get(protocol)?.extract(ctx);
47
+ if (!extracted) {
48
+ this.logger.warn('Unable to extract Tracing headers, return empty');
49
+ }
50
+ this.logger.trace('Extracted TraceHeaders', {
51
+ extracted,
52
+ });
53
+ return extracted ?? new types_1.TracingHeaders({});
54
+ }
55
+ extractors;
56
+ };
57
+ exports.TracingHeadersExtractor = TracingHeadersExtractor;
58
+ exports.TracingHeadersExtractor = TracingHeadersExtractor = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __param(0, (0, common_1.Inject)(constants_1.APP_PLUGINS)),
61
+ __param(1, (0, common_1.Inject)(constants_1.APP_TRANSPORTS)),
62
+ __param(3, (0, logging_1.InjectLogger)(TracingHeadersExtractor)),
63
+ __metadata("design:paramtypes", [Set,
64
+ Set,
65
+ protocol_detector_1.ProtocolDetector, Object])
66
+ ], TracingHeadersExtractor);
67
+ //# sourceMappingURL=tracing.headers-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.headers-extractor.js","sourceRoot":"","sources":["../../src/types/tracing.headers-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2E;AAG3E,wCAA0C;AAC1C,4CAAkD;AAClD,sEAAkE;AAElE,2CAA0D;AAKnD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGxB;IAEA;IACA;IACuC;IANjD,YAEU,OAA+B,EAE/B,UAA2B,EAC3B,gBAAkC,EACK,MAAe;QAJtD,YAAO,GAAP,OAAO,CAAwB;QAE/B,eAAU,GAAV,UAAU,CAAiB;QAC3B,qBAAgB,GAAhB,gBAAgB,CAAkB;QACK,WAAM,GAAN,MAAM,CAAS;QAE9D,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAA2C,CAAC;QACrE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAqB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAEzE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAE9D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YAC1C,SAAS;SACV,CAAC,CAAC;QACH,OAAO,SAAS,IAAI,IAAI,sBAAc,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,UAAU,CAA+C;CAClE,CAAA;AAtCY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,uBAAW,CAAC,CAAA;IAEnB,WAAA,IAAA,eAAM,EAAC,0BAAc,CAAC,CAAA;IAGtB,WAAA,IAAA,sBAAY,EAAC,uBAAuB,CAAC,CAAA;qCAJrB,GAAG;QAEA,GAAG;QACG,oCAAgB;GANjC,uBAAuB,CAsCnC"}
@@ -1,10 +1,11 @@
1
- import type { ArgumentsHost } from '@nestjs/common';
1
+ import type { ArgumentsHost, ExecutionContext } from '@nestjs/common';
2
2
  import type { Controller, INestApplication } from '@nestjs/common/interfaces';
3
3
  import type { AbstractHttpAdapter } from '@nestjs/core';
4
4
  import type { MicroserviceOptions } from '@nestjs/microservices';
5
5
  import type { Constructor } from '@rsdk/common';
6
6
  import type { ConfigContext } from '../config';
7
7
  import type { IErrorsFormatter, IErrorsSender, IErrorsTransformer } from '../exceptions.handling';
8
+ import type { TracingHeaders } from '../tracing/types';
8
9
  import type { NestModuleDefinitions } from './options';
9
10
  /**
10
11
  * Base functionality of HTTP or microservice transport
@@ -41,6 +42,7 @@ export interface ITransport {
41
42
  * Modules for register metrics, healthchecks, configs and supporting tools, such as clients
42
43
  */
43
44
  modules?(): NestModuleDefinitions;
45
+ getHeaderExtractor(): ProtocolTracingHeadersExtractor;
44
46
  }
45
47
  /**
46
48
  * Primary transport is transport that implements maintenance
@@ -101,3 +103,6 @@ export interface IHttpTransport extends IPrimaryTransport {
101
103
  export declare const isPrimaryTransport: (t: ITransport) => t is IPrimaryTransport;
102
104
  export declare const isHttpTransport: (t: ITransport) => t is IHttpTransport;
103
105
  export declare const isMicroserviceTransport: (t: ITransport) => t is IMicroserviceTransport;
106
+ export interface ProtocolTracingHeadersExtractor {
107
+ extract(ctx: ExecutionContext): TracingHeaders;
108
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/types/transports.ts"],"names":[],"mappings":";;;AA6HO,MAAM,kBAAkB,GAAG,CAAC,CAAa,EAA0B,EAAE,CAC1E,OAAQ,CAAuB,CAAC,mBAAmB,KAAK,UAAU;IAClE,OAAQ,CAAuB,CAAC,oBAAoB,KAAK,UAAU,CAAC;AAFzD,QAAA,kBAAkB,sBAEuC;AAE/D,MAAM,eAAe,GAAG,CAAC,CAAa,EAAuB,EAAE,CACpE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AADhB,QAAA,eAAe,mBACC;AAEtB,MAAM,uBAAuB,GAAG,CACrC,CAAa,EACgB,EAAE,CAC/B,OAAQ,CAA4B,CAAC,yBAAyB,KAAK,UAAU,CAAC;AAHnE,QAAA,uBAAuB,2BAG4C"}
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/types/transports.ts"],"names":[],"mappings":";;;AAgIO,MAAM,kBAAkB,GAAG,CAAC,CAAa,EAA0B,EAAE,CAC1E,OAAQ,CAAuB,CAAC,mBAAmB,KAAK,UAAU;IAClE,OAAQ,CAAuB,CAAC,oBAAoB,KAAK,UAAU,CAAC;AAFzD,QAAA,kBAAkB,sBAEuC;AAE/D,MAAM,eAAe,GAAG,CAAC,CAAa,EAAuB,EAAE,CACpE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AADhB,QAAA,eAAe,mBACC;AAEtB,MAAM,uBAAuB,GAAG,CACrC,CAAa,EACgB,EAAE,CAC/B,OAAQ,CAA4B,CAAC,yBAAyB,KAAK,UAAU,CAAC;AAHnE,QAAA,uBAAuB,2BAG4C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/core",
3
- "version": "4.2.4",
3
+ "version": "4.3.0-next.0",
4
4
  "description": "Nestjs based microservice chassis",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -32,19 +32,20 @@
32
32
  "@nestjs/common": "^10.0.0",
33
33
  "@nestjs/core": "^10.0.0",
34
34
  "@nestjs/microservices": "^10.0.0",
35
- "@rsdk/actx": "^4.2.4",
36
- "@rsdk/autodoc.protocol": "^4.2.4",
37
- "@rsdk/common": "^4.2.4",
38
- "@rsdk/common.nestjs": "^4.2.4",
39
- "@rsdk/common.node": "^4.2.4",
40
- "@rsdk/decorators": "^4.2.4",
41
- "@rsdk/logging": "^4.2.4",
42
- "@rsdk/metadata": "^4.2.4",
43
- "@rsdk/nest-tools": "^4.2.4",
35
+ "@rsdk/actx": "^4.3.0-next.0",
36
+ "@rsdk/autodoc.protocol": "^4.3.0-next.0",
37
+ "@rsdk/common": "^4.3.0-next.0",
38
+ "@rsdk/common.nestjs": "^4.3.0-next.0",
39
+ "@rsdk/common.node": "^4.3.0-next.0",
40
+ "@rsdk/decorators": "^4.3.0-next.0",
41
+ "@rsdk/logging": "^4.3.0-next.0",
42
+ "@rsdk/metadata": "^4.3.0-next.0",
43
+ "@rsdk/nest-tools": "^4.3.0-next.0",
44
+ "@rsdk/tracing": "^4.3.0-next.0",
44
45
  "axios": "^1.1.3",
45
46
  "pino": "^8.16.1",
46
- "reflect-metadata": "^0.1.13",
47
+ "reflect-metadata": "^0.1.12 || ^0.2.0",
47
48
  "rxjs": "^7.0.0"
48
49
  },
49
- "gitHead": "cf72bfa9b31f49827d069de835cde28478f7a395"
50
+ "gitHead": "68619cc6fc60db01568eede7df182d9882e857dd"
50
51
  }
package/src/index.ts CHANGED
@@ -11,8 +11,6 @@ export {
11
11
  TracingModule,
12
12
  saveAsyncHooksContext,
13
13
  createSpan,
14
- ActiveSpanModule,
15
- ActiveSpanStorage,
16
14
  Span,
17
15
  } from './tracing';
18
16
 
@@ -72,4 +70,3 @@ export {
72
70
  X_B3_SPAN_ID,
73
71
  X_B3_TRACE_ID,
74
72
  } from '@opentelemetry/propagator-b3';
75
- export { RequestIdProvider } from './tracing/services/request-id.provider';
@@ -12,6 +12,14 @@ export class NoopHttpAdapter<T> extends AbstractHttpAdapter<T> {
12
12
  throw new NoHttpException();
13
13
  }
14
14
 
15
+ override getHeader(): any {
16
+ throw new NoHttpException();
17
+ }
18
+
19
+ override appendHeader(): any {
20
+ throw new NoHttpException();
21
+ }
22
+
15
23
  override post(): void {
16
24
  throw new NoHttpException();
17
25
  }