@ashray.mehta/statement-converter 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StatementConverter = void 0;
11
13
  const N26Adapter_1 = require("./adapters/N26Adapter");
12
14
  const ABNAdapter_1 = require("./adapters/ABNAdapter");
13
15
  const AxisAdapter_1 = require("./adapters/AxisAdapter");
@@ -15,6 +17,7 @@ const ICICIAdapter_1 = require("./adapters/ICICIAdapter");
15
17
  const ICICICreditCardAdapter_1 = require("./adapters/ICICICreditCardAdapter");
16
18
  const StandardCharteredAdapter_1 = require("./adapters/StandardCharteredAdapter");
17
19
  const TransactionsQifConverter_1 = require("./adapters/TransactionsQifConverter");
20
+ const MT940Adapter_1 = require("./adapters/MT940Adapter");
18
21
  class StatementConverter {
19
22
  constructor() {
20
23
  this.transactionsToQif = new TransactionsQifConverter_1.TransactionsQifConverter();
@@ -25,6 +28,7 @@ class StatementConverter {
25
28
  new StandardCharteredAdapter_1.StandardCharteredAdapter(),
26
29
  new ABNAdapter_1.ABNAdapter(),
27
30
  new N26Adapter_1.N26Adapter(),
31
+ new MT940Adapter_1.MT940Adapter(),
28
32
  ];
29
33
  }
30
34
  convert(bank, fileData) {
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ABNAdapter = void 0;
11
13
  const __1 = require("..");
12
14
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
13
15
  const TransactionAdapter_1 = require("./TransactionAdapter");
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AxisAdapter = void 0;
11
13
  const __1 = require("..");
12
14
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
13
15
  const TransactionAdapter_1 = require("./TransactionAdapter");
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ICICIAdapter = void 0;
11
13
  const XLSX = require("xlsx");
12
14
  const __1 = require("..");
13
15
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ICICICreditCardAdapter = void 0;
11
13
  const XLSX = require("xlsx");
12
14
  const __1 = require("..");
13
15
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
@@ -0,0 +1,7 @@
1
+ import { Bank } from '..';
2
+ import { Transaction } from '../models/Transaction';
3
+ import { TransactionAdapter } from './TransactionAdapter';
4
+ export declare class MT940Adapter extends TransactionAdapter {
5
+ convert(data: ArrayBuffer): Promise<Transaction[]>;
6
+ supports(bank: Bank): boolean;
7
+ }
@@ -0,0 +1,48 @@
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.MT940Adapter = void 0;
13
+ const __1 = require("..");
14
+ const TransactionAdapter_1 = require("./TransactionAdapter");
15
+ const stitch_swiftmessageparser_1 = require("stitch-swiftmessageparser");
16
+ const lodash_1 = require("lodash");
17
+ const moment = require("moment");
18
+ class MT940Adapter extends TransactionAdapter_1.TransactionAdapter {
19
+ convert(data) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const rows = stitch_swiftmessageparser_1.default.parse({
22
+ data: new TextDecoder().decode(data),
23
+ type: "mt940",
24
+ });
25
+ return (0, lodash_1.flatMap)(rows, row => row.transactions)
26
+ .map((row) => {
27
+ const parsedDate = moment(row.date);
28
+ const date = parsedDate.toDate();
29
+ const amount = row.amount;
30
+ const outflow = amount.isNegative() ? amount.abs().toNumber() : 0;
31
+ const inflow = amount.isPositive() ? amount.toNumber() : 0;
32
+ const memo = row.bankReference;
33
+ return {
34
+ Payee: memo,
35
+ Outflow: outflow,
36
+ Inflow: inflow,
37
+ Date: date,
38
+ Memo: memo,
39
+ Category: null
40
+ };
41
+ }).filter(row => !!row);
42
+ });
43
+ }
44
+ supports(bank) {
45
+ return bank === __1.Bank.GenericMT940;
46
+ }
47
+ }
48
+ exports.MT940Adapter = MT940Adapter;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.N26Adapter = void 0;
11
13
  const __1 = require("..");
12
14
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
13
15
  const TransactionAdapter_1 = require("./TransactionAdapter");
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StandardCharteredAdapter = void 0;
11
13
  const __1 = require("..");
12
14
  const XLSXUtil_1 = require("../helpers/XLSXUtil");
13
15
  const TransactionAdapter_1 = require("./TransactionAdapter");
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionAdapter = void 0;
3
4
  class TransactionAdapter {
4
5
  }
5
6
  exports.TransactionAdapter = TransactionAdapter;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
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); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TransactionsQifConverter = void 0;
11
13
  const qif = require("qif");
12
14
  const moment = require("moment");
13
15
  class TransactionsQifConverter {
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberUtil = void 0;
3
4
  const multi_number_parse_1 = require("multi-number-parse");
4
5
  class NumberUtil {
5
6
  parseNumber(text) {
@@ -10,7 +11,7 @@ class NumberUtil {
10
11
  if (!trimmedText) {
11
12
  return undefined;
12
13
  }
13
- return multi_number_parse_1.default(trimmedText);
14
+ return (0, multi_number_parse_1.default)(trimmedText);
14
15
  }
15
16
  }
16
17
  exports.NumberUtil = NumberUtil;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XLSXUtil = void 0;
3
4
  const lodash_1 = require("lodash");
4
5
  const NumberUtil_1 = require("./NumberUtil");
5
6
  const xlsx_1 = require("xlsx");
@@ -16,7 +17,7 @@ class XLSXUtil {
16
17
  const cell = sheet[cellAddress];
17
18
  if (!(cell.t == 's' || cell.t == 'str'))
18
19
  continue;
19
- if (lodash_1.trim(cell.v) === lodash_1.trim(text))
20
+ if ((0, lodash_1.trim)(cell.v) === (0, lodash_1.trim)(text))
20
21
  return xlsx_1.utils.decode_cell(cellAddress);
21
22
  }
22
23
  }
@@ -30,7 +31,7 @@ class XLSXUtil {
30
31
  if (!sheet[cellAddress])
31
32
  return null;
32
33
  const value = sheet[cellAddress].v;
33
- return lodash_1.isNumber(value) ? value : new NumberUtil_1.NumberUtil().parseNumber(value);
34
+ return (0, lodash_1.isNumber)(value) ? value : new NumberUtil_1.NumberUtil().parseNumber(value).valueOf();
34
35
  }
35
36
  }
36
37
  exports.XLSXUtil = XLSXUtil;
package/index.js CHANGED
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
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
+ };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
- __export(require("./StatementConverter"));
7
- __export(require("./models/Bank"));
17
+ __exportStar(require("./StatementConverter"), exports);
18
+ __exportStar(require("./models/Bank"), exports);
package/models/Bank.d.ts CHANGED
@@ -4,5 +4,6 @@ export declare enum Bank {
4
4
  ICICICreditCard = "icicicc",
5
5
  StandardChartered = "sc",
6
6
  ABN = "abn",
7
- N26 = "n26"
7
+ N26 = "n26",
8
+ GenericMT940 = "Others (MT940)"
8
9
  }
package/models/Bank.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Bank = void 0;
3
4
  var Bank;
4
5
  (function (Bank) {
5
6
  Bank["Axis"] = "axis";
@@ -8,4 +9,5 @@ var Bank;
8
9
  Bank["StandardChartered"] = "sc";
9
10
  Bank["ABN"] = "abn";
10
11
  Bank["N26"] = "n26";
12
+ Bank["GenericMT940"] = "Others (MT940)";
11
13
  })(Bank = exports.Bank || (exports.Bank = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashray.mehta/statement-converter",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "Library to convert statements from frequently used banks to QIF.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -13,10 +13,12 @@
13
13
  },
14
14
  "license": "ISC",
15
15
  "dependencies": {
16
+ "@types/lodash": "^4.14.186",
16
17
  "lodash": "^4.17.11",
17
18
  "moment": "^2.23.0",
18
19
  "multi-number-parse": "^1.1.0",
19
20
  "qif": "0.0.2",
21
+ "stitch-swiftmessageparser": "^2.0.1",
20
22
  "xlsx": "0.16.9"
21
23
  },
22
24
  "devDependencies": {
@@ -24,7 +26,7 @@
24
26
  "@types/globalize": "^1.5.0",
25
27
  "@types/mocha": "^8.2.0",
26
28
  "@types/moment": "^2.13.0",
27
- "@types/node": "^10.12.15",
29
+ "@types/node": "^18.11.7",
28
30
  "@types/yargs": "^12.0.1",
29
31
  "chai": "^4.2.0",
30
32
  "del": "^3.0.0",
@@ -34,6 +36,6 @@
34
36
  "gulp-zip": "^4.2.0",
35
37
  "mocha": "^8.2.1",
36
38
  "ts-node": "^9.1.1",
37
- "typescript": "^3.2.2"
39
+ "typescript": "^4.8.3"
38
40
  }
39
41
  }