@xfilecom/core-sdk 1.4.2 → 1.4.3

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.
@@ -28,6 +28,7 @@ export interface CoreModuleOptions {
28
28
  };
29
29
  filters?: {
30
30
  exception?: boolean | ExceptionFilterOptions;
31
+ rpcException?: boolean;
31
32
  };
32
33
  serviceType?: 'microservice' | 'http-api' | 'hybrid';
33
34
  }
@@ -16,6 +16,7 @@ const error_handling_interceptor_1 = require("./interceptors/error-handling.inte
16
16
  const response_transform_interceptor_1 = require("./interceptors/response-transform.interceptor");
17
17
  const database_check_interceptor_1 = require("./interceptors/database-check.interceptor");
18
18
  const exception_filter_1 = require("./filters/exception.filter");
19
+ const rpc_response_exception_filter_1 = require("./filters/rpc-response-exception.filter");
19
20
  const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
20
21
  const roles_guard_1 = require("./guards/roles.guard");
21
22
  const controller_helpers_1 = require("./utils/controller.helpers");
@@ -91,6 +92,12 @@ let CoreModule = CoreModule_1 = class CoreModule {
91
92
  useValue: new exception_filter_1.AllExceptionsFilter(filterOptions),
92
93
  });
93
94
  }
95
+ if (options.filters?.rpcException === true) {
96
+ providers.push({
97
+ provide: core_1.APP_FILTER,
98
+ useClass: rpc_response_exception_filter_1.RpcResponseExceptionFilter,
99
+ });
100
+ }
94
101
  if (options.guards?.jwt === true) {
95
102
  try {
96
103
  const { ConfigValidator } = require('./utils/config.validator');
@@ -140,7 +147,7 @@ let CoreModule = CoreModule_1 = class CoreModule {
140
147
  },
141
148
  response: { commonResponse: false, ...options.response },
142
149
  guards: { jwt: false, ...options.guards },
143
- filters: { exception: true, ...options.filters },
150
+ filters: { exception: false, rpcException: true, ...options.filters },
144
151
  database: options.database,
145
152
  jwt: options.jwt,
146
153
  });
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ArgumentsHost } from '@nestjs/common';
2
+ import { BaseRpcExceptionFilter } from '@nestjs/microservices';
3
+ import { Observable } from 'rxjs';
4
+ export declare class RpcResponseExceptionFilter extends BaseRpcExceptionFilter {
5
+ catch(exception: unknown, host: ArgumentsHost): Observable<unknown>;
6
+ }
@@ -0,0 +1,24 @@
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.RpcResponseExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const microservices_1 = require("@nestjs/microservices");
12
+ const rxjs_1 = require("rxjs");
13
+ const rpc_exception_utils_1 = require("../utils/rpc-exception.utils");
14
+ let RpcResponseExceptionFilter = class RpcResponseExceptionFilter extends microservices_1.BaseRpcExceptionFilter {
15
+ catch(exception, host) {
16
+ const payload = (0, rpc_exception_utils_1.toRpcPayload)(exception);
17
+ return (0, rxjs_1.throwError)(() => new microservices_1.RpcException(payload));
18
+ }
19
+ };
20
+ exports.RpcResponseExceptionFilter = RpcResponseExceptionFilter;
21
+ exports.RpcResponseExceptionFilter = RpcResponseExceptionFilter = __decorate([
22
+ (0, common_1.Catch)()
23
+ ], RpcResponseExceptionFilter);
24
+ //# sourceMappingURL=rpc-response-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-response-exception.filter.js","sourceRoot":"","sources":["../../src/filters/rpc-response-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsD;AACtD,yDAA6E;AAC7E,+BAA8C;AAC9C,sEAA4D;AAWrD,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,sCAAsB;IACpE,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAC3C,MAAM,OAAO,GAAG,IAAA,kCAAY,EAAC,SAAS,CAAC,CAAC;QACxC,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AALY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,cAAK,GAAE;GACK,0BAA0B,CAKtC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './utils/controller.helpers';
6
6
  export { CommonResponseDto, CommonErrorDto, PaginationMeta, ResponseMeta } from './utils/controller.helpers';
