@alacard-project/shared 1.1.1 → 1.1.4
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/constants/microservices.constants.d.ts +4 -0
- package/dist/constants/microservices.constants.js +4 -0
- package/dist/constants/microservices.constants.js.map +1 -1
- package/dist/contracts/card.contract.d.ts +98 -0
- package/dist/contracts/card.contract.js +3 -0
- package/dist/contracts/card.contract.js.map +1 -0
- package/dist/contracts/index.d.ts +3 -1
- package/dist/contracts/index.js +3 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/transaction.contract.d.ts +63 -0
- package/dist/contracts/transaction.contract.js +3 -0
- package/dist/contracts/transaction.contract.js.map +1 -0
- package/dist/dto/auth.dto.d.ts +3 -1
- package/dist/dto/auth.dto.js +11 -0
- package/dist/dto/auth.dto.js.map +1 -1
- package/dist/dto/index.d.ts +1 -0
- package/dist/dto/index.js +1 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/invoice.dto.d.ts +12 -0
- package/dist/dto/invoice.dto.js +62 -0
- package/dist/dto/invoice.dto.js.map +1 -0
- package/dist/enums/auth.enum.d.ts +2 -3
- package/dist/enums/auth.enum.js +2 -3
- package/dist/enums/auth.enum.js.map +1 -1
- package/dist/filters/global-exception.filter.d.ts +12 -0
- package/dist/filters/global-exception.filter.js +152 -0
- package/dist/filters/global-exception.filter.js.map +1 -0
- package/dist/filters/index.d.ts +1 -1
- package/dist/filters/index.js +1 -1
- package/dist/filters/index.js.map +1 -1
- package/dist/index.d.ts +14 -4
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/middleware/index.d.ts +2 -0
- package/dist/{interceptors → middleware}/index.js +2 -2
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/prisma-logging.middleware.d.ts +3 -0
- package/dist/middleware/prisma-logging.middleware.js +52 -0
- package/dist/middleware/prisma-logging.middleware.js.map +1 -0
- package/dist/middleware/tracing.middleware.d.ts +8 -0
- package/dist/middleware/tracing.middleware.js +33 -0
- package/dist/middleware/tracing.middleware.js.map +1 -0
- package/dist/resilience/circuit-breaker.service.d.ts +2 -3
- package/dist/resilience/circuit-breaker.service.js +10 -16
- package/dist/resilience/circuit-breaker.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/logger.interface.d.ts +6 -0
- package/dist/types/logger.interface.js +3 -0
- package/dist/types/logger.interface.js.map +1 -0
- package/dist/utils/app-logger.d.ts +11 -0
- package/dist/utils/app-logger.js +65 -0
- package/dist/utils/app-logger.js.map +1 -0
- package/dist/utils/app.utils.d.ts +4 -0
- package/dist/utils/app.utils.js +8 -1
- package/dist/utils/app.utils.js.map +1 -1
- package/dist/{filters/http-exception.filter.js → utils/filters.js} +3 -12
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/grpc-tracing-server.interceptor.d.ts +8 -0
- package/dist/utils/grpc-tracing-server.interceptor.js +48 -0
- package/dist/utils/grpc-tracing-server.interceptor.js.map +1 -0
- package/dist/utils/grpc-tracing.interceptor.d.ts +8 -0
- package/dist/utils/grpc-tracing.interceptor.js +35 -0
- package/dist/utils/grpc-tracing.interceptor.js.map +1 -0
- package/dist/utils/http-tracing.interceptor.d.ts +8 -0
- package/dist/utils/http-tracing.interceptor.js +35 -0
- package/dist/utils/http-tracing.interceptor.js.map +1 -0
- package/dist/{interceptors/transform.interceptor.d.ts → utils/interceptors.d.ts} +0 -1
- package/dist/{interceptors/transform.interceptor.js → utils/interceptors.js} +3 -3
- package/dist/utils/interceptors.js.map +1 -0
- package/dist/utils/proto-path.js +1 -1
- package/dist/utils/proto-path.js.map +1 -1
- package/dist/utils/tracing.module.d.ts +2 -0
- package/dist/{observability/metrics/metrics.module.js → utils/tracing.module.js} +10 -16
- package/dist/utils/tracing.module.js.map +1 -0
- package/dist/utils/tracing.service.d.ts +10 -0
- package/dist/utils/tracing.service.js +43 -0
- package/dist/utils/tracing.service.js.map +1 -0
- package/dist/utils/tracing.utils.js +7 -0
- package/dist/utils/tracing.utils.js.map +1 -0
- package/package.json +48 -46
- package/dist/config/base-config.service.d.ts +0 -25
- package/dist/config/base-config.service.js +0 -87
- package/dist/config/base-config.service.js.map +0 -1
- package/dist/constants/logging.constants.d.ts +0 -24
- package/dist/constants/logging.constants.js +0 -28
- package/dist/constants/logging.constants.js.map +0 -1
- package/dist/constants/monitoring.constants.d.ts +0 -51
- package/dist/constants/monitoring.constants.js +0 -55
- package/dist/constants/monitoring.constants.js.map +0 -1
- package/dist/constants/tokens.constants.d.ts +0 -6
- package/dist/constants/tokens.constants.js +0 -10
- package/dist/constants/tokens.constants.js.map +0 -1
- package/dist/filters/http-exception.filter.js.map +0 -1
- package/dist/interceptors/http-logging.interceptor.d.ts +0 -10
- package/dist/interceptors/http-logging.interceptor.js +0 -74
- package/dist/interceptors/http-logging.interceptor.js.map +0 -1
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/index.js.map +0 -1
- package/dist/interceptors/logging.interceptor.d.ts +0 -6
- package/dist/interceptors/logging.interceptor.js +0 -41
- package/dist/interceptors/logging.interceptor.js.map +0 -1
- package/dist/interceptors/transform.interceptor.js.map +0 -1
- package/dist/observability/index.d.ts +0 -2
- package/dist/observability/index.js +0 -19
- package/dist/observability/index.js.map +0 -1
- package/dist/observability/metrics/metrics.module.d.ts +0 -2
- package/dist/observability/metrics/metrics.module.js.map +0 -1
- package/dist/observability/tracing.js +0 -28
- package/dist/observability/tracing.js.map +0 -1
- package/dist/utils/logging-client.d.ts +0 -9
- package/dist/utils/logging-client.js +0 -58
- package/dist/utils/logging-client.js.map +0 -1
- package/dist/utils/prometheus.utils.d.ts +0 -9
- package/dist/utils/prometheus.utils.js +0 -66
- package/dist/utils/prometheus.utils.js.map +0 -1
- package/proto/auth.proto +0 -123
- package/proto/card.proto +0 -43
- package/proto/client.proto +0 -45
- package/proto/config.proto +0 -39
- package/proto/dbf.proto +0 -183
- package/proto/logging.proto +0 -143
- package/proto/partner.proto +0 -18
- package/proto/terminal.proto +0 -18
- package/proto/transaction.proto +0 -45
- package/proto/user.proto +0 -122
- package/src/constants/auth-config.constants.ts +0 -16
- package/src/constants/auth.constants.ts +0 -50
- package/src/constants/common.constants.ts +0 -16
- package/src/constants/env.constants.ts +0 -49
- package/src/constants/error-messages.ts +0 -10
- package/src/constants/grpc.constants.ts +0 -43
- package/src/constants/http.constants.ts +0 -11
- package/src/constants/index.ts +0 -11
- package/src/constants/logging-messages.constants.ts +0 -60
- package/src/constants/microservices.constants.ts +0 -62
- package/src/constants/queue.constants.ts +0 -8
- package/src/constants/routes.constants.ts +0 -21
- package/src/contracts/auth.contract.ts +0 -146
- package/src/contracts/config.contract.ts +0 -14
- package/src/contracts/index.ts +0 -14
- package/src/contracts/logging.contract.ts +0 -115
- package/src/contracts/token.contract.ts +0 -47
- package/src/decorators/index.ts +0 -3
- package/src/decorators/permissions.decorator.ts +0 -5
- package/src/decorators/roles.decorator.ts +0 -5
- package/src/decorators/scopes.decorator.ts +0 -4
- package/src/dto/account.dto.ts +0 -28
- package/src/dto/auth.dto.ts +0 -233
- package/src/dto/card.dto.ts +0 -64
- package/src/dto/client.dto.ts +0 -137
- package/src/dto/index.ts +0 -8
- package/src/dto/logging.dto.ts +0 -101
- package/src/dto/partner.dto.ts +0 -18
- package/src/dto/transaction.dto.ts +0 -52
- package/src/dto/user.dto.ts +0 -28
- package/src/enums/auth.enum.ts +0 -13
- package/src/enums/env.enum.ts +0 -7
- package/src/enums/error.enum.ts +0 -28
- package/src/enums/events.enum.ts +0 -22
- package/src/enums/health.enum.ts +0 -7
- package/src/enums/iam.enum.ts +0 -28
- package/src/enums/index.ts +0 -10
- package/src/enums/logging.enum.ts +0 -7
- package/src/enums/notification.enum.ts +0 -5
- package/src/enums/permission.enum.ts +0 -31
- package/src/enums/user.enum.ts +0 -27
- package/src/errors/app.error.ts +0 -33
- package/src/errors/error-map.ts +0 -105
- package/src/filters/http-exception.filter.ts +0 -49
- package/src/filters/index.ts +0 -2
- package/src/index.ts +0 -17
- package/src/interceptors/index.ts +0 -3
- package/src/interceptors/logging.interceptor.ts +0 -37
- package/src/interceptors/transform.interceptor.ts +0 -21
- package/src/observability/index.ts +0 -3
- package/src/observability/metrics/metrics.module.ts +0 -16
- package/src/observability/tracing.ts +0 -33
- package/src/resilience/circuit-breaker.service.ts +0 -46
- package/src/resilience/resilience.module.ts +0 -9
- package/src/types/auth.types.ts +0 -38
- package/src/types/common.types.ts +0 -18
- package/src/types/config.types.ts +0 -32
- package/src/types/iam.types.ts +0 -78
- package/src/types/index.ts +0 -6
- package/src/types/monitoring.types.ts +0 -77
- package/src/types/user.types.ts +0 -11
- package/src/utils/app.utils.ts +0 -52
- package/src/utils/health.utils.ts +0 -24
- package/src/utils/proto-path.ts +0 -21
- package/src/utils/user.utils.ts +0 -3
- package/tsconfig.json +0 -28
- /package/dist/{filters/http-exception.filter.d.ts → utils/filters.d.ts} +0 -0
- /package/dist/{observability/tracing.d.ts → utils/tracing.utils.d.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -14,6 +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
|
+
require("reflect-metadata");
|
|
17
18
|
__exportStar(require("./enums"), exports);
|
|
18
19
|
__exportStar(require("./constants"), exports);
|
|
19
20
|
__exportStar(require("./types"), exports);
|
|
@@ -26,9 +27,18 @@ __exportStar(require("./utils/proto-path"), exports);
|
|
|
26
27
|
__exportStar(require("./utils/user.utils"), exports);
|
|
27
28
|
__exportStar(require("./utils/app.utils"), exports);
|
|
28
29
|
__exportStar(require("./utils/health.utils"), exports);
|
|
29
|
-
__exportStar(require("./
|
|
30
|
-
__exportStar(require("./
|
|
31
|
-
__exportStar(require("./
|
|
32
|
-
__exportStar(require("./
|
|
30
|
+
__exportStar(require("./utils/tracing.utils"), exports);
|
|
31
|
+
__exportStar(require("./utils/tracing.service"), exports);
|
|
32
|
+
__exportStar(require("./utils/tracing.module"), exports);
|
|
33
|
+
__exportStar(require("./utils/grpc-tracing.interceptor"), exports);
|
|
34
|
+
__exportStar(require("./utils/http-tracing.interceptor"), exports);
|
|
35
|
+
__exportStar(require("./utils/grpc-tracing-server.interceptor"), exports);
|
|
33
36
|
__exportStar(require("./resilience/circuit-breaker.service"), exports);
|
|
37
|
+
__exportStar(require("./resilience/resilience.module"), exports);
|
|
38
|
+
__exportStar(require("./utils/filters"), exports);
|
|
39
|
+
__exportStar(require("./utils/interceptors"), exports);
|
|
40
|
+
__exportStar(require("./utils/app-logger"), exports);
|
|
41
|
+
__exportStar(require("./filters"), exports);
|
|
42
|
+
__exportStar(require("./middleware"), exports);
|
|
43
|
+
__exportStar(require("./types/logger.interface"), exports);
|
|
34
44
|
//# 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,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,+CAA6B;AAC7B,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,+CAA6B;AAC7B,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,yDAAuC;AACvC,mEAAiD;AACjD,mEAAiD;AACjD,0EAAwD;AACxD,uEAAqD;AACrD,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AAErC,qDAAmC;AACnC,4CAA0B;AAC1B,+CAA6B;AAC7B,2DAAyC"}
|
|
@@ -14,6 +14,6 @@ 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("./logging.
|
|
18
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./prisma-logging.middleware"), exports);
|
|
18
|
+
__exportStar(require("./tracing.middleware"), exports);
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,uDAAqC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPrismaLoggingMiddleware = createPrismaLoggingMiddleware;
|
|
4
|
+
function createPrismaLoggingMiddleware(logger, remoteLogger) {
|
|
5
|
+
const SLOW_QUERY_THRESHOLD_MS = 100;
|
|
6
|
+
return async (params, next) => {
|
|
7
|
+
const before = Date.now();
|
|
8
|
+
let result;
|
|
9
|
+
let error;
|
|
10
|
+
try {
|
|
11
|
+
result = await next(params);
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
error = e;
|
|
15
|
+
throw e;
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
const after = Date.now();
|
|
19
|
+
const duration = after - before;
|
|
20
|
+
const model = params.model;
|
|
21
|
+
const action = params.action;
|
|
22
|
+
const queryName = `${model}.${action}`;
|
|
23
|
+
const logMetadata = {
|
|
24
|
+
model,
|
|
25
|
+
action,
|
|
26
|
+
duration,
|
|
27
|
+
args: params.args,
|
|
28
|
+
};
|
|
29
|
+
if (error) {
|
|
30
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
31
|
+
logger.error(`[Prisma Failure] ${queryName} - ${duration}ms | Error: ${errorMessage}`);
|
|
32
|
+
if (remoteLogger) {
|
|
33
|
+
remoteLogger.error(`Prisma Query Failed: ${queryName}`, 'PrismaClient', {
|
|
34
|
+
...logMetadata,
|
|
35
|
+
error: errorMessage,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (duration >= SLOW_QUERY_THRESHOLD_MS) {
|
|
40
|
+
logger.warn(`[Slow Query] ${queryName} took ${duration}ms`);
|
|
41
|
+
if (remoteLogger) {
|
|
42
|
+
remoteLogger.warn(`Slow Database Query: ${queryName}`, 'PrismaClient', logMetadata);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
logger.debug(`[Query] ${queryName} took ${duration}ms`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=prisma-logging.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-logging.middleware.js","sourceRoot":"","sources":["../../src/middleware/prisma-logging.middleware.ts"],"names":[],"mappings":";;AAQA,sEAmDC;AAnDD,SAAgB,6BAA6B,CACzC,MAAc,EACd,YAA4B;IAE5B,MAAM,uBAAuB,GAAG,GAAG,CAAC;IAEpC,OAAO,KAAK,EAAE,MAAW,EAAE,IAAmC,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,MAAW,CAAC;QAChB,IAAI,KAAU,CAAC;QAEf,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,CAAC,CAAC;QACZ,CAAC;gBAAS,CAAC;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;YAEvC,MAAM,WAAW,GAAG;gBAChB,KAAK;gBACL,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,MAAM,QAAQ,eAAe,YAAY,EAAE,CAAC,CAAC;gBACvF,IAAI,YAAY,EAAE,CAAC;oBACf,YAAY,CAAC,KAAK,CAAC,wBAAwB,SAAS,EAAE,EAAE,cAAc,EAAE;wBACpE,GAAG,WAAW;wBACd,KAAK,EAAE,YAAY;qBACtB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;iBAAM,IAAI,QAAQ,IAAI,uBAAuB,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,gBAAgB,SAAS,SAAS,QAAQ,IAAI,CAAC,CAAC;gBAC5D,IAAI,YAAY,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,CAAC,wBAAwB,SAAS,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;gBACxF,CAAC;YACL,CAAC;iBAAM,CAAC;gBAEJ,MAAM,CAAC,KAAK,CAAC,WAAW,SAAS,SAAS,QAAQ,IAAI,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import { Request, Response, NextFunction } from 'express';
|
|
3
|
+
import { TracingService } from '../utils/tracing.service';
|
|
4
|
+
export declare class TracingMiddleware implements NestMiddleware {
|
|
5
|
+
private readonly tracingService;
|
|
6
|
+
constructor(tracingService: TracingService);
|
|
7
|
+
use(req: Request, res: Response, next: NextFunction): void;
|
|
8
|
+
}
|
|
@@ -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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TracingMiddleware = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const tracing_service_1 = require("../utils/tracing.service");
|
|
15
|
+
let TracingMiddleware = class TracingMiddleware {
|
|
16
|
+
constructor(tracingService) {
|
|
17
|
+
this.tracingService = tracingService;
|
|
18
|
+
}
|
|
19
|
+
use(req, res, next) {
|
|
20
|
+
const traceId = req.headers['x-request-id'] || this.tracingService.generateTraceId();
|
|
21
|
+
res.setHeader('x-request-id', traceId);
|
|
22
|
+
tracing_service_1.TracingService.getStorage().run(new Map(), () => {
|
|
23
|
+
this.tracingService.setTraceId(traceId);
|
|
24
|
+
next();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.TracingMiddleware = TracingMiddleware;
|
|
29
|
+
exports.TracingMiddleware = TracingMiddleware = __decorate([
|
|
30
|
+
(0, common_1.Injectable)(),
|
|
31
|
+
__metadata("design:paramtypes", [tracing_service_1.TracingService])
|
|
32
|
+
], TracingMiddleware);
|
|
33
|
+
//# sourceMappingURL=tracing.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.middleware.js","sourceRoot":"","sources":["../../src/middleware/tracing.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AAE5D,8DAA0D;AAGnD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC1B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/D,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAW,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAG/F,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAGvC,gCAAc,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAfY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEoC,gCAAc;GADlD,iBAAiB,CAe7B"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import CircuitBreaker
|
|
1
|
+
import CircuitBreaker from 'opossum';
|
|
2
2
|
export declare class CircuitBreakerService {
|
|
3
3
|
private readonly logger;
|
|
4
4
|
private readonly breakers;
|
|
5
|
-
execute<T>(key: string,
|
|
6
|
-
private bindEvents;
|
|
5
|
+
execute<T>(key: string, fn: () => Promise<T>, options?: CircuitBreaker.Options): Promise<T>;
|
|
7
6
|
}
|
|
@@ -9,33 +9,27 @@ var CircuitBreakerService_1;
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.CircuitBreakerService = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
const
|
|
12
|
+
const opossum_1 = require("opossum");
|
|
13
13
|
let CircuitBreakerService = CircuitBreakerService_1 = class CircuitBreakerService {
|
|
14
14
|
constructor() {
|
|
15
15
|
this.logger = new common_1.Logger(CircuitBreakerService_1.name);
|
|
16
16
|
this.breakers = new Map();
|
|
17
17
|
}
|
|
18
|
-
async execute(key,
|
|
18
|
+
async execute(key, fn, options = {}) {
|
|
19
19
|
let breaker = this.breakers.get(key);
|
|
20
20
|
if (!breaker) {
|
|
21
|
-
|
|
22
|
-
timeout:
|
|
21
|
+
breaker = new opossum_1.default(fn, {
|
|
22
|
+
timeout: 10000,
|
|
23
23
|
errorThresholdPercentage: 50,
|
|
24
|
-
resetTimeout:
|
|
24
|
+
resetTimeout: 30000,
|
|
25
25
|
...options,
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
breaker
|
|
29
|
-
this.
|
|
26
|
+
});
|
|
27
|
+
breaker.on('open', () => this.logger.warn(`Circuit breaker [${key}] is OPEN`));
|
|
28
|
+
breaker.on('halfOpen', () => this.logger.log(`Circuit breaker [${key}] is HALF_OPEN`));
|
|
29
|
+
breaker.on('close', () => this.logger.log(`Circuit breaker [${key}] is CLOSED`));
|
|
30
30
|
this.breakers.set(key, breaker);
|
|
31
31
|
}
|
|
32
|
-
return breaker.fire(
|
|
33
|
-
}
|
|
34
|
-
bindEvents(breaker, key) {
|
|
35
|
-
breaker.on('open', () => this.logger.warn(`Circuit Breaker OPEN for ${key}`));
|
|
36
|
-
breaker.on('halfOpen', () => this.logger.log(`Circuit Breaker HALF-OPEN for ${key}`));
|
|
37
|
-
breaker.on('close', () => this.logger.log(`Circuit Breaker CLOSED for ${key}`));
|
|
38
|
-
breaker.on('fallback', () => this.logger.warn(`Circuit Breaker FALLBACK for ${key}`));
|
|
32
|
+
return breaker.fire();
|
|
39
33
|
}
|
|
40
34
|
};
|
|
41
35
|
exports.CircuitBreakerService = CircuitBreakerService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.service.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"circuit-breaker.service.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAqC;AAG9B,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAA3B;QACc,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,aAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAsBlE,CAAC;IApBG,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,EAAoB,EAAE,UAAkC,EAAE;QACpF,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,IAAI,iBAAc,CAAC,EAAE,EAAE;gBAC7B,OAAO,EAAE,KAAK;gBACd,wBAAwB,EAAE,EAAE;gBAC5B,YAAY,EAAE,KAAK;gBACnB,GAAG,OAAO;aACb,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC;YAEjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,EAAgB,CAAC;IACxC,CAAC;CACJ,CAAA;AAxBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAwBjC"}
|