sm-utility 2.4.24 → 2.4.26

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.
@@ -1,5 +1,5 @@
1
1
  import { MetadataModel } from './metadata.model';
2
- import { LeveledLogMethod } from 'winston';
2
+ import { LeveledLogMethod, Logger } from 'winston';
3
3
  type LogData<T> = {
4
4
  context?: T;
5
5
  };
@@ -10,9 +10,10 @@ type EnhancedLogParams<T, E> = {
10
10
  error?: E;
11
11
  };
12
12
  export declare abstract class Command {
13
- protected readonly className: string;
14
- protected readonly metadata: MetadataModel;
15
- protected readonly logger: import("winston").Logger;
13
+ protected className?: string | undefined;
14
+ protected metadata?: MetadataModel | undefined;
15
+ private loggerInstance;
16
+ private lastTime;
16
17
  private startTime;
17
18
  /**
18
19
  * Creates a new instance of the Command class.
@@ -21,7 +22,7 @@ export declare abstract class Command {
21
22
  * @param metadata - (Optional) A metadata model containing additional information for the command.
22
23
  * If not provided, a new `MetadataModel` will be created with a randomly generated `auditUuid`.
23
24
  */
24
- constructor(className: string, metadata?: MetadataModel);
25
+ constructor(className?: string | undefined, metadata?: MetadataModel | undefined);
25
26
  /**
26
27
  * Executes the command logic. This method must be implemented by any class extending the Command base class.
27
28
  *
@@ -48,6 +49,19 @@ export declare abstract class Command {
48
49
  * }
49
50
  */
50
51
  abstract execute(params?: any): Promise<any>;
52
+ /**
53
+ * Sets the logger of the command.
54
+ * @param logger - The logger to be used for the command.
55
+ * @returns The command instance.
56
+ */
57
+ withLogger(customLogger: Logger): this;
58
+ protected get logger(): Logger;
59
+ /**
60
+ * Sets the metadata of the command that will be included in log messages.
61
+ * @param metadata - The metadata of the command.
62
+ * @returns The command instance.
63
+ */
64
+ withMetadata(metadata: MetadataModel): this;
51
65
  /**
52
66
  * Logs that the command has been initiated.
53
67
  * @param logData Optional contextual data for the log.
@@ -64,6 +78,14 @@ export declare abstract class Command {
64
78
  * @param logData Optional contextual data for the log.
65
79
  */
66
80
  protected logUnexpectedFailed<T>(error: Error, logData?: LogData<T>): void;
81
+ protected logExpectedFailed<T>(error: Error, logData?: LogData<T>): void;
82
+ /**
83
+ * Logs that the command has been interrupted.
84
+ * @param error The error that was thrown.
85
+ * @param logData Optional contextual data for the log.
86
+ */
87
+ protected logInterruptionError<T>(error: Error, logData?: LogData<T>): void;
88
+ protected logEarlyFinish<T>(logData?: LogData<T>): void;
67
89
  /**
68
90
  * Logs detailed information about the current operation, optionally including execution time and error details.
69
91
  *
@@ -84,7 +106,7 @@ export declare abstract class Command {
84
106
  * @example
85
107
  * // Log a successful operation
86
108
  * this.enhancedLog({
87
- * logMethod: this.logger.info,
109
+ * logMethod: this.logger.info.bind(this.logger),
88
110
  * message: 'Operation finished successfully',
89
111
  * logData: { userId: '12345' },
90
112
  * });
@@ -92,7 +114,7 @@ export declare abstract class Command {
92
114
  * @example
93
115
  * // Log a failed operation with an error
94
116
  * this.enhancedLog({
95
- * logMethod: this.logger.error,
117
+ * logMethod: this.logger.error.bind(this.logger),
96
118
  * message: 'Operation failed',
97
119
  * logData: { userId: '12345' },
98
120
  * error: new Error('Unexpected error'),
@@ -101,12 +123,13 @@ export declare abstract class Command {
101
123
  * @example
102
124
  * // Log an initiated operation
103
125
  * this.enhancedLog({
104
- * logMethod: this.logger.info,
126
+ * logMethod: this.logger.info.bind(this.logger),
105
127
  * message: 'Operation initiated',
106
128
  * });
107
129
  */
108
130
  protected enhancedLog<T, E>({ logMethod, message, logData, error, }: EnhancedLogParams<T, E>): void;
109
- getExecutionTime(): string;
131
+ getAccumulatedExecutionTime(): string;
132
+ getExecutionTimeSinceLastTimestamp(): string;
110
133
  private buildLogData;
111
134
  }