7
7
  export * from './utils/service.helpers';
8
8
  export * from './utils/error.utils';
9
+ export { toRpcPayload, exceptionToResponse, type RpcResponsePayload, } from './utils/rpc-exception.utils';
9
10
  export * from './utils/auth.helpers';
10
11
  export * from './utils/logger.helpers';
11
12
  export { ILogWriter, ConsoleLogWriter, FileLogWriter, FileLogWriterOptions, LogLevelName, LOG_LEVEL_ORDER, isLevelEnabled, } from './utils/logger.helpers';
@@ -19,6 +20,7 @@ export * from './guards/roles.guard';
19
20
  export { AllExceptionsFilter, ExceptionFilterOptions } from './filters/exception.filter';
20
21
  export { I18nExceptionFilter, type I18nMessageShape, } from './filters/i18n-exception.filter';
21
22
  export { MicroserviceGatewayExceptionFilter } from './filters/microservice-gateway-exception.filter';
23
+ export { RpcResponseExceptionFilter } from './filters/rpc-response-exception.filter';
22
24
  export * from './decorators/public.decorator';
23
25
  export { User, JwtUser } from './decorators/user.decorator';
24
26
  export { Roles, ROLES_KEY } from './decorators/roles.decorator';
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ 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
- exports.findUserByLookupHash = exports.getEncryptionKey = exports.getOptionalSecret = exports.compareLookupHash = exports.lookupHash = exports.compareByKey = exports.hashByKey = exports.getProfileConfig = exports.BUILT_IN_NORMALIZERS = exports.digitsNormalizer = exports.emailNormalizer = exports.compareEmail = exports.hashEmail = exports.compareValue = exports.hashValue = exports.PBKDF2_SALT_BYTES = exports.PBKDF2_DEFAULT_DIGEST = exports.PBKDF2_DEFAULT_KEYLEN = exports.PBKDF2_DEFAULT_ITERATIONS = exports.deriveKeySha256 = exports.pbkdf2VerifyPassword = exports.pbkdf2HashPassword = exports.DEFAULT_CONFIG_ROOT_CANDIDATES = exports.createConfigLoader = exports.resolveConfigRootDir = exports.CONFIG_SOURCE_ENV_KEY = exports.ENV_CONFIG_FILENAME_PATTERN = exports.DEFAULT_CONFIG_FILENAMES = exports.loadApplicationYamlSync = exports.loadApplicationYaml = exports.getLoggingConfigFromEnv = exports.isProd = exports.isDev = exports.currentAppEnv = exports.isStaging = exports.isProduction = exports.isDevelopment = exports.getAppEnv = exports.ROLES_KEY = exports.Roles = exports.User = exports.MicroserviceGatewayExceptionFilter = exports.I18nExceptionFilter = exports.AllExceptionsFilter = exports.isLevelEnabled = exports.LOG_LEVEL_ORDER = exports.FileLogWriter = exports.ConsoleLogWriter = exports.CommonErrorDto = exports.CommonResponseDto = void 0;
18
- exports.authenticateWithHashLookup = void 0;
17
+ exports.compareLookupHash = exports.lookupHash = exports.compareByKey = exports.hashByKey = exports.getProfileConfig = exports.BUILT_IN_NORMALIZERS = exports.digitsNormalizer = exports.emailNormalizer = exports.compareEmail = exports.hashEmail = exports.compareValue = exports.hashValue = exports.PBKDF2_SALT_BYTES = exports.PBKDF2_DEFAULT_DIGEST = exports.PBKDF2_DEFAULT_KEYLEN = exports.PBKDF2_DEFAULT_ITERATIONS = exports.deriveKeySha256 = exports.pbkdf2VerifyPassword = exports.pbkdf2HashPassword = exports.DEFAULT_CONFIG_ROOT_CANDIDATES = exports.createConfigLoader = exports.resolveConfigRootDir = exports.CONFIG_SOURCE_ENV_KEY = exports.ENV_CONFIG_FILENAME_PATTERN = exports.DEFAULT_CONFIG_FILENAMES = exports.loadApplicationYamlSync = exports.loadApplicationYaml = exports.getLoggingConfigFromEnv = exports.isProd = exports.isDev = exports.currentAppEnv = exports.isStaging = exports.isProduction = exports.isDevelopment = exports.getAppEnv = exports.ROLES_KEY = exports.Roles = exports.User = exports.RpcResponseExceptionFilter = exports.MicroserviceGatewayExceptionFilter = exports.I18nExceptionFilter = exports.AllExceptionsFilter = exports.isLevelEnabled = exports.LOG_LEVEL_ORDER = exports.FileLogWriter = exports.ConsoleLogWriter = exports.exceptionToResponse = exports.toRpcPayload = exports.CommonErrorDto = exports.CommonResponseDto = void 0;
18
+ exports.authenticateWithHashLookup = exports.findUserByLookupHash = exports.getEncryptionKey = exports.getOptionalSecret = void 0;
19
19
  __exportStar(require("./core.module"), exports);
