@rsdk/core 4.2.5-next.0 → 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.
- package/CHANGELOG.md +6 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/noop.http-adapter.d.ts +2 -0
- package/dist/noop.http-adapter.js +6 -0
- package/dist/noop.http-adapter.js.map +1 -1
- package/dist/platform.module.d.ts +3 -3
- package/dist/platform.module.js +23 -23
- package/dist/platform.module.js.map +1 -1
- package/dist/tracing/decorators/span.decorator.js +5 -6
- package/dist/tracing/decorators/span.decorator.js.map +1 -1
- package/dist/tracing/index.d.ts +0 -2
- package/dist/tracing/index.js +0 -2
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/services/index.d.ts +0 -1
- package/dist/tracing/services/index.js +0 -1
- package/dist/tracing/services/index.js.map +1 -1
- package/dist/tracing/services/trace.injector.d.ts +4 -4
- package/dist/tracing/services/trace.injector.js +38 -68
- package/dist/tracing/services/trace.injector.js.map +1 -1
- package/dist/tracing/tracing.interceptor.d.ts +3 -5
- package/dist/tracing/tracing.interceptor.js +15 -91
- package/dist/tracing/tracing.interceptor.js.map +1 -1
- package/dist/tracing/tracing.module.d.ts +4 -16
- package/dist/tracing/tracing.module.js +18 -82
- package/dist/tracing/tracing.module.js.map +1 -1
- package/dist/tracing/types.d.ts +11 -0
- package/dist/tracing/types.js +23 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/tracing/utils/save-async-hooks-context.js +2 -3
- package/dist/tracing/utils/save-async-hooks-context.js.map +1 -1
- package/dist/transport/protocol.detector.d.ts +1 -0
- package/dist/transport/protocol.detector.js +5 -2
- package/dist/transport/protocol.detector.js.map +1 -1
- package/dist/transport/transport.module.js +1 -1
- package/dist/transport/transport.module.js.map +1 -1
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/constants.js +6 -0
- package/dist/types/constants.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +5 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugins.d.ts +5 -0
- package/dist/types/plugins.js.map +1 -1
- package/dist/types/tracing.headers-extractor.d.ts +15 -0
- package/dist/types/tracing.headers-extractor.js +67 -0
- package/dist/types/tracing.headers-extractor.js.map +1 -0
- package/dist/types/transports.d.ts +6 -1
- package/dist/types/transports.js.map +1 -1
- package/package.json +13 -12
- package/src/index.ts +0 -3
- package/src/noop.http-adapter.ts +8 -0
- package/src/platform.module.ts +20 -25
- package/src/tracing/decorators/span.decorator.ts +6 -6
- package/src/tracing/index.ts +0 -2
- package/src/tracing/services/index.ts +0 -1
- package/src/tracing/services/trace.injector.ts +49 -92
- package/src/tracing/tracing.interceptor.ts +7 -127
- package/src/tracing/tracing.module.ts +19 -104
- package/src/tracing/types.ts +28 -0
- package/src/tracing/utils/save-async-hooks-context.ts +2 -3
- package/src/transport/protocol.detector.ts +6 -2
- package/src/transport/transport.module.ts +1 -1
- package/src/types/constants.ts +2 -0
- package/src/types/index.ts +2 -0
- package/src/types/plugins.ts +6 -0
- package/src/types/tracing.headers-extractor.ts +51 -0
- package/src/types/transports.ts +8 -1
- package/tsconfig.build.json +1 -1
- package/dist/tracing/active-span.module.d.ts +0 -5
- package/dist/tracing/active-span.module.js +0 -25
- package/dist/tracing/active-span.module.js.map +0 -1
- package/dist/tracing/auto-instrumentations.config.d.ts +0 -1
- package/dist/tracing/auto-instrumentations.config.js +0 -42
- package/dist/tracing/auto-instrumentations.config.js.map +0 -1
- package/dist/tracing/grpc.headers.d.ts +0 -11
- package/dist/tracing/grpc.headers.js +0 -24
- package/dist/tracing/grpc.headers.js.map +0 -1
- package/dist/tracing/http.headers.d.ts +0 -11
- package/dist/tracing/http.headers.js +0 -22
- package/dist/tracing/http.headers.js.map +0 -1
- package/dist/tracing/open-telemetry.interceptor.d.ts +0 -5
- package/dist/tracing/open-telemetry.interceptor.js +0 -83
- package/dist/tracing/open-telemetry.interceptor.js.map +0 -1
- package/dist/tracing/services/active-span.storage.d.ts +0 -17
- package/dist/tracing/services/active-span.storage.js +0 -46
- package/dist/tracing/services/active-span.storage.js.map +0 -1
- package/dist/tracing/services/instrumentation.service.d.ts +0 -3
- package/dist/tracing/services/instrumentation.service.js +0 -25
- package/dist/tracing/services/instrumentation.service.js.map +0 -1
- package/dist/tracing/services/request-id.provider.d.ts +0 -11
- package/dist/tracing/services/request-id.provider.js +0 -13
- package/dist/tracing/services/request-id.provider.js.map +0 -1
- package/src/tracing/active-span.module.ts +0 -13
- package/src/tracing/auto-instrumentations.config.ts +0 -44
- package/src/tracing/grpc.headers.ts +0 -29
- package/src/tracing/http.headers.ts +0 -32
- package/src/tracing/open-telemetry.interceptor.ts +0 -114
- package/src/tracing/services/active-span.storage.ts +0 -32
- package/src/tracing/services/instrumentation.service.ts +0 -20
- package/src/tracing/services/request-id.provider.ts +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
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
|
+
## [4.3.0-next.0](https://github.com/R-Vision/rsdk/compare/v4.2.5-next.0...v4.3.0-next.0) (2024-03-19)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* reworked cli system ([745ebf5](https://github.com/R-Vision/rsdk/commit/745ebf53635de135a4a9083f47ce833efe2d4411))
|
|
11
|
+
|
|
6
12
|
## [4.2.5-next.0](https://github.com/R-Vision/rsdk/compare/v4.2.4...v4.2.5-next.0) (2024-03-04)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @rsdk/core
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { APP_SCOPE } from './app-metadata/app-metadata.const';
|
|
|
3
3
|
export { Manifest } from './manifest/manifest';
|
|
4
4
|
export { ProtocolDetector } from './transport/protocol.detector';
|
|
5
5
|
export { X_REQUEST_ID } from './tracing/constants';
|
|
6
|
-
export { TracingModule, saveAsyncHooksContext, createSpan,
|
|
6
|
+
export { TracingModule, saveAsyncHooksContext, createSpan, Span, } from './tracing';
|
|
7
7
|
export { FileSystemCheckOptions, FileSystemIndicator, PingCheckOptions, PingIndicator, } from './health/indicators.abstract';
|
|
8
8
|
export { HealthChecksService } from './health/health.service';
|
|
9
9
|
export { CheckSummary } from './health/types';
|
|
@@ -24,4 +24,3 @@ export * from './app-metadata/decorators';
|
|
|
24
24
|
export * from './app-metadata/app-metadata.const';
|
|
25
25
|
export { getTransportId } from './transport/get-transport-id';
|
|
26
26
|
export { X_B3_PARENT_SPAN_ID, X_B3_SPAN_ID, X_B3_TRACE_ID, } from '@opentelemetry/propagator-b3';
|
|
27
|
-
export { RequestIdProvider } from './tracing/services/request-id.provider';
|
package/dist/index.js
CHANGED
|
@@ -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.
|
|
17
|
+
exports.X_B3_TRACE_ID = exports.X_B3_SPAN_ID = exports.X_B3_PARENT_SPAN_ID = exports.getTransportId = exports.PlatformApp = exports.register = exports.Summary = exports.MetricsModule = exports.Metric = exports.Histogram = exports.Gauge = exports.Counter = exports.InjectLogger = exports.PlatformContext = exports.ConfigTag = exports.CheckResult = exports.Indicator = exports.getLoggerToken = exports.HealthChecksService = exports.PingIndicator = exports.FileSystemIndicator = exports.Span = exports.createSpan = exports.saveAsyncHooksContext = exports.TracingModule = exports.X_REQUEST_ID = exports.ProtocolDetector = exports.Manifest = exports.APP_SCOPE = void 0;
|
|
18
18
|
require("./unhandled-rejection.handler");
|
|
19
19
|
var app_metadata_const_1 = require("./app-metadata/app-metadata.const");
|
|
20
20
|
Object.defineProperty(exports, "APP_SCOPE", { enumerable: true, get: function () { return app_metadata_const_1.APP_SCOPE; } });
|
|
@@ -28,8 +28,6 @@ var tracing_1 = require("./tracing");
|
|
|
28
28
|
Object.defineProperty(exports, "TracingModule", { enumerable: true, get: function () { return tracing_1.TracingModule; } });
|
|
29
29
|
Object.defineProperty(exports, "saveAsyncHooksContext", { enumerable: true, get: function () { return tracing_1.saveAsyncHooksContext; } });
|
|
30
30
|
Object.defineProperty(exports, "createSpan", { enumerable: true, get: function () { return tracing_1.createSpan; } });
|
|
31
|
-
Object.defineProperty(exports, "ActiveSpanModule", { enumerable: true, get: function () { return tracing_1.ActiveSpanModule; } });
|
|
32
|
-
Object.defineProperty(exports, "ActiveSpanStorage", { enumerable: true, get: function () { return tracing_1.ActiveSpanStorage; } });
|
|
33
31
|
Object.defineProperty(exports, "Span", { enumerable: true, get: function () { return tracing_1.Span; } });
|
|
34
32
|
var indicators_abstract_1 = require("./health/indicators.abstract");
|
|
35
33
|
Object.defineProperty(exports, "FileSystemIndicator", { enumerable: true, get: function () { return indicators_abstract_1.FileSystemIndicator; } });
|
|
@@ -70,6 +68,4 @@ var propagator_b3_1 = require("@opentelemetry/propagator-b3");
|
|
|
70
68
|
Object.defineProperty(exports, "X_B3_PARENT_SPAN_ID", { enumerable: true, get: function () { return propagator_b3_1.X_B3_PARENT_SPAN_ID; } });
|
|
71
69
|
Object.defineProperty(exports, "X_B3_SPAN_ID", { enumerable: true, get: function () { return propagator_b3_1.X_B3_SPAN_ID; } });
|
|
72
70
|
Object.defineProperty(exports, "X_B3_TRACE_ID", { enumerable: true, get: function () { return propagator_b3_1.X_B3_TRACE_ID; } });
|
|
73
|
-
var request_id_provider_1 = require("./tracing/services/request-id.provider");
|
|
74
|
-
Object.defineProperty(exports, "RequestIdProvider", { enumerable: true, get: function () { return request_id_provider_1.RequestIdProvider; } });
|
|
75
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAAuC;AAEvC,wEAA8D;AAArD,+GAAA,SAAS,OAAA;AAElB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,mEAAiE;AAAxD,qHAAA,gBAAgB,OAAA;AAEzB,iDAAmD;AAA1C,yGAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAAuC;AAEvC,wEAA8D;AAArD,+GAAA,SAAS,OAAA;AAElB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAEjB,mEAAiE;AAAxD,qHAAA,gBAAgB,OAAA;AAEzB,iDAAmD;AAA1C,yGAAA,YAAY,OAAA;AACrB,qCAKmB;AAJjB,wGAAA,aAAa,OAAA;AACb,gHAAA,qBAAqB,OAAA;AACrB,qGAAA,UAAU,OAAA;AACV,+FAAA,IAAI,OAAA;AAGN,oEAKsC;AAHpC,0HAAA,mBAAmB,OAAA;AAEnB,oHAAA,aAAa,OAAA;AAGf,0DAA8D;AAArD,qHAAA,mBAAmB,OAAA;AAI5B,6CAAmD;AAA1C,yGAAA,cAAc,OAAA;AAEvB,6EAAkE;AAAzD,gHAAA,SAAS,OAAA;AAIlB,4CAA+C;AAAtC,sGAAA,WAAW,OAAA;AAEpB,sDAAkD;AAAzC,yGAAA,SAAS,OAAA;AAElB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAExB,2CAAyB;AAEzB,+CAA6B;AAE7B,wDAAsC;AAEtC,qCAAyC;AAAhC,uGAAA,YAAY,OAAA;AAErB,qCASmB;AAPjB,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,oGAAA,SAAS,OAAA;AACT,iGAAA,MAAM,OAAA;AACN,wGAAA,aAAa,OAAA;AACb,kGAAA,OAAO,OAAA;AACP,mGAAA,QAAQ,OAAA;AAGV,mDAAiD;AAAxC,2GAAA,WAAW,OAAA;AAEpB,0CAAwB;AAExB,4DAA0C;AAE1C,oEAAkD;AAClD,iEAA8D;AAArD,kHAAA,cAAc,OAAA;AAEvB,8DAIsC;AAHpC,oHAAA,mBAAmB,OAAA;AACnB,6GAAA,YAAY,OAAA;AACZ,8GAAA,aAAa,OAAA"}
|
|
@@ -11,6 +11,12 @@ class NoopHttpAdapter extends core_1.AbstractHttpAdapter {
|
|
|
11
11
|
get() {
|
|
12
12
|
throw new exceptions_1.NoHttpException();
|
|
13
13
|
}
|
|
14
|
+
getHeader() {
|
|
15
|
+
throw new exceptions_1.NoHttpException();
|
|
16
|
+
}
|
|
17
|
+
appendHeader() {
|
|
18
|
+
throw new exceptions_1.NoHttpException();
|
|
19
|
+
}
|
|
14
20
|
post() {
|
|
15
21
|
throw new exceptions_1.NoHttpException();
|
|
16
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop.http-adapter.js","sourceRoot":"","sources":["../src/noop.http-adapter.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,uCAAmD;AAEnD,6CAA+C;AAE/C,kBAAkB;AAClB,gEAAgE;AAChE,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAa,eAAmB,SAAQ,0BAAsB;IACnD,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,IAAI;QACX,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,KAAK;QACZ,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,IAAI;QACX,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,EAAE,CAAC;IACT,CAAC;IAED,cAAc;QACZ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,eAAe;QACb,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,kBAAkB;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,gBAAgB;QACd,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,KAAK;QACH,IAAI,EAAE,CAAC;IACT,CAAC;IAED,GAAG;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,QAAQ;QACN,IAAI,EAAE,CAAC;IACT,CAAC;IAED,eAAe;QACb,IAAI,EAAE,CAAC;IACT,CAAC;IAED,kBAAkB;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,SAAS;QACP,IAAI,EAAE,CAAC;IACT,CAAC;IAED,wBAAwB;QACtB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,UAAU;QACR,IAAI,EAAE,CAAC;IACT,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB;QAChB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACpB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"noop.http-adapter.js","sourceRoot":"","sources":["../src/noop.http-adapter.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,uCAAmD;AAEnD,6CAA+C;AAE/C,kBAAkB;AAClB,gEAAgE;AAChE,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAa,eAAmB,SAAQ,0BAAsB;IACnD,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,SAAS;QAChB,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,YAAY;QACnB,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,IAAI;QACX,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,KAAK;QACZ,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,IAAI;QACX,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAEQ,GAAG;QACV,MAAM,IAAI,4BAAe,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,EAAE,CAAC;IACT,CAAC;IAED,cAAc;QACZ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,eAAe;QACb,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,kBAAkB;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,gBAAgB;QACd,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,KAAK;QACH,IAAI,EAAE,CAAC;IACT,CAAC;IAED,GAAG;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,CAAC;IACT,CAAC;IAED,QAAQ;QACN,IAAI,EAAE,CAAC;IACT,CAAC;IAED,eAAe;QACb,IAAI,EAAE,CAAC;IACT,CAAC;IAED,kBAAkB;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QACX,IAAI,EAAE,CAAC;IACT,CAAC;IAED,SAAS;QACP,IAAI,EAAE,CAAC;IACT,CAAC;IAED,wBAAwB;QACtB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,UAAU;QACR,IAAI,EAAE,CAAC;IACT,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB;QAChB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACpB,CAAC;CACF;AA5HD,0CA4HC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DynamicModule, NestModule } from '@nestjs/common';
|
|
2
2
|
import type { MiddlewareConsumer } from '@nestjs/common/interfaces';
|
|
3
|
-
import { PlatformExtendedOptions } from './types';
|
|
3
|
+
import type { PlatformAppPlugin, PlatformExtendedOptions } from './types';
|
|
4
4
|
export declare class PlatformModule implements NestModule {
|
|
5
|
-
private
|
|
6
|
-
constructor(options: PlatformExtendedOptions);
|
|
5
|
+
private plugins;
|
|
7
6
|
static forRoot(options: PlatformExtendedOptions): DynamicModule;
|
|
7
|
+
constructor(plugins: Set<PlatformAppPlugin>);
|
|
8
8
|
configure(consumer: MiddlewareConsumer): void;
|
|
9
9
|
}
|
package/dist/platform.module.js
CHANGED
|
@@ -20,21 +20,18 @@ const plugin_module_1 = require("./plugin/plugin.module");
|
|
|
20
20
|
const transport_module_1 = require("./transport/transport.module");
|
|
21
21
|
const app_metadata_1 = require("./app-metadata");
|
|
22
22
|
const config_1 = require("./config");
|
|
23
|
-
const exceptions_1 = require("./exceptions");
|
|
24
23
|
const logging_1 = require("./logging");
|
|
25
24
|
const tracing_1 = require("./tracing");
|
|
25
|
+
const types_1 = require("./types");
|
|
26
26
|
let PlatformModule = PlatformModule_1 = class PlatformModule {
|
|
27
|
-
|
|
28
|
-
constructor(options) {
|
|
29
|
-
this.options = options;
|
|
30
|
-
}
|
|
27
|
+
plugins;
|
|
31
28
|
static forRoot(options) {
|
|
32
29
|
const imports = [
|
|
33
30
|
/**
|
|
34
31
|
* Последовательность принципиально важна так как в этом модуле происходит инициализация глобального асинхронного контекста (AsyncLocalStorage)
|
|
35
32
|
*/
|
|
36
33
|
actx_1.AsyncContextModule,
|
|
37
|
-
tracing_1.TracingModule.forRoot(
|
|
34
|
+
tracing_1.TracingModule.forRoot(),
|
|
38
35
|
// Plugins
|
|
39
36
|
plugin_module_1.PlatformPluginModule.forOptions(options),
|
|
40
37
|
// Infrastructure
|
|
@@ -43,34 +40,37 @@ let PlatformModule = PlatformModule_1 = class PlatformModule {
|
|
|
43
40
|
logging_1.LoggerInitializingModule,
|
|
44
41
|
...(options.modules ?? []),
|
|
45
42
|
];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
imports.push(transport_module_1.PlatformTransportModule.forOptions(options));
|
|
44
|
+
const exportingProviders = [
|
|
45
|
+
{
|
|
46
|
+
provide: types_1.APP_PLUGINS,
|
|
47
|
+
useValue: new Set(options.plugins),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
provide: types_1.APP_TRANSPORTS,
|
|
51
|
+
useValue: new Set(options.transports),
|
|
52
|
+
},
|
|
53
|
+
];
|
|
50
54
|
return {
|
|
51
55
|
module: PlatformModule_1,
|
|
52
56
|
imports,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
useValue: options,
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
exports: ['PlatformExtendedOptions'],
|
|
57
|
+
global: true,
|
|
58
|
+
providers: exportingProviders,
|
|
59
|
+
exports: exportingProviders,
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
|
+
constructor(plugins) {
|
|
63
|
+
this.plugins = plugins;
|
|
64
|
+
}
|
|
62
65
|
configure(consumer) {
|
|
63
|
-
|
|
64
|
-
throw new exceptions_1.SequenceException('Should call PlatformModule.setup() before configuring middleware!');
|
|
65
|
-
}
|
|
66
|
-
for (const plugin of this.options.plugins || []) {
|
|
66
|
+
for (const plugin of this.plugins) {
|
|
67
67
|
plugin?.configureMiddleware?.(consumer);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
71
|
exports.PlatformModule = PlatformModule;
|
|
72
72
|
exports.PlatformModule = PlatformModule = PlatformModule_1 = __decorate([
|
|
73
|
-
__param(0, (0, common_1.Inject)(
|
|
74
|
-
__metadata("design:paramtypes", [
|
|
73
|
+
__param(0, (0, common_1.Inject)(types_1.APP_PLUGINS)),
|
|
74
|
+
__metadata("design:paramtypes", [Set])
|
|
75
75
|
], PlatformModule);
|
|
76
76
|
//# sourceMappingURL=platform.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.module.js","sourceRoot":"","sources":["../src/platform.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2CAAwC;AAExC,qCAAgD;AAGhD,0DAA8D;AAC9D,mEAAuE;AACvE,iDAAmD;AACnD,qCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"platform.module.js","sourceRoot":"","sources":["../src/platform.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2CAAwC;AAExC,qCAAgD;AAGhD,0DAA8D;AAC9D,mEAAuE;AACvE,iDAAmD;AACnD,qCAAgD;AAChD,uCAAqD;AACrD,uCAA0C;AAE1C,mCAAsD;AAEtD,IAAa,cAAc,sBAA3B,MAAa,cAAc;IAwCgB;IAvCzC,MAAM,CAAC,OAAO,CAAC,OAAgC;QAC7C,MAAM,OAAO,GAAoC;YAC/C;;eAEG;YACH,yBAAkB;YAClB,uBAAa,CAAC,OAAO,EAAE;YAEvB,UAAU;YACV,oCAAoB,CAAC,UAAU,CAAC,OAAO,CAAC;YAExC,iBAAiB;YACjB,gCAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;YAClC,6BAAoB,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,kCAAwB;YACxB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;SAC3B,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,0CAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,MAAM,kBAAkB,GAAG;YACzB;gBACE,OAAO,EAAE,mBAAW;gBACpB,QAAQ,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;aACnC;YACD;gBACE,OAAO,EAAE,sBAAc;gBACvB,QAAQ,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;aACtC;SACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,OAAO;YACP,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B,CAAC;IACJ,CAAC;IAED,YAAyC,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAE5E,SAAS,CAAC,QAA4B;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,EAAE,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,wCAAc;yBAAd,cAAc;IAwCZ,WAAA,IAAA,eAAM,EAAC,mBAAW,CAAC,CAAA;qCAAkB,GAAG;GAxC1C,cAAc,CA+C1B"}
|
|
@@ -18,13 +18,12 @@ function (target, methodName, descriptor) {
|
|
|
18
18
|
}
|
|
19
19
|
if (methodName && descriptor) {
|
|
20
20
|
services_1.TraceInjector.wrap(target, descriptor.value, descriptor);
|
|
21
|
+
return;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
services_1.TraceInjector.wrap(prototype, prototype[name]);
|
|
27
|
-
}
|
|
23
|
+
const prototype = target.prototype ?? target;
|
|
24
|
+
for (const name of metadataScanner.getAllMethodNames(prototype)) {
|
|
25
|
+
if (name) {
|
|
26
|
+
services_1.TraceInjector.wrap(prototype, prototype[name]);
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span.decorator.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAE/C,iDAAgE;AAChE,0CAA4C;AAE5C,MAAM,eAAe,GAAG,IAAI,sBAAe,EAAE,CAAC;AAE9C;;;;GAIG;AACI,MAAM,IAAI,GAAG,GAAqC,EAAE;AACzD,+DAA+D;AAC/D,UACE,MAAc,EACd,UAA4B,EAC5B,UAAyC;IAEzC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,yCAA4B,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAC7B,wBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"span.decorator.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAE/C,iDAAgE;AAChE,0CAA4C;AAE5C,MAAM,eAAe,GAAG,IAAI,sBAAe,EAAE,CAAC;AAE9C;;;;GAIG;AACI,MAAM,IAAI,GAAG,GAAqC,EAAE;AACzD,+DAA+D;AAC/D,UACE,MAAc,EACd,UAA4B,EAC5B,UAAyC;IAEzC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,yCAA4B,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAC7B,wBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAI,MAAc,CAAC,SAAS,IAAI,MAAM,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,IAAI,IAAI,EAAE,CAAC;YACT,wBAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AArBS,QAAA,IAAI,QAqBb"}
|
package/dist/tracing/index.d.ts
CHANGED
package/dist/tracing/index.js
CHANGED
|
@@ -14,9 +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
|
-
__exportStar(require("./active-span.module"), exports);
|
|
18
17
|
__exportStar(require("./request-metadata.module"), exports);
|
|
19
|
-
__exportStar(require("./services/active-span.storage"), exports);
|
|
20
18
|
__exportStar(require("./tracing.module"), exports);
|
|
21
19
|
__exportStar(require("./utils/create-span"), exports);
|
|
22
20
|
__exportStar(require("./utils/save-async-hooks-context"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,mDAAiC;AACjC,sDAAoC;AACpC,mEAAiD;AACjD,+CAA6B"}
|
|
@@ -14,6 +14,5 @@ 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
|
-
__exportStar(require("./instrumentation.service"), exports);
|
|
18
17
|
__exportStar(require("./trace.injector"), exports);
|
|
19
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { AttributeValue, Span } from '@opentelemetry/api';
|
|
2
2
|
export declare class TraceInjector {
|
|
3
|
-
static wrap(cls: any, original: Function, descriptor?: TypedPropertyDescriptor<any
|
|
3
|
+
static wrap(cls: any, original: Function, descriptor?: TypedPropertyDescriptor<any>): void;
|
|
4
4
|
static toAttribute(data: unknown): AttributeValue;
|
|
5
|
-
|
|
5
|
+
static enrich(span: Span, data: unknown): unknown;
|
|
6
6
|
static createSpanName(className: string, methodName: string): string;
|
|
7
|
+
static recordAndRethrow(error: unknown, span: Span): void;
|
|
7
8
|
private static isWrapped;
|
|
8
9
|
private static nowSpan;
|
|
9
10
|
private static setWrapped;
|
|
10
|
-
static
|
|
11
|
-
static enrich(span: Span, data: unknown): unknown;
|
|
11
|
+
private static createWrapper;
|
|
12
12
|
}
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TraceInjector = void 0;
|
|
7
7
|
const api_1 = require("@opentelemetry/api");
|
|
8
|
-
const sdk_node_1 = require("@opentelemetry/sdk-node");
|
|
9
8
|
const common_1 = require("@rsdk/common");
|
|
10
9
|
const decorators_1 = require("@rsdk/decorators");
|
|
11
10
|
const logging_1 = require("@rsdk/logging");
|
|
@@ -17,7 +16,7 @@ class TraceInjector {
|
|
|
17
16
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
18
17
|
static wrap(cls,
|
|
19
18
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
20
|
-
original, descriptor
|
|
19
|
+
original, descriptor) {
|
|
21
20
|
/**
|
|
22
21
|
* Означает, что данный метод уже обёрнут
|
|
23
22
|
*/
|
|
@@ -26,7 +25,7 @@ class TraceInjector {
|
|
|
26
25
|
}
|
|
27
26
|
logger.trace(`Wrapping method: ${cls.constructor.name}.${original.name}()`);
|
|
28
27
|
const spanName = TraceInjector.createSpanName(cls.constructor.name, original.name);
|
|
29
|
-
const wrapped = TraceInjector.createWrapper(original, spanName
|
|
28
|
+
const wrapped = TraceInjector.createWrapper(original, spanName);
|
|
30
29
|
(0, decorators_1.redecorate)(original, wrapped);
|
|
31
30
|
if (descriptor) {
|
|
32
31
|
descriptor.value = wrapped;
|
|
@@ -53,47 +52,51 @@ class TraceInjector {
|
|
|
53
52
|
}
|
|
54
53
|
return 'data is undefined';
|
|
55
54
|
}
|
|
56
|
-
static
|
|
55
|
+
static enrich(span, data) {
|
|
56
|
+
span.setAttribute('result', TraceInjector.toAttribute(data));
|
|
57
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
58
|
+
return data;
|
|
59
|
+
}
|
|
60
|
+
static createSpanName(className, methodName) {
|
|
61
|
+
/**
|
|
62
|
+
* Всего лишь правила формирования имени спана (не более того), для новой логики нужен был именно такой код
|
|
63
|
+
*/
|
|
64
|
+
return `${className} -> ${methodName}`;
|
|
65
|
+
}
|
|
66
|
+
static recordAndRethrow(error, span) {
|
|
67
|
+
span.recordException(error);
|
|
68
|
+
span.setStatus({
|
|
69
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
70
|
+
message: error.message,
|
|
71
|
+
});
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
static isWrapped(prototype) {
|
|
75
|
+
node_assert_1.default.ok(prototype);
|
|
76
|
+
return Reflect.hasMetadata(constants_1.Constants.TRACE_METADATA_ACTIVE, prototype);
|
|
77
|
+
}
|
|
78
|
+
static nowSpan(prototype) {
|
|
79
|
+
node_assert_1.default.ok(prototype);
|
|
80
|
+
return Reflect.hasMetadata(constants_1.Constants.NO_SPAN_METADATA, prototype);
|
|
81
|
+
}
|
|
82
|
+
static setWrapped(prototype) {
|
|
83
|
+
node_assert_1.default.ok(prototype);
|
|
84
|
+
// Value doesn't matter
|
|
85
|
+
const NOOP = 1;
|
|
86
|
+
Reflect.defineMetadata(constants_1.Constants.TRACE_METADATA_ACTIVE, NOOP, prototype);
|
|
87
|
+
}
|
|
88
|
+
static createWrapper(original, spanName) {
|
|
57
89
|
return {
|
|
58
90
|
[original.name](...args) {
|
|
59
91
|
const tracer = api_1.trace.getTracer('@rsdk/open-telemetry', '1.0.0');
|
|
60
|
-
|
|
61
|
-
* Переменный для хранения значений которые получаем для опен телеметрии
|
|
62
|
-
*/
|
|
63
|
-
let traceId;
|
|
64
|
-
let spanId;
|
|
65
|
-
/**
|
|
66
|
-
* Создаем новый спан
|
|
67
|
-
*/
|
|
68
|
-
const span = tracer.startSpan(spanName, {});
|
|
69
|
-
/**
|
|
70
|
-
* После создания контекста ранее при входе в приложение, у нас новый спан ид
|
|
71
|
-
* мы перетираем значением которе получили через заголовок
|
|
72
|
-
* в рамках приложения он корректный, но при переходе из одного приложения в другой - слетает
|
|
73
|
-
* и чтобы 100% все было норм, мы всегда патчим его
|
|
74
|
-
*/
|
|
75
|
-
if (spanId) {
|
|
76
|
-
span.spanContext().spanId = spanId;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Патчим трайс ид, причина выше
|
|
80
|
-
*/
|
|
81
|
-
if (traceId) {
|
|
82
|
-
span.spanContext().traceId = traceId;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Чтобы пробросить пропатченный спан нужно запустить две строчки ниже:
|
|
86
|
-
* 1) создаем контекст в котором активный спан перебиваем новым
|
|
87
|
-
* 2) созданный контекст ставим основным и в нем запускаем под процесс
|
|
88
|
-
*/
|
|
89
|
-
const spanContext = sdk_node_1.api.trace.setSpan(sdk_node_1.api.context.active(), span);
|
|
90
|
-
return sdk_node_1.api.context.with(spanContext, async () => {
|
|
92
|
+
return tracer.startActiveSpan(spanName, (span) => {
|
|
91
93
|
try {
|
|
92
94
|
/**
|
|
93
95
|
* При запуске функции обернутой в опентелеметрию мы выводим и трейсИд и спанИд
|
|
94
96
|
* чтобы в ручную по логам отсмотреть порядок запусков, в случаи если нет доступа до борды графаны и на руках есть только файл с логами
|
|
95
97
|
*/
|
|
96
98
|
logger.trace(`Wrapped function invoked: ${original.name}, traceId: ${span.spanContext().traceId}, spanId: ${span.spanContext().spanId}`);
|
|
99
|
+
span.setAttribute('args', TraceInjector.toAttribute(args));
|
|
97
100
|
const result = original.apply(this, args);
|
|
98
101
|
/**
|
|
99
102
|
* Если метод асинхронный - обрабтываем его и фиксируем успешное или не успешное завершение метода и зарываем спан,
|
|
@@ -146,39 +149,6 @@ class TraceInjector {
|
|
|
146
149
|
},
|
|
147
150
|
}[original.name];
|
|
148
151
|
}
|
|
149
|
-
static createSpanName(className, methodName) {
|
|
150
|
-
/**
|
|
151
|
-
* Всего лишь правила формирования имени спана (не более того), для новой логики нужен был именно такой код
|
|
152
|
-
*/
|
|
153
|
-
return `${className} -> ${methodName}`;
|
|
154
|
-
}
|
|
155
|
-
static isWrapped(prototype) {
|
|
156
|
-
node_assert_1.default.ok(prototype);
|
|
157
|
-
return Reflect.hasMetadata(constants_1.Constants.TRACE_METADATA_ACTIVE, prototype);
|
|
158
|
-
}
|
|
159
|
-
static nowSpan(prototype) {
|
|
160
|
-
node_assert_1.default.ok(prototype);
|
|
161
|
-
return Reflect.hasMetadata(constants_1.Constants.NO_SPAN_METADATA, prototype);
|
|
162
|
-
}
|
|
163
|
-
static setWrapped(prototype) {
|
|
164
|
-
node_assert_1.default.ok(prototype);
|
|
165
|
-
// Value doesn't matter
|
|
166
|
-
const NOOP = 1;
|
|
167
|
-
Reflect.defineMetadata(constants_1.Constants.TRACE_METADATA_ACTIVE, NOOP, prototype);
|
|
168
|
-
}
|
|
169
|
-
static recordAndRethrow(error, span) {
|
|
170
|
-
span.recordException(error);
|
|
171
|
-
span.setStatus({
|
|
172
|
-
code: api_1.SpanStatusCode.ERROR,
|
|
173
|
-
message: error.message,
|
|
174
|
-
});
|
|
175
|
-
throw error;
|
|
176
|
-
}
|
|
177
|
-
static enrich(span, data) {
|
|
178
|
-
span.setAttribute('response', TraceInjector.toAttribute(data));
|
|
179
|
-
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
180
|
-
return data;
|
|
181
|
-
}
|
|
182
152
|
}
|
|
183
153
|
exports.TraceInjector = TraceInjector;
|
|
184
154
|
//# sourceMappingURL=trace.injector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.injector.js","sourceRoot":"","sources":["../../../src/tracing/services/trace.injector.ts"],"names":[],"mappings":";;;;;;AACA,4CAA2D;
|
|
1
|
+
{"version":3,"file":"trace.injector.js","sourceRoot":"","sources":["../../../src/tracing/services/trace.injector.ts"],"names":[],"mappings":";;;;;;AACA,4CAA2D;AAE3D,yCAAiE;AACjE,iDAA8C;AAC9C,2CAA8C;AAC9C,8DAAiC;AACjC,+BAAwE;AAExE,4CAAoD;AAEpD,MAAM,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAErD,MAAa,aAAa;IACxB,wDAAwD;IACxD,MAAM,CAAC,IAAI,CACT,GAAQ;IACR,wDAAwD;IACxD,QAAkB,EAClB,UAAyC;QAEzC;;WAEG;QACH,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAC3C,GAAG,CAAC,WAAW,CAAC,IAAI,EACpB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEhE,IAAA,uBAAU,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC/B,CAAC;QAED;;WAEG;QACH,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,wDAAwD;IACxD,mDAAmD;IACnD,MAAM,CAAC,WAAW,CAAC,IAAa;QAC9B,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,mBAAU,GAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAEtD,OAAO,UAAU,CAAC,MAAM,IAAI,qBAAS,CAAC,KAAK,EAAE;gBAC3C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,yBAAyB,qBAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QACzD,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAU,EAAE,IAAa;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,SAAiB,EAAE,UAAkB;QACzD;;WAEG;QACH,OAAO,GAAG,SAAS,OAAO,UAAU,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,KAAc,EAAE,IAAU;QAChD,IAAI,CAAC,eAAe,CAAC,KAAkB,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,oBAAc,CAAC,KAAK;YAC1B,OAAO,EAAG,KAAmB,CAAC,OAAO;SACtC,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,SAAiB;QACxC,qBAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAErB,OAAO,OAAO,CAAC,WAAW,CAAC,qBAAS,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,SAAiB;QACtC,qBAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAErB,OAAO,OAAO,CAAC,WAAW,CAAC,qBAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,SAAiB;QACzC,qBAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAErB,uBAAuB;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC;QAEf,OAAO,CAAC,cAAc,CAAC,qBAAS,CAAC,qBAAqB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,QAAa,EAAE,QAAgB;QAC1D,OAAO;YACL,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAW;gBAC5B,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBAEhE,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/C,IAAI,CAAC;wBACH;;;2BAGG;wBACH,MAAM,CAAC,KAAK,CACV,6BAA6B,QAAQ,CAAC,IAAI,cACxC,IAAI,CAAC,WAAW,EAAE,CAAC,OACrB,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CACzC,CAAC;wBAEF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAE1C;;;2BAGG;wBACH,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC9B,OAAO,MAAM;iCACV,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gCACrB,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gCACnC,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,OAAO,MAAM,CAAC;4BAChB,CAAC,CAAC;iCACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gCACrB,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gCAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,MAAM,KAAK,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC;wBAED;;;2BAGG;wBACH,IAAI,MAAM,YAAY,iBAAU,EAAE,CAAC;4BACjC,OAAO,MAAM,CAAC,IAAI,CAChB,IAAA,eAAQ,EAAC,CAAC,MAAM,EAAE,EAAE;gCAClB,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gCACnC,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,OAAO,IAAA,SAAE,EAAC,MAAM,CAAC,CAAC;4BACpB,CAAC,CAAC,EACF,IAAA,iBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;gCACnB,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gCAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;4BACjC,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC;wBAED;;;2BAGG;wBACH,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBACnC,IAAI,CAAC,GAAG,EAAE,CAAC;wBAEX,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf;;2BAEG;wBACH,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;CACF;AAhLD,sCAgLC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
2
|
import type { Observable } from 'rxjs';
|
|
3
|
+
import { TracingHeadersExtractor } from '../types/tracing.headers-extractor';
|
|
3
4
|
export declare class TracingInterceptor implements NestInterceptor {
|
|
5
|
+
private headersExtractor;
|
|
6
|
+
constructor(headersExtractor: TracingHeadersExtractor);
|
|
4
7
|
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
5
|
-
private static extractTracingHeaders;
|
|
6
|
-
private static extractFromGraphql;
|
|
7
|
-
private static extractFromHttp;
|
|
8
|
-
private static extractFromRpc;
|
|
9
|
-
private static createRequestId;
|
|
10
8
|
}
|
|
@@ -5,105 +5,29 @@ 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
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
9
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
12
|
exports.TracingInterceptor = void 0;
|
|
11
13
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const node_crypto_1 = require("node:crypto");
|
|
15
|
-
const request_id_provider_1 = require("./services/request-id.provider");
|
|
14
|
+
const tracing_1 = require("@rsdk/tracing");
|
|
15
|
+
const tracing_headers_extractor_1 = require("../types/tracing.headers-extractor");
|
|
16
16
|
const constants_1 = require("./constants");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
propagator_b3_1.X_B3_SPAN_ID,
|
|
23
|
-
propagator_b3_1.X_B3_PARENT_SPAN_ID,
|
|
24
|
-
];
|
|
25
|
-
let TracingInterceptor = TracingInterceptor_1 = class TracingInterceptor {
|
|
17
|
+
let TracingInterceptor = class TracingInterceptor {
|
|
18
|
+
headersExtractor;
|
|
19
|
+
constructor(headersExtractor) {
|
|
20
|
+
this.headersExtractor = headersExtractor;
|
|
21
|
+
}
|
|
26
22
|
intercept(context, next) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
request_id_provider_1.OpenTelemetryProvider.set((0, common_node_1.omitUndefined)(requestId));
|
|
23
|
+
const h = this.headersExtractor.extract(context).getHeaders();
|
|
24
|
+
tracing_1.RequestIdProvider.set(h[constants_1.X_REQUEST_ID]);
|
|
30
25
|
return next.handle();
|
|
31
26
|
}
|
|
32
|
-
static extractTracingHeaders(executionContext) {
|
|
33
|
-
/**
|
|
34
|
-
* В зависимости от типа контекста запускаем парсинг переданной Metadata
|
|
35
|
-
*/
|
|
36
|
-
switch (executionContext.getType()) {
|
|
37
|
-
case 'rpc':
|
|
38
|
-
return this.extractFromRpc(executionContext);
|
|
39
|
-
case 'http':
|
|
40
|
-
return this.extractFromHttp(executionContext);
|
|
41
|
-
case 'graphql':
|
|
42
|
-
return this.extractFromGraphql(executionContext);
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
[constants_1.X_REQUEST_ID]: this.createRequestId(),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
static extractFromGraphql(executionContext) {
|
|
49
|
-
const req = executionContext.getArgs()[2]?.req; // аналог GqlExecutionContext.create(executionContext).getContext().req
|
|
50
|
-
/**
|
|
51
|
-
* При работе с сабскрипшен через веб сокет, заголовки передаются в опции подключения к сабскрипшен в переменную connectionParams
|
|
52
|
-
* и мы перегоняем эти данные в request заголовки
|
|
53
|
-
*/
|
|
54
|
-
const headers = {
|
|
55
|
-
...req?.headers,
|
|
56
|
-
...req?.connectionParams?.headers,
|
|
57
|
-
};
|
|
58
|
-
const extractedHeaders = new http_headers_1.HttpHeaders(headers).get([
|
|
59
|
-
constants_1.X_REQUEST_ID,
|
|
60
|
-
propagator_b3_1.X_B3_TRACE_ID,
|
|
61
|
-
propagator_b3_1.X_B3_SPAN_ID,
|
|
62
|
-
]);
|
|
63
|
-
const h = extractedHeaders;
|
|
64
|
-
h.http = {
|
|
65
|
-
httpMethod: req.method,
|
|
66
|
-
httpRoute: req.route?.path || req.routeOptions?.url || req.routerPath,
|
|
67
|
-
httpUrl: req.originalUrl || req.url,
|
|
68
|
-
};
|
|
69
|
-
h[constants_1.X_REQUEST_ID] ??= (0, node_crypto_1.randomUUID)();
|
|
70
|
-
return h;
|
|
71
|
-
}
|
|
72
|
-
static extractFromHttp(executionContext) {
|
|
73
|
-
// TODO:
|
|
74
|
-
const req = executionContext.switchToHttp().getRequest();
|
|
75
|
-
const headers = new http_headers_1.HttpHeaders(req.headers).get(tracingHeaders);
|
|
76
|
-
const h = headers;
|
|
77
|
-
h[constants_1.X_REQUEST_ID] ??= (0, node_crypto_1.randomUUID)();
|
|
78
|
-
h.http = {
|
|
79
|
-
httpMethod: req.method,
|
|
80
|
-
httpRoute: req.route?.path || req.routeOptions?.url || req.routerPath,
|
|
81
|
-
httpUrl: req.originalUrl || req.url,
|
|
82
|
-
};
|
|
83
|
-
return headers;
|
|
84
|
-
}
|
|
85
|
-
static extractFromRpc(executionContext) {
|
|
86
|
-
const metadata = executionContext.switchToRpc().getContext();
|
|
87
|
-
/**
|
|
88
|
-
* Если мы пришли в GRPC и у нас есть методы для работы с Metadata
|
|
89
|
-
* то мы конвертируем Metadata в некий виртуальный request с заголовками (заголовки выбраны как общий стандарт проброса мета информации)
|
|
90
|
-
*/
|
|
91
|
-
if (metadata?.get) {
|
|
92
|
-
const grpcHeaders = new grpc_headers_1.GrpcHeaders(metadata);
|
|
93
|
-
const h = grpcHeaders.get(tracingHeaders);
|
|
94
|
-
h[constants_1.X_REQUEST_ID] ??= this.createRequestId();
|
|
95
|
-
return h;
|
|
96
|
-
}
|
|
97
|
-
return {
|
|
98
|
-
[constants_1.X_REQUEST_ID]: (0, node_crypto_1.randomUUID)(),
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
static createRequestId() {
|
|
102
|
-
return (0, node_crypto_1.randomUUID)();
|
|
103
|
-
}
|
|
104
27
|
};
|
|
105
28
|
exports.TracingInterceptor = TracingInterceptor;
|
|
106
|
-
exports.TracingInterceptor = TracingInterceptor =
|
|
107
|
-
(0, common_1.Injectable)()
|
|
29
|
+
exports.TracingInterceptor = TracingInterceptor = __decorate([
|
|
30
|
+
(0, common_1.Injectable)(),
|
|
31
|
+
__metadata("design:paramtypes", [tracing_headers_extractor_1.TracingHeadersExtractor])
|
|
108
32
|
], TracingInterceptor);
|
|
109
33
|
//# sourceMappingURL=tracing.interceptor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.interceptor.js","sourceRoot":"","sources":["../../src/tracing/tracing.interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tracing.interceptor.js","sourceRoot":"","sources":["../../src/tracing/tracing.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,2CAA4C;AAC5C,2CAAkD;AAGlD,kFAA6E;AAE7E,2CAA2C;AAGpC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACT;IAApB,YAAoB,gBAAyC;QAAzC,qBAAgB,GAAhB,gBAAgB,CAAyB;IAAG,CAAC;IAEjE,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QAE9D,2BAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AATY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAE2B,mDAAuB;GADlD,kBAAkB,CAS9B"}
|