112
135
  export {};
@@ -4,6 +4,7 @@ exports.Command = void 0;
4
4
  const logger_1 = require("../logger");
5
5
  const metadata_model_1 = require("./metadata.model");
6
6
  const uuid_1 = require("uuid");
7
+ const tracing_1 = require("../tracing");
7
8
  class Command {
8
9
  /**
9
10
  * Creates a new instance of the Command class.
@@ -12,13 +13,48 @@ class Command {
12
13
  * @param metadata - (Optional) A metadata model containing additional information for the command.
13
14
  * If not provided, a new `MetadataModel` will be created with a randomly generated `auditUuid`.
14
15
  */
15
- constructor(className, metadata = new metadata_model_1.MetadataModel({
16
- auditUuid: (0, uuid_1.v4)(),
17
- })) {
16
+ constructor(className, metadata) {
18
17
  this.className = className;
19
18
  this.metadata = metadata;
20
- this.logger = logger_1.logger;
21
- this.startTime = performance.now();
19
+ this.className = this.constructor.name;
20
+ if (!this.metadata) {
21
+ this.metadata = new metadata_model_1.MetadataModel({
22
+ auditUuid: (0, uuid_1.v4)(),
23
+ });
24
+ }
25
+ const startTime = performance.now();
26
+ this.startTime = startTime;
27
+ this.lastTime = startTime;
28
+ }
29
+ /**
30
+ * Sets the logger of the command.
31
+ * @param logger - The logger to be used for the command.
32
+ * @returns The command instance.
33
+ */
34
+ withLogger(customLogger) {
35
+ this.loggerInstance = customLogger.child({
36
+ 'command.name': this.className,
37
+ });
38
+ return this;
39
+ }
40
+ get logger() {
41
+ if (!this.loggerInstance) {
42
+ this.loggerInstance = logger_1.logger.child({
43
+ 'command.name': this.className,
44
+ 'trace.id': tracing_1.TracingContextProvider.getTraceId(),
45
+ 'span.id': tracing_1.TracingContextProvider.getSpanId(),
46
+ });
47
+ }
48
+ return this.loggerInstance;
49
+ }
50
+ /**
51
+ * Sets the metadata of the command that will be included in log messages.
52
+ * @param metadata - The metadata of the command.
53
+ * @returns The command instance.
54
+ */
55
+ withMetadata(metadata) {
56
+ this.metadata = metadata;
57
+ return this;
22
58
  }
23
59
  /**
24
60
  * Logs that the command has been initiated.
@@ -26,7 +62,7 @@ class Command {
26
62
  */
27
63
  logInitiated(logData) {
28
64
  this.enhancedLog({
29
- logMethod: this.logger.info,
65
+ logMethod: this.logger.info.bind(this.logger),
30
66
  message: `${this.className} initiated`,
31
67
  logData,
32
68
  });
@@ -37,7 +73,7 @@ class Command {
37
73
  */
38
74
  logFinished(logData) {
39
75
  this.enhancedLog({
40
- logMethod: this.logger.info,
76
+ logMethod: this.logger.info.bind(this.logger),
41
77
  message: `${this.className} finished`,
42
78
  logData,
43
79
  });
@@ -49,12 +85,40 @@ class Command {
49
85
  */
50
86
  logUnexpectedFailed(error, logData) {
51
87
  this.enhancedLog({
52
- logMethod: this.logger.error,
53
- message: `${this.className} failed`,
88
+ logMethod: this.logger.error.bind(this.logger),
89
+ message: `${this.className} unexpected failed`,
90
+ logData,
91
+ error,
92
+ });
93
+ }
94
+ logExpectedFailed(error, logData) {
95
+ this.enhancedLog({
96
+ logMethod: this.logger.error.bind(this.logger),
97
+ message: `${this.className} expected failed`,
54
98
  logData,
55
99
  error,
56
100
  });
57
101
  }
102
+ /**
103
+ * Logs that the command has been interrupted.
104
+ * @param error The error that was thrown.
105
+ * @param logData Optional contextual data for the log.
106
+ */
107
+ logInterruptionError(error, logData) {
108
+ this.enhancedLog({
109
+ logMethod: this.logger.error.bind(this.logger),
110
+ message: `${this.className} interrupted`,
111
+ logData,
112
+ error,
113
+ });
114
+ }
115
+ logEarlyFinish(logData) {
116
+ this.enhancedLog({
117
+ logMethod: this.logger.info.bind(this.logger),
118
+ message: `${this.className} finished early`,
119
+ logData,
120
+ });
121
+ }
58
122
  /**
59
123
  * Logs detailed information about the current operation, optionally including execution time and error details.
60
124
  *
@@ -75,7 +139,7 @@ class Command {
75
139
  * @example
76
140
  * // Log a successful operation
77
141
  * this.enhancedLog({
78
- * logMethod: this.logger.info,
142
+ * logMethod: this.logger.info.bind(this.logger),
79
143
  * message: 'Operation finished successfully',
80
144
  * logData: { userId: '12345' },
81
145
  * });
@@ -83,7 +147,7 @@ class Command {
83
147
  * @example
84
148
  * // Log a failed operation with an error
85
149
  * this.enhancedLog({
86
- * logMethod: this.logger.error,
150
+ * logMethod: this.logger.error.bind(this.logger),
87
151
  * message: 'Operation failed',
88
152
  * logData: { userId: '12345' },
89
153
  * error: new Error('Unexpected error'),
@@ -92,7 +156,7 @@ class Command {
92
156
  * @example
93
157
  * // Log an initiated operation
94
158
  * this.enhancedLog({
95
- * logMethod: this.logger.info,
159
+ * logMethod: this.logger.info.bind(this.logger),
96
160
  * message: 'Operation initiated',
97
161
  * });
98
162
  */
@@ -102,7 +166,7 @@ class Command {
102
166
  };
103
167
  //* Add `executionTime` if the message is not about initiation
104
168
  if (!message.includes('initiated')) {
105
- logPayload.executionTime = this.getExecutionTime();
169
+ logPayload.executionTime = this.getAccumulatedExecutionTime();
106
170
  }
107
171
  //* Add error details if present
108
172
  if (error) {
@@ -111,7 +175,7 @@ class Command {
111
175
  //* Log the message with the appropriate level
112
176
  logMethod(message, logPayload);
113
177
  }
114
- getExecutionTime() {
178
+ getAccumulatedExecutionTime() {
115
179
  const executionTime = performance.now() - this.startTime;
116
180
  if (executionTime >= 1000) {
117
181
  //* Converting to seconds if the execution time is greater than 1000ms
@@ -119,6 +183,15 @@ class Command {
119
183
  }
120
184
  return `${executionTime.toFixed(2)}ms`;
121
185
  }
186
+ getExecutionTimeSinceLastTimestamp() {
187
+ const now = performance.now();
188
+ const executionTime = now - this.lastTime;
189
+ this.lastTime = now;
190
+ if (executionTime >= 1000) {
191
+ return `${(executionTime / 1000).toFixed(2)}s`;
192
+ }
193
+ return `${executionTime.toFixed(2)}ms`;
194
+ }
122
195
  buildLogData(logData) {
123
196
  var _a;
124
197
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sm-utility",
3
- "version": "2.4.24",
3
+ "version": "2.4.26",
4
4
  "description": "reusable utility codes for sm projects",
5
5
  "main": "index.js",
6
6
  "types": "./index.d.ts",
@@ -5,16 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createApi = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
- const logger_1 = require("../logger");
9
8
  const request_interceptor_1 = require("./interceptors/request.interceptor");
10
9
  const response_interceptor_1 = require("./interceptors/response.interceptor");
11
10
  const error_interceptor_1 = require("./interceptors/error.interceptor");
12
11
  function createApi(axiosConfig) {
13
- const { logContext, ...axiosCreateConfig } = axiosConfig || {};
14
- const axiosApi = axios_1.default.create(axiosCreateConfig);
15
- const scopedLogger = logContext ? logger_1.logger.child(logContext) : logger_1.logger;
16
- axiosApi.interceptors.request.use((0, request_interceptor_1.createRequestInterceptor)(scopedLogger), (0, error_interceptor_1.createErrorInterceptor)(scopedLogger));
17
- axiosApi.interceptors.response.use((0, response_interceptor_1.createResponseInterceptor)(scopedLogger), (0, error_interceptor_1.createErrorInterceptor)(scopedLogger));
12
+ const axiosApi = axios_1.default.create(axiosConfig);
13
+ axiosApi.interceptors.request.use((0, request_interceptor_1.createRequestInterceptor)(), (0, error_interceptor_1.createErrorInterceptor)());
14
+ axiosApi.interceptors.response.use((0, response_interceptor_1.createResponseInterceptor)(), (0, error_interceptor_1.createErrorInterceptor)());
18
15
  return axiosApi;
19
16
  }
20
17
  exports.createApi = createApi;
@@ -1,3 +1,2 @@
1
1
  import { AxiosError } from "axios";
2
- import type { Logger } from "winston";
3
- export declare function createErrorInterceptor(log?: Logger): (error: AxiosError) => never;
2
+ export declare function createErrorInterceptor(): (error: AxiosError) => never;
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createErrorInterceptor = void 0;
4
4
  const loggers_1 = require("../loggers");
5
5
  const utils_1 = require("../utils");
6
- function createErrorInterceptor(log) {
6
+ function createErrorInterceptor() {
7
7
  return (error) => {
8
8
  const { config, message, response } = error;
9
9
  const { method, meta } = config || {};
10
10
  const fullUrl = (0, utils_1.getFullUrlFromConfig)(config);
11
- (0, loggers_1.logError)(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, response === null || response === void 0 ? void 0 : response.data, response === null || response === void 0 ? void 0 : response.status, message, log);
11
+ (0, loggers_1.logError)(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, response === null || response === void 0 ? void 0 : response.data, response === null || response === void 0 ? void 0 : response.status, message);
12
12
  throw error;
13
13
  };
14
14
  }
@@ -1,3 +1,2 @@
1
1
  import { InternalAxiosRequestConfig } from "axios";
2
- import type { Logger } from "winston";
3
- export declare function createRequestInterceptor(log?: Logger): (request: InternalAxiosRequestConfig) => InternalAxiosRequestConfig<any>;
2
+ export declare function createRequestInterceptor(): (request: InternalAxiosRequestConfig) => InternalAxiosRequestConfig<any>;
@@ -4,7 +4,7 @@ exports.createRequestInterceptor = void 0;
4
4
  const uuid_1 = require("uuid");
5
5
  const utils_1 = require("../utils");
6
6
  const loggers_1 = require("../loggers");
7
- function createRequestInterceptor(log) {
7
+ function createRequestInterceptor() {
8
8
  return (request) => {
9
9
  if (request === null || request === void 0 ? void 0 : request.logRequest) {
10
10
  const { data, params, method } = request;
@@ -12,7 +12,7 @@ function createRequestInterceptor(log) {
12
12
  request.meta = request.meta || {};
13
13
  request.meta.requestId = (0, uuid_1.v4)();
14
14
  request.meta.requestStartedAt = new Date().getTime();
15
- (0, loggers_1.logRequest)(request.meta.requestId, method, fullUrl, data, params, log);
15
+ (0, loggers_1.logRequest)(request.meta.requestId, method, fullUrl, data, params);
16
16
  }
17
17
  return request;
18
18
  };
@@ -1,3 +1,2 @@
1
1
  import { AxiosResponse } from "axios";
2
- import type { Logger } from "winston";
3
- export declare function createResponseInterceptor(log?: Logger): (response: AxiosResponse) => AxiosResponse<any, any>;
2
+ export declare function createResponseInterceptor(): (response: AxiosResponse) => AxiosResponse<any, any>;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createResponseInterceptor = void 0;
4
4
  const loggers_1 = require("../loggers");
5
5
  const utils_1 = require("../utils");
6
- function createResponseInterceptor(log) {
6
+ function createResponseInterceptor() {
7
7
  return (response) => {
8
8
  var _a;
9
9
  if ((_a = response.config) === null || _a === void 0 ? void 0 : _a.logResponse) {
@@ -11,7 +11,7 @@ function createResponseInterceptor(log) {
11
11
  const { method, meta } = config;
12
12
  const fullUrl = (0, utils_1.getFullUrlFromConfig)(config);
13
13
  const responseTime = (0, utils_1.getResponseTimeFromConfig)(config);
14
- (0, loggers_1.logResponse)(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, data, status, responseTime, log);
14
+ (0, loggers_1.logResponse)(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, data, status, responseTime);
15
15
  }
16
16
  return response;
17
17
  };
@@ -1,2 +1 @@
1
- import type { Logger } from "winston";
2
- export declare function logError(id: string, method: string | undefined, url: string | undefined, data: unknown, status: any, message: any, log?: Logger): void;
1
+ export declare function logError(id: string, method: string | undefined, url: string | undefined, data: unknown, status: any, message: any): void;
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.logError = void 0;
4
4
  const logger_1 = require("../../logger");
5
- function logError(id, method, url, data, status, message, log = logger_1.logger) {
5
+ const tracing_1 = require("../../tracing");
6
+ function logError(id, method, url, data, status, message) {
6
7
  const err = {
7
8
  ["context-id"]: id,
8
9
  url,
@@ -11,6 +12,14 @@ function logError(id, method, url, data, status, message, log = logger_1.logger)
11
12
  status,
12
13
  message,
13
14
  };
14
- log.error("sm-utility/api-error", { err });
15
+ const traceId = tracing_1.TracingContextProvider.getTraceId();
16
+ if (traceId) {
17
+ err['trace.id'] = traceId;
18
+ }
19
+ const spanId = tracing_1.TracingContextProvider.getSpanId();
20
+ if (spanId) {
21
+ err['span.id'] = spanId;
22
+ }
23
+ logger_1.logger.error("sm-utility/api-error", { err });
15
24
  }
16
25
  exports.logError = logError;
@@ -1,2 +1 @@
1
- import type { Logger } from "winston";
2
- export declare function logRequest(id: string, method: string | undefined, url: string | undefined, body: unknown, params: string, log?: Logger): void;
1
+ export declare function logRequest(id: string, method: string | undefined, url: string | undefined, body: unknown, params: string): void;
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.logRequest = void 0;
4
4
  const logger_1 = require("../../logger");
5
- function logRequest(id, method, url, body, params, log = logger_1.logger) {
5
+ const tracing_1 = require("../../tracing");
6
+ function logRequest(id, method, url, body, params) {
6
7
  const request = {
7
8
  ["context-id"]: id,
8
9
  url,
@@ -10,6 +11,14 @@ function logRequest(id, method, url, body, params, log = logger_1.logger) {
10
11
  params,
11
12
  body,
12
13
  };
13
- log.info("sm-utility/api-request", { request });
14
+ const traceId = tracing_1.TracingContextProvider.getTraceId();
15
+ if (traceId) {
16
+ request['trace.id'] = traceId;
17
+ }
18
+ const spanId = tracing_1.TracingContextProvider.getSpanId();
19
+ if (spanId) {
20
+ request['span.id'] = spanId;
21
+ }
22
+ logger_1.logger.info("sm-utility/api-request", { request });
14
23
  }
15
24
  exports.logRequest = logRequest;
@@ -1,2 +1 @@
1
- import type { Logger } from "winston";
2
- export declare function logResponse(id: string, method: string | undefined, url: string | undefined, body: unknown, status: any, responseTime: string, log?: Logger): void;
1
+ export declare function logResponse(id: string, method: string | undefined, url: string | undefined, body: unknown, status: any, responseTime: string): void;
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.logResponse = void 0;
4
4
  const logger_1 = require("../../logger");
5
- function logResponse(id, method, url, body, status, responseTime, log = logger_1.logger) {
5
+ const tracing_1 = require("../../tracing");
6
+ function logResponse(id, method, url, body, status, responseTime) {
6
7
  const response = {
7
8
  ["context-id"]: id,
8
9
  url,
@@ -11,6 +12,14 @@ function logResponse(id, method, url, body, status, responseTime, log = logger_1
11
12
  status,
12
13
  responseTime,
13
14
  };
14
- log.info("sm-utility/api-response", { response });
15
+ const traceId = tracing_1.TracingContextProvider.getTraceId();
16
+ if (traceId) {
17
+ response['trace.id'] = traceId;
18
+ }
19
+ const spanId = tracing_1.TracingContextProvider.getSpanId();
20
+ if (spanId) {
21
+ response['span.id'] = spanId;
22
+ }
23
+ logger_1.logger.info("sm-utility/api-response", { response });
15
24
  }
16
25
  exports.logResponse = logResponse;
@@ -7,10 +7,5 @@ declare module 'axios' {
7
7
  logResponse?: boolean;
8
8
  }
9
9
  }
10
- export type LoggerContext = {
11
- trace_id: string;
12
- } & Record<string, any>;
13
- export type CustomClientCreateApiParams = Omit<AxiosRequestConfig, 'meta'> & {
14
- logContext?: LoggerContext;
15
- };
10
+ export type CustomClientCreateApiParams = Omit<AxiosRequestConfig, 'meta'>;
16
11
  export type SmAxiosInstance = ReturnType<typeof createApi>;
@@ -1,2 +1,3 @@
1
1
  export { OpenTelemetryTracer } from "./opentelemetry-tracer";
2
2
  export type { TracingConfig } from "./opentelemetry-tracer";
3
+ export { TracingContextProvider } from "./tracingContextProvider";
package/tracing/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenTelemetryTracer = void 0;
3
+ exports.TracingContextProvider = exports.OpenTelemetryTracer = void 0;
4
4
  var opentelemetry_tracer_1 = require("./opentelemetry-tracer");
5
5
  Object.defineProperty(exports, "OpenTelemetryTracer", { enumerable: true, get: function () { return opentelemetry_tracer_1.OpenTelemetryTracer; } });
6
+ var tracingContextProvider_1 = require("./tracingContextProvider");
7
+ Object.defineProperty(exports, "TracingContextProvider", { enumerable: true, get: function () { return tracingContextProvider_1.TracingContextProvider; } });
@@ -0,0 +1,10 @@
1
+ export declare class TracingContextProvider {
2
+ /**
3
+ * Returns the canonical OpenTelemetry trace id (32 hex chars)
4
+ */
5
+ static getTraceId(): string | undefined;
6
+ /**
7
+ * Returns the current span id (16 hex chars)
8
+ */
9
+ static getSpanId(): string | undefined;
10
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TracingContextProvider = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ class TracingContextProvider {
6
+ /**
7
+ * Returns the canonical OpenTelemetry trace id (32 hex chars)
8
+ */
9
+ static getTraceId() {
10
+ var _a;
11
+ const span = api_1.trace.getSpan(api_1.context.active());
12
+ return (_a = span === null || span === void 0 ? void 0 : span.spanContext()) === null || _a === void 0 ? void 0 : _a.traceId;
13
+ }
14
+ /**
15
+ * Returns the current span id (16 hex chars)
16
+ */
17
+ static getSpanId() {
18
+ var _a;
19
+ const span = api_1.trace.getSpan(api_1.context.active());
20
+ return (_a = span === null || span === void 0 ? void 0 : span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
21
+ }
22
+ }
23
+ exports.TracingContextProvider = TracingContextProvider;