@saihu/common 1.1.65 → 1.1.67

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,3 +1,4 @@
1
1
  export * from './transform.interceptor';
2
2
  export * from './operlog.interceptor';
3
+ export * from './rpc-error.interceptor';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./transform.interceptor"), exports);
18
18
  __exportStar(require("./operlog.interceptor"), exports);
19
+ __exportStar(require("./rpc-error.interceptor"), exports);
@@ -0,0 +1,7 @@
1
+ import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ export declare class RpcErrorInterceptor implements NestInterceptor {
4
+ private readonly logger;
5
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
6
+ }
7
+ //# sourceMappingURL=rpc-error.interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-error.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/rpc-error.interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAc,MAAM,MAAM,CAAC;AAK9C,qBACa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC;CA+DzE"}
@@ -0,0 +1,70 @@
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 RpcErrorInterceptor_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RpcErrorInterceptor = void 0;
11
+ // @saihu/common/src/interceptors/rpc-error.interceptor.ts
12
+ const common_1 = require("@nestjs/common");
13
+ const rxjs_1 = require("rxjs");
14
+ const operators_1 = require("rxjs/operators");
15
+ const microservices_1 = require("@nestjs/microservices");
16
+ const base_res_dto_1 = require("../dto/base-res.dto");
17
+ let RpcErrorInterceptor = RpcErrorInterceptor_1 = class RpcErrorInterceptor {
18
+ constructor() {
19
+ this.logger = new common_1.Logger(RpcErrorInterceptor_1.name);
20
+ }
21
+ intercept(context, next) {
22
+ console.log('=== RpcErrorInterceptor: intercept called ===');
23
+ console.log('Context type:', context.getType());
24
+ // Only intercept RPC context
25
+ if (context.getType() !== 'rpc') {
26
+ console.log('Not RPC context, skipping');
27
+ return next.handle();
28
+ }
29
+ console.log('RPC context, attaching error handler');
30
+ return next.handle().pipe((0, operators_1.catchError)((error) => {
31
+ var _a, _b;
32
+ console.log('=== RpcErrorInterceptor: ERROR CAUGHT ===');
33
+ console.log('Error type:', (_a = error === null || error === void 0 ? void 0 : error.constructor) === null || _a === void 0 ? void 0 : _a.name);
34
+ console.log('Error instanceof BaseError:', error instanceof base_res_dto_1.BaseError);
35
+ console.log('Error instanceof RpcException:', error instanceof microservices_1.RpcException);
36
+ console.log('Error.name:', error === null || error === void 0 ? void 0 : error.name);
37
+ console.log('Error.code:', error === null || error === void 0 ? void 0 : error.code);
38
+ console.log('Error.message:', error === null || error === void 0 ? void 0 : error.message);
39
+ console.log('Error:', error);
40
+ // Transform BaseError to RpcException
41
+ if (error instanceof base_res_dto_1.BaseError) {
42
+ const payload = {
43
+ code: error.code,
44
+ msg: error.message,
45
+ data: (_b = error.data) !== null && _b !== void 0 ? _b : null,
46
+ };
47
+ console.log('Transforming BaseError to RpcException with payload:', payload);
48
+ this.logger.warn(`BaseError transformed: [${payload.code}] ${payload.msg}`);
49
+ return (0, rxjs_1.throwError)(() => new microservices_1.RpcException(payload));
50
+ }
51
+ // Already an RpcException, pass through
52
+ if (error instanceof microservices_1.RpcException) {
53
+ console.log('Already RpcException, passing through');
54
+ return (0, rxjs_1.throwError)(() => error);
55
+ }
56
+ // Transform other errors to generic RpcException
57
+ console.log('Unknown error type, wrapping as 500');
58
+ this.logger.error('Unhandled RPC error:', error);
59
+ return (0, rxjs_1.throwError)(() => new microservices_1.RpcException({
60
+ code: 500,
61
+ msg: (error === null || error === void 0 ? void 0 : error.message) || 'Internal server error',
62
+ data: null,
63
+ }));
64
+ }));
65
+ }
66
+ };
67
+ exports.RpcErrorInterceptor = RpcErrorInterceptor;
68
+ exports.RpcErrorInterceptor = RpcErrorInterceptor = RpcErrorInterceptor_1 = __decorate([
69
+ (0, common_1.Injectable)()
70
+ ], RpcErrorInterceptor);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saihu/common",
3
- "version": "1.1.65",
3
+ "version": "1.1.67",
4
4
  "description": "Common utilities for NestJS applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",