@campxdev/server-shared 2.1.34 → 2.1.36
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +21 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/telemetry.module.d.ts +4 -0
- package/dist/observability/telemetry.module.d.ts.map +1 -0
- package/dist/observability/telemetry.module.js +33 -0
- package/dist/observability/telemetry.module.js.map +1 -0
- package/dist/observability/telemetry.service.d.ts +10 -0
- package/dist/observability/telemetry.service.d.ts.map +1 -0
- package/dist/observability/telemetry.service.js +73 -0
- package/dist/observability/telemetry.service.js.map +1 -0
- package/dist/observability/traced.decorator.d.ts +6 -0
- package/dist/observability/traced.decorator.d.ts.map +1 -0
- package/dist/observability/traced.decorator.js +51 -0
- package/dist/observability/traced.decorator.js.map +1 -0
- package/dist/observability/tracing.interceptor.d.ts +14 -0
- package/dist/observability/tracing.interceptor.d.ts.map +1 -0
- package/dist/observability/tracing.interceptor.js +119 -0
- package/dist/observability/tracing.interceptor.js.map +1 -0
- package/dist/otel-sdk.d.ts +10 -0
- package/dist/otel-sdk.d.ts.map +1 -0
- package/dist/otel-sdk.js +105 -0
- package/dist/otel-sdk.js.map +1 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +6 -0
- package/dist/utils/constants.js.map +1 -1
- package/package.json +13 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './metrics';
|
|
|
10
10
|
export * from './microsoft';
|
|
11
11
|
export * from './modules-handler';
|
|
12
12
|
export * from './oauth-clients';
|
|
13
|
+
export * from './observability';
|
|
13
14
|
export * from './permissions';
|
|
14
15
|
export * from './production-logger';
|
|
15
16
|
export * from './request-store';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ __exportStar(require("./metrics"), exports);
|
|
|
26
26
|
__exportStar(require("./microsoft"), exports);
|
|
27
27
|
__exportStar(require("./modules-handler"), exports);
|
|
28
28
|
__exportStar(require("./oauth-clients"), exports);
|
|
29
|
+
__exportStar(require("./observability"), exports);
|
|
29
30
|
__exportStar(require("./permissions"), exports);
|
|
30
31
|
__exportStar(require("./production-logger"), exports);
|
|
31
32
|
__exportStar(require("./request-store"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,uDAAqC;AACrC,2CAAyB;AACzB,+DAA6C;AAC7C,yDAAuC;AACvC,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B;AAC9B,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,uDAAqC;AACrC,2CAAyB;AACzB,+DAA6C;AAC7C,yDAAuC;AACvC,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./telemetry.module"), exports);
|
|
18
|
+
__exportStar(require("./telemetry.service"), exports);
|
|
19
|
+
__exportStar(require("./tracing.interceptor"), exports);
|
|
20
|
+
__exportStar(require("./traced.decorator"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,wDAAsC;AACtC,qDAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.module.d.ts","sourceRoot":"","sources":["../../src/observability/telemetry.module.ts"],"names":[],"mappings":"AAMA,4EAA4E;AAC5E,qBAaa,eAAe;CAAG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TelemetryModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const core_1 = require("@nestjs/core");
|
|
12
|
+
const telemetry_service_1 = require("./telemetry.service");
|
|
13
|
+
const tracing_interceptor_1 = require("./tracing.interceptor");
|
|
14
|
+
/** Global NestJS module for managing OpenTelemetry lifecycle and tracing */
|
|
15
|
+
let TelemetryModule = class TelemetryModule {
|
|
16
|
+
};
|
|
17
|
+
exports.TelemetryModule = TelemetryModule;
|
|
18
|
+
exports.TelemetryModule = TelemetryModule = __decorate([
|
|
19
|
+
(0, common_1.Global)(),
|
|
20
|
+
(0, common_1.Module)({
|
|
21
|
+
providers: [
|
|
22
|
+
/** Provide service for graceful shutdown */
|
|
23
|
+
telemetry_service_1.TelemetryService,
|
|
24
|
+
/** Register global interceptor for automated span creation */
|
|
25
|
+
{
|
|
26
|
+
provide: core_1.APP_INTERCEPTOR,
|
|
27
|
+
useClass: tracing_interceptor_1.TracingInterceptor,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
exports: [telemetry_service_1.TelemetryService],
|
|
31
|
+
})
|
|
32
|
+
], TelemetryModule);
|
|
33
|
+
//# sourceMappingURL=telemetry.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.module.js","sourceRoot":"","sources":["../../src/observability/telemetry.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uCAA+C;AAE/C,2DAAuD;AACvD,+DAA2D;AAE3D,4EAA4E;AAcrE,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAb3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,4CAA4C;YAC5C,oCAAgB;YAChB,8DAA8D;YAC9D;gBACE,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,wCAAkB;aAC7B;SACF;QACD,OAAO,EAAE,CAAC,oCAAgB,CAAC;KAC5B,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Service to manage the graceful shutdown of OpenTelemetry.
|
|
4
|
+
*/
|
|
5
|
+
export declare class TelemetryService implements OnModuleDestroy {
|
|
6
|
+
private readonly logger;
|
|
7
|
+
/** Triggered when the NestJS module is being destroyed */
|
|
8
|
+
onModuleDestroy(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=telemetry.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.service.d.ts","sourceRoot":"","sources":["../../src/observability/telemetry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAU,MAAM,gBAAgB,CAAC;AAErE;;GAEG;AACH,qBACa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAE5D,0DAA0D;IACpD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBvC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var TelemetryService_1;
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.TelemetryService = void 0;
|
|
44
|
+
const common_1 = require("@nestjs/common");
|
|
45
|
+
/**
|
|
46
|
+
* Service to manage the graceful shutdown of OpenTelemetry.
|
|
47
|
+
*/
|
|
48
|
+
let TelemetryService = TelemetryService_1 = class TelemetryService {
|
|
49
|
+
logger = new common_1.Logger(TelemetryService_1.name);
|
|
50
|
+
/** Triggered when the NestJS module is being destroyed */
|
|
51
|
+
async onModuleDestroy() {
|
|
52
|
+
try {
|
|
53
|
+
/** Perform dynamic import to avoid premature barrel loading */
|
|
54
|
+
const { otelSDK } = await Promise.resolve().then(() => __importStar(require('../otel-sdk'))).catch(() => ({
|
|
55
|
+
otelSDK: null,
|
|
56
|
+
}));
|
|
57
|
+
if (!otelSDK)
|
|
58
|
+
return;
|
|
59
|
+
this.logger.log('Shutting down OpenTelemetry SDK...');
|
|
60
|
+
/** Flush all pending spans before process termination */
|
|
61
|
+
await otelSDK.shutdown();
|
|
62
|
+
this.logger.log('OpenTelemetry SDK shutdown complete');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
this.logger.error('OpenTelemetry shutdown error', err.stack);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.TelemetryService = TelemetryService;
|
|
70
|
+
exports.TelemetryService = TelemetryService = TelemetryService_1 = __decorate([
|
|
71
|
+
(0, common_1.Injectable)()
|
|
72
|
+
], TelemetryService);
|
|
73
|
+
//# sourceMappingURL=telemetry.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.service.js","sourceRoot":"","sources":["../../src/observability/telemetry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAqE;AAErE;;GAEG;AAEI,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IACV,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAE5D,0DAA0D;IAC1D,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kDAAO,aAAa,IAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3D,OAAO,EAAE,IAAI;aACd,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YACtD,yDAAyD;YACzD,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF,CAAA;AApBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAoB5B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Method decorator to wrap methods in an OpenTelemetry Span.
|
|
3
|
+
* Captures duration, parameters, and errors automatically.
|
|
4
|
+
*/
|
|
5
|
+
export declare function Traced(spanName?: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
6
|
+
//# sourceMappingURL=traced.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traced.decorator.d.ts","sourceRoot":"","sources":["../../src/observability/traced.decorator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,IACrB,QAAQ,GAAG,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBA4ClF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Traced = Traced;
|
|
4
|
+
const api_1 = require("@opentelemetry/api");
|
|
5
|
+
/**
|
|
6
|
+
* Method decorator to wrap methods in an OpenTelemetry Span.
|
|
7
|
+
* Captures duration, parameters, and errors automatically.
|
|
8
|
+
*/
|
|
9
|
+
function Traced(spanName) {
|
|
10
|
+
return function (target, propertyKey, descriptor) {
|
|
11
|
+
/** Keep reference to the original method */
|
|
12
|
+
const originalMethod = descriptor.value;
|
|
13
|
+
/** Initialize tracer with service metadata */
|
|
14
|
+
const tracer = api_1.trace.getTracer(process.env.OTEL_SERVICE_NAME || 'service', process.env.OTEL_SERVICE_VERSION || '1.0.0');
|
|
15
|
+
/** Override descriptor with traced logic */
|
|
16
|
+
descriptor.value = async function (...args) {
|
|
17
|
+
/** Use provided name or default to Class.Method */
|
|
18
|
+
const name = spanName || `${target.constructor.name}.${propertyKey}`;
|
|
19
|
+
/** Start an internal span for the method execution */
|
|
20
|
+
return tracer.startActiveSpan(name, { kind: api_1.SpanKind.INTERNAL }, async (span) => {
|
|
21
|
+
try {
|
|
22
|
+
/** Tag span with class and function details */
|
|
23
|
+
span.setAttributes({
|
|
24
|
+
'code.class': target.constructor.name,
|
|
25
|
+
'code.function': propertyKey,
|
|
26
|
+
});
|
|
27
|
+
/** Execute the original logic */
|
|
28
|
+
const result = await originalMethod.apply(this, args);
|
|
29
|
+
/** Mark span status as OK on success */
|
|
30
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
/** Record the exception and set error status on failure */
|
|
35
|
+
span.recordException(error);
|
|
36
|
+
span.setStatus({
|
|
37
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
38
|
+
message: error.message,
|
|
39
|
+
});
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
/** Ensure span is ended in all cases */
|
|
44
|
+
span.end();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
return descriptor;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=traced.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traced.decorator.js","sourceRoot":"","sources":["../../src/observability/traced.decorator.ts"],"names":[],"mappings":";;AAMA,wBA6CC;AAnDD,4CAAqE;AAErE;;;GAGG;AACH,SAAgB,MAAM,CAAC,QAAiB;IACtC,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;QAC/E,4CAA4C;QAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QACxC,8CAA8C;QAC9C,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,EAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAC5C,CAAC;QAEF,4CAA4C;QAC5C,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC/C,mDAAmD;YACnD,MAAM,IAAI,GAAG,QAAQ,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YAErE,sDAAsD;YACtD,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC9E,IAAI,CAAC;oBACH,+CAA+C;oBAC/C,IAAI,CAAC,aAAa,CAAC;wBACjB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;wBACrC,eAAe,EAAE,WAAW;qBAC7B,CAAC,CAAC;oBACH,iCAAiC;oBACjC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtD,wCAAwC;oBACxC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,2DAA2D;oBAC3D,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE,oBAAc,CAAC,KAAK;wBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;oBACH,MAAM,KAAK,CAAC;gBACd,CAAC;wBAAS,CAAC;oBACT,wCAAwC;oBACxC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Interceptor to automatically create spans for NestJS handlers.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TracingInterceptor implements NestInterceptor {
|
|
7
|
+
/** Initialize the tracer with service metadata */
|
|
8
|
+
private readonly tracer;
|
|
9
|
+
/** Initialize a meter for tracking request metrics */
|
|
10
|
+
private readonly meter;
|
|
11
|
+
private readonly requestCounter;
|
|
12
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tracing.interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.interceptor.d.ts","sourceRoot":"","sources":["../../src/observability/tracing.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAc,MAAM,MAAM,CAAC;AAM9C;;GAEG;AACH,qBACa,kBAAmB,YAAW,eAAe;IACxD,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGrB;IAEF,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAE5B;IAEH,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC;CA0FzE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TracingInterceptor = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const api_1 = require("@opentelemetry/api");
|
|
12
|
+
const rxjs_1 = require("rxjs");
|
|
13
|
+
const operators_1 = require("rxjs/operators");
|
|
14
|
+
const request_store_1 = require("../request-store");
|
|
15
|
+
const tenant_context_1 = require("../request-store/contexts/tenant-context");
|
|
16
|
+
const user_context_1 = require("../request-store/contexts/user-context");
|
|
17
|
+
/**
|
|
18
|
+
* Interceptor to automatically create spans for NestJS handlers.
|
|
19
|
+
*/
|
|
20
|
+
let TracingInterceptor = class TracingInterceptor {
|
|
21
|
+
/** Initialize the tracer with service metadata */
|
|
22
|
+
tracer = api_1.trace.getTracer(process.env.OTEL_SERVICE_NAME || 'service', process.env.OTEL_SERVICE_VERSION || '1.0.0');
|
|
23
|
+
/** Initialize a meter for tracking request metrics */
|
|
24
|
+
meter = api_1.metrics.getMeter('campx-observability');
|
|
25
|
+
requestCounter = this.meter.createCounter('app.request.count', {
|
|
26
|
+
description: 'Total number of incoming requests',
|
|
27
|
+
});
|
|
28
|
+
intercept(context, next) {
|
|
29
|
+
/** Increment the request counter for metrics proof */
|
|
30
|
+
this.requestCounter.add(1, {
|
|
31
|
+
'service.name': process.env.OTEL_SERVICE_NAME || 'unknown',
|
|
32
|
+
'context.type': context.getType(),
|
|
33
|
+
});
|
|
34
|
+
/** Extract target class and method for span naming */
|
|
35
|
+
const target = context.getClass().name;
|
|
36
|
+
const method = context.getHandler().name;
|
|
37
|
+
const spanName = `${target}.${method}`;
|
|
38
|
+
return new rxjs_1.Observable((observer) => {
|
|
39
|
+
/** Start an active span for the current execution context */
|
|
40
|
+
this.tracer.startActiveSpan(spanName, (span) => {
|
|
41
|
+
/** Inject the current traceId and spanId into RequestStore for log correlation */
|
|
42
|
+
const spanContext = span.spanContext();
|
|
43
|
+
if (spanContext) {
|
|
44
|
+
try {
|
|
45
|
+
(0, request_store_1.set)('traceId', spanContext.traceId);
|
|
46
|
+
(0, request_store_1.set)('spanId', spanContext.spanId);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
/** Handle case where RequestStore is not yet initialized */
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const type = context.getType();
|
|
53
|
+
/** Base attributes for all protocols */
|
|
54
|
+
span.setAttributes({
|
|
55
|
+
'code.class': target,
|
|
56
|
+
'code.function': method,
|
|
57
|
+
'context.type': type,
|
|
58
|
+
});
|
|
59
|
+
/** HTTP-specific attributes */
|
|
60
|
+
if (type === 'http') {
|
|
61
|
+
const req = context.switchToHttp().getRequest();
|
|
62
|
+
span.setAttributes({
|
|
63
|
+
'http.method': req.method ?? 'UNKNOWN',
|
|
64
|
+
'http.url': req.url ?? 'UNKNOWN',
|
|
65
|
+
'http.route': req.route?.path ?? req.url ?? 'UNKNOWN',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** RabbitMQ-specific attributes */
|
|
69
|
+
if (type === 'rpc') {
|
|
70
|
+
span.setAttributes({
|
|
71
|
+
'messaging.system': 'rabbitmq',
|
|
72
|
+
'messaging.destination': method,
|
|
73
|
+
'messaging.operation': 'process',
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** Handle the request stream and capture status/errors */
|
|
77
|
+
const subscription = next
|
|
78
|
+
.handle()
|
|
79
|
+
.pipe(
|
|
80
|
+
/** Set success status and enrich span with tenant/user context */
|
|
81
|
+
(0, operators_1.tap)(() => {
|
|
82
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
83
|
+
/** Read after RequestInterceptor has populated the store */
|
|
84
|
+
try {
|
|
85
|
+
const user = (0, user_context_1.getUserData)();
|
|
86
|
+
const tenant = (0, tenant_context_1.getTenantDetailsIfExists)();
|
|
87
|
+
if (user?.userId)
|
|
88
|
+
span.setAttribute('app.user_id', String(user.userId));
|
|
89
|
+
if (user?.id)
|
|
90
|
+
span.setAttribute('app.user_db_id', String(user.id));
|
|
91
|
+
if (tenant?.id)
|
|
92
|
+
span.setAttribute('app.tenant_id', tenant.id);
|
|
93
|
+
}
|
|
94
|
+
catch (_) { }
|
|
95
|
+
}),
|
|
96
|
+
/** Record exception and set error status on failure */
|
|
97
|
+
(0, operators_1.catchError)((err) => {
|
|
98
|
+
span.recordException(err);
|
|
99
|
+
span.setStatus({
|
|
100
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
101
|
+
message: err.message,
|
|
102
|
+
});
|
|
103
|
+
return (0, rxjs_1.throwError)(() => err);
|
|
104
|
+
}),
|
|
105
|
+
/** Ensure span is closed after execution finishes */
|
|
106
|
+
(0, operators_1.finalize)(() => {
|
|
107
|
+
span.end();
|
|
108
|
+
}))
|
|
109
|
+
.subscribe(observer);
|
|
110
|
+
return () => subscription.unsubscribe();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
exports.TracingInterceptor = TracingInterceptor;
|
|
116
|
+
exports.TracingInterceptor = TracingInterceptor = __decorate([
|
|
117
|
+
(0, common_1.Injectable)()
|
|
118
|
+
], TracingInterceptor);
|
|
119
|
+
//# sourceMappingURL=tracing.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.interceptor.js","sourceRoot":"","sources":["../../src/observability/tracing.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wrapper to handle lazy initialization of the SDK.
|
|
3
|
+
* This ensures variables from Secrets Manager/env are available.
|
|
4
|
+
*/
|
|
5
|
+
export declare const otelSDK: {
|
|
6
|
+
start: () => Promise<void>;
|
|
7
|
+
shutdown: () => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export default otelSDK;
|
|
10
|
+
//# sourceMappingURL=otel-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-sdk.d.ts","sourceRoot":"","sources":["../src/otel-sdk.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,eAAO,MAAM,OAAO;;;CAuFnB,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/dist/otel-sdk.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.otelSDK = void 0;
|
|
4
|
+
const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
|
|
5
|
+
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
6
|
+
const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
|
|
7
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
8
|
+
const sdk_node_1 = require("@opentelemetry/sdk-node");
|
|
9
|
+
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
10
|
+
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
11
|
+
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
12
|
+
const api_1 = require("@opentelemetry/api");
|
|
13
|
+
/**
|
|
14
|
+
* Isolated OpenTelemetry SDK initialization.
|
|
15
|
+
* ⚠️ DO NOT import this from index.ts or any barrel file.
|
|
16
|
+
*/
|
|
17
|
+
/** Set internal OTel logger to WARN to see critical connection issues */
|
|
18
|
+
api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.WARN);
|
|
19
|
+
let sdk = null;
|
|
20
|
+
/**
|
|
21
|
+
* Wrapper to handle lazy initialization of the SDK.
|
|
22
|
+
* This ensures variables from Secrets Manager/env are available.
|
|
23
|
+
*/
|
|
24
|
+
exports.otelSDK = {
|
|
25
|
+
start: async () => {
|
|
26
|
+
/** Master switch: if not enabled, do absolutely nothing */
|
|
27
|
+
if (process.env.OTEL_ENABLED !== 'true')
|
|
28
|
+
return;
|
|
29
|
+
if (sdk)
|
|
30
|
+
return;
|
|
31
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
32
|
+
/** Use OTLP only if a key is provided */
|
|
33
|
+
const useOtlp = !!process.env.SIGNOZ_INGESTION_KEY;
|
|
34
|
+
const samplingRatio = parseFloat(process.env.OTEL_SAMPLING_RATIO ?? (isProduction ? '0.1' : '1.0'));
|
|
35
|
+
const baseEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'https://ingest.in2.signoz.cloud:443';
|
|
36
|
+
/** Clean base URL by removing any /v1/traces suffix if accidentally provided */
|
|
37
|
+
const cleanBaseUrl = baseEndpoint.replace(/\/v1\/traces\/?$/, '').replace(/\/$/, '');
|
|
38
|
+
const commonHeaders = {
|
|
39
|
+
'signoz-ingestion-key': process.env.SIGNOZ_INGESTION_KEY,
|
|
40
|
+
...(process.env.OTEL_EXPORTER_OTLP_HEADERS ? JSON.parse(process.env.OTEL_EXPORTER_OTLP_HEADERS) : {}),
|
|
41
|
+
};
|
|
42
|
+
/** Configure Trace Exporter */
|
|
43
|
+
const traceExporter = useOtlp
|
|
44
|
+
? new exporter_trace_otlp_http_1.OTLPTraceExporter({
|
|
45
|
+
url: `${cleanBaseUrl}/v1/traces`,
|
|
46
|
+
headers: commonHeaders,
|
|
47
|
+
})
|
|
48
|
+
: new sdk_trace_node_1.ConsoleSpanExporter();
|
|
49
|
+
/** Configure Metric Reader if OTLP is enabled */
|
|
50
|
+
const metricReader = useOtlp
|
|
51
|
+
? new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
52
|
+
exporter: new exporter_metrics_otlp_http_1.OTLPMetricExporter({
|
|
53
|
+
url: `${cleanBaseUrl}/v1/metrics`,
|
|
54
|
+
headers: commonHeaders,
|
|
55
|
+
}),
|
|
56
|
+
exportIntervalMillis: 60000,
|
|
57
|
+
})
|
|
58
|
+
: undefined;
|
|
59
|
+
sdk = new sdk_node_1.NodeSDK({
|
|
60
|
+
resource: (0, resources_1.resourceFromAttributes)({
|
|
61
|
+
[semantic_conventions_1.ATTR_SERVICE_NAME]: process.env.OTEL_SERVICE_NAME || 'unknown-service',
|
|
62
|
+
[semantic_conventions_1.ATTR_SERVICE_VERSION]: process.env.OTEL_SERVICE_VERSION || '1.0.0',
|
|
63
|
+
'deployment.environment': process.env.NODE_ENV || 'development',
|
|
64
|
+
}),
|
|
65
|
+
traceExporter,
|
|
66
|
+
sampler: new sdk_trace_node_1.ParentBasedSampler({
|
|
67
|
+
root: new sdk_trace_node_1.TraceIdRatioBasedSampler(samplingRatio),
|
|
68
|
+
}),
|
|
69
|
+
spanProcessors: [
|
|
70
|
+
new sdk_trace_node_1.BatchSpanProcessor(traceExporter, {
|
|
71
|
+
maxExportBatchSize: useOtlp ? 200 : 50,
|
|
72
|
+
scheduledDelayMillis: useOtlp ? 2000 : 500,
|
|
73
|
+
exportTimeoutMillis: useOtlp ? 5000 : 2000,
|
|
74
|
+
maxQueueSize: useOtlp ? 2048 : 512,
|
|
75
|
+
}),
|
|
76
|
+
],
|
|
77
|
+
metricReader,
|
|
78
|
+
instrumentations: [
|
|
79
|
+
(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)({
|
|
80
|
+
'@opentelemetry/instrumentation-fs': { enabled: false },
|
|
81
|
+
'@opentelemetry/instrumentation-dns': { enabled: false },
|
|
82
|
+
'@opentelemetry/instrumentation-net': { enabled: false },
|
|
83
|
+
'@opentelemetry/instrumentation-express': { enabled: false },
|
|
84
|
+
'@opentelemetry/instrumentation-nestjs-core': { enabled: false },
|
|
85
|
+
'@opentelemetry/instrumentation-mongoose': { enabled: true },
|
|
86
|
+
'@opentelemetry/instrumentation-mysql2': { enabled: true },
|
|
87
|
+
'@opentelemetry/instrumentation-http': {
|
|
88
|
+
enabled: true,
|
|
89
|
+
ignoreIncomingRequestHook: (req) => ['/health', '/metrics', '/favicon.ico'].some((p) => req.url?.includes(p)),
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
sdk.start();
|
|
95
|
+
console.log(`[OTel] Observability started for ${process.env.OTEL_SERVICE_NAME} (Target: ${useOtlp ? 'SigNoz' : 'Console'})`);
|
|
96
|
+
},
|
|
97
|
+
shutdown: async () => {
|
|
98
|
+
if (sdk) {
|
|
99
|
+
await sdk.shutdown();
|
|
100
|
+
sdk = null;
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
exports.default = exports.otelSDK;
|
|
105
|
+
//# sourceMappingURL=otel-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-sdk.js","sourceRoot":"","sources":["../src/otel-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;EAgBlB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;CAUlC,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAEF,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;EAgBlB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;CAUlC,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAEF,eAAO,MAAM,aAAa,uBA6BxB,CAAC;AAEH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,yBAIzD"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -123,6 +123,12 @@ exports.rootEnvSchema = Joi.object({
|
|
|
123
123
|
AWS_S3_BUCKET_BASE_URL: Joi.string().required(),
|
|
124
124
|
AWS_CLOUD_FRONT_DISTRIBUTION_ID: Joi.string().required(),
|
|
125
125
|
RMQ_HOST: Joi.string().required(),
|
|
126
|
+
DB_LOGGING: Joi.string().optional().default('false'),
|
|
127
|
+
OTEL_ENABLED: Joi.string().optional().default('false'),
|
|
128
|
+
OTEL_SERVICE_NAME: Joi.string().optional(),
|
|
129
|
+
OTEL_EXPORTER_OTLP_ENDPOINT: Joi.string().optional().default('https://ingest.in2.signoz.cloud:443'),
|
|
130
|
+
SIGNOZ_INGESTION_KEY: Joi.string().optional(),
|
|
131
|
+
OTEL_SAMPLING_RATIO: Joi.string().optional().default('0.1'),
|
|
126
132
|
});
|
|
127
133
|
function appEnvSchema(props) {
|
|
128
134
|
if (!props)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@campxdev/server-shared",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.36",
|
|
4
4
|
"description": "Campx server shared files",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,6 +37,18 @@
|
|
|
37
37
|
"@nestjs/core": "^10.3.0",
|
|
38
38
|
"@nestjs/microservices": "^10.3.0",
|
|
39
39
|
"@nestjs/mongoose": "10.0.2",
|
|
40
|
+
"@opentelemetry/api": "^1.9.0",
|
|
41
|
+
"@opentelemetry/auto-instrumentations-node": "^0.70.1",
|
|
42
|
+
"@opentelemetry/core": "^2.5.1",
|
|
43
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.212.0",
|
|
44
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.212.0",
|
|
45
|
+
"@opentelemetry/instrumentation-amqplib": "^0.59.0",
|
|
46
|
+
"@opentelemetry/resources": "^2.5.1",
|
|
47
|
+
"@opentelemetry/sdk-metrics": "^2.5.1",
|
|
48
|
+
"@opentelemetry/sdk-node": "^0.212.0",
|
|
49
|
+
"@opentelemetry/sdk-trace-base": "^2.5.1",
|
|
50
|
+
"@opentelemetry/sdk-trace-node": "^2.5.1",
|
|
51
|
+
"@opentelemetry/semantic-conventions": "^1.40.0",
|
|
40
52
|
"axios": "^1.6.7",
|
|
41
53
|
"bcrypt": "^5.1.1",
|
|
42
54
|
"class-transformer": "^0.5.1",
|