20
20
  __exportStar(require("./database/database.module"), exports);
21
21
  __exportStar(require("./database/database.service"), exports);
@@ -26,6 +26,9 @@ Object.defineProperty(exports, "CommonResponseDto", { enumerable: true, get: fun
26
26
  Object.defineProperty(exports, "CommonErrorDto", { enumerable: true, get: function () { return controller_helpers_1.CommonErrorDto; } });
27
27
  __exportStar(require("./utils/service.helpers"), exports);
28
28
  __exportStar(require("./utils/error.utils"), exports);
29
+ var rpc_exception_utils_1 = require("./utils/rpc-exception.utils");
30
+ Object.defineProperty(exports, "toRpcPayload", { enumerable: true, get: function () { return rpc_exception_utils_1.toRpcPayload; } });
31
+ Object.defineProperty(exports, "exceptionToResponse", { enumerable: true, get: function () { return rpc_exception_utils_1.exceptionToResponse; } });
29
32
  __exportStar(require("./utils/auth.helpers"), exports);
30
33
  __exportStar(require("./utils/logger.helpers"), exports);
31
34
  var logger_helpers_1 = require("./utils/logger.helpers");
@@ -45,6 +48,8 @@ var i18n_exception_filter_1 = require("./filters/i18n-exception.filter");
45
48
  Object.defineProperty(exports, "I18nExceptionFilter", { enumerable: true, get: function () { return i18n_exception_filter_1.I18nExceptionFilter; } });
46
49
  var microservice_gateway_exception_filter_1 = require("./filters/microservice-gateway-exception.filter");
47
50
  Object.defineProperty(exports, "MicroserviceGatewayExceptionFilter", { enumerable: true, get: function () { return microservice_gateway_exception_filter_1.MicroserviceGatewayExceptionFilter; } });
51
+ var rpc_response_exception_filter_1 = require("./filters/rpc-response-exception.filter");
52
+ Object.defineProperty(exports, "RpcResponseExceptionFilter", { enumerable: true, get: function () { return rpc_response_exception_filter_1.RpcResponseExceptionFilter; } });
48
53
  __exportStar(require("./decorators/public.decorator"), exports);
49
54
  var user_decorator_1 = require("./decorators/user.decorator");
50
55
  Object.defineProperty(exports, "User", { enumerable: true, get: function () { return user_decorator_1.User; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,gDAA8B;AAG9B,6DAA2C;AAC3C,8DAA4C;AAC5C,4DAA0C;AAG1C,6DAA2C;AAC3C,iEAKoC;AAJlC,uHAAA,iBAAiB,OAAA;AACjB,oHAAA,cAAc,OAAA;AAIhB,0DAAwC;AACxC,sDAAoC;AACpC,uDAAqC;AACrC,yDAAuC;AACvC,yDAQgC;AAN9B,kHAAA,gBAAgB,OAAA;AAChB,+GAAA,aAAa,OAAA;AAGb,iHAAA,eAAe,OAAA;AACf,gHAAA,cAAc,OAAA;AAIhB,qEAAmD;AAEnD,4EAA0D;AAC1D,gFAA8D;AAC9D,4EAA0D;AAG1D,0DAAwC;AACxC,uDAAqC;AAGrC,+DAAyF;AAAhF,uHAAA,mBAAmB,OAAA;AAC5B,yEAGyC;AAFvC,4HAAA,mBAAmB,OAAA;AAGrB,yGAAqG;AAA5F,2JAAA,kCAAkC,OAAA;AAG3C,gEAA8C;AAC9C,8DAA4D;AAAnD,sGAAA,IAAI,OAAA;AACb,gEAAgE;AAAvD,wGAAA,KAAK,OAAA;AAAE,4GAAA,SAAS,OAAA;AAGzB,2DAAyC;AAGzC,+CAS2B;AARzB,sGAAA,SAAS,OAAA;AACT,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AACT,0GAAA,aAAa,OAAA;AACb,kGAAA,KAAK,OAAA;AACL,mGAAA,MAAM,OAAA;AAKR,yDAAiE;AAAxD,yHAAA,uBAAuB,OAAA;AAGhC,iEAQoC;AAPlC,yHAAA,mBAAmB,OAAA;AACnB,6HAAA,uBAAuB,OAAA;AAEvB,8HAAA,wBAAwB,OAAA;AACxB,iIAAA,2BAA2B,OAAA;AAC3B,2HAAA,qBAAqB,OAAA;AAKvB,mEAOqC;AANnC,2HAAA,oBAAoB,OAAA;AACpB,yHAAA,kBAAkB,OAAA;AAClB,qIAAA,8BAA8B,OAAA;AAOhC,qDAS8B;AAR5B,kHAAA,kBAAkB,OAAA;AAClB,oHAAA,oBAAoB,OAAA;AACpB,+GAAA,eAAe,OAAA;AACf,yHAAA,yBAAyB,OAAA;AACzB,qHAAA,qBAAqB,OAAA;AACrB,qHAAA,qBAAqB,OAAA;AACrB,iHAAA,iBAAiB,OAAA;AAKnB,2EAgByC;AAfvC,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,0HAAA,eAAe,OAAA;AACf,2HAAA,gBAAgB,OAAA;AAChB,+HAAA,oBAAoB,OAAA;AACpB,2HAAA,gBAAgB,OAAA;AAChB,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,qHAAA,UAAU,OAAA;AACV,4HAAA,iBAAiB,OAAA;AAOnB,mEAKqC;AAJnC,wHAAA,iBAAiB,OAAA;AACjB,uHAAA,gBAAgB,OAAA;AAMlB,+DAMmC;AALjC,yHAAA,oBAAoB,OAAA;AACpB,+HAAA,0BAA0B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,gDAA8B;AAG9B,6DAA2C;AAC3C,8DAA4C;AAC5C,4DAA0C;AAG1C,6DAA2C;AAC3C,iEAKoC;AAJlC,uHAAA,iBAAiB,OAAA;AACjB,oHAAA,cAAc,OAAA;AAIhB,0DAAwC;AACxC,sDAAoC;AACpC,mEAIqC;AAHnC,mHAAA,YAAY,OAAA;AACZ,0HAAA,mBAAmB,OAAA;AAGrB,uDAAqC;AACrC,yDAAuC;AACvC,yDAQgC;AAN9B,kHAAA,gBAAgB,OAAA;AAChB,+GAAA,aAAa,OAAA;AAGb,iHAAA,eAAe,OAAA;AACf,gHAAA,cAAc,OAAA;AAIhB,qEAAmD;AAEnD,4EAA0D;AAC1D,gFAA8D;AAC9D,4EAA0D;AAG1D,0DAAwC;AACxC,uDAAqC;AAGrC,+DAAyF;AAAhF,uHAAA,mBAAmB,OAAA;AAC5B,yEAGyC;AAFvC,4HAAA,mBAAmB,OAAA;AAGrB,yGAAqG;AAA5F,2JAAA,kCAAkC,OAAA;AAC3C,yFAAqF;AAA5E,2IAAA,0BAA0B,OAAA;AAGnC,gEAA8C;AAC9C,8DAA4D;AAAnD,sGAAA,IAAI,OAAA;AACb,gEAAgE;AAAvD,wGAAA,KAAK,OAAA;AAAE,4GAAA,SAAS,OAAA;AAGzB,2DAAyC;AAGzC,+CAS2B;AARzB,sGAAA,SAAS,OAAA;AACT,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AACT,0GAAA,aAAa,OAAA;AACb,kGAAA,KAAK,OAAA;AACL,mGAAA,MAAM,OAAA;AAKR,yDAAiE;AAAxD,yHAAA,uBAAuB,OAAA;AAGhC,iEAQoC;AAPlC,yHAAA,mBAAmB,OAAA;AACnB,6HAAA,uBAAuB,OAAA;AAEvB,8HAAA,wBAAwB,OAAA;AACxB,iIAAA,2BAA2B,OAAA;AAC3B,2HAAA,qBAAqB,OAAA;AAKvB,mEAOqC;AANnC,2HAAA,oBAAoB,OAAA;AACpB,yHAAA,kBAAkB,OAAA;AAClB,qIAAA,8BAA8B,OAAA;AAOhC,qDAS8B;AAR5B,kHAAA,kBAAkB,OAAA;AAClB,oHAAA,oBAAoB,OAAA;AACpB,+GAAA,eAAe,OAAA;AACf,yHAAA,yBAAyB,OAAA;AACzB,qHAAA,qBAAqB,OAAA;AACrB,qHAAA,qBAAqB,OAAA;AACrB,iHAAA,iBAAiB,OAAA;AAKnB,2EAgByC;AAfvC,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,0HAAA,eAAe,OAAA;AACf,2HAAA,gBAAgB,OAAA;AAChB,+HAAA,oBAAoB,OAAA;AACpB,2HAAA,gBAAgB,OAAA;AAChB,oHAAA,SAAS,OAAA;AACT,uHAAA,YAAY,OAAA;AACZ,qHAAA,UAAU,OAAA;AACV,4HAAA,iBAAiB,OAAA;AAOnB,mEAKqC;AAJnC,wHAAA,iBAAiB,OAAA;AACjB,uHAAA,gBAAgB,OAAA;AAMlB,+DAMmC;AALjC,yHAAA,oBAAoB,OAAA;AACpB,+HAAA,0BAA0B,OAAA"}
@@ -0,0 +1,7 @@
1
+ export interface RpcResponsePayload {
2
+ code: number;
3
+ data: null;
4
+ error: string;
5
+ }
6
+ export declare function toRpcPayload(exception: unknown): RpcResponsePayload;
7
+ export declare function exceptionToResponse(exception: unknown): RpcResponsePayload;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRpcPayload = toRpcPayload;
4
+ exports.exceptionToResponse = exceptionToResponse;
5
+ function normalizeMessage(message) {
6
+ if (typeof message === 'string')
7
+ return message;
8
+ if (message != null && typeof message === 'object' && 'message' in message) {
9
+ const m = message.message;
10
+ if (typeof m === 'string')
11
+ return m;
12
+ if (Array.isArray(m) && m.length > 0 && typeof m[0] === 'string')
13
+ return m[0];
14
+ }
15
+ return message != null && typeof message === 'object'
16
+ ? JSON.stringify(message)
17
+ : String(message ?? 'Internal server error');
18
+ }
19
+ function toRpcPayload(exception) {
20
+ if (exception != null &&
21
+ typeof exception === 'object' &&
22
+ 'code' in exception &&
23
+ 'error' in exception &&
24
+ typeof exception.code === 'number') {
25
+ const code = exception.code;
26
+ const err = exception.error;
27
+ return {
28
+ code,
29
+ data: null,
30
+ error: typeof err === 'string' ? err : normalizeMessage(err),
31
+ };
32
+ }
33
+ if (exception != null &&
34
+ typeof exception === 'object' &&
35
+ 'getStatus' in exception &&
36
+ 'getResponse' in exception) {
37
+ const httpEx = exception;
38
+ const status = httpEx.getStatus();
39
+ const response = httpEx.getResponse();
40
+ const message = typeof response === 'string' ? response : normalizeMessage(response?.message ?? 'Internal server error');
41
+ return { code: status, data: null, error: message };
42
+ }
43
+ if (exception instanceof Error) {
44
+ const code = exception.status ?? 500;
45
+ const message = exception.message || 'Internal server error';
46
+ return { code, data: null, error: message };
47
+ }
48
+ return { code: 500, data: null, error: 'Internal server error' };
49
+ }
50
+ function exceptionToResponse(exception) {
51
+ return toRpcPayload(exception);
52
+ }
53
+ //# sourceMappingURL=rpc-exception.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-exception.utils.js","sourceRoot":"","sources":["../../src/utils/rpc-exception.utils.ts"],"names":[],"mappings":";;AA8BA,oCAyCC;AASD,kDAEC;AAvED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QAC3E,MAAM,CAAC,GAAI,OAA2C,CAAC,OAAO,CAAC;QAC/D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QACnD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;AACjD,CAAC;AASD,SAAgB,YAAY,CAAC,SAAkB;IAE7C,IACE,SAAS,IAAI,IAAI;QACjB,OAAO,SAAS,KAAK,QAAQ;QAC7B,MAAM,IAAI,SAAS;QACnB,OAAO,IAAI,SAAS;QACpB,OAAQ,SAA+B,CAAC,IAAI,KAAK,QAAQ,EACzD,CAAC;QACD,MAAM,IAAI,GAAI,SAA8B,CAAC,IAAI,CAAC;QAClD,MAAM,GAAG,GAAI,SAAgC,CAAC,KAAK,CAAC;QACpD,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;SAC7D,CAAC;IACJ,CAAC;IAGD,IACE,SAAS,IAAI,IAAI;QACjB,OAAO,SAAS,KAAK,QAAQ;QAC7B,WAAW,IAAI,SAAS;QACxB,aAAa,IAAI,SAAS,EAC1B,CAAC;QACD,MAAM,MAAM,GAAG,SAAoE,CAAC;QACpF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,OAAO,GACX,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAE,QAAgB,EAAE,OAAO,IAAI,uBAAuB,CAAC,CAAC;QACpH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IAGD,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAI,SAAiB,CAAC,MAAM,IAAI,GAAG,CAAC;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,uBAAuB,CAAC;QAC7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;AACnE,CAAC;AASD,SAAgB,mBAAmB,CAAC,SAAkB;IACpD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
@@ -41,7 +41,31 @@ token-services의 auth-service 정리하면서 **core-sdk로 옮기면 재사용
41
41
 
42
42
  ---
43
43
 
44
- ## 5. 정리
44
+ ## 5. RPC 전용 예외 처리 (TCP 마이크로서비스) (반영 완료)
45
+
46
+ ### 배경
47
+ auth-service는 **TCP 전용** 마이크로서비스입니다. `AllExceptionsFilter`는 HTTP 전용이라 TCP 컨텍스트에서는 사용할 수 없습니다.
48
+ core-sdk에 **RPC(TCP) 전용** 예외 처리용을 추가하면, auth-service(및 다른 TCP 마이크로서비스)에서 로컬 필터/헬퍼를 제거하고 core-sdk만 사용할 수 있습니다.
49
+
50
+ ### 반영 내용
51
+ 1. **RpcResponseExceptionFilter**
52
+ - `BaseRpcExceptionFilter` 확장, `@Catch()` 로 모든 예외 캐치.
53
+ - `catch(exception, host)`에서 예외를 `{ code, data: null, error: string }` 형태로 변환 후 `throwError(() => new RpcException(payload))` 반환.
54
+ - HttpException → getStatus(), getResponse()에서 메시지 추출; 그 외 → 500 + message.
55
+
56
+ 2. **exceptionToResponse(exception)** (유틸)
57
+ - 동일 형태 `{ code, data: null, error: string }`를 **반환**. 컨트롤러에서 throw 대신 `return exceptionToResponse(e)` 할 때 사용.
58
+ - export: `exceptionToResponse`, `toRpcPayload`, `RpcResponsePayload` 타입.
59
+
60
+ 3. **CoreModule.forMicroservice 옵션**
61
+ - `filters: { rpcException: true }` 기본값. TCP 마이크로서비스에서 전역에 `RpcResponseExceptionFilter` 등록.
62
+ - `filters.exception`은 forMicroservice에서 기본 `false` (HTTP 필터 미등록).
63
+
64
+ **사용처**: token-services auth-service. core-sdk 반영 후 auth-service의 `filters/rpc-response-exception.filter.ts`, `interceptors/rpc-logging.interceptor.ts` 제거하고 core-sdk 로깅 + RPC 예외 필터/헬퍼만 사용 예정. (로깅은 이미 core-sdk LoggingInterceptor가 RPC 지원.)
65
+
66
+ ---
67
+
68
+ ## 6. 정리
45
69
 
46
70
  | 항목 | 우선순위 | 요약 |
47
71
  |------|----------|------|
@@ -49,6 +73,9 @@ token-services의 auth-service 정리하면서 **core-sdk로 옮기면 재사용
49
73
  | **findUserByLookupHash / authenticateWithHashLookup** | 중간 | DB 기반 인증 로직 재사용, auth-service 단순화 (반영 완료) |
50
74
  | **resolveConfigRootDir preset/확장** | 낮음 | token-services는 shared/config로 대응 가능 (주석 반영) |
51
75
  | **I18nExceptionFilter** | 선택 | error.message를 { ko, en } 객체로 내리기, APP_FILTER로만 사용 (반영 완료) |
76
+ | **RpcResponseExceptionFilter + exceptionToResponse** | 중간 | TCP 마이크로서비스용 예외 처리. core-sdk 반영 후 auth-service 로컬 RPC 필터·인터셉터 제거 예정 (반영 완료) |
52
77
 
53
- token-services 쪽에서는 위 1·2·4번이 core-sdk에 반영되면 auth-service를 그에 맞춰 리팩터링할 예정입니다.
78
+ token-services 쪽에서는 위 1·2·4·5번이 core-sdk에 반영되면 auth-service를 그에 맞춰 리팩터링할 예정입니다.
79
+ **I18nExceptionFilter**: core-sdk export 사용 시 auth-service 로컬 `i18n-exception.filter.ts` 제거 후 `APP_FILTER`로 core-sdk `I18nExceptionFilter`만 등록.
80
+ **RPC 예외 처리**: core-sdk `RpcResponseExceptionFilter`와 `exceptionToResponse` 사용 시 auth-service의 `filters/rpc-response-exception.filter.ts`, `interceptors/rpc-logging.interceptor.ts` 제거 후 core-sdk 것만 사용. (로깅은 LoggingInterceptor RPC 지원으로 `interceptors: { logging: true }`만 켜면 됨.)
54
81
  문의나 스펙 조정이 필요하면 알려 주세요.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfilecom/core-sdk",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "Core SDK for NestJS microservices - 통합 개발 키트",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,9 +29,16 @@
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@nestjs/common": "^10.0.0",
32
- "@nestjs/core": "^10.0.0"
32
+ "@nestjs/core": "^10.0.0",
33
+ "@nestjs/microservices": "^10.0.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "@nestjs/microservices": {
37
+ "optional": true
38
+ }
33
39
  },
34
40
  "devDependencies": {
41
+ "@nestjs/microservices": "^10.0.0",
35
42
  "@types/bcrypt": "^5.0.2",
36
43
  "@types/express": "^4.17.21",
37
44
  "@types/jsonwebtoken": "^9.0.5",