UNPKG

@sugarcube/plugin-csv

Version:
48 lines (37 loc) 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.parseMany = exports.parse = void 0; var _fp = require("lodash/fp"); var _dashp = require("dashp"); var _csvParse = _interopRequireDefault(require("csv-parse")); var _fs = _interopRequireDefault(require("fs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const parse = (0, _fp.curry)((delimiter, unit) => { const records = []; const parser = (0, _csvParse.default)({ delimiter, columns: true }); const input = _fs.default.createReadStream(unit.location); // eslint-disable-next-line promise/avoid-new return new Promise((resolve, reject) => { parser.on("error", reject); parser.on("finish", () => resolve(records)); parser.on("readable", () => { let record; // eslint-disable-next-line no-cond-assign while (record = parser.read()) { records.push((0, _fp.merge)(unit, record)); } }); input.pipe(parser); }); }); exports.parse = parse; const parseMany = (0, _fp.curry)((delimiter, units) => (0, _dashp.fold)((memo, unit) => parse(delimiter, unit).then((0, _fp.concat)(memo)), [], units)); exports.parseMany = parseMany; var _default = { parse, parseMany }; exports.default = _default;