ynab-api-importer
Version:
Import bank transactions into YNAB
51 lines • 4.89 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sync = void 0;
const F = __importStar(require("fp-ts/function"));
const O = __importStar(require("fp-ts/Option"));
const Rx = __importStar(require("rxjs"));
const RxOp = __importStar(require("rxjs/operators"));
const logger_1 = __importDefault(require("./logger"));
const sync = (ynab) => (ynabBudgetID) => (banks) => (accounts) => Rx.from(accounts).pipe(RxOp.flatMap(account => F.pipe(O.fromNullable(banks.get(account.bank)), O.fold(() => {
logger_1.default.info("Could not find bank:", account.bank);
return Rx.EMPTY;
}, ([fetch, _cleanup]) => Rx.of({ account, fetch })))), RxOp.tap(({ account: { id, bank } }) => logger_1.default.info(`Exporting ${bank} - ${id}`)), RxOp.flatMap(({ account: { bank, id, ynabID }, fetch }) => fetch(id, ynabID).then(r => {
logger_1.default.info(`Exported ${bank} - ${id} (${r.length})`);
return r;
})), RxOp.reduce((acc, t) => acc.concat(t), []), RxOp.filter(t => !!t.length), RxOp.flatMap(transactions => ynab.transactions
.createTransactions(ynabBudgetID, {
transactions,
})
.then(r => {
logger_1.default.debug(r);
}, err => {
logger_1.default.info("ERROR", err);
})), RxOp.tap(() => logger_1.default.info("Transactions imported")));
exports.sync = sync;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWNjb3VudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBb0M7QUFDcEMsZ0RBQWtDO0FBQ2xDLHlDQUEyQjtBQUMzQixxREFBdUM7QUFHdkMsc0RBQThCO0FBWXZCLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRSxDQUFDLENBQzNELEtBQWUsRUFDZixFQUFFLENBQUMsQ0FBQyxRQUFvQixFQUFFLEVBQUUsQ0FDNUIsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDckIsQ0FBQyxDQUFDLElBQUksQ0FDSixDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQ0osR0FBRyxFQUFFO0lBQ0gsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztBQUNsQixDQUFDLEVBQ0QsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUNqRCxDQUNGLENBQ0YsRUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ3JDLGdCQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQ3pDLEVBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ3hELEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3pCLGdCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQyxDQUNILEVBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBdUIsQ0FBQyxFQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFFNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMxQixJQUFJLENBQUMsWUFBWTtLQUNkLGtCQUFrQixDQUFDLFlBQVksRUFBRTtJQUNoQyxZQUFZO0NBQ2IsQ0FBQztLQUNELElBQUksQ0FDSCxDQUFDLENBQUMsRUFBRTtJQUNGLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtJQUNKLGdCQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQ0YsQ0FDSixFQUVELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0FBL0NTLFFBQUEsSUFBSSxRQStDYiJ9