@traxionpay/cbsmiddleware 0.0.1

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.
Files changed (203) hide show
  1. package/.prettierrc +4 -0
  2. package/Dockerfile +26 -0
  3. package/README.md +109 -0
  4. package/dist/app.module.d.ts +3 -0
  5. package/dist/app.module.d.ts.map +1 -0
  6. package/dist/app.module.js +44 -0
  7. package/dist/app.module.js.map +1 -0
  8. package/dist/auth/apikey.guard.d.ts +9 -0
  9. package/dist/auth/apikey.guard.d.ts.map +1 -0
  10. package/dist/auth/apikey.guard.js +86 -0
  11. package/dist/auth/apikey.guard.js.map +1 -0
  12. package/dist/auth/auth.controller.d.ts +10 -0
  13. package/dist/auth/auth.controller.d.ts.map +1 -0
  14. package/dist/auth/auth.controller.js +65 -0
  15. package/dist/auth/auth.controller.js.map +1 -0
  16. package/dist/auth/auth.interface.d.ts +8 -0
  17. package/dist/auth/auth.interface.d.ts.map +1 -0
  18. package/dist/auth/auth.interface.js +3 -0
  19. package/dist/auth/auth.interface.js.map +1 -0
  20. package/dist/auth/auth.module.d.ts +6 -0
  21. package/dist/auth/auth.module.d.ts.map +1 -0
  22. package/dist/auth/auth.module.js +81 -0
  23. package/dist/auth/auth.module.js.map +1 -0
  24. package/dist/auth/constant.d.ts +2 -0
  25. package/dist/auth/constant.d.ts.map +1 -0
  26. package/dist/auth/constant.js +5 -0
  27. package/dist/auth/constant.js.map +1 -0
  28. package/dist/auth/jwt-constant.d.ts +8 -0
  29. package/dist/auth/jwt-constant.d.ts.map +1 -0
  30. package/dist/auth/jwt-constant.js +60 -0
  31. package/dist/auth/jwt-constant.js.map +1 -0
  32. package/dist/auth/jwt-guard.d.ts +5 -0
  33. package/dist/auth/jwt-guard.d.ts.map +1 -0
  34. package/dist/auth/jwt-guard.js +18 -0
  35. package/dist/auth/jwt-guard.js.map +1 -0
  36. package/dist/auth/jwt-strategy.d.ts +16 -0
  37. package/dist/auth/jwt-strategy.d.ts.map +1 -0
  38. package/dist/auth/jwt-strategy.js +59 -0
  39. package/dist/auth/jwt-strategy.js.map +1 -0
  40. package/dist/auth/services/auth.service.d.ts +14 -0
  41. package/dist/auth/services/auth.service.d.ts.map +1 -0
  42. package/dist/auth/services/auth.service.js +56 -0
  43. package/dist/auth/services/auth.service.js.map +1 -0
  44. package/dist/auth/services/encryption.service.d.ts +11 -0
  45. package/dist/auth/services/encryption.service.d.ts.map +1 -0
  46. package/dist/auth/services/encryption.service.js +49 -0
  47. package/dist/auth/services/encryption.service.js.map +1 -0
  48. package/dist/auth.config.d.ts +29 -0
  49. package/dist/auth.config.d.ts.map +1 -0
  50. package/dist/auth.config.js +71 -0
  51. package/dist/auth.config.js.map +1 -0
  52. package/dist/banking/banking.controller.d.ts +18 -0
  53. package/dist/banking/banking.controller.d.ts.map +1 -0
  54. package/dist/banking/banking.controller.js +146 -0
  55. package/dist/banking/banking.controller.js.map +1 -0
  56. package/dist/banking/banking.module.d.ts +6 -0
  57. package/dist/banking/banking.module.d.ts.map +1 -0
  58. package/dist/banking/banking.module.js +90 -0
  59. package/dist/banking/banking.module.js.map +1 -0
  60. package/dist/banking/dto/account-transfer.dto.d.ts +17 -0
  61. package/dist/banking/dto/account-transfer.dto.d.ts.map +1 -0
  62. package/dist/banking/dto/account-transfer.dto.js +101 -0
  63. package/dist/banking/dto/account-transfer.dto.js.map +1 -0
  64. package/dist/banking/dto/account.dto.d.ts +19 -0
  65. package/dist/banking/dto/account.dto.d.ts.map +1 -0
  66. package/dist/banking/dto/account.dto.js +104 -0
  67. package/dist/banking/dto/account.dto.js.map +1 -0
  68. package/dist/banking/dto/fetch-bank-balance.dto.d.ts +12 -0
  69. package/dist/banking/dto/fetch-bank-balance.dto.d.ts.map +1 -0
  70. package/dist/banking/dto/fetch-bank-balance.dto.js +71 -0
  71. package/dist/banking/dto/fetch-bank-balance.dto.js.map +1 -0
  72. package/dist/banking/dto/transaction-history.dto.d.ts +15 -0
  73. package/dist/banking/dto/transaction-history.dto.d.ts.map +1 -0
  74. package/dist/banking/dto/transaction-history.dto.js +89 -0
  75. package/dist/banking/dto/transaction-history.dto.js.map +1 -0
  76. package/dist/banking/factory/bank-strategy.factory.d.ts +9 -0
  77. package/dist/banking/factory/bank-strategy.factory.d.ts.map +1 -0
  78. package/dist/banking/factory/bank-strategy.factory.js +48 -0
  79. package/dist/banking/factory/bank-strategy.factory.js.map +1 -0
  80. package/dist/banking/interfaces/bank-config.interface.d.ts +22 -0
  81. package/dist/banking/interfaces/bank-config.interface.d.ts.map +1 -0
  82. package/dist/banking/interfaces/bank-config.interface.js +3 -0
  83. package/dist/banking/interfaces/bank-config.interface.js.map +1 -0
  84. package/dist/banking/interfaces/bank-service.interface.d.ts +19 -0
  85. package/dist/banking/interfaces/bank-service.interface.d.ts.map +1 -0
  86. package/dist/banking/interfaces/bank-service.interface.js +3 -0
  87. package/dist/banking/interfaces/bank-service.interface.js.map +1 -0
  88. package/dist/banking/services/ASPAC.service.d.ts +25 -0
  89. package/dist/banking/services/ASPAC.service.d.ts.map +1 -0
  90. package/dist/banking/services/ASPAC.service.js +498 -0
  91. package/dist/banking/services/ASPAC.service.js.map +1 -0
  92. package/dist/banking/services/BankGateway.service.d.ts +18 -0
  93. package/dist/banking/services/BankGateway.service.d.ts.map +1 -0
  94. package/dist/banking/services/BankGateway.service.js +71 -0
  95. package/dist/banking/services/BankGateway.service.js.map +1 -0
  96. package/dist/banking/services/MBWIN.service.d.ts +25 -0
  97. package/dist/banking/services/MBWIN.service.d.ts.map +1 -0
  98. package/dist/banking/services/MBWIN.service.js +655 -0
  99. package/dist/banking/services/MBWIN.service.js.map +1 -0
  100. package/dist/banking/services/WelcomeBank.service.d.ts +29 -0
  101. package/dist/banking/services/WelcomeBank.service.d.ts.map +1 -0
  102. package/dist/banking/services/WelcomeBank.service.js +840 -0
  103. package/dist/banking/services/WelcomeBank.service.js.map +1 -0
  104. package/dist/banking/services/sms.service.d.ts +10 -0
  105. package/dist/banking/services/sms.service.d.ts.map +1 -0
  106. package/dist/banking/services/sms.service.js +97 -0
  107. package/dist/banking/services/sms.service.js.map +1 -0
  108. package/dist/banking/tokens/bank-service.tokens.d.ts +5 -0
  109. package/dist/banking/tokens/bank-service.tokens.d.ts.map +1 -0
  110. package/dist/banking/tokens/bank-service.tokens.js +8 -0
  111. package/dist/banking/tokens/bank-service.tokens.js.map +1 -0
  112. package/dist/banking/types.d.ts +10 -0
  113. package/dist/banking/types.d.ts.map +1 -0
  114. package/dist/banking/types.js +3 -0
  115. package/dist/banking/types.js.map +1 -0
  116. package/dist/decorators/response_message.decorator.d.ts +2 -0
  117. package/dist/decorators/response_message.decorator.d.ts.map +1 -0
  118. package/dist/decorators/response_message.decorator.js +7 -0
  119. package/dist/decorators/response_message.decorator.js.map +1 -0
  120. package/dist/helpers/axios-error.helper.d.ts +6 -0
  121. package/dist/helpers/axios-error.helper.d.ts.map +1 -0
  122. package/dist/helpers/axios-error.helper.js +78 -0
  123. package/dist/helpers/axios-error.helper.js.map +1 -0
  124. package/dist/helpers/response-format.helper.d.ts +4 -0
  125. package/dist/helpers/response-format.helper.d.ts.map +1 -0
  126. package/dist/helpers/response-format.helper.js +15 -0
  127. package/dist/helpers/response-format.helper.js.map +1 -0
  128. package/dist/index.d.ts +10 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +26 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/interceptors/response.interceptor.d.ts +16 -0
  133. package/dist/interceptors/response.interceptor.d.ts.map +1 -0
  134. package/dist/interceptors/response.interceptor.js +80 -0
  135. package/dist/interceptors/response.interceptor.js.map +1 -0
  136. package/dist/logger/logger-interceptor.d.ts +14 -0
  137. package/dist/logger/logger-interceptor.d.ts.map +1 -0
  138. package/dist/logger/logger-interceptor.js +60 -0
  139. package/dist/logger/logger-interceptor.js.map +1 -0
  140. package/dist/logger/logger-option.d.ts +6 -0
  141. package/dist/logger/logger-option.d.ts.map +1 -0
  142. package/dist/logger/logger-option.js +103 -0
  143. package/dist/logger/logger-option.js.map +1 -0
  144. package/dist/logger/logger.config.d.ts +3 -0
  145. package/dist/logger/logger.config.d.ts.map +1 -0
  146. package/dist/logger/logger.config.js +31 -0
  147. package/dist/logger/logger.config.js.map +1 -0
  148. package/dist/logger/logger.module.d.ts +3 -0
  149. package/dist/logger/logger.module.d.ts.map +1 -0
  150. package/dist/logger/logger.module.js +76 -0
  151. package/dist/logger/logger.module.js.map +1 -0
  152. package/dist/main.d.ts +2 -0
  153. package/dist/main.d.ts.map +1 -0
  154. package/dist/main.js +13 -0
  155. package/dist/main.js.map +1 -0
  156. package/dist/tsconfig.build.tsbuildinfo +1 -0
  157. package/docker-compose.yml +14 -0
  158. package/ecosystem.config.js +35 -0
  159. package/eslint.config.mjs +34 -0
  160. package/nest-cli.json +8 -0
  161. package/package.json +102 -0
  162. package/src/app.module.ts +33 -0
  163. package/src/auth/apikey.guard.ts +42 -0
  164. package/src/auth/auth.controller.ts +41 -0
  165. package/src/auth/auth.interface.ts +7 -0
  166. package/src/auth/auth.module.ts +125 -0
  167. package/src/auth/constant.ts +1 -0
  168. package/src/auth/jwt-constant.ts +31 -0
  169. package/src/auth/jwt-guard.ts +5 -0
  170. package/src/auth/jwt-strategy.ts +43 -0
  171. package/src/auth/services/auth.service.ts +33 -0
  172. package/src/auth/services/encryption.service.ts +35 -0
  173. package/src/auth.config.ts +42 -0
  174. package/src/banking/banking.controller.ts +142 -0
  175. package/src/banking/banking.module.ts +142 -0
  176. package/src/banking/dto/account-transfer.dto.ts +66 -0
  177. package/src/banking/dto/account.dto.ts +70 -0
  178. package/src/banking/dto/fetch-bank-balance.dto.ts +46 -0
  179. package/src/banking/dto/transaction-history.dto.ts +58 -0
  180. package/src/banking/factory/bank-strategy.factory.ts +25 -0
  181. package/src/banking/interfaces/bank-config.interface.ts +25 -0
  182. package/src/banking/interfaces/bank-service.interface.ts +164 -0
  183. package/src/banking/services/ASPAC.service.ts +574 -0
  184. package/src/banking/services/BankGateway.service.ts +64 -0
  185. package/src/banking/services/MBWIN.service.ts +779 -0
  186. package/src/banking/services/WelcomeBank.service.ts +990 -0
  187. package/src/banking/services/sms.service.ts +50 -0
  188. package/src/banking/tokens/bank-service.tokens.ts +4 -0
  189. package/src/banking/types.ts +10 -0
  190. package/src/decorators/response_message.decorator.ts +4 -0
  191. package/src/helpers/axios-error.helper.ts +63 -0
  192. package/src/helpers/response-format.helper.ts +15 -0
  193. package/src/index.ts +15 -0
  194. package/src/interceptors/response.interceptor.ts +53 -0
  195. package/src/logger/logger-interceptor.ts +55 -0
  196. package/src/logger/logger-option.ts +119 -0
  197. package/src/logger/logger.config.ts +31 -0
  198. package/src/logger/logger.module.ts +31 -0
  199. package/src/main.ts +10 -0
  200. package/src/types/pino-daily-rotate-file.d.ts +31 -0
  201. package/tsconfig.build.json +11 -0
  202. package/tsconfig.build.tsbuildinfo +1 -0
  203. package/tsconfig.json +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-guard.js","sourceRoot":"","sources":["../../src/auth/jwt-guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA6C;AAGtC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;CAAG,CAAA;AAAxC,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAA4B"}
