@6thbridge/utils 0.2.1 → 0.2.3-7.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 (100) hide show
  1. package/lib/actions/amount.action.d.ts +10 -0
  2. package/lib/actions/amount.action.js +40 -0
  3. package/lib/actions/amount.action.js.map +1 -0
  4. package/lib/actions/charge.action.d.ts +32 -2
  5. package/lib/actions/charge.action.js +191 -181
  6. package/lib/actions/charge.action.js.map +1 -1
  7. package/lib/actions/currency.action.d.ts +11 -2
  8. package/lib/actions/currency.action.js +71 -33
  9. package/lib/actions/currency.action.js.map +1 -1
  10. package/lib/actions/database.action.d.ts +20 -0
  11. package/lib/actions/database.action.js +90 -0
  12. package/lib/actions/database.action.js.map +1 -0
  13. package/lib/actions/database.action.spec.js +208 -0
  14. package/lib/actions/database.action.spec.js.map +1 -0
  15. package/lib/actions/file.action.d.ts +24 -0
  16. package/lib/actions/file.action.js +66 -0
  17. package/lib/actions/file.action.js.map +1 -0
  18. package/lib/actions/index.d.ts +9 -0
  19. package/lib/actions/index.js +10 -0
  20. package/lib/actions/index.js.map +1 -1
  21. package/lib/actions/phone-number.action.d.ts +18 -0
  22. package/lib/actions/phone-number.action.js +50 -2
  23. package/lib/actions/phone-number.action.js.map +1 -1
  24. package/lib/actions/queue.action.d.ts +3 -0
  25. package/lib/actions/queue.action.js +20 -0
  26. package/lib/actions/queue.action.js.map +1 -0
  27. package/lib/actions/route.action.d.ts +22 -0
  28. package/lib/actions/route.action.js +52 -0
  29. package/lib/actions/route.action.js.map +1 -0
  30. package/lib/cache/redis.js +1 -1
  31. package/lib/cache/redis.js.map +1 -1
  32. package/lib/database/MongoDBRepository.js.map +1 -1
  33. package/lib/database/MongoDBTypeRepository.d.ts +1 -0
  34. package/lib/database/MongoDBTypeRepository.js.map +1 -1
  35. package/lib/database/query.d.ts +3 -1
  36. package/lib/database/query.js +3 -53
  37. package/lib/database/query.js.map +1 -1
  38. package/lib/helpers/errors.d.ts +14 -1
  39. package/lib/helpers/errors.js +15 -32
  40. package/lib/helpers/errors.js.map +1 -1
  41. package/lib/helpers/index.d.ts +7 -0
  42. package/lib/helpers/index.js +35 -13
  43. package/lib/helpers/index.js.map +1 -1
  44. package/lib/http/axios.d.ts +18 -0
  45. package/lib/http/axios.js +38 -0
  46. package/lib/http/axios.js.map +1 -1
  47. package/lib/index.d.ts +3 -2
  48. package/lib/index.js +10 -2
  49. package/lib/index.js.map +1 -1
  50. package/lib/logger/logger.d.ts +3 -1
  51. package/lib/logger/logger.js +16 -8
  52. package/lib/logger/logger.js.map +1 -1
  53. package/lib/middlewares/common.d.ts +3 -2
  54. package/lib/middlewares/common.js +19 -8
  55. package/lib/middlewares/common.js.map +1 -1
  56. package/lib/middlewares/express.js +2 -2
  57. package/lib/middlewares/express.js.map +1 -1
  58. package/lib/monitoring/index.d.ts +3 -3
  59. package/lib/monitoring/index.js +6 -6
  60. package/lib/monitoring/index.js.map +1 -1
  61. package/lib/monitoring/rollbar.d.ts +15 -0
  62. package/lib/monitoring/rollbar.js +23 -0
  63. package/lib/monitoring/rollbar.js.map +1 -0
  64. package/lib/responses/express.d.ts +3 -0
  65. package/lib/responses/express.js +68 -13
  66. package/lib/responses/express.js.map +1 -1
  67. package/lib/test/actions/amount.action.test.d.ts +1 -0
  68. package/lib/test/actions/amount.action.test.js +81 -0
  69. package/lib/test/actions/amount.action.test.js.map +1 -0
  70. package/lib/test/actions/charge.action.test.js +125 -47
  71. package/lib/test/actions/charge.action.test.js.map +1 -1
  72. package/lib/test/database/test.spec.js +17 -0
  73. package/lib/test/database/test.spec.js.map +1 -1
  74. package/lib/translations/index.js +3 -6
  75. package/lib/translations/index.js.map +1 -1
  76. package/lib/tsconfig.tsbuildinfo +1 -1
  77. package/lib/types/broker.entity.d.ts +10 -0
  78. package/lib/types/custom.exception.d.ts +14 -0
  79. package/lib/types/custom.exception.js +16 -0
  80. package/lib/types/custom.exception.js.map +1 -0
  81. package/lib/types/index.d.ts +20 -83
  82. package/lib/types/index.js +25 -40
  83. package/lib/types/index.js.map +1 -1
  84. package/lib/types/integration.entity.d.ts +97 -0
  85. package/lib/types/integration.entity.js +61 -0
  86. package/lib/types/integration.entity.js.map +1 -0
  87. package/lib/types/wallet.entity.d.ts +34 -0
  88. package/lib/types/wallet.entity.js +24 -0
  89. package/lib/types/wallet.entity.js.map +1 -0
  90. package/package.json +22 -15
  91. package/readme.md +1 -1
  92. package/lib/cache/in-memory.d.ts +0 -0
  93. package/lib/cache/in-memory.js +0 -2
  94. package/lib/cache/in-memory.js.map +0 -1
  95. package/lib/logger/test.js +0 -45
  96. package/lib/logger/test.js.map +0 -1
  97. package/lib/secrets/aws.d.ts +0 -0
  98. package/lib/secrets/aws.js +0 -2
  99. package/lib/secrets/aws.js.map +0 -1
  100. /package/lib/{logger/test.d.ts → actions/database.action.spec.d.ts} +0 -0
