feedbaby-client
Version:
Client for the FeedBaby App
52 lines (51 loc) • 2.11 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const csvtojson_1 = __importDefault(require("csvtojson"));
class CsvFile {
constructor(parser) {
this.parser = parser;
}
static createOptions(headers) {
return { fields: headers, quote: '', eol: CsvFile.CRLF };
}
static spaceHeaders(csv) {
let indexOfNewline = csv.indexOf(CsvFile.CRLF);
if (indexOfNewline > 0) {
indexOfNewline += CsvFile.CRLF.length;
}
else {
indexOfNewline = csv.length;
}
const header = csv.slice(0, indexOfNewline);
const data = csv.slice(indexOfNewline);
return header.split(CsvFile.DELIMITER).join(`${CsvFile.DELIMITER} `) + data;
}
static addTrailingNewline(csv) {
return `${csv}${CsvFile.CRLF}`;
}
save(data) {
const csv = this.parser.parse(data);
const preparedCsv = CsvFile.addTrailingNewline(CsvFile.spaceHeaders(csv));
return Buffer.from(preparedCsv);
}
read(data) {
return __awaiter(this, void 0, void 0, function* () {
return yield csvtojson_1.default().fromString(data.toString('utf8'));
});
}
}
exports.CsvFile = CsvFile;
CsvFile.CRLF = '\r\n';
CsvFile.DELIMITER = ',';