@@ -0,0 +1,16 @@
1
+ import { AuthModuleOptions } from './auth.interface';
2
+ import { Logger } from 'nestjs-pino';
3
+ import { EncryptionService } from './services/encryption.service';
4
+ declare const JwtStrategy_base: new (...args: any) => any;
5
+ export declare class JwtStrategy extends JwtStrategy_base {
6
+ private readonly options;
7
+ private readonly logger;
8
+ private readonly encryptionService;
9
+ private readonly secretKey;
10
+ constructor(options: AuthModuleOptions, logger: Logger, encryptionService: EncryptionService);
11
+ validate(payload: any): Promise<{
12
+ secret_key: any;
13
+ }>;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=jwt-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-strategy.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-strategy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAElE,qBACa,WAAY,SAAQ,gBAA0B;IAIvD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGhB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB;IAUjD,QAAQ,CAAC,OAAO,EAAE,GAAG;;;CAgB5B"}
@@ -0,0 +1,59 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.JwtStrategy = void 0;
16
+ const passport_1 = require("@nestjs/passport");
17
+ const passport_jwt_1 = require("passport-jwt");
18
+ const common_1 = require("@nestjs/common");
19
+ const constant_1 = require("./constant");
20
+ const nestjs_pino_1 = require("nestjs-pino");
21
+ const encryption_service_1 = require("./services/encryption.service");
22
+ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
23
+ options;
24
+ logger;
25
+ encryptionService;
26
+ secretKey;
27
+ constructor(options, logger, encryptionService) {
28
+ super({
29
+ jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
30
+ ignoreExpiration: false,
31
+ secretOrKey: options.publicKey,
32
+ });
33
+ this.options = options;
34
+ this.logger = logger;
35
+ this.encryptionService = encryptionService;
36
+ this.secretKey = options.jwtSecret || '';
37
+ }
38
+ async validate(payload) {
39
+ const decryptedPayload = JSON.parse(this.encryptionService.decrypt(payload.encrypted));
40
+ if (this.secretKey !== decryptedPayload.secret_key) {
41
+ this.logger.error('Invalid token payload');
42
+ throw new common_1.UnauthorizedException('Invalid token payload');
43
+ }
44
+ const currentTime = Math.floor(Date.now() / 1000);
45
+ if (payload.exp < currentTime) {
46
+ this.logger.error('Invalid token payload');
47
+ throw new common_1.UnauthorizedException('Token is expired');
48
+ }
49
+ return { secret_key: decryptedPayload.secret_key };
50
+ }
51
+ };
52
+ exports.JwtStrategy = JwtStrategy;
53
+ exports.JwtStrategy = JwtStrategy = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __param(0, (0, common_1.Inject)(constant_1.AUTH_MODULE_OPTIONS)),
56
+ __metadata("design:paramtypes", [Object, nestjs_pino_1.Logger,
57
+ encryption_service_1.EncryptionService])
58
+ ], JwtStrategy);
59
+ //# sourceMappingURL=jwt-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-strategy.js","sourceRoot":"","sources":["../../src/auth/jwt-strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,+CAAoD;AACpD,2CAA2E;AAC3E,yCAAiD;AAEjD,6CAAqC;AACrC,sEAAkE;AAG3D,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,IAAA,2BAAgB,EAAC,uBAAQ,CAAC;IAItC;IACA;IACA;IALF,SAAS,CAAS;IACnC,YAEmB,OAA0B,EAC1B,MAAc,EACd,iBAAoC;QAErD,KAAK,CAAC;YACJ,cAAc,EAAE,yBAAU,CAAC,2BAA2B,EAAE;YACxD,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;QARc,YAAO,GAAP,OAAO,CAAmB;QAC1B,WAAM,GAAN,MAAM,CAAQ;QACd,sBAAiB,GAAjB,iBAAiB,CAAmB;QAOrD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAY;QACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,MAAM,IAAI,8BAAqB,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAErD,CAAC;CACF,CAAA;AAhCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,8BAAmB,CAAC,CAAA;6CAEH,oBAAM;QACK,sCAAiB;GAN5C,WAAW,CAgCvB"}
@@ -0,0 +1,14 @@
1
+ import { JwtService } from '@nestjs/jwt';
2
+ import { AuthModuleOptions } from '../auth.interface';
3
+ import { Logger } from 'nestjs-pino';
4
+ import { EncryptionService } from './encryption.service';
5
+ export declare class AuthService {
6
+ private readonly jwtService;
7
+ private readonly logger;
8
+ private readonly encryptionService;
9
+ private readonly options;
10
+ constructor(jwtService: JwtService, logger: Logger, encryptionService: EncryptionService, options: AuthModuleOptions);
11
+ generateToken(payload: any): Promise<any>;
12
+ verifyToken(token: string): any;
13
+ }
14
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBACa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAE,QAAQ,CAAC,MAAM;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,UAAU,EAAE,UAAU,EACrB,MAAM,EAAE,MAAM,EACf,iBAAiB,EAAE,iBAAiB,EAEpC,OAAO,EAAE,iBAAiB;IAGzC,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAY7C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;CAGhC"}
@@ -0,0 +1,56 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AuthService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const jwt_1 = require("@nestjs/jwt");
18
+ const constant_1 = require("../constant");
19
+ const nestjs_pino_1 = require("nestjs-pino");
20
+ const encryption_service_1 = require("./encryption.service");
21
+ let AuthService = class AuthService {
22
+ jwtService;
23
+ logger;
24
+ encryptionService;
25
+ options;
26
+ constructor(jwtService, logger, encryptionService, options) {
27
+ this.jwtService = jwtService;
28
+ this.logger = logger;
29
+ this.encryptionService = encryptionService;
30
+ this.options = options;
31
+ }
32
+ async generateToken(payload) {
33
+ try {
34
+ const encryptedPayload = this.encryptionService.encrypt(JSON.stringify(payload));
35
+ return {
36
+ token: this.jwtService.sign({ encrypted: encryptedPayload }),
37
+ };
38
+ }
39
+ catch (error) {
40
+ this.logger.error(error);
41
+ throw error;
42
+ }
43
+ }
44
+ verifyToken(token) {
45
+ return this.jwtService.verify(token);
46
+ }
47
+ };
48
+ exports.AuthService = AuthService;
49
+ exports.AuthService = AuthService = __decorate([
50
+ (0, common_1.Injectable)(),
51
+ __param(3, (0, common_1.Inject)(constant_1.AUTH_MODULE_OPTIONS)),
52
+ __metadata("design:paramtypes", [jwt_1.JwtService,
53
+ nestjs_pino_1.Logger,
54
+ encryption_service_1.EncryptionService, Object])
55
+ ], AuthService);
56
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/auth/services/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAyC;AAEzC,0CAAkD;AAClD,6CAAqC;AACrC,6DAAyD;AAGlD,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEH;IACC;IACD;IAEA;IALnB,YACmB,UAAsB,EACrB,MAAc,EACf,iBAAoC,EAEpC,OAA0B;QAJ1B,eAAU,GAAV,UAAU,CAAY;QACrB,WAAM,GAAN,MAAM,CAAQ;QACf,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,YAAO,GAAP,OAAO,CAAmB;IAC1C,CAAC;IAEN,KAAK,CAAC,aAAa,CAAC,OAAY;QAC9B,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACjF,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;aAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEC,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF,CAAA;AAxBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,8BAAmB,CAAC,CAAA;qCAHC,gBAAU;QACb,oBAAM;QACI,sCAAiB;GAJ5C,WAAW,CAwBvB"}
@@ -0,0 +1,11 @@
1
+ import { AuthModuleOptions } from '../auth.interface';
2
+ export declare class EncryptionService {
3
+ private readonly options;
4
+ private algorithm;
5
+ private readonly secretKey;
6
+ private iv;
7
+ constructor(options: AuthModuleOptions);
8
+ encrypt(text: string): string;
9
+ decrypt(encrypted: string): string;
10
+ }
11
+ //# sourceMappingURL=encryption.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/encryption.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBACa,iBAAiB;IAQ1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,SAAS,CAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,EAAE,CAAuB;gBAId,OAAO,EAAE,iBAAiB;IAK7C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ7B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAOnC"}
@@ -0,0 +1,49 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EncryptionService = void 0;
16
+ const crypto_1 = require("crypto");
17
+ const common_1 = require("@nestjs/common");
18
+ const constant_1 = require("../constant");
19
+ let EncryptionService = class EncryptionService {
20
+ options;
21
+ algorithm = 'aes-256-cbc';
22
+ secretKey;
23
+ iv = Buffer.alloc(16, 0);
24
+ constructor(options) {
25
+ this.options = options;
26
+ this.secretKey = options.jwtSecret || '';
27
+ }
28
+ encrypt(text) {
29
+ const key = (0, crypto_1.scryptSync)(this.secretKey, 'salt', 32);
30
+ const cipher = (0, crypto_1.createCipheriv)(this.algorithm, key, this.iv);
31
+ let encrypted = cipher.update(text, 'utf8', 'hex');
32
+ encrypted += cipher.final('hex');
33
+ return encrypted;
34
+ }
35
+ decrypt(encrypted) {
36
+ const key = (0, crypto_1.scryptSync)(this.secretKey, 'salt', 32);
37
+ const decipher = (0, crypto_1.createDecipheriv)(this.algorithm, key, this.iv);
38
+ let decrypted = decipher.update(encrypted, 'hex', 'utf8');
39
+ decrypted += decipher.final('utf8');
40
+ return decrypted;
41
+ }
42
+ };
43
+ exports.EncryptionService = EncryptionService;
44
+ exports.EncryptionService = EncryptionService = __decorate([
45
+ (0, common_1.Injectable)(),
46
+ __param(0, (0, common_1.Inject)(constant_1.AUTH_MODULE_OPTIONS)),
47
+ __metadata("design:paramtypes", [Object])
48
+ ], EncryptionService);
49
+ //# sourceMappingURL=encryption.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.service.js","sourceRoot":"","sources":["../../../src/auth/services/encryption.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAAsE;AACtE,2CAAoD;AACpD,0CAAkD;AAI3C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAQT;IAPX,SAAS,GAAG,aAAa,CAAC;IAEjB,SAAS,CAAS;IAC3B,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE/B,YAEiB,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAE3C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AA5BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,8BAAmB,CAAC,CAAA;;GAPnB,iBAAiB,CA4B7B"}
@@ -0,0 +1,29 @@
1
+ export declare const authConfig: {
2
+ jwtSecret: string | undefined;
3
+ expiresIn: string | undefined;
4
+ privateKey: string;
5
+ publicKey: string;
6
+ apiKey: string | undefined;
7
+ };
8
+ export declare const bankConfig: {
9
+ BANK1_DATA_KEY: string;
10
+ BANK1_AUTH_KEY: string;
11
+ BANK2_AUTH_KEY: string;
12
+ BANK1_URL: string;
13
+ BANK2_URL: string;
14
+ BANK1_DATA_PORT: number;
15
+ BANK2_DATA_PORT: number;
16
+ BANK1_MESSAGE_ID: string;
17
+ ASPAC_URL: string;
18
+ ASPAC_API_KEY: string;
19
+ ASPAC_VERSION_KEY: string;
20
+ WELCOMEBANK_URL: string;
21
+ WELCOMEBANK_PORT: number;
22
+ WELCOMEBANK_API_KEY: string;
23
+ WELCOMEBANK_VERSION_KEY: string;
24
+ WELCOMBANK_ENABLEENCRYPTION: boolean;
25
+ MBWIN_URL: string;
26
+ MBWIN_PORT: number;
27
+ MBWIN_API_KEY: string;
28
+ };
29
+ //# sourceMappingURL=auth.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.config.d.ts","sourceRoot":"","sources":["../src/auth.config.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,UAAU;;;;;;CAOtB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;CAwBtB,CAAA"}
@@ -0,0 +1,71 @@
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 __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.bankConfig = exports.authConfig = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const dotenv = __importStar(require("dotenv"));
40
+ dotenv.config();
41
+ const privateKeyPath = path.resolve(process.cwd(), 'certs', 'private.key');
42
+ const publicKeyPath = path.resolve(process.cwd(), 'certs', 'public.key');
43
+ exports.authConfig = {
44
+ jwtSecret: process.env.JWT_SECRET,
45
+ expiresIn: process.env.TOKEN_EXPIRATION,
46
+ privateKey: fs.readFileSync(privateKeyPath, 'utf8'),
47
+ publicKey: fs.readFileSync(publicKeyPath, 'utf8'),
48
+ apiKey: process.env.API_KEY,
49
+ };
50
+ exports.bankConfig = {
51
+ BANK1_DATA_KEY: process.env.BANK1_DATA_KEY || '',
52
+ BANK1_AUTH_KEY: process.env.BANK1_AUTH_KEY || '',
53
+ BANK2_AUTH_KEY: process.env.BANK2_AUTH_KEY || '',
54
+ BANK1_URL: process.env.BANK1_URL || '',
55
+ BANK2_URL: process.env.BANK2_URL || '',
56
+ BANK1_DATA_PORT: Number(process.env.BANK1_DATA_PORT),
57
+ BANK2_DATA_PORT: Number(process.env.BANK2_DATA_PORT),
58
+ BANK1_MESSAGE_ID: process.env.BANK1_MESSAGE_ID || '',
59
+ ASPAC_URL: process.env.ASPAC_URL || '',
60
+ ASPAC_API_KEY: process.env.ASPAC_API_KEY || '',
61
+ ASPAC_VERSION_KEY: process.env.ASPAC_VERSION_KEY || '',
62
+ WELCOMEBANK_URL: process.env.WELCOMEBANK_URL || '',
63
+ WELCOMEBANK_PORT: Number(process.env.WELCOMEBANK_PORT),
64
+ WELCOMEBANK_API_KEY: process.env.WELCOMEBANK_API_KEY || '',
65
+ WELCOMEBANK_VERSION_KEY: process.env.WELCOMEBANK_VERSION_KEY || '',
66
+ WELCOMBANK_ENABLEENCRYPTION: process.env.WELCOMBANK_ENABLEENCRYPTION === 'true',
67
+ MBWIN_URL: process.env.MBWIN_URL || '',
68
+ MBWIN_PORT: Number(process.env.MBWIN_PORT),
69
+ MBWIN_API_KEY: process.env.MBWIN_API_KEY || '',
70
+ };
71
+ //# sourceMappingURL=auth.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.config.js","sourceRoot":"","sources":["../src/auth.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAE5D,QAAA,UAAU,GAAG;IAExB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IACjC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;IACvC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC;IACnD,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACjD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;CAC5B,CAAC;AAEW,QAAA,UAAU,GAAG;IAExB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;IAChD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;IAChD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;IAChD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACtC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACpD,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACpD,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;IAEpD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;IAC9C,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;IAEtD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;IAClD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtD,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;IAC1D,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;IAClE,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM;IAE/E,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;CAC/C,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { FetchBankBalanceDto } from './dto/fetch-bank-balance.dto';
2
+ import { BankStrategyFactory } from './factory/bank-strategy.factory';
3
+ import { AccountDto, ValidateOtp } from './dto/account.dto';
4
+ import { TransactionHistoryDto } from './dto/transaction-history.dto';
5
+ import { AccountTransferDto } from './dto/account-transfer.dto';
6
+ export declare class BankingController {
7
+ private readonly factory;
8
+ constructor(factory: BankStrategyFactory);
9
+ getAccessToken(body: any): Promise<any>;
10
+ getRefreshToken(body: any): Promise<any>;
11
+ linkAccount(accountDto: AccountDto): Promise<any>;
12
+ validateOtp(validateOtp: ValidateOtp): Promise<any>;
13
+ fetchBankBalance(fetchBankBalanceDto: FetchBankBalanceDto): Promise<any>;
14
+ accountCashIn(accountTransaferDto: AccountTransferDto): Promise<any>;
15
+ accountDeposit(accountTransaferDto: AccountTransferDto): Promise<any>;
16
+ getTranHisto(transactionHistoryDto: TransactionHistoryDto): Promise<any>;
17
+ }
18
+ //# sourceMappingURL=banking.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banking.controller.d.ts","sourceRoot":"","sources":["../../src/banking/banking.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,qBAEa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAInD,cAAc,CAAS,IAAI,EAAE,GAAG;IAehC,eAAe,CAAS,IAAI,EAAE,GAAG;IAYjC,WAAW,CAAS,UAAU,EAAE,UAAU;IA4B1C,WAAW,CAAS,WAAW,EAAE,WAAW;IAuB5C,gBAAgB,CAAS,mBAAmB,EAAE,mBAAmB;IAcjE,aAAa,CAAS,mBAAmB,EAAE,kBAAkB;IAY7D,cAAc,CAAS,mBAAmB,EAAE,kBAAkB;IAW9D,YAAY,CAAS,qBAAqB,EAAE,qBAAqB;CAUxE"}
@@ -0,0 +1,146 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.BankingController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const fetch_bank_balance_dto_1 = require("./dto/fetch-bank-balance.dto");
18
+ const bank_strategy_factory_1 = require("./factory/bank-strategy.factory");
19
+ const jwt_guard_1 = require("../auth/jwt-guard");
20
+ const response_message_decorator_1 = require("../decorators/response_message.decorator");
21
+ const account_dto_1 = require("./dto/account.dto");
22
+ const transaction_history_dto_1 = require("./dto/transaction-history.dto");
23
+ const account_transfer_dto_1 = require("./dto/account-transfer.dto");
24
+ let BankingController = class BankingController {
25
+ factory;
26
+ constructor(factory) {
27
+ this.factory = factory;
28
+ }
29
+ async getAccessToken(body) {
30
+ const bankid = body.bankId;
31
+ const service = this.factory.getBankService(bankid);
32
+ const token = await service.generateToken();
33
+ return token;
34
+ }
35
+ async getRefreshToken(body) {
36
+ const service = this.factory.getBankService(body.bankId);
37
+ const response = await service.refreshToken(body.refreshToken);
38
+ return response;
39
+ }
40
+ async linkAccount(accountDto) {
41
+ const { bankId } = accountDto;
42
+ const service = this.factory.getBankService(bankId);
43
+ const response = await service.linkAccount(accountDto);
44
+ return response;
45
+ }
46
+ async validateOtp(validateOtp) {
47
+ const { bankId } = validateOtp;
48
+ const service = this.factory.getBankService(bankId);
49
+ const response = service.validateOtp(validateOtp);
50
+ return response;
51
+ }
52
+ async fetchBankBalance(fetchBankBalanceDto) {
53
+ const { bankId } = fetchBankBalanceDto;
54
+ const service = this.factory.getBankService(bankId);
55
+ const balance = await service.processBalanceTransaction(fetchBankBalanceDto);
56
+ return balance;
57
+ }
58
+ async accountCashIn(accountTransaferDto) {
59
+ const { bankId } = accountTransaferDto;
60
+ const service = this.factory.getBankService(bankId);
61
+ const response = await service.accountCashIn(accountTransaferDto);
62
+ return response;
63
+ }
64
+ async accountDeposit(accountTransaferDto) {
65
+ const { bankId } = accountTransaferDto;
66
+ const service = this.factory.getBankService(bankId);
67
+ const response = await service.accountDeposit(accountTransaferDto);
68
+ return response;
69
+ }
70
+ async getTranHisto(transactionHistoryDto) {
71
+ const { bankId } = transactionHistoryDto;
72
+ const service = this.factory.getBankService(bankId);
73
+ const response = await service.getTransactionHistory(transactionHistoryDto);
74
+ return response;
75
+ }
76
+ };
77
+ exports.BankingController = BankingController;
78
+ __decorate([
79
+ (0, common_1.Post)('token'),
80
+ (0, response_message_decorator_1.ResponseMessage)("Tokens"),
81
+ __param(0, (0, common_1.Body)()),
82
+ __metadata("design:type", Function),
83
+ __metadata("design:paramtypes", [Object]),
84
+ __metadata("design:returntype", Promise)
85
+ ], BankingController.prototype, "getAccessToken", null);
86
+ __decorate([
87
+ (0, common_1.Post)('refresh-token'),
88
+ (0, response_message_decorator_1.ResponseMessage)("Refresh Token"),
89
+ __param(0, (0, common_1.Body)()),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", [Object]),
92
+ __metadata("design:returntype", Promise)
93
+ ], BankingController.prototype, "getRefreshToken", null);
94
+ __decorate([
95
+ (0, common_1.Post)('link'),
96
+ (0, response_message_decorator_1.ResponseMessage)("Generate OTP from Mobile No.:"),
97
+ __param(0, (0, common_1.Body)()),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [account_dto_1.AccountDto]),
100
+ __metadata("design:returntype", Promise)
101
+ ], BankingController.prototype, "linkAccount", null);
102
+ __decorate([
103
+ (0, common_1.Post)('validate'),
104
+ (0, response_message_decorator_1.ResponseMessage)("OTP Validation"),
105
+ __param(0, (0, common_1.Body)()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [account_dto_1.ValidateOtp]),
108
+ __metadata("design:returntype", Promise)
109
+ ], BankingController.prototype, "validateOtp", null);
110
+ __decorate([
111
+ (0, common_1.Post)('balance-inquiry'),
112
+ __param(0, (0, common_1.Body)()),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [fetch_bank_balance_dto_1.FetchBankBalanceDto]),
115
+ __metadata("design:returntype", Promise)
116
+ ], BankingController.prototype, "fetchBankBalance", null);
117
+ __decorate([
118
+ (0, common_1.Post)('wallet-cash-in'),
119
+ (0, response_message_decorator_1.ResponseMessage)("Account Cash In"),
120
+ __param(0, (0, common_1.Body)()),
121
+ __metadata("design:type", Function),
122
+ __metadata("design:paramtypes", [account_transfer_dto_1.AccountTransferDto]),
123
+ __metadata("design:returntype", Promise)
124
+ ], BankingController.prototype, "accountCashIn", null);
125
+ __decorate([
126
+ (0, common_1.Post)('bank-deposit'),
127
+ (0, response_message_decorator_1.ResponseMessage)("Account Deposit"),
128
+ __param(0, (0, common_1.Body)()),
129
+ __metadata("design:type", Function),
130
+ __metadata("design:paramtypes", [account_transfer_dto_1.AccountTransferDto]),
131
+ __metadata("design:returntype", Promise)
132
+ ], BankingController.prototype, "accountDeposit", null);
133
+ __decorate([
134
+ (0, common_1.Post)('transaction-history'),
135
+ (0, response_message_decorator_1.ResponseMessage)("Transaction History"),
136
+ __param(0, (0, common_1.Body)()),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [transaction_history_dto_1.TransactionHistoryDto]),
139
+ __metadata("design:returntype", Promise)
140
+ ], BankingController.prototype, "getTranHisto", null);
141
+ exports.BankingController = BankingController = __decorate([
142
+ (0, common_1.Controller)('banking'),
143
+ (0, common_1.UseGuards)(jwt_guard_1.JwtAuthGuard),
144
+ __metadata("design:paramtypes", [bank_strategy_factory_1.BankStrategyFactory])
145
+ ], BankingController);
146
+ //# sourceMappingURL=banking.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banking.controller.js","sourceRoot":"","sources":["../../src/banking/banking.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { BankingModuleOptions } from './types';
3
+ export declare class BankingModule {
4
+ static register(options?: BankingModuleOptions): DynamicModule;
5
+ }
6
+ //# sourceMappingURL=banking.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banking.module.d.ts","sourceRoot":"","sources":["../../src/banking/banking.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAsC/C,qBACa,aAAa;IA0BxB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa;CA2EnE"}
@@ -0,0 +1,90 @@
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 BankingModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BankingModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const bank_service_tokens_1 = require("./tokens/bank-service.tokens");
13
+ const sms_service_1 = require("./services/sms.service");
14
+ const bank_strategy_factory_1 = require("./factory/bank-strategy.factory");
15
+ const banking_controller_1 = require("./banking.controller");
16
+ const logger_module_1 = require("../logger/logger.module");
17
+ const config_1 = require("@nestjs/config");
18
+ const ASPAC_service_1 = require("./services/ASPAC.service");
19
+ const WelcomeBank_service_1 = require("./services/WelcomeBank.service");
20
+ const MBWIN_service_1 = require("./services/MBWIN.service");
21
+ const BankGateway_service_1 = require("./services/BankGateway.service");
22
+ let BankingModule = BankingModule_1 = class BankingModule {
23
+ static register(options = {}) {
24
+ const configProvider = {
25
+ provide: bank_service_tokens_1.BANKING_CONFIG,
26
+ useValue: options.config ?? {
27
+ BANK1_DATA_KEY: '',
28
+ BANK1_AUTH_KEY: '',
29
+ BANK2_AUTH_KEY: '',
30
+ BANK1_URL: '',
31
+ BANK2_URL: '',
32
+ BANK1_DATA_PORT: 0,
33
+ BANK2_DATA_PORT: 0,
34
+ BANK1_MESSAGE_ID: '',
35
+ ASPAC_URL: '',
36
+ ASPAC_API_KEY: '',
37
+ ASPAC_VERSION_KEY: '',
38
+ WELCOMEBANK_URL: '',
39
+ WELCOMEBANK_PORT: 0,
40
+ WELCOMEBANK_API_KEY: '',
41
+ WELCOMEBANK_VERSION_KEY: '',
42
+ WELCOMBANK_ENABLEENCRYPTION: false,
43
+ MBWIN_URL: '',
44
+ MBWIN_PORT: 0,
45
+ MBWIN_API_KEY: '',
46
+ },
47
+ };
48
+ const providers = [
49
+ configProvider,
50
+ {
51
+ provide: bank_service_tokens_1.ASPAC_SERVICE_TOKEN,
52
+ useClass: options.ASPACService ?? ASPAC_service_1.ASPACService,
53
+ },
54
+ {
55
+ provide: bank_service_tokens_1.WELCOMEBANK_SERVICE_TOKEN,
56
+ useClass: options.WelcomeBankService ?? WelcomeBank_service_1.WelcomeBankService,
57
+ },
58
+ {
59
+ provide: bank_service_tokens_1.MBWIN_SERVICE_TOKEN,
60
+ useClass: options.MBWINService ?? MBWIN_service_1.MBWINService,
61
+ },
62
+ bank_strategy_factory_1.BankStrategyFactory,
63
+ ASPAC_service_1.ASPACService,
64
+ WelcomeBank_service_1.WelcomeBankService,
65
+ sms_service_1.SmsService,
66
+ MBWIN_service_1.MBWINService,
67
+ BankGateway_service_1.BankingGatewayService,
68
+ ];
69
+ return {
70
+ module: BankingModule_1,
71
+ imports: [
72
+ logger_module_1.AppLoggerModule,
73
+ config_1.ConfigModule,
74
+ ],
75
+ controllers: [banking_controller_1.BankingController],
76
+ providers,
77
+ exports: [
78
+ bank_strategy_factory_1.BankStrategyFactory,
79
+ ASPAC_service_1.ASPACService,
80
+ BankGateway_service_1.BankingGatewayService,
81
+ configProvider,
82
+ ],
83
+ };
84
+ }
85
+ };
86
+ exports.BankingModule = BankingModule;
87
+ exports.BankingModule = BankingModule = BankingModule_1 = __decorate([
88
+ (0, common_1.Module)({})
89
+ ], BankingModule);
90
+ //# sourceMappingURL=banking.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banking.module.js","sourceRoot":"","sources":["../../src/banking/banking.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiE;AAEjE,sEAAmI;AACnI,wDAAoD;AACpD,2EAAsE;AACtE,6DAAyD;AACzD,2DAA0D;AAC1D,2CAA8C;AAC9C,4DAAwD;AACxD,wEAAoE;AACpE,4DAAwD;AACxD,wEAAuE;AA6BhE,IAAM,aAAa,qBAAnB,MAAM,aAAa;IA0BxB,MAAM,CAAC,QAAQ,CAAC,UAAgC,EAAE;QAEhD,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,oCAAc;YACvB,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI;gBAC1B,cAAc,EAAE,EAAE;gBAClB,cAAc,EAAE,EAAE;gBAClB,cAAc,EAAE,EAAE;gBAClB,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,CAAC;gBAClB,gBAAgB,EAAE,EAAE;gBAGpB,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,iBAAiB,EAAE,EAAE;gBAGrB,eAAe,EAAE,EAAE;gBACnB,gBAAgB,EAAE,CAAC;gBACnB,mBAAmB,EAAE,EAAE;gBACvB,uBAAuB,EAAE,EAAE;gBAC3B,2BAA2B,EAAE,KAAK;gBAGlC,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,EAAE;aAElB;SACF,CAAC;QAGF,MAAM,SAAS,GAAe;YAC5B,cAAc;YACd;gBACE,OAAO,EAAE,yCAAmB;gBAC5B,QAAQ,EAAE,OAAO,CAAC,YAAY,IAAI,4BAAY;aAC/C;YACD;gBACE,OAAO,EAAE,+CAAyB;gBAClC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,IAAI,wCAAkB;aAC3D;YACD;gBACE,OAAO,EAAE,yCAAmB;gBAC5B,QAAQ,EAAE,OAAO,CAAC,YAAY,IAAI,4BAAY;aAC/C;YACD,2CAAmB;YACnB,4BAAY;YACZ,wCAAkB;YAClB,wBAAU;YACV,4BAAY;YACZ,2CAAqB;SACtB,CAAC;QAGF,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE;gBACP,+BAAe;gBACf,qBAAY;aACb;YACD,WAAW,EAAE,CAAC,sCAAiB,CAAC;YAChC,SAAS;YACT,OAAO,EAAE;gBACP,2CAAmB;gBACnB,4BAAY;gBACZ,2CAAqB;gBAErB,cAAc;aACf;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AArGY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAqGzB"}