@@ -3,39 +3,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.processAmount = exports.getCurrencySymbol = exports.symbols = exports.validateAmount = exports.formatAmountAndCurrency = exports.createAmountLabel = exports.FRANCOPHONE_CURRENCY_CODES = void 0;
6
+ exports.CurrencyAction = exports.symbols = exports.processAmount = exports.getCurrencySymbol = exports.validateAmount = exports.formatAmountAndCurrencyUsingInBuildIntlNumberFormat = exports.formatAmountAndCurrency = exports.createAmountLabel = exports.FRANCOPHONE_CURRENCY_CODES = void 0;
7
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ // import { AmountAction } from './amount.action';
8
9
  exports.FRANCOPHONE_CURRENCY_CODES = ['xaf', 'xof'];
10
+ const localeMap = {
11
+ XOF: 'fr',
12
+ XAF: 'fr',
13
+ };
9
14
  const createAmountLabel = (payload) => {
10
- payload.currencyLabel = payload.currencyLabel || payload.currency;
11
- if (payload.currencyLabel != payload.currency && payload.currencyExchangeValue != 1) {
12
- const amount = Number(new bignumber_js_1.default(payload.currencyExchangeValue || 1).multipliedBy(payload.amount).toFixed(2));
13
- return (0, exports.formatAmountAndCurrency)(payload.currencyLabel, Number(amount / 100).toFixed(2));
14
- }
15
- return (0, exports.formatAmountAndCurrency)(payload.currency, Number(payload.amount / 100).toFixed(2));
15
+ return CurrencyAction.createAmountLabel(payload);
16
16
  };
17
17
  exports.createAmountLabel = createAmountLabel;
18
18
  const formatAmountAndCurrency = (currency, value) => {
19
- //get currency symbol
20
- const currencySymbol = (0, exports.getCurrencySymbol)(currency);
21
- if (currency && exports.FRANCOPHONE_CURRENCY_CODES.includes(currency.toLowerCase()))
22
- return `${parseFloat(value || 0)
23
- .toFixed(0)
24
- .toLocaleString()} ${currencySymbol}`;
25
- return `${currencySymbol}${parseFloat(value || 0)
26
- .toFixed(2)
27
- .toLocaleString()}`;
19
+ return CurrencyAction.formatAmountAndCurrency(currency, value);
28
20
  };
29
21
  exports.formatAmountAndCurrency = formatAmountAndCurrency;
22
+ const formatAmountAndCurrencyUsingInBuildIntlNumberFormat = (currency, value) => {
23
+ return CurrencyAction.formatAmountAndCurrencyUsingInBuildIntlNumberFormat(currency, value);
24
+ };
25
+ exports.formatAmountAndCurrencyUsingInBuildIntlNumberFormat = formatAmountAndCurrencyUsingInBuildIntlNumberFormat;
30
26
  function validateAmount(currency, amount) {
31
- if (!['XOF', 'XAF'].includes(currency.toUpperCase()))
32
- return null;
33
- if (!Number.isInteger(amount / 100)) {
34
- return 'Oops. For XOF and XAF currencies, Please send in whole number amount as we do not allow decimal amounts';
35
- }
36
- return null;
27
+ return CurrencyAction.validateAmount(currency, amount);
37
28
  }
38
29
  exports.validateAmount = validateAmount;
30
+ const getCurrencySymbol = (currency) => {
31
+ return CurrencyAction.getCurrencySymbol(currency);
32
+ };
33
+ exports.getCurrencySymbol = getCurrencySymbol;
34
+ function processAmount(currency, amount) {
35
+ return CurrencyAction.processAmount(currency, amount);
36
+ }
37
+ exports.processAmount = processAmount;
39
38
  exports.symbols = {
40
39
  USD: '$', // US Dollar
41
40
  EUR: '€', // Euro
@@ -57,16 +56,55 @@ exports.symbols = {
57
56
  XAF: 'FCFA',
58
57
  GHS: 'GH₵', //ghana cedis
59
58
  };
60
- const getCurrencySymbol = (currency) => {
61
- return exports.symbols[currency] || currency;
62
- };
63
- exports.getCurrencySymbol = getCurrencySymbol;
64
- function processAmount(currency, amount) {
65
- if (!['XOF', 'XAF'].includes(currency))
66
- return amount;
67
- console.log('processAmount: Processing Francophone currency', amount);
68
- let amountInLargestCurrency = amount / 100;
69
- return Math.ceil(amountInLargestCurrency) * 100;
59
+ class CurrencyAction {
60
+ static createAmountLabel(payload) {
61
+ payload.currencyLabel = payload.currencyLabel || payload.currency;
62
+ if (payload.currencyLabel != payload.currency && payload.currencyExchangeValue != 1) {
63
+ const amount = Number(new bignumber_js_1.default(payload.currencyExchangeValue || 1).multipliedBy(payload.amount).toFixed(2));
64
+ return (0, exports.formatAmountAndCurrency)(payload.currencyLabel, Number(amount / 100).toFixed(2));
65
+ }
66
+ return (0, exports.formatAmountAndCurrency)(payload.currency, Number(payload.amount / 100).toFixed(2));
67
+ }
68
+ static formatAmountAndCurrency(currency, value) {
69
+ //get currency symbol
70
+ const currencySymbol = (0, exports.getCurrencySymbol)(currency);
71
+ if (currency && exports.FRANCOPHONE_CURRENCY_CODES.includes(currency.toLowerCase()))
72
+ return `${parseFloat(value || 0)
73
+ .toFixed(0)
74
+ .toLocaleString()} ${currencySymbol}`;
75
+ return `${currencySymbol}${parseFloat(value || 0)
76
+ .toFixed(2)
77
+ .toLocaleString()}`;
78
+ }
79
+ ;
80
+ static formatAmountAndCurrencyUsingInBuildIntlNumberFormat(currency, value) {
81
+ return new Intl.NumberFormat(localeMap[currency] || 'en', { style: 'currency', currency: currency })
82
+ .format(value)
83
+ .replace(/^(\D+)/, '$1 ')
84
+ .replace(/\s+/, ' ');
85
+ //we added the replace so we can remove all formatting character because it was breaking hash calculation
86
+ }
87
+ ;
88
+ static validateAmount(currency, amount) {
89
+ // return AmountAction.validateNonDecimalAmount(amount, currency)
90
+ if (!['XOF', 'XAF'].includes(currency.toUpperCase()))
91
+ return null;
92
+ if (!Number.isInteger(amount / 100)) {
93
+ return 'Oops. For XOF and XAF currencies, Please send in whole number amount as we do not allow decimal amounts';
94
+ }
95
+ return null;
96
+ }
97
+ static getCurrencySymbol(currency) {
98
+ return exports.symbols[currency] || currency;
99
+ }
100
+ ;
101
+ static processAmount(currency, amount) {
102
+ if (!['XOF', 'XAF'].includes(currency))
103
+ return amount;
104
+ console.log('processAmount: Processing Francophone currency', amount);
105
+ let amountInLargestCurrency = amount / 100;
106
+ return Math.ceil(amountInLargestCurrency) * 100;
107
+ }
70
108
  }
71
- exports.processAmount = processAmount;
109
+ exports.CurrencyAction = CurrencyAction;
72
110
  //# sourceMappingURL=currency.action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.action.js","sourceRoot":"","sources":["../../src/actions/currency.action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currency.action.js","sourceRoot":"","sources":["../../src/actions/currency.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description resolveRequestQueryToMongoDBQuery
3
+ * @param {object} requestQuery
4
+ * @returns {{filter: {}, limit: number, page: number, sort: {_id: number}}}
5
+ */
6
+ export declare class ObjectToMongoDBQueryOption {
7
+ dateField?: string;
8
+ dateFormat?: string;
9
+ searchFields?: string[];
10
+ }
11
+ export declare class ObjectToMongoDBQueryResult {
12
+ page?: number;
13
+ limit?: number;
14
+ expand?: string[];
15
+ filter: any;
16
+ sort: any;
17
+ }
18
+ export declare class DatabaseAction {
19
+ static resolveObjectToMongoDBQuery(requestQuery: Record<string, any>, options?: ObjectToMongoDBQueryOption): ObjectToMongoDBQueryResult;
20
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseAction = exports.ObjectToMongoDBQueryResult = exports.ObjectToMongoDBQueryOption = void 0;
4
+ const helpers_1 = require("../helpers");
5
+ const lodash_1 = require("lodash");
6
+ /**
7
+ * @description resolveRequestQueryToMongoDBQuery
8
+ * @param {object} requestQuery
9
+ * @returns {{filter: {}, limit: number, page: number, sort: {_id: number}}}
10
+ */
11
+ class ObjectToMongoDBQueryOption {
12
+ constructor() {
13
+ this.dateField = 'createdAt';
14
+ this.dateFormat = 'X';
15
+ }
16
+ }
17
+ exports.ObjectToMongoDBQueryOption = ObjectToMongoDBQueryOption;
18
+ class ObjectToMongoDBQueryResult {
19
+ constructor() {
20
+ this.page = 1;
21
+ this.limit = 50;
22
+ this.filter = {};
23
+ this.sort = { _id: -1 };
24
+ }
25
+ }
26
+ exports.ObjectToMongoDBQueryResult = ObjectToMongoDBQueryResult;
27
+ class DatabaseAction {
28
+ static resolveObjectToMongoDBQuery(requestQuery, options) {
29
+ var _a, _b, _c, _d;
30
+ if (!options) {
31
+ options = {
32
+ dateField: 'createdAt',
33
+ };
34
+ }
35
+ const response = {
36
+ page: 1,
37
+ limit: 50,
38
+ filter: {},
39
+ expand: [],
40
+ sort: { _id: -1 },
41
+ };
42
+ for (const key of Object.keys(requestQuery)) {
43
+ if (key === 'page') {
44
+ response.page = parseInt(requestQuery[key]);
45
+ continue;
46
+ }
47
+ if (key === 'limit') {
48
+ response.limit = parseInt(requestQuery[key]);
49
+ continue;
50
+ }
51
+ if (key === 'sort') {
52
+ const [sortKey, sortValue] = requestQuery[key].split(',');
53
+ response.sort = { [sortKey]: sortValue || -1 };
54
+ continue;
55
+ }
56
+ if (key == "expand") {
57
+ response.expand = (_a = requestQuery === null || requestQuery === void 0 ? void 0 : requestQuery[key]) === null || _a === void 0 ? void 0 : _a.split(",");
58
+ continue;
59
+ }
60
+ if (key === 'dateFrom' && !(0, lodash_1.isEmpty)(requestQuery[key])) {
61
+ response.filter[options.dateField || 'createdAt'] = Object.assign(Object.assign({}, response.filter[options.dateField || 'createdAt']), { $gte: (0, helpers_1.dayjs)(requestQuery[key] || new Date(), (_b = options === null || options === void 0 ? void 0 : options.dateFormat) !== null && _b !== void 0 ? _b : 'DD-MM-YYYY').startOf('day').toDate() });
62
+ continue;
63
+ }
64
+ if (key === 'dateTo' && !(0, lodash_1.isEmpty)(requestQuery[key])) {
65
+ response.filter[options.dateField || 'createdAt'] = Object.assign(Object.assign({}, response.filter[options.dateField || 'createdAt']), { $lte: (0, helpers_1.dayjs)(requestQuery[key] || new Date(), (_c = options === null || options === void 0 ? void 0 : options.dateFormat) !== null && _c !== void 0 ? _c : 'DD-MM-YYYY').endOf('day').toDate() });
66
+ continue;
67
+ }
68
+ //query
69
+ if (key === 'q') {
70
+ const sanitizedQuery = requestQuery[key].replace(/[^\w\s]/gi, '');
71
+ if (!((_d = options.searchFields) === null || _d === void 0 ? void 0 : _d.length)) {
72
+ response.filter.$text = {
73
+ $search: new RegExp(sanitizedQuery, 'gi'),
74
+ $caseSensitive: false,
75
+ };
76
+ continue;
77
+ }
78
+ response.filter.$or = [...(response.filter.$or || [])];
79
+ options.searchFields.forEach((field) => {
80
+ response.filter.$or.push({ [field]: new RegExp(sanitizedQuery, 'gi') });
81
+ });
82
+ continue;
83
+ }
84
+ response.filter[key] = requestQuery[key];
85
+ }
86
+ return response;
87
+ }
88
+ }
89
+ exports.DatabaseAction = DatabaseAction;
90
+ //# sourceMappingURL=database.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.action.js","sourceRoot":"","sources":["../../src/actions/database.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // database.action.test.ts
4
+ const database_action_1 = require("./database.action");
5
+ // Mock the dependencies
6
+ // jest.mock('../helpers', () => ({
7
+ // dayjs: jest.fn().mockImplementation((date, format) => {
8
+ // const mockDayjs = {
9
+ // startOf: jest.fn().mockReturnThis(),
10
+ // endOf: jest.fn().mockReturnThis(),
11
+ // toDate: jest.fn().mockReturnValue(new Date(date))
12
+ // };
13
+ // return mockDayjs;
14
+ // })
15
+ // }));
16
+ jest.mock('lodash', () => ({
17
+ isEmpty: jest.fn().mockImplementation((value) => {
18
+ return value === null || value === undefined || value === '' ||
19
+ (Array.isArray(value) && value.length === 0) ||
20
+ (typeof value === 'object' && Object.keys(value).length === 0);
21
+ })
22
+ }));
23
+ describe('DatabaseAction', () => {
24
+ describe('resolveObjectToMongoDBQuery', () => {
25
+ afterEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+ it('should return default values when empty request query is provided', () => {
29
+ const requestQuery = {};
30
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
31
+ expect(result).toEqual({
32
+ page: 1,
33
+ limit: 50,
34
+ filter: {},
35
+ expand: [],
36
+ sort: { _id: -1 }
37
+ });
38
+ });
39
+ it('should use default options when options parameter is not provided', () => {
40
+ const requestQuery = { dateFrom: '01-01-2023', dateTo: '31-01-2023' };
41
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
42
+ expect(result.filter.createdAt).toBeDefined();
43
+ });
44
+ it('should parse page and limit parameters correctly', () => {
45
+ const requestQuery = { page: '2', limit: '25' };
46
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
47
+ expect(result.page).toBe(2);
48
+ expect(result.limit).toBe(25);
49
+ });
50
+ it('should handle non-numeric page and limit parameters', () => {
51
+ const requestQuery = { page: 'abc', limit: 'xyz' };
52
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
53
+ expect(result.page).toBe(NaN);
54
+ expect(result.limit).toBe(NaN);
55
+ });
56
+ it('should parse sort parameters correctly with provided sortValue', () => {
57
+ const requestQuery = { sort: 'name,1' };
58
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
59
+ expect(result.sort).toEqual({ name: '1' });
60
+ });
61
+ it('should parse sort parameters correctly with default sortValue', () => {
62
+ const requestQuery = { sort: 'name' };
63
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
64
+ expect(result.sort).toEqual({ name: -1 });
65
+ });
66
+ it('should handle expand parameter correctly', () => {
67
+ const requestQuery = { expand: 'user,profile,settings' };
68
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
69
+ expect(result.expand).toEqual(['user', 'profile', 'settings']);
70
+ });
71
+ it('should handle empty expand parameter', () => {
72
+ const requestQuery = { expand: '' };
73
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
74
+ expect(result.expand).toEqual(['']);
75
+ });
76
+ it('should handle dateFrom parameter correctly', () => {
77
+ const requestQuery = { dateFrom: '01-01-2023' };
78
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
79
+ expect(result.filter.createdAt.$gte).toEqual(new Date('01-01-2023'));
80
+ });
81
+ it('should handle dateTo parameter correctly', () => {
82
+ const requestQuery = { dateTo: '31-01-2023' };
83
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
84
+ expect(result.filter.createdAt.$lte).toEqual(new Date('31-01-2023'));
85
+ });
86
+ it('should handle both dateFrom and dateTo parameters correctly', () => {
87
+ const requestQuery = { dateFrom: '01-01-2023', dateTo: '31-01-2023' };
88
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
89
+ expect(result.filter.createdAt.$gte).toEqual(new Date('01-01-2023'));
90
+ expect(result.filter.createdAt.$lte).toEqual(new Date('31-01-2023'));
91
+ });
92
+ it('should use custom dateField from options', () => {
93
+ const requestQuery = { dateFrom: '01-01-2023', dateTo: '31-01-2023' };
94
+ const options = { dateField: 'updatedAt' };
95
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery, options);
96
+ expect(result.filter.updatedAt.$gte).toEqual(new Date('01-01-2023'));
97
+ expect(result.filter.updatedAt.$lte).toEqual(new Date('31-01-2023'));
98
+ });
99
+ it('should use custom dateFormat from options', () => {
100
+ const requestQuery = { dateFrom: '2023-01-01', dateTo: '2023-01-31' };
101
+ const options = { dateFormat: 'YYYY-MM-DD' };
102
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery, options);
103
+ });
104
+ it('should ignore empty dateFrom and dateTo parameters', () => {
105
+ const requestQuery = { dateFrom: '', dateTo: '' };
106
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
107
+ expect(result.filter.createdAt).toBeUndefined();
108
+ });
109
+ it('should handle search query with no searchFields', () => {
110
+ const requestQuery = { q: 'test-query' };
111
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
112
+ // Should sanitize the query
113
+ const sanitizedQuery = 'testquery';
114
+ expect(result.filter.$text).toEqual({
115
+ $search: expect.any(RegExp),
116
+ $caseSensitive: false
117
+ });
118
+ // Check the regex pattern
119
+ const regex = result.filter.$text.$search;
120
+ expect(regex.source).toBe(sanitizedQuery);
121
+ expect(regex.flags).toBe('gi');
122
+ });
123
+ it('should sanitize special characters from search query', () => {
124
+ const requestQuery = { q: '+test-query with $pecial ch@racters!' };
125
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
126
+ // The sanitized query should only contain alphanumeric characters and spaces
127
+ expect(result.filter.$text.$search.source).toBe('testquery with pecial chracters');
128
+ });
129
+ it('should handle search query with provided searchFields', () => {
130
+ const requestQuery = { q: 'test-query' };
131
+ const options = {
132
+ searchFields: ['name', 'description', 'tags']
133
+ };
134
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery, options);
135
+ // Should sanitize the query
136
+ const sanitizedQuery = 'testquery';
137
+ expect(result.filter.$or).toEqual([
138
+ { name: expect.any(RegExp) },
139
+ { description: expect.any(RegExp) },
140
+ { tags: expect.any(RegExp) }
141
+ ]);
142
+ // Check the regex patterns
143
+ result.filter.$or.forEach((item) => {
144
+ const field = Object.keys(item)[0];
145
+ const regex = item[field];
146
+ expect(regex.source).toBe(sanitizedQuery);
147
+ expect(regex.flags).toBe('gi');
148
+ });
149
+ });
150
+ it('should append to existing $or array when handling search with searchFields', () => {
151
+ const requestQuery = { q: 'test-query', status: 'active' };
152
+ const existingOr = [{ type: 'special' }];
153
+ const options = {
154
+ searchFields: ['name']
155
+ };
156
+ // First add an $or condition
157
+ const initialResult = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery({ $or: existingOr }, options);
158
+ // Then process the search query
159
+ const finalResult = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery, options);
160
+ expect(finalResult.filter.$or.length).toBe(1);
161
+ });
162
+ it('should add other query parameters to filter directly', () => {
163
+ const requestQuery = { status: 'active', category: 'books', isPublished: true };
164
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
165
+ expect(result.filter.status).toBe('active');
166
+ expect(result.filter.category).toBe('books');
167
+ expect(result.filter.isPublished).toBe(true);
168
+ });
169
+ it('should handle mixed query parameters correctly', () => {
170
+ const requestQuery = {
171
+ page: '2',
172
+ limit: '25',
173
+ sort: 'createdAt,-1',
174
+ expand: 'author,comments',
175
+ dateFrom: '01-01-2023',
176
+ dateTo: '31-01-2023',
177
+ q: 'Harry Potter',
178
+ status: 'published',
179
+ category: 'fiction'
180
+ };
181
+ const options = {
182
+ searchFields: ['title', 'description']
183
+ };
184
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery, options);
185
+ expect(result.page).toBe(2);
186
+ expect(result.limit).toBe(25);
187
+ expect(result.sort).toEqual({ createdAt: '-1' });
188
+ expect(result.expand).toEqual(['author', 'comments']);
189
+ expect(result.filter.createdAt.$gte).toEqual(new Date('01-01-2023'));
190
+ expect(result.filter.createdAt.$lte).toEqual(new Date('31-01-2023'));
191
+ expect(result.filter.$or).toHaveLength(2);
192
+ expect(result.filter.status).toBe('published');
193
+ expect(result.filter.category).toBe('fiction');
194
+ });
195
+ it('should handle null or undefined values in request query', () => {
196
+ const requestQuery = {
197
+ status: null,
198
+ category: undefined,
199
+ tags: []
200
+ };
201
+ const result = database_action_1.DatabaseAction.resolveObjectToMongoDBQuery(requestQuery);
202
+ expect(result.filter.status).toBe(null);
203
+ expect(result.filter.category).toBe(undefined);
204
+ expect(result.filter.tags).toEqual([]);
205
+ });
206
+ });
207
+ });
208
+ //# sourceMappingURL=database.action.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.action.spec.js","sourceRoot":"","sources":["../../src/actions/database.action.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /// <reference types="node" />
2
+ import { PFunctionResult } from '../types';
3
+ export declare enum FileType {
4
+ csv = "csv",
5
+ xlsx = "xlsx",
6
+ xls = "xls"
7
+ }
8
+ export declare enum FileSourceOrDestination {
9
+ url = "url",
10
+ csv = "csv",
11
+ json = "json"
12
+ }
13
+ export type ConvertFilePayload = {
14
+ clientId: string;
15
+ source: FileSourceOrDestination;
16
+ destination: FileSourceOrDestination;
17
+ fileType: FileType;
18
+ sourceFile?: string | Buffer;
19
+ destinationFileParams?: Record<string, any>;
20
+ };
21
+ export declare class FileAction {
22
+ static getFileFromURL(url: string): Promise<Buffer>;
23
+ static convertFile(payload: ConvertFilePayload): PFunctionResult<any>;
24
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FileAction = exports.FileSourceOrDestination = exports.FileType = void 0;
13
+ const sync_1 = require("csv-parse/sync");
14
+ var FileType;
15
+ (function (FileType) {
16
+ FileType["csv"] = "csv";
17
+ FileType["xlsx"] = "xlsx";
18
+ FileType["xls"] = "xls";
19
+ })(FileType || (exports.FileType = FileType = {}));
20
+ var FileSourceOrDestination;
21
+ (function (FileSourceOrDestination) {
22
+ FileSourceOrDestination["url"] = "url";
23
+ FileSourceOrDestination["csv"] = "csv";
24
+ FileSourceOrDestination["json"] = "json";
25
+ })(FileSourceOrDestination || (exports.FileSourceOrDestination = FileSourceOrDestination = {}));
26
+ class FileAction {
27
+ static getFileFromURL(url) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const result = yield fetch(url);
30
+ const arrayBuffer = yield result.arrayBuffer();
31
+ return Buffer.from(arrayBuffer);
32
+ });
33
+ }
34
+ static convertFile(payload) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ let file;
37
+ if (payload.source === FileSourceOrDestination.url) {
38
+ const result = yield fetch(payload.sourceFile);
39
+ file = yield result.arrayBuffer();
40
+ }
41
+ if (payload.fileType == FileType.csv && payload.destination === FileSourceOrDestination.json) {
42
+ return {
43
+ data: (0, sync_1.parse)(Buffer.from(file).toString(), payload.destinationFileParams)
44
+ };
45
+ }
46
+ return {
47
+ data: file
48
+ };
49
+ });
50
+ }
51
+ }
52
+ exports.FileAction = FileAction;
53
+ // FileAction.convertFile({
54
+ // clientId: 'payfusion',
55
+ // source: FileSourceOrDestination.url,
56
+ // fileType: FileType.csv,
57
+ // sourceFile: "https://files.6thbridge.com/public/v1/files/payfusion/content/67e9d3d2df9991dd2af17a89",
58
+ // destination: FileSourceOrDestination.json,
59
+ // destinationFileParams: {
60
+ // columns: true,
61
+ // // from_line: 6,
62
+ // // skip_empty_lines: true,
63
+ // }
64
+ // }).then(console.log)
65
+ // .catch(console.error);
66
+ //# sourceMappingURL=file.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.action.js","sourceRoot":"","sources":["../../src/actions/file.action.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAAuC;AAEvC,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,uBAAW,CAAA;AACb,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AACD,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,sCAAU,CAAA;IACV,sCAAW,CAAA;IACX,wCAAa,CAAA;AACf,CAAC,EAJW,uBAAuB,uCAAvB,uBAAuB,QAIlC;AAWD,MAAa,UAAU;IACrB,MAAM,CAAO,cAAc,CAAC,GAAW;;YACrC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;KAAA;IAED,MAAM,CAAO,WAAW,CAAC,OAA2B;;YAClD,IAAI,IAAkB,CAAC;YACvB,IAAG,OAAO,CAAC,MAAM,KAAK,uBAAuB,CAAC,GAAG,EAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAoB,CAAC,CAAC;gBACzD,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YACpC,CAAC;YAED,IAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,KAAK,uBAAuB,CAAC,IAAI,EAAC,CAAC;gBAC3F,OAAO;oBACL,IAAI,EAAE,IAAA,YAAK,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,qBAAqB,CAAC;iBACzE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;KAAA;CACF;AAxBD,gCAwBC;AAED,2BAA2B;AAC3B,2BAA2B;AAC3B,yCAAyC;AACzC,4BAA4B;AAC5B,0GAA0G;AAC1G,+CAA+C;AAC/C,6BAA6B;AAC7B,qBAAqB;AACrB,uBAAuB;AACvB,iCAAiC;AACjC,MAAM;AACN,uBAAuB;AACvB,2BAA2B"}
@@ -1,9 +1,18 @@
1
1
  import * as currency from './currency.action';
2
2
  import * as charge from './charge.action';
3
3
  import * as phoneNumber from './phone-number.action';
4
+ import { AmountAction } from './amount.action';
5
+ import { FileAction, FileType, FileSourceOrDestination } from './file.action';
4
6
  declare const _default: {
5
7
  currency: typeof currency;
6
8
  charge: typeof charge;
7
9
  phoneNumber: typeof phoneNumber;
10
+ AmountAction: typeof AmountAction;
11
+ ChargeAction: typeof charge.ChargeAction;
12
+ CurrencyAction: typeof currency.CurrencyAction;
13
+ PhoneNumberAction: typeof phoneNumber.PhoneNumberAction;
14
+ FileAction: typeof FileAction;
15
+ FileType: typeof FileType;
16
+ FileSourceOrDestination: typeof FileSourceOrDestination;
8
17
  };
9
18
  export = _default;
@@ -25,9 +25,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  const currency = __importStar(require("./currency.action"));
26
26
  const charge = __importStar(require("./charge.action"));
27
27
  const phoneNumber = __importStar(require("./phone-number.action"));
28
+ const amount_action_1 = require("./amount.action");
29
+ const charge_action_1 = require("./charge.action");
30
+ const currency_action_1 = require("./currency.action");
31
+ const phone_number_action_1 = require("./phone-number.action");
32
+ const file_action_1 = require("./file.action");
28
33
  module.exports = {
29
34
  currency,
30
35
  charge,
31
36
  phoneNumber,
37
+ AmountAction: amount_action_1.AmountAction,
38
+ ChargeAction: charge_action_1.ChargeAction,
39
+ CurrencyAction: currency_action_1.CurrencyAction,
40
+ PhoneNumberAction: phone_number_action_1.PhoneNumberAction,
41
+ FileAction: file_action_1.FileAction, FileType: file_action_1.FileType, FileSourceOrDestination: file_action_1.FileSourceOrDestination,
32
42
  };
33
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAC9C,wDAA0C;AAC1C,mEAAqD;AAErD,iBAAS;IACP,QAAQ;IACR,MAAM;IACN,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAC9C,wDAA0C;AAC1C,mEAAqD;AACrD,mDAA+C;AAC/C,mDAA+C;AAC/C,uDAAmD;AACnD,+DAA0D;AAC1D,+CAA8E;AAC9E,iBAAS;IACP,QAAQ;IACR,MAAM;IACN,WAAW;IACX,YAAY,EAAZ,4BAAY;IACZ,YAAY,EAAZ,4BAAY;IACZ,cAAc,EAAd,gCAAc;IACd,iBAAiB,EAAjB,uCAAiB;IACjB,UAAU,EAAV,wBAAU,EAAE,QAAQ,EAAR,sBAAQ,EAAE,uBAAuB,EAAvB,qCAAuB;CAC9C,CAAC"}