sm-utility 2.3.7 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/general/index.d.ts +1 -0
- package/general/index.js +3 -1
- package/general/metadata.model.d.ts +9 -0
- package/general/metadata.model.js +15 -0
- package/index.js +1 -0
- package/package.json +8 -1
- package/tracing/index.d.ts +2 -0
- package/tracing/index.js +5 -0
- package/tracing/opentelemetry-tracer.d.ts +14 -0
- package/tracing/opentelemetry-tracer.js +55 -0
package/general/index.d.ts
CHANGED
package/general/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.copy = exports.shortUniqueId = exports.mergeDeep = exports.timeout = exports.randomSixDigitNumber = exports.pipe = void 0;
|
|
3
|
+
exports.MetadataModel = exports.copy = exports.shortUniqueId = exports.mergeDeep = exports.timeout = exports.randomSixDigitNumber = exports.pipe = void 0;
|
|
4
4
|
const nanoid_1 = require("nanoid");
|
|
5
5
|
function pipe(...fns) {
|
|
6
6
|
return (x) => fns.reduce((v, f) => f(v), x);
|
|
@@ -102,3 +102,5 @@ function copy(obj) {
|
|
|
102
102
|
return clone;
|
|
103
103
|
}
|
|
104
104
|
exports.copy = copy;
|
|
105
|
+
var metadata_model_1 = require("./metadata.model");
|
|
106
|
+
Object.defineProperty(exports, "MetadataModel", { enumerable: true, get: function () { return metadata_model_1.MetadataModel; } });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetadataModel = void 0;
|
|
4
|
+
class MetadataModel {
|
|
5
|
+
constructor(metadata) {
|
|
6
|
+
this.metadata = metadata;
|
|
7
|
+
}
|
|
8
|
+
getData() {
|
|
9
|
+
return this.metadata;
|
|
10
|
+
}
|
|
11
|
+
getAuditUuid() {
|
|
12
|
+
return this.metadata.auditUuid;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.MetadataModel = MetadataModel;
|
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sm-utility",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "reusable utility codes for sm projects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -27,6 +27,13 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@elastic/ecs-winston-format": "^1.3.1",
|
|
30
|
+
"@opentelemetry/auto-instrumentations-node": "0.55.3",
|
|
31
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.57.1",
|
|
32
|
+
"@opentelemetry/id-generator-aws-xray": "1.2.2",
|
|
33
|
+
"@opentelemetry/propagator-aws-xray": "1.26.1",
|
|
34
|
+
"@opentelemetry/resources": "1.30.1",
|
|
35
|
+
"@opentelemetry/sdk-node": "0.57.1",
|
|
36
|
+
"@opentelemetry/sdk-trace-base": "1.30.1",
|
|
30
37
|
"aws-sdk": "^2.1134.0",
|
|
31
38
|
"axios": "^1.6.8",
|
|
32
39
|
"express-winston": "^4.1.0",
|
package/tracing/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenTelemetryTracer = void 0;
|
|
4
|
+
var opentelemetry_tracer_1 = require("./opentelemetry-tracer");
|
|
5
|
+
Object.defineProperty(exports, "OpenTelemetryTracer", { enumerable: true, get: function () { return opentelemetry_tracer_1.OpenTelemetryTracer; } });
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface TracingConfig {
|
|
2
|
+
serviceName: string;
|
|
3
|
+
environment: string;
|
|
4
|
+
otelEndpoint: string;
|
|
5
|
+
samplingRatio?: number;
|
|
6
|
+
maxQueueSize?: number;
|
|
7
|
+
scheduledDelayMillis?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class OpenTelemetryTracer {
|
|
10
|
+
private sdk;
|
|
11
|
+
constructor(config: TracingConfig);
|
|
12
|
+
start(): void;
|
|
13
|
+
private setupGracefulShutdown;
|
|
14
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenTelemetryTracer = void 0;
|
|
4
|
+
const sdk_node_1 = require("@opentelemetry/sdk-node");
|
|
5
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
6
|
+
const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
|
|
7
|
+
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
8
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
9
|
+
const id_generator_aws_xray_1 = require("@opentelemetry/id-generator-aws-xray");
|
|
10
|
+
const propagator_aws_xray_1 = require("@opentelemetry/propagator-aws-xray");
|
|
11
|
+
const logger_1 = require("../logger");
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
samplingRatio: 0.1,
|
|
14
|
+
maxQueueSize: 50,
|
|
15
|
+
scheduledDelayMillis: 1000,
|
|
16
|
+
};
|
|
17
|
+
class OpenTelemetryTracer {
|
|
18
|
+
constructor(config) {
|
|
19
|
+
const finalConfig = { ...DEFAULT_CONFIG, ...config };
|
|
20
|
+
const resource = resources_1.Resource.default().merge(new resources_1.Resource({
|
|
21
|
+
"service.name": finalConfig.serviceName,
|
|
22
|
+
"deployment.environment": finalConfig.environment,
|
|
23
|
+
}));
|
|
24
|
+
const traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
|
|
25
|
+
url: finalConfig.otelEndpoint,
|
|
26
|
+
});
|
|
27
|
+
const spanProcessor = new sdk_trace_base_1.BatchSpanProcessor(traceExporter, {
|
|
28
|
+
maxQueueSize: finalConfig.maxQueueSize,
|
|
29
|
+
scheduledDelayMillis: finalConfig.scheduledDelayMillis,
|
|
30
|
+
});
|
|
31
|
+
this.sdk = new sdk_node_1.NodeSDK({
|
|
32
|
+
resource,
|
|
33
|
+
spanProcessors: [spanProcessor],
|
|
34
|
+
instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()],
|
|
35
|
+
textMapPropagator: new propagator_aws_xray_1.AWSXRayPropagator(),
|
|
36
|
+
idGenerator: new id_generator_aws_xray_1.AWSXRayIdGenerator(),
|
|
37
|
+
sampler: new sdk_trace_base_1.TraceIdRatioBasedSampler(finalConfig.samplingRatio),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
start() {
|
|
41
|
+
this.sdk.start();
|
|
42
|
+
logger_1.logger.info("OpenTelemetry initialization completed");
|
|
43
|
+
this.setupGracefulShutdown();
|
|
44
|
+
}
|
|
45
|
+
setupGracefulShutdown() {
|
|
46
|
+
process.on("SIGTERM", () => {
|
|
47
|
+
this.sdk
|
|
48
|
+
.shutdown()
|
|
49
|
+
.then(() => logger_1.logger.info("Tracing terminated"))
|
|
50
|
+
.catch((error) => logger_1.logger.error("Error terminating tracing", { err: error }))
|
|
51
|
+
.finally(() => process.exit(0));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.OpenTelemetryTracer = OpenTelemetryTracer;
|