@konplit-services/common 1.0.282 → 1.0.284

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.
@@ -240,6 +240,7 @@ declare class AppConfigs {
240
240
  getNATSUsername(): string;
241
241
  getBVNEnvironment(): string;
242
242
  getSettlementInterval(): string;
243
+ getCardExpiryInterval(): string;
243
244
  getNodeMAilDetails(): {
244
245
  host: string;
245
246
  port: number;
@@ -167,6 +167,12 @@ class AppConfigs {
167
167
  }
168
168
  return this.env.SETTLEMENT_INTERVAL;
169
169
  }
170
+ getCardExpiryInterval() {
171
+ if (!this.env.CARD_EXPIRY_INTERVAL) {
172
+ throw new Error("CARD_EXPIRY_INTERVAL is required");
173
+ }
174
+ return this.env.CARD_EXPIRY_INTERVAL;
175
+ }
170
176
  getNodeMAilDetails() {
171
177
  if (!this.env.MAIL_HOST) {
172
178
  throw new Error("MAIL_HOST is required");
@@ -13,6 +13,7 @@ export * from "./qrpayments-events/interfaces";
13
13
  export * from "./interswitch-events/interfaces";
14
14
  export * from "./revenue-events/interfaces";
15
15
  export * from "./easypay-events/interfaces";
16
+ export * from "./kore-events/interfaces";
16
17
  export * from "./opay-events/interfaces";
17
18
  export * from "./base-events";
18
19
  export * from "./types";
@@ -29,6 +29,7 @@ __exportStar(require("./qrpayments-events/interfaces"), exports);
29
29
  __exportStar(require("./interswitch-events/interfaces"), exports);
30
30
  __exportStar(require("./revenue-events/interfaces"), exports);
31
31
  __exportStar(require("./easypay-events/interfaces"), exports);
32
+ __exportStar(require("./kore-events/interfaces"), exports);
32
33
  __exportStar(require("./opay-events/interfaces"), exports);
33
34
  __exportStar(require("./base-events"), exports);
34
35
  __exportStar(require("./types"), exports);
@@ -0,0 +1,10 @@
1
+ import { StreamEvent, StreamName, Subjects } from "../../subjects";
2
+ export interface CardExpiryCreatedEvent {
3
+ subject: Subjects.KORE_CARD_EXPIRY_CREATED;
4
+ streamName: StreamName.name;
5
+ streamEvents: StreamEvent.Event;
6
+ data: {
7
+ month: string;
8
+ year: string;
9
+ };
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export * from "./card-expiry-created.interface";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./card-expiry-created.interface"), exports);
@@ -79,7 +79,8 @@ export declare enum Subjects {
79
79
  EASYPAY_SCHEDULED_TRANSFER = "events.scheduled.transfer.created",
80
80
  EASYPAY_SCHEDULED_TRANSFER_COMPLETED = "events.scheduled.transfer.completed",
81
81
  EASYPAY_TRANSFER_OTP_CREATED = "events.tranfer.otp.created",
82
- EASYPAY_TRANSFER_OTP_COMPLETED = "events..tranfer.otp.completed",
82
+ EASYPAY_TRANSFER_OTP_COMPLETED = "events.tranfer.otp.completed",
83
+ KORE_CARD_EXPIRY_CREATED = "events.card.expiry.created",
83
84
  EASYPAY_TRANSFER_URL_CREATED = "events.tranfer.url.created",
84
85
  EASYPAY_TRANSFER_URL_COMPLETED = "events..tranfer.url.completed",
85
86
  EASYPAY_START_TRANSFER_PROCESS = "events.start.transfer.process",
@@ -109,7 +109,9 @@ var Subjects;
109
109
  Subjects["EASYPAY_SCHEDULED_TRANSFER"] = "events.scheduled.transfer.created";
110
110
  Subjects["EASYPAY_SCHEDULED_TRANSFER_COMPLETED"] = "events.scheduled.transfer.completed";
111
111
  Subjects["EASYPAY_TRANSFER_OTP_CREATED"] = "events.tranfer.otp.created";
112
- Subjects["EASYPAY_TRANSFER_OTP_COMPLETED"] = "events..tranfer.otp.completed";
112
+ Subjects["EASYPAY_TRANSFER_OTP_COMPLETED"] = "events.tranfer.otp.completed";
113
+ //CARD
114
+ Subjects["KORE_CARD_EXPIRY_CREATED"] = "events.card.expiry.created";
113
115
  Subjects["EASYPAY_TRANSFER_URL_CREATED"] = "events.tranfer.url.created";
114
116
  Subjects["EASYPAY_TRANSFER_URL_COMPLETED"] = "events..tranfer.url.completed";
115
117
  Subjects["EASYPAY_START_TRANSFER_PROCESS"] = "events.start.transfer.process";
@@ -8,3 +8,7 @@ export declare enum CARD_TYPES {
8
8
  jcb = "JCB",
9
9
  china_union_pay = "CHINA_UNION_PAY"
10
10
  }
11
+ type CardType = "VISA" | "VERVE" | "AMEX" | "MASTERCARD" | "DISCOVER" | "DINERS" | "JCB" | "CHINA_UNION_PAY" | undefined;
12
+ declare const creditCardType: (cc: string) => CardType;
13
+ declare const getCardType: (cardNumber: string) => CardType;
14
+ export { creditCardType, getCardType, CardType };
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CARD_TYPES = void 0;
3
+ exports.getCardType = exports.creditCardType = exports.CARD_TYPES = void 0;
4
+ const errors_1 = require("../errors");
5
+ const card_validate_1 = require("./card-validate");
6
+ const error_codes_1 = require("./errorCodes/error-codes");
4
7
  var CARD_TYPES;
5
8
  (function (CARD_TYPES) {
6
9
  CARD_TYPES["visa"] = "VISA";
@@ -12,3 +15,39 @@ var CARD_TYPES;
12
15
  CARD_TYPES["jcb"] = "JCB";
13
16
  CARD_TYPES["china_union_pay"] = "CHINA_UNION_PAY";
14
17
  })(CARD_TYPES = exports.CARD_TYPES || (exports.CARD_TYPES = {}));
18
+ const creditCardType = (cc) => {
19
+ // Input validation
20
+ if (typeof cc !== "string" || !/^\d+$/.test(cc)) {
21
+ throw new errors_1.BadRequestError("Invalid card number. Input must be a string of digits.", error_codes_1.error_codes.INVALID_INPUT);
22
+ }
23
+ // Card type patterns
24
+ const cardTypes = [
25
+ { type: "VISA", pattern: /^4[0-9]{12}(?:[0-9]{3})?$/ },
26
+ { type: "VERVE", pattern: /^((506(0|1))|(507(8|9))|(6500))[0-9]{12,15}$/ },
27
+ { type: "AMEX", pattern: /^3[47][0-9]{13}$/ },
28
+ { type: "MASTERCARD", pattern: /^(5[1-5][0-9]{14}|2[2-7][0-9]{14})$/ },
29
+ {
30
+ type: "DISCOVER",
31
+ pattern: /^(6011[0-9]{12}|62[24568][0-9]{13}|6[45][0-9]{14})$/,
32
+ },
33
+ { type: "DINERS", pattern: /^3[0689][0-9]{12}$/ },
34
+ { type: "JCB", pattern: /^35[0-9]{14}$/ },
35
+ { type: "CHINA_UNION_PAY", pattern: /^(62[0-9]{14}|81[0-9]{14})$/ },
36
+ ];
37
+ // Check card number against patterns
38
+ for (const { type, pattern } of cardTypes) {
39
+ if (pattern.test(cc)) {
40
+ return type;
41
+ }
42
+ }
43
+ // Return undefined if no match is found
44
+ return undefined;
45
+ };
46
+ exports.creditCardType = creditCardType;
47
+ const getCardType = (cardNumber) => {
48
+ if (!(0, card_validate_1.cardValidate)(cardNumber)) {
49
+ throw new errors_1.BadRequestError("Invalid card number.", error_codes_1.error_codes.INVALID_INPUT);
50
+ }
51
+ return creditCardType(cardNumber);
52
+ };
53
+ exports.getCardType = getCardType;
@@ -6,13 +6,15 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.cardValidate = void 0;
9
+ const errors_1 = require("../errors");
10
+ const error_codes_1 = require("./errorCodes/error-codes");
9
11
  const cardValidate = (cardNumber) => {
10
12
  let sum = 0;
11
13
  let shouldDouble = false;
12
14
  for (let i = cardNumber.length - 1; i >= 0; i--) {
13
15
  let digit = parseInt(cardNumber[i], 10);
14
16
  if (isNaN(digit)) {
15
- throw new Error(`Invalid character '${cardNumber[i]}' in card number.`);
17
+ throw new errors_1.BadRequestError(`Invalid character '${cardNumber[i]}' in card number.`, error_codes_1.error_codes.INVALID_INPUT);
16
18
  }
17
19
  if (shouldDouble) {
18
20
  digit *= 2;
@@ -20,7 +20,7 @@ const generateCronExpression = (interval) => {
20
20
  switch (interval) {
21
21
  case plan_types_1.PLAN_INTERVAL.HOURLY: {
22
22
  // Run every hour at the same minute and second
23
- cronExpression = `0 ${currentDate.minute()} ${currentDate.hour()} * * *`;
23
+ cronExpression = `0 ${currentDate.minute()} * * * *`;
24
24
  break;
25
25
  }
26
26
  case plan_types_1.PLAN_INTERVAL.DAILY: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konplit-services/common",
3
- "version": "1.0.282",
3
+ "version": "1.0.284",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",