Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

csvtojson

Package Overview
Dependencies
Maintainers
1
Versions
86
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

csvtojson - npm Package Compare versions

Comparing version
2.0.8
to
2.0.10
+212
.ts-node/4c960549d...b167a1060208a0fdf57d39dc695ae209e0c9.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var CSVError_1 = __importDefault(require("./CSVError"));
var set_1 = __importDefault(require("lodash/set"));
var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
function default_1(csvRows, conv) {
var res = [];
for (var i = 0, len = csvRows.length; i < len; i++) {
var r = processRow(csvRows[i], conv, i);
if (r) {
res.push(r);
}
}
return res;
}
exports.default = default_1;
;
function processRow(row, conv, index) {
if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) {
throw (CSVError_1.default.column_mismatched(conv.parseRuntime.parsedLineNumber + index));
}
var headRow = conv.parseRuntime.headers || [];
var resultRow = convertRowToJson(row, headRow, conv);
if (resultRow) {
return resultRow;
}
else {
return null;
}
}
function convertRowToJson(row, headRow, conv) {
var hasValue = false;
var resultRow = {};
for (var i = 0, len = row.length; i < len; i++) {
var item = row[i];
if (conv.parseParam.ignoreEmpty && item === '') {
continue;
}
hasValue = true;
var head = headRow[i];
if (!head || head === "") {
head = headRow[i] = "field" + (i + 1);
}
var convFunc = getConvFunc(head, i, conv);
if (convFunc) {
var convRes = convFunc(item, head, resultRow, row, i);
if (convRes !== undefined) {
setPath(resultRow, head, convRes, conv, i);
}
}
else {
// var flag = getFlag(head, i, param);
// if (flag === 'omit') {
// continue;
// }
if (conv.parseParam.checkType) {
var convertFunc = checkType(item, head, i, conv);
item = convertFunc(item);
}
if (item !== undefined) {
setPath(resultRow, head, item, conv, i);
}
}
}
if (hasValue) {
return resultRow;
}
else {
return null;
}
}
var builtInConv = {
"string": stringType,
"number": numberType,
"omit": function () { }
};
function getConvFunc(head, i, conv) {
if (conv.parseRuntime.columnConv[i] !== undefined) {
return conv.parseRuntime.columnConv[i];
}
else {
var flag = conv.parseParam.colParser[head];
if (flag === undefined) {
return conv.parseRuntime.columnConv[i] = null;
}
if (typeof flag === "object") {
flag = flag.cellParser || "string";
}
if (typeof flag === "string") {
flag = flag.trim().toLowerCase();
var builtInFunc = builtInConv[flag];
if (builtInFunc) {
return conv.parseRuntime.columnConv[i] = builtInFunc;
}
else {
return conv.parseRuntime.columnConv[i] = null;
}
}
else if (typeof flag === "function") {
return conv.parseRuntime.columnConv[i] = flag;
}
else {
return conv.parseRuntime.columnConv[i] = null;
}
}
}
function setPath(resultJson, head, value, conv, headIdx) {
if (!conv.parseRuntime.columnValueSetter[headIdx]) {
if (conv.parseParam.flatKeys) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
else {
if (head.indexOf(".") > -1) {
var headArr = head.split(".");
var jsonHead = true;
while (headArr.length > 0) {
var headCom = headArr.shift();
if (headCom.length === 0) {
jsonHead = false;
break;
}
}
if (!jsonHead || conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
else {
conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter;
}
}
else {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
}
}
if (conv.parseParam.nullObject === true && value === "null") {
value = null;
}
conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);
// flatSetter(resultJson, head, value);
}
function flatSetter(resultJson, head, value) {
resultJson[head] = value;
}
function jsonSetter(resultJson, head, value) {
set_1.default(resultJson, head, value);
}
function checkType(item, head, headIdx, conv) {
if (conv.parseRuntime.headerType[headIdx]) {
return conv.parseRuntime.headerType[headIdx];
}
else if (head.indexOf('number#!') > -1) {
return conv.parseRuntime.headerType[headIdx] = numberType;
}
else if (head.indexOf('string#!') > -1) {
return conv.parseRuntime.headerType[headIdx] = stringType;
}
else if (conv.parseParam.checkType) {
return conv.parseRuntime.headerType[headIdx] = dynamicType;
}
else {
return conv.parseRuntime.headerType[headIdx] = stringType;
}
}
function numberType(item) {
var rtn = parseFloat(item);
if (isNaN(rtn)) {
return item;
}
return rtn;
}
function stringType(item) {
return item.toString();
}
function dynamicType(item) {
var trimed = item.trim();
if (trimed === "") {
return stringType(item);
}
if (numReg.test(trimed)) {
return numberType(item);
}
else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
return booleanType(item);
}
else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
return jsonType(item);
}
else {
return stringType(item);
}
}
function booleanType(item) {
var trimed = item.trim();
if (trimed.length === 5 && trimed.toLowerCase() === "false") {
return false;
}
else {
return true;
}
}
function jsonType(item) {
try {
return JSON.parse(item);
}
catch (e) {
return item;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9saW5lVG9Kc29uLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2xpbmVUb0pzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3REFBa0M7QUFFbEMsbURBQTZCO0FBRzdCLElBQUksTUFBTSxHQUFHLDBDQUEwQyxDQUFDO0FBRXhELG1CQUF5QixPQUFtQixFQUFFLElBQWU7SUFDM0QsSUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELElBQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNiO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFURCw0QkFTQztBQUFBLENBQUM7QUFLRixvQkFBb0IsR0FBYSxFQUFFLElBQWUsRUFBRSxLQUFLO0lBRXZELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDL0csTUFBTSxDQUFDLGtCQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO0tBQy9FO0lBRUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FB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QU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRTtRQUMzRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVELGtCQUFrQixJQUFJO0lBQ3BCLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4vQ1NWRXJyb3JcIjtcbmltcG9ydCB7IENlbGxQYXJzZXIsIENvbHVtblBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHNldCBmcm9tIFwibG9kYXNoL3NldFwiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5cbnZhciBudW1SZWcgPSAvXlstK10/WzAtOV0qXFwuP1swLTldKyhbZUVdWy0rXT9bMC05XSspPyQvO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY3N2Um93czogc3RyaW5nW11bXSwgY29udjogQ29udmVydGVyKTogSlNPTlJlc3VsdFtdIHtcbiAgY29uc3QgcmVzOiBKU09OUmVzdWx0W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNzdlJvd3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCByID0gcHJvY2Vzc1Jvdyhjc3ZSb3dzW2ldLCBjb252LCBpKTtcbiAgICBpZiAocikge1xuICAgICAgcmVzLnB1c2gocik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuZXhwb3J0IHR5cGUgSlNPTlJlc3VsdCA9IHtcbiAgW2tleTogc3RyaW5nXTogYW55XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSb3cocm93OiBzdHJpbmdbXSwgY29udjogQ29udmVydGVyLCBpbmRleCk6IEpTT05SZXN1bHQgfCBudWxsIHtcblxuICBpZiAoY29udi5wYXJzZVBhcmFtLmNoZWNrQ29sdW1uICYmIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlcnMgJiYgcm93Lmxlbmd0aCAhPT0gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVycy5sZW5ndGgpIHtcbiAgICB0aHJvdyAoQ1NWRXJyb3IuY29sdW1uX21pc21hdGNoZWQoY29udi5wYXJzZVJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIGluZGV4KSlcbiAgfVxuXG4gIGNvbnN0IGhlYWRSb3cgPSBjb252LnBhcnNlUnVudGltZS5oZWFkZXJzIHx8IFtdO1xuICBjb25zdCByZXN1bHRSb3cgPSBjb252ZXJ0Um93VG9Kc29uKHJvdywgaGVhZFJvdywgY29udik7XG4gIGlmIChyZXN1bHRSb3cpIHtcbiAgICByZXR1cm4gcmVzdWx0Um93O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSb3dUb0pzb24ocm93OiBzdHJpbmdbXSwgaGVhZFJvdzogc3RyaW5nW10sIGNvbnY6IENvbnZlcnRlcik6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gIGNvbnN0IHJlc3VsdFJvdyA9IHt9O1xuICBcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJvdy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGxldCBpdGVtID0gcm93W2ldO1xuXG4gICAgaWYgKGNvbnYucGFyc2VQYXJhbS5pZ25vcmVFbXB0eSAmJiBpdGVtID09PSAnJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGhhc1ZhbHVlID0gdHJ1ZTtcblxuICAgIGxldCBoZWFkID0gaGVhZFJvd1tpXTtcbiAgICBpZiAoIWhlYWQgfHwgaGVhZCA9PT0gXCJcIikge1xuICAgICAgaGVhZCA9IGhlYWRSb3dbaV0gPSBcImZpZWxkXCIgKyAoaSArIDEpO1xuICAgIH1cbiAgICBjb25zdCBjb252RnVuYyA9IGdldENvbnZGdW5jKGhlYWQsIGksIGNvbnYpO1xuICAgIGlmIChjb252RnVuYykge1xuICAgICAgY29uc3QgY29udlJlcyA9IGNvbnZGdW5jKGl0ZW0sIGhlYWQsIHJlc3VsdFJvdywgcm93LCBpKTtcbiAgICAgIGlmIChjb252UmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0UGF0aChyZXN1bHRSb3csIGhlYWQsIGNvbnZSZXMsIGNvbnYsaSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHZhciBmbGFnID0gZ2V0RmxhZyhoZWFkLCBpLCBwYXJhbSk7XG4gICAgICAvLyBpZiAoZmxhZyA9PT0gJ29taXQnKSB7XG4gICAgICAvLyAgIGNvbnRpbnVlO1xuICAgICAgLy8gfVxuICAgICAgaWYgKGNvbnYucGFyc2VQYXJhbS5jaGVja1R5cGUpIHtcbiAgICAgICAgY29uc3QgY29udmVydEZ1bmMgPSBjaGVja1R5cGUoaXRlbSwgaGVhZCwgaSwgY29udik7XG4gICAgICAgIGl0ZW0gPSBjb252ZXJ0RnVuYyhpdGVtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0UGF0aChyZXN1bHRSb3csIGhlYWQsIGl0ZW0sIGNvbnYsaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChoYXNWYWx1ZSkge1xuICAgIHJldHVybiByZXN1bHRSb3c7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgYnVpbHRJbkNvbnY6IHsgW2tleTogc3RyaW5nXTogQ2VsbFBhcnNlciB9ID0ge1xuICBcInN0cmluZ1wiOiBzdHJpbmdUeXBlLFxuICBcIm51bWJlclwiOiBudW1iZXJUeXBlLFxuICBcIm9taXRcIjogZnVuY3Rpb24gKCkgeyB9XG59XG5mdW5jdGlvbiBnZXRDb252RnVuYyhoZWFkOiBzdHJpbmcsIGk6IG51bWJlciwgY29udjogQ29udmVydGVyKTogQ2VsbFBhcnNlciB8IG51bGwge1xuICBpZiAoY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uQ29udltpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV07XG4gIH0gZWxzZSB7XG4gICAgbGV0IGZsYWcgPSBjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdO1xuICAgIGlmIChmbGFnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmbGFnID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBmbGFnID0gKGZsYWcgYXMgQ29sdW1uUGFyYW0pLmNlbGxQYXJzZXIgfHwgXCJzdHJpbmdcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmbGFnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmbGFnID0gZmxhZy50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGJ1aWx0SW5GdW5jID0gYnVpbHRJbkNvbnZbZmxhZ107XG4gICAgICBpZiAoYnVpbHRJbkZ1bmMpIHtcbiAgICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBidWlsdEluRnVuYztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbGFnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gZmxhZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBudWxsO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gc2V0UGF0aChyZXN1bHRKc29uOiBhbnksIGhlYWQ6IHN0cmluZywgdmFsdWU6IGFueSwgY29udjogQ29udmVydGVyLGhlYWRJZHg6bnVtYmVyKSB7XG4gIGlmICghY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0pIHtcbiAgICBpZiAoY29udi5wYXJzZVBhcmFtLmZsYXRLZXlzKSB7XG4gICAgICBjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XSA9IGZsYXRTZXR0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIFxuICAgICAgaWYgKGhlYWQuaW5kZXhPZihcIi5cIikgPiAtMSkge1xuICAgICAgICBjb25zdCBoZWFkQXJyPWhlYWQuc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQganNvbkhlYWQ9dHJ1ZTtcbiAgICAgICAgd2hpbGUoaGVhZEFyci5sZW5ndGg+MCl7XG4gICAgICAgICAgY29uc3QgaGVhZENvbT1oZWFkQXJyLnNoaWZ0KCk7XG4gICAgICAgICAgaWYgKGhlYWRDb20hLmxlbmd0aD09PTApe1xuICAgICAgICAgICAganNvbkhlYWQ9ZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFqc29uSGVhZCB8fCBjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdICYmIChjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdIGFzIENvbHVtblBhcmFtKS5mbGF0KSB7XG4gICAgICAgICAgY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0gPSBmbGF0U2V0dGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtblZhbHVlU2V0dGVyW2hlYWRJZHhdID0ganNvblNldHRlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0gPSBmbGF0U2V0dGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY29udi5wYXJzZVBhcmFtLm51bGxPYmplY3QgPT09dHJ1ZSAmJiB2YWx1ZSA9PT1cIm51bGxcIil7XG4gICAgdmFsdWU9bnVsbDtcbiAgfVxuICBjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XShyZXN1bHRKc29uLCBoZWFkLCB2YWx1ZSk7XG4gIC8vIGZsYXRTZXR0ZXIocmVzdWx0SnNvbiwgaGVhZCwgdmFsdWUpO1xuXG59XG5mdW5jdGlvbiBmbGF0U2V0dGVyKHJlc3VsdEpzb246IGFueSwgaGVhZDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIHJlc3VsdEpzb25baGVhZF0gPSB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGpzb25TZXR0ZXIocmVzdWx0SnNvbjogYW55LCBoZWFkOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgc2V0KHJlc3VsdEpzb24sIGhlYWQsIHZhbHVlKTtcbn1cblxuXG5mdW5jdGlvbiBjaGVja1R5cGUoaXRlbTogc3RyaW5nLCBoZWFkOiBzdHJpbmcsIGhlYWRJZHg6IG51bWJlciwgY29udjogQ29udmVydGVyKTogRnVuY3Rpb24ge1xuICBpZiAoY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XSkge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdO1xuICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignbnVtYmVyIyEnKSA+IC0xKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0gPSBudW1iZXJUeXBlO1xuICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignc3RyaW5nIyEnKSA+IC0xKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0gPSBzdHJpbmdUeXBlO1xuICB9IGVsc2UgaWYgKGNvbnYucGFyc2VQYXJhbS5jaGVja1R5cGUpIHtcbiAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XSA9IGR5bmFtaWNUeXBlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdID0gc3RyaW5nVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBudW1iZXJUeXBlKGl0ZW0pIHtcbiAgdmFyIHJ0biA9IHBhcnNlRmxvYXQoaXRlbSk7XG4gIGlmIChpc05hTihydG4pKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgcmV0dXJuIHJ0bjtcbn1cblxuZnVuY3Rpb24gc3RyaW5nVHlwZShpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaXRlbS50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBkeW5hbWljVHlwZShpdGVtKSB7XG4gIHZhciB0cmltZWQgPSBpdGVtLnRyaW0oKTtcbiAgaWYgKHRyaW1lZCA9PT0gXCJcIikge1xuICAgIHJldHVybiBzdHJpbmdUeXBlKGl0ZW0pO1xuICB9XG4gIGlmIChudW1SZWcudGVzdCh0cmltZWQpKSB7XG4gICAgcmV0dXJuIG51bWJlclR5cGUoaXRlbSk7XG4gIH0gZWxzZSBpZiAodHJpbWVkLmxlbmd0aCA9PT0gNSAmJiB0cmltZWQudG9Mb3dlckNhc2UoKSA9PT0gXCJmYWxzZVwiIHx8IHRyaW1lZC5sZW5ndGggPT09IDQgJiYgdHJpbWVkLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiKSB7XG4gICAgcmV0dXJuIGJvb2xlYW5UeXBlKGl0ZW0pO1xuICB9IGVsc2UgaWYgKHRyaW1lZFswXSA9PT0gXCJ7XCIgJiYgdHJpbWVkW3RyaW1lZC5sZW5ndGggLSAxXSA9PT0gXCJ9XCIgfHwgdHJpbWVkWzBdID09PSBcIltcIiAmJiB0cmltZWRbdHJpbWVkLmxlbmd0aCAtIDFdID09PSBcIl1cIikge1xuICAgIHJldHVybiBqc29uVHlwZShpdGVtKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nVHlwZShpdGVtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBib29sZWFuVHlwZShpdGVtKSB7XG4gIHZhciB0cmltZWQgPSBpdGVtLnRyaW0oKTtcbiAgaWYgKHRyaW1lZC5sZW5ndGggPT09IDUgJiYgdHJpbWVkLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBqc29uVHlwZShpdGVtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxufVxuIl19
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function initParseRuntime(converter) {
var params = converter.parseParam;
var rtn = {
needProcessIgnoreColumn: false,
needProcessIncludeColumn: false,
selectedColumns: undefined,
ended: false,
hasError: false,
error: undefined,
delimiter: converter.parseParam.delimiter,
eol: converter.parseParam.eol,
columnConv: [],
headerType: [],
headerTitle: [],
headerFlag: [],
headers: undefined,
started: false,
parsedLineNumber: 0,
columnValueSetter: [],
};
if (params.ignoreColumns) {
rtn.needProcessIgnoreColumn = true;
}
if (params.includeColumns) {
rtn.needProcessIncludeColumn = true;
}
return rtn;
}
exports.initParseRuntime = initParseRuntime;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJzZVJ1bnRpbWUudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUGFyc2VSdW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOERBLDBCQUFpQyxTQUFvQjtJQUNuRCxJQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3BDLElBQU0sR0FBRyxHQUFpQjtRQUN4Qix1QkFBdUIsRUFBRSxLQUFLO1FBQzlCLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsZUFBZSxFQUFFLFNBQVM7UUFDMUIsS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVM7UUFDekMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztRQUM3QixVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsV0FBVyxFQUFFLEVBQUU7UUFDZixVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUE7SUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDeEIsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztLQUNwQztJQUNELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBM0JELDRDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENTVlBhcnNlUGFyYW0sIENlbGxQYXJzZXIgfSBmcm9tIFwiLi9QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIsIFByZVJhd0RhdGFDYWxsYmFjaywgUHJlRmlsZUxpbmVDYWxsYmFjayB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlUnVudGltZSB7XG4gIC8qKlxuICAgKiBJZiBuZWVkIGNvbnZlcnQgaWdub3JlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0lnbm9yZUNvbHVtbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIG5lZWQgY29udmVydCBpbmNsdWRlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0luY2x1ZGVDb2x1bW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiB0aGUgaW5kZXhlcyBvZiBjb2x1bW5zIHRvIHJlc2VydmUsIHVuZGVmaW5lZCBtZWFucyByZXNlcnZlIGFsbCwgW10gbWVhbnMgaGlkZSBhbGxcbiAgICovXG4gIHNlbGVjdGVkQ29sdW1ucz86IG51bWJlcltdO1xuICBlbmRlZDogYm9vbGVhbjtcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBkZWxpbWl0ZXJcbiAgICovXG4gIGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBlb2xcbiAgICovXG4gIGVvbD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnZlcnRlciBmdW5jdGlvbiBmb3IgYSBjb2x1bW4uIFBvcHVsYXRlZCBhdCBydW50aW1lLlxuICAgKi9cbiAgY29sdW1uQ29udjogKENlbGxQYXJzZXIgfCBudWxsKVtdLFxuICBoZWFkZXJUeXBlOiBhbnlbXSxcbiAgaGVhZGVyVGl0bGU6IHN0cmluZ1tdLFxuICBoZWFkZXJGbGFnOiBhbnlbXSxcbiAgLyoqXG4gICAqIEluZmVycmVkIGhlYWRlcnNcbiAgICovXG4gIGhlYWRlcnM/OiBhbnlbXSxcbiAgY3N2TGluZUJ1ZmZlcj86IEJ1ZmZlcixcbiAgXG4gIC8qKlxuICAgKiBhZnRlciBmaXJzdCBjaHVuayBvZiBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgZW1pdHRlZCwgc3RhcnRlZCB3aWxsIGJlY29tZSB0cnVlLlxuICAgKi9cbiAgc3RhcnRlZDogYm9vbGVhbixcbiAgcHJlUmF3RGF0YUhvb2s/OiBQcmVSYXdEYXRhQ2FsbGJhY2ssXG4gIHByZUZpbGVMaW5lSG9vaz86IFByZUZpbGVMaW5lQ2FsbGJhY2ssXG4gIHBhcnNlZExpbmVOdW1iZXI6IG51bWJlcixcblxuICBjb2x1bW5WYWx1ZVNldHRlcjogRnVuY3Rpb25bXTtcbiAgc3Vic2NyaWJlPzoge1xuICAgIG9uTmV4dD86IChkYXRhOiBhbnksIGxpbmVOdW1iZXI6bnVtYmVyKSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG4gICAgb25FcnJvcj86IChlcnI6IENTVkVycm9yKSA9PiB2b2lkO1xuICAgIG9uQ29tcGxldGVkPzogKCkgPT4gdm9pZDtcbiAgfTtcbiAgdGhlbj86IHtcbiAgICBvbmZ1bGZpbGxlZDogKHZhbHVlOiBhbnlbXSkgPT4gYW55O1xuICAgIG9ucmVqZWN0ZWQ6IChlcnI6IEVycm9yKSA9PiBhbnk7XG4gIH1cblxufVxuZXhwb3J0IGZ1bmN0aW9uIGluaXRQYXJzZVJ1bnRpbWUoY29udmVydGVyOiBDb252ZXJ0ZXIpOiBQYXJzZVJ1bnRpbWUge1xuICBjb25zdCBwYXJhbXMgPSBjb252ZXJ0ZXIucGFyc2VQYXJhbTtcbiAgY29uc3QgcnRuOiBQYXJzZVJ1bnRpbWUgPSB7XG4gICAgbmVlZFByb2Nlc3NJZ25vcmVDb2x1bW46IGZhbHNlLFxuICAgIG5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbjogZmFsc2UsXG4gICAgc2VsZWN0ZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgZW5kZWQ6IGZhbHNlLFxuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIGRlbGltaXRlcjogY29udmVydGVyLnBhcnNlUGFyYW0uZGVsaW1pdGVyLFxuICAgIGVvbDogY29udmVydGVyLnBhcnNlUGFyYW0uZW9sLFxuICAgIGNvbHVtbkNvbnY6IFtdLFxuICAgIGhlYWRlclR5cGU6IFtdLFxuICAgIGhlYWRlclRpdGxlOiBbXSxcbiAgICBoZWFkZXJGbGFnOiBbXSxcbiAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgc3RhcnRlZDogZmFsc2UsXG4gICAgcGFyc2VkTGluZU51bWJlcjogMCxcbiAgICBjb2x1bW5WYWx1ZVNldHRlcjogW10sXG4gIH1cbiAgaWYgKHBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSWdub3JlQ29sdW1uID0gdHJ1ZTtcbiAgfVxuICBpZiAocGFyYW1zLmluY2x1ZGVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbiA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJ0bjtcbn0iXX0=

Sorry, the diff of this file is too big to display

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Processor_1 = require("./Processor");
var bluebird_1 = __importDefault(require("bluebird"));
var dataClean_1 = require("./dataClean");
var getEol_1 = __importDefault(require("./getEol"));
var fileline_1 = require("./fileline");
var util_1 = require("./util");
var rowSplit_1 = require("./rowSplit");
var lineToJson_1 = __importDefault(require("./lineToJson"));
var CSVError_1 = __importDefault(require("./CSVError"));
var ProcessorLocal = /** @class */ (function (_super) {
__extends(ProcessorLocal, _super);
function ProcessorLocal() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.rowSplit = new rowSplit_1.RowSplit(_this.converter);
_this.eolEmitted = false;
_this._needEmitEol = undefined;
_this.headEmitted = false;
_this._needEmitHead = undefined;
return _this;
}
ProcessorLocal.prototype.flush = function () {
var _this = this;
if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
var buf = this.runtime.csvLineBuffer;
this.runtime.csvLineBuffer = undefined;
return this.process(buf, true)
.then(function (res) {
if (_this.runtime.csvLineBuffer && _this.runtime.csvLineBuffer.length > 0) {
return bluebird_1.default.reject(CSVError_1.default.unclosed_quote(_this.runtime.parsedLineNumber, _this.runtime.csvLineBuffer.toString()));
}
else {
return bluebird_1.default.resolve(res);
}
});
}
else {
return bluebird_1.default.resolve([]);
}
};
ProcessorLocal.prototype.destroy = function () {
return bluebird_1.default.resolve();
};
Object.defineProperty(ProcessorLocal.prototype, "needEmitEol", {
get: function () {
if (this._needEmitEol === undefined) {
this._needEmitEol = this.converter.listeners("eol").length > 0;
}
return this._needEmitEol;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProcessorLocal.prototype, "needEmitHead", {
get: function () {
if (this._needEmitHead === undefined) {
this._needEmitHead = this.converter.listeners("header").length > 0;
}
return this._needEmitHead;
},
enumerable: true,
configurable: true
});
ProcessorLocal.prototype.process = function (chunk, finalChunk) {
var _this = this;
if (finalChunk === void 0) { finalChunk = false; }
var csvString;
if (finalChunk) {
csvString = chunk.toString();
}
else {
csvString = dataClean_1.prepareData(chunk, this.converter.parseRuntime);
}
return bluebird_1.default.resolve()
.then(function () {
if (_this.runtime.preRawDataHook) {
return _this.runtime.preRawDataHook(csvString);
}
else {
return csvString;
}
})
.then(function (csv) {
if (csv && csv.length > 0) {
return _this.processCSV(csv, finalChunk);
}
else {
return bluebird_1.default.resolve([]);
}
});
};
ProcessorLocal.prototype.processCSV = function (csv, finalChunk) {
var _this = this;
var params = this.params;
var runtime = this.runtime;
if (!runtime.eol) {
getEol_1.default(csv, runtime);
}
if (this.needEmitEol && !this.eolEmitted && runtime.eol) {
this.converter.emit("eol", runtime.eol);
this.eolEmitted = true;
}
// trim csv file has initial blank lines.
if (params.ignoreEmpty && !runtime.started) {
csv = util_1.trimLeft(csv);
}
var stringToLineResult = fileline_1.stringToLines(csv, runtime);
if (!finalChunk) {
this.prependLeftBuf(util_1.bufFromString(stringToLineResult.partial));
}
else {
stringToLineResult.lines.push(stringToLineResult.partial);
stringToLineResult.partial = "";
}
if (stringToLineResult.lines.length > 0) {
var prom = void 0;
if (runtime.preFileLineHook) {
prom = this.runPreLineHook(stringToLineResult.lines);
}
else {
prom = bluebird_1.default.resolve(stringToLineResult.lines);
}
return prom.then(function (lines) {
if (!runtime.started
&& !_this.runtime.headers) {
return _this.processDataWithHead(lines);
}
else {
return _this.processCSVBody(lines);
}
});
}
else {
return bluebird_1.default.resolve([]);
}
};
ProcessorLocal.prototype.processDataWithHead = function (lines) {
if (this.params.noheader) {
if (this.params.headers) {
this.runtime.headers = this.params.headers;
}
else {
this.runtime.headers = [];
}
}
else {
var left = "";
var headerRow = [];
while (lines.length) {
var line = left + lines.shift();
var row = this.rowSplit.parse(line);
if (row.closed) {
headerRow = row.cells;
left = "";
break;
}
else {
left = line + getEol_1.default(line, this.runtime);
}
}
this.prependLeftBuf(util_1.bufFromString(left));
if (headerRow.length === 0) {
return [];
}
if (this.params.headers) {
this.runtime.headers = this.params.headers;
}
else {
this.runtime.headers = headerRow;
}
}
if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) {
this.filterHeader();
}
if (this.needEmitHead && !this.headEmitted) {
this.converter.emit("header", this.runtime.headers);
this.headEmitted = true;
}
return this.processCSVBody(lines);
};
ProcessorLocal.prototype.filterHeader = function () {
this.runtime.selectedColumns = [];
if (this.runtime.headers) {
var headers = this.runtime.headers;
for (var i = 0; i < headers.length; i++) {
if (this.params.ignoreColumns) {
if (this.params.ignoreColumns.test(headers[i])) {
if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) {
this.runtime.selectedColumns.push(i);
}
else {
continue;
}
}
else {
this.runtime.selectedColumns.push(i);
}
}
else if (this.params.includeColumns) {
if (this.params.includeColumns.test(headers[i])) {
this.runtime.selectedColumns.push(i);
}
}
else {
this.runtime.selectedColumns.push(i);
}
// if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){
// this.runtime.selectedColumns.push(i);
// }else{
// if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){
// continue;
// }else{
// if (this.params.ignoreColumns && !this.params.includeColumns){
// this.runtime.selectedColumns.push(i);
// }
// }
// }
}
this.runtime.headers = util_1.filterArray(this.runtime.headers, this.runtime.selectedColumns);
}
};
ProcessorLocal.prototype.processCSVBody = function (lines) {
if (this.params.output === "line") {
return lines;
}
else {
var result = this.rowSplit.parseMultiLines(lines);
this.prependLeftBuf(util_1.bufFromString(result.partial));
if (this.params.output === "csv") {
return result.rowsCells;
}
else {
return lineToJson_1.default(result.rowsCells, this.converter);
}
}
// var jsonArr = linesToJson(lines.lines, params, this.recordNum);
// this.processResult(jsonArr);
// this.lastIndex += jsonArr.length;
// this.recordNum += jsonArr.length;
};
ProcessorLocal.prototype.prependLeftBuf = function (buf) {
if (buf) {
if (this.runtime.csvLineBuffer) {
this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]);
}
else {
this.runtime.csvLineBuffer = buf;
}
}
};
ProcessorLocal.prototype.runPreLineHook = function (lines) {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
processLineHook(lines, _this.runtime, 0, function (err) {
if (err) {
reject(err);
}
else {
resolve(lines);
}
});
});
};
return ProcessorLocal;
}(Processor_1.Processor));
exports.ProcessorLocal = ProcessorLocal;
function processLineHook(lines, runtime, offset, cb) {
if (offset >= lines.length) {
cb();
}
else {
if (runtime.preFileLineHook) {
var line = lines[offset];
var res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset);
offset++;
if (res && res.then) {
res.then(function (value) {
lines[offset - 1] = value;
processLineHook(lines, runtime, offset, cb);
});
}
else {
lines[offset - 1] = res;
while (offset < lines.length) {
lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset);
offset++;
}
cb();
}
}
else {
cb();
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBMkQ7QUFDM0Qsc0RBQXlCO0FBQ3pCLHlDQUEwQztBQUMxQyxvREFBOEI7QUFDOUIsdUNBQTJDO0FBQzNDLCtCQUE2RDtBQUM3RCx1Q0FBc0M7QUFDdEMsNERBQXNDO0FBRXRDLHdEQUFrQztBQUlsQztJQUFvQyxrQ0FBUztJQUE3QztRQUFBLHFFQW1PQztRQS9NUyxjQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxnQkFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBWSxHQUFhLFNBQVMsQ0FBQztRQU9uQyxpQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYSxHQUFhLFNBQVMsQ0FBQzs7SUFxTTlDLENBQUM7SUFsT0MsOEJBQUssR0FBTDtRQUFBLGlCQWVDO1FBZEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZFLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztpQkFDM0IsSUFBSSxDQUFDLFVBQUMsR0FBRztnQkFDUixJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFD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QUFNLEVBQUUsQ0FBQztpQkFDVjtnQkFDRCxFQUFFLEVBQUUsQ0FBQzthQUNOO1NBQ0Y7YUFBTTtZQUNMLEVBQUUsRUFBRSxDQUFDO1NBQ047S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9jZXNzb3IsIFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHByZXBhcmVEYXRhIH0gZnJvbSBcIi4vZGF0YUNsZWFuXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgc3RyaW5nVG9MaW5lcyB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBidWZGcm9tU3RyaW5nLCBmaWx0ZXJBcnJheSx0cmltTGVmdCB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IFJvd1NwbGl0IH0gZnJvbSBcIi4vcm93U3BsaXRcIjtcbmltcG9ydCBsaW5lVG9Kc29uIGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yTG9jYWwgZXh0ZW5kcyBQcm9jZXNzb3Ige1xuICBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+IHtcbiAgICBpZiAodGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgJiYgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYnVmID0gdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXI7XG4gICAgICB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3MoYnVmLCB0cnVlKVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlamVjdChDU1ZFcnJvci51bmNsb3NlZF9xdW90ZSh0aGlzLnJ1bnRpbWUucGFyc2VkTGluZU51bWJlciwgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIudG9TdHJpbmcoKSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlc29sdmUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cbiAgfVxuICBkZXN0cm95KCk6IFA8dm9pZD4ge1xuICAgIHJldHVybiBQLnJlc29sdmUoKTtcbiAgfVxuICBwcml2YXRlIHJvd1NwbGl0OiBSb3dTcGxpdCA9IG5ldyBSb3dTcGxpdCh0aGlzLmNvbnZlcnRlcik7XG4gIHByaXZhdGUgZW9sRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEVvbD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RW9sKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdEVvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEVvbCA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImVvbFwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZEVtaXRFb2w7XG4gIH1cbiAgcHJpdmF0ZSBoZWFkRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEhlYWQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIGdldCBuZWVkRW1pdEhlYWQoKSB7XG4gICAgaWYgKHRoaXMuX25lZWRFbWl0SGVhZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEhlYWQgPSB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJoZWFkZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0SGVhZDtcblxuICB9XG4gIHByb2Nlc3MoY2h1bms6IEJ1ZmZlciwgZmluYWxDaHVuayA9IGZhbHNlKTogUDxQcm9jZXNzTGluZVJlc3VsdFtdPiB7XG4gICAgbGV0IGNzdlN0cmluZzogc3RyaW5nO1xuICAgIGlmIChmaW5hbENodW5rKSB7XG4gICAgICBjc3ZTdHJpbmcgPSBjaHVuay50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjc3ZTdHJpbmcgPSBwcmVwYXJlRGF0YShjaHVuaywgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lKTtcblxuICAgIH1cbiAgICByZXR1cm4gUC5yZXNvbHZlKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucnVudGltZS5wcmVSYXdEYXRhSG9vaykge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJlUmF3RGF0YUhvb2soY3N2U3RyaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY3N2U3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGNzdikgPT4ge1xuICAgICAgICBpZiAoY3N2ICYmIGNzdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NTVihjc3YsIGZpbmFsQ2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9KVxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0NTVihjc3Y6IHN0cmluZywgZmluYWxDaHVuazogYm9vbGVhbik6IFA8UHJvY2Vzc0xpbmVSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zO1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB0aGlzLnJ1bnRpbWU7XG4gICAgaWYgKCFydW50aW1lLmVvbCkge1xuICAgICAgZ2V0RW9sKGNzdiwgcnVudGltZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZWRFbWl0RW9sICYmICF0aGlzLmVvbEVtaXR0ZWQgJiYgcnVudGltZS5lb2wpIHtcbiAgICAgIHRoaXMuY29udmVydGVyLmVtaXQoXCJlb2xcIiwgcnVudGltZS5lb2wpO1xuICAgICAgdGhpcy5lb2xFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gdHJpbSBjc3YgZmlsZSBoYXMgaW5pdGlhbCBibGFuayBsaW5lcy5cbiAgICBpZiAocGFyYW1zLmlnbm9yZUVtcHR5ICYmICFydW50aW1lLnN0YXJ0ZWQpIHtcbiAgICAgIGNzdiA9IHRyaW1MZWZ0KGNzdik7XG4gICAgfVxuICAgIGNvbnN0IHN0cmluZ1RvTGluZVJlc3VsdCA9IHN0cmluZ1RvTGluZXMoY3N2LCBydW50aW1lKTtcbiAgICBpZiAoIWZpbmFsQ2h1bmspIHtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMucHVzaChzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCk7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCA9IFwiXCI7XG4gICAgfVxuICAgIGlmIChzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHByb206IFA8c3RyaW5nW10+O1xuICAgICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICAgIHByb20gPSB0aGlzLnJ1blByZUxpbmVIb29rKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9tID0gUC5yZXNvbHZlKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvbS50aGVuKChsaW5lcykgPT4ge1xuICAgICAgICBpZiAoIXJ1bnRpbWUuc3RhcnRlZFxuICAgICAgICAgICYmICF0aGlzLnJ1bnRpbWUuaGVhZGVyc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YVdpdGhIZWFkKGxpbmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gICAgICAgIH1cblxuICAgICAgfSlcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cblxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0RhdGFXaXRoSGVhZChsaW5lczogc3RyaW5nW10pOiBQcm9jZXNzTGluZVJlc3VsdFtdIHtcbiAgICBpZiAodGhpcy5wYXJhbXMubm9oZWFkZXIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gdGhpcy5wYXJhbXMuaGVhZGVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsZWZ0ID0gXCJcIjtcbiAgICAgIGxldCBoZWFkZXJSb3c6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTcGxpdC5wYXJzZShsaW5lKTtcbiAgICAgICAgaWYgKHJvdy5jbG9zZWQpIHtcbiAgICAgICAgICBoZWFkZXJSb3cgPSByb3cuY2VsbHM7XG4gICAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVmdCA9IGxpbmUgKyBnZXRFb2wobGluZSwgdGhpcy5ydW50aW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcmVwZW5kTGVmdEJ1ZihidWZGcm9tU3RyaW5nKGxlZnQpKTtcblxuICAgICAgaWYgKGhlYWRlclJvdy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyYW1zLmhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSB0aGlzLnBhcmFtcy5oZWFkZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSBoZWFkZXJSb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bnRpbWUubmVlZFByb2Nlc3NJZ25vcmVDb2x1bW4gfHwgdGhpcy5ydW50aW1lLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbikge1xuICAgICAgdGhpcy5maWx0ZXJIZWFkZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXRIZWFkICYmICF0aGlzLmhlYWRFbWl0dGVkKSB7XG4gICAgICB0aGlzLmNvbnZlcnRlci5lbWl0KFwiaGVhZGVyXCIsIHRoaXMucnVudGltZS5oZWFkZXJzKTtcbiAgICAgIHRoaXMuaGVhZEVtaXR0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gIH1cbiAgcHJpdmF0ZSBmaWx0ZXJIZWFkZXIoKSB7XG4gICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucyA9IFtdO1xuICAgIGlmICh0aGlzLnJ1bnRpbWUuaGVhZGVycykge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMucnVudGltZS5oZWFkZXJzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpe1xuICAgICAgICAvLyAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgLy8gfWVsc2V7XG4gICAgICAgIC8vICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgdGhpcy5wYXJhbXMuaWdub3JlQ29sdW1ucy50ZXN0KGhlYWRlcnNbaV0pKXtcbiAgICAgICAgLy8gICAgIGNvbnRpbnVlO1xuICAgICAgICAvLyAgIH1lbHNle1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgIXRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zKXtcbiAgICAgICAgLy8gICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAvLyAgICAgfVxuXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnJ1bnRpbWUuaGVhZGVycyA9IGZpbHRlckFycmF5KHRoaXMucnVudGltZS5oZWFkZXJzLCB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgfVxuICBwcml2YXRlIHByb2Nlc3NDU1ZCb2R5KGxpbmVzOiBzdHJpbmdbXSk6IFByb2Nlc3NMaW5lUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLnBhcmFtcy5vdXRwdXQgPT09IFwibGluZVwiKSB7XG4gICAgICByZXR1cm4gbGluZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhyZXN1bHQucGFydGlhbCkpO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLm91dHB1dCA9PT0gXCJjc3ZcIikge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnJvd3NDZWxscztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsaW5lVG9Kc29uKHJlc3VsdC5yb3dzQ2VsbHMsIHRoaXMuY29udmVydGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB2YXIganNvbkFyciA9IGxpbmVzVG9Kc29uKGxpbmVzLmxpbmVzLCBwYXJhbXMsIHRoaXMucmVjb3JkTnVtKTtcbiAgICAvLyB0aGlzLnByb2Nlc3NSZXN1bHQoanNvbkFycik7XG4gICAgLy8gdGhpcy5sYXN0SW5kZXggKz0ganNvbkFyci5sZW5ndGg7XG4gICAgLy8gdGhpcy5yZWNvcmROdW0gKz0ganNvbkFyci5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIHByZXBlbmRMZWZ0QnVmKGJ1ZjogQnVmZmVyKSB7XG4gICAgaWYgKGJ1Zikge1xuICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYnVmLCB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlcl0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgPSBidWY7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSBydW5QcmVMaW5lSG9vayhsaW5lczogc3RyaW5nW10pOiBQPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIG5ldyBQKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgdGhpcy5ydW50aW1lLCAwLCAoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGxpbmVzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzTGluZUhvb2sobGluZXM6IHN0cmluZ1tdLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUsIG9mZnNldDogbnVtYmVyLFxuICBjYjogKGVycj8pID0+IHZvaWRcbikge1xuICBpZiAob2Zmc2V0ID49IGxpbmVzLmxlbmd0aCkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICBjb25zdCBsaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgIGNvbnN0IHJlcyA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmUsIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCk7XG4gICAgICBvZmZzZXQrKztcbiAgICAgIGlmIChyZXMgJiYgKHJlcyBhcyBQcm9taXNlTGlrZTxzdHJpbmc+KS50aGVuKSB7XG4gICAgICAgIChyZXMgYXMgUHJvbWlzZUxpa2U8c3RyaW5nPikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICBsaW5lc1tvZmZzZXQgLSAxXSA9IHZhbHVlO1xuICAgICAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgcnVudGltZSwgb2Zmc2V0LCBjYik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXNbb2Zmc2V0IC0gMV0gPSByZXMgYXMgc3RyaW5nO1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgbGluZXNbb2Zmc2V0XSA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmVzW29mZnNldF0sIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCkgYXMgc3RyaW5nO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICB9XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59Il19
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function mergeParams(params) {
var defaultParam = {
delimiter: ',',
ignoreColumns: undefined,
includeColumns: undefined,
quote: '"',
trim: true,
checkType: false,
ignoreEmpty: false,
// fork: false,
noheader: false,
headers: undefined,
flatKeys: false,
maxRowLength: 0,
checkColumn: false,
escape: '"',
colParser: {},
eol: undefined,
alwaysSplitAtEOL: false,
output: "json",
nullObject: false,
downstreamFormat: "line",
needEmitAll: true
};
if (!params) {
params = {};
}
for (var key in params) {
if (params.hasOwnProperty(key)) {
if (Array.isArray(params[key])) {
defaultParam[key] = [].concat(params[key]);
}
else {
defaultParam[key] = params[key];
}
}
}
return defaultParam;
}
exports.mergeParams = mergeParams;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJhbWV0ZXJzLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1BhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpR0EscUJBQTRCLE1BQStCO0lBQ3pELElBQU0sWUFBWSxHQUFrQjtRQUNsQyxTQUFTLEVBQUUsR0FBRztRQUNkLGFBQWEsRUFBRSxTQUFTO1FBQ3hCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixlQUFlO1FBQ2YsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixRQUFRLEVBQUUsS0FBSztRQUNmLFlBQVksRUFBRSxDQUFDO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLEdBQUc7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLEdBQUcsRUFBRSxTQUFTO1FBQ2QsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixNQUFNLEVBQUUsTUFBTTtRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGdCQUFnQixFQUFDLE1BQU07UUFDdkIsV0FBVyxFQUFDLElBQUk7S0FDakIsQ0FBQTtJQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLEdBQUcsRUFBRSxDQUFDO0tBQ2I7SUFDRCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtRQUN0QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7S0FDRjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFyQ0Qsa0NBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDU1ZQYXJzZVBhcmFtIHtcbiAgLyoqXG4gICAqICAgZGVsaW1pdGVyIHVzZWQgZm9yIHNlcGVyYXRpbmcgY29sdW1ucy4gVXNlIFwiYXV0b1wiIGlmIGRlbGltaXRlciBpcyB1bmtub3duIGluIGFkdmFuY2UsIGluIHRoaXMgY2FzZSwgZGVsaW1pdGVyIHdpbGwgYmUgYXV0by1kZXRlY3RlZCAoYnkgYmVzdCBhdHRlbXB0KS4gVXNlIGFuIGFycmF5IHRvIGdpdmUgYSBsaXN0IG9mIHBvdGVudGlhbCBkZWxpbWl0ZXJzIGUuZy4gW1wiLFwiLFwifFwiLFwiJFwiXS4gZGVmYXVsdDogXCIsXCJcbiAgICovXG4gIGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiAgVGhpcyBwYXJhbWV0ZXIgaW5zdHJ1Y3RzIHRoZSBwYXJzZXIgdG8gaWdub3JlIGNvbHVtbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIEV4YW1wbGU6IC8obmFtZXxhZ2UpLyB3aWxsIGlnbm9yZSBjb2x1bW5zIHdob3NlIGhlYWRlciBjb250YWlucyBcIm5hbWVcIiBvciBcImFnZVwiXG4gICAqL1xuICBpZ25vcmVDb2x1bW5zPzogUmVnRXhwO1xuICAvKipcbiAgICogIFRoaXMgcGFyYW1ldGVyIGluc3RydWN0cyB0aGUgcGFyc2VyIHRvIGluY2x1ZGUgb25seSB0aG9zZSBjb2x1bW5zIGFzIHNwZWNpZmllZCBieSB0aGUgcmVndWxhciBleHByZXNzaW9uLiBFeGFtcGxlOiAvKG5hbWV8YWdlKS8gd2lsbCBwYXJzZSBhbmQgaW5jbHVkZSBjb2x1bW5zIHdob3NlIGhlYWRlciBjb250YWlucyBcIm5hbWVcIiBvciBcImFnZVwiXG4gICAqL1xuICBpbmNsdWRlQ29sdW1ucz86IFJlZ0V4cDtcbiAgLyoqXG4gICAqICBJZiBhIGNvbHVtbiBjb250YWlucyBkZWxpbWl0ZXIsIGl0IGlzIGFibGUgdG8gdXNlIHF1b3RlIGNoYXJhY3RlciB0byBzdXJyb3VuZCB0aGUgY29sdW1uIGNvbnRlbnQuIGUuZy4gXCJoZWxsbywgd29ybGRcIiB3b250IGJlIHNwbGl0IGludG8gdHdvIGNvbHVtbnMgd2hpbGUgcGFyc2luZy4gU2V0IHRvIFwib2ZmXCIgd2lsbCBpZ25vcmUgYWxsIHF1b3Rlcy4gZGVmYXVsdDogXCIgKGRvdWJsZSBxdW90ZSlcbiAgICovXG4gIHF1b3RlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAgSW5kaWNhdGUgaWYgcGFyc2VyIHRyaW0gb2ZmIHNwYWNlcyBzdXJyb3VuZGluZyBjb2x1bW4gY29udGVudC4gZS5nLiBcIiBjb250ZW50IFwiIHdpbGwgYmUgdHJpbW1lZCB0byBcImNvbnRlbnRcIi4gRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgdHJpbTogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBUaGlzIHBhcmFtZXRlciB0dXJucyBvbiBhbmQgb2ZmIHdoZXRoZXIgY2hlY2sgZmllbGQgdHlwZS4gRGVmYXVsdCBpcyBmYWxzZS4gXG4gICAqL1xuICBjaGVja1R5cGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgSWdub3JlIHRoZSBlbXB0eSB2YWx1ZSBpbiBDU1YgY29sdW1ucy4gSWYgYSBjb2x1bW4gdmFsdWUgaXMgbm90IGdpdmVuLCBzZXQgdGhpcyB0byB0cnVlIHRvIHNraXAgdGhlbS4gRGVmYXVsdDogZmFsc2UuXG4gICAqL1xuICBpZ25vcmVFbXB0eTogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBEZWxlZ2F0ZSBwYXJzaW5nIHdvcmsgdG8gYW5vdGhlciBwcm9jZXNzLlxuICAgKi9cbiAgLy8gZm9yazogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBJbmRpY2F0aW5nIGNzdiBkYXRhIGhhcyBubyBoZWFkZXIgcm93IGFuZCBmaXJzdCByb3cgaXMgZGF0YSByb3cuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqL1xuICBub2hlYWRlcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBBbiBhcnJheSB0byBzcGVjaWZ5IHRoZSBoZWFkZXJzIG9mIENTViBkYXRhLiBJZiAtLW5vaGVhZGVyIGlzIGZhbHNlLCB0aGlzIHZhbHVlIHdpbGwgb3ZlcnJpZGUgQ1NWIGhlYWRlciByb3cuIERlZmF1bHQ6IG51bGwuIEV4YW1wbGU6IFtcIm15IGZpZWxkXCIsXCJuYW1lXCJdLlxuICAgKi9cbiAgaGVhZGVycz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogIERvbid0IGludGVycHJldCBkb3RzICguKSBhbmQgc3F1YXJlIGJyYWNrZXRzIGluIGhlYWRlciBmaWVsZHMgYXMgbmVzdGVkIG9iamVjdCBvciBhcnJheSBpZGVudGlmaWVycyBhdCBhbGwgKHRyZWF0IHRoZW0gbGlrZSByZWd1bGFyIGNoYXJhY3RlcnMgZm9yIEpTT04gZmllbGQgaWRlbnRpZmllcnMpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICovXG4gIGZsYXRLZXlzOiBib29sZWFuO1xuICAvKipcbiAgICogIHRoZSBtYXggY2hhcmFjdGVyIGEgY3N2IHJvdyBjb3VsZCBoYXZlLiAwIG1lYW5zIGluZmluaXRlLiBJZiBtYXggbnVtYmVyIGV4Y2VlZGVkLCBwYXJzZXIgd2lsbCBlbWl0IFwiZXJyb3JcIiBvZiBcInJvd19leGNlZWRcIi4gaWYgYSBwb3NzaWJseSBjb3JydXB0ZWQgY3N2IGRhdGEgcHJvdmlkZWQsIGdpdmUgaXQgYSBudW1iZXIgbGlrZSA2NTUzNSBzbyB0aGUgcGFyc2VyIHdvbnQgY29uc3VtZSBtZW1vcnkuIGRlZmF1bHQ6IDBcbiAgICovXG4gIG1heFJvd0xlbmd0aDogbnVtYmVyO1xuICAvKipcbiAgICogIHdoZXRoZXIgY2hlY2sgY29sdW1uIG51bWJlciBvZiBhIHJvdyBpcyB0aGUgc2FtZSBhcyBoZWFkZXJzLiBJZiBjb2x1bW4gbnVtYmVyIG1pc21hdGNoZWQgaGVhZGVycyBudW1iZXIsIGFuIGVycm9yIG9mIFwibWlzbWF0Y2hlZF9jb2x1bW5cIiB3aWxsIGJlIGVtaXR0ZWQuLiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgY2hlY2tDb2x1bW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgZXNjYXBlIGNoYXJhY3RlciB1c2VkIGluIHF1b3RlZCBjb2x1bW4uIERlZmF1bHQgaXMgZG91YmxlIHF1b3RlIChcIikgYWNjb3JkaW5nIHRvIFJGQzQxMDguIENoYW5nZSB0byBiYWNrIHNsYXNoIChcXCkgb3Igb3RoZXIgY2hhcnMgZm9yIHlvdXIgb3duIGNhc2UuXG4gICAqL1xuICBlc2NhcGU6IHN0cmluZztcbiAgLyoqXG4gICAqICAgQWxsb3dzIG92ZXJyaWRlIHBhcnNpbmcgbG9naWMgZm9yIGEgc3BlY2lmaWMgY29sdW1uLiBJdCBhY2NlcHRzIGEgSlNPTiBvYmplY3Qgd2l0aCBmaWVsZHMgbGlrZTogaGVhZE5hbWU6IDxTdHJpbmcgfCBGdW5jdGlvbj4gLiBlLmcuIHtmaWVsZDE6J251bWJlcid9IHdpbGwgdXNlIGJ1aWx0LWluIG51bWJlciBwYXJzZXIgdG8gY29udmVydCB2YWx1ZSBvZiB0aGUgZmllbGQxIGNvbHVtbiB0byBudW1iZXIuIEFub3RoZXIgZXhhbXBsZSB7XCJuYW1lXCI6bmFtZVByb2Nlc3NGdW5jfSB3aWxsIHVzZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gcGFyc2UgdGhlIHZhbHVlLlxuICAgKi9cbiAgY29sUGFyc2VyOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgQ2VsbFBhcnNlciB8IENvbHVtblBhcmFtXG4gIH07XG4gIC8qKlxuICAgKiAgRW5kIG9mIGxpbmUgY2hhcmFjdGVyLiBJZiBvbWl0dGVkLCBwYXJzZXIgd2lsbCBhdHRlbXB0IHRvIHJldHJpZXZlIGl0IGZyb20gdGhlIGZpcnN0IGNodW5rcyBvZiBDU1YgZGF0YVxuICAgKi9cbiAgZW9sPzogc3RyaW5nO1xuICAvKipcbiAgICogIEFsd2F5cyBpbnRlcnByZXQgZWFjaCBsaW5lIChhcyBkZWZpbmVkIGJ5IGVvbCkgYXMgYSByb3cuIFRoaXMgd2lsbCBwcmV2ZW50IGVvbCBjaGFyYWN0ZXJzIGZyb20gYmVpbmcgdXNlZCB3aXRoaW4gYSByb3cgKGV2ZW4gaW5zaWRlIGEgcXVvdGVkIGZpZWxkKS4gRGVmYXVsdCBpcyBmYWxzZS4gQ2hhbmdlIHRvIHRydWUgaWYgeW91IGFyZSBjb25maWRlbnQgbm8gaW5saW5lIGxpbmUgYnJlYWtzIChsaWtlIGxpbmUgYnJlYWsgaW4gYSBjZWxsIHdoaWNoIGhhcyBtdWx0aSBsaW5lIHRleHQpXG4gICAqL1xuICBhbHdheXNTcGxpdEF0RU9MOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGZvcm1hdCB0byBiZSBjb252ZXJ0ZWQgdG8uIFwianNvblwiIChkZWZhdWx0KSAtLSBjb252ZXJ0IGNzdiB0byBqc29uLiBcImNzdlwiIC0tIGNvbnZlcnQgY3N2IHRvIGNzdiByb3cgYXJyYXkuIFwibGluZVwiIC0tIGNvbnZlcnQgY3N2IHRvIGNzdiBsaW5lIHN0cmluZyBcbiAgICovXG4gIG91dHB1dDogXCJqc29uXCIgfCBcImNzdlwiIHwgXCJsaW5lXCI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgc3RyaW5nIFwibnVsbFwiIHRvIG51bGwgb2JqZWN0IGluIEpTT04gb3V0cHV0cy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICovXG4gIG51bGxPYmplY3Q6Ym9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IGRvd25zdHJlYW0gKHRoaXMgcGFyYW1ldGVyIGRvZXMgbm90IHdvcmsgaWYgb2JqZWN0TW9kZSBpcyBvbikuIGBsaW5lYCAtLSBqc29uIGlzIGVtaXR0ZWQgaW4gYSBzaW5nbGUgbGluZSBzZXBhcmF0ZWQgYnkgYSBsaW5lIGJyZWFrZSBsaWtlIFwianNvbjFcXG5qc29uMlwiIC4gYGFycmF5YCAtLSBkb3duc3RyZWFtIHJlcXVpcmVzIGFycmF5IGZvcm1hdCBsaWtlIFwiW2pzb24xLGpzb24yXVwiLiBEZWZhdWx0IGlzIGxpbmUuXG4gICAqL1xuICBkb3duc3RyZWFtRm9ybWF0OiBcImxpbmVcIiB8IFwiYXJyYXlcIjtcbiAgLyoqXG4gICAqIERlZmluZSB3aGV0aGVyIC50aGVuKGNhbGxiYWNrKSByZXR1cm5zIGFsbCBKU09OIGRhdGEgaW4gaXRzIGNhbGxiYWNrLiBEZWZhdWx0IGlzIHRydWUuIENoYW5nZSB0byBmYWxzZSB0byBzYXZlIG1lbW9yeSBpZiBzdWJzY3JpYmluZyBqc29uIGxpbmVzLlxuICAgKi9cbiAgbmVlZEVtaXRBbGw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENlbGxQYXJzZXIgPSAoaXRlbTogc3RyaW5nLCBoZWFkOiBzdHJpbmcsIHJlc3VsdFJvdzogYW55LCByb3c6IHN0cmluZ1tdLCBjb2x1bW5JbmRleDogbnVtYmVyKSA9PiBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uUGFyYW0ge1xuICBmbGF0PzogYm9vbGVhbjtcbiAgY2VsbFBhcnNlcj86IHN0cmluZyB8IENlbGxQYXJzZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVBhcmFtcyhwYXJhbXM/OiBQYXJ0aWFsPENTVlBhcnNlUGFyYW0+KTogQ1NWUGFyc2VQYXJhbSB7XG4gIGNvbnN0IGRlZmF1bHRQYXJhbTogQ1NWUGFyc2VQYXJhbSA9IHtcbiAgICBkZWxpbWl0ZXI6ICcsJyxcbiAgICBpZ25vcmVDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgaW5jbHVkZUNvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICBxdW90ZTogJ1wiJyxcbiAgICB0cmltOiB0cnVlLFxuICAgIGNoZWNrVHlwZTogZmFsc2UsXG4gICAgaWdub3JlRW1wdHk6IGZhbHNlLFxuICAgIC8vIGZvcms6IGZhbHNlLFxuICAgIG5vaGVhZGVyOiBmYWxzZSxcbiAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgZmxhdEtleXM6IGZhbHNlLFxuICAgIG1heFJvd0xlbmd0aDogMCxcbiAgICBjaGVja0NvbHVtbjogZmFsc2UsXG4gICAgZXNjYXBlOiAnXCInLFxuICAgIGNvbFBhcnNlcjoge30sXG4gICAgZW9sOiB1bmRlZmluZWQsXG4gICAgYWx3YXlzU3BsaXRBdEVPTDogZmFsc2UsXG4gICAgb3V0cHV0OiBcImpzb25cIixcbiAgICBudWxsT2JqZWN0OiBmYWxzZSxcbiAgICBkb3duc3RyZWFtRm9ybWF0OlwibGluZVwiLFxuICAgIG5lZWRFbWl0QWxsOnRydWVcbiAgfVxuICBpZiAoIXBhcmFtcykge1xuICAgIHBhcmFtcyA9IHt9O1xuICB9XG4gIGZvciAobGV0IGtleSBpbiBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtc1trZXldKSkge1xuICAgICAgICBkZWZhdWx0UGFyYW1ba2V5XSA9IFtdLmNvbmNhdChwYXJhbXNba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0UGFyYW1ba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdFBhcmFtO1xufVxuXG4iXX0=
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Processor = /** @class */ (function () {
function Processor(converter) {
this.converter = converter;
this.params = converter.parseParam;
this.runtime = converter.parseRuntime;
}
return Processor;
}());
exports.Processor = Processor;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3IudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUE7SUFHRSxtQkFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFJSCxnQkFBQztBQUFELENBQUMsQUFWRCxJQVVDO0FBVnFCLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IEpTT05SZXN1bHQgfSBmcm9tIFwiLi9saW5lVG9Kc29uXCI7XG5pbXBvcnQgeyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9jZXNzb3Ige1xuICBwcm90ZWN0ZWQgcGFyYW1zOiBDU1ZQYXJzZVBhcmFtO1xuICBwcm90ZWN0ZWQgcnVudGltZTogUGFyc2VSdW50aW1lO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29udmVydGVyOiBDb252ZXJ0ZXIpIHtcbiAgICB0aGlzLnBhcmFtcyA9IGNvbnZlcnRlci5wYXJzZVBhcmFtO1xuICAgIHRoaXMucnVudGltZSA9IGNvbnZlcnRlci5wYXJzZVJ1bnRpbWU7XG4gIH1cbiAgYWJzdHJhY3QgcHJvY2VzcyhjaHVuazogQnVmZmVyLGZpbmFsQ2h1bms/OmJvb2xlYW4pOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+XG4gIGFic3RyYWN0IGRlc3Ryb3koKTpQPHZvaWQ+O1xuICBhYnN0cmFjdCBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+O1xufVxuZXhwb3J0IHR5cGUgUHJvY2Vzc0xpbmVSZXN1bHQgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IEpTT05SZXN1bHQ7XG4iXX0=
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//return first eol found from a data chunk.
function default_1(data, param) {
if (!param.eol && data) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] === "\r") {
if (data[i + 1] === "\n") {
param.eol = "\r\n";
break;
}
else if (data[i + 1]) {
param.eol = "\r";
break;
}
}
else if (data[i] === "\n") {
param.eol = "\n";
break;
}
}
}
return param.eol || "\n";
}
exports.default = default_1;
;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9nZXRFb2wudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZ2V0RW9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkNBQTJDO0FBQzNDLG1CQUF5QixJQUFZLEVBQUUsS0FBbUI7SUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN4QixLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztvQkFDbkIsTUFBTTtpQkFDUDtxQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RCLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO29CQUNqQixNQUFNO2lCQUNQO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUMzQixLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDakIsTUFBTTthQUNQO1NBQ0Y7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQWxCRCw0QkFrQkM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG4vL3JldHVybiBmaXJzdCBlb2wgZm91bmQgZnJvbSBhIGRhdGEgY2h1bmsuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZGF0YTogc3RyaW5nLCBwYXJhbTogUGFyc2VSdW50aW1lKTogc3RyaW5nIHtcbiAgaWYgKCFwYXJhbS5lb2wgJiYgZGF0YSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoZGF0YVtpXSA9PT0gXCJcXHJcIikge1xuICAgICAgICBpZiAoZGF0YVtpICsgMV0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBwYXJhbS5lb2wgPSBcIlxcclxcblwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFbaSArIDFdKSB7XG4gICAgICAgICAgcGFyYW0uZW9sID0gXCJcXHJcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSBpZiAoZGF0YVtpXSA9PT0gXCJcXG5cIikge1xuICAgICAgICBwYXJhbS5lb2wgPSBcIlxcblwiO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcmFtLmVvbCB8fCBcIlxcblwiO1xufTtcbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rowSplit_1 = require("./rowSplit");
var Converter_1 = require("./Converter");
var assert = require("assert");
describe("Test delimiters", function () {
var getDelimiter = function (str, opt) {
return rowSplit_1.RowSplit.prototype["getDelimiter"].call({
conv: {
parseParam: {
delimiter: opt.delimiter
}
}
}, str);
};
it("should return the explicitly specified delimiter", function () {
var delimiter = ";";
var rowStr = "a;b;c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" });
assert.equal(returnedDelimiter, delimiter);
});
it("should return the autodetected delimiter if 'auto' specified", function () {
var rowStr = "a;b;c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
assert(returnedDelimiter === ";");
});
it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () {
var rowStr = "abc";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
assert(returnedDelimiter === ",");
});
it("should accetp an array with potential delimiters", function () {
var rowStr = "a$b$c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] });
assert(returnedDelimiter === '$');
});
});
describe("ParseMultiLine function", function () {
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter());
var func = function (lines) {
return rowSplit.parseMultiLines(lines);
};
it("should convert lines to csv lines", function () {
var lines = [
"a,b,c,d",
"hello,world,csvtojson,abc",
"1,2,3,4"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 3);
assert.equal(res.partial, "");
});
it("should process line breaks", function () {
var lines = [
"a,b,c",
'15",hello,"ab',
"cde\"",
"\"b\"\"b\",cc,dd"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 3);
assert.equal(res.rowsCells[1][0], "15\"");
assert.equal(res.rowsCells[1][2], "ab\ncde");
assert.equal(res.rowsCells[2][0], "b\"b");
assert.equal(res.partial, "");
});
it("should return partial if line not closed", function () {
var lines = [
"a,b,c",
'15",hello,"ab',
"d,e,f"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 1);
assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n");
});
});
describe("RowSplit.parse function", function () {
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter());
var func = function (str) {
return rowSplit.parse(str);
};
it("should split complete csv line", function () {
var str = "hello,world,csvtojson,awesome";
var res = func(str);
assert.equal(res.cells.length, 4);
assert.equal(res.closed, true);
});
it("should split incomplete csv line", function () {
var str = "hello,world,\"csvtojson,awesome";
var res = func(str);
assert.equal(res.closed, false);
});
it("should allow multiple line", function () {
var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\"";
var res = func(str);
assert.equal(res.closed, true);
assert.equal(res.cells[2], 'csvtojson,a"\nwesome');
});
it("should allow blank quotes", function () {
var data = "a|^^|^b^";
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
delimiter: '|',
quote: '^',
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells[1], "");
});
it("should allow blank quotes in quotes", function () {
var data = 'a,"hello,this,"", test"';
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells[1], 'hello,this,", test');
});
it("should smart detect if an initial quote is only part of value ", function () {
var data = '"Weight" (kg),Error code,"Height" (m)';
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells.length, 3);
assert(res.closed);
assert.equal(res.cells[0], '"Weight" (kg)');
assert.equal(res.cells[1], 'Error code');
assert.equal(res.cells[2], '"Height" (m)');
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3Jvd1NwbGl0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUU7QUFDekUseUNBQXdDO0FBQ3hDLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBTSxZQUFZLEdBQUcsVUFBQyxHQUFHLEVBQUUsR0FBcUM7UUFDOUQsT0FBTyxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCO2FBQ0Y7U0FDRixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFBO0lBRUQsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1FBQ3JELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtRQUNqRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLGlCQUFpQixLQUFLLEdBQUcs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Q0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUU1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm93U3BsaXQsIE11bHRpcGxlUm93UmVzdWx0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5cbmRlc2NyaWJlKFwiVGVzdCBkZWxpbWl0ZXJzXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZ2V0RGVsaW1pdGVyID0gKHN0ciwgb3B0OiB7IGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW10gfSk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIFJvd1NwbGl0LnByb3RvdHlwZVtcImdldERlbGltaXRlclwiXS5jYWxsKHtcbiAgICAgIGNvbnY6IHtcbiAgICAgICAgcGFyc2VQYXJhbToge1xuICAgICAgICAgIGRlbGltaXRlcjogb3B0LmRlbGltaXRlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgc3RyKTtcbiAgfVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQgZGVsaW1pdGVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGVsaW1pdGVyID0gXCI7XCI7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCI7XCIgfSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJldHVybmVkRGVsaW1pdGVyLCBkZWxpbWl0ZXIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIGF1dG9kZXRlY3RlZCBkZWxpbWl0ZXIgaWYgJ2F1dG8nIHNwZWNpZmllZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCJhdXRvXCIgfSk7XG4gICAgYXNzZXJ0KHJldHVybmVkRGVsaW1pdGVyID09PSBcIjtcIik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgJywnIGRlbGltaXRlciBpZiBkZWxpbWl0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCwgaW4gY2FzZSBvZiAnYXV0bydcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImFiY1wiO1xuICAgIHZhciByZXR1cm5lZERlbGltaXRlciA9IGdldERlbGltaXRlcihyb3dTdHIsIHsgZGVsaW1pdGVyOiBcImF1dG9cIiB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09IFwiLFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWNjZXRwIGFuIGFycmF5IHdpdGggcG90ZW50aWFsIGRlbGltaXRlcnNcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImEkYiRjXCI7XG4gICAgdmFyIHJldHVybmVkRGVsaW1pdGVyID0gZ2V0RGVsaW1pdGVyKHJvd1N0ciwgeyBkZWxpbWl0ZXI6IFtcIixcIiwgXCI7XCIsIFwiJFwiXSB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09ICckJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiUGFyc2VNdWx0aUxpbmUgZnVuY3Rpb25cIiwgZnVuY3Rpb24gKCkge1xuICBjb25zdCByb3dTcGxpdCA9IG5ldyBSb3dTcGxpdChuZXcgQ29udmVydGVyKCkpO1xuICBjb25zdCBmdW5jID0gKGxpbmVzOiBzdHJpbmdbXSk6IE11bHRpcGxlUm93UmVzdWx0ID0+IHtcbiAgICByZXR1cm4gcm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgfVxuICBpdChcInNob3VsZCBjb252ZXJ0IGxpbmVzIHRvIGNzdiBsaW5lc1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxpbmVzID0gW1xuICAgICAgXCJhLGIsYyxkXCIsXG4gICAgICBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhYmNcIixcbiAgICAgIFwiMSwyLDMsNFwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAzKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBwcm9jZXNzIGxpbmUgYnJlYWtzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGluZXMgPSBbXG4gICAgICBcImEsYixjXCIsXG4gICAgICAnMTVcIixoZWxsbyxcImFiJyxcbiAgICAgIFwiY2RlXFxcIlwiLFxuICAgICAgXCJcXFwiYlxcXCJcXFwiYlxcXCIsY2MsZGRcIlxuICAgIF07XG4gICAgdmFyIHJlcyA9IGZ1bmMobGluZXMpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHNbMV1bMF0sIFwiMTVcXFwiXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzFdWzJdLCBcImFiXFxuY2RlXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzJdWzBdLCBcImJcXFwiYlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gcGFydGlhbCBpZiBsaW5lIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBsaW5lcyA9IFtcbiAgICAgIFwiYSxiLGNcIixcbiAgICAgICcxNVwiLGhlbGxvLFwiYWInLFxuICAgICAgXCJkLGUsZlwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiMTVcXFwiLGhlbGxvLFxcXCJhYlxcbmQsZSxmXFxuXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlJvd1NwbGl0LnBhcnNlIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcigpKTtcbiAgY29uc3QgZnVuYyA9IChzdHIpOiBSb3dTcGxpdFJlc3VsdCA9PiB7XG4gICAgcmV0dXJuIHJvd1NwbGl0LnBhcnNlKHN0cik7XG4gIH1cbiAgaXQoXCJzaG91bGQgc3BsaXQgY29tcGxldGUgY3N2IGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhd2Vzb21lXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgNCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jbG9zZWQsIHRydWUpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBzcGxpdCBpbmNvbXBsZXRlIGNzdiBsaW5lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RyID0gXCJoZWxsbyx3b3JsZCxcXFwiY3N2dG9qc29uLGF3ZXNvbWVcIjtcbiAgICB2YXIgcmVzID0gZnVuYyhzdHIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2xvc2VkLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGFsbG93IG11bHRpcGxlIGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcIlxcXCJoZVxcXCJsbG9cXFwiLHdvcmxkLFxcXCJjc3Z0b2pzb24sYVxcXCJcXG53ZXNvbWVcXFwiXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNsb3NlZCwgdHJ1ZSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1syXSwgJ2NzdnRvanNvbixhXCJcXG53ZXNvbWUnKTtcbiAgfSk7XG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3Rlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFwiYXxeXnxeYl5cIjtcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgZGVsaW1pdGVyOiAnfCcsXG4gICAgICBxdW90ZTogJ14nLFxuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgXCJcIik7XG4gIH0pXG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3RlcyBpbiBxdW90ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSAnYSxcImhlbGxvLHRoaXMsXCJcIiwgdGVzdFwiJztcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgJ2hlbGxvLHRoaXMsXCIsIHRlc3QnKTtcbiAgfSlcbiAgaXQoXCJzaG91bGQgc21hcnQgZGV0ZWN0IGlmIGFuIGluaXRpYWwgcXVvdGUgaXMgb25seSBwYXJ0IG9mIHZhbHVlIFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9ICdcIldlaWdodFwiIChrZyksRXJyb3IgY29kZSxcIkhlaWdodFwiIChtKSc7XG4gICAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcih7XG4gICAgICBub2hlYWRlcjogdHJ1ZVxuICAgIH0pKTtcbiAgICBjb25zdCByZXMgPSByb3dTcGxpdC5wYXJzZShkYXRhKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0KHJlcy5jbG9zZWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMF0sJ1wiV2VpZ2h0XCIgKGtnKScpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMV0sJ0Vycm9yIGNvZGUnKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzWzJdLCdcIkhlaWdodFwiIChtKScpO1xuICAgIFxuICB9KVxufSk7XG4iXX0=
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var getEol_1 = __importDefault(require("./getEol"));
// const getEol = require("./getEol");
/**
* convert data chunk to file lines array
* @param {string} data data chunk as utf8 string
* @param {object} param Converter param object
* @return {Object} {lines:[line1,line2...],partial:String}
*/
function stringToLines(data, param) {
var eol = getEol_1.default(data, param);
var lines = data.split(eol);
var partial = lines.pop() || "";
return { lines: lines, partial: partial };
}
exports.stringToLines = stringToLines;
;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLG9EQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEM7Ozs7O0dBS0c7QUFDSCx1QkFBOEIsSUFBWSxFQUFFLEtBQW1CO0lBQzdELElBQU0sR0FBRyxHQUFHLGdCQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUxELHNDQUtDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IGdldEVvbCBmcm9tIFwiLi9nZXRFb2xcIjtcbi8vIGNvbnN0IGdldEVvbCA9IHJlcXVpcmUoXCIuL2dldEVvbFwiKTtcbi8qKlxuICogY29udmVydCBkYXRhIGNodW5rIHRvIGZpbGUgbGluZXMgYXJyYXlcbiAqIEBwYXJhbSAge3N0cmluZ30gZGF0YSAgZGF0YSBjaHVuayBhcyB1dGY4IHN0cmluZ1xuICogQHBhcmFtICB7b2JqZWN0fSBwYXJhbSBDb252ZXJ0ZXIgcGFyYW0gb2JqZWN0XG4gKiBAcmV0dXJuIHtPYmplY3R9ICAge2xpbmVzOltsaW5lMSxsaW5lMi4uLl0scGFydGlhbDpTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0xpbmVzKGRhdGE6IHN0cmluZywgcGFyYW06IFBhcnNlUnVudGltZSk6IFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBjb25zdCBlb2wgPSBnZXRFb2woZGF0YSwgcGFyYW0pO1xuICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoZW9sKTtcbiAgY29uc3QgcGFydGlhbCA9IGxpbmVzLnBvcCgpIHx8IFwiXCI7XG4gIHJldHVybiB7IGxpbmVzOiBsaW5lcywgcGFydGlhbDogcGFydGlhbCB9O1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBsaW5lczogRmlsZWxpbmVbXSxcbiAgLyoqXG4gICAqIGxhc3QgbGluZSB3aGljaCBjb3VsZCBiZSBpbmNvbXBsZXRlIGxpbmUuXG4gICAqL1xuICBwYXJ0aWFsOiBzdHJpbmdcbn1cbmV4cG9ydCB0eXBlIEZpbGVsaW5lID0gc3RyaW5nOyJdfQ==
"use strict";
var Converter_1 = require("./Converter");
var helper = function (param, options) {
return new Converter_1.Converter(param, options);
};
helper["csv"] = helper;
helper["Converter"] = Converter_1.Converter;
module.exports = helper;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEseUNBQXdDO0FBRXhDLElBQU0sTUFBTSxHQUFHLFVBQVUsS0FBOEIsRUFBRSxPQUEwQjtJQUNqRixPQUFPLElBQUkscUJBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN2QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcscUJBQVMsQ0FBQztBQUNoQyxpQkFBUSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1PcHRpb25zIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQ1NWUGFyc2VQYXJhbSB9IGZyb20gXCIuL1BhcmFtZXRlcnNcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuXG5jb25zdCBoZWxwZXIgPSBmdW5jdGlvbiAocGFyYW0/OiBQYXJ0aWFsPENTVlBhcnNlUGFyYW0+LCBvcHRpb25zPzogVHJhbnNmb3JtT3B0aW9ucyk6IENvbnZlcnRlciB7XG4gIHJldHVybiBuZXcgQ29udmVydGVyKHBhcmFtLCBvcHRpb25zKTtcbn1cbmhlbHBlcltcImNzdlwiXSA9IGhlbHBlcjtcbmhlbHBlcltcIkNvbnZlcnRlclwiXSA9IENvbnZlcnRlcjtcbmV4cG9ydCA9aGVscGVyO1xuIl19
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var stream_1 = require("stream");
var Parameters_1 = require("./Parameters");
var ParseRuntime_1 = require("./ParseRuntime");
var bluebird_1 = __importDefault(require("bluebird"));
// import { ProcessorFork } from "./ProcessFork";
var ProcessorLocal_1 = require("./ProcessorLocal");
var Result_1 = require("./Result");
var Converter = /** @class */ (function (_super) {
__extends(Converter, _super);
function Converter(param, options) {
if (options === void 0) { options = {}; }
var _this = _super.call(this, options) || this;
_this.options = options;
_this.params = Parameters_1.mergeParams(param);
_this.runtime = ParseRuntime_1.initParseRuntime(_this);
_this.result = new Result_1.Result(_this);
// if (this.params.fork) {
// this.processor = new ProcessorFork(this);
// } else {
_this.processor = new ProcessorLocal_1.ProcessorLocal(_this);
// }
_this.once("error", function (err) {
// console.log("BBB");
//wait for next cycle to emit the errors.
setImmediate(function () {
_this.result.processError(err);
_this.emit("done", err);
});
});
_this.once("done", function () {
_this.processor.destroy();
});
return _this;
}
Converter.prototype.preRawData = function (onRawData) {
this.runtime.preRawDataHook = onRawData;
return this;
};
Converter.prototype.preFileLine = function (onFileLine) {
this.runtime.preFileLineHook = onFileLine;
return this;
};
Converter.prototype.subscribe = function (onNext, onError, onCompleted) {
this.parseRuntime.subscribe = {
onNext: onNext,
onError: onError,
onCompleted: onCompleted
};
return this;
};
Converter.prototype.fromFile = function (filePath, options) {
var _this = this;
var fs = require("fs");
// var rs = null;
// this.wrapCallback(cb, function () {
// if (rs && rs.destroy) {
// rs.destroy();
// }
// });
fs.exists(filePath, function (exist) {
if (exist) {
var rs = fs.createReadStream(filePath, options);
rs.pipe(_this);
}
else {
_this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
}
});
return this;
};
Converter.prototype.fromStream = function (readStream) {
readStream.pipe(this);
return this;
};
Converter.prototype.fromString = function (csvString) {
var csv = csvString.toString();
var read = new stream_1.Readable();
var idx = 0;
read._read = function (size) {
if (idx >= csvString.length) {
this.push(null);
}
else {
var str = csvString.substr(idx, size);
this.push(str);
idx += size;
}
};
return this.fromStream(read);
};
Converter.prototype.then = function (onfulfilled, onrejected) {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
_this.parseRuntime.then = {
onfulfilled: function (value) {
if (onfulfilled) {
resolve(onfulfilled(value));
}
else {
resolve(value);
}
},
onrejected: function (err) {
if (onrejected) {
resolve(onrejected(err));
}
else {
reject(err);
}
}
};
});
};
Object.defineProperty(Converter.prototype, "parseParam", {
get: function () {
return this.params;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Converter.prototype, "parseRuntime", {
get: function () {
return this.runtime;
},
enumerable: true,
configurable: true
});
Converter.prototype._transform = function (chunk, encoding, cb) {
var _this = this;
this.processor.process(chunk)
.then(function (result) {
// console.log(result);
if (result.length > 0) {
_this.runtime.started = true;
return _this.result.processResult(result);
}
})
.then(function () {
_this.emit("drained");
cb();
}, function (error) {
_this.runtime.hasError = true;
_this.runtime.error = error;
_this.emit("error", error);
cb();
});
};
Converter.prototype._flush = function (cb) {
var _this = this;
this.processor.flush()
.then(function (data) {
if (data.length > 0) {
return _this.result.processResult(data);
}
})
.then(function () {
_this.processEnd(cb);
}, function (err) {
_this.emit("error", err);
cb();
});
};
Converter.prototype.processEnd = function (cb) {
this.result.endProcess();
this.emit("done");
cb();
};
Object.defineProperty(Converter.prototype, "parsedLineNumber", {
get: function () {
return this.runtime.parsedLineNumber;
},
enumerable: true,
configurable: true
});
return Converter;
}(stream_1.Transform));
exports.Converter = Converter;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Db252ZXJ0ZXIudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErRDtBQUMvRCwyQ0FBMEQ7QUFDMUQsK0NBQWdFO0FBQ2hFLHNEQUF5QjtBQU96QixpREFBaUQ7QUFDakQsbURBQWtEO0FBQ2xELG1DQUFrQztBQU1sQztJQUErQiw2QkFBUztJQXVGdEMsbUJBQVksS0FBOEIsRUFBUyxPQUE4QjtRQUE5Qix3QkFBQSxFQUFBLFlBQThCO1FBQWpGLFlBQ0Usa0JBQU0sT0FBTyxDQUFDLFNBdUJmO1FBeEJrRCxhQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUUvRSxLQUFJLENBQUMsTUFBTSxHQUFHLHdCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSSxDQUFDLE9BQU8sR0FBRywrQkFBZ0IsQ0FBQyxLQUFJLENBQUMsQ0FBQztRQUN0QyxLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQy9CLDBCQUEwQjtRQUMxQiw4Q0FBOEM7UUFDOUMsV0FBVztRQUNYLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwrQkFBYyxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUk7UUFDSixLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFDLEdBQVE7WUFDMUIsc0JBQXNCO1lBQ3RCLHlDQUF5QztZQUN6QyxZQUFZLENBQUM7Z0JBQ1gsS0FBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQyxDQUFDLENBQUM7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RyxLQUFLLENBQUM7WUFDM0IsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCwwQkFBTSxHQUFOLFVBQU8sRUFBWTtRQUFuQixpQkFjQztRQWJDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO2FBQ25CLElBQUksQ0FBQyxVQUFDLElBQUk7WUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUVuQixPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDO1lBQ0osS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQUUsVUFBQyxHQUFHO1lBQ0wsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDTyw4QkFBVSxHQUFsQixVQUFtQixFQUFFO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixFQUFFLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFDRCxzQkFBSSx1Q0FBZ0I7YUFBcEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFDSCxnQkFBQztBQUFELENBQUMsQUEzSkQsQ0FBK0Isa0JBQVMsR0EySnZDO0FBM0pZLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtLCBUcmFuc2Zvcm1PcHRpb25zLCBSZWFkYWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7IENTVlBhcnNlUGFyYW0sIG1lcmdlUGFyYW1zIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lLCBpbml0UGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHN0cmluZ1RvTGluZXMgfSBmcm9tIFwiLi9maWxlbGluZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcImxvZGFzaC9tYXBcIjtcbmltcG9ydCB7IFJvd1NwbGl0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IGxpbmVUb0pzb24sIHsgSlNPTlJlc3VsdCB9IGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFByb2Nlc3NvciwgUHJvY2Vzc0xpbmVSZXN1bHQgfSBmcm9tIFwiLi9Qcm9jZXNzb3JcIjtcbi8vIGltcG9ydCB7IFByb2Nlc3NvckZvcmsgfSBmcm9tIFwiLi9Qcm9jZXNzRm9ya1wiO1xuaW1wb3J0IHsgUHJvY2Vzc29yTG9jYWwgfSBmcm9tIFwiLi9Qcm9jZXNzb3JMb2NhbFwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4vUmVzdWx0XCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4vQ1NWRXJyb3JcIjtcbmltcG9ydCB7IGJ1ZkZyb21TdHJpbmcgfSBmcm9tIFwiLi91dGlsXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIGV4dGVuZHMgVHJhbnNmb3JtIGltcGxlbWVudHMgUHJvbWlzZUxpa2U8YW55W10+IHtcbiAgcHJlUmF3RGF0YShvblJhd0RhdGE6IFByZVJhd0RhdGFDYWxsYmFjayk6IENvbnZlcnRlciB7XG4gICAgdGhpcy5ydW50aW1lLnByZVJhd0RhdGFIb29rID0gb25SYXdEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHByZUZpbGVMaW5lKG9uRmlsZUxpbmU6IFByZUZpbGVMaW5lQ2FsbGJhY2spOiBDb252ZXJ0ZXIge1xuICAgIHRoaXMucnVudGltZS5wcmVGaWxlTGluZUhvb2sgPSBvbkZpbGVMaW5lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHN1YnNjcmliZShcbiAgICBvbk5leHQ/OiAoZGF0YTogYW55LCBsaW5lTnVtYmVyOiBudW1iZXIpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPixcbiAgICBvbkVycm9yPzogKGVycjogQ1NWRXJyb3IpID0+IHZvaWQsXG4gICAgb25Db21wbGV0ZWQ/OiAoKSA9PiB2b2lkKTogQ29udmVydGVyIHtcbiAgICB0aGlzLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgPSB7XG4gICAgICBvbk5leHQsXG4gICAgICBvbkVycm9yLFxuICAgICAgb25Db21wbGV0ZWRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgZnJvbUZpbGUoZmlsZVBhdGg6IHN0cmluZywgb3B0aW9ucz86IHN0cmluZyB8IENyZWF0ZVJlYWRTdHJlYW1PcHRpb24gfCB1bmRlZmluZWQpOiBDb252ZXJ0ZXIge1xuICAgIGNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgIC8vIHZhciBycyA9IG51bGw7XG4gICAgLy8gdGhpcy53cmFwQ2FsbGJhY2soY2IsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyAgIGlmIChycyAmJiBycy5kZXN0cm95KSB7XG4gICAgLy8gICAgIHJzLmRlc3Ryb3koKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcbiAgICBmcy5leGlzdHMoZmlsZVBhdGgsIChleGlzdCkgPT4ge1xuICAgICAgaWYgKGV4aXN0KSB7XG4gICAgICAgIGNvbnN0IHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgICAgIHJzLnBpcGUodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiRmlsZSBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIHBhdGggdG8geW91ciBjc3YgaXMgY29ycmVjdC5cIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZyb21TdHJlYW0ocmVhZFN0cmVhbTogUmVhZGFibGUpOiBDb252ZXJ0ZXIge1xuICAgIHJlYWRTdHJlYW0ucGlwZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmcm9tU3RyaW5nKGNzdlN0cmluZzogc3RyaW5nKTogQ29udmVydGVyIHtcbiAgICBjb25zdCBjc3YgPSBjc3ZTdHJpbmcudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZWFkID0gbmV3IFJlYWRhYmxlKCk7XG4gICAgbGV0IGlkeCA9IDA7XG4gICAgcmVhZC5fcmVhZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICBpZiAoaWR4ID49IGNzdlN0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5wdXNoKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RyID0gY3N2U3RyaW5nLnN1YnN0cihpZHgsIHNpemUpO1xuICAgICAgICB0aGlzLnB1c2goc3RyKTtcbiAgICAgICAgaWR4ICs9IHNpemU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZyb21TdHJlYW0ocmVhZCk7XG4gIH1cbiAgdGhlbjxUUmVzdWx0MSA9IGFueVtdLCBUUmVzdWx0MiA9IG5ldmVyPihvbmZ1bGZpbGxlZD86ICh2YWx1ZTogYW55W10pID0+IFRSZXN1bHQxIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDE+LCBvbnJlamVjdGVkPzogKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPik6IFByb21pc2VMaWtlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICByZXR1cm4gbmV3IFAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wYXJzZVJ1bnRpbWUudGhlbiA9IHtcbiAgICAgICAgb25mdWxmaWxsZWQ6ICh2YWx1ZTogYW55W10pID0+IHtcbiAgICAgICAgICBpZiAob25mdWxmaWxsZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmUob25mdWxmaWxsZWQodmFsdWUpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSBhcyBhbnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25yZWplY3RlZDogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAob25yZWplY3RlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKGVycikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhcnNlUGFyYW0oKTogQ1NWUGFyc2VQYXJhbSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zO1xuICB9XG4gIHB1YmxpYyBnZXQgcGFyc2VSdW50aW1lKCk6IFBhcnNlUnVudGltZSB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZTtcbiAgfVxuICBwcml2YXRlIHBhcmFtczogQ1NWUGFyc2VQYXJhbTtcbiAgcHJpdmF0ZSBydW50aW1lOiBQYXJzZVJ1bnRpbWU7XG4gIHByaXZhdGUgcHJvY2Vzc29yOiBQcm9jZXNzb3I7XG4gIHByaXZhdGUgcmVzdWx0OiBSZXN1bHQ7XG4gIGNvbnN0cnVjdG9yKHBhcmFtPzogUGFydGlhbDxDU1ZQYXJzZVBhcmFtPiwgcHVibGljIG9wdGlvbnM6IFRyYW5zZm9ybU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMucGFyYW1zID0gbWVyZ2VQYXJhbXMocGFyYW0pO1xuICAgIHRoaXMucnVudGltZSA9IGluaXRQYXJzZVJ1bnRpbWUodGhpcyk7XG4gICAgdGhpcy5yZXN1bHQgPSBuZXcgUmVzdWx0KHRoaXMpO1xuICAgIC8vIGlmICh0aGlzLnBhcmFtcy5mb3JrKSB7XG4gICAgLy8gICB0aGlzLnByb2Nlc3NvciA9IG5ldyBQcm9jZXNzb3JGb3JrKHRoaXMpO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgdGhpcy5wcm9jZXNzb3IgPSBuZXcgUHJvY2Vzc29yTG9jYWwodGhpcyk7XG4gICAgLy8gfVxuICAgIHRoaXMub25jZShcImVycm9yXCIsIChlcnI6IGFueSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coXCJCQkJcIik7XG4gICAgICAvL3dhaXQgZm9yIG5leHQgY3ljbGUgdG8gZW1pdCB0aGUgZXJyb3JzLlxuICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHQucHJvY2Vzc0Vycm9yKGVycik7XG4gICAgICAgIHRoaXMuZW1pdChcImRvbmVcIiwgZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gICAgdGhpcy5vbmNlKFwiZG9uZVwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3Nvci5kZXN0cm95KCk7XG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIF90cmFuc2Zvcm0oY2h1bms6IGFueSwgZW5jb2Rpbmc6IHN0cmluZywgY2I6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhjaHVuaylcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5ydW50aW1lLnN0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFwiZHJhaW5lZFwiKTtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJ1bnRpbWUuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnJ1bnRpbWUuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZXJyb3IpO1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gIH1cbiAgX2ZsdXNoKGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHJvY2Vzc29yLmZsdXNoKClcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5wcm9jZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NFbmQoY2IpO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICBjYigpO1xuICAgICAgfSlcbiAgfVxuICBwcml2YXRlIHByb2Nlc3NFbmQoY2IpIHtcbiAgICB0aGlzLnJlc3VsdC5lbmRQcm9jZXNzKCk7XG4gICAgdGhpcy5lbWl0KFwiZG9uZVwiKTtcbiAgICBjYigpO1xuICB9XG4gIGdldCBwYXJzZWRMaW5lTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5wYXJzZWRMaW5lTnVtYmVyO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlYWRTdHJlYW1PcHRpb24ge1xuICBmbGFncz86IHN0cmluZztcbiAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gIGZkPzogbnVtYmVyO1xuICBtb2RlPzogbnVtYmVyO1xuICBhdXRvQ2xvc2U/OiBib29sZWFuO1xuICBzdGFydD86IG51bWJlcjtcbiAgZW5kPzogbnVtYmVyO1xuICBoaWdoV2F0ZXJNYXJrPzogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgQ2FsbEJhY2sgPSAoZXJyOiBFcnJvciwgZGF0YTogQXJyYXk8YW55PikgPT4gdm9pZDtcblxuXG5leHBvcnQgdHlwZSBQcmVGaWxlTGluZUNhbGxiYWNrID0gKGxpbmU6IHN0cmluZywgbGluZU51bWJlcjogbnVtYmVyKSA9PiBzdHJpbmcgfCBQcm9taXNlTGlrZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgUHJlUmF3RGF0YUNhbGxiYWNrID0gKGNzdlN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcgfCBQcm9taXNlTGlrZTxzdHJpbmc+O1xuIl19
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Result_1 = require("./Result");
var Converter_1 = require("./Converter");
var path_1 = __importDefault(require("path"));
var assert_1 = __importDefault(require("assert"));
var dataDir = path_1.default.join(__dirname, "../test/data/");
describe("Result", function () {
it("should return need push downstream based on needEmitAll parameter", function () {
var conv = new Converter_1.Converter();
var res = new Result_1.Result(conv);
assert_1.default.equal(res["needEmitAll"], false);
conv.then();
assert_1.default.equal(res["needEmitAll"], true);
conv.parseParam.needEmitAll = false;
assert_1.default.equal(res["needEmitAll"], false);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudGVzdC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFnQztBQUNoQyx5Q0FBd0M7QUFHeEMsOENBQXdCO0FBQ3hCLGtEQUE0QjtBQUU1QixJQUFNLE9BQU8sR0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxlQUFlLENBQUMsQ0FBQztBQUVuRCxRQUFRLENBQUMsUUFBUSxFQUFDO0lBQ2hCLEVBQUUsQ0FBRSxtRUFBbUUsRUFBQztRQUNwRSxJQUFNLElBQUksR0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMzQixJQUFNLEdBQUcsR0FBQyxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFDLEtBQUssQ0FBQztRQUNsQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVzdWx0fSBmcm9tIFwiLi9SZXN1bHRcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IFAgZnJvbSBcImJsdWViaXJkXCI7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyBKU09OUmVzdWx0IH0gZnJvbSBcIi4vbGluZVRvSnNvblwiO1xuY29uc3QgZGF0YURpcj1wYXRoLmpvaW4oX19kaXJuYW1lLFwiLi4vdGVzdC9kYXRhL1wiKTtcblxuZGVzY3JpYmUoXCJSZXN1bHRcIiwoKT0+e1xuICBpdCAoXCJzaG91bGQgcmV0dXJuIG5lZWQgcHVzaCBkb3duc3RyZWFtIGJhc2VkIG9uIG5lZWRFbWl0QWxsIHBhcmFtZXRlclwiLGZ1bmN0aW9uICgpe1xuICAgICAgY29uc3QgY29udj1uZXcgQ29udmVydGVyKCk7XG4gICAgICBjb25zdCByZXM9bmV3IFJlc3VsdChjb252KTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSxmYWxzZSk7XG4gICAgICBjb252LnRoZW4oKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSx0cnVlKTtcbiAgICAgIGNvbnYucGFyc2VQYXJhbS5uZWVkRW1pdEFsbD1mYWxzZTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSxmYWxzZSk7XG4gIH0pO1xuXG59KVxuXG4iXX0=
"use strict";
// import {Converter} from "../src/Converter";
// import csv from "../src";
// var assert = require("assert");
// var fs = require("fs");
// var sandbox = require("sinon").sandbox.create();
// var file = __dirname + "/data/testData";
// var trailCommaData = __dirname + "/data/trailingComma";
// describe("CSV Convert in Background Process", function () {
// afterEach(function () {
// sandbox.restore();
// });
// it("should read from a stream", function (done) {
// var obj = new Converter({
// fork: true
// });
// var stream = fs.createReadStream(file);
// obj.then(function (obj) {
// assert.equal(obj.length, 2);
// done();
// },(err)=>{
// console.log(err.toString());
// });
// stream.pipe(obj);
// });
// it("should call onNext once a row is parsed.", function (done) {
// var obj = new Converter({fork:true});
// var stream = fs.createReadStream(file);
// var called = false;
// obj.subscribe(function (resultRow) {
// assert(resultRow);
// called = true;
// });
// obj.on("done", function () {
// assert(called);
// done();
// });
// stream.pipe(obj);
// });
// it("should emit end_parsed message once it is finished.", function (done) {
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length === 2);
// assert(result[0].date);
// assert(result[0].employee);
// assert(result[0].employee.name);
// assert(result[0].employee.age);
// assert(result[0].employee.number);
// assert(result[0].employee.key.length === 2);
// assert(result[0].address.length === 2);
// done();
// });
// fs.createReadStream(file).pipe(obj);
// });
// it("should handle traling comma gracefully", function (done) {
// var stream = fs.createReadStream(trailCommaData);
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length > 0);
// done();
// });
// stream.pipe(obj);
// });
// it("should handle comma in column which is surrounded by qoutes", function (done) {
// var testData = __dirname + "/data/dataWithComma";
// var rs = fs.createReadStream(testData);
// var obj = new Converter({
// "quote": "#",
// "fork":true
// });
// obj.then(function (result) {
// assert(result[0].col1 === "\"Mini. Sectt");
// assert.equal(result[3].col2, "125001,fenvkdsf");
// // console.log(result);
// done();
// });
// rs.pipe(obj);
// });
// it("should be able to convert a csv to column array data", function (done) {
// var columArrData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(columArrData);
// var result:any = {};
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function () {
// assert(result.TIMESTAMP.length === 5);
// done();
// });
// //record_parsed will be emitted each time a row has been parsed.
// csvConverter.subscribe(function (resultRow, rowIndex) {
// for (var key in resultRow) {
// if (resultRow.hasOwnProperty(key)) {
// if (!result[key] || !(result[key] instanceof Array)) {
// result[key] = [];
// }
// result[key][rowIndex] = resultRow[key];
// }
// }
// });
// rs.pipe(csvConverter);
// });
// it("should be able to convert csv string directly", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert.equal(jsonObj.length, 2);
// });
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// });
// it("should be able to convert csv string with error", function (done) {
// var testData = __dirname + "/data/dataWithUnclosedQuotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(undefined, function (err) {
// // console.log(err);
// assert(err);
// assert.equal(err.err, "unclosed_quote");
// done();
// });
// });
// it("should be able to convert csv string without callback provided", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// csvConverter.fromString(data);
// });
// it("should be able to handle columns with double quotes", function (done) {
// var testData = __dirname + "/data/dataWithQoutes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
// assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
// done();
// });
// });
// it("should be able to handle columns with two double quotes", function (done) {
// var testData = __dirname + "/data/twodoublequotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert.equal(jsonObj[0].title, "\"");
// assert.equal(jsonObj[0].data, "xyabcde");
// assert.equal(jsonObj[0].uuid, "fejal\"eifa");
// assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
// assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
// done();
// });
// });
// it("should handle empty csv file", function (done) {
// var testData = __dirname + "/data/emptyFile";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 0);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse large csv file", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// var count = 0;
// csvConverter.subscribe(function () {
// // console.log(arguments);
// count++;
// });
// csvConverter.then(function () {
// assert.equal(count, 5290);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse data and covert to specific types", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true,
// colParser: {
// "column6": "string",
// "column7": "string"
// }
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "number");
// assert(typeof d.column2 === "string");
// assert.equal(d["colume4"], "someinvaliddate");
// assert(d.column5.hello === "world");
// assert(d.column6 === '{"hello":"world"}');
// assert(d.column7 === "1234");
// assert(d.column8 === "abcd");
// assert(d.column9 === true);
// assert(d.column10[0] === 23);
// assert(d.column10[1] === 31);
// assert(d.column11[0].hello === "world");
// assert(d["name#!"] === false);
// });
// csvConverter.on("done", function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should turn off field type check", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: false
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "string");
// assert(typeof d.column2 === "string");
// assert(d["column3"] === "2012-01-01");
// assert(d["colume4"] === "someinvaliddate");
// assert(d.column5 === '{"hello":"world"}');
// assert.equal(d["column6"], '{"hello":"world"}');
// assert(d["column7"] === "1234");
// assert(d["column8"] === "abcd");
// assert(d.column9 === "true");
// assert(d.column10[0] === "23");
// assert(d.column10[1] === "31");
// assert(d["name#!"] === 'false');
// });
// csvConverter.then(function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should emit data event correctly", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var csvConverter = new Converter({
// fork:true
// },{objectMode:true});
// var count = 0;
// csvConverter.on("data", function (d) {
// count++;
// });
// csvConverter.on("done", function () {
// assert.equal(csvConverter.parsedLineNumber, 5290);
// done();
// });
// var rs = fs.createReadStream(testData);
// rs.pipe(csvConverter);
// });
// it("should process column with linebreaks", function (done) {
// var testData = __dirname + "/data/lineBreak";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true
// });
// csvConverter.subscribe(function (d) {
// assert(d.Period === 13);
// assert(d["Apparent age"] === "Unknown");
// done();
// });
// rs.pipe(csvConverter);
// });
// it("be able to ignore empty columns", function (done) {
// var testData = __dirname + "/data/dataIgnoreEmpty";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(csv({
// ignoreEmpty: true ,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 3);
// assert(j.col2.length === 2);
// assert(j.col2[1] === "d3");
// assert(j.col4.col3 === undefined);
// assert(j.col4.col5 === "world");
// assert(res[1].col1 === "d2");
// assert(res[2].col1 === "d4");
// done();
// });
// });
// it("should allow no header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.field1 === "CC102-PDMI-001");
// assert(j.field2 === "eClass_5.1.3");
// done();
// });
// });
// it("should allow customised header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b"],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.a === "CC102-PDMI-001");
// assert(j.b === "eClass_5.1.3");
// assert(j.field3 === "10/3/2014");
// done();
// });
// });
// it("should allow customised header to override existing header", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// headers: [],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.field1 === "Food Factory");
// assert(j.field2 === "Oscar");
// done();
// });
// });
// it("should handle when there is an empty string", function (done) {
// var testData = __dirname + "/data/dataWithEmptyString";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b", "c"],
// checkType: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// // assert(res.length===2);
// assert(j.a === "green");
// assert(j.b === 40);
// assert.equal(j.c, "");
// done();
// });
// });
// it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 3 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 9 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should emit eol event when line ending is detected as CRLF", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\r\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should emit eol event when line ending is detected as LF", function (done) {
// var testData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should remove the Byte Order Mark (BOM) from input", function (done) {
// var testData = __dirname + "/data/dataNoTrimBOM";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then( function (res) {
// var j = res[0];
// assert(res.length===2);
// assert(j.name === "joe");
// assert(j.age === "20");
// done();
// });
// });
// it("should set output as csv", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var numOfRow = 0;
// csv({ output: "csv",fork:true })
// .fromStream(rs)
// .subscribe(function (row, idx) {
// numOfRow++;
// assert(row);
// assert(idx >= 0);
// })
// .on("done", function (error) {
// assert(!error);
// assert.equal(2, numOfRow);
// assert(numOfRow !== 0);
// done();
// });
// });
// it("should process long header", function (done) {
// var testData = __dirname + "/data/longHeader";
// var rs = fs.createReadStream(testData, { highWaterMark: 100 });
// var numOfRow = 0;
// var numOfJson = 0;
// csv({fork:true}, { highWaterMark: 100 })
// .fromStream(rs)
// .subscribe(function (res, idx) {
// numOfJson++;
// assert.equal(res.Date, '8/26/16');
// assert(idx >= 0);
// })
// .on("done", function () {
// assert(numOfJson === 1);
// done();
// });
// });
// it("should parse #139", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/data#139");
// csv({fork:true})
// .fromStream(rs)
// .then(function (res) {
// assert.equal(res[1].field3, "9001009395 9001009990");
// done();
// });
// });
// it("should ignore column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// var headerEmitted = false;
// csv({
// ignoreColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), -1);
// assert.equal(header.indexOf("UPDATE"), 0);
// if (headerEmitted) {
// throw ("header event should only happen once")
// }
// headerEmitted = true;
// })
// // .on("csv", function (row, idx) {
// // if (!headerEmitted) {
// // throw ("header should be emitted before any data events");
// // }
// // assert(idx >= 0);
// // if (idx === 1) {
// // assert.equal(row[0], "n");
// // }
// // })
// .subscribe(function (j, idx) {
// // console.log(j);
// assert(!j.TIMESTAMP);
// assert(idx >= 0);
// })
// .on("done", function (err) {
// assert(!err);
// assert(headerEmitted);
// done();
// });
// });
// it("should include column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// csv({
// includeColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), 0);
// assert.equal(header.indexOf("UPDATE"), -1);
// assert.equal(header.length, 1);
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// if (idx === 1) {
// assert.equal(j.TIMESTAMP, "abc, def, ccc");
// }
// assert(!j.UID)
// assert(!j['BYTES SENT'])
// })
// .on("done", function () {
// done();
// });
// });
// it("should allow headers and include columns to be given as reference to the same var", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var headers = [
// 'first',
// 'second',
// 'third',
// ];
// var expected = headers;
// csv({
// headers: headers,
// includeColumns: /(first|second|third)/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// expected.forEach(function (value, index) {
// assert.equal(header.indexOf(value), index);
// });
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// assert.equal(expected.length, Object.keys(j).length);
// expected.forEach(function (attribute) {
// assert(j.hasOwnProperty(attribute));
// });
// })
// .on("done", function () {
// done();
// });
// });
// it("should leave provided params objects unmutated", function() {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var includeColumns = [
// 'fieldA.title',
// 'description',
// ];
// return csv({
// includeColumns: /(fieldA\.title|description)/,
// fork:true
// })
// .fromStream(rs)
// .on("json", function(j, idx) {
// assert(idx >= 0);
// })
// .on("header", function(header) {
// includeColumns.forEach(function (value, index) {
// assert.equal(index, header.indexOf(value));
// });
// })
// });
// it("should accept pipe as quote", function (done) {
// csv({
// quote: "|",
// output: "csv",
// "fork":true
// })
// .fromFile(__dirname + "/data/pipeAsQuote")
// .subscribe(function (csv) {
// assert.equal(csv[2], "blahhh, blah");
// })
// .on('done', function () {
// done()
// });
// })
// it("should allow async subscribe function", () => {
// return csv({ trim: true,fork:true })
// .fromString(`a,b,c
// 1,2,3
// 4,5,6`)
// .subscribe((d) => {
// return new Promise((resolve, reject) => {
// setTimeout(() => {
// d.a = 10;
// resolve();
// }, 20);
// })
// })
// .then((d) => {
// assert.equal(d[0].a, 10);
// assert.equal(d[1].a, 10);
// })
// })
// it("should omit a column", () => {
// return csv({
// colParser: {
// "a": "omit"
// },
// fork:true
// })
// .fromString(`a,b,c
// 1,2,3
// fefe,5,6`)
// .then((d) => {
// assert.strictEqual(d[0].a, undefined);
// assert.equal(d[1].a, undefined);
// })
// })
// });
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci5mb3JrLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0Q1NWQ29udmVydGVyLmZvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhDQUE4QztBQUM5Qyw0QkFBNEI7QUFDNUIsa0NBQWtDO0FBQ2xDLDBCQUEwQjtBQUMxQixtREFBbUQ7QUFDbkQsMkNBQTJDO0FBQzNDLDBEQUEwRDtBQUMxRCw4REFBOEQ7QUFDOUQsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixRQUFRO0FBR1Isc0RBQXNEO0FBQ3RELGdDQUFnQztBQUNoQyxtQkFBbUI7QUFDbkIsVUFBVTtBQUNWLDhDQUE4QztBQUM5QyxnQ0FBZ0M7QUFDaEMscUNBQXFDO0FBQ3JDLGdCQUFnQjtBQUNoQixpQkFBaUI7QUFDakIscUNBQXFDO0FBQ3JDLFVBQVU7QUFDVix3QkFBd0I7QUFDeEIsUUFBUTtBQUVSLHFFQUFxRTtBQUNyRSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBQzlDLDBCQUEwQjtBQUMxQiwyQ0FBMkM7QUFDM0MsMkJBQTJCO0FBQzNCLHVCQUF1QjtBQUN2QixVQUFVO0FBQ1YsbUNBQW1DO0FBQ25DLHdCQUF3QjtBQUN4QixnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLHdCQUF3QjtBQUN4QixRQUFRO0FBRVIsZ0ZBQWdGO0FBQ2hGLDRDQUE0QztBQUM1QyxtQ0FBbUM7QUFDbkMsd0JBQXdCO0FBQ3hCLHFDQUFxQztBQUNyQyxnQ0FBZ0M7QUFDaEMsb0NBQW9DO0FBQ3BDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCxnREFBZ0Q7QUFDaEQsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDViwyQ0FBMkM7QUFDM0MsUUFBUTtBQUVSLG1FQUFtRTtBQUNuRSx3REFBd0Q7QUFDeEQs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cnRlclwiO1xuLy8gaW1wb3J0IGNzdiBmcm9tIFwiLi4vc3JjXCI7XG4vLyB2YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbi8vIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbi8vIHZhciBzYW5kYm94ID0gcmVxdWlyZShcInNpbm9uXCIpLnNhbmRib3guY3JlYXRlKCk7XG4vLyB2YXIgZmlsZSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vIHZhciB0cmFpbENvbW1hRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHJhaWxpbmdDb21tYVwiO1xuLy8gZGVzY3JpYmUoXCJDU1YgQ29udmVydCBpbiBCYWNrZ3JvdW5kIFByb2Nlc3NcIiwgZnVuY3Rpb24gKCkge1xuLy8gICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuLy8gICAgIHNhbmRib3gucmVzdG9yZSgpO1xuLy8gICB9KTtcblxuXG4vLyAgIGl0KFwic2hvdWxkIHJlYWQgZnJvbSBhIHN0cmVhbVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6IHRydWVcbi8vICAgICB9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSwoZXJyKT0+e1xuLy8gICAgICAgY29uc29sZS5sb2coZXJyLnRvU3RyaW5nKCkpO1xuLy8gICAgIH0pO1xuLy8gICAgIHN0cmVhbS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGNhbGwgb25OZXh0IG9uY2UgYSByb3cgaXMgcGFyc2VkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4vLyAgICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0Um93KTtcbi8vICAgICAgIGNhbGxlZCA9IHRydWU7XG4vLyAgICAgfSk7XG4vLyAgICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQoY2FsbGVkKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0KTtcbi8vICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZGF0ZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZW1wbG95ZWUubmFtZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmFnZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm51bWJlcik7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmtleS5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdFswXS5hZGRyZXNzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSB0cmFsaW5nIGNvbW1hIGdyYWNlZnVsbHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0cmFpbENvbW1hRGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIG9iai50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdC5sZW5ndGggPiAwKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgY29tbWEgaW4gY29sdW1uIHdoaWNoIGlzIHN1cnJvdW5kZWQgYnkgcW91dGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aENvbW1hXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgXCJxdW90ZVwiOiBcIiNcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmNvbDEgPT09IFwiXFxcIk1pbmkuIFNlY3R0XCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFszXS5jb2wyLCBcIjEyNTAwMSxmZW52a2RzZlwiKTtcbi8vICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgYSBjc3YgdG8gY29sdW1uIGFycmF5IGRhdGFcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgY29sdW1BcnJEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oY29sdW1BcnJEYXRhKTtcbi8vICAgICB2YXIgcmVzdWx0OmFueSA9IHt9O1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICAvL2VuZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIG9uY2UgcGFyc2luZyBmaW5pc2hlZFxuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQuVElNRVNUQU1QLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG5cbi8vICAgICAvL3JlY29yZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIGVhY2ggdGltZSBhIHJvdyBoYXMgYmVlbiBwYXJzZWQuXG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93LCByb3dJbmRleCkge1xuLy8gICAgICAgZm9yICh2YXIga2V5IGluIHJlc3VsdFJvdykge1xuLy8gICAgICAgICBpZiAocmVzdWx0Um93Lmhhc093blByb3BlcnR5KGtleSkpIHtcbi8vICAgICAgICAgICBpZiAoIXJlc3VsdFtrZXldIHx8ICEocmVzdWx0W2tleV0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbi8vICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW107XG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICAgIHJlc3VsdFtrZXldW3Jvd0luZGV4XSA9IHJlc3VsdFJvd1trZXldO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyBkaXJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIpO1xuLy8gICAgICAgYXNzZXJ0KGVycik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgY29sdW1ucyB3aXRoIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbi8vICAgICAgIGFzc2VydChqc29uT2JqWzBdLlRJTUVTVEFNUCA9PT0gJzEzOTU0MjY0XCIyMicsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMF0uVElNRVNUQU1QKSk7XG5cbi8vICAgICAgIGFzc2VydChqc29uT2JqWzFdLlRJTUVTVEFNUCA9PT0gJ2FiYywgZGVmLCBjY2MnLCBKU09OLnN0cmluZ2lmeShqc29uT2JqWzFdLlRJTUVTVEFNUCkpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBjb2x1bW5zIHdpdGggdHdvIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL3R3b2RvdWJsZXF1b3Rlc1wiO1xuLy8gICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgbGFyZ2UgY3N2IGZpbGVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhhcmd1bWVudHMpO1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgZGF0YSBhbmQgY292ZXJ0IHRvIHNwZWNpZmljIHR5cGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFR5cGVcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBmb3JrOnRydWUsXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBjb2xQYXJzZXI6IHtcbi8vICAgICAgICAgXCJjb2x1bW42XCI6IFwic3RyaW5nXCIsXG4vLyAgICAgICAgIFwiY29sdW1uN1wiOiBcInN0cmluZ1wiXG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjEgPT09IFwibnVtYmVyXCIpO1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjIgPT09IFwic3RyaW5nXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGRbXCJjb2x1bWU0XCJdLCBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUuaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW42ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW43ID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW44ID09PSBcImFiY2RcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSB0cnVlKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSAyMyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW4xMFsxXSA9PT0gMzEpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTFbMF0uaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gZmFsc2UpO1xuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgdHVybiBvZmYgZmllbGQgdHlwZSBjaGVja1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgZm9yazp0cnVlLFxuLy8gICAgICAgY2hlY2tUeXBlOiBmYWxzZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydChkW1wiY29sdW1uM1wiXSA9PT0gXCIyMDEyLTAxLTAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bWU0XCJdID09PSBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUgPT09ICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1uNlwiXSwgJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bW43XCJdID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcImNvbHVtbjhcIl0gPT09IFwiYWJjZFwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjkgPT09IFwidHJ1ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSBcIjIzXCIpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IFwiMzFcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gJ2ZhbHNlJyk7XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBkYXRhIGV2ZW50IGNvcnJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbGFyZ2UtY3N2LXNhbXBsZS5jc3ZcIjtcblxuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0se29iamVjdE1vZGU6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydC5lcXVhbChjc3ZDb252ZXJ0ZXIucGFyc2VkTGluZU51bWJlciwgNTI5MCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBwcm9jZXNzIGNvbHVtbiB3aXRoIGxpbmVicmVha3NcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xpbmVCcmVha1wiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZSxcbi8vICAgICAgIGNoZWNrVHlwZTogdHJ1ZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydChkLlBlcmlvZCA9PT0gMTMpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJBcHBhcmVudCBhZ2VcIl0gPT09IFwiVW5rbm93blwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwiYmUgYWJsZSB0byBpZ25vcmUgZW1wdHkgY29sdW1uc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YUlnbm9yZUVtcHR5XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShjc3YoeyBcbi8vICAgICAgIGlnbm9yZUVtcHR5OiB0cnVlICxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuLy8gICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDMpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMi5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMlsxXSA9PT0gXCJkM1wiKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sMyA9PT0gdW5kZWZpbmVkKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sNSA9PT0gXCJ3b3JsZFwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMV0uY29sMSA9PT0gXCJkMlwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMl0uY29sMSA9PT0gXCJkNFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgbm8gaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7IFxuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcbi8vICAgICAgIGFzc2VydChyZXMubGVuZ3RoID09PSA1KTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGN1c3RvbWlzZWQgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBub2hlYWRlcjogdHJ1ZSxcbi8vICAgICAgIGhlYWRlcnM6IFtcImFcIiwgXCJiXCJdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBhc3NlcnQoai5hID09PSBcIkNDMTAyLVBETUktMDAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGouYiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDMgPT09IFwiMTAvMy8yMDE0XCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlciB0byBvdmVycmlkZSBleGlzdGluZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGhlYWRlcnM6IFtdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiRm9vZCBGYWN0b3J5XCIpO1xuLy8gICAgICAgYXNzZXJ0KGouZmllbGQyID09PSBcIk9zY2FyXCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgd2hlbiB0aGVyZSBpcyBhbiBlbXB0eSBzdHJpbmdcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoRW1wdHlTdHJpbmdcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiLCBcImNcIl0sXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcblxuLy8gICAgICAgLy8gYXNzZXJ0KHJlcy5sZW5ndGg9PT0yKTtcbi8vICAgICAgIGFzc2VydChqLmEgPT09IFwiZ3JlZW5cIik7XG4vLyAgICAgICBhc3NlcnQoai5iID09PSA0MCk7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoai5jLCBcIlwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBpcyBzbWFsbGVyIHRoYW4gaGVhZGVyIHJvdyBsZW5ndGhcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiAzIH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBlbmRzIGluIG1pZGRsZSBvZiBDUkxGIGxpbmUgYnJlYWtcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiA5IH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBlb2wgZXZlbnQgd2hlbiBsaW5lIGVuZGluZyBpcyBkZXRlY3RlZCBhcyBDUkxGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCByZW1vdmUgdGhlIEJ5dGUgT3JkZXIgTWFyayAoQk9NKSBmcm9tIGlucHV0XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQk9NXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oIGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuXG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aD09PTIpO1xuLy8gICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4vLyAgICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIHNldCBvdXRwdXQgYXMgY3N2XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBudW1PZlJvdyA9IDA7XG4vLyAgICAgY3N2KHsgb3V0cHV0OiBcImNzdlwiLGZvcms6dHJ1ZSB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChyb3csIGlkeCkge1xuLy8gICAgICAgICBudW1PZlJvdysrO1xuLy8gICAgICAgICBhc3NlcnQocm93KTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG5cbi8vICAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKGVycm9yKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyb3IpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoMiwgbnVtT2ZSb3cpO1xuLy8gICAgICAgICBhc3NlcnQobnVtT2ZSb3cgIT09IDApO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIHByb2Nlc3MgbG9uZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xvbmdIZWFkZXJcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhLCB7IGhpZ2hXYXRlck1hcms6IDEwMCB9KTtcbi8vICAgICB2YXIgbnVtT2ZSb3cgPSAwO1xuLy8gICAgIHZhciBudW1PZkpzb24gPSAwO1xuLy8gICAgIGNzdih7Zm9yazp0cnVlfSwgeyBoaWdoV2F0ZXJNYXJrOiAxMDAgfSlcbi8vICAgICAgIC5mcm9tU3RyZWFtKHJzKVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAocmVzLCBpZHgpIHtcbi8vICAgICAgICAgbnVtT2ZKc29uKys7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChyZXMuRGF0ZSwgJzgvMjYvMTYnKTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgYXNzZXJ0KG51bU9mSnNvbiA9PT0gMSk7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgIzEzOVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhIzEzOVwiKTtcbi8vICAgICBjc3Yoe2Zvcms6dHJ1ZX0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5maWVsZDMsIFwiOTAwMTAwOTM5NSA5MDAxMDA5OTkwXCIpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgaWdub3JlIGNvbHVtblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiKTtcbi8vICAgICB2YXIgaGVhZGVyRW1pdHRlZCA9IGZhbHNlO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpZ25vcmVDb2x1bW5zOiAvVElNRVNUQU1QLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZihcIlRJTUVTVEFNUFwiKSwgLTEpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIDApO1xuLy8gICAgICAgICBpZiAoaGVhZGVyRW1pdHRlZCkge1xuLy8gICAgICAgICAgIHRocm93IChcImhlYWRlciBldmVudCBzaG91bGQgb25seSBoYXBwZW4gb25jZVwiKVxuLy8gICAgICAgICB9XG4vLyAgICAgICAgIGhlYWRlckVtaXR0ZWQgPSB0cnVlO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC8vIC5vbihcImNzdlwiLCBmdW5jdGlvbiAocm93LCBpZHgpIHtcbi8vICAgICAgIC8vICAgaWYgKCFoZWFkZXJFbWl0dGVkKSB7XG4vLyAgICAgICAvLyAgICAgdGhyb3cgKFwiaGVhZGVyIHNob3VsZCBiZSBlbWl0dGVkIGJlZm9yZSBhbnkgZGF0YSBldmVudHNcIik7XG4vLyAgICAgICAvLyAgIH1cbi8vICAgICAgIC8vICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIC8vICAgaWYgKGlkeCA9PT0gMSkge1xuLy8gICAgICAgLy8gICAgIGFzc2VydC5lcXVhbChyb3dbMF0sIFwiblwiKTtcbi8vICAgICAgIC8vICAgfVxuLy8gICAgICAgLy8gfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICAvLyBjb25zb2xlLmxvZyhqKTtcbi8vICAgICAgICAgYXNzZXJ0KCFqLlRJTUVTVEFNUCk7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyKTtcbi8vICAgICAgICAgYXNzZXJ0KGhlYWRlckVtaXR0ZWQpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGluY2x1ZGUgY29sdW1uXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCIpO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogL1RJTUVTVEFNUC8sXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAub24oXCJoZWFkZXJcIiwgZnVuY3Rpb24gKGhlYWRlcikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJUSU1FU1RBTVBcIiksIDApO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIC0xKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5sZW5ndGgsIDEpO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuLy8gICAgICAgICBpZiAoaWR4ID09PSAxKSB7XG4vLyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGouVElNRVNUQU1QLCBcImFiYywgZGVmLCBjY2NcIik7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgYXNzZXJ0KCFqLlVJRClcbi8vICAgICAgICAgYXNzZXJ0KCFqWydCWVRFUyBTRU5UJ10pXG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgaGVhZGVycyBhbmQgaW5jbHVkZSBjb2x1bW5zIHRvIGJlIGdpdmVuIGFzIHJlZmVyZW5jZSB0byB0aGUgc2FtZSB2YXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGhlYWRlcnMgPSBbXG4vLyAgICAgICAnZmlyc3QnLFxuLy8gICAgICAgJ3NlY29uZCcsXG4vLyAgICAgICAndGhpcmQnLFxuLy8gICAgIF07XG5cbi8vICAgICB2YXIgZXhwZWN0ZWQgPSBoZWFkZXJzO1xuXG4vLyAgICAgY3N2KHtcbi8vICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogLyhmaXJzdHxzZWNvbmR8dGhpcmQpLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuLy8gICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZih2YWx1ZSksIGluZGV4KTtcbi8vICAgICAgICAgfSk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChleHBlY3RlZC5sZW5ndGgsIE9iamVjdC5rZXlzKGopLmxlbmd0aCk7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuLy8gICAgICAgICAgIGFzc2VydChqLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZSkpO1xuLy8gICAgICAgICB9KTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgZG9uZSgpO1xuLy8gICAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGxlYXZlIHByb3ZpZGVkIHBhcmFtcyBvYmplY3RzIHVubXV0YXRlZFwiLCBmdW5jdGlvbigpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGluY2x1ZGVDb2x1bW5zID0gW1xuLy8gICAgICAgJ2ZpZWxkQS50aXRsZScsXG4vLyAgICAgICAnZGVzY3JpcHRpb24nLFxuLy8gICAgIF07XG5cblxuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgaW5jbHVkZUNvbHVtbnM6IC8oZmllbGRBXFwudGl0bGV8ZGVzY3JpcHRpb24pLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImpzb25cIiwgZnVuY3Rpb24oaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiaGVhZGVyXCIsIGZ1bmN0aW9uKGhlYWRlcikge1xuLy8gICAgICAgICBpbmNsdWRlQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbi8vICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW5kZXgsIGhlYWRlci5pbmRleE9mKHZhbHVlKSk7XG4vLyAgICAgICAgIH0pO1xuLy8gICAgICAgfSlcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGFjY2VwdCBwaXBlIGFzIHF1b3RlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgY3N2KHtcbi8vICAgICAgIHF1b3RlOiBcInxcIixcbi8vICAgICAgIG91dHB1dDogXCJjc3ZcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvcGlwZUFzUXVvdGVcIilcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGNzdikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoY3N2WzJdLCBcImJsYWhoaCwgYmxhaFwiKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oJ2RvbmUnLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKVxuLy8gICAgICAgfSk7XG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGFzeW5jIHN1YnNjcmliZSBmdW5jdGlvblwiLCAoKSA9PiB7XG4vLyAgICAgcmV0dXJuIGNzdih7IHRyaW06IHRydWUsZm9yazp0cnVlIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgICAxLDIsM1xuLy8gICAgIDQsNSw2YClcbi8vICAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbi8vICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8vICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbi8vICAgICAgICAgICAgIGQuYSA9IDEwO1xuLy8gICAgICAgICAgICAgcmVzb2x2ZSgpO1xuLy8gICAgICAgICAgIH0sIDIwKTtcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0pXG4vLyAgICAgICAudGhlbigoZCkgPT4ge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAxMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIDEwKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIG9taXQgYSBjb2x1bW5cIiwgKCkgPT4ge1xuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgY29sUGFyc2VyOiB7XG4vLyAgICAgICAgIFwiYVwiOiBcIm9taXRcIlxuLy8gICAgICAgfSxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgMSwyLDNcbi8vICAgZmVmZSw1LDZgKVxuLy8gICAgICAgLnRoZW4oKGQpID0+IHtcbi8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4gIFxuLy8gfSk7XG4iXX0=
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var getEol_1 = __importDefault(require("./getEol"));
var util_1 = require("./util");
var defaulDelimiters = [",", "|", "\t", ";", ":"];
var RowSplit = /** @class */ (function () {
function RowSplit(conv) {
this.conv = conv;
this.cachedRegExp = {};
this.delimiterEmitted = false;
this._needEmitDelimiter = undefined;
this.quote = conv.parseParam.quote;
this.trim = conv.parseParam.trim;
this.escape = conv.parseParam.escape;
}
Object.defineProperty(RowSplit.prototype, "needEmitDelimiter", {
get: function () {
if (this._needEmitDelimiter === undefined) {
this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0;
}
return this._needEmitDelimiter;
},
enumerable: true,
configurable: true
});
RowSplit.prototype.parse = function (fileline) {
if (fileline.length === 0 || (this.conv.parseParam.ignoreEmpty && fileline.trim().length === 0)) {
return { cells: [], closed: true };
}
var quote = this.quote;
var trim = this.trim;
var escape = this.escape;
if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") {
this.conv.parseRuntime.delimiter = this.getDelimiter(fileline);
}
if (this.needEmitDelimiter && !this.delimiterEmitted) {
this.conv.emit("delimiter", this.conv.parseRuntime.delimiter);
this.delimiterEmitted = true;
}
var delimiter = this.conv.parseRuntime.delimiter;
var rowArr = fileline.split(delimiter);
if (quote === "off") {
if (trim) {
for (var i = 0; i < rowArr.length; i++) {
rowArr[i] = rowArr[i].trim();
}
}
return { cells: rowArr, closed: true };
}
else {
return this.toCSVRow(rowArr, trim, quote, delimiter);
}
};
RowSplit.prototype.toCSVRow = function (rowArr, trim, quote, delimiter) {
var row = [];
var inquote = false;
var quoteBuff = '';
for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) {
var e = rowArr[i];
if (!inquote && trim) {
e = util_1.trimLeft(e);
}
var len = e.length;
if (!inquote) {
if (len === 2 && e === this.quote + this.quote) {
row.push("");
continue;
}
else if (this.isQuoteOpen(e)) { //quote open
e = e.substr(1);
if (this.isQuoteClose(e)) { //quote close
e = e.substring(0, e.lastIndexOf(quote));
e = this.escapeQuote(e);
row.push(e);
continue;
}
else if (e.indexOf(quote) !== -1) {
var count = 0;
for (var _i = 0, e_1 = e; _i < e_1.length; _i++) {
var c = e_1[_i];
if (c === quote) {
count++;
}
}
if (count % 2 === 1) {
if (trim) {
e = util_1.trimRight(e);
}
row.push(quote + e);
continue;
}
else {
inquote = true;
quoteBuff += e;
continue;
}
}
else {
inquote = true;
quoteBuff += e;
continue;
}
}
else {
if (trim) {
e = util_1.trimRight(e);
}
row.push(e);
continue;
}
}
else { //previous quote not closed
if (this.isQuoteClose(e)) { //close double quote
inquote = false;
e = e.substr(0, len - 1);
quoteBuff += delimiter + e;
quoteBuff = this.escapeQuote(quoteBuff);
if (trim) {
quoteBuff = util_1.trimRight(quoteBuff);
}
row.push(quoteBuff);
quoteBuff = "";
}
else {
quoteBuff += delimiter + e;
}
}
}
// if (!inquote && param._needFilterRow) {
// row = filterRow(row, param);
// }
return { cells: row, closed: !inquote };
};
RowSplit.prototype.getDelimiter = function (fileline) {
var checker;
if (this.conv.parseParam.delimiter === "auto") {
checker = defaulDelimiters;
}
else if (this.conv.parseParam.delimiter instanceof Array) {
checker = this.conv.parseParam.delimiter;
}
else {
return this.conv.parseParam.delimiter;
}
var count = 0;
var rtn = ",";
checker.forEach(function (delim) {
var delimCount = fileline.split(delim).length;
if (delimCount > count) {
rtn = delim;
count = delimCount;
}
});
return rtn;
};
RowSplit.prototype.isQuoteOpen = function (str) {
var quote = this.quote;
var escape = this.escape;
return str[0] === quote && (str[1] !== quote ||
str[1] === escape && (str[2] === quote || str.length === 2));
};
RowSplit.prototype.isQuoteClose = function (str) {
var quote = this.quote;
var escape = this.escape;
if (this.conv.parseParam.trim) {
str = util_1.trimRight(str);
}
var count = 0;
var idx = str.length - 1;
while (str[idx] === quote || str[idx] === escape) {
idx--;
count++;
}
return count % 2 !== 0;
};
// private twoDoubleQuote(str: string): string {
// var twoQuote = this.quote + this.quote;
// var curIndex = -1;
// while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
// str = str.substring(0, curIndex) + str.substring(++curIndex);
// }
// return str;
// }
RowSplit.prototype.escapeQuote = function (segment) {
var key = "es|" + this.quote + "|" + this.escape;
if (this.cachedRegExp[key] === undefined) {
this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g');
}
var regExp = this.cachedRegExp[key];
// console.log(regExp,segment);
return segment.replace(regExp, this.quote);
};
RowSplit.prototype.parseMultiLines = function (lines) {
var csvLines = [];
var left = "";
while (lines.length) {
var line = left + lines.shift();
var row = this.parse(line);
if (row.cells.length === 0 && this.conv.parseParam.ignoreEmpty) {
continue;
}
if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) {
if (this.conv.parseRuntime.selectedColumns) {
csvLines.push(util_1.filterArray(row.cells, this.conv.parseRuntime.selectedColumns));
}
else {
csvLines.push(row.cells);
}
left = "";
}
else {
left = line + (getEol_1.default(line, this.conv.parseRuntime) || "\n");
}
}
return { rowsCells: csvLines, partial: left };
};
return RowSplit;
}());
exports.RowSplit = RowSplit;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLG9EQUE4QjtBQUM5QiwrQkFBMEQ7QUFFMUQsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRDtJQWFFLGtCQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztRQVQzQixpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFhLFNBQVMsQ0FBQztRQVEvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBVkQsc0JBQVksdUNBQWlCO2FBQTdCO1lBQ0UsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBTUQsd0JBQUssR0FBTCxVQUFNLFFBQWtCO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVB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eyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgeyBGaWxlbGluZSB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgZmlsdGVyQXJyYXksIHRyaW1MZWZ0LCB0cmltUmlnaHQgfSBmcm9tIFwiLi91dGlsXCI7XG5cbmNvbnN0IGRlZmF1bERlbGltaXRlcnMgPSBbXCIsXCIsIFwifFwiLCBcIlxcdFwiLCBcIjtcIiwgXCI6XCJdO1xuZXhwb3J0IGNsYXNzIFJvd1NwbGl0IHtcbiAgcHJpdmF0ZSBxdW90ZTogc3RyaW5nO1xuICBwcml2YXRlIHRyaW06IGJvb2xlYW47XG4gIHByaXZhdGUgZXNjYXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FjaGVkUmVnRXhwOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9ID0ge307XG4gIHByaXZhdGUgZGVsaW1pdGVyRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdERlbGltaXRlcj86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RGVsaW1pdGVyKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9IHRoaXMuY29udi5saXN0ZW5lcnMoXCJkZWxpbWl0ZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0RGVsaW1pdGVyO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udjogQ29udmVydGVyKSB7XG4gICAgdGhpcy5xdW90ZSA9IGNvbnYucGFyc2VQYXJhbS5xdW90ZTtcbiAgICB0aGlzLnRyaW0gPSBjb252LnBhcnNlUGFyYW0udHJpbTtcbiAgICB0aGlzLmVzY2FwZSA9IGNvbnYucGFyc2VQYXJhbS5lc2NhcGU7XG4gIH1cbiAgcGFyc2UoZmlsZWxpbmU6IEZpbGVsaW5lKTogUm93U3BsaXRSZXN1bHQge1xuICAgIGlmIChmaWxlbGluZS5sZW5ndGggPT09IDAgfHwgKHRoaXMuY29udi5wYXJzZVBhcmFtLmlnbm9yZUVtcHR5ICYmIGZpbGVsaW5lLnRyaW0oKS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4geyBjZWxsczogW10sIGNsb3NlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgdHJpbSA9IHRoaXMudHJpbTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICBpZiAodGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgaW5zdGFuY2VvZiBBcnJheSB8fCB0aGlzLmNvbnYucGFyc2VSdW50aW1lLmRlbGltaXRlci50b0xvd2VyQ2FzZSgpID09PSBcImF1dG9cIikge1xuICAgICAgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgPSB0aGlzLmdldERlbGltaXRlcihmaWxlbGluZSk7XG5cbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXREZWxpbWl0ZXIgJiYgIXRoaXMuZGVsaW1pdGVyRW1pdHRlZCkge1xuICAgICAgdGhpcy5jb252LmVtaXQoXCJkZWxpbWl0ZXJcIiwgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIpO1xuICAgICAgdGhpcy5kZWxpbWl0ZXJFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZGVsaW1pdGVyID0gdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXI7XG4gICAgY29uc3Qgcm93QXJyID0gZmlsZWxpbmUuc3BsaXQoZGVsaW1pdGVyKTtcbiAgICBpZiAocXVvdGUgPT09IFwib2ZmXCIpIHtcbiAgICAgIGlmICh0cmltKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcm93QXJyW2ldID0gcm93QXJyW2ldLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2VsbHM6IHJvd0FyciwgY2xvc2VkOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRvQ1NWUm93KHJvd0FyciwgdHJpbSwgcXVvdGUsIGRlbGltaXRlcik7XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSB0b0NTVlJvdyhyb3dBcnI6IHN0cmluZ1tdLCB0cmltOiBib29sZWFuLCBxdW90ZTogc3RyaW5nLCBkZWxpbWl0ZXI6IHN0cmluZyk6IFJvd1NwbGl0UmVzdWx0IHtcbiAgICBjb25zdCByb3c6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGlucXVvdGUgPSBmYWxzZTtcbiAgICBsZXQgcXVvdGVCdWZmID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIHJvd0xlbiA9IHJvd0Fyci5sZW5ndGg7IGkgPCByb3dMZW47IGkrKykge1xuICAgICAgbGV0IGUgPSByb3dBcnJbaV07XG4gICAgICBpZiAoIWlucXVvdGUgJiYgdHJpbSkge1xuICAgICAgICBlID0gdHJpbUxlZnQoZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsZW4gPSBlLmxlbmd0aDtcbiAgICAgIGlmICghaW5xdW90ZSkge1xuICAgICAgICBpZiAobGVuID09PSAyICYmIGUgPT09IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlKSB7XG4gICAgICAgICAgcm93LnB1c2goXCJcIik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1F1b3RlT3BlbihlKSkgeyAvL3F1b3RlIG9wZW5cbiAgICAgICAgICBlID0gZS5zdWJzdHIoMSk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNRdW90ZUNsb3NlKGUpKSB7IC8vcXVvdGUgY2xvc2VcbiAgICAgICAgICAgIGUgPSBlLnN1YnN0cmluZygwLCBlLmxhc3RJbmRleE9mKHF1b3RlKSk7XG4gICAgICAgICAgICBlID0gdGhpcy5lc2NhcGVRdW90ZShlKTtcbiAgICAgICAgICAgIHJvdy5wdXNoKGUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChlLmluZGV4T2YocXVvdGUpICE9PSAtMSkge1xuICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiBlKSB7XG4gICAgICAgICAgICAgIGlmIChjID09PSBxdW90ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb3VudCAlIDIgPT09IDEpIHtcbiAgICAgICAgICAgICAgaWYgKHRyaW0pIHtcbiAgICAgICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvdy5wdXNoKHF1b3RlICsgZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGlucXVvdGUgPSB0cnVlO1xuICAgICAgICAgICAgICBxdW90ZUJ1ZmYgKz0gZTtcbiAgICAgICAgICAgICAgY29udGludWU7ICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbnF1b3RlID0gdHJ1ZTtcbiAgICAgICAgICAgIHF1b3RlQnVmZiArPSBlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByb3cucHVzaChlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy9wcmV2aW91cyBxdW90ZSBub3QgY2xvc2VkXG4gICAgICAgIGlmICh0aGlzLmlzUXVvdGVDbG9zZShlKSkgeyAvL2Nsb3NlIGRvdWJsZSBxdW90ZVxuICAgICAgICAgIGlucXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICBlID0gZS5zdWJzdHIoMCwgbGVuIC0gMSk7XG4gICAgICAgICAgcXVvdGVCdWZmICs9IGRlbGltaXRlciArIGU7XG4gICAgICAgICAgcXVvdGVCdWZmID0gdGhpcy5lc2NhcGVRdW90ZShxdW90ZUJ1ZmYpO1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBxdW90ZUJ1ZmYgPSB0cmltUmlnaHQocXVvdGVCdWZmKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcm93LnB1c2gocXVvdGVCdWZmKTtcbiAgICAgICAgICBxdW90ZUJ1ZmYgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1b3RlQnVmZiArPSBkZWxpbWl0ZXIgKyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgKCFpbnF1b3RlICYmIHBhcmFtLl9uZWVkRmlsdGVyUm93KSB7XG4gICAgLy8gICByb3cgPSBmaWx0ZXJSb3cocm93LCBwYXJhbSk7XG4gICAgLy8gfVxuXG4gICAgcmV0dXJuIHsgY2VsbHM6IHJvdywgY2xvc2VkOiAhaW5xdW90ZSB9O1xuICB9XG4gIHByaXZhdGUgZ2V0RGVsaW1pdGVyKGZpbGVsaW5lOiBGaWxlbGluZSk6IHN0cmluZyB7XG4gICAgbGV0IGNoZWNrZXI7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLmRlbGltaXRlciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIGNoZWNrZXIgPSBkZWZhdWxEZWxpbWl0ZXJzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb252LnBhcnNlUGFyYW0uZGVsaW1pdGVyIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNoZWNrZXIgPSB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfVxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgbGV0IHJ0biA9IFwiLFwiO1xuICAgIGNoZWNrZXIuZm9yRWFjaChmdW5jdGlvbiAoZGVsaW0pIHtcbiAgICAgIGNvbnN0IGRlbGltQ291bnQgPSBmaWxlbGluZS5zcGxpdChkZWxpbSkubGVuZ3RoO1xuICAgICAgaWYgKGRlbGltQ291bnQgPiBjb3VudCkge1xuICAgICAgICBydG4gPSBkZWxpbTtcbiAgICAgICAgY291bnQgPSBkZWxpbUNvdW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBydG47XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlT3BlbihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1b3RlID0gdGhpcy5xdW90ZTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICByZXR1cm4gc3RyWzBdID09PSBxdW90ZSAmJiAoXG4gICAgICBzdHJbMV0gIT09IHF1b3RlIHx8XG4gICAgICBzdHJbMV0gPT09IGVzY2FwZSAmJiAoc3RyWzJdID09PSBxdW90ZSB8fCBzdHIubGVuZ3RoID09PSAyKSk7XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlQ2xvc2Uoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgZXNjYXBlID0gdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLnRyaW0pIHtcbiAgICAgIHN0ciA9IHRyaW1SaWdodChzdHIpO1xuICAgIH1cbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBpZHggPSBzdHIubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoc3RyW2lkeF0gPT09IHF1b3RlIHx8IHN0cltpZHhdID09PSBlc2NhcGUpIHtcbiAgICAgIGlkeC0tO1xuICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50ICUgMiAhPT0gMDtcbiAgfVxuXG4gIC8vIHByaXZhdGUgdHdvRG91YmxlUXVvdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyAgIHZhciB0d29RdW90ZSA9IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlO1xuICAvLyAgIHZhciBjdXJJbmRleCA9IC0xO1xuICAvLyAgIHdoaWxlICgoY3VySW5kZXggPSBzdHIuaW5kZXhPZih0d29RdW90ZSwgY3VySW5kZXgpKSA+IC0xKSB7XG4gIC8vICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGN1ckluZGV4KSArIHN0ci5zdWJzdHJpbmcoKytjdXJJbmRleCk7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiBzdHI7XG4gIC8vIH1cblxuXG4gIHByaXZhdGUgZXNjYXBlUXVvdGUoc2VnbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBcImVzfFwiICsgdGhpcy5xdW90ZSArIFwifFwiICsgdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY2FjaGVkUmVnRXhwW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jYWNoZWRSZWdFeHBba2V5XSA9IG5ldyBSZWdFeHAoJ1xcXFwnICsgdGhpcy5lc2NhcGUgKyAnXFxcXCcgKyB0aGlzLnF1b3RlLCAnZycpO1xuICAgIH1cbiAgICBjb25zdCByZWdFeHAgPSB0aGlzLmNhY2hlZFJlZ0V4cFtrZXldO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlZ0V4cCxzZWdtZW50KTtcbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKHJlZ0V4cCwgdGhpcy5xdW90ZSk7XG4gIH1cbiAgcGFyc2VNdWx0aUxpbmVzKGxpbmVzOiBGaWxlbGluZVtdKTogTXVsdGlwbGVSb3dSZXN1bHQge1xuICAgIGNvbnN0IGNzdkxpbmVzOiBzdHJpbmdbXVtdID0gW107XG4gICAgbGV0IGxlZnQgPSBcIlwiO1xuICAgIHdoaWxlIChsaW5lcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMucGFyc2UobGluZSk7XG4gICAgICBpZiAocm93LmNlbGxzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmNvbnYucGFyc2VQYXJhbS5pZ25vcmVFbXB0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3cuY2xvc2VkIHx8IHRoaXMuY29udi5wYXJzZVBhcmFtLmFsd2F5c1NwbGl0QXRFT0wpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChmaWx0ZXJBcnJheShyb3cuY2VsbHMsIHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChyb3cuY2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gbGluZSArIChnZXRFb2wobGluZSwgdGhpcy5jb252LnBhcnNlUnVudGltZSkgfHwgXCJcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvd3NDZWxsczogY3N2TGluZXMsIHBhcnRpYWw6IGxlZnQgfTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBNdWx0aXBsZVJvd1Jlc3VsdCB7XG4gIHJvd3NDZWxsczogc3RyaW5nW11bXTtcbiAgcGFydGlhbDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dTcGxpdFJlc3VsdCB7XG4gIC8qKlxuICAgKiBjc3Ygcm93IGFycmF5LiBbXCJhXCIsXCJiXCIsXCJjXCJdXG4gICAqL1xuICBjZWxsczogc3RyaW5nW10sXG4gIC8qKlxuICAgKiBpZiB0aGUgcGFzc2VkIGZpbGVsaW5lIGlzIGEgY29tcGxldGUgcm93XG4gICAqL1xuICBjbG9zZWQ6IGJvb2xlYW5cbn1cblxuIl19
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var bluebird_1 = __importDefault(require("bluebird"));
var os_1 = require("os");
var Result = /** @class */ (function () {
function Result(converter) {
this.converter = converter;
this.finalResult = [];
}
Object.defineProperty(Result.prototype, "needEmitLine", {
get: function () {
return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Result.prototype, "needPushDownstream", {
get: function () {
if (this._needPushDownstream === undefined) {
this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0;
}
return this._needPushDownstream;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Result.prototype, "needEmitAll", {
get: function () {
return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll;
// return !!this.converter.parseRuntime.then;
},
enumerable: true,
configurable: true
});
Result.prototype.processResult = function (resultLines) {
var _this = this;
var startPos = this.converter.parseRuntime.parsedLineNumber;
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
if (startPos === 0) {
pushDownstream(this.converter, "[" + os_1.EOL);
}
}
// let prom: P<any>;
return new bluebird_1.default(function (resolve, reject) {
if (_this.needEmitLine) {
processLineByLine(resultLines, _this.converter, 0, _this.needPushDownstream, function (err) {
if (err) {
reject(err);
}
else {
_this.appendFinalResult(resultLines);
resolve();
}
});
// resolve();
}
else {
_this.appendFinalResult(resultLines);
resolve();
}
});
};
Result.prototype.appendFinalResult = function (lines) {
if (this.needEmitAll) {
this.finalResult = this.finalResult.concat(lines);
}
this.converter.parseRuntime.parsedLineNumber += lines.length;
};
Result.prototype.processError = function (err) {
if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) {
this.converter.parseRuntime.subscribe.onError(err);
}
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) {
this.converter.parseRuntime.then.onrejected(err);
}
};
Result.prototype.endProcess = function () {
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
if (this.needEmitAll) {
this.converter.parseRuntime.then.onfulfilled(this.finalResult);
}
else {
this.converter.parseRuntime.then.onfulfilled([]);
}
}
if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
this.converter.parseRuntime.subscribe.onCompleted();
}
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
pushDownstream(this.converter, "]" + os_1.EOL);
}
};
return Result;
}());
exports.Result = Result;
function processLineByLine(lines, conv, offset, needPushDownstream, cb) {
if (offset >= lines.length) {
cb();
}
else {
if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) {
var hook_1 = conv.parseRuntime.subscribe.onNext;
var nextLine_1 = lines[offset];
var res = hook_1(nextLine_1, conv.parseRuntime.parsedLineNumber + offset);
offset++;
// if (isAsync === undefined) {
if (res && res.then) {
res.then(function () {
processRecursive(lines, hook_1, conv, offset, needPushDownstream, cb, nextLine_1);
}, cb);
}
else {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
if (needPushDownstream) {
pushDownstream(conv, nextLine_1);
}
while (offset < lines.length) {
var line = lines[offset];
hook_1(line, conv.parseRuntime.parsedLineNumber + offset);
offset++;
if (needPushDownstream) {
pushDownstream(conv, line);
}
}
cb();
}
// } else if (isAsync === true) {
// (res as PromiseLike<void>).then(function () {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true);
// }, cb);
// } else if (isAsync === false) {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
// }
}
else {
if (needPushDownstream) {
while (offset < lines.length) {
var line = lines[offset++];
pushDownstream(conv, line);
}
}
cb();
}
}
}
function processRecursive(lines, hook, conv, offset, needPushDownstream, cb, res) {
if (needPushDownstream) {
pushDownstream(conv, res);
}
processLineByLine(lines, conv, offset, needPushDownstream, cb);
}
function pushDownstream(conv, res) {
if (typeof res === "object" && !conv.options.objectMode) {
var data = JSON.stringify(res);
conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + os_1.EOL : os_1.EOL), "utf8");
}
else {
conv.push(res);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsc0RBQXlCO0FBRXpCLHlCQUF5QjtBQUN6QjtJQWdCRSxnQkFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQURoQyxnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQUNZLENBQUM7SUFmN0Msc0JBQVksZ0NBQVk7YUFBeEI7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFBO1FBQzdILENBQUM7OztPQUFBO0lBRUQsc0JBQVksc0NBQWtCO2FBQTlCO1lBQ0UsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQzNIO1lBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFDRCxzQkFBWSwrQkFBVzthQUF2QjtZQUNFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDbkYsNkNBQTZDO1FBQy9DLENBQUM7OztPQUFBO0lB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Q0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFDRCx3QkFBd0IsSUFBZSxFQUFFLEdBQXNCO0lBQzdELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDdkQsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsUUFBRyxDQUFDLENBQUMsQ0FBQyxRQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1RjtTQUFNO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNoQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmltcG9ydCB7IFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSBcIm9zXCI7XG5leHBvcnQgY2xhc3MgUmVzdWx0IHtcbiAgcHJpdmF0ZSBnZXQgbmVlZEVtaXRMaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgJiYgISF0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uTmV4dCB8fCB0aGlzLm5lZWRQdXNoRG93bnN0cmVhbVxuICB9XG4gIHByaXZhdGUgX25lZWRQdXNoRG93bnN0cmVhbT86IGJvb2xlYW47XG4gIHByaXZhdGUgZ2V0IG5lZWRQdXNoRG93bnN0cmVhbSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX25lZWRQdXNoRG93bnN0cmVhbSA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImRhdGFcIikubGVuZ3RoID4gMCB8fCB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJyZWFkYWJsZVwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtO1xuICB9XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0QWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS50aGVuICYmIHRoaXMuY29udmVydGVyLnBhcnNlUGFyYW0ubmVlZEVtaXRBbGw7XG4gICAgLy8gcmV0dXJuICEhdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW47XG4gIH1cbiAgcHJpdmF0ZSBmaW5hbFJlc3VsdDogYW55W10gPSBbXTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb252ZXJ0ZXI6IENvbnZlcnRlcikgeyB9XG4gIHByb2Nlc3NSZXN1bHQocmVzdWx0TGluZXM6IFByb2Nlc3NMaW5lUmVzdWx0W10pOiBQPGFueT4ge1xuICAgIGNvbnN0IHN0YXJ0UG9zID0gdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXI7XG4gICAgaWYgKHRoaXMubmVlZFB1c2hEb3duc3RyZWFtICYmIHRoaXMuY29udmVydGVyLnBhcnNlUGFyYW0uZG93bnN0cmVhbUZvcm1hdCA9PT0gXCJhcnJheVwiKSB7XG4gICAgICBpZiAoc3RhcnRQb3MgPT09IDApIHtcbiAgICAgICAgcHVzaERvd25zdHJlYW0odGhpcy5jb252ZXJ0ZXIsIFwiW1wiICsgRU9MKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gbGV0IHByb206IFA8YW55PjtcbiAgICByZXR1cm4gbmV3IFAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmVlZEVtaXRMaW5lKSB7XG4gICAgICAgIHByb2Nlc3NMaW5lQnlMaW5lKFxuICAgICAgICAgIHJlc3VsdExpbmVzLFxuICAgICAgICAgIHRoaXMuY29udmVydGVyLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgdGhpcy5uZWVkUHVzaERvd25zdHJlYW0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuYXBwZW5kRmluYWxSZXN1bHQocmVzdWx0TGluZXMpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICAvLyByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFwcGVuZEZpbmFsUmVzdWx0KHJlc3VsdExpbmVzKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kRmluYWxSZXN1bHQobGluZXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMubmVlZEVtaXRBbGwpIHtcbiAgICAgIHRoaXMuZmluYWxSZXN1bHQgPSB0aGlzLmZpbmFsUmVzdWx0LmNvbmNhdChsaW5lcyk7XG4gICAgfVxuICAgIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5wYXJzZWRMaW5lTnVtYmVyICs9IGxpbmVzLmxlbmd0aDtcbiAgfVxuICBwcm9jZXNzRXJyb3IoZXJyOiBDU1ZFcnJvcikge1xuICAgIGlmICh0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlICYmIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25FcnJvcikge1xuICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkVycm9yKGVycik7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbiAmJiB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbnJlamVjdGVkKSB7XG4gICAgICB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbnJlamVjdGVkKGVycik7XG4gICAgfVxuICB9XG4gIGVuZFByb2Nlc3MoKSB7XG4gICAgXG4gICAgICBpZiAodGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQpIHtcbiAgICAgICAgaWYgKHRoaXMubmVlZEVtaXRBbGwpIHtcbiAgICAgICAgICB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbmZ1bGZpbGxlZCh0aGlzLmZpbmFsUmVzdWx0KTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQoW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgaWYgKHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkNvbXBsZXRlZCkge1xuICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkNvbXBsZXRlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWVkUHVzaERvd25zdHJlYW0gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VQYXJhbS5kb3duc3RyZWFtRm9ybWF0ID09PSBcImFycmF5XCIpIHtcbiAgICAgIHB1c2hEb3duc3RyZWFtKHRoaXMuY29udmVydGVyLCBcIl1cIiArIEVPTCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NMaW5lQnlMaW5lKFxuICBsaW5lczogUHJvY2Vzc0xpbmVSZXN1bHRbXSxcblxuICBjb252OiBDb252ZXJ0ZXIsXG4gIG9mZnNldDogbnVtYmVyLFxuICBuZWVkUHVzaERvd25zdHJlYW06IGJvb2xlYW4sXG4gIGNiOiAoZXJyPykgPT4gdm9pZCxcbikge1xuICBpZiAob2Zmc2V0ID49IGxpbmVzLmxlbmd0aCkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGNvbnYucGFyc2VSdW50aW1lLnN1YnNjcmliZSAmJiBjb252LnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25OZXh0KSB7XG4gICAgICBjb25zdCBob29rID0gY29udi5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uTmV4dDtcbiAgICAgIGNvbnN0IG5leHRMaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgIGNvbnN0IHJlcyA9IGhvb2sobmV4dExpbmUsIGNvbnYucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXIgKyBvZmZzZXQpO1xuICAgICAgb2Zmc2V0Kys7XG4gICAgICAvLyBpZiAoaXNBc3luYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwcm9jZXNzUmVjdXJzaXZlKGxpbmVzLCBob29rLCBjb252LCBvZmZzZXQsIG5lZWRQdXNoRG93bnN0cmVhbSwgY2IsIG5leHRMaW5lKTtcbiAgICAgICAgfSwgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcHJvY2Vzc1JlY3Vyc2l2ZShsaW5lcywgaG9vaywgY29udiwgb2Zmc2V0LCBuZWVkUHVzaERvd25zdHJlYW0sIGNiLCBuZXh0TGluZSwgZmFsc2UpO1xuICAgICAgICBpZiAobmVlZFB1c2hEb3duc3RyZWFtKSB7XG4gICAgICAgICAgcHVzaERvd25zdHJlYW0oY29udiwgbmV4dExpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgICAgICBob29rKGxpbmUsIGNvbnYucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXIgKyBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgIGlmIChuZWVkUHVzaERvd25zdHJlYW0pIHtcbiAgICAgICAgICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsIGxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgICAgLy8gfSBlbHNlIGlmIChpc0FzeW5jID09PSB0cnVlKSB7XG4gICAgICAvLyAgIChyZXMgYXMgUHJvbWlzZUxpa2U8dm9pZD4pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gICAgIHByb2Nlc3NSZWN1cnNpdmUobGluZXMsIGhvb2ssIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYiwgbmV4dExpbmUsIHRydWUpO1xuICAgICAgLy8gICB9LCBjYik7XG4gICAgICAvLyB9IGVsc2UgaWYgKGlzQXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAvLyAgIHByb2Nlc3NSZWN1cnNpdmUobGluZXMsIGhvb2ssIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYiwgbmV4dExpbmUsIGZhbHNlKTtcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZWRQdXNoRG93bnN0cmVhbSkge1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW29mZnNldCsrXTtcbiAgICAgICAgICBwdXNoRG93bnN0cmVhbShjb252LCBsaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBjYigpO1xuICAgIH1cblxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWN1cnNpdmUoXG4gIGxpbmVzOiBQcm9jZXNzTGluZVJlc3VsdFtdLFxuICBob29rOiAoZGF0YTogYW55LCBsaW5lTnVtYmVyOiBudW1iZXIpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPixcbiAgY29udjogQ29udmVydGVyLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbmVlZFB1c2hEb3duc3RyZWFtOiBib29sZWFuLFxuICBjYjogKGVycj8pID0+IHZvaWQsXG4gIHJlczogUHJvY2Vzc0xpbmVSZXN1bHQsXG4pIHtcbiAgaWYgKG5lZWRQdXNoRG93bnN0cmVhbSkge1xuICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsIHJlcyk7XG4gIH1cbiAgcHJvY2Vzc0xpbmVCeUxpbmUobGluZXMsIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYik7XG59XG5mdW5jdGlvbiBwdXNoRG93bnN0cmVhbShjb252OiBDb252ZXJ0ZXIsIHJlczogUHJvY2Vzc0xpbmVSZXN1bHQpIHtcbiAgaWYgKHR5cGVvZiByZXMgPT09IFwib2JqZWN0XCIgJiYgIWNvbnYub3B0aW9ucy5vYmplY3RNb2RlKSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHJlcyk7XG4gICAgY29udi5wdXNoKGRhdGEgKyAoY29udi5wYXJzZVBhcmFtLmRvd25zdHJlYW1Gb3JtYXQgPT09IFwiYXJyYXlcIiA/IFwiLFwiICsgRU9MIDogRU9MKSwgXCJ1dGY4XCIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnYucHVzaChyZXMpO1xuICB9XG59Il19
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var strip_bom_1 = __importDefault(require("strip-bom"));
/**
* For each data chunk coming to parser:
* 1. append the data to the buffer that is left from last chunk
* 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
* 3. stripBom
*/
function prepareData(chunk, runtime) {
var workChunk = concatLeftChunk(chunk, runtime);
runtime.csvLineBuffer = undefined;
var cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8");
if (runtime.started === false) {
return strip_bom_1.default(cleanCSVString);
}
else {
return cleanCSVString;
}
}
exports.prepareData = prepareData;
/**
* append data to buffer that is left form last chunk
*/
function concatLeftChunk(chunk, runtime) {
if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) {
return Buffer.concat([runtime.csvLineBuffer, chunk]);
}
else {
return chunk;
}
}
/**
* check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
*/
function cleanUtf8Split(chunk, runtime) {
var idx = chunk.length - 1;
/**
* From Keyang:
* The code below is to check if a single utf8 char (which could be multiple bytes) being split.
* If the char being split, the buffer from two chunk needs to be concat
* check how utf8 being encoded to understand the code below.
* If anyone has any better way to do this, please let me know.
*/
if ((chunk[idx] & 1 << 7) != 0) {
while ((chunk[idx] & 3 << 6) === 128) {
idx--;
}
idx--;
}
if (idx != chunk.length - 1) {
runtime.csvLineBuffer = chunk.slice(idx + 1);
return chunk.slice(0, idx + 1);
// var _cb=cb;
// var self=this;
// cb=function(){
// if (self._csvLineBuffer){
// self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
// }else{
// self._csvLineBuffer=left;
// }
// _cb();
// }
}
else {
return chunk;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9kYXRhQ2xlYW4udHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZGF0YUNsZWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0RBQWlDO0FBQ2pDOzs7OztHQUtHO0FBQ0gscUJBQTRCLEtBQWEsRUFBRSxPQUFxQjtJQUM5RCxJQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLElBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7UUFDN0IsT0FBTyxtQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO1NBQU07UUFDTCxPQUFPLGNBQWMsQ0FBQztLQUN2QjtBQUNILENBQUM7QUFURCxrQ0FTQztBQUNEOztHQUVHO0FBQ0gseUJBQXlCLEtBQWEsRUFBRSxPQUFxQjtJQUMzRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN0RDtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFDRDs7R0FFRztBQUNILHdCQUF3QixLQUFhLEVBQUUsT0FBcUI7SUFDMUQsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0I7Ozs7OztPQU1HO0lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNwQyxHQUFHLEVBQUUsQ0FBQztTQUNQO1FBQ0QsR0FBRyxFQUFFLENBQUM7S0FDUDtJQUNELElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDOUIsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsOEJBQThCO1FBQzlCLDJGQUEyRjtRQUMzRixXQUFXO1FBQ1gsZ0NBQWdDO1FBQ2hDLE1BQU07UUFDTixXQUFXO1FBQ1gsSUFBSTtLQUNMO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IHN0cmlwQm9tIGZyb20gXCJzdHJpcC1ib21cIjtcbi8qKlxuICogRm9yIGVhY2ggZGF0YSBjaHVuayBjb21pbmcgdG8gcGFyc2VyOlxuICogMS4gYXBwZW5kIHRoZSBkYXRhIHRvIHRoZSBidWZmZXIgdGhhdCBpcyBsZWZ0IGZyb20gbGFzdCBjaHVua1xuICogMi4gY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICogMy4gc3RyaXBCb20gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRGF0YShjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBzdHJpbmcge1xuICBjb25zdCB3b3JrQ2h1bmsgPSBjb25jYXRMZWZ0Q2h1bmsoY2h1bmssIHJ1bnRpbWUpO1xuICBydW50aW1lLmNzdkxpbmVCdWZmZXIgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IGNsZWFuQ1NWU3RyaW5nID0gY2xlYW5VdGY4U3BsaXQod29ya0NodW5rLCBydW50aW1lKS50b1N0cmluZyhcInV0ZjhcIik7XG4gIGlmIChydW50aW1lLnN0YXJ0ZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHN0cmlwQm9tKGNsZWFuQ1NWU3RyaW5nKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2xlYW5DU1ZTdHJpbmc7XG4gIH1cbn1cbi8qKlxuICogIGFwcGVuZCBkYXRhIHRvIGJ1ZmZlciB0aGF0IGlzIGxlZnQgZm9ybSBsYXN0IGNodW5rXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdExlZnRDaHVuayhjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBpZiAocnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHJ1bnRpbWUuY3N2TGluZUJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3J1bnRpbWUuY3N2TGluZUJ1ZmZlciwgY2h1bmtdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2h1bms7XG4gIH1cbn1cbi8qKlxuICogY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbGVhblV0ZjhTcGxpdChjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBsZXQgaWR4ID0gY2h1bmsubGVuZ3RoIC0gMTtcbiAgLyoqXG4gICAqIEZyb20gS2V5YW5nOlxuICAgKiBUaGUgY29kZSBiZWxvdyBpcyB0byBjaGVjayBpZiBhIHNpbmdsZSB1dGY4IGNoYXIgKHdoaWNoIGNvdWxkIGJlIG11bHRpcGxlIGJ5dGVzKSBiZWluZyBzcGxpdC5cbiAgICogSWYgdGhlIGNoYXIgYmVpbmcgc3BsaXQsIHRoZSBidWZmZXIgZnJvbSB0d28gY2h1bmsgbmVlZHMgdG8gYmUgY29uY2F0XG4gICAqIGNoZWNrIGhvdyB1dGY4IGJlaW5nIGVuY29kZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBiZWxvdy4gXG4gICAqIElmIGFueW9uZSBoYXMgYW55IGJldHRlciB3YXkgdG8gZG8gdGhpcywgcGxlYXNlIGxldCBtZSBrbm93LlxuICAgKi9cbiAgaWYgKChjaHVua1tpZHhdICYgMSA8PCA3KSAhPSAwKSB7XG4gICAgd2hpbGUgKChjaHVua1tpZHhdICYgMyA8PCA2KSA9PT0gMTI4KSB7XG4gICAgICBpZHgtLTtcbiAgICB9XG4gICAgaWR4LS07XG4gIH1cbiAgaWYgKGlkeCAhPSBjaHVuay5sZW5ndGggLSAxKSB7XG4gICAgcnVudGltZS5jc3ZMaW5lQnVmZmVyID0gY2h1bmsuc2xpY2UoaWR4ICsgMSk7XG4gICAgcmV0dXJuIGNodW5rLnNsaWNlKDAsIGlkeCArIDEpXG4gICAgLy8gdmFyIF9jYj1jYjtcbiAgICAvLyB2YXIgc2VsZj10aGlzO1xuICAgIC8vIGNiPWZ1bmN0aW9uKCl7XG4gICAgLy8gICBpZiAoc2VsZi5fY3N2TGluZUJ1ZmZlcil7XG4gICAgLy8gICAgIHNlbGYuX2NzdkxpbmVCdWZmZXI9QnVmZmVyLmNvbmNhdChbYnVmRnJvbVN0cmluZyhzZWxmLl9jc3ZMaW5lQnVmZmVyLFwidXRmOFwiKSxsZWZ0XSk7XG4gICAgLy8gICB9ZWxzZXtcbiAgICAvLyAgICAgc2VsZi5fY3N2TGluZUJ1ZmZlcj1sZWZ0O1xuICAgIC8vICAgfVxuICAgIC8vICAgX2NiKCk7XG4gICAgLy8gfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSJdfQ==
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Converter_1 = require("../src/Converter");
var src_1 = __importDefault(require("../src"));
var assert = require("assert");
var fs = require("fs");
var sandbox = require("sinon").sandbox.create();
var file = __dirname + "/data/testData";
var trailCommaData = __dirname + "/data/trailingComma";
describe("CSV Converter", function () {
afterEach(function () {
sandbox.restore();
});
it("should create new instance of csv", function () {
var obj = new Converter_1.Converter();
assert(obj);
});
it("should read from a stream", function (done) {
var obj = new Converter_1.Converter();
var stream = fs.createReadStream(file);
obj.then(function (obj) {
assert.equal(obj.length, 2);
done();
});
stream.pipe(obj);
});
it("should call onNext once a row is parsed.", function (done) {
var obj = new Converter_1.Converter();
var stream = fs.createReadStream(file);
var called = false;
obj.subscribe(function (resultRow) {
assert(resultRow);
called = true;
});
obj.on("done", function () {
assert(called);
done();
});
stream.pipe(obj);
});
it("should emit end_parsed message once it is finished.", function (done) {
var obj = new Converter_1.Converter();
obj.then(function (result) {
assert(result);
assert(result.length === 2);
assert(result[0].date);
assert(result[0].employee);
assert(result[0].employee.name);
assert(result[0].employee.age);
assert(result[0].employee.number);
assert(result[0].employee.key.length === 2);
assert(result[0].address.length === 2);
done();
});
fs.createReadStream(file).pipe(obj);
});
it("should handle traling comma gracefully", function (done) {
var stream = fs.createReadStream(trailCommaData);
var obj = new Converter_1.Converter();
obj.then(function (result) {
assert(result);
assert(result.length > 0);
done();
});
stream.pipe(obj);
});
it("should handle comma in column which is surrounded by qoutes", function (done) {
var testData = __dirname + "/data/dataWithComma";
var rs = fs.createReadStream(testData);
var obj = new Converter_1.Converter({
"quote": "#"
});
obj.then(function (result) {
assert(result[0].col1 === "\"Mini. Sectt");
assert.equal(result[3].col2, "125001,fenvkdsf");
// console.log(result);
done();
});
rs.pipe(obj);
});
it("should be able to convert a csv to column array data", function (done) {
var columArrData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(columArrData);
var result = {};
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function () {
assert(result.TIMESTAMP.length === 5);
done();
});
//record_parsed will be emitted each time a row has been parsed.
csvConverter.subscribe(function (resultRow, rowIndex) {
for (var key in resultRow) {
if (resultRow.hasOwnProperty(key)) {
if (!result[key] || !(result[key] instanceof Array)) {
result[key] = [];
}
result[key][rowIndex] = resultRow[key];
}
}
});
rs.pipe(csvConverter);
});
it("should be able to convert csv string directly", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert.equal(jsonObj.length, 2);
});
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
});
it("should be able to convert csv string with error", function (done) {
var testData = __dirname + "/data/dataWithUnclosedQuotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(undefined, function (err) {
assert(err);
assert.equal(err.err, "unclosed_quote");
done();
});
});
it("should be able to convert csv string without callback provided", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
csvConverter.fromString(data);
});
it("should be able to handle columns with double quotes", function (done) {
var testData = __dirname + "/data/dataWithQoutes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
done();
});
});
it("should be able to handle columns with two double quotes", function (done) {
var testData = __dirname + "/data/twodoublequotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert.equal(jsonObj[0].title, "\"");
assert.equal(jsonObj[0].data, "xyabcde");
assert.equal(jsonObj[0].uuid, "fejal\"eifa");
assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
done();
});
});
it("should handle empty csv file", function (done) {
var testData = __dirname + "/data/emptyFile";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter();
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 0);
done();
});
rs.pipe(csvConverter);
});
it("should parse large csv file", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter();
var count = 0;
csvConverter.subscribe(function () {
//console.log(arguments);
count++;
});
csvConverter.then(function () {
assert(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should parse data and covert to specific types", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: true,
colParser: {
"column6": "string",
"column7": "string"
}
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "number");
assert(typeof d.column2 === "string");
assert.equal(d["colume4"], "someinvaliddate");
assert(d.column5.hello === "world");
assert(d.column6 === '{"hello":"world"}');
assert(d.column7 === "1234");
assert(d.column8 === "abcd");
assert(d.column9 === true);
assert(d.column10[0] === 23);
assert(d.column10[1] === 31);
assert(d.column11[0].hello === "world");
assert(d["name#!"] === false);
});
csvConverter.on("done", function () {
done();
});
rs.pipe(csvConverter);
});
it("should turn off field type check", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: false
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "string");
assert(typeof d.column2 === "string");
assert(d["column3"] === "2012-01-01");
assert(d["colume4"] === "someinvaliddate");
assert(d.column5 === '{"hello":"world"}');
assert.equal(d["column6"], '{"hello":"world"}');
assert(d["column7"] === "1234");
assert(d["column8"] === "abcd");
assert(d.column9 === "true");
assert(d.column10[0] === "23");
assert(d.column10[1] === "31");
assert(d["name#!"] === 'false');
});
csvConverter.then(function () {
done();
});
rs.pipe(csvConverter);
});
it("should emit data event correctly", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var csvConverter = new Converter_1.Converter({});
var count = 0;
csvConverter.on("data", function (d) {
count++;
});
csvConverter.on("end", function () {
assert.equal(count, 5290);
done();
});
var rs = fs.createReadStream(testData);
rs.pipe(csvConverter);
});
it("should process column with linebreaks", function (done) {
var testData = __dirname + "/data/lineBreak";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: true
});
csvConverter.subscribe(function (d) {
assert(d.Period === 13);
assert(d["Apparent age"] === "Unknown");
done();
});
rs.pipe(csvConverter);
});
it("be able to ignore empty columns", function (done) {
var testData = __dirname + "/data/dataIgnoreEmpty";
var rs = fs.createReadStream(testData);
var st = rs.pipe(src_1.default({ ignoreEmpty: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 3);
assert(j.col2.length === 2);
assert(j.col2[1] === "d3");
assert(j.col4.col3 === undefined);
assert(j.col4.col5 === "world");
assert(res[1].col1 === "d2");
assert(res[2].col1 === "d4");
done();
});
});
it("should allow no header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({ noheader: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.field1 === "CC102-PDMI-001");
assert(j.field2 === "eClass_5.1.3");
done();
});
});
it("should allow customised header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
noheader: true,
headers: ["a", "b"]
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.a === "CC102-PDMI-001");
assert(j.b === "eClass_5.1.3");
assert(j.field3 === "10/3/2014");
done();
});
});
it("should allow customised header to override existing header", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
headers: []
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.field1 === "Food Factory");
assert(j.field2 === "Oscar");
done();
});
});
it("should handle when there is an empty string", function (done) {
var testData = __dirname + "/data/dataWithEmptyString";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
noheader: true,
headers: ["a", "b", "c"],
checkType: true
}));
st.then(function (res) {
var j = res[0];
// assert(res.length===2);
assert(j.a === "green");
assert(j.b === 40);
assert.equal(j.c, "");
done();
});
});
it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 3 });
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 9 });
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should emit eol event when line ending is detected as CRLF", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\r\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
});
});
it("should emit eol event when line ending is detected as LF", function (done) {
var testData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
});
});
it("should remove the Byte Order Mark (BOM) from input", function (done) {
var testData = __dirname + "/data/dataNoTrimBOM";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
done();
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUEyQztBQUMzQywrQ0FBeUI7QUFDekIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hELElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxJQUFJLGNBQWMsR0FBRyxTQUFTLEdBQUcscUJBQXFCLENBQUM7QUFDdkQsUUFBUSxDQUFDLGVBQWUsRUFBRTtJQUN4QixTQUFTLENBQUM7UUFDUixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUU7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxJQUFJO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxD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USxHQUFHLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLENBQUM7WUFDN0IsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUMsQ0FBQztRQUNKLEVBQUUsQ0FBQyxJQUFJLENBQUUsVUFBVSxHQUFHO1lBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVmLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb252ZXJ0ZXJ9IGZyb20gXCIuLi9zcmMvQ29udmVydGVyXCI7XG5pbXBvcnQgY3N2IGZyb20gXCIuLi9zcmNcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIHNhbmRib3ggPSByZXF1aXJlKFwic2lub25cIikuc2FuZGJveC5jcmVhdGUoKTtcbnZhciBmaWxlID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xudmFyIHRyYWlsQ29tbWFEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90cmFpbGluZ0NvbW1hXCI7XG5kZXNjcmliZShcIkNTViBDb252ZXJ0ZXJcIiwgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIGNzdlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBhc3NlcnQob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcmVhZCBmcm9tIGEgc3RyZWFtXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgc3RyZWFtLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY2FsbCBvbk5leHQgb25jZSBhIHJvdyBpcyBwYXJzZWQuXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4gICAgICBhc3NlcnQocmVzdWx0Um93KTtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQoY2FsbGVkKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmRhdGUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZSk7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm5hbWUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5hZ2UpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5udW1iZXIpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5rZXkubGVuZ3RoID09PSAyKTtcbiAgICAgIGFzc2VydChyZXN1bHRbMF0uYWRkcmVzcy5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZSkucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBoYW5kbGUgdHJhbGluZyBjb21tYSBncmFjZWZ1bGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odHJhaWxDb21tYURhdGEpO1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA+IDApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5waXBlKG9iaik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBjb21tYSBpbiBjb2x1bW4gd2hpY2ggaXMgc3Vycm91bmRlZCBieSBxb3V0ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoQ29tbWFcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgb2JqID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBcInF1b3RlXCI6IFwiI1wiXG4gICAgfSk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5jb2wxID09PSBcIlxcXCJNaW5pLiBTZWN0dFwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbM10uY29sMiwgXCIxMjUwMDEsZmVudmtkc2ZcIik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGEgY3N2IHRvIGNvbHVtbiBhcnJheSBkYXRhXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNvbHVtQXJyRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvY29sdW1uQXJyYXlcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGNvbHVtQXJyRGF0YSk7XG4gICAgdmFyIHJlc3VsdDphbnkgPSB7fTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdC5USU1FU1RBTVAubGVuZ3RoID09PSA1KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcblxuICAgIC8vcmVjb3JkX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgZWFjaCB0aW1lIGEgcm93IGhhcyBiZWVuIHBhcnNlZC5cbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChyZXN1bHRSb3csIHJvd0luZGV4KSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcmVzdWx0Um93KSB7XG4gICAgICAgIGlmIChyZXN1bHRSb3cuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGlmICghcmVzdWx0W2tleV0gfHwgIShyZXN1bHRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0W2tleV1bcm93SW5kZXhdID0gcmVzdWx0Um93W2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gY29udmVydCBjc3Ygc3RyaW5nIGRpcmVjdGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgYXNzZXJ0KGVycik7XG4gICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbiAgICAgIGFzc2VydChqc29uT2JqLmxlbmd0aCA9PT0gMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCBkb3VibGUgcXVvdGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSkudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmpbMF0uVElNRVNUQU1QID09PSAnMTM5NTQyNjRcIjIyJywgSlNPTi5zdHJpbmdpZnkoanNvbk9ialswXS5USU1FU1RBTVApKTtcblxuICAgICAgYXNzZXJ0KGpzb25PYmpbMV0uVElNRVNUQU1QID09PSAnYWJjLCBkZWYsIGNjYycsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMV0uVElNRVNUQU1QKSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCB0d28gZG91YmxlIHF1b3Rlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHdvZG91YmxlcXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGxhcmdlIGNzdiBmaWxlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9sYXJnZS1jc3Ytc2FtcGxlLmNzdlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vY29uc29sZS5sb2coYXJndW1lbnRzKTtcbiAgICAgIGNvdW50Kys7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KGNvdW50ID09PSA1MjkwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGRhdGEgYW5kIGNvdmVydCB0byBzcGVjaWZpYyB0eXBlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgY2hlY2tUeXBlOiB0cnVlLFxuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiY29sdW1uNlwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcImNvbHVtbjdcIjogXCJzdHJpbmdcIlxuICAgICAgfVxuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcIm51bWJlclwiKTtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbiAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1lNFwiXSwgXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41LmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNiA9PT0gJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNyA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOCA9PT0gXCJhYmNkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOSA9PT0gdHJ1ZSk7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gMjMpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IDMxKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjExWzBdLmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09IGZhbHNlKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHR1cm4gb2ZmIGZpZWxkIHR5cGUgY2hlY2tcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoVHlwZVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrVHlwZTogZmFsc2VcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMSA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMiA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQoZFtcImNvbHVtbjNcIl0gPT09IFwiMjAxMi0wMS0wMVwiKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1lNFwiXSA9PT0gXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoZFtcImNvbHVtbjZcIl0sICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1uN1wiXSA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGRbXCJjb2x1bW44XCJdID09PSBcImFiY2RcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSBcInRydWVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gXCIyM1wiKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjEwWzFdID09PSBcIjMxXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09ICdmYWxzZScpO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZGF0YSBldmVudCBjb3JyZWN0bHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG5cbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgfSk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChkKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5vbihcImVuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcHJvY2VzcyBjb2x1bW4gd2l0aCBsaW5lYnJlYWtzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9saW5lQnJlYWtcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja1R5cGU6IHRydWVcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQoZC5QZXJpb2QgPT09IDEzKTtcbiAgICAgIGFzc2VydChkW1wiQXBwYXJlbnQgYWdlXCJdID09PSBcIlVua25vd25cIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuICB9KTtcblxuICBpdChcImJlIGFibGUgdG8gaWdub3JlIGVtcHR5IGNvbHVtbnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFJZ25vcmVFbXB0eVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUoY3N2KHsgaWdub3JlRW1wdHk6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMyk7XG4gICAgICBhc3NlcnQoai5jb2wyLmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQoai5jb2wyWzFdID09PSBcImQzXCIpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2wzID09PSB1bmRlZmluZWQpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2w1ID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KHJlc1sxXS5jb2wxID09PSBcImQyXCIpO1xuICAgICAgYXNzZXJ0KHJlc1syXS5jb2wxID09PSBcImQ0XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBubyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL25vaGVhZGVyY3N2XCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHsgbm9oZWFkZXI6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4gICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiQ0MxMDItUERNSS0wMDFcIik7XG4gICAgICBhc3NlcnQoai5maWVsZDIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbm9oZWFkZXJjc3ZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWUsXG4gICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDUpO1xuICAgICAgYXNzZXJ0KGouYSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbiAgICAgIGFzc2VydChqLmIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQzID09PSBcIjEwLzMvMjAxNFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgY3VzdG9taXNlZCBoZWFkZXIgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICBoZWFkZXJzOiBbXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQxID09PSBcIkZvb2QgRmFjdG9yeVwiKTtcbiAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJPc2NhclwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHdoZW4gdGhlcmUgaXMgYW4gZW1wdHkgc3RyaW5nXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aEVtcHR5U3RyaW5nXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgICAgaGVhZGVyczogW1wiYVwiLCBcImJcIiwgXCJjXCJdLFxuICAgICAgY2hlY2tUeXBlOiB0cnVlXG4gICAgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIC8vIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5hID09PSBcImdyZWVuXCIpO1xuICAgICAgYXNzZXJ0KGouYiA9PT0gNDApO1xuICAgICAgYXNzZXJ0LmVxdWFsKGouYywgXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgaXMgc21hbGxlciB0aGFuIGhlYWRlciByb3cgbGVuZ3RoXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogMyB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgZW5kcyBpbiBtaWRkbGUgb2YgQ1JMRiBsaW5lIGJyZWFrXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogOSB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZW9sIGV2ZW50IHdoZW4gbGluZSBlbmRpbmcgaXMgZGV0ZWN0ZWQgYXMgQ1JMRlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YU5vVHJpbUNSTEZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcigpKTtcbiAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbiAgICB9KTtcbiAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4gICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KVxuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKCkpO1xuICAgIHZhciBlb2xDYWxsYmFjayA9IHNhbmRib3guc3B5KGZ1bmN0aW9uIChlb2wpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2wsIFwiXFxuXCIpO1xuICAgIH0pO1xuICAgIHN0Lm9uKFwiZW9sXCIsIGVvbENhbGxiYWNrKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2xDYWxsYmFjay5jYWxsQ291bnQsIDEsICdzaG91bGQgZW1pdCBlb2wgZXZlbnQgb25jZScpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJlbW92ZSB0aGUgQnl0ZSBPcmRlciBNYXJrIChCT00pIGZyb20gaW5wdXRcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1CT01cIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgdHJpbTogZmFsc2VcbiAgICB9KSk7XG4gICAgc3QudGhlbiggZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbiAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function bufFromString(str) {
var length = Buffer.byteLength(str);
var buffer = Buffer.allocUnsafe
? Buffer.allocUnsafe(length)
: new Buffer(length);
buffer.write(str);
return buffer;
}
exports.bufFromString = bufFromString;
function emptyBuffer() {
var buffer = Buffer.allocUnsafe
? Buffer.allocUnsafe(0)
: new Buffer(0);
return buffer;
}
exports.emptyBuffer = emptyBuffer;
function filterArray(arr, filter) {
var rtn = [];
for (var i = 0; i < arr.length; i++) {
if (filter.indexOf(i) > -1) {
rtn.push(arr[i]);
}
}
return rtn;
}
exports.filterArray = filterArray;
exports.trimLeft = String.prototype.trimLeft ? function trimLeftNative(str) {
return str.trimLeft();
} : function trimLeftRegExp(str) {
return str.replace(/^\s+/, "");
};
exports.trimRight = String.prototype.trimRight ? function trimRightNative(str) {
return str.trimRight();
} : function trimRightRegExp(str) {
return str.replace(/\s+$/, "");
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy91dGlsLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1QkFBOEIsR0FBVztJQUN2QyxJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM1QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBUEQsc0NBT0M7QUFFRDtJQUNFLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUxELGtDQUtDO0FBRUQscUJBQTRCLEdBQVUsRUFBRSxNQUFnQjtJQUN0RCxJQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7SUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVJELGtDQVFDO0FBRVksUUFBQSxRQUFRLEdBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFBLHdCQUF3QixHQUFVO0lBQ2hGLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQSxDQUFDLENBQUEsd0JBQXdCLEdBQVU7SUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUE7QUFFWSxRQUFBLFNBQVMsR0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUEseUJBQXlCLEdBQVU7SUFDbkYsT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFBLENBQUMsQ0FBQSx5QkFBeUIsR0FBVTtJQUNuQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBidWZGcm9tU3RyaW5nKHN0cjogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgoc3RyKTtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICAgIDogbmV3IEJ1ZmZlcihsZW5ndGgpO1xuICBidWZmZXIud3JpdGUoc3RyKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5QnVmZmVyKCk6IEJ1ZmZlcntcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgICA6IG5ldyBCdWZmZXIoMCk7XG4gIHJldHVybiBidWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBcnJheShhcnI6IGFueVtdLCBmaWx0ZXI6IG51bWJlcltdKTogYW55W10ge1xuICBjb25zdCBydG46IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZpbHRlci5pbmRleE9mKGkpID4gLTEpIHtcbiAgICAgIHJ0bi5wdXNoKGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBydG47XG59XG5cbmV4cG9ydCBjb25zdCB0cmltTGVmdD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0P2Z1bmN0aW9uIHRyaW1MZWZ0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1MZWZ0KCk7XG59OmZ1bmN0aW9uIHRyaW1MZWZ0UmVnRXhwKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrLywgXCJcIik7XG59XG5cbmV4cG9ydCBjb25zdCB0cmltUmlnaHQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQ/ZnVuY3Rpb24gdHJpbVJpZ2h0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1SaWdodCgpO1xufTpmdW5jdGlvbiB0cmltUmlnaHRSZWdFeHAoc3RyOnN0cmluZyl7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKyQvLCBcIlwiKTtcbn1cbiJdfQ==
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var src_1 = __importDefault(require("../src"));
var assert_1 = __importDefault(require("assert"));
var fs = require("fs");
var sinon_1 = require("sinon");
var sb = sinon_1.sandbox.create();
describe("testCSVConverter3", function () {
afterEach(function () {
sb.restore();
});
it("should parse large csv file with UTF-8 without spliting characters", function (done) {
var testData = __dirname + "/data/large-utf8.csv";
var rs = fs.createReadStream(testData);
var csvConverter = src_1.default({});
var count = 0;
csvConverter.preRawData(function (csvRawData) {
assert_1.default(csvRawData.charCodeAt(0) < 2000);
return csvRawData;
});
csvConverter.on("data", function () {
count++;
});
csvConverter.then(function () {
assert_1.default(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should setup customise type convert function", function (done) {
src_1.default({
checkType: true,
colParser: {
"column1": "string",
"column5": function (item, head, resultRow, row, i) {
assert_1.default.equal(item, '{"hello":"world"}');
assert_1.default.equal(head, "column5"),
assert_1.default(resultRow);
assert_1.default(row);
assert_1.default.equal(i, 5);
return "hello world";
}
}
})
.fromFile(__dirname + "/data/dataWithType")
.subscribe(function (json) {
assert_1.default.equal(typeof json.column1, "string");
assert_1.default.equal(json.column5, "hello world");
assert_1.default.strictEqual(json["name#!"], false);
assert_1.default.strictEqual(json["column9"], true);
})
.on('done', function () {
done();
});
});
it("should accept pipe as quote", function (done) {
src_1.default({
quote: "|",
output: "csv"
})
.fromFile(__dirname + "/data/pipeAsQuote")
.subscribe(function (csv) {
assert_1.default.equal(csv[2], "blahhh, blah");
})
.on('done', function () {
done();
});
});
it("emit file not exists error when try to open a non-exists file", function () {
var called = false;
var cb = sb.spy(function (err) {
assert_1.default(err.toString().indexOf("File does not exist") > -1);
});
return src_1.default()
.fromFile("somefile")
.subscribe(function (csv) {
})
.on("error", cb)
.then(function () {
assert_1.default(false);
}, function (err) {
assert_1.default.equal(cb.callCount, 1);
});
});
it("should include column that is both included and excluded", function () {
return src_1.default({
includeColumns: /b/,
ignoreColumns: /a|b/
})
.fromString("a,b,c\n1,2,3\n4,5,6")
.subscribe(function (d) {
assert_1.default(d.b);
assert_1.default(!d.a);
});
});
it("should allow async preLine hook", function () {
return src_1.default()
.preFileLine(function (line) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(line + "changed");
}, 20);
});
})
.fromString("a,b\n1,2")
.subscribe(function (d) {
assert_1.default(d.bchanged);
assert_1.default.equal(d.bchanged, "2changed");
});
});
it("should allow async subscribe function", function () {
return src_1.default({ trim: true })
.fromString("a,b,c\n 1,2,3\n 4,5,6")
.subscribe(function (d) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
d.a = 10;
resolve();
}, 20);
});
})
.then(function (d) {
assert_1.default.equal(d[0].a, 10);
assert_1.default.equal(d[1].a, 10);
});
});
it("should propagate value to next then", function () {
return src_1.default({ trim: true })
.fromString("a,b,c\n 1,2,3\n 4,5,6")
.then(undefined, undefined)
.then(function (d) {
assert_1.default.equal(d.length, 2);
assert_1.default.equal(d[0].a, "1");
});
});
it("should propagate error to next then", function () {
return src_1.default({ trim: true })
.fromFile(__dirname + "/data/dataWithUnclosedQuotes")
.then(undefined, undefined)
.then(function () {
assert_1.default(false);
}, function (err) {
assert_1.default(err);
assert_1.default.equal(err.err, "unclosed_quote");
});
});
it("should fallback to text is number can not be parsed", function () {
return src_1.default({
colParser: {
"a": "number"
}
})
.fromString("a,b,c\n 1,2,3\n fefe,5,6")
.then(function (d) {
assert_1.default.strictEqual(d[0].a, 1);
assert_1.default.equal(d[1].a, "fefe");
});
});
it("should omit a column", function () {
return src_1.default({
colParser: {
"a": "omit"
}
})
.fromString("a,b,c\n 1,2,3\n fefe,5,6")
.then(function (d) {
assert_1.default.strictEqual(d[0].a, undefined);
assert_1.default.equal(d[1].a, undefined);
});
});
it("could turn off quote and should trim even quote is turned off", function () {
return src_1.default({
quote: "off",
trim: true
})
.fromString("a,b,c\n \"1\",\"2\",\"3\"\n \"fefe,5\",6")
.then(function (d) {
assert_1.default.equal(d[0].a, '"1"');
assert_1.default.equal(d[0].b, '"2"');
assert_1.default.equal(d[1].a, '"fefe');
assert_1.default.equal(d[1].b, '5"');
});
});
it("should allow ignoreEmpty with checkColumn", function () {
return src_1.default({
checkColumn: true,
ignoreEmpty: true
})
.fromString("date,altitude,airtime\n 2016-07-08,2000,23\n \n 2016-07-09,3000,43")
.then(function (data) {
}, function (err) {
console.log(err);
assert_1.default(!err);
});
});
it("should allow quotes without content", function () {
var data = "a|^^|^b^";
return src_1.default({
delimiter: '|',
quote: '^',
noheader: true,
})
.fromString(data)
.then(function (jsonObj) {
assert_1.default.equal(jsonObj[0].field2, "");
});
});
it("should parse header with quotes correctly", function () {
var testData = __dirname + "/data/csvWithUnclosedHeader";
return src_1.default({
headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"]
})
.fromFile(testData)
.then(function (d) {
assert_1.default.equal(d.length, 2);
assert_1.default.equal(d[0].sample_no, "12669");
});
});
it("should stream json string correctly", function (done) {
var data = "a,b,c\n1,2,3\n4,5,6";
var hasLeftBracket = false;
var hasRightBracket = false;
src_1.default({
downstreamFormat: "array"
})
.fromString(data)
.on("data", function (d) {
var str = d.toString();
if (str[0] === "[" && str.length === 2) {
hasLeftBracket = true;
}
else if (str[0] === "]" && str.length === 2) {
hasRightBracket = true;
}
else {
assert_1.default.equal(str[str.length - 2], ",");
}
})
.on("end", function () {
assert_1.default.equal(hasLeftBracket, true);
assert_1.default.equal(hasRightBracket, true);
done();
});
});
it("should stream json line correctly", function (done) {
var data = "a,b,c\n1,2,3\n4,5,6";
src_1.default({
downstreamFormat: "line"
})
.fromString(data)
.on("data", function (d) {
var str = d.toString();
assert_1.default.notEqual(str[str.length - 2], ",");
})
.on("end", function () {
done();
});
});
it("should not send json if needEmitAll is false", function () {
return __awaiter(this, void 0, void 0, function () {
var data;
return __generator(this, function (_a) {
data = "a,b,c\n1,2,3\n4,5,6";
return [2 /*return*/, src_1.default({
needEmitAll: false
})
.fromString(data)
.then(function (d) {
assert_1.default(d.length === 0);
})];
});
});
});
it("should convert null to null object", function () {
return __awaiter(this, void 0, void 0, function () {
var data;
return __generator(this, function (_a) {
data = "a,b,c\nnull,2,3\n4,5,6";
return [2 /*return*/, src_1.default({
nullObject: true
})
.fromString(data)
.then(function (d) {
assert_1.default.equal(d[0].a, null);
})];
});
});
});
it("should process period properly", function () {
return __awaiter(this, void 0, void 0, function () {
var data;
return __generator(this, function (_a) {
data = "a..,b,c\n1,2,3\n4,5,6";
return [2 /*return*/, src_1.default({})
.fromString(data)
.then(function (d) {
assert_1.default.equal(d[0]["a.."], 1);
assert_1.default.equal(d[1]["a.."], 4);
})];
});
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlcjMudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi90ZXN0L3Rlc3RDU1ZDb252ZXJ0ZXIzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBeUI7QUFDekIsa0RBQTRCO0FBQzVCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QiwrQkFBZ0M7QUFFaEMsSUFBTSxFQUFFLEdBQUcsZUFBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixTQUFTLENBQUM7UUFDUixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxVQUFVLElBQUk7UUFDckYsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLFlBQVksR0FBRyxhQUFHLENBQUMsRUFDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLFVBQVU7WUFDMUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxJ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QUNULFVBQVUsRUFBQyxJQUFJO3FCQUNoQixDQUFDO3lCQUNELFVBQVUsQ0FBQyxJQUFJLENBQUM7eUJBQ2hCLElBQUksQ0FBQyxVQUFDLENBQUM7d0JBQ04sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtvQkFDM0IsQ0FBQyxDQUFDLEVBQUE7OztLQUNILENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBRSxnQ0FBZ0MsRUFBQzs7OztnQkFDN0IsSUFBSSxHQUFDLHVCQUVULENBQUE7Z0JBQ0Ysc0JBQU8sYUFBRyxDQUFDLEVBQ1YsQ0FBQzt5QkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDO3lCQUNoQixJQUFJLENBQUMsVUFBQyxDQUFDO3dCQUNOLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixDQUFDLENBQUMsRUFBQTs7O0tBQ0gsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3N2IGZyb20gXCIuLi9zcmNcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuaW1wb3J0IHsgc2FuZGJveCB9IGZyb20gXCJzaW5vblwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuLi9zcmMvQ1NWRXJyb3JcIjtcbmNvbnN0IHNiID0gc2FuZGJveC5jcmVhdGUoKTtcbmRlc2NyaWJlKFwidGVzdENTVkNvbnZlcnRlcjNcIiwgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNiLnJlc3RvcmUoKTtcbiAgfSk7XG4gIGl0KFwic2hvdWxkIHBhcnNlIGxhcmdlIGNzdiBmaWxlIHdpdGggVVRGLTggd2l0aG91dCBzcGxpdGluZyBjaGFyYWN0ZXJzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9sYXJnZS11dGY4LmNzdlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBjc3Yoe1xuICAgIH0pO1xuICAgIHZhciBjb3VudCA9IDA7XG4gICAgY3N2Q29udmVydGVyLnByZVJhd0RhdGEoZnVuY3Rpb24gKGNzdlJhd0RhdGEpIHtcbiAgICAgIGFzc2VydChjc3ZSYXdEYXRhLmNoYXJDb2RlQXQoMCkgPCAyMDAwKTtcbiAgICAgIHJldHVybiBjc3ZSYXdEYXRhO1xuICAgIH0pXG4gICAgY3N2Q29udmVydGVyLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydChjb3VudCA9PT0gNTI5MCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuICB9KTtcbiAgaXQoXCJzaG91bGQgc2V0dXAgY3VzdG9taXNlIHR5cGUgY29udmVydCBmdW5jdGlvblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIGNzdih7XG4gICAgICBjaGVja1R5cGU6IHRydWUsXG4gICAgICBjb2xQYXJzZXI6IHtcbiAgICAgICAgXCJjb2x1bW4xXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwiY29sdW1uNVwiOiBmdW5jdGlvbiAoaXRlbSwgaGVhZCwgcmVzdWx0Um93LCByb3csIGkpIHtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoaXRlbSwgJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkLCBcImNvbHVtbjVcIiksXG4gICAgICAgICAgICBhc3NlcnQocmVzdWx0Um93KTtcbiAgICAgICAgICBhc3NlcnQocm93KTtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoaSwgNSk7XG4gICAgICAgICAgcmV0dXJuIFwiaGVsbG8gd29ybGRcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbUZpbGUoX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFR5cGVcIilcbiAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBqc29uLmNvbHVtbjEsIFwic3RyaW5nXCIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoanNvbi5jb2x1bW41LCBcImhlbGxvIHdvcmxkXCIpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoanNvbltcIm5hbWUjIVwiXSwgZmFsc2UpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoanNvbltcImNvbHVtbjlcIl0sIHRydWUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZG9uZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZG9uZSgpXG4gICAgICB9KTtcbiAgfSlcbiAgaXQoXCJzaG91bGQgYWNjZXB0IHBpcGUgYXMgcXVvdGVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBjc3Yoe1xuICAgICAgcXVvdGU6IFwifFwiLFxuICAgICAgb3V0cHV0OiBcImNzdlwiXG4gICAgfSlcbiAgICAgIC5mcm9tRmlsZShfX2Rpcm5hbWUgKyBcIi9kYXRhL3BpcGVBc1F1b3RlXCIpXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChjc3YpIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGNzdlsyXSwgXCJibGFoaGgsIGJsYWhcIik7XG4gICAgICB9KVxuICAgICAgLm9uKCdkb25lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KVxuICBpdChcImVtaXQgZmlsZSBub3QgZXhpc3RzIGVycm9yIHdoZW4gdHJ5IHRvIG9wZW4gYSBub24tZXhpc3RzIGZpbGVcIiwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYiA9IHNiLnNweSgoZXJyKSA9PiB7XG4gICAgICBhc3NlcnQoZXJyLnRvU3RyaW5nKCkuaW5kZXhPZihcIkZpbGUgZG9lcyBub3QgZXhpc3RcIikgPiAtMSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzdigpXG4gICAgICAuZnJvbUZpbGUoXCJzb21lZmlsZVwiKVxuICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoY3N2KSB7XG5cbiAgICAgIH0pXG4gICAgICAub24oXCJlcnJvclwiLCBjYilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGNiLmNhbGxDb3VudCwgMSk7XG4gICAgICB9KVxuXG4gIH0pXG4gIGl0KFwic2hvdWxkIGluY2x1ZGUgY29sdW1uIHRoYXQgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWRcIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgaW5jbHVkZUNvbHVtbnM6IC9iLyxcbiAgICAgIGlnbm9yZUNvbHVtbnM6IC9hfGIvXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGIsY1xuMSwyLDNcbjQsNSw2YClcbiAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0KGQuYik7XG4gICAgICAgIGFzc2VydCghZC5hKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIGFsbG93IGFzeW5jIHByZUxpbmUgaG9va1wiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdigpXG4gICAgICAucHJlRmlsZUxpbmUoKGxpbmUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUobGluZSArIFwiY2hhbmdlZFwiKVxuICAgICAgICAgIH0sIDIwKTtcblxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGJcbjEsMmApXG4gICAgICAuc3Vic2NyaWJlKChkKSA9PiB7XG4gICAgICAgIGFzc2VydChkLmJjaGFuZ2VkKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGQuYmNoYW5nZWQsIFwiMmNoYW5nZWRcIik7XG4gICAgICB9KVxuXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgYXN5bmMgc3Vic2NyaWJlIGZ1bmN0aW9uXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gICAgMSwyLDNcbiAgICA0LDUsNmApXG4gICAgICAuc3Vic2NyaWJlKChkKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBkLmEgPSAxMDtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LCAyMCk7XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYSwgMTApO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFsxXS5hLCAxMCk7XG4gICAgICB9KVxuICB9KVxuICBpdChcInNob3VsZCBwcm9wYWdhdGUgdmFsdWUgdG8gbmV4dCB0aGVuXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gIDEsMiwzXG4gIDQsNSw2YClcbiAgICAgIC50aGVuKHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGQubGVuZ3RoLCAyKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYSwgXCIxXCIpO1xuICAgICAgfSlcblxuICB9KVxuICBpdChcInNob3VsZCBwcm9wYWdhdGUgZXJyb3IgdG8gbmV4dCB0aGVuXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhVbmNsb3NlZFF1b3Rlc1wiKVxuICAgICAgLnRoZW4odW5kZWZpbmVkLCB1bmRlZmluZWQpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGFzc2VydChmYWxzZSlcbiAgICAgIH0sIChlcnI6IENTVkVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydChlcnIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIGZhbGxiYWNrIHRvIHRleHQgaXMgbnVtYmVyIGNhbiBub3QgYmUgcGFyc2VkXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGNvbFBhcnNlcjoge1xuICAgICAgICBcImFcIjogXCJudW1iZXJcIlxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgMSwyLDNcbiAgZmVmZSw1LDZgKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgMSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIFwiZmVmZVwiKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIG9taXQgYSBjb2x1bW5cIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiYVwiOiBcIm9taXRcIlxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgMSwyLDNcbiAgZmVmZSw1LDZgKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgdW5kZWZpbmVkKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwiY291bGQgdHVybiBvZmYgcXVvdGUgYW5kIHNob3VsZCB0cmltIGV2ZW4gcXVvdGUgaXMgdHVybmVkIG9mZlwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBxdW90ZTogXCJvZmZcIixcbiAgICAgIHRyaW06IHRydWVcbiAgICB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gIFwiMVwiLFwiMlwiLFwiM1wiXG4gIFwiZmVmZSw1XCIsNmApXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAnXCIxXCInKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYiwgJ1wiMlwiJyk7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsICdcImZlZmUnKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYiwgJzVcIicpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJzaG91bGQgYWxsb3cgaWdub3JlRW1wdHkgd2l0aCBjaGVja0NvbHVtblwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBjaGVja0NvbHVtbjogdHJ1ZSxcbiAgICAgIGlnbm9yZUVtcHR5OiB0cnVlXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBkYXRlLGFsdGl0dWRlLGFpcnRpbWVcbiAgICAyMDE2LTA3LTA4LDIwMDAsMjNcbiAgICBcbiAgICAyMDE2LTA3LTA5LDMwMDAsNDNgKVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcblxuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICBhc3NlcnQoIWVycik7XG4gICAgICB9KVxuICB9KTtcbiAgaXQoXCJzaG91bGQgYWxsb3cgcXVvdGVzIHdpdGhvdXQgY29udGVudFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFwiYXxeXnxeYl5cIjtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGRlbGltaXRlcjogJ3wnLFxuICAgICAgcXVvdGU6ICdeJyxcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgICAgLnRoZW4oKGpzb25PYmopID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGQyLCBcIlwiKTtcbiAgICAgIH0pO1xuICB9KVxuICBpdChcInNob3VsZCBwYXJzZSBoZWFkZXIgd2l0aCBxdW90ZXMgY29ycmVjdGx5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NzdldpdGhVbmNsb3NlZEhlYWRlclwiO1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgaGVhZGVyczogW1wiZXhhbV9kYXRlXCIsIFwic2FtcGxlX25vXCIsIFwic3RhdHVzXCIsIFwic2FtcGxlX3R5cGVcIiwgXCJwYXRpZW50X2lkXCIsIFwibGFzdF9uYW1lXCIsIFwiZmlyc3RfbmFtZVwiLCBcImdlbmRlcl9vZl9wYXRpZW50XCIsIFwicGF0aWVudF9iaXJ0aF9kYXRlXCIsIFwicGF0aWVudF9ub3RlXCIsIFwicGF0aWVudF9kZXBhcnRtZW50XCIsIFwiYWNjZXNzaW9uX251bWJlclwiLCBcInNhbXBsZV9zaXRlXCIsIFwicGh5c2ljaWFuXCIsIFwib3BlcmF0b3JcIiwgXCJkZXBhcnRtZW50XCIsIFwibm90ZVwiLCBcInRlc3Rfb3JkZXJfY29kZVwiLCBcImRyYXdfdGltZVwiLCBcImFwcHJvdmFsX3N0YXR1c1wiLCBcImFwcHJvdmFsX3RpbWVcIiwgXCJyZXBvcnRfbGF5b3V0XCIsIFwicGF0aWVudF9hY2NvdW50X251bWJlclwiLCBcIm5vbmVfMVwiLCBcImVycm9yc19kZXRlY3RlZF9kdXJpbmdfbWVhc3VyZW1lbnRcIiwgXCJhZ2VcIiwgXCJlcnJvcl9jb2RlXzAxXCIsIFwid2VpZ2h0XCIsIFwiZXJyb3JfY29kZV8wMlwiLCBcImhlaWdodFwiLCBcImVycm9yX2NvZGVfMDNcIiwgXCJoY2dfYmV0YV9wXCIsIFwiZXJyb3JfY29kZV8wNFwiLCBcInRyb3BvbmluX2lfcFwiLCBcImVycm9yX2NvZGVfMDVcIiwgXCJja19tYl9wXCIsIFwiZXJyb3JfY29kZV8wNlwiLCBcImRfZGltZXJfcFwiLCBcImVycm9yX2NvZGVfMDdcIiwgXCJoc2NycF9wXCIsIFwiZXJyb3JfY29kZV8wOFwiLCBcIm15b2dsb2Jpbl9wXCIsIFwiZXJyb3JfY29kZV8wOVwiLCBcIm50X3Byb2JucFwiLCBcImVycm9yX2NvZGVfMTBcIiwgXCJjcnBcIiwgXCJlcnJvcl9jb2RlXzExXCIsIFwiYm5wXCIsIFwiZXJyb3JfY29kZV8xMlwiLCBcInRudFwiLCBcImVycm9yX2NvZGVfMTNcIiwgXCJkZW1vX3BcIiwgXCJlcnJvcl9jb2RlXzE0XCIsIFwicGN0XCIsIFwiZXJyb3JfY29kZV8xNVwiXVxuICAgIH0pXG4gICAgICAuZnJvbUZpbGUodGVzdERhdGEpXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZC5sZW5ndGgsIDIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5zYW1wbGVfbm8sIFwiMTI2NjlcIik7XG4gICAgICB9KVxuXG4gIH0pO1xuICBpdCAoXCJzaG91bGQgc3RyZWFtIGpzb24gc3RyaW5nIGNvcnJlY3RseVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgbGV0IGhhc0xlZnRCcmFja2V0PWZhbHNlO1xuICAgIGxldCBoYXNSaWdodEJyYWNrZXQ9ZmFsc2U7XG4gICAgY3N2KHtcbiAgICAgIGRvd25zdHJlYW1Gb3JtYXQ6XCJhcnJheVwiXG4gICAgfSlcbiAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgIC5vbihcImRhdGFcIiwoZCk9PntcbiAgICAgIGNvbnN0IHN0cj1kLnRvU3RyaW5nKCk7XG4gICAgICBpZiAoc3RyWzBdPT09XCJbXCIgJiYgc3RyLmxlbmd0aCA9PT0yKXtcbiAgICAgICAgaGFzTGVmdEJyYWNrZXQ9dHJ1ZTtcbiAgICAgIH1lbHNlIGlmIChzdHJbMF09PT1cIl1cIiAmJiBzdHIubGVuZ3RoPT09Mil7XG4gICAgICAgIGhhc1JpZ2h0QnJhY2tldD10cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGFzc2VydC5lcXVhbChzdHJbc3RyLmxlbmd0aC0yXSxcIixcIik7XG4gICAgICB9XG4gICAgICBcbiAgICB9KVxuICAgIC5vbihcImVuZFwiLCgpPT57XG4gICAgICBhc3NlcnQuZXF1YWwoaGFzTGVmdEJyYWNrZXQsdHJ1ZSk7XG4gICAgICBhc3NlcnQuZXF1YWwoaGFzUmlnaHRCcmFja2V0LHRydWUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pXG4gIGl0IChcInNob3VsZCBzdHJlYW0ganNvbiBsaW5lIGNvcnJlY3RseVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgY3N2KHtcbiAgICAgIGRvd25zdHJlYW1Gb3JtYXQ6XCJsaW5lXCJcbiAgICB9KVxuICAgIC5mcm9tU3RyaW5nKGRhdGEpXG4gICAgLm9uKFwiZGF0YVwiLChkKT0+e1xuICAgICAgY29uc3Qgc3RyPWQudG9TdHJpbmcoKTtcbiAgICAgIFxuICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHN0cltzdHIubGVuZ3RoLTJdLFwiLFwiKTtcbiAgICB9KVxuICAgIC5vbihcImVuZFwiLCgpPT57XG4gICAgICBkb25lKCk7XG4gICAgfSlcbiAgfSlcbiAgaXQgKFwic2hvdWxkIG5vdCBzZW5kIGpzb24gaWYgbmVlZEVtaXRBbGwgaXMgZmFsc2VcIixhc3luYyBmdW5jdGlvbigpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBuZWVkRW1pdEFsbDpmYWxzZVxuICAgIH0pXG4gICAgLmZyb21TdHJpbmcoZGF0YSlcbiAgICAudGhlbigoZCk9PntcbiAgICAgIGFzc2VydChkLmxlbmd0aD09PTApO1xuICAgIH0pXG4gIH0pXG4gIGl0IChcInNob3VsZCBjb252ZXJ0IG51bGwgdG8gbnVsbCBvYmplY3RcIixhc3luYyBmdW5jdGlvbigpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG5udWxsLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBudWxsT2JqZWN0OnRydWVcbiAgICB9KVxuICAgIC5mcm9tU3RyaW5nKGRhdGEpXG4gICAgLnRoZW4oKGQpPT57XG4gICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLG51bGwpXG4gICAgfSlcbiAgfSlcbiAgaXQgKFwic2hvdWxkIHByb2Nlc3MgcGVyaW9kIHByb3Blcmx5XCIsYXN5bmMgZnVuY3Rpb24oKXtcbiAgICBjb25zdCBkYXRhPWBhLi4sYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgfSlcbiAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgIC50aGVuKChkKT0+e1xuICAgICAgYXNzZXJ0LmVxdWFsKGRbMF1bXCJhLi5cIl0sMSk7XG4gICAgICBhc3NlcnQuZXF1YWwoZFsxXVtcImEuLlwiXSw0KTtcbiAgICB9KVxuICB9KVxufSk7XG4iXX0=
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CSVError = /** @class */ (function (_super) {
__extends(CSVError, _super);
function CSVError(err, line, extra) {
var _this = _super.call(this, "Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : "")) || this;
_this.err = err;
_this.line = line;
_this.extra = extra;
_this.name = "CSV Parse Error";
return _this;
}
CSVError.column_mismatched = function (index, extra) {
return new CSVError("column_mismatched", index, extra);
};
CSVError.unclosed_quote = function (index, extra) {
return new CSVError("unclosed_quote", index, extra);
};
CSVError.fromJSON = function (obj) {
return new CSVError(obj.err, obj.line, obj.extra);
};
CSVError.prototype.toJSON = function () {
return {
err: this.err,
line: this.line,
extra: this.extra
};
};
return CSVError;
}(Error));
exports.default = CSVError;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtJQUFzQyw0QkFBSztJQVV6QyxrQkFDUyxHQUFXLEVBQ1gsSUFBWSxFQUNaLEtBQWM7UUFIdkIsWUFLRSxrQkFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FFMUY7UUFOUSxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFdBQUssR0FBTCxLQUFLLENBQVM7UUFHckIsS0FBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQzs7SUFDaEMsQ0FBQztJQWhCTSwwQkFBaUIsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLEtBQWM7UUFDcEQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLHVCQUFjLEdBQXJCLFVBQXNCLEtBQWEsRUFBRSxLQUFjO1FBQ2pELE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDTSxpQkFBUSxHQUFmLFVBQWdCLEdBQUc7UUFDakIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFTRCx5QkFBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVILGVBQUM7QUFBRCxDQUFDLEFBMUJELENBQXNDLEtBQUssR0EwQjFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ1NWRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHN0YXRpYyBjb2x1bW5fbWlzbWF0Y2hlZChpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJjb2x1bW5fbWlzbWF0Y2hlZFwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyB1bmNsb3NlZF9xdW90ZShpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJ1bmNsb3NlZF9xdW90ZVwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyBmcm9tSlNPTihvYmopIHtcbiAgICByZXR1cm4gbmV3IENTVkVycm9yKG9iai5lcnIsIG9iai5saW5lLCBvYmouZXh0cmEpO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlcnI6IHN0cmluZyxcbiAgICBwdWJsaWMgbGluZTogbnVtYmVyLFxuICAgIHB1YmxpYyBleHRyYT86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcIkVycm9yOiBcIiArIGVyciArIFwiLiBKU09OIExpbmUgbnVtYmVyOiBcIiArIGxpbmUgKyAoZXh0cmEgPyBcIiBuZWFyOiBcIiArIGV4dHJhIDogXCJcIikpO1xuICAgIHRoaXMubmFtZSA9IFwiQ1NWIFBhcnNlIEVycm9yXCI7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnI6IHRoaXMuZXJyLFxuICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgZXh0cmE6IHRoaXMuZXh0cmFcbiAgICB9XG4gIH1cblxufVxuIl19
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Converter_1 = require("../src/Converter");
var assert = require("assert");
var fs = require("fs");
describe("Converter error handling", function () {
it("should handle quote not closed", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter_1.Converter({});
conv.on("error", function (err) {
assert(err.err === "unclosed_quote");
done();
});
rs.pipe(conv);
});
it("should handle column number mismatched error", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithMismatchedColumn");
var conv = new Converter_1.Converter({
checkColumn: true
});
var tested = false;
conv.on("error", function (err) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
// done();
}
});
conv.on('done', function () {
assert(tested);
done();
});
rs.pipe(conv);
});
it("should treat quote not closed as column_mismatched when alwaysSplitAtEOL is true", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter_1.Converter({
checkColumn: true,
alwaysSplitAtEOL: true,
});
var tested = false;
conv.on("error", function (err) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
}
});
conv.on('done', function () {
assert(tested);
done();
});
rs.pipe(conv);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdEVycm9ySGFuZGxlLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0RXJyb3JIYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBMkM7QUFFM0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QixRQUFRLENBQUMsMEJBQTBCLEVBQUU7SUFDbkMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFVBQVMsSUFBSTtRQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLDhCQUE4QixDQUFDLENBQUM7UUFDekUsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVMsR0FBWTtZQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBR0gsRUFBRSxDQUFFLDhDQUE4QyxFQUFFLFVBQVMsSUFBSTtRQUMvRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQ3ZCLFdBQVcsRUFBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNkLFVBQVU7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUM7WUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRkFBa0YsRUFBRSxVQUFTLElBQUk7UUFDbEcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUN2QixXQUFXLEVBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBQyxJQUFJO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFDO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udmVydGVyfSBmcm9tIFwiLi4vc3JjL0NvbnZlcnRlclwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuLi9zcmMvQ1NWRXJyb3JcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuXG5kZXNjcmliZShcIkNvbnZlcnRlciBlcnJvciBoYW5kbGluZ1wiLCBmdW5jdGlvbigpIHtcbiAgaXQoXCJzaG91bGQgaGFuZGxlIHF1b3RlIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7fSk7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwidW5jbG9zZWRfcXVvdGVcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjb252KTtcbiAgfSk7XG4gXG5cbiAgaXQgKFwic2hvdWxkIGhhbmRsZSBjb2x1bW4gbnVtYmVyIG1pc21hdGNoZWQgZXJyb3JcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aE1pc21hdGNoZWRDb2x1bW5cIik7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrQ29sdW1uOnRydWVcbiAgICB9KTtcbiAgICB2YXIgdGVzdGVkID0gZmFsc2U7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgaWYgKHRlc3RlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwiY29sdW1uX21pc21hdGNoZWRcIik7XG4gICAgICAgIHRlc3RlZCA9IHRydWU7XG4gICAgICAgIC8vIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHRyZWF0IHF1b3RlIG5vdCBjbG9zZWQgYXMgY29sdW1uX21pc21hdGNoZWQgd2hlbiBhbHdheXNTcGxpdEF0RU9MIGlzIHRydWVcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja0NvbHVtbjp0cnVlLFxuICAgICAgYWx3YXlzU3BsaXRBdEVPTDp0cnVlLFxuICAgIH0pO1xuICAgIHZhciB0ZXN0ZWQgPSBmYWxzZTtcbiAgICBjb252Lm9uKFwiZXJyb3JcIiwgZnVuY3Rpb24oZXJyOkNTVkVycm9yKSB7XG4gICAgICBpZiAodGVzdGVkID09PSBmYWxzZSkge1xuICAgICAgICBhc3NlcnQoZXJyLmVyciA9PT0gXCJjb2x1bW5fbWlzbWF0Y2hlZFwiKTtcbiAgICAgICAgdGVzdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var ProcessorLocal_1 = require("./ProcessorLocal");
var Converter_1 = require("./Converter");
var fs_1 = require("fs");
var path_1 = __importDefault(require("path"));
var assert_1 = __importDefault(require("assert"));
var dataDir = path_1.default.join(__dirname, "../test/data/");
describe("ProcessLocal", function () {
it("should process csv chunks and output json", function () {
return __awaiter(this, void 0, void 0, function () {
var processor, data, lines, line0;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter());
data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return [4 /*yield*/, processor.process(data)];
case 1:
lines = _a.sent();
assert_1.default(lines.length === 2);
line0 = lines[0];
assert_1.default.equal(line0.fieldA.title, "Food Factory");
assert_1.default.equal(line0.fieldA.children.length, 2);
assert_1.default.equal(line0.fieldA.children[1].employee[0].name, "Tim");
return [2 /*return*/];
}
});
});
});
it("should process csv chunks and output csv rows", function () {
return __awaiter(this, void 0, void 0, function () {
var processor, data, lines;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter({ output: "line" }));
data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return [4 /*yield*/, processor.process(data)];
case 1:
lines = _a.sent();
assert_1.default(lines.length === 2);
return [2 /*return*/];
}
});
});
});
it("should return empty array if preRawHook removed the data", function () {
var conv = new Converter_1.Converter();
conv.preRawData(function (str) {
return "";
});
var processor = new ProcessorLocal_1.ProcessorLocal(conv);
var data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return processor.process(data)
.then(function (list) {
assert_1.default.equal(list.length, 0);
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1Byb2Nlc3NvckxvY2FsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCx5Q0FBd0M7QUFFeEMseUJBQWdDO0FBQ2hDLDhDQUF3QjtBQUN4QixrREFBNEI7QUFFNUIsSUFBTSxPQUFPLEdBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDbkQsUUFBUSxDQUFDLGNBQWMsRUFBQztJQUN0QixFQUFFLENBQUUsMkNBQTJDLEVBQUM7Ozs7Ozt3QkFDeEMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFDekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixLQUFLLEdBQUMsS0FBSyxDQUFDLENBQUMsQ0FBZSxDQUFDO3dCQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxjQUFjLENBQUMsQ0FBQzt3QkFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLEtBQUssQ0FBQyxDQUFDOzs7OztLQUMvRCxDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsK0NBQStDLEVBQUM7Ozs7Ozt3QkFDNUMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFFekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDOzs7OztLQUM1QixDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsMERBQTBELEVBQUM7UUFDN0QsSUFBTSxJQUFJLEdBQUMsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFDLEdBQUc7WUFDbEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILElBQU0sU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFNLElBQUksR0FBQyxpQkFBWSxDQUFDLE9BQU8sR0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDN0IsSUFBSSxDQUFDLFVBQUMsSUFBSTtZQUNULGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9jZXNzb3JMb2NhbH0gZnJvbSBcIi4vUHJvY2Vzc29yTG9jYWxcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IFAgZnJvbSBcImJsdWViaXJkXCI7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyBKU09OUmVzdWx0IH0gZnJvbSBcIi4vbGluZVRvSnNvblwiO1xuY29uc3QgZGF0YURpcj1wYXRoLmpvaW4oX19kaXJuYW1lLFwiLi4vdGVzdC9kYXRhL1wiKTtcbmRlc2NyaWJlKFwiUHJvY2Vzc0xvY2FsXCIsKCk9PntcbiAgaXQgKFwic2hvdWxkIHByb2Nlc3MgY3N2IGNodW5rcyBhbmQgb3V0cHV0IGpzb25cIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoKSk7XG4gICAgY29uc3QgZGF0YT1yZWFkRmlsZVN5bmMoZGF0YURpcitcIi9jb21wbGV4SlNPTkNTVlwiKTtcbiAgICBjb25zdCBsaW5lcz1hd2FpdCBwcm9jZXNzb3IucHJvY2VzcyhkYXRhKTtcbiAgICBhc3NlcnQobGluZXMubGVuZ3RoID09PSAyKTtcbiAgICBjb25zdCBsaW5lMD1saW5lc1swXSBhcyBKU09OUmVzdWx0O1xuICAgIGFzc2VydC5lcXVhbChsaW5lMC5maWVsZEEudGl0bGUsXCJGb29kIEZhY3RvcnlcIik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlbi5sZW5ndGgsMik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlblsxXS5lbXBsb3llZVswXS5uYW1lLFwiVGltXCIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcHJvY2VzcyBjc3YgY2h1bmtzIGFuZCBvdXRwdXQgY3N2IHJvd3NcIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoe291dHB1dDpcImxpbmVcIn0pKTtcbiAgICBjb25zdCBkYXRhPXJlYWRGaWxlU3luYyhkYXRhRGlyK1wiL2NvbXBsZXhKU09OQ1NWXCIpO1xuICAgIGNvbnN0IGxpbmVzPWF3YWl0IHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpO1xuICAgIFxuICAgIGFzc2VydChsaW5lcy5sZW5ndGggPT09IDIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcmV0dXJuIGVtcHR5IGFycmF5IGlmIHByZVJhd0hvb2sgcmVtb3ZlZCB0aGUgZGF0YVwiLCgpPT57XG4gICAgY29uc3QgY29udj1uZXcgQ29udmVydGVyKCk7XG4gICAgY29udi5wcmVSYXdEYXRhKChzdHIpPT57XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKGNvbnYpO1xuICAgIGNvbnN0IGRhdGE9cmVhZEZpbGVTeW5jKGRhdGFEaXIrXCIvY29tcGxleEpTT05DU1ZcIik7XG4gICAgcmV0dXJuIHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpXG4gICAgLnRoZW4oKGxpc3QpPT57XG4gICAgICBhc3NlcnQuZXF1YWwobGlzdC5sZW5ndGgsMCk7XG4gICAgfSlcbiAgfSlcbn0pXG5cbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
describe("CSVError", function () {
it("should toString()", function () {
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL0NTVkVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2xCLEVBQUUsQ0FBRSxtQkFBbUIsRUFBQztJQUN4QixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmRlc2NyaWJlKFwiQ1NWRXJyb3JcIiwoKT0+e1xuICBpdCAoXCJzaG91bGQgdG9TdHJpbmcoKVwiLCgpPT57XG4gIH0pXG59KSJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fileline_1 = require("./fileline");
var Converter_1 = require("./Converter");
var assert = require("assert");
describe("fileline function", function () {
it("should convert data to multiple lines ", function () {
var conv = new Converter_1.Converter();
var data = "abcde\nefef";
var result = fileline_1.stringToLines(data, conv.parseRuntime);
assert.equal(result.lines.length, 1);
assert.equal(result.partial, "efef");
assert.equal(result.lines[0], "abcde");
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2ZpbGVsaW5lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUM7QUFFekMseUNBQXdDO0FBQ3hDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFFLHdDQUF3QyxFQUFFO1FBQzVDLElBQU0sSUFBSSxHQUFDLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRyx3QkFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cmluZ1RvTGluZXN9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBtZXJnZVBhcmFtcyB9IGZyb20gXCIuL1BhcmFtZXRlcnNcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5kZXNjcmliZShcImZpbGVsaW5lIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uKCkge1xuICBpdCAoXCJzaG91bGQgY29udmVydCBkYXRhIHRvIG11bHRpcGxlIGxpbmVzIFwiLCBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBjb252PW5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgZGF0YSA9IFwiYWJjZGVcXG5lZmVmXCI7XG4gICAgdmFyIHJlc3VsdCA9IHN0cmluZ1RvTGluZXMoZGF0YSwgY29udi5wYXJzZVJ1bnRpbWUpO1xuICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGluZXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnBhcnRpYWwsIFwiZWZlZlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LmxpbmVzWzBdLCBcImFiY2RlXCIpO1xuICB9KTtcbn0pO1xuIl19

Sorry, the diff of this file is too big to display

import {Result} from "./Result";
import { Converter } from "./Converter";
import P from "bluebird";
import {readFileSync} from "fs";
import path from "path";
import assert from "assert";
import { JSONResult } from "./lineToJson";
const dataDir=path.join(__dirname,"../test/data/");
describe("Result",()=>{
it ("should return need push downstream based on needEmitAll parameter",function (){
const conv=new Converter();
const res=new Result(conv);
assert.equal(res["needEmitAll"],false);
conv.then();
assert.equal(res["needEmitAll"],true);
conv.parseParam.needEmitAll=false;
assert.equal(res["needEmitAll"],false);
});
})

Sorry, the diff of this file is not supported yet

+0
-1

@@ -6,4 +6,3 @@ language: node_js

- "6"
- "4"
after_success: 'npm run coveralls'
script: "npm run travis"

@@ -79,2 +79,10 @@ {

"type": "boolean"
},
"--nullObject":{
"desc":"How to parse if a csv cell contains 'null'. Default false will keep 'null' as string. Change to true if a null object is needed.",
"type":"boolean"
},
"--downstreamFormat":{
"desc":"Option to set what JSON array format is needed by downstream. 'line' is also called ndjson format. This format will write lines of JSON (without square brackets and commas) to downstream. 'array' will write complete JSON array string to downstream (suitable for file writable stream etc). Default 'line'",
"type":"string"
}

@@ -81,0 +89,0 @@ },

@@ -247,3 +247,3 @@ {

],
"version": "2.0.8",
"version": "2.0.10",
"keywords": [

@@ -301,4 +301,5 @@ "csv",

"dev": "tsc -w",
"build": "rm -Rf ./v2 && tsc && npm run build:browser",
"build": "rm -Rf ./v2 && tsc && npm run build:browser && npm run build:browser:window",
"build:browser": "webpack --config ./webpack.config.js",
"build:browser:window": "webpack --config ./webpack.config.js --output-library-target=window --output-library=csv --output-filename=csvtojson.min.js",
"test": "rm -Rf .ts-node && TS_NODE_CACHE_DIRECTORY=.ts-node mocha -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec",

@@ -305,0 +306,0 @@ "travis": "nyc --reporter lcov mocha -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec",

+64
-22

@@ -29,3 +29,3 @@ [![Build Status](https://travis-ci.org/Keyang/node-csvtojson.svg?branch=master)](https://travis-ci.org/Keyang/node-csvtojson)

* To upgrade to v2, please follow [upgrading guide](https://github.com/Keyang/node-csvtojson/blob/master/docs/csvtojson-v2.md)
* If you are looking for documentation for `v1`, open [this page](https://github.com/Keyang/node-csvtojson/blob/master/docs/readme.v1.md).
* If you are looking for documentation for `v1`, open [this page](https://github.com/Keyang/node-csvtojson/blob/master/docs/readme.v1.md)

@@ -47,2 +47,3 @@ It is still able to use v1 with `csvtojson@2.0.0`

* [API](#api)
* [Browser Usage](#browser-usage)
* [Contribution](#contribution)

@@ -199,3 +200,3 @@

* [Parameters](#parameters)
* [Asynchronouse Result Process](#asynchronouse-result-process)
* [Asynchronous Result Process](#asynchronous-result-process)
* [Events](#events)

@@ -205,3 +206,2 @@ * [Hook / Transform](#hook--transform)

* [Header Row](#header-row)
* [Multi CPU Core Support(experimental) ](#multi-cpu-core-support)
* [Column Parser](#column-parser)

@@ -214,3 +214,3 @@

1. parser parameters
1. Parser parameters
2. Stream options

@@ -237,4 +237,4 @@

* **output**: The format to be converted to. "json" (default) -- convert csv to json. "csv" -- convert csv to csv row array. "line" -- convert csv to csv line string
* **delimiter**: delimiter used for seperating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: ","
* **quote**: If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" wont be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote)
* **delimiter**: delimiter used for separating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: ","
* **quote**: If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" won't be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote)
* **trim**: Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true

@@ -247,3 +247,3 @@ * **checkType**: This parameter turns on and off whether check field type. Default is false. (The default is `true` if version < 1.1.4)

* **flatKeys**: Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false.
* **maxRowLength**: the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0
* **maxRowLength**: the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser won't consume memory. default: 0
* **checkColumn**: whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false

@@ -255,11 +255,13 @@ * **eol**: End of line character. If omitted, parser will attempt to retrieve it from the first chunks of CSV data.

* **colParser**: Allows override parsing logic for a specific column. It accepts a JSON object with fields like: `headName: <String | Function | ColParser>` . e.g. {field1:'number'} will use built-in number parser to convert value of the `field1` column to number. For more information See [details below](#column-parser)
* **alwaysSplitAtEOL**: Always interpret each line (as defined by `eol`) as a row. This will prevent `eol` characters from being used within a row (even inside a quoted field). This ensures that misplaced quotes only break on row, and not all ensuing rows.
* **alwaysSplitAtEOL**: Always interpret each line (as defined by `eol` like `\n`) as a row. This will prevent `eol` characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text).
* **nullObject**: How to parse if a csv cell contains "null". Default false will keep "null" as string. Change to true if a null object is needed.
* **downstreamFormat**: Option to set what JSON array format is needed by downstream. "line" is also called ndjson format. This format will write lines of JSON (without square brackets and commas) to downstream. "array" will write complete JSON array string to downstream (suitable for file writable stream etc). Default "line"
* **needEmitAll**: Parser will build JSON result is `.then` is called (or await is used). If this is not desired, set this to false. Default is true.
All parameters can be used in Command Line tool.
## Asynchronouse Result Process
## Asynchronous Result Process
Since `v2.0.0`, asynchronouse processing has been fully supported.
Since `v2.0.0`, asynchronous processing has been fully supported.
e.g. Process each JSON result asynchronousely.
e.g. Process each JSON result asynchronously.

@@ -271,3 +273,3 @@ ```js

// Async operation on the json
// dont forget to call resolve and reject
// don't forget to call resolve and reject
})

@@ -303,3 +305,3 @@ })

`data` event is emitted for each parsed CSV line. It passes buffer of strigified JSON in [ndjson format](http://ndjson.org/) unless `objectMode` is set true in stream option.
`data` event is emitted for each parsed CSV line. It passes buffer of stringified JSON in [ndjson format](http://ndjson.org/) unless `objectMode` is set true in stream option.

@@ -316,3 +318,3 @@ ```js

### error
`error` event is emitted if there is any errors happened during parsing.
`error` event is emitted if any errors happened during parsing.

@@ -361,3 +363,3 @@ ```js

// asynchronouse
// asynchronous
csv()

@@ -375,3 +377,3 @@ .preRawData((csvRawData)=>{

the function is called each time a file line has been parsed in csv stream. the `lineIdx` is the file line number in the file starting with 0.
The function is called each time a file line has been parsed in csv stream. The `lineIdx` is the file line number in the file starting with 0.

@@ -389,3 +391,3 @@ ```js

// asynchronouse
// asynchronous
csv()

@@ -412,3 +414,3 @@ .preFileLine((fileLineString, lineIdx)=>{

jsonObj.myNewKey='some value'
// OR asynchronousely
// OR asynchronously
return new Promise((resolve,reject)=>{

@@ -504,3 +506,3 @@ jsonObj.myNewKey='some value';

3. If original csv source has no header row but the header definition can be defined. Use `headers:[]` and `noheader:true` parameters.
4. If original csv source has no header row and the header definition is unknow. Use `noheader:true`. This will automatically add `fieldN` header to csv cells
4. If original csv source has no header row and the header definition is unknown. Use `noheader:true`. This will automatically add `fieldN` header to csv cells

@@ -597,3 +599,3 @@

the returned value will be used in result JSON object. returning `undefined` will not change result JSON object.
The returned value will be used in result JSON object. Returning `undefined` will not change result JSON object.

@@ -634,3 +636,3 @@ ### Flat key column

2. Checkout code from your github repo to your local machine.
3. Make code changes and dont forget add related tests.
3. Make code changes and don't forget add related tests.
4. Run `npm test` locally before pushing code back.

@@ -657,1 +659,41 @@ 5. Create a [Pull Request](https://help.github.com/articles/creating-a-pull-request/) on github.

# Browser Usage
To use `csvtojson` in browser is quite simple. There are two ways:
**1. Embed script directly into script tag**
There is a pre-built script located in `browser/csvtojson.min.js`. Simply include that file in a `script` tag in `index.html` page:
```html
<script src="node_modules/csvtojson/browser/csvtojson.min.js"></script>
<!-- or use cdn -->
<script src="https://cdn.rawgit.com/Keyang/node-csvtojson/d41f44aa/browser/csvtojson.min.js"></script>
```
then use a global `csv` function
```html
<script>
csv({
output: "csv"
})
.fromString("a,b,c\n1,2,3")
.then(function(result){
})
</script>
```
**2. Use webpack or browserify**
If a module packager is preferred, just simply `require("csvtojson")`:
```js
var csv=require("csvtojson");
// or with import
import * as csv from "csvtojson";
//then use csv as normal
```

@@ -19,3 +19,3 @@ import { Transform, TransformOptions, Readable } from "stream";

export class Converter extends Transform implements PromiseLike<Array<any>> {
export class Converter extends Transform implements PromiseLike<any[]> {
preRawData(onRawData: PreRawDataCallback): Converter {

@@ -119,7 +119,7 @@ this.runtime.preRawDataHook = onRawData;

// console.log("BBB");
setTimeout(() => {
//wait for next cycle to emit the errors.
setImmediate(() => {
this.result.processError(err);
this.emit("done", err);
}, 0);
});

@@ -126,0 +126,0 @@ });

@@ -8,4 +8,4 @@ import { TransformOptions } from "stream";

}
helper["csv"] = helper;
helper["Converter"] = Converter;
export =helper;
export =helper;

@@ -117,4 +117,14 @@ import { Converter } from "./Converter";

} else {
if (head.indexOf(".") > -1) {
if (conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) {
const headArr=head.split(".");
let jsonHead=true;
while(headArr.length>0){
const headCom=headArr.shift();
if (headCom!.length===0){
jsonHead=false;
break;
}
}
if (!jsonHead || conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;

@@ -129,2 +139,5 @@ } else {

}
if (conv.parseParam.nullObject ===true && value ==="null"){
value=null;
}
conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);

@@ -131,0 +144,0 @@ // flatSetter(resultJson, head, value);

@@ -69,3 +69,3 @@ export interface CSVParseParam {

/**
* Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). This ensures that misplaced quotes only break on row, and not all ensuing rows.
* Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text)
*/

@@ -77,2 +77,15 @@ alwaysSplitAtEOL: boolean;

output: "json" | "csv" | "line";
/**
* Convert string "null" to null object in JSON outputs. Default is false.
*/
nullObject:boolean;
/**
* Define the format required by downstream (this parameter does not work if objectMode is on). `line` -- json is emitted in a single line separated by a line breake like "json1\njson2" . `array` -- downstream requires array format like "[json1,json2]". Default is line.
*/
downstreamFormat: "line" | "array";
/**
* Define whether .then(callback) returns all JSON data in its callback. Default is true. Change to false to save memory if subscribing json lines.
*/
needEmitAll: boolean;
}

@@ -106,3 +119,6 @@

alwaysSplitAtEOL: false,
output: "json"
output: "json",
nullObject: false,
downstreamFormat:"line",
needEmitAll:true
}

@@ -109,0 +125,0 @@ if (!params) {

@@ -5,3 +5,3 @@ import { Converter } from "./Converter";

import CSVError from "./CSVError";
import { EOL } from "os";
export class Result {

@@ -19,3 +19,4 @@ private get needEmitLine(): boolean {

private get needEmitAll(): boolean {
return !!this.converter.parseRuntime.then;
return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll;
// return !!this.converter.parseRuntime.then;
}

@@ -26,2 +27,7 @@ private finalResult: any[] = [];

const startPos = this.converter.parseRuntime.parsedLineNumber;
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
if (startPos === 0) {
pushDownstream(this.converter, "[" + EOL);
}
}
// let prom: P<any>;

@@ -66,10 +72,16 @@ return new P((resolve, reject) => {

endProcess() {
if (this.needEmitAll) {
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
this.converter.parseRuntime.then.onfulfilled(this.finalResult);
if (this.needEmitAll) {
this.converter.parseRuntime.then.onfulfilled(this.finalResult);
}else{
this.converter.parseRuntime.then.onfulfilled([]);
}
}
}
if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
this.converter.parseRuntime.subscribe.onCompleted();
}
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
pushDownstream(this.converter, "]" + EOL);
}
}

@@ -101,11 +113,11 @@ }

// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
if (needPushDownstream){
pushDownstream(conv,nextLine);
if (needPushDownstream) {
pushDownstream(conv, nextLine);
}
while (offset<lines.length){
const line=lines[offset];
while (offset < lines.length) {
const line = lines[offset];
hook(line, conv.parseRuntime.parsedLineNumber + offset);
offset++;
if (needPushDownstream){
pushDownstream(conv,line);
if (needPushDownstream) {
pushDownstream(conv, line);
}

@@ -124,7 +136,7 @@ }

if (needPushDownstream) {
while (offset<lines.length) {
while (offset < lines.length) {
const line = lines[offset++];
pushDownstream(conv, line);
}
}

@@ -153,3 +165,4 @@ cb();

if (typeof res === "object" && !conv.options.objectMode) {
conv.push(JSON.stringify(res) + "\n", "utf8");
const data = JSON.stringify(res);
conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + EOL : EOL), "utf8");
} else {

@@ -156,0 +169,0 @@ conv.push(res);

@@ -78,5 +78,11 @@ import { CSVParseParam } from "./Parameters";

let count = 0;
let prev = "";
for (const c of e) {
if (c === quote) {
// count quotes only if previous character is not escape char
if (c === quote && prev !== this.escape) {
count++;
prev = "";
} else {
// save previous char to temp variable
prev = c;
}

@@ -83,0 +89,0 @@ }

@@ -297,3 +297,18 @@ import { Converter } from "../src/Converter";

it("should output ndjson format", function (done) {
it("should process escape chars when delimiter is between escaped quotes", function(done) {
var test_converter = new Converter({
escape: "\\"
});
var testData =
__dirname + "/data/dataWithSlashEscapeAndDelimiterBetweenQuotes";
var rs = fs.createReadStream(testData);
test_converter.then(function(res) {
assert.equal(res[0].raw, '"hello,"world"');
done();
});
rs.pipe(test_converter);
});
it("should output ndjson format", function(done) {
var conv = new Converter();

@@ -300,0 +315,0 @@ conv.fromString("a,b,c\n1,2,3\n4,5,6")

import csv from "../src";
var assert = require("assert");
import assert from "assert";
var fs = require("fs");

@@ -234,11 +234,91 @@ import { sandbox } from "sinon";

return csv({
headers:["exam_date","sample_no","status","sample_type","patient_id","last_name","first_name","gender_of_patient","patient_birth_date","patient_note","patient_department","accession_number","sample_site","physician","operator","department","note","test_order_code","draw_time","approval_status","approval_time","report_layout","patient_account_number","none_1","errors_detected_during_measurement","age","error_code_01","weight","error_code_02","height","error_code_03","hcg_beta_p","error_code_04","troponin_i_p","error_code_05","ck_mb_p","error_code_06","d_dimer_p","error_code_07","hscrp_p","error_code_08","myoglobin_p","error_code_09","nt_probnp","error_code_10","crp","error_code_11","bnp","error_code_12","tnt","error_code_13","demo_p","error_code_14","pct","error_code_15"]
headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"]
})
.fromFile(testData)
.fromFile(testData)
.then((d) => {
assert.equal(d.length, 2);
assert.equal(d[0].sample_no, "12669");
})
});
it ("should stream json string correctly",function(done){
const data=`a,b,c
1,2,3
4,5,6`
let hasLeftBracket=false;
let hasRightBracket=false;
csv({
downstreamFormat:"array"
})
.fromString(data)
.on("data",(d)=>{
const str=d.toString();
if (str[0]==="[" && str.length ===2){
hasLeftBracket=true;
}else if (str[0]==="]" && str.length===2){
hasRightBracket=true;
}else{
assert.equal(str[str.length-2],",");
}
})
.on("end",()=>{
assert.equal(hasLeftBracket,true);
assert.equal(hasRightBracket,true);
done();
})
})
it ("should stream json line correctly",function(done){
const data=`a,b,c
1,2,3
4,5,6`
csv({
downstreamFormat:"line"
})
.fromString(data)
.on("data",(d)=>{
const str=d.toString();
assert.notEqual(str[str.length-2],",");
})
.on("end",()=>{
done();
})
})
it ("should not send json if needEmitAll is false",async function(){
const data=`a,b,c
1,2,3
4,5,6`
return csv({
needEmitAll:false
})
.fromString(data)
.then((d)=>{
assert.equal(d.length,2);
assert.equal(d[0].sample_no,"12669");
assert(d.length===0);
})
});
})
it ("should convert null to null object",async function(){
const data=`a,b,c
null,2,3
4,5,6`
return csv({
nullObject:true
})
.fromString(data)
.then((d)=>{
assert.equal(d[0].a,null)
})
})
it ("should process period properly",async function(){
const data=`a..,b,c
1,2,3
4,5,6`
return csv({
})
.fromString(data)
.then((d)=>{
assert.equal(d[0]["a.."],1);
assert.equal(d[1]["a.."],4);
})
})
});

@@ -7,3 +7,2 @@ module.exports = workerMgr;

function workerMgr() {
var spawn = require("child_process").spawn;
var exports = {

@@ -10,0 +9,0 @@ initWorker: initWorker,

@@ -6,3 +6,3 @@ /// <reference types="node" />

import CSVError from "./CSVError";
export declare class Converter extends Transform implements PromiseLike<Array<any>> {
export declare class Converter extends Transform implements PromiseLike<any[]> {
options: TransformOptions;

@@ -9,0 +9,0 @@ preRawData(onRawData: PreRawDataCallback): Converter;

@@ -39,6 +39,7 @@ "use strict";

// console.log("BBB");
setTimeout(function () {
//wait for next cycle to emit the errors.
setImmediate(function () {
_this.result.processError(err);
_this.emit("done", err);
}, 0);
});
});

@@ -45,0 +46,0 @@ _this.once("done", function () {

@@ -1,1 +0,1 @@

{"version":3,"file":"Converter.js","sourceRoot":"","sources":["../src/Converter.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Converter.js","sourceRoot":"","sources":["../src/Converter.ts"],"names":[],"mappings":"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"}

@@ -6,4 +6,5 @@ "use strict";

};
helper["csv"] = helper;
helper["Converter"] = Converter_1.Converter;
module.exports = helper;
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,yCAAwC;AAExC,IAAM,MAAM,GAAG,UAAU,KAA8B,EAAE,OAA0B;IACjF,OAAO,IAAI,qBAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,WAAW,CAAC,GAAG,qBAAS,CAAC;AAChC,iBAAQ,MAAM,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,yCAAwC;AAExC,IAAM,MAAM,GAAG,UAAU,KAA8B,EAAE,OAA0B;IACjF,OAAO,IAAI,qBAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAA;AACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,WAAW,CAAC,GAAG,qBAAS,CAAC;AAChC,iBAAQ,MAAM,CAAC"}

@@ -117,3 +117,12 @@ "use strict";

if (head.indexOf(".") > -1) {
if (conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) {
var headArr = head.split(".");
var jsonHead = true;
while (headArr.length > 0) {
var headCom = headArr.shift();
if (headCom.length === 0) {
jsonHead = false;
break;
}
}
if (!jsonHead || conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;

@@ -130,2 +139,5 @@ }

}
if (conv.parseParam.nullObject === true && value === "null") {
value = null;
}
conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);

@@ -132,0 +144,0 @@ // flatSetter(resultJson, head, value);

@@ -1,1 +0,1 @@

{"version":3,"file":"lineToJson.js","sourceRoot":"","sources":["../src/lineToJson.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"lineToJson.js","sourceRoot":"","sources":["../src/lineToJson.ts"],"names":[],"mappings":"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"}

@@ -68,3 +68,3 @@ export interface CSVParseParam {

/**
* Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). This ensures that misplaced quotes only break on row, and not all ensuing rows.
* Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text)
*/

@@ -76,2 +76,14 @@ alwaysSplitAtEOL: boolean;

output: "json" | "csv" | "line";
/**
* Convert string "null" to null object in JSON outputs. Default is false.
*/
nullObject: boolean;
/**
* Define the format required by downstream (this parameter does not work if objectMode is on). `line` -- json is emitted in a single line separated by a line breake like "json1\njson2" . `array` -- downstream requires array format like "[json1,json2]". Default is line.
*/
downstreamFormat: "line" | "array";
/**
* Define whether .then(callback) returns all JSON data in its callback. Default is true. Change to false to save memory if subscribing json lines.
*/
needEmitAll: boolean;
}

@@ -78,0 +90,0 @@ export declare type CellParser = (item: string, head: string, resultRow: any, row: string[], columnIndex: number) => any;

@@ -22,3 +22,6 @@ "use strict";

alwaysSplitAtEOL: false,
output: "json"
output: "json",
nullObject: false,
downstreamFormat: "line",
needEmitAll: true
};

@@ -25,0 +28,0 @@ if (!params) {

@@ -1,1 +0,1 @@

{"version":3,"file":"Parameters.js","sourceRoot":"","sources":["../src/Parameters.ts"],"names":[],"mappings":";;AAoFA,qBAA4B,MAA+B;IACzD,IAAM,YAAY,GAAkB;QAClC,SAAS,EAAE,GAAG;QACd,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,eAAe;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,GAAG;QACX,SAAS,EAAE,EAAE;QACb,GAAG,EAAE,SAAS;QACd,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,MAAM;KACf,CAAA;IACD,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IACD,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC9B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5C;iBAAM;gBACL,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC;SACF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAlCD,kCAkCC"}
{"version":3,"file":"Parameters.js","sourceRoot":"","sources":["../src/Parameters.ts"],"names":[],"mappings":";;AAiGA,qBAA4B,MAA+B;IACzD,IAAM,YAAY,GAAkB;QAClC,SAAS,EAAE,GAAG;QACd,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,eAAe;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,GAAG;QACX,SAAS,EAAE,EAAE;QACb,GAAG,EAAE,SAAS;QACd,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAC,MAAM;QACvB,WAAW,EAAC,IAAI;KACjB,CAAA;IACD,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IACD,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC9B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5C;iBAAM;gBACL,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC;SACF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AArCD,kCAqCC"}

@@ -7,2 +7,3 @@ "use strict";

var bluebird_1 = __importDefault(require("bluebird"));
var os_1 = require("os");
var Result = /** @class */ (function () {

@@ -32,3 +33,4 @@ function Result(converter) {

get: function () {
return !!this.converter.parseRuntime.then;
return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll;
// return !!this.converter.parseRuntime.then;
},

@@ -41,2 +43,7 @@ enumerable: true,

var startPos = this.converter.parseRuntime.parsedLineNumber;
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
if (startPos === 0) {
pushDownstream(this.converter, "[" + os_1.EOL);
}
}
// let prom: P<any>;

@@ -77,6 +84,9 @@ return new bluebird_1.default(function (resolve, reject) {

Result.prototype.endProcess = function () {
if (this.needEmitAll) {
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
if (this.needEmitAll) {
this.converter.parseRuntime.then.onfulfilled(this.finalResult);
}
else {
this.converter.parseRuntime.then.onfulfilled([]);
}
}

@@ -86,2 +96,5 @@ if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {

}
if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") {
pushDownstream(this.converter, "]" + os_1.EOL);
}
};

@@ -149,3 +162,4 @@ return Result;

if (typeof res === "object" && !conv.options.objectMode) {
conv.push(JSON.stringify(res) + "\n", "utf8");
var data = JSON.stringify(res);
conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + os_1.EOL : os_1.EOL), "utf8");
}

@@ -152,0 +166,0 @@ else {

@@ -1,1 +0,1 @@

{"version":3,"file":"Result.js","sourceRoot":"","sources":["../src/Result.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../src/Result.ts"],"names":[],"mappings":"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"}

@@ -82,7 +82,14 @@ "use strict";

var count = 0;
var prev = "";
for (var _i = 0, e_1 = e; _i < e_1.length; _i++) {
var c = e_1[_i];
if (c === quote) {
// count quotes only if previous character is not escape char
if (c === quote && prev !== this.escape) {
count++;
prev = "";
}
else {
// save previous char to temp variable
prev = c;
}
}

@@ -89,0 +96,0 @@ if (count % 2 === 1) {

@@ -1,1 +0,1 @@

{"version":3,"file":"rowSplit.js","sourceRoot":"","sources":["../src/rowSplit.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"rowSplit.js","sourceRoot":"","sources":["../src/rowSplit.ts"],"names":[],"mappings":"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"}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var src_1 = __importDefault(require("../src"));
var assert = require("assert");
var fs = require("fs");
var sinon_1 = require("sinon");
var sb = sinon_1.sandbox.create();
describe("testCSVConverter3", function () {
afterEach(function () {
sb.restore();
});
it("should parse large csv file with UTF-8 without spliting characters", function (done) {
var testData = __dirname + "/data/large-utf8.csv";
var rs = fs.createReadStream(testData);
var csvConverter = src_1.default({});
var count = 0;
csvConverter.preRawData(function (csvRawData) {
assert(csvRawData.charCodeAt(0) < 2000);
return csvRawData;
});
csvConverter.on("data", function () {
count++;
});
csvConverter.then(function () {
assert(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should setup customise type convert function", function (done) {
src_1.default({
checkType: true,
colParser: {
"column1": "string",
"column5": function (item, head, resultRow, row, i) {
assert.equal(item, '{"hello":"world"}');
assert.equal(head, "column5"),
assert(resultRow);
assert(row);
assert.equal(i, 5);
return "hello world";
}
}
})
.fromFile(__dirname + "/data/dataWithType")
.subscribe(function (json) {
assert.equal(typeof json.column1, "string");
assert.equal(json.column5, "hello world");
assert.strictEqual(json["name#!"], false);
assert.strictEqual(json["column9"], true);
})
.on('done', function () {
done();
});
});
it("should accept pipe as quote", function (done) {
src_1.default({
quote: "|",
output: "csv"
})
.fromFile(__dirname + "/data/pipeAsQuote")
.subscribe(function (csv) {
assert.equal(csv[2], "blahhh, blah");
})
.on('done', function () {
done();
});
});
it("emit file not exists error when try to open a non-exists file", function () {
var called = false;
var cb = sb.spy(function (err) {
assert(err.toString().indexOf("File does not exist") > -1);
});
return src_1.default()
.fromFile("somefile")
.subscribe(function (csv) {
})
.on("error", cb)
.then(function () {
assert(false);
}, function (err) {
assert.equal(cb.callCount, 1);
});
});
it("should include column that is both included and excluded", function () {
return src_1.default({
includeColumns: /b/,
ignoreColumns: /a|b/
})
.fromString("a,b,c\n1,2,3\n4,5,6")
.subscribe(function (d) {
assert(d.b);
assert(!d.a);
});
});
it("should allow async preLine hook", function () {
return src_1.default()
.preFileLine(function (line) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(line + "changed");
}, 20);
});
})
.fromString("a,b\n1,2")
.subscribe(function (d) {
assert(d.bchanged);
assert.equal(d.bchanged, "2changed");
});
});
it("should allow async subscribe function", function () {
return src_1.default({ trim: true })
.fromString("a,b,c\n 1,2,3\n 4,5,6")
.subscribe(function (d) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
d.a = 10;
resolve();
}, 20);
});
})
.then(function (d) {
assert.equal(d[0].a, 10);
assert.equal(d[1].a, 10);
});
});
it("should propagate value to next then", function () {
return src_1.default({ trim: true })
.fromString("a,b,c\n 1,2,3\n 4,5,6")
.then(undefined, undefined)
.then(function (d) {
assert.equal(d.length, 2);
assert.equal(d[0].a, "1");
});
});
it("should propagate error to next then", function () {
return src_1.default({ trim: true })
.fromFile(__dirname + "/data/dataWithUnclosedQuotes")
.then(undefined, undefined)
.then(function () {
assert(false);
}, function (err) {
assert(err);
assert.equal(err.err, "unclosed_quote");
});
});
it("should fallback to text is number can not be parsed", function () {
return src_1.default({
colParser: {
"a": "number"
}
})
.fromString("a,b,c\n 1,2,3\n fefe,5,6")
.then(function (d) {
assert.strictEqual(d[0].a, 1);
assert.equal(d[1].a, "fefe");
});
});
it("should omit a column", function () {
return src_1.default({
colParser: {
"a": "omit"
}
})
.fromString("a,b,c\n 1,2,3\n fefe,5,6")
.then(function (d) {
assert.strictEqual(d[0].a, undefined);
assert.equal(d[1].a, undefined);
});
});
it("could turn off quote and should trim even quote is turned off", function () {
return src_1.default({
quote: "off",
trim: true
})
.fromString("a,b,c\n \"1\",\"2\",\"3\"\n \"fefe,5\",6")
.then(function (d) {
assert.equal(d[0].a, '"1"');
assert.equal(d[0].b, '"2"');
assert.equal(d[1].a, '"fefe');
assert.equal(d[1].b, '5"');
});
});
it("should allow ignoreEmpty with checkColumn", function () {
return src_1.default({
checkColumn: true,
ignoreEmpty: true
})
.fromString("date,altitude,airtime\n 2016-07-08,2000,23\n \n 2016-07-09,3000,43")
.then(function (data) {
}, function (err) {
console.log(err);
assert(!err);
});
});
it("should allow quotes without content", function () {
var data = "a|^^|^b^";
return src_1.default({
delimiter: '|',
quote: '^',
noheader: true,
})
.fromString(data)
.then(function (jsonObj) {
assert.equal(jsonObj[0].field2, "");
});
});
it("should parse header with quotes correctly", function () {
var testData = __dirname + "/data/csvWithUnclosedHeader";
return src_1.default({
headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"]
})
.fromFile(testData)
.then(function (d) {
assert.equal(d.length, 2);
assert.equal(d[0].sample_no, "12669");
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlcjMudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi90ZXN0L3Rlc3RDU1ZDb252ZXJ0ZXIzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQXlCO0FBQ3pCLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsK0JBQWdDO0FBRWhDLElBQU0sRUFBRSxHQUFHLGVBQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QixRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsU0FBUyxDQUFDO1FBQ1IsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsVUFBVSxJQUFJO1FBQ3JGLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUNsRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxZQUFZLEdBQUcsYUFBRyxDQUFDLEVBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxVQUFVO1lBQzFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEIsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxVQUFVLElBQUk7UUFDL0QsYUFBRyxDQUFDO1lBQ0YsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFNBQVMsRUFBRSxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO29CQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7d0JBQzNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQixPQUFPLGFBQWEsQ0FBQztnQkFDdkIsQ0FBQzthQUNGO1NBQ0YsQ0FBQzthQUNDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7YUFDMUMsU0FBUyxDQUFDLFVBQVUsSUFBSTtZQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxDQUFBO1FBQ1IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxVQUFVLElBQUk7UUFDOUMsYUFBRyxDQUFDO1lBQ0YsS0FBSyxFQUFFLEdBQUc7WUFDVixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUM7YUFDQyxRQUFRLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxVQUFVLEdBQUc7WUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxDQUFBO1FBQ1IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQywrREFBK0QsRUFBRTtRQUNsRSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFDLEdBQUc7WUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFHLEVBQUU7YUFDVCxRQUFRLENBQUMsVUFBVSxDQUFDO2FBQ3BCLFNBQVMsQ0FBQyxVQUFVLEdBQUc7UUFFeEIsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDZixJQUFJLENBQUM7WUFDSixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsQ0FBQyxFQUFFLFVBQUMsR0FBRztZQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUVOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDBEQUEwRCxFQUFFO1FBQzdELE9BQU8sYUFBRyxDQUFDO1lBQ1QsY0FBYyxFQUFFLEdBQUc7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQzthQUNDLFVBQVUsQ0FBQyxxQkFFWixDQUFDO2FBQ0EsU0FBUyxDQUFDLFVBQUMsQ0FBQztZQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE9BQU8sYUFBRyxFQUFFO2FBQ1QsV0FBVyxDQUFDLFVBQUMsSUFBSTtZQUNoQixPQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQ2pDLFVBQVUsQ0FBQztvQkFDVCxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFVCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQzthQUNELFVBQVUsQ0FBQyxVQUNkLENBQUM7YUFDRSxTQUFTLENBQUMsVUFBQyxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUE7SUFFTixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRTtRQUMxQyxPQUFPLGFBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN2QixVQUFVLENBQUMsNkJBRVIsQ0FBQzthQUNKLFNBQVMsQ0FBQyxVQUFDLENBQUM7WUFDWCxPQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQ2pDLFVBQVUsQ0FBQztvQkFDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMscUNBQXFDLEVBQUU7UUFDeEMsT0FBTyxhQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDdkIsVUFBVSxDQUFDLHlCQUVWLENBQUM7YUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUMxQixJQUFJLENBQUMsVUFBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUVOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHFDQUFxQyxFQUFFO1FBQ3hDLE9BQU8sYUFBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3ZCLFFBQVEsQ0FBQyxTQUFTLEdBQUcsOEJBQThCLENBQUM7YUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7YUFDMUIsSUFBSSxDQUFDO1lBQ0osTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2YsQ0FBQyxFQUFFLFVBQUMsR0FBYTtZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMscURBQXFELEVBQUU7UUFDeEQsT0FBTyxhQUFHLENBQUM7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLFFBQVE7YUFDZDtTQUNGLENBQUM7YUFDQyxVQUFVLENBQUMsNEJBRVAsQ0FBQzthQUNMLElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsc0JBQXNCLEVBQUU7UUFDekIsT0FBTyxhQUFHLENBQUM7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLE1BQU07YUFDWjtTQUNGLENBQUM7YUFDQyxVQUFVLENBQUMsNEJBRVAsQ0FBQzthQUNMLElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsK0RBQStELEVBQUU7UUFDbEUsT0FBTyxhQUFHLENBQUM7WUFDVCxLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQzthQUNDLFVBQVUsQ0FBQyw0Q0FFTCxDQUFDO2FBQ1AsSUFBSSxDQUFDLFVBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1FBQzlDLE9BQU8sYUFBRyxDQUFDO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQzthQUNDLFVBQVUsQ0FBQyw2RUFHSyxDQUFDO2FBQ2pCLElBQUksQ0FBQyxVQUFDLElBQUk7UUFFWCxDQUFDLEVBQUUsVUFBQyxHQUFHO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMscUNBQXFDLEVBQUU7UUFDeEMsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLE9BQU8sYUFBRyxDQUFDO1lBQ1QsU0FBUyxFQUFFLEdBQUc7WUFDZCxLQUFLLEVBQUUsR0FBRztZQUNWLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQzthQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUM7YUFDaEIsSUFBSSxDQUFDLFVBQUMsT0FBTztZQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1FBQzlDLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztRQUN6RCxPQUFPLGFBQUcsQ0FBQztZQUNULE9BQU8sRUFBQyxDQUFDLFdBQVcsRUFBQyxXQUFXLEVBQUMsUUFBUSxFQUFDLGFBQWEsRUFBQyxZQUFZLEVBQUMsV0FBVyxFQUFDLFlBQVksRUFBQyxtQkFBbUIsRUFBQyxvQkFBb0IsRUFBQyxjQUFjLEVBQUMsb0JBQW9CLEVBQUMsa0JBQWtCLEVBQUMsYUFBYSxFQUFDLFdBQVcsRUFBQyxVQUFVLEVBQUMsWUFBWSxFQUFDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxXQUFXLEVBQUMsaUJBQWlCLEVBQUMsZUFBZSxFQUFDLGVBQWUsRUFBQyx3QkFBd0IsRUFBQyxRQUFRLEVBQUMsb0NBQW9DLEVBQUMsS0FBSyxFQUFDLGVBQWUsRUFBQyxRQUFRLEVBQUMsZUFBZSxFQUFDLFFBQVEsRUFBQyxlQUFlLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxjQUFjLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxlQUFlLEVBQUMsV0FBVyxFQUFDLGVBQWUsRUFBQyxTQUFTLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxlQUFlLEVBQUMsV0FBVyxFQUFDLGVBQWUsRUFBQyxLQUFLLEVBQUMsZUFBZSxFQUFDLEtBQUssRUFBQyxlQUFlLEVBQUMsS0FBSyxFQUFDLGVBQWUsRUFBQyxRQUFRLEVBQUMsZUFBZSxFQUFDLEtBQUssRUFBQyxlQUFlLENBQUM7U0FDOXdCLENBQUM7YUFDRCxRQUFRLENBQUMsUUFBUSxDQUFDO2FBQ2xCLElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjc3YgZnJvbSBcIi4uL3NyY1wiO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG52YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG5pbXBvcnQgeyBzYW5kYm94IH0gZnJvbSBcInNpbm9uXCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4uL3NyYy9DU1ZFcnJvclwiO1xuY29uc3Qgc2IgPSBzYW5kYm94LmNyZWF0ZSgpO1xuZGVzY3JpYmUoXCJ0ZXN0Q1NWQ29udmVydGVyM1wiLCBmdW5jdGlvbiAoKSB7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2IucmVzdG9yZSgpO1xuICB9KTtcbiAgaXQoXCJzaG91bGQgcGFyc2UgbGFyZ2UgY3N2IGZpbGUgd2l0aCBVVEYtOCB3aXRob3V0IHNwbGl0aW5nIGNoYXJhY3RlcnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLXV0ZjguY3N2XCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IGNzdih7XG4gICAgfSk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIucHJlUmF3RGF0YShmdW5jdGlvbiAoY3N2UmF3RGF0YSkge1xuICAgICAgYXNzZXJ0KGNzdlJhd0RhdGEuY2hhckNvZGVBdCgwKSA8IDIwMDApO1xuICAgICAgcmV0dXJuIGNzdlJhd0RhdGE7XG4gICAgfSlcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkYXRhXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KGNvdW50ID09PSA1MjkwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuICBpdChcInNob3VsZCBzZXR1cCBjdXN0b21pc2UgdHlwZSBjb252ZXJ0IGZ1bmN0aW9uXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgY3N2KHtcbiAgICAgIGNoZWNrVHlwZTogdHJ1ZSxcbiAgICAgIGNvbFBhcnNlcjoge1xuICAgICAgICBcImNvbHVtbjFcIjogXCJzdHJpbmdcIixcbiAgICAgICAgXCJjb2x1bW41XCI6IGZ1bmN0aW9uIChpdGVtLCBoZWFkLCByZXN1bHRSb3csIHJvdywgaSkge1xuICAgICAgICAgIGFzc2VydC5lcXVhbChpdGVtLCAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4gICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWQsIFwiY29sdW1uNVwiKSxcbiAgICAgICAgICAgIGFzc2VydChyZXN1bHRSb3cpO1xuICAgICAgICAgIGFzc2VydChyb3cpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChpLCA1KTtcbiAgICAgICAgICByZXR1cm4gXCJoZWxsbyB3b3JsZFwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICAgIC5mcm9tRmlsZShfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoVHlwZVwiKVxuICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoanNvbikge1xuICAgICAgICBhc3NlcnQuZXF1YWwodHlwZW9mIGpzb24uY29sdW1uMSwgXCJzdHJpbmdcIik7XG4gICAgICAgIGFzc2VydC5lcXVhbChqc29uLmNvbHVtbjUsIFwiaGVsbG8gd29ybGRcIik7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChqc29uW1wibmFtZSMhXCJdLCBmYWxzZSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChqc29uW1wiY29sdW1uOVwiXSwgdHJ1ZSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdkb25lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KVxuICBpdChcInNob3VsZCBhY2NlcHQgcGlwZSBhcyBxdW90ZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIGNzdih7XG4gICAgICBxdW90ZTogXCJ8XCIsXG4gICAgICBvdXRwdXQ6IFwiY3N2XCJcbiAgICB9KVxuICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvcGlwZUFzUXVvdGVcIilcbiAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGNzdikge1xuICAgICAgICBhc3NlcnQuZXF1YWwoY3N2WzJdLCBcImJsYWhoaCwgYmxhaFwiKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2RvbmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRvbmUoKVxuICAgICAgfSk7XG4gIH0pXG4gIGl0KFwiZW1pdCBmaWxlIG5vdCBleGlzdHMgZXJyb3Igd2hlbiB0cnkgdG8gb3BlbiBhIG5vbi1leGlzdHMgZmlsZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNiID0gc2Iuc3B5KChlcnIpID0+IHtcbiAgICAgIGFzc2VydChlcnIudG9TdHJpbmcoKS5pbmRleE9mKFwiRmlsZSBkb2VzIG5vdCBleGlzdFwiKSA+IC0xKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY3N2KClcbiAgICAgIC5mcm9tRmlsZShcInNvbWVmaWxlXCIpXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChjc3YpIHtcblxuICAgICAgfSlcbiAgICAgIC5vbihcImVycm9yXCIsIGNiKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoY2IuY2FsbENvdW50LCAxKTtcbiAgICAgIH0pXG5cbiAgfSlcbiAgaXQoXCJzaG91bGQgaW5jbHVkZSBjb2x1bW4gdGhhdCBpcyBib3RoIGluY2x1ZGVkIGFuZCBleGNsdWRlZFwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBpbmNsdWRlQ29sdW1uczogL2IvLFxuICAgICAgaWdub3JlQ29sdW1uczogL2F8Yi9cbiAgICB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4xLDIsM1xuNCw1LDZgKVxuICAgICAgLnN1YnNjcmliZSgoZCkgPT4ge1xuICAgICAgICBhc3NlcnQoZC5iKTtcbiAgICAgICAgYXNzZXJ0KCFkLmEpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJzaG91bGQgYWxsb3cgYXN5bmMgcHJlTGluZSBob29rXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KClcbiAgICAgIC5wcmVGaWxlTGluZSgobGluZSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShsaW5lICsgXCJjaGFuZ2VkXCIpXG4gICAgICAgICAgfSwgMjApO1xuXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYlxuMSwyYClcbiAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0KGQuYmNoYW5nZWQpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZC5iY2hhbmdlZCwgXCIyY2hhbmdlZFwiKTtcbiAgICAgIH0pXG5cbiAgfSlcblxuICBpdChcInNob3VsZCBhbGxvdyBhc3luYyBzdWJzY3JpYmUgZnVuY3Rpb25cIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3YoeyB0cmltOiB0cnVlIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgICAxLDIsM1xuICAgIDQsNSw2YClcbiAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGQuYSA9IDEwO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAxMCk7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIDEwKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIHByb3BhZ2F0ZSB2YWx1ZSB0byBuZXh0IHRoZW5cIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3YoeyB0cmltOiB0cnVlIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgMSwyLDNcbiAgNCw1LDZgKVxuICAgICAgLnRoZW4odW5kZWZpbmVkLCB1bmRlZmluZWQpXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZC5sZW5ndGgsIDIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCBcIjFcIik7XG4gICAgICB9KVxuXG4gIH0pXG4gIGl0KFwic2hvdWxkIHByb3BhZ2F0ZSBlcnJvciB0byBuZXh0IHRoZW5cIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3YoeyB0cmltOiB0cnVlIH0pXG4gICAgICAuZnJvbUZpbGUoX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpXG4gICAgICAudGhlbih1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKVxuICAgICAgfSwgKGVycjogQ1NWRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0KGVycik7XG4gICAgICAgIGFzc2VydC5lcXVhbChlcnIuZXJyLCBcInVuY2xvc2VkX3F1b3RlXCIpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJzaG91bGQgZmFsbGJhY2sgdG8gdGV4dCBpcyBudW1iZXIgY2FuIG5vdCBiZSBwYXJzZWRcIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiYVwiOiBcIm51bWJlclwiXG4gICAgICB9XG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGIsY1xuICAxLDIsM1xuICBmZWZlLDUsNmApXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZFswXS5hLCAxKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgXCJmZWZlXCIpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJzaG91bGQgb21pdCBhIGNvbHVtblwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBjb2xQYXJzZXI6IHtcbiAgICAgICAgXCJhXCI6IFwib21pdFwiXG4gICAgICB9XG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGIsY1xuICAxLDIsM1xuICBmZWZlLDUsNmApXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZFswXS5hLCB1bmRlZmluZWQpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFsxXS5hLCB1bmRlZmluZWQpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJjb3VsZCB0dXJuIG9mZiBxdW90ZSBhbmQgc2hvdWxkIHRyaW0gZXZlbiBxdW90ZSBpcyB0dXJuZWQgb2ZmXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIHF1b3RlOiBcIm9mZlwiLFxuICAgICAgdHJpbTogdHJ1ZVxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgXCIxXCIsXCIyXCIsXCIzXCJcbiAgXCJmZWZlLDVcIiw2YClcbiAgICAgIC50aGVuKChkKSA9PiB7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzBdLmEsICdcIjFcIicpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5iLCAnXCIyXCInKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgJ1wiZmVmZScpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFsxXS5iLCAnNVwiJyk7XG4gICAgICB9KVxuICB9KVxuICBpdChcInNob3VsZCBhbGxvdyBpZ25vcmVFbXB0eSB3aXRoIGNoZWNrQ29sdW1uXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGNoZWNrQ29sdW1uOiB0cnVlLFxuICAgICAgaWdub3JlRW1wdHk6IHRydWVcbiAgICB9KVxuICAgICAgLmZyb21TdHJpbmcoYGRhdGUsYWx0aXR1ZGUsYWlydGltZVxuICAgIDIwMTYtMDctMDgsMjAwMCwyM1xuICAgIFxuICAgIDIwMTYtMDctMDksMzAwMCw0M2ApXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuXG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIGFzc2VydCghZXJyKTtcbiAgICAgIH0pXG4gIH0pO1xuICBpdChcInNob3VsZCBhbGxvdyBxdW90ZXMgd2l0aG91dCBjb250ZW50XCIsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gXCJhfF5efF5iXlwiO1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgZGVsaW1pdGVyOiAnfCcsXG4gICAgICBxdW90ZTogJ14nLFxuICAgICAgbm9oZWFkZXI6IHRydWUsXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGRhdGEpXG4gICAgICAudGhlbigoanNvbk9iaikgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS5maWVsZDIsIFwiXCIpO1xuICAgICAgfSk7XG4gIH0pXG4gIGl0KFwic2hvdWxkIHBhcnNlIGhlYWRlciB3aXRoIHF1b3RlcyBjb3JyZWN0bHlcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvY3N2V2l0aFVuY2xvc2VkSGVhZGVyXCI7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBoZWFkZXJzOltcImV4YW1fZGF0ZVwiLFwic2FtcGxlX25vXCIsXCJzdGF0dXNcIixcInNhbXBsZV90eXBlXCIsXCJwYXRpZW50X2lkXCIsXCJsYXN0X25hbWVcIixcImZpcnN0X25hbWVcIixcImdlbmRlcl9vZl9wYXRpZW50XCIsXCJwYXRpZW50X2JpcnRoX2RhdGVcIixcInBhdGllbnRfbm90ZVwiLFwicGF0aWVudF9kZXBhcnRtZW50XCIsXCJhY2Nlc3Npb25fbnVtYmVyXCIsXCJzYW1wbGVfc2l0ZVwiLFwicGh5c2ljaWFuXCIsXCJvcGVyYXRvclwiLFwiZGVwYXJ0bWVudFwiLFwibm90ZVwiLFwidGVzdF9vcmRlcl9jb2RlXCIsXCJkcmF3X3RpbWVcIixcImFwcHJvdmFsX3N0YXR1c1wiLFwiYXBwcm92YWxfdGltZVwiLFwicmVwb3J0X2xheW91dFwiLFwicGF0aWVudF9hY2NvdW50X251bWJlclwiLFwibm9uZV8xXCIsXCJlcnJvcnNfZGV0ZWN0ZWRfZHVyaW5nX21lYXN1cmVtZW50XCIsXCJhZ2VcIixcImVycm9yX2NvZGVfMDFcIixcIndlaWdodFwiLFwiZXJyb3JfY29kZV8wMlwiLFwiaGVpZ2h0XCIsXCJlcnJvcl9jb2RlXzAzXCIsXCJoY2dfYmV0YV9wXCIsXCJlcnJvcl9jb2RlXzA0XCIsXCJ0cm9wb25pbl9pX3BcIixcImVycm9yX2NvZGVfMDVcIixcImNrX21iX3BcIixcImVycm9yX2NvZGVfMDZcIixcImRfZGltZXJfcFwiLFwiZXJyb3JfY29kZV8wN1wiLFwiaHNjcnBfcFwiLFwiZXJyb3JfY29kZV8wOFwiLFwibXlvZ2xvYmluX3BcIixcImVycm9yX2NvZGVfMDlcIixcIm50X3Byb2JucFwiLFwiZXJyb3JfY29kZV8xMFwiLFwiY3JwXCIsXCJlcnJvcl9jb2RlXzExXCIsXCJibnBcIixcImVycm9yX2NvZGVfMTJcIixcInRudFwiLFwiZXJyb3JfY29kZV8xM1wiLFwiZGVtb19wXCIsXCJlcnJvcl9jb2RlXzE0XCIsXCJwY3RcIixcImVycm9yX2NvZGVfMTVcIl1cbiAgICB9KVxuICAgIC5mcm9tRmlsZSh0ZXN0RGF0YSlcbiAgICAudGhlbigoZCk9PntcbiAgICAgIGFzc2VydC5lcXVhbChkLmxlbmd0aCwyKTtcbiAgICAgIGFzc2VydC5lcXVhbChkWzBdLnNhbXBsZV9ubyxcIjEyNjY5XCIpO1xuICAgIH0pXG4gICAgXG4gIH0pO1xufSk7XG4iXX0=
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var bluebird_1 = __importDefault(require("bluebird"));
var Result = /** @class */ (function () {
function Result(converter) {
this.converter = converter;
this.finalResult = [];
}
Object.defineProperty(Result.prototype, "needEmitLine", {
get: function () {
return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Result.prototype, "needPushDownstream", {
get: function () {
if (this._needPushDownstream === undefined) {
this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0;
}
return this._needPushDownstream;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Result.prototype, "needEmitAll", {
get: function () {
return !!this.converter.parseRuntime.then;
},
enumerable: true,
configurable: true
});
Result.prototype.processResult = function (resultLines) {
var _this = this;
var startPos = this.converter.parseRuntime.parsedLineNumber;
// let prom: P<any>;
return new bluebird_1.default(function (resolve, reject) {
if (_this.needEmitLine) {
processLineByLine(resultLines, _this.converter, 0, _this.needPushDownstream, function (err) {
if (err) {
reject(err);
}
else {
_this.appendFinalResult(resultLines);
resolve();
}
});
// resolve();
}
else {
_this.appendFinalResult(resultLines);
resolve();
}
});
};
Result.prototype.appendFinalResult = function (lines) {
if (this.needEmitAll) {
this.finalResult = this.finalResult.concat(lines);
}
this.converter.parseRuntime.parsedLineNumber += lines.length;
};
Result.prototype.processError = function (err) {
if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) {
this.converter.parseRuntime.subscribe.onError(err);
}
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) {
this.converter.parseRuntime.then.onrejected(err);
}
};
Result.prototype.endProcess = function () {
if (this.needEmitAll) {
if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
this.converter.parseRuntime.then.onfulfilled(this.finalResult);
}
}
if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
this.converter.parseRuntime.subscribe.onCompleted();
}
};
return Result;
}());
exports.Result = Result;
function processLineByLine(lines, conv, offset, needPushDownstream, cb) {
if (offset >= lines.length) {
cb();
}
else {
if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) {
var hook_1 = conv.parseRuntime.subscribe.onNext;
var nextLine_1 = lines[offset];
var res = hook_1(nextLine_1, conv.parseRuntime.parsedLineNumber + offset);
offset++;
// if (isAsync === undefined) {
if (res && res.then) {
res.then(function () {
processRecursive(lines, hook_1, conv, offset, needPushDownstream, cb, nextLine_1);
}, cb);
}
else {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
if (needPushDownstream) {
pushDownstream(conv, nextLine_1);
}
while (offset < lines.length) {
var line = lines[offset];
hook_1(line, conv.parseRuntime.parsedLineNumber + offset);
offset++;
if (needPushDownstream) {
pushDownstream(conv, line);
}
}
cb();
}
// } else if (isAsync === true) {
// (res as PromiseLike<void>).then(function () {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true);
// }, cb);
// } else if (isAsync === false) {
// processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
// }
}
else {
if (needPushDownstream) {
while (offset < lines.length) {
var line = lines[offset++];
pushDownstream(conv, line);
}
}
cb();
}
}
}
function processRecursive(lines, hook, conv, offset, needPushDownstream, cb, res) {
if (needPushDownstream) {
pushDownstream(conv, res);
}
processLineByLine(lines, conv, offset, needPushDownstream, cb);
}
function pushDownstream(conv, res) {
if (typeof res === "object" && !conv.options.objectMode) {
conv.push(JSON.stringify(res) + "\n", "utf8");
}
else {
conv.push(res);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsc0RBQXlCO0FBR3pCO0lBZUUsZ0JBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFEaEMsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUFDWSxDQUFDO0lBZDdDLHNCQUFZLGdDQUFZO2FBQXhCO1lBQ0UsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtRQUM3SCxDQUFDOzs7T0FBQTtJQUVELHNCQUFZLHNDQUFrQjthQUE5QjtZQUNFLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUMzSDtZQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2xDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQVksK0JBQVc7YUFBdkI7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFHRCw4QkFBYSxHQUFiLFVBQWMsV0FBZ0M7UUFBOUMsaUJBeUJDO1FBeEJDLElBQU0sUUFBUSxHQUFHLElBQUksQ0FB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QUU7Z0JBQ3RCLE9BQU8sTUFBTSxHQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQzFCLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUM3QixjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUM1QjthQUVGO1lBQ0QsRUFBRSxFQUFFLENBQUM7U0FDTjtLQUVGO0FBQ0gsQ0FBQztBQUVELDBCQUNFLEtBQTBCLEVBQzFCLElBQWlFLEVBQ2pFLElBQWUsRUFDZixNQUFjLEVBQ2Qsa0JBQTJCLEVBQzNCLEVBQWtCLEVBQ2xCLEdBQXNCO0lBRXRCLElBQUksa0JBQWtCLEVBQUU7UUFDdEIsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztLQUMzQjtJQUNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFDRCx3QkFBd0IsSUFBZSxFQUFFLEdBQXNCO0lBQzdELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMvQztTQUFNO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNoQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmltcG9ydCB7IFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuXG5leHBvcnQgY2xhc3MgUmVzdWx0IHtcbiAgcHJpdmF0ZSBnZXQgbmVlZEVtaXRMaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgJiYgISF0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uTmV4dCB8fCB0aGlzLm5lZWRQdXNoRG93bnN0cmVhbVxuICB9XG4gIHByaXZhdGUgX25lZWRQdXNoRG93bnN0cmVhbT86IGJvb2xlYW47XG4gIHByaXZhdGUgZ2V0IG5lZWRQdXNoRG93bnN0cmVhbSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX25lZWRQdXNoRG93bnN0cmVhbSA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImRhdGFcIikubGVuZ3RoID4gMCB8fCB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJyZWFkYWJsZVwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtO1xuICB9XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0QWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS50aGVuO1xuICB9XG4gIHByaXZhdGUgZmluYWxSZXN1bHQ6IGFueVtdID0gW107XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udmVydGVyOiBDb252ZXJ0ZXIpIHsgfVxuICBwcm9jZXNzUmVzdWx0KHJlc3VsdExpbmVzOiBQcm9jZXNzTGluZVJlc3VsdFtdKTogUDxhbnk+IHtcbiAgICBjb25zdCBzdGFydFBvcyA9IHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5wYXJzZWRMaW5lTnVtYmVyO1xuICAgIC8vIGxldCBwcm9tOiBQPGFueT47XG4gICAgcmV0dXJuIG5ldyBQKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLm5lZWRFbWl0TGluZSkge1xuICAgICAgICBwcm9jZXNzTGluZUJ5TGluZShcbiAgICAgICAgICByZXN1bHRMaW5lcyxcbiAgICAgICAgICB0aGlzLmNvbnZlcnRlcixcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMubmVlZFB1c2hEb3duc3RyZWFtLFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmFwcGVuZEZpbmFsUmVzdWx0KHJlc3VsdExpbmVzKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgLy8gcmVzb2x2ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hcHBlbmRGaW5hbFJlc3VsdChyZXN1bHRMaW5lcyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGFwcGVuZEZpbmFsUmVzdWx0KGxpbmVzOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLm5lZWRFbWl0QWxsKSB7XG4gICAgICB0aGlzLmZpbmFsUmVzdWx0ID0gdGhpcy5maW5hbFJlc3VsdC5jb25jYXQobGluZXMpO1xuICAgIH1cbiAgICB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArPSBsaW5lcy5sZW5ndGg7XG4gIH1cbiAgcHJvY2Vzc0Vycm9yKGVycjogQ1NWRXJyb3IpIHtcbiAgICBpZiAodGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZSAmJiB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uRXJyb3IpIHtcbiAgICAgIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25FcnJvcihlcnIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25yZWplY3RlZCkge1xuICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25yZWplY3RlZChlcnIpO1xuICAgIH1cbiAgfVxuICBlbmRQcm9jZXNzKCkge1xuICAgIGlmICh0aGlzLm5lZWRFbWl0QWxsKSB7XG4gICAgICBpZiAodGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQpIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQodGhpcy5maW5hbFJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlICYmIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25Db21wbGV0ZWQpIHtcbiAgICAgIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25Db21wbGV0ZWQoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0xpbmVCeUxpbmUoXG4gIGxpbmVzOiBQcm9jZXNzTGluZVJlc3VsdFtdLFxuXG4gIGNvbnY6IENvbnZlcnRlcixcbiAgb2Zmc2V0OiBudW1iZXIsXG4gIG5lZWRQdXNoRG93bnN0cmVhbTogYm9vbGVhbixcbiAgY2I6IChlcnI/KSA9PiB2b2lkLFxuKSB7XG4gIGlmIChvZmZzZXQgPj0gbGluZXMubGVuZ3RoKSB7XG4gICAgY2IoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY29udi5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlICYmIGNvbnYucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbk5leHQpIHtcbiAgICAgIGNvbnN0IGhvb2sgPSBjb252LnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25OZXh0O1xuICAgICAgY29uc3QgbmV4dExpbmUgPSBsaW5lc1tvZmZzZXRdO1xuICAgICAgY29uc3QgcmVzID0gaG9vayhuZXh0TGluZSwgY29udi5wYXJzZVJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCk7XG4gICAgICBvZmZzZXQrKztcbiAgICAgIC8vIGlmIChpc0FzeW5jID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcbiAgICAgICAgcmVzLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHByb2Nlc3NSZWN1cnNpdmUobGluZXMsIGhvb2ssIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYiwgbmV4dExpbmUpO1xuICAgICAgICB9LCBjYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwcm9jZXNzUmVjdXJzaXZlKGxpbmVzLCBob29rLCBjb252LCBvZmZzZXQsIG5lZWRQdXNoRG93bnN0cmVhbSwgY2IsIG5leHRMaW5lLCBmYWxzZSk7XG4gICAgICAgIGlmIChuZWVkUHVzaERvd25zdHJlYW0pe1xuICAgICAgICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsbmV4dExpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChvZmZzZXQ8bGluZXMubGVuZ3RoKXtcbiAgICAgICAgICBjb25zdCBsaW5lPWxpbmVzW29mZnNldF07XG4gICAgICAgICAgaG9vayhsaW5lLCBjb252LnBhcnNlUnVudGltZS5wYXJzZWRMaW5lTnVtYmVyICsgb2Zmc2V0KTtcbiAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgICBpZiAobmVlZFB1c2hEb3duc3RyZWFtKXtcbiAgICAgICAgICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsbGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG4gICAgICAvLyB9IGVsc2UgaWYgKGlzQXN5bmMgPT09IHRydWUpIHtcbiAgICAgIC8vICAgKHJlcyBhcyBQcm9taXNlTGlrZTx2b2lkPikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyAgICAgcHJvY2Vzc1JlY3Vyc2l2ZShsaW5lcywgaG9vaywgY29udiwgb2Zmc2V0LCBuZWVkUHVzaERvd25zdHJlYW0sIGNiLCBuZXh0TGluZSwgdHJ1ZSk7XG4gICAgICAvLyAgIH0sIGNiKTtcbiAgICAgIC8vIH0gZWxzZSBpZiAoaXNBc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgIC8vICAgcHJvY2Vzc1JlY3Vyc2l2ZShsaW5lcywgaG9vaywgY29udiwgb2Zmc2V0LCBuZWVkUHVzaERvd25zdHJlYW0sIGNiLCBuZXh0TGluZSwgZmFsc2UpO1xuICAgICAgLy8gfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVlZFB1c2hEb3duc3RyZWFtKSB7XG4gICAgICAgIHdoaWxlIChvZmZzZXQ8bGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW29mZnNldCsrXTtcbiAgICAgICAgICBwdXNoRG93bnN0cmVhbShjb252LCBsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIGNiKCk7XG4gICAgfVxuXG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlY3Vyc2l2ZShcbiAgbGluZXM6IFByb2Nlc3NMaW5lUmVzdWx0W10sXG4gIGhvb2s6IChkYXRhOiBhbnksIGxpbmVOdW1iZXI6IG51bWJlcikgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+LFxuICBjb252OiBDb252ZXJ0ZXIsXG4gIG9mZnNldDogbnVtYmVyLFxuICBuZWVkUHVzaERvd25zdHJlYW06IGJvb2xlYW4sXG4gIGNiOiAoZXJyPykgPT4gdm9pZCxcbiAgcmVzOiBQcm9jZXNzTGluZVJlc3VsdCxcbikge1xuICBpZiAobmVlZFB1c2hEb3duc3RyZWFtKSB7XG4gICAgcHVzaERvd25zdHJlYW0oY29udiwgcmVzKTtcbiAgfVxuICBwcm9jZXNzTGluZUJ5TGluZShsaW5lcywgY29udiwgb2Zmc2V0LCBuZWVkUHVzaERvd25zdHJlYW0sIGNiKTtcbn1cbmZ1bmN0aW9uIHB1c2hEb3duc3RyZWFtKGNvbnY6IENvbnZlcnRlciwgcmVzOiBQcm9jZXNzTGluZVJlc3VsdCkge1xuICBpZiAodHlwZW9mIHJlcyA9PT0gXCJvYmplY3RcIiAmJiAhY29udi5vcHRpb25zLm9iamVjdE1vZGUpIHtcbiAgICBjb252LnB1c2goSlNPTi5zdHJpbmdpZnkocmVzKSArIFwiXFxuXCIsIFwidXRmOFwiKTtcbiAgfSBlbHNlIHtcbiAgICBjb252LnB1c2gocmVzKTtcbiAgfVxufSJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function initParseRuntime(converter) {
var params = converter.parseParam;
var rtn = {
needProcessIgnoreColumn: false,
needProcessIncludeColumn: false,
selectedColumns: undefined,
ended: false,
hasError: false,
error: undefined,
delimiter: converter.parseParam.delimiter,
eol: converter.parseParam.eol,
columnConv: [],
headerType: [],
headerTitle: [],
headerFlag: [],
headers: undefined,
started: false,
parsedLineNumber: 0,
columnValueSetter: [],
};
if (params.ignoreColumns) {
rtn.needProcessIgnoreColumn = true;
}
if (params.includeColumns) {
rtn.needProcessIncludeColumn = true;
}
return rtn;
}
exports.initParseRuntime = initParseRuntime;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJzZVJ1bnRpbWUudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUGFyc2VSdW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOERBLDBCQUFpQyxTQUFvQjtJQUNuRCxJQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3BDLElBQU0sR0FBRyxHQUFpQjtRQUN4Qix1QkFBdUIsRUFBRSxLQUFLO1FBQzlCLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsZUFBZSxFQUFFLFNBQVM7UUFDMUIsS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVM7UUFDekMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztRQUM3QixVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsV0FBVyxFQUFFLEVBQUU7UUFDZixVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUE7SUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDeEIsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztLQUNwQztJQUNELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBM0JELDRDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENTVlBhcnNlUGFyYW0sIENlbGxQYXJzZXIgfSBmcm9tIFwiLi9QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIsIFByZVJhd0RhdGFDYWxsYmFjaywgUHJlRmlsZUxpbmVDYWxsYmFjayB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlUnVudGltZSB7XG4gIC8qKlxuICAgKiBJZiBuZWVkIGNvbnZlcnQgaWdub3JlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0lnbm9yZUNvbHVtbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIG5lZWQgY29udmVydCBpbmNsdWRlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0luY2x1ZGVDb2x1bW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiB0aGUgaW5kZXhlcyBvZiBjb2x1bW5zIHRvIHJlc2VydmUsIHVuZGVmaW5lZCBtZWFucyByZXNlcnZlIGFsbCwgW10gbWVhbnMgaGlkZSBhbGxcbiAgICovXG4gIHNlbGVjdGVkQ29sdW1ucz86IG51bWJlcltdO1xuICBlbmRlZDogYm9vbGVhbjtcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBkZWxpbWl0ZXJcbiAgICovXG4gIGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBlb2xcbiAgICovXG4gIGVvbD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnZlcnRlciBmdW5jdGlvbiBmb3IgYSBjb2x1bW4uIFBvcHVsYXRlZCBhdCBydW50aW1lLlxuICAgKi9cbiAgY29sdW1uQ29udjogKENlbGxQYXJzZXIgfCBudWxsKVtdLFxuICBoZWFkZXJUeXBlOiBhbnlbXSxcbiAgaGVhZGVyVGl0bGU6IHN0cmluZ1tdLFxuICBoZWFkZXJGbGFnOiBhbnlbXSxcbiAgLyoqXG4gICAqIEluZmVycmVkIGhlYWRlcnNcbiAgICovXG4gIGhlYWRlcnM/OiBhbnlbXSxcbiAgY3N2TGluZUJ1ZmZlcj86IEJ1ZmZlcixcbiAgXG4gIC8qKlxuICAgKiBhZnRlciBmaXJzdCBjaHVuayBvZiBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgZW1pdHRlZCwgc3RhcnRlZCB3aWxsIGJlY29tZSB0cnVlLlxuICAgKi9cbiAgc3RhcnRlZDogYm9vbGVhbixcbiAgcHJlUmF3RGF0YUhvb2s/OiBQcmVSYXdEYXRhQ2FsbGJhY2ssXG4gIHByZUZpbGVMaW5lSG9vaz86IFByZUZpbGVMaW5lQ2FsbGJhY2ssXG4gIHBhcnNlZExpbmVOdW1iZXI6IG51bWJlcixcblxuICBjb2x1bW5WYWx1ZVNldHRlcjogRnVuY3Rpb25bXTtcbiAgc3Vic2NyaWJlPzoge1xuICAgIG9uTmV4dD86IChkYXRhOiBhbnksIGxpbmVOdW1iZXI6bnVtYmVyKSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG4gICAgb25FcnJvcj86IChlcnI6IENTVkVycm9yKSA9PiB2b2lkO1xuICAgIG9uQ29tcGxldGVkPzogKCkgPT4gdm9pZDtcbiAgfTtcbiAgdGhlbj86IHtcbiAgICBvbmZ1bGZpbGxlZDogKHZhbHVlOiBhbnlbXSkgPT4gYW55O1xuICAgIG9ucmVqZWN0ZWQ6IChlcnI6IEVycm9yKSA9PiBhbnk7XG4gIH1cblxufVxuZXhwb3J0IGZ1bmN0aW9uIGluaXRQYXJzZVJ1bnRpbWUoY29udmVydGVyOiBDb252ZXJ0ZXIpOiBQYXJzZVJ1bnRpbWUge1xuICBjb25zdCBwYXJhbXMgPSBjb252ZXJ0ZXIucGFyc2VQYXJhbTtcbiAgY29uc3QgcnRuOiBQYXJzZVJ1bnRpbWUgPSB7XG4gICAgbmVlZFByb2Nlc3NJZ25vcmVDb2x1bW46IGZhbHNlLFxuICAgIG5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbjogZmFsc2UsXG4gICAgc2VsZWN0ZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgZW5kZWQ6IGZhbHNlLFxuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIGRlbGltaXRlcjogY29udmVydGVyLnBhcnNlUGFyYW0uZGVsaW1pdGVyLFxuICAgIGVvbDogY29udmVydGVyLnBhcnNlUGFyYW0uZW9sLFxuICAgIGNvbHVtbkNvbnY6IFtdLFxuICAgIGhlYWRlclR5cGU6IFtdLFxuICAgIGhlYWRlclRpdGxlOiBbXSxcbiAgICBoZWFkZXJGbGFnOiBbXSxcbiAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgc3RhcnRlZDogZmFsc2UsXG4gICAgcGFyc2VkTGluZU51bWJlcjogMCxcbiAgICBjb2x1bW5WYWx1ZVNldHRlcjogW10sXG4gIH1cbiAgaWYgKHBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSWdub3JlQ29sdW1uID0gdHJ1ZTtcbiAgfVxuICBpZiAocGFyYW1zLmluY2x1ZGVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbiA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJ0bjtcbn0iXX0=

Sorry, the diff of this file is too big to display

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Processor_1 = require("./Processor");
var bluebird_1 = __importDefault(require("bluebird"));
var dataClean_1 = require("./dataClean");
var getEol_1 = __importDefault(require("./getEol"));
var fileline_1 = require("./fileline");
var util_1 = require("./util");
var rowSplit_1 = require("./rowSplit");
var lineToJson_1 = __importDefault(require("./lineToJson"));
var CSVError_1 = __importDefault(require("./CSVError"));
var ProcessorLocal = /** @class */ (function (_super) {
__extends(ProcessorLocal, _super);
function ProcessorLocal() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.rowSplit = new rowSplit_1.RowSplit(_this.converter);
_this.eolEmitted = false;
_this._needEmitEol = undefined;
_this.headEmitted = false;
_this._needEmitHead = undefined;
return _this;
}
ProcessorLocal.prototype.flush = function () {
var _this = this;
if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
var buf = this.runtime.csvLineBuffer;
this.runtime.csvLineBuffer = undefined;
return this.process(buf, true)
.then(function (res) {
if (_this.runtime.csvLineBuffer && _this.runtime.csvLineBuffer.length > 0) {
return bluebird_1.default.reject(CSVError_1.default.unclosed_quote(_this.runtime.parsedLineNumber, _this.runtime.csvLineBuffer.toString()));
}
else {
return bluebird_1.default.resolve(res);
}
});
}
else {
return bluebird_1.default.resolve([]);
}
};
ProcessorLocal.prototype.destroy = function () {
return bluebird_1.default.resolve();
};
Object.defineProperty(ProcessorLocal.prototype, "needEmitEol", {
get: function () {
if (this._needEmitEol === undefined) {
this._needEmitEol = this.converter.listeners("eol").length > 0;
}
return this._needEmitEol;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProcessorLocal.prototype, "needEmitHead", {
get: function () {
if (this._needEmitHead === undefined) {
this._needEmitHead = this.converter.listeners("header").length > 0;
}
return this._needEmitHead;
},
enumerable: true,
configurable: true
});
ProcessorLocal.prototype.process = function (chunk, finalChunk) {
var _this = this;
if (finalChunk === void 0) { finalChunk = false; }
var csvString;
if (finalChunk) {
csvString = chunk.toString();
}
else {
csvString = dataClean_1.prepareData(chunk, this.converter.parseRuntime);
}
return bluebird_1.default.resolve()
.then(function () {
if (_this.runtime.preRawDataHook) {
return _this.runtime.preRawDataHook(csvString);
}
else {
return csvString;
}
})
.then(function (csv) {
if (csv && csv.length > 0) {
return _this.processCSV(csv, finalChunk);
}
else {
return bluebird_1.default.resolve([]);
}
});
};
ProcessorLocal.prototype.processCSV = function (csv, finalChunk) {
var _this = this;
var params = this.params;
var runtime = this.runtime;
if (!runtime.eol) {
getEol_1.default(csv, runtime);
}
if (this.needEmitEol && !this.eolEmitted && runtime.eol) {
this.converter.emit("eol", runtime.eol);
this.eolEmitted = true;
}
// trim csv file has initial blank lines.
if (params.ignoreEmpty && !runtime.started) {
csv = util_1.trimLeft(csv);
}
var stringToLineResult = fileline_1.stringToLines(csv, runtime);
if (!finalChunk) {
this.prependLeftBuf(util_1.bufFromString(stringToLineResult.partial));
}
else {
stringToLineResult.lines.push(stringToLineResult.partial);
stringToLineResult.partial = "";
}
if (stringToLineResult.lines.length > 0) {
var prom = void 0;
if (runtime.preFileLineHook) {
prom = this.runPreLineHook(stringToLineResult.lines);
}
else {
prom = bluebird_1.default.resolve(stringToLineResult.lines);
}
return prom.then(function (lines) {
if (!runtime.started
&& !_this.runtime.headers) {
return _this.processDataWithHead(lines);
}
else {
return _this.processCSVBody(lines);
}
});
}
else {
return bluebird_1.default.resolve([]);
}
};
ProcessorLocal.prototype.processDataWithHead = function (lines) {
if (this.params.noheader) {
if (this.params.headers) {
this.runtime.headers = this.params.headers;
}
else {
this.runtime.headers = [];
}
}
else {
var left = "";
var headerRow = [];
while (lines.length) {
var line = left + lines.shift();
var row = this.rowSplit.parse(line);
if (row.closed) {
headerRow = row.cells;
left = "";
break;
}
else {
left = line + getEol_1.default(line, this.runtime);
}
}
this.prependLeftBuf(util_1.bufFromString(left));
if (headerRow.length === 0) {
return [];
}
if (this.params.headers) {
this.runtime.headers = this.params.headers;
}
else {
this.runtime.headers = headerRow;
}
}
if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) {
this.filterHeader();
}
if (this.needEmitHead && !this.headEmitted) {
this.converter.emit("header", this.runtime.headers);
this.headEmitted = true;
}
return this.processCSVBody(lines);
};
ProcessorLocal.prototype.filterHeader = function () {
this.runtime.selectedColumns = [];
if (this.runtime.headers) {
var headers = this.runtime.headers;
for (var i = 0; i < headers.length; i++) {
if (this.params.ignoreColumns) {
if (this.params.ignoreColumns.test(headers[i])) {
if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) {
this.runtime.selectedColumns.push(i);
}
else {
continue;
}
}
else {
this.runtime.selectedColumns.push(i);
}
}
else if (this.params.includeColumns) {
if (this.params.includeColumns.test(headers[i])) {
this.runtime.selectedColumns.push(i);
}
}
else {
this.runtime.selectedColumns.push(i);
}
// if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){
// this.runtime.selectedColumns.push(i);
// }else{
// if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){
// continue;
// }else{
// if (this.params.ignoreColumns && !this.params.includeColumns){
// this.runtime.selectedColumns.push(i);
// }
// }
// }
}
this.runtime.headers = util_1.filterArray(this.runtime.headers, this.runtime.selectedColumns);
}
};
ProcessorLocal.prototype.processCSVBody = function (lines) {
if (this.params.output === "line") {
return lines;
}
else {
var result = this.rowSplit.parseMultiLines(lines);
this.prependLeftBuf(util_1.bufFromString(result.partial));
if (this.params.output === "csv") {
return result.rowsCells;
}
else {
return lineToJson_1.default(result.rowsCells, this.converter);
}
}
// var jsonArr = linesToJson(lines.lines, params, this.recordNum);
// this.processResult(jsonArr);
// this.lastIndex += jsonArr.length;
// this.recordNum += jsonArr.length;
};
ProcessorLocal.prototype.prependLeftBuf = function (buf) {
if (buf) {
if (this.runtime.csvLineBuffer) {
this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]);
}
else {
this.runtime.csvLineBuffer = buf;
}
}
};
ProcessorLocal.prototype.runPreLineHook = function (lines) {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
processLineHook(lines, _this.runtime, 0, function (err) {
if (err) {
reject(err);
}
else {
resolve(lines);
}
});
});
};
return ProcessorLocal;
}(Processor_1.Processor));
exports.ProcessorLocal = ProcessorLocal;
function processLineHook(lines, runtime, offset, cb) {
if (offset >= lines.length) {
cb();
}
else {
if (runtime.preFileLineHook) {
var line = lines[offset];
var res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset);
offset++;
if (res && res.then) {
res.then(function (value) {
lines[offset - 1] = value;
processLineHook(lines, runtime, offset, cb);
});
}
else {
lines[offset - 1] = res;
while (offset < lines.length) {
lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset);
offset++;
}
cb();
}
}
else {
cb();
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBMkQ7QUFDM0Qsc0RBQXlCO0FBQ3pCLHlDQUEwQztBQUMxQyxvREFBOEI7QUFDOUIsdUNBQTJDO0FBQzNDLCtCQUE2RDtBQUM3RCx1Q0FBc0M7QUFDdEMsNERBQXNDO0FBRXRDLHdEQUFrQztBQUlsQztJQUFvQyxrQ0FBUztJQUE3QztRQUFBLHFFQW1PQztRQS9NUyxjQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxnQkFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBWSxHQUFhLFNBQVMsQ0FBQztRQU9uQyxpQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYSxHQUFhLFNBQVMsQ0FBQzs7SUFxTTlDLENBQUM7SUFsT0MsOEJBQUssR0FBTDtRQUFBLGlCQWVDO1FBZEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZFLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztpQkFDM0IsSUFBSSxDQUFDLFVBQUMsR0FBRztnQkFDUixJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFD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QUFNLEVBQUUsQ0FBQztpQkFDVjtnQkFDRCxFQUFFLEVBQUUsQ0FBQzthQUNOO1NBQ0Y7YUFBTTtZQUNMLEVBQUUsRUFBRSxDQUFDO1NBQ047S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9jZXNzb3IsIFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHByZXBhcmVEYXRhIH0gZnJvbSBcIi4vZGF0YUNsZWFuXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgc3RyaW5nVG9MaW5lcyB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBidWZGcm9tU3RyaW5nLCBmaWx0ZXJBcnJheSx0cmltTGVmdCB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IFJvd1NwbGl0IH0gZnJvbSBcIi4vcm93U3BsaXRcIjtcbmltcG9ydCBsaW5lVG9Kc29uIGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yTG9jYWwgZXh0ZW5kcyBQcm9jZXNzb3Ige1xuICBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+IHtcbiAgICBpZiAodGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgJiYgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYnVmID0gdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXI7XG4gICAgICB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3MoYnVmLCB0cnVlKVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlamVjdChDU1ZFcnJvci51bmNsb3NlZF9xdW90ZSh0aGlzLnJ1bnRpbWUucGFyc2VkTGluZU51bWJlciwgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIudG9TdHJpbmcoKSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlc29sdmUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cbiAgfVxuICBkZXN0cm95KCk6IFA8dm9pZD4ge1xuICAgIHJldHVybiBQLnJlc29sdmUoKTtcbiAgfVxuICBwcml2YXRlIHJvd1NwbGl0OiBSb3dTcGxpdCA9IG5ldyBSb3dTcGxpdCh0aGlzLmNvbnZlcnRlcik7XG4gIHByaXZhdGUgZW9sRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEVvbD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RW9sKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdEVvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEVvbCA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImVvbFwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZEVtaXRFb2w7XG4gIH1cbiAgcHJpdmF0ZSBoZWFkRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEhlYWQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIGdldCBuZWVkRW1pdEhlYWQoKSB7XG4gICAgaWYgKHRoaXMuX25lZWRFbWl0SGVhZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEhlYWQgPSB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJoZWFkZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0SGVhZDtcblxuICB9XG4gIHByb2Nlc3MoY2h1bms6IEJ1ZmZlciwgZmluYWxDaHVuayA9IGZhbHNlKTogUDxQcm9jZXNzTGluZVJlc3VsdFtdPiB7XG4gICAgbGV0IGNzdlN0cmluZzogc3RyaW5nO1xuICAgIGlmIChmaW5hbENodW5rKSB7XG4gICAgICBjc3ZTdHJpbmcgPSBjaHVuay50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjc3ZTdHJpbmcgPSBwcmVwYXJlRGF0YShjaHVuaywgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lKTtcblxuICAgIH1cbiAgICByZXR1cm4gUC5yZXNvbHZlKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucnVudGltZS5wcmVSYXdEYXRhSG9vaykge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJlUmF3RGF0YUhvb2soY3N2U3RyaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY3N2U3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGNzdikgPT4ge1xuICAgICAgICBpZiAoY3N2ICYmIGNzdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NTVihjc3YsIGZpbmFsQ2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9KVxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0NTVihjc3Y6IHN0cmluZywgZmluYWxDaHVuazogYm9vbGVhbik6IFA8UHJvY2Vzc0xpbmVSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zO1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB0aGlzLnJ1bnRpbWU7XG4gICAgaWYgKCFydW50aW1lLmVvbCkge1xuICAgICAgZ2V0RW9sKGNzdiwgcnVudGltZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZWRFbWl0RW9sICYmICF0aGlzLmVvbEVtaXR0ZWQgJiYgcnVudGltZS5lb2wpIHtcbiAgICAgIHRoaXMuY29udmVydGVyLmVtaXQoXCJlb2xcIiwgcnVudGltZS5lb2wpO1xuICAgICAgdGhpcy5lb2xFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gdHJpbSBjc3YgZmlsZSBoYXMgaW5pdGlhbCBibGFuayBsaW5lcy5cbiAgICBpZiAocGFyYW1zLmlnbm9yZUVtcHR5ICYmICFydW50aW1lLnN0YXJ0ZWQpIHtcbiAgICAgIGNzdiA9IHRyaW1MZWZ0KGNzdik7XG4gICAgfVxuICAgIGNvbnN0IHN0cmluZ1RvTGluZVJlc3VsdCA9IHN0cmluZ1RvTGluZXMoY3N2LCBydW50aW1lKTtcbiAgICBpZiAoIWZpbmFsQ2h1bmspIHtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMucHVzaChzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCk7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCA9IFwiXCI7XG4gICAgfVxuICAgIGlmIChzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHByb206IFA8c3RyaW5nW10+O1xuICAgICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICAgIHByb20gPSB0aGlzLnJ1blByZUxpbmVIb29rKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9tID0gUC5yZXNvbHZlKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvbS50aGVuKChsaW5lcykgPT4ge1xuICAgICAgICBpZiAoIXJ1bnRpbWUuc3RhcnRlZFxuICAgICAgICAgICYmICF0aGlzLnJ1bnRpbWUuaGVhZGVyc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YVdpdGhIZWFkKGxpbmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gICAgICAgIH1cblxuICAgICAgfSlcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cblxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0RhdGFXaXRoSGVhZChsaW5lczogc3RyaW5nW10pOiBQcm9jZXNzTGluZVJlc3VsdFtdIHtcbiAgICBpZiAodGhpcy5wYXJhbXMubm9oZWFkZXIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gdGhpcy5wYXJhbXMuaGVhZGVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsZWZ0ID0gXCJcIjtcbiAgICAgIGxldCBoZWFkZXJSb3c6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTcGxpdC5wYXJzZShsaW5lKTtcbiAgICAgICAgaWYgKHJvdy5jbG9zZWQpIHtcbiAgICAgICAgICBoZWFkZXJSb3cgPSByb3cuY2VsbHM7XG4gICAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVmdCA9IGxpbmUgKyBnZXRFb2wobGluZSwgdGhpcy5ydW50aW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcmVwZW5kTGVmdEJ1ZihidWZGcm9tU3RyaW5nKGxlZnQpKTtcblxuICAgICAgaWYgKGhlYWRlclJvdy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyYW1zLmhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSB0aGlzLnBhcmFtcy5oZWFkZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSBoZWFkZXJSb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bnRpbWUubmVlZFByb2Nlc3NJZ25vcmVDb2x1bW4gfHwgdGhpcy5ydW50aW1lLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbikge1xuICAgICAgdGhpcy5maWx0ZXJIZWFkZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXRIZWFkICYmICF0aGlzLmhlYWRFbWl0dGVkKSB7XG4gICAgICB0aGlzLmNvbnZlcnRlci5lbWl0KFwiaGVhZGVyXCIsIHRoaXMucnVudGltZS5oZWFkZXJzKTtcbiAgICAgIHRoaXMuaGVhZEVtaXR0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gIH1cbiAgcHJpdmF0ZSBmaWx0ZXJIZWFkZXIoKSB7XG4gICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucyA9IFtdO1xuICAgIGlmICh0aGlzLnJ1bnRpbWUuaGVhZGVycykge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMucnVudGltZS5oZWFkZXJzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpe1xuICAgICAgICAvLyAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgLy8gfWVsc2V7XG4gICAgICAgIC8vICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgdGhpcy5wYXJhbXMuaWdub3JlQ29sdW1ucy50ZXN0KGhlYWRlcnNbaV0pKXtcbiAgICAgICAgLy8gICAgIGNvbnRpbnVlO1xuICAgICAgICAvLyAgIH1lbHNle1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgIXRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zKXtcbiAgICAgICAgLy8gICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAvLyAgICAgfVxuXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnJ1bnRpbWUuaGVhZGVycyA9IGZpbHRlckFycmF5KHRoaXMucnVudGltZS5oZWFkZXJzLCB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgfVxuICBwcml2YXRlIHByb2Nlc3NDU1ZCb2R5KGxpbmVzOiBzdHJpbmdbXSk6IFByb2Nlc3NMaW5lUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLnBhcmFtcy5vdXRwdXQgPT09IFwibGluZVwiKSB7XG4gICAgICByZXR1cm4gbGluZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhyZXN1bHQucGFydGlhbCkpO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLm91dHB1dCA9PT0gXCJjc3ZcIikge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnJvd3NDZWxscztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsaW5lVG9Kc29uKHJlc3VsdC5yb3dzQ2VsbHMsIHRoaXMuY29udmVydGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB2YXIganNvbkFyciA9IGxpbmVzVG9Kc29uKGxpbmVzLmxpbmVzLCBwYXJhbXMsIHRoaXMucmVjb3JkTnVtKTtcbiAgICAvLyB0aGlzLnByb2Nlc3NSZXN1bHQoanNvbkFycik7XG4gICAgLy8gdGhpcy5sYXN0SW5kZXggKz0ganNvbkFyci5sZW5ndGg7XG4gICAgLy8gdGhpcy5yZWNvcmROdW0gKz0ganNvbkFyci5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIHByZXBlbmRMZWZ0QnVmKGJ1ZjogQnVmZmVyKSB7XG4gICAgaWYgKGJ1Zikge1xuICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYnVmLCB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlcl0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgPSBidWY7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSBydW5QcmVMaW5lSG9vayhsaW5lczogc3RyaW5nW10pOiBQPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIG5ldyBQKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgdGhpcy5ydW50aW1lLCAwLCAoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGxpbmVzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzTGluZUhvb2sobGluZXM6IHN0cmluZ1tdLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUsIG9mZnNldDogbnVtYmVyLFxuICBjYjogKGVycj8pID0+IHZvaWRcbikge1xuICBpZiAob2Zmc2V0ID49IGxpbmVzLmxlbmd0aCkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICBjb25zdCBsaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgIGNvbnN0IHJlcyA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmUsIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCk7XG4gICAgICBvZmZzZXQrKztcbiAgICAgIGlmIChyZXMgJiYgKHJlcyBhcyBQcm9taXNlTGlrZTxzdHJpbmc+KS50aGVuKSB7XG4gICAgICAgIChyZXMgYXMgUHJvbWlzZUxpa2U8c3RyaW5nPikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICBsaW5lc1tvZmZzZXQgLSAxXSA9IHZhbHVlO1xuICAgICAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgcnVudGltZSwgb2Zmc2V0LCBjYik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXNbb2Zmc2V0IC0gMV0gPSByZXMgYXMgc3RyaW5nO1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgbGluZXNbb2Zmc2V0XSA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmVzW29mZnNldF0sIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCkgYXMgc3RyaW5nO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICB9XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59Il19
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Processor = /** @class */ (function () {
function Processor(converter) {
this.converter = converter;
this.params = converter.parseParam;
this.runtime = converter.parseRuntime;
}
return Processor;
}());
exports.Processor = Processor;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3IudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUE7SUFHRSxtQkFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFJSCxnQkFBQztBQUFELENBQUMsQUFWRCxJQVVDO0FBVnFCLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IEpTT05SZXN1bHQgfSBmcm9tIFwiLi9saW5lVG9Kc29uXCI7XG5pbXBvcnQgeyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9jZXNzb3Ige1xuICBwcm90ZWN0ZWQgcGFyYW1zOiBDU1ZQYXJzZVBhcmFtO1xuICBwcm90ZWN0ZWQgcnVudGltZTogUGFyc2VSdW50aW1lO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29udmVydGVyOiBDb252ZXJ0ZXIpIHtcbiAgICB0aGlzLnBhcmFtcyA9IGNvbnZlcnRlci5wYXJzZVBhcmFtO1xuICAgIHRoaXMucnVudGltZSA9IGNvbnZlcnRlci5wYXJzZVJ1bnRpbWU7XG4gIH1cbiAgYWJzdHJhY3QgcHJvY2VzcyhjaHVuazogQnVmZmVyLGZpbmFsQ2h1bms/OmJvb2xlYW4pOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+XG4gIGFic3RyYWN0IGRlc3Ryb3koKTpQPHZvaWQ+O1xuICBhYnN0cmFjdCBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+O1xufVxuZXhwb3J0IHR5cGUgUHJvY2Vzc0xpbmVSZXN1bHQgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IEpTT05SZXN1bHQ7XG4iXX0=
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var stream_1 = require("stream");
var Parameters_1 = require("./Parameters");
var ParseRuntime_1 = require("./ParseRuntime");
var bluebird_1 = __importDefault(require("bluebird"));
// import { ProcessorFork } from "./ProcessFork";
var ProcessorLocal_1 = require("./ProcessorLocal");
var Result_1 = require("./Result");
var Converter = /** @class */ (function (_super) {
__extends(Converter, _super);
function Converter(param, options) {
if (options === void 0) { options = {}; }
var _this = _super.call(this, options) || this;
_this.options = options;
_this.params = Parameters_1.mergeParams(param);
_this.runtime = ParseRuntime_1.initParseRuntime(_this);
_this.result = new Result_1.Result(_this);
// if (this.params.fork) {
// this.processor = new ProcessorFork(this);
// } else {
_this.processor = new ProcessorLocal_1.ProcessorLocal(_this);
// }
_this.once("error", function (err) {
// console.log("BBB");
setTimeout(function () {
_this.result.processError(err);
_this.emit("done", err);
}, 0);
});
_this.once("done", function () {
_this.processor.destroy();
});
return _this;
}
Converter.prototype.preRawData = function (onRawData) {
this.runtime.preRawDataHook = onRawData;
return this;
};
Converter.prototype.preFileLine = function (onFileLine) {
this.runtime.preFileLineHook = onFileLine;
return this;
};
Converter.prototype.subscribe = function (onNext, onError, onCompleted) {
this.parseRuntime.subscribe = {
onNext: onNext,
onError: onError,
onCompleted: onCompleted
};
return this;
};
Converter.prototype.fromFile = function (filePath, options) {
var _this = this;
var fs = require("fs");
// var rs = null;
// this.wrapCallback(cb, function () {
// if (rs && rs.destroy) {
// rs.destroy();
// }
// });
fs.exists(filePath, function (exist) {
if (exist) {
var rs = fs.createReadStream(filePath, options);
rs.pipe(_this);
}
else {
_this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
}
});
return this;
};
Converter.prototype.fromStream = function (readStream) {
readStream.pipe(this);
return this;
};
Converter.prototype.fromString = function (csvString) {
var csv = csvString.toString();
var read = new stream_1.Readable();
var idx = 0;
read._read = function (size) {
if (idx >= csvString.length) {
this.push(null);
}
else {
var str = csvString.substr(idx, size);
this.push(str);
idx += size;
}
};
return this.fromStream(read);
};
Converter.prototype.then = function (onfulfilled, onrejected) {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
_this.parseRuntime.then = {
onfulfilled: function (value) {
if (onfulfilled) {
resolve(onfulfilled(value));
}
else {
resolve(value);
}
},
onrejected: function (err) {
if (onrejected) {
resolve(onrejected(err));
}
else {
reject(err);
}
}
};
});
};
Object.defineProperty(Converter.prototype, "parseParam", {
get: function () {
return this.params;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Converter.prototype, "parseRuntime", {
get: function () {
return this.runtime;
},
enumerable: true,
configurable: true
});
Converter.prototype._transform = function (chunk, encoding, cb) {
var _this = this;
this.processor.process(chunk)
.then(function (result) {
// console.log(result);
if (result.length > 0) {
_this.runtime.started = true;
return _this.result.processResult(result);
}
})
.then(function () {
_this.emit("drained");
cb();
}, function (error) {
_this.runtime.hasError = true;
_this.runtime.error = error;
_this.emit("error", error);
cb();
});
};
Converter.prototype._flush = function (cb) {
var _this = this;
this.processor.flush()
.then(function (data) {
if (data.length > 0) {
return _this.result.processResult(data);
}
})
.then(function () {
_this.processEnd(cb);
}, function (err) {
_this.emit("error", err);
cb();
});
};
Converter.prototype.processEnd = function (cb) {
this.result.endProcess();
this.emit("done");
cb();
};
Object.defineProperty(Converter.prototype, "parsedLineNumber", {
get: function () {
return this.runtime.parsedLineNumber;
},
enumerable: true,
configurable: true
});
return Converter;
}(stream_1.Transform));
exports.Converter = Converter;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Db252ZXJ0ZXIudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErRDtBQUMvRCwyQ0FBMEQ7QUFDMUQsK0NBQWdFO0FBQ2hFLHNEQUF5QjtBQU96QixpREFBaUQ7QUFDakQsbURBQWtEO0FBQ2xELG1DQUFrQztBQU1sQztJQUErQiw2QkFBUztJQXVGdEMsbUJBQVksS0FBOEIsRUFBUyxPQUE4QjtRQUE5Qix3QkFBQSxFQUFBLFlBQThCO1FBQWpGLFlBQ0Usa0JBQU0sT0FBTyxDQUFDLFNBdUJmO1FBeEJrRCxhQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUUvRSxLQUFJLENBQUMsTUFBTSxHQUFHLHdCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSSxDQUFDLE9BQU8sR0FBRywrQkFBZ0IsQ0FBQyxLQUFJLENBQUMsQ0FBQztRQUN0QyxLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQy9CLDBCQUEwQjtRQUMxQiw4Q0FBOEM7UUFDOUMsV0FBVztRQUNYLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwrQkFBYyxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUk7UUFDSixLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFDLEdBQVE7WUFDMUIsc0JBQXNCO1lBRXRCLFVBQVUsQ0FBQztnQkFDVCxLQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRVIsQ0FBQyxDQUFDLENBQUM7UUFD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QUFLLENBQUM7WUFDM0IsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCwwQkFBTSxHQUFOLFVBQU8sRUFBWTtRQUFuQixpQkFjQztRQWJDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO2FBQ25CLElBQUksQ0FBQyxVQUFDLElBQUk7WUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUVuQixPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDO1lBQ0osS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQUUsVUFBQyxHQUFHO1lBQ0wsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDTyw4QkFBVSxHQUFsQixVQUFtQixFQUFFO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixFQUFFLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFDRCxzQkFBSSx1Q0FBZ0I7YUFBcEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFDSCxnQkFBQztBQUFELENBQUMsQUEzSkQsQ0FBK0Isa0JBQVMsR0EySnZDO0FBM0pZLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtLCBUcmFuc2Zvcm1PcHRpb25zLCBSZWFkYWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7IENTVlBhcnNlUGFyYW0sIG1lcmdlUGFyYW1zIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lLCBpbml0UGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHN0cmluZ1RvTGluZXMgfSBmcm9tIFwiLi9maWxlbGluZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcImxvZGFzaC9tYXBcIjtcbmltcG9ydCB7IFJvd1NwbGl0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IGxpbmVUb0pzb24sIHsgSlNPTlJlc3VsdCB9IGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFByb2Nlc3NvciwgUHJvY2Vzc0xpbmVSZXN1bHQgfSBmcm9tIFwiLi9Qcm9jZXNzb3JcIjtcbi8vIGltcG9ydCB7IFByb2Nlc3NvckZvcmsgfSBmcm9tIFwiLi9Qcm9jZXNzRm9ya1wiO1xuaW1wb3J0IHsgUHJvY2Vzc29yTG9jYWwgfSBmcm9tIFwiLi9Qcm9jZXNzb3JMb2NhbFwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4vUmVzdWx0XCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4vQ1NWRXJyb3JcIjtcbmltcG9ydCB7IGJ1ZkZyb21TdHJpbmcgfSBmcm9tIFwiLi91dGlsXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIGV4dGVuZHMgVHJhbnNmb3JtIGltcGxlbWVudHMgUHJvbWlzZUxpa2U8QXJyYXk8YW55Pj4ge1xuICBwcmVSYXdEYXRhKG9uUmF3RGF0YTogUHJlUmF3RGF0YUNhbGxiYWNrKTogQ29udmVydGVyIHtcbiAgICB0aGlzLnJ1bnRpbWUucHJlUmF3RGF0YUhvb2sgPSBvblJhd0RhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgcHJlRmlsZUxpbmUob25GaWxlTGluZTogUHJlRmlsZUxpbmVDYWxsYmFjayk6IENvbnZlcnRlciB7XG4gICAgdGhpcy5ydW50aW1lLnByZUZpbGVMaW5lSG9vayA9IG9uRmlsZUxpbmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgc3Vic2NyaWJlKFxuICAgIG9uTmV4dD86IChkYXRhOiBhbnksIGxpbmVOdW1iZXI6IG51bWJlcikgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+LFxuICAgIG9uRXJyb3I/OiAoZXJyOiBDU1ZFcnJvcikgPT4gdm9pZCxcbiAgICBvbkNvbXBsZXRlZD86ICgpID0+IHZvaWQpOiBDb252ZXJ0ZXIge1xuICAgIHRoaXMucGFyc2VSdW50aW1lLnN1YnNjcmliZSA9IHtcbiAgICAgIG9uTmV4dCxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvbkNvbXBsZXRlZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmcm9tRmlsZShmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zPzogc3RyaW5nIHwgQ3JlYXRlUmVhZFN0cmVhbU9wdGlvbiB8IHVuZGVmaW5lZCk6IENvbnZlcnRlciB7XG4gICAgY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgLy8gdmFyIHJzID0gbnVsbDtcbiAgICAvLyB0aGlzLndyYXBDYWxsYmFjayhjYiwgZnVuY3Rpb24gKCkge1xuICAgIC8vICAgaWYgKHJzICYmIHJzLmRlc3Ryb3kpIHtcbiAgICAvLyAgICAgcnMuZGVzdHJveSgpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pO1xuICAgIGZzLmV4aXN0cyhmaWxlUGF0aCwgKGV4aXN0KSA9PiB7XG4gICAgICBpZiAoZXhpc3QpIHtcbiAgICAgICAgY29uc3QgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoLCBvcHRpb25zKTtcbiAgICAgICAgcnMucGlwZSh0aGlzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoXCJGaWxlIGRvZXMgbm90IGV4aXN0LiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGZpbGUgcGF0aCB0byB5b3VyIGNzdiBpcyBjb3JyZWN0LlwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgZnJvbVN0cmVhbShyZWFkU3RyZWFtOiBSZWFkYWJsZSk6IENvbnZlcnRlciB7XG4gICAgcmVhZFN0cmVhbS5waXBlKHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZyb21TdHJpbmcoY3N2U3RyaW5nOiBzdHJpbmcpOiBDb252ZXJ0ZXIge1xuICAgIGNvbnN0IGNzdiA9IGNzdlN0cmluZy50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlYWQgPSBuZXcgUmVhZGFibGUoKTtcbiAgICBsZXQgaWR4ID0gMDtcbiAgICByZWFkLl9yZWFkID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgIGlmIChpZHggPj0gY3N2U3RyaW5nLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdHIgPSBjc3ZTdHJpbmcuc3Vic3RyKGlkeCwgc2l6ZSk7XG4gICAgICAgIHRoaXMucHVzaChzdHIpO1xuICAgICAgICBpZHggKz0gc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZnJvbVN0cmVhbShyZWFkKTtcbiAgfVxuICB0aGVuPFRSZXN1bHQxID0gYW55W10sIFRSZXN1bHQyID0gbmV2ZXI+KG9uZnVsZmlsbGVkPzogKHZhbHVlOiBhbnlbXSkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4sIG9ucmVqZWN0ZWQ/OiAocmVhc29uOiBhbnkpID0+IFRSZXN1bHQyIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDI+KTogUHJvbWlzZUxpa2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xuICAgIHJldHVybiBuZXcgUCgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnBhcnNlUnVudGltZS50aGVuID0ge1xuICAgICAgICBvbmZ1bGZpbGxlZDogKHZhbHVlOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmIChvbmZ1bGZpbGxlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZCh2YWx1ZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHZhbHVlIGFzIGFueSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbnJlamVjdGVkOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChvbnJlamVjdGVkKSB7XG4gICAgICAgICAgICByZXNvbHZlKG9ucmVqZWN0ZWQoZXJyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHB1YmxpYyBnZXQgcGFyc2VQYXJhbSgpOiBDU1ZQYXJzZVBhcmFtIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXM7XG4gIH1cbiAgcHVibGljIGdldCBwYXJzZVJ1bnRpbWUoKTogUGFyc2VSdW50aW1lIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lO1xuICB9XG4gIHByaXZhdGUgcGFyYW1zOiBDU1ZQYXJzZVBhcmFtO1xuICBwcml2YXRlIHJ1bnRpbWU6IFBhcnNlUnVudGltZTtcbiAgcHJpdmF0ZSBwcm9jZXNzb3I6IFByb2Nlc3NvcjtcbiAgcHJpdmF0ZSByZXN1bHQ6IFJlc3VsdDtcbiAgY29uc3RydWN0b3IocGFyYW0/OiBQYXJ0aWFsPENTVlBhcnNlUGFyYW0+LCBwdWJsaWMgb3B0aW9uczogVHJhbnNmb3JtT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5wYXJhbXMgPSBtZXJnZVBhcmFtcyhwYXJhbSk7XG4gICAgdGhpcy5ydW50aW1lID0gaW5pdFBhcnNlUnVudGltZSh0aGlzKTtcbiAgICB0aGlzLnJlc3VsdCA9IG5ldyBSZXN1bHQodGhpcyk7XG4gICAgLy8gaWYgKHRoaXMucGFyYW1zLmZvcmspIHtcbiAgICAvLyAgIHRoaXMucHJvY2Vzc29yID0gbmV3IFByb2Nlc3NvckZvcmsodGhpcyk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICB0aGlzLnByb2Nlc3NvciA9IG5ldyBQcm9jZXNzb3JMb2NhbCh0aGlzKTtcbiAgICAvLyB9XG4gICAgdGhpcy5vbmNlKFwiZXJyb3JcIiwgKGVycjogYW55KSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkJCQlwiKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzdWx0LnByb2Nlc3NFcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmVtaXQoXCJkb25lXCIsIGVycik7XG4gICAgICB9LCAwKTtcblxuICAgIH0pO1xuICAgIHRoaXMub25jZShcImRvbmVcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzb3IuZGVzdHJveSgpO1xuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBfdHJhbnNmb3JtKGNodW5rOiBhbnksIGVuY29kaW5nOiBzdHJpbmcsIGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHJvY2Vzc29yLnByb2Nlc3MoY2h1bmspXG4gICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMucnVudGltZS5zdGFydGVkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5wcm9jZXNzUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcImRyYWluZWRcIik7XG4gICAgICAgIGNiKCk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ydW50aW1lLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICB9XG4gIF9mbHVzaChjYjogRnVuY3Rpb24pIHtcbiAgICB0aGlzLnByb2Nlc3Nvci5mbHVzaCgpXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQucHJvY2Vzc1Jlc3VsdChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRW5kKGNiKTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pXG4gIH1cbiAgcHJpdmF0ZSBwcm9jZXNzRW5kKGNiKSB7XG4gICAgdGhpcy5yZXN1bHQuZW5kUHJvY2VzcygpO1xuICAgIHRoaXMuZW1pdChcImRvbmVcIik7XG4gICAgY2IoKTtcbiAgfVxuICBnZXQgcGFyc2VkTGluZU51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucGFyc2VkTGluZU51bWJlcjtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSZWFkU3RyZWFtT3B0aW9uIHtcbiAgZmxhZ3M/OiBzdHJpbmc7XG4gIGVuY29kaW5nPzogc3RyaW5nO1xuICBmZD86IG51bWJlcjtcbiAgbW9kZT86IG51bWJlcjtcbiAgYXV0b0Nsb3NlPzogYm9vbGVhbjtcbiAgc3RhcnQ/OiBudW1iZXI7XG4gIGVuZD86IG51bWJlcjtcbiAgaGlnaFdhdGVyTWFyaz86IG51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIENhbGxCYWNrID0gKGVycjogRXJyb3IsIGRhdGE6IEFycmF5PGFueT4pID0+IHZvaWQ7XG5cblxuZXhwb3J0IHR5cGUgUHJlRmlsZUxpbmVDYWxsYmFjayA9IChsaW5lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlcikgPT4gc3RyaW5nIHwgUHJvbWlzZUxpa2U8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIFByZVJhd0RhdGFDYWxsYmFjayA9IChjc3ZTdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nIHwgUHJvbWlzZUxpa2U8c3RyaW5nPjtcbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//return first eol found from a data chunk.
function default_1(data, param) {
if (!param.eol && data) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] === "\r") {
if (data[i + 1] === "\n") {
param.eol = "\r\n";
break;
}
else if (data[i + 1]) {
param.eol = "\r";
break;
}
}
else if (data[i] === "\n") {
param.eol = "\n";
break;
}
}
}
return param.eol || "\n";
}
exports.default = default_1;
;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9nZXRFb2wudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZ2V0RW9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkNBQTJDO0FBQzNDLG1CQUF5QixJQUFZLEVBQUUsS0FBbUI7SUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN4QixLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztvQkFDbkIsTUFBTTtpQkFDUDtxQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RCLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO29CQUNqQixNQUFNO2lCQUNQO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUMzQixLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDakIsTUFBTTthQUNQO1NBQ0Y7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQWxCRCw0QkFrQkM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG4vL3JldHVybiBmaXJzdCBlb2wgZm91bmQgZnJvbSBhIGRhdGEgY2h1bmsuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZGF0YTogc3RyaW5nLCBwYXJhbTogUGFyc2VSdW50aW1lKTogc3RyaW5nIHtcbiAgaWYgKCFwYXJhbS5lb2wgJiYgZGF0YSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoZGF0YVtpXSA9PT0gXCJcXHJcIikge1xuICAgICAgICBpZiAoZGF0YVtpICsgMV0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBwYXJhbS5lb2wgPSBcIlxcclxcblwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFbaSArIDFdKSB7XG4gICAgICAgICAgcGFyYW0uZW9sID0gXCJcXHJcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSBpZiAoZGF0YVtpXSA9PT0gXCJcXG5cIikge1xuICAgICAgICBwYXJhbS5lb2wgPSBcIlxcblwiO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcmFtLmVvbCB8fCBcIlxcblwiO1xufTtcbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rowSplit_1 = require("./rowSplit");
var Converter_1 = require("./Converter");
var assert = require("assert");
describe("Test delimiters", function () {
var getDelimiter = function (str, opt) {
return rowSplit_1.RowSplit.prototype["getDelimiter"].call({
conv: {
parseParam: {
delimiter: opt.delimiter
}
}
}, str);
};
it("should return the explicitly specified delimiter", function () {
var delimiter = ";";
var rowStr = "a;b;c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" });
assert.equal(returnedDelimiter, delimiter);
});
it("should return the autodetected delimiter if 'auto' specified", function () {
var rowStr = "a;b;c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
assert(returnedDelimiter === ";");
});
it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () {
var rowStr = "abc";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
assert(returnedDelimiter === ",");
});
it("should accetp an array with potential delimiters", function () {
var rowStr = "a$b$c";
var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] });
assert(returnedDelimiter === '$');
});
});
describe("ParseMultiLine function", function () {
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter());
var func = function (lines) {
return rowSplit.parseMultiLines(lines);
};
it("should convert lines to csv lines", function () {
var lines = [
"a,b,c,d",
"hello,world,csvtojson,abc",
"1,2,3,4"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 3);
assert.equal(res.partial, "");
});
it("should process line breaks", function () {
var lines = [
"a,b,c",
'15",hello,"ab',
"cde\"",
"\"b\"\"b\",cc,dd"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 3);
assert.equal(res.rowsCells[1][0], "15\"");
assert.equal(res.rowsCells[1][2], "ab\ncde");
assert.equal(res.rowsCells[2][0], "b\"b");
assert.equal(res.partial, "");
});
it("should return partial if line not closed", function () {
var lines = [
"a,b,c",
'15",hello,"ab',
"d,e,f"
];
var res = func(lines);
assert.equal(res.rowsCells.length, 1);
assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n");
});
});
describe("RowSplit.parse function", function () {
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter());
var func = function (str) {
return rowSplit.parse(str);
};
it("should split complete csv line", function () {
var str = "hello,world,csvtojson,awesome";
var res = func(str);
assert.equal(res.cells.length, 4);
assert.equal(res.closed, true);
});
it("should split incomplete csv line", function () {
var str = "hello,world,\"csvtojson,awesome";
var res = func(str);
assert.equal(res.closed, false);
});
it("should allow multiple line", function () {
var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\"";
var res = func(str);
assert.equal(res.closed, true);
assert.equal(res.cells[2], 'csvtojson,a"\nwesome');
});
it("should allow blank quotes", function () {
var data = "a|^^|^b^";
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
delimiter: '|',
quote: '^',
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells[1], "");
});
it("should allow blank quotes in quotes", function () {
var data = 'a,"hello,this,"", test"';
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells[1], 'hello,this,", test');
});
it("should smart detect if an initial quote is only part of value ", function () {
var data = '"Weight" (kg),Error code,"Height" (m)';
var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({
noheader: true
}));
var res = rowSplit.parse(data);
assert.equal(res.cells.length, 3);
assert(res.closed);
assert.equal(res.cells[0], '"Weight" (kg)');
assert.equal(res.cells[1], 'Error code');
assert.equal(res.cells[2], '"Height" (m)');
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3Jvd1NwbGl0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUU7QUFDekUseUNBQXdDO0FBQ3hDLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBTSxZQUFZLEdBQUcsVUFBQyxHQUFHLEVBQUUsR0FBcUM7UUFDOUQsT0FBTyxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCO2FBQ0Y7U0FDRixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFBO0lBRUQsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1FBQ3JELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtRQUNqRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLGlCQUFpQixLQUFLLEdBQUcs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Q0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUU1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm93U3BsaXQsIE11bHRpcGxlUm93UmVzdWx0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5cbmRlc2NyaWJlKFwiVGVzdCBkZWxpbWl0ZXJzXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZ2V0RGVsaW1pdGVyID0gKHN0ciwgb3B0OiB7IGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW10gfSk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIFJvd1NwbGl0LnByb3RvdHlwZVtcImdldERlbGltaXRlclwiXS5jYWxsKHtcbiAgICAgIGNvbnY6IHtcbiAgICAgICAgcGFyc2VQYXJhbToge1xuICAgICAgICAgIGRlbGltaXRlcjogb3B0LmRlbGltaXRlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgc3RyKTtcbiAgfVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQgZGVsaW1pdGVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGVsaW1pdGVyID0gXCI7XCI7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCI7XCIgfSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJldHVybmVkRGVsaW1pdGVyLCBkZWxpbWl0ZXIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIGF1dG9kZXRlY3RlZCBkZWxpbWl0ZXIgaWYgJ2F1dG8nIHNwZWNpZmllZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCJhdXRvXCIgfSk7XG4gICAgYXNzZXJ0KHJldHVybmVkRGVsaW1pdGVyID09PSBcIjtcIik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgJywnIGRlbGltaXRlciBpZiBkZWxpbWl0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCwgaW4gY2FzZSBvZiAnYXV0bydcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImFiY1wiO1xuICAgIHZhciByZXR1cm5lZERlbGltaXRlciA9IGdldERlbGltaXRlcihyb3dTdHIsIHsgZGVsaW1pdGVyOiBcImF1dG9cIiB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09IFwiLFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWNjZXRwIGFuIGFycmF5IHdpdGggcG90ZW50aWFsIGRlbGltaXRlcnNcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImEkYiRjXCI7XG4gICAgdmFyIHJldHVybmVkRGVsaW1pdGVyID0gZ2V0RGVsaW1pdGVyKHJvd1N0ciwgeyBkZWxpbWl0ZXI6IFtcIixcIiwgXCI7XCIsIFwiJFwiXSB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09ICckJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiUGFyc2VNdWx0aUxpbmUgZnVuY3Rpb25cIiwgZnVuY3Rpb24gKCkge1xuICBjb25zdCByb3dTcGxpdCA9IG5ldyBSb3dTcGxpdChuZXcgQ29udmVydGVyKCkpO1xuICBjb25zdCBmdW5jID0gKGxpbmVzOiBzdHJpbmdbXSk6IE11bHRpcGxlUm93UmVzdWx0ID0+IHtcbiAgICByZXR1cm4gcm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgfVxuICBpdChcInNob3VsZCBjb252ZXJ0IGxpbmVzIHRvIGNzdiBsaW5lc1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxpbmVzID0gW1xuICAgICAgXCJhLGIsYyxkXCIsXG4gICAgICBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhYmNcIixcbiAgICAgIFwiMSwyLDMsNFwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAzKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBwcm9jZXNzIGxpbmUgYnJlYWtzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGluZXMgPSBbXG4gICAgICBcImEsYixjXCIsXG4gICAgICAnMTVcIixoZWxsbyxcImFiJyxcbiAgICAgIFwiY2RlXFxcIlwiLFxuICAgICAgXCJcXFwiYlxcXCJcXFwiYlxcXCIsY2MsZGRcIlxuICAgIF07XG4gICAgdmFyIHJlcyA9IGZ1bmMobGluZXMpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHNbMV1bMF0sIFwiMTVcXFwiXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzFdWzJdLCBcImFiXFxuY2RlXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzJdWzBdLCBcImJcXFwiYlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gcGFydGlhbCBpZiBsaW5lIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBsaW5lcyA9IFtcbiAgICAgIFwiYSxiLGNcIixcbiAgICAgICcxNVwiLGhlbGxvLFwiYWInLFxuICAgICAgXCJkLGUsZlwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiMTVcXFwiLGhlbGxvLFxcXCJhYlxcbmQsZSxmXFxuXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlJvd1NwbGl0LnBhcnNlIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcigpKTtcbiAgY29uc3QgZnVuYyA9IChzdHIpOiBSb3dTcGxpdFJlc3VsdCA9PiB7XG4gICAgcmV0dXJuIHJvd1NwbGl0LnBhcnNlKHN0cik7XG4gIH1cbiAgaXQoXCJzaG91bGQgc3BsaXQgY29tcGxldGUgY3N2IGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhd2Vzb21lXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgNCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jbG9zZWQsIHRydWUpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBzcGxpdCBpbmNvbXBsZXRlIGNzdiBsaW5lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RyID0gXCJoZWxsbyx3b3JsZCxcXFwiY3N2dG9qc29uLGF3ZXNvbWVcIjtcbiAgICB2YXIgcmVzID0gZnVuYyhzdHIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2xvc2VkLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGFsbG93IG11bHRpcGxlIGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcIlxcXCJoZVxcXCJsbG9cXFwiLHdvcmxkLFxcXCJjc3Z0b2pzb24sYVxcXCJcXG53ZXNvbWVcXFwiXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNsb3NlZCwgdHJ1ZSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1syXSwgJ2NzdnRvanNvbixhXCJcXG53ZXNvbWUnKTtcbiAgfSk7XG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3Rlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFwiYXxeXnxeYl5cIjtcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgZGVsaW1pdGVyOiAnfCcsXG4gICAgICBxdW90ZTogJ14nLFxuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgXCJcIik7XG4gIH0pXG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3RlcyBpbiBxdW90ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSAnYSxcImhlbGxvLHRoaXMsXCJcIiwgdGVzdFwiJztcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgJ2hlbGxvLHRoaXMsXCIsIHRlc3QnKTtcbiAgfSlcbiAgaXQoXCJzaG91bGQgc21hcnQgZGV0ZWN0IGlmIGFuIGluaXRpYWwgcXVvdGUgaXMgb25seSBwYXJ0IG9mIHZhbHVlIFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9ICdcIldlaWdodFwiIChrZyksRXJyb3IgY29kZSxcIkhlaWdodFwiIChtKSc7XG4gICAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcih7XG4gICAgICBub2hlYWRlcjogdHJ1ZVxuICAgIH0pKTtcbiAgICBjb25zdCByZXMgPSByb3dTcGxpdC5wYXJzZShkYXRhKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0KHJlcy5jbG9zZWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMF0sJ1wiV2VpZ2h0XCIgKGtnKScpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMV0sJ0Vycm9yIGNvZGUnKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzWzJdLCdcIkhlaWdodFwiIChtKScpO1xuICAgIFxuICB9KVxufSk7XG4iXX0=
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var getEol_1 = __importDefault(require("./getEol"));
// const getEol = require("./getEol");
/**
* convert data chunk to file lines array
* @param {string} data data chunk as utf8 string
* @param {object} param Converter param object
* @return {Object} {lines:[line1,line2...],partial:String}
*/
function stringToLines(data, param) {
var eol = getEol_1.default(data, param);
var lines = data.split(eol);
var partial = lines.pop() || "";
return { lines: lines, partial: partial };
}
exports.stringToLines = stringToLines;
;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLG9EQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEM7Ozs7O0dBS0c7QUFDSCx1QkFBOEIsSUFBWSxFQUFFLEtBQW1CO0lBQzdELElBQU0sR0FBRyxHQUFHLGdCQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUxELHNDQUtDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IGdldEVvbCBmcm9tIFwiLi9nZXRFb2xcIjtcbi8vIGNvbnN0IGdldEVvbCA9IHJlcXVpcmUoXCIuL2dldEVvbFwiKTtcbi8qKlxuICogY29udmVydCBkYXRhIGNodW5rIHRvIGZpbGUgbGluZXMgYXJyYXlcbiAqIEBwYXJhbSAge3N0cmluZ30gZGF0YSAgZGF0YSBjaHVuayBhcyB1dGY4IHN0cmluZ1xuICogQHBhcmFtICB7b2JqZWN0fSBwYXJhbSBDb252ZXJ0ZXIgcGFyYW0gb2JqZWN0XG4gKiBAcmV0dXJuIHtPYmplY3R9ICAge2xpbmVzOltsaW5lMSxsaW5lMi4uLl0scGFydGlhbDpTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0xpbmVzKGRhdGE6IHN0cmluZywgcGFyYW06IFBhcnNlUnVudGltZSk6IFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBjb25zdCBlb2wgPSBnZXRFb2woZGF0YSwgcGFyYW0pO1xuICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoZW9sKTtcbiAgY29uc3QgcGFydGlhbCA9IGxpbmVzLnBvcCgpIHx8IFwiXCI7XG4gIHJldHVybiB7IGxpbmVzOiBsaW5lcywgcGFydGlhbDogcGFydGlhbCB9O1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBsaW5lczogRmlsZWxpbmVbXSxcbiAgLyoqXG4gICAqIGxhc3QgbGluZSB3aGljaCBjb3VsZCBiZSBpbmNvbXBsZXRlIGxpbmUuXG4gICAqL1xuICBwYXJ0aWFsOiBzdHJpbmdcbn1cbmV4cG9ydCB0eXBlIEZpbGVsaW5lID0gc3RyaW5nOyJdfQ==
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var CSVError_1 = __importDefault(require("./CSVError"));
var set_1 = __importDefault(require("lodash/set"));
var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
function default_1(csvRows, conv) {
var res = [];
for (var i = 0, len = csvRows.length; i < len; i++) {
var r = processRow(csvRows[i], conv, i);
if (r) {
res.push(r);
}
}
return res;
}
exports.default = default_1;
;
function processRow(row, conv, index) {
if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) {
throw (CSVError_1.default.column_mismatched(conv.parseRuntime.parsedLineNumber + index));
}
var headRow = conv.parseRuntime.headers || [];
var resultRow = convertRowToJson(row, headRow, conv);
if (resultRow) {
return resultRow;
}
else {
return null;
}
}
function convertRowToJson(row, headRow, conv) {
var hasValue = false;
var resultRow = {};
for (var i = 0, len = row.length; i < len; i++) {
var item = row[i];
if (conv.parseParam.ignoreEmpty && item === '') {
continue;
}
hasValue = true;
var head = headRow[i];
if (!head || head === "") {
head = headRow[i] = "field" + (i + 1);
}
var convFunc = getConvFunc(head, i, conv);
if (convFunc) {
var convRes = convFunc(item, head, resultRow, row, i);
if (convRes !== undefined) {
setPath(resultRow, head, convRes, conv, i);
}
}
else {
// var flag = getFlag(head, i, param);
// if (flag === 'omit') {
// continue;
// }
if (conv.parseParam.checkType) {
var convertFunc = checkType(item, head, i, conv);
item = convertFunc(item);
}
if (item !== undefined) {
setPath(resultRow, head, item, conv, i);
}
}
}
if (hasValue) {
return resultRow;
}
else {
return null;
}
}
var builtInConv = {
"string": stringType,
"number": numberType,
"omit": function () { }
};
function getConvFunc(head, i, conv) {
if (conv.parseRuntime.columnConv[i] !== undefined) {
return conv.parseRuntime.columnConv[i];
}
else {
var flag = conv.parseParam.colParser[head];
if (flag === undefined) {
return conv.parseRuntime.columnConv[i] = null;
}
if (typeof flag === "object") {
flag = flag.cellParser || "string";
}
if (typeof flag === "string") {
flag = flag.trim().toLowerCase();
var builtInFunc = builtInConv[flag];
if (builtInFunc) {
return conv.parseRuntime.columnConv[i] = builtInFunc;
}
else {
return conv.parseRuntime.columnConv[i] = null;
}
}
else if (typeof flag === "function") {
return conv.parseRuntime.columnConv[i] = flag;
}
else {
return conv.parseRuntime.columnConv[i] = null;
}
}
}
function setPath(resultJson, head, value, conv, headIdx) {
if (!conv.parseRuntime.columnValueSetter[headIdx]) {
if (conv.parseParam.flatKeys) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
else {
if (head.indexOf(".") > -1) {
if (conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
else {
conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter;
}
}
else {
conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
}
}
}
conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);
// flatSetter(resultJson, head, value);
}
function flatSetter(resultJson, head, value) {
resultJson[head] = value;
}
function jsonSetter(resultJson, head, value) {
set_1.default(resultJson, head, value);
}
function checkType(item, head, headIdx, conv) {
if (conv.parseRuntime.headerType[headIdx]) {
return conv.parseRuntime.headerType[headIdx];
}
else if (head.indexOf('number#!') > -1) {
return conv.parseRuntime.headerType[headIdx] = numberType;
}
else if (head.indexOf('string#!') > -1) {
return conv.parseRuntime.headerType[headIdx] = stringType;
}
else if (conv.parseParam.checkType) {
return conv.parseRuntime.headerType[headIdx] = dynamicType;
}
else {
return conv.parseRuntime.headerType[headIdx] = stringType;
}
}
function numberType(item) {
var rtn = parseFloat(item);
if (isNaN(rtn)) {
return item;
}
return rtn;
}
function stringType(item) {
return item.toString();
}
function dynamicType(item) {
var trimed = item.trim();
if (trimed === "") {
return stringType(item);
}
if (numReg.test(trimed)) {
return numberType(item);
}
else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
return booleanType(item);
}
else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
return jsonType(item);
}
else {
return stringType(item);
}
}
function booleanType(item) {
var trimed = item.trim();
if (trimed.length === 5 && trimed.toLowerCase() === "false") {
return false;
}
else {
return true;
}
}
function jsonType(item) {
try {
return JSON.parse(item);
}
catch (e) {
return item;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9saW5lVG9Kc29uLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2xpbmVUb0pzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3REFBa0M7QUFFbEMsbURBQTZCO0FBRzdCLElBQUksTUFBTSxHQUFHLDBDQUEwQyxDQUFDO0FBRXhELG1CQUF5QixPQUFtQixFQUFFLElBQWU7SUFDM0QsSUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELElBQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNiO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFURCw0QkFTQztBQUFBLENBQUM7QUFLRixvQkFBb0IsR0FBYSxFQUFFLElBQWUsRUFBRSxLQUFLO0lBRXZELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDL0csTUFBTSxDQUFDLGtCQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO0tBQy9FO0lBRUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FB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QUFNLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLEVBQUU7UUFDNUgsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUI7U0FBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQzNILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtBQUNILENBQUM7QUFFRCxxQkFBcUIsSUFBSTtJQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFO1FBQzNELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBRUQsa0JBQWtCLElBQUk7SUFDcEIsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuaW1wb3J0IHsgQ2VsbFBhcnNlciwgQ29sdW1uUGFyYW0gfSBmcm9tIFwiLi9QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgc2V0IGZyb20gXCJsb2Rhc2gvc2V0XCI7XG5pbXBvcnQgeyBQYXJzZVJ1bnRpbWUgfSBmcm9tIFwiLi9QYXJzZVJ1bnRpbWVcIjtcblxudmFyIG51bVJlZyA9IC9eWy0rXT9bMC05XSpcXC4/WzAtOV0rKFtlRV1bLStdP1swLTldKyk/JC87XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChjc3ZSb3dzOiBzdHJpbmdbXVtdLCBjb252OiBDb252ZXJ0ZXIpOiBKU09OUmVzdWx0W10ge1xuICBjb25zdCByZXM6IEpTT05SZXN1bHRbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gY3N2Um93cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHIgPSBwcm9jZXNzUm93KGNzdlJvd3NbaV0sIGNvbnYsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICByZXMucHVzaChyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5leHBvcnQgdHlwZSBKU09OUmVzdWx0ID0ge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jvdyhyb3c6IHN0cmluZ1tdLCBjb252OiBDb252ZXJ0ZXIsIGluZGV4KTogSlNPTlJlc3VsdCB8IG51bGwge1xuXG4gIGlmIChjb252LnBhcnNlUGFyYW0uY2hlY2tDb2x1bW4gJiYgY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVycyAmJiByb3cubGVuZ3RoICE9PSBjb252LnBhcnNlUnVudGltZS5oZWFkZXJzLmxlbmd0aCkge1xuICAgIHRocm93IChDU1ZFcnJvci5jb2x1bW5fbWlzbWF0Y2hlZChjb252LnBhcnNlUnVudGltZS5wYXJzZWRMaW5lTnVtYmVyICsgaW5kZXgpKVxuICB9XG5cbiAgY29uc3QgaGVhZFJvdyA9IGNvbnYucGFyc2VSdW50aW1lLmhlYWRlcnMgfHwgW107XG4gIGNvbnN0IHJlc3VsdFJvdyA9IGNvbnZlcnRSb3dUb0pzb24ocm93LCBoZWFkUm93LCBjb252KTtcbiAgaWYgKHJlc3VsdFJvdykge1xuICAgIHJldHVybiByZXN1bHRSb3c7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29udmVydFJvd1RvSnNvbihyb3c6IHN0cmluZ1tdLCBoZWFkUm93OiBzdHJpbmdbXSwgY29udjogQ29udmVydGVyKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwge1xuICBsZXQgaGFzVmFsdWUgPSBmYWxzZTtcbiAgY29uc3QgcmVzdWx0Um93ID0ge307XG4gIFxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gcm93Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbGV0IGl0ZW0gPSByb3dbaV07XG5cbiAgICBpZiAoY29udi5wYXJzZVBhcmFtLmlnbm9yZUVtcHR5ICYmIGl0ZW0gPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaGFzVmFsdWUgPSB0cnVlO1xuXG4gICAgbGV0IGhlYWQgPSBoZWFkUm93W2ldO1xuICAgIGlmICghaGVhZCB8fCBoZWFkID09PSBcIlwiKSB7XG4gICAgICBoZWFkID0gaGVhZFJvd1tpXSA9IFwiZmllbGRcIiArIChpICsgMSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnZGdW5jID0gZ2V0Q29udkZ1bmMoaGVhZCwgaSwgY29udik7XG4gICAgaWYgKGNvbnZGdW5jKSB7XG4gICAgICBjb25zdCBjb252UmVzID0gY29udkZ1bmMoaXRlbSwgaGVhZCwgcmVzdWx0Um93LCByb3csIGkpO1xuICAgICAgaWYgKGNvbnZSZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRQYXRoKHJlc3VsdFJvdywgaGVhZCwgY29udlJlcywgY29udixpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdmFyIGZsYWcgPSBnZXRGbGFnKGhlYWQsIGksIHBhcmFtKTtcbiAgICAgIC8vIGlmIChmbGFnID09PSAnb21pdCcpIHtcbiAgICAgIC8vICAgY29udGludWU7XG4gICAgICAvLyB9XG4gICAgICBpZiAoY29udi5wYXJzZVBhcmFtLmNoZWNrVHlwZSkge1xuICAgICAgICBjb25zdCBjb252ZXJ0RnVuYyA9IGNoZWNrVHlwZShpdGVtLCBoZWFkLCBpLCBjb252KTtcbiAgICAgICAgaXRlbSA9IGNvbnZlcnRGdW5jKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRQYXRoKHJlc3VsdFJvdywgaGVhZCwgaXRlbSwgY29udixpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgcmV0dXJuIHJlc3VsdFJvdztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCBidWlsdEluQ29udjogeyBba2V5OiBzdHJpbmddOiBDZWxsUGFyc2VyIH0gPSB7XG4gIFwic3RyaW5nXCI6IHN0cmluZ1R5cGUsXG4gIFwibnVtYmVyXCI6IG51bWJlclR5cGUsXG4gIFwib21pdFwiOiBmdW5jdGlvbiAoKSB7IH1cbn1cbmZ1bmN0aW9uIGdldENvbnZGdW5jKGhlYWQ6IHN0cmluZywgaTogbnVtYmVyLCBjb252OiBDb252ZXJ0ZXIpOiBDZWxsUGFyc2VyIHwgbnVsbCB7XG4gIGlmIChjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uQ29udltpXTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZmxhZyA9IGNvbnYucGFyc2VQYXJhbS5jb2xQYXJzZXJbaGVhZF07XG4gICAgaWYgKGZsYWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZsYWcgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGZsYWcgPSAoZmxhZyBhcyBDb2x1bW5QYXJhbSkuY2VsbFBhcnNlciB8fCBcInN0cmluZ1wiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZsYWcgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZsYWcgPSBmbGFnLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgYnVpbHRJbkZ1bmMgPSBidWlsdEluQ29udltmbGFnXTtcbiAgICAgIGlmIChidWlsdEluRnVuYykge1xuICAgICAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uQ29udltpXSA9IGJ1aWx0SW5GdW5jO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGZsYWcgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBmbGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uQ29udltpXSA9IG51bGw7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzZXRQYXRoKHJlc3VsdEpzb246IGFueSwgaGVhZDogc3RyaW5nLCB2YWx1ZTogYW55LCBjb252OiBDb252ZXJ0ZXIsaGVhZElkeDpudW1iZXIpIHtcbiAgaWYgKCFjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XSkge1xuICAgIGlmIChjb252LnBhcnNlUGFyYW0uZmxhdEtleXMpIHtcbiAgICAgIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtblZhbHVlU2V0dGVyW2hlYWRJZHhdID0gZmxhdFNldHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhlYWQuaW5kZXhPZihcIi5cIikgPiAtMSkge1xuICAgICAgICBpZiAoY29udi5wYXJzZVBhcmFtLmNvbFBhcnNlcltoZWFkXSAmJiAoY29udi5wYXJzZVBhcmFtLmNvbFBhcnNlcltoZWFkXSBhcyBDb2x1bW5QYXJhbSkuZmxhdCkge1xuICAgICAgICAgIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtblZhbHVlU2V0dGVyW2hlYWRJZHhdID0gZmxhdFNldHRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XSA9IGpzb25TZXR0ZXI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtblZhbHVlU2V0dGVyW2hlYWRJZHhdID0gZmxhdFNldHRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0ocmVzdWx0SnNvbiwgaGVhZCwgdmFsdWUpO1xuICAvLyBmbGF0U2V0dGVyKHJlc3VsdEpzb24sIGhlYWQsIHZhbHVlKTtcblxufVxuZnVuY3Rpb24gZmxhdFNldHRlcihyZXN1bHRKc29uOiBhbnksIGhlYWQ6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXN1bHRKc29uW2hlYWRdID0gdmFsdWU7XG59XG5mdW5jdGlvbiBqc29uU2V0dGVyKHJlc3VsdEpzb246IGFueSwgaGVhZDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIHNldChyZXN1bHRKc29uLCBoZWFkLCB2YWx1ZSk7XG59XG5cblxuZnVuY3Rpb24gY2hlY2tUeXBlKGl0ZW06IHN0cmluZywgaGVhZDogc3RyaW5nLCBoZWFkSWR4OiBudW1iZXIsIGNvbnY6IENvbnZlcnRlcik6IEZ1bmN0aW9uIHtcbiAgaWYgKGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0pIHtcbiAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XTtcbiAgfSBlbHNlIGlmIChoZWFkLmluZGV4T2YoJ251bWJlciMhJykgPiAtMSkge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdID0gbnVtYmVyVHlwZTtcbiAgfSBlbHNlIGlmIChoZWFkLmluZGV4T2YoJ3N0cmluZyMhJykgPiAtMSkge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdID0gc3RyaW5nVHlwZTtcbiAgfSBlbHNlIGlmIChjb252LnBhcnNlUGFyYW0uY2hlY2tUeXBlKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0gPSBkeW5hbWljVHlwZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XSA9IHN0cmluZ1R5cGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbnVtYmVyVHlwZShpdGVtKSB7XG4gIHZhciBydG4gPSBwYXJzZUZsb2F0KGl0ZW0pO1xuICBpZiAoaXNOYU4ocnRuKSkge1xuICAgIHJldHVybiBpdGVtO1xuICB9XG4gIHJldHVybiBydG47XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1R5cGUoaXRlbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gZHluYW1pY1R5cGUoaXRlbSkge1xuICB2YXIgdHJpbWVkID0gaXRlbS50cmltKCk7XG4gIGlmICh0cmltZWQgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gc3RyaW5nVHlwZShpdGVtKTtcbiAgfVxuICBpZiAobnVtUmVnLnRlc3QodHJpbWVkKSkge1xuICAgIHJldHVybiBudW1iZXJUeXBlKGl0ZW0pO1xuICB9IGVsc2UgaWYgKHRyaW1lZC5sZW5ndGggPT09IDUgJiYgdHJpbWVkLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIiB8fCB0cmltZWQubGVuZ3RoID09PSA0ICYmIHRyaW1lZC50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIikge1xuICAgIHJldHVybiBib29sZWFuVHlwZShpdGVtKTtcbiAgfSBlbHNlIGlmICh0cmltZWRbMF0gPT09IFwie1wiICYmIHRyaW1lZFt0cmltZWQubGVuZ3RoIC0gMV0gPT09IFwifVwiIHx8IHRyaW1lZFswXSA9PT0gXCJbXCIgJiYgdHJpbWVkW3RyaW1lZC5sZW5ndGggLSAxXSA9PT0gXCJdXCIpIHtcbiAgICByZXR1cm4ganNvblR5cGUoaXRlbSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cmluZ1R5cGUoaXRlbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYm9vbGVhblR5cGUoaXRlbSkge1xuICB2YXIgdHJpbWVkID0gaXRlbS50cmltKCk7XG4gIGlmICh0cmltZWQubGVuZ3RoID09PSA1ICYmIHRyaW1lZC50b0xvd2VyQ2FzZSgpID09PSBcImZhbHNlXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24ganNvblR5cGUoaXRlbSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbn1cbiJdfQ==
"use strict";
// import {Converter} from "../src/Converter";
// import csv from "../src";
// var assert = require("assert");
// var fs = require("fs");
// var sandbox = require("sinon").sandbox.create();
// var file = __dirname + "/data/testData";
// var trailCommaData = __dirname + "/data/trailingComma";
// describe("CSV Convert in Background Process", function () {
// afterEach(function () {
// sandbox.restore();
// });
// it("should read from a stream", function (done) {
// var obj = new Converter({
// fork: true
// });
// var stream = fs.createReadStream(file);
// obj.then(function (obj) {
// assert.equal(obj.length, 2);
// done();
// },(err)=>{
// console.log(err.toString());
// });
// stream.pipe(obj);
// });
// it("should call onNext once a row is parsed.", function (done) {
// var obj = new Converter({fork:true});
// var stream = fs.createReadStream(file);
// var called = false;
// obj.subscribe(function (resultRow) {
// assert(resultRow);
// called = true;
// });
// obj.on("done", function () {
// assert(called);
// done();
// });
// stream.pipe(obj);
// });
// it("should emit end_parsed message once it is finished.", function (done) {
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length === 2);
// assert(result[0].date);
// assert(result[0].employee);
// assert(result[0].employee.name);
// assert(result[0].employee.age);
// assert(result[0].employee.number);
// assert(result[0].employee.key.length === 2);
// assert(result[0].address.length === 2);
// done();
// });
// fs.createReadStream(file).pipe(obj);
// });
// it("should handle traling comma gracefully", function (done) {
// var stream = fs.createReadStream(trailCommaData);
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length > 0);
// done();
// });
// stream.pipe(obj);
// });
// it("should handle comma in column which is surrounded by qoutes", function (done) {
// var testData = __dirname + "/data/dataWithComma";
// var rs = fs.createReadStream(testData);
// var obj = new Converter({
// "quote": "#",
// "fork":true
// });
// obj.then(function (result) {
// assert(result[0].col1 === "\"Mini. Sectt");
// assert.equal(result[3].col2, "125001,fenvkdsf");
// // console.log(result);
// done();
// });
// rs.pipe(obj);
// });
// it("should be able to convert a csv to column array data", function (done) {
// var columArrData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(columArrData);
// var result:any = {};
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function () {
// assert(result.TIMESTAMP.length === 5);
// done();
// });
// //record_parsed will be emitted each time a row has been parsed.
// csvConverter.subscribe(function (resultRow, rowIndex) {
// for (var key in resultRow) {
// if (resultRow.hasOwnProperty(key)) {
// if (!result[key] || !(result[key] instanceof Array)) {
// result[key] = [];
// }
// result[key][rowIndex] = resultRow[key];
// }
// }
// });
// rs.pipe(csvConverter);
// });
// it("should be able to convert csv string directly", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert.equal(jsonObj.length, 2);
// });
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// });
// it("should be able to convert csv string with error", function (done) {
// var testData = __dirname + "/data/dataWithUnclosedQuotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(undefined, function (err) {
// // console.log(err);
// assert(err);
// assert.equal(err.err, "unclosed_quote");
// done();
// });
// });
// it("should be able to convert csv string without callback provided", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// csvConverter.fromString(data);
// });
// it("should be able to handle columns with double quotes", function (done) {
// var testData = __dirname + "/data/dataWithQoutes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
// assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
// done();
// });
// });
// it("should be able to handle columns with two double quotes", function (done) {
// var testData = __dirname + "/data/twodoublequotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert.equal(jsonObj[0].title, "\"");
// assert.equal(jsonObj[0].data, "xyabcde");
// assert.equal(jsonObj[0].uuid, "fejal\"eifa");
// assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
// assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
// done();
// });
// });
// it("should handle empty csv file", function (done) {
// var testData = __dirname + "/data/emptyFile";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 0);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse large csv file", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// var count = 0;
// csvConverter.subscribe(function () {
// // console.log(arguments);
// count++;
// });
// csvConverter.then(function () {
// assert.equal(count, 5290);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse data and covert to specific types", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true,
// colParser: {
// "column6": "string",
// "column7": "string"
// }
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "number");
// assert(typeof d.column2 === "string");
// assert.equal(d["colume4"], "someinvaliddate");
// assert(d.column5.hello === "world");
// assert(d.column6 === '{"hello":"world"}');
// assert(d.column7 === "1234");
// assert(d.column8 === "abcd");
// assert(d.column9 === true);
// assert(d.column10[0] === 23);
// assert(d.column10[1] === 31);
// assert(d.column11[0].hello === "world");
// assert(d["name#!"] === false);
// });
// csvConverter.on("done", function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should turn off field type check", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: false
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "string");
// assert(typeof d.column2 === "string");
// assert(d["column3"] === "2012-01-01");
// assert(d["colume4"] === "someinvaliddate");
// assert(d.column5 === '{"hello":"world"}');
// assert.equal(d["column6"], '{"hello":"world"}');
// assert(d["column7"] === "1234");
// assert(d["column8"] === "abcd");
// assert(d.column9 === "true");
// assert(d.column10[0] === "23");
// assert(d.column10[1] === "31");
// assert(d["name#!"] === 'false');
// });
// csvConverter.then(function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should emit data event correctly", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var csvConverter = new Converter({
// fork:true
// },{objectMode:true});
// var count = 0;
// csvConverter.on("data", function (d) {
// count++;
// });
// csvConverter.on("done", function () {
// assert.equal(csvConverter.parsedLineNumber, 5290);
// done();
// });
// var rs = fs.createReadStream(testData);
// rs.pipe(csvConverter);
// });
// it("should process column with linebreaks", function (done) {
// var testData = __dirname + "/data/lineBreak";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true
// });
// csvConverter.subscribe(function (d) {
// assert(d.Period === 13);
// assert(d["Apparent age"] === "Unknown");
// done();
// });
// rs.pipe(csvConverter);
// });
// it("be able to ignore empty columns", function (done) {
// var testData = __dirname + "/data/dataIgnoreEmpty";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(csv({
// ignoreEmpty: true ,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 3);
// assert(j.col2.length === 2);
// assert(j.col2[1] === "d3");
// assert(j.col4.col3 === undefined);
// assert(j.col4.col5 === "world");
// assert(res[1].col1 === "d2");
// assert(res[2].col1 === "d4");
// done();
// });
// });
// it("should allow no header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.field1 === "CC102-PDMI-001");
// assert(j.field2 === "eClass_5.1.3");
// done();
// });
// });
// it("should allow customised header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b"],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.a === "CC102-PDMI-001");
// assert(j.b === "eClass_5.1.3");
// assert(j.field3 === "10/3/2014");
// done();
// });
// });
// it("should allow customised header to override existing header", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// headers: [],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.field1 === "Food Factory");
// assert(j.field2 === "Oscar");
// done();
// });
// });
// it("should handle when there is an empty string", function (done) {
// var testData = __dirname + "/data/dataWithEmptyString";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b", "c"],
// checkType: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// // assert(res.length===2);
// assert(j.a === "green");
// assert(j.b === 40);
// assert.equal(j.c, "");
// done();
// });
// });
// it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 3 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 9 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should emit eol event when line ending is detected as CRLF", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\r\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should emit eol event when line ending is detected as LF", function (done) {
// var testData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should remove the Byte Order Mark (BOM) from input", function (done) {
// var testData = __dirname + "/data/dataNoTrimBOM";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then( function (res) {
// var j = res[0];
// assert(res.length===2);
// assert(j.name === "joe");
// assert(j.age === "20");
// done();
// });
// });
// it("should set output as csv", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var numOfRow = 0;
// csv({ output: "csv",fork:true })
// .fromStream(rs)
// .subscribe(function (row, idx) {
// numOfRow++;
// assert(row);
// assert(idx >= 0);
// })
// .on("done", function (error) {
// assert(!error);
// assert.equal(2, numOfRow);
// assert(numOfRow !== 0);
// done();
// });
// });
// it("should process long header", function (done) {
// var testData = __dirname + "/data/longHeader";
// var rs = fs.createReadStream(testData, { highWaterMark: 100 });
// var numOfRow = 0;
// var numOfJson = 0;
// csv({fork:true}, { highWaterMark: 100 })
// .fromStream(rs)
// .subscribe(function (res, idx) {
// numOfJson++;
// assert.equal(res.Date, '8/26/16');
// assert(idx >= 0);
// })
// .on("done", function () {
// assert(numOfJson === 1);
// done();
// });
// });
// it("should parse #139", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/data#139");
// csv({fork:true})
// .fromStream(rs)
// .then(function (res) {
// assert.equal(res[1].field3, "9001009395 9001009990");
// done();
// });
// });
// it("should ignore column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// var headerEmitted = false;
// csv({
// ignoreColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), -1);
// assert.equal(header.indexOf("UPDATE"), 0);
// if (headerEmitted) {
// throw ("header event should only happen once")
// }
// headerEmitted = true;
// })
// // .on("csv", function (row, idx) {
// // if (!headerEmitted) {
// // throw ("header should be emitted before any data events");
// // }
// // assert(idx >= 0);
// // if (idx === 1) {
// // assert.equal(row[0], "n");
// // }
// // })
// .subscribe(function (j, idx) {
// // console.log(j);
// assert(!j.TIMESTAMP);
// assert(idx >= 0);
// })
// .on("done", function (err) {
// assert(!err);
// assert(headerEmitted);
// done();
// });
// });
// it("should include column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// csv({
// includeColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), 0);
// assert.equal(header.indexOf("UPDATE"), -1);
// assert.equal(header.length, 1);
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// if (idx === 1) {
// assert.equal(j.TIMESTAMP, "abc, def, ccc");
// }
// assert(!j.UID)
// assert(!j['BYTES SENT'])
// })
// .on("done", function () {
// done();
// });
// });
// it("should allow headers and include columns to be given as reference to the same var", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var headers = [
// 'first',
// 'second',
// 'third',
// ];
// var expected = headers;
// csv({
// headers: headers,
// includeColumns: /(first|second|third)/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// expected.forEach(function (value, index) {
// assert.equal(header.indexOf(value), index);
// });
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// assert.equal(expected.length, Object.keys(j).length);
// expected.forEach(function (attribute) {
// assert(j.hasOwnProperty(attribute));
// });
// })
// .on("done", function () {
// done();
// });
// });
// it("should leave provided params objects unmutated", function() {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var includeColumns = [
// 'fieldA.title',
// 'description',
// ];
// return csv({
// includeColumns: /(fieldA\.title|description)/,
// fork:true
// })
// .fromStream(rs)
// .on("json", function(j, idx) {
// assert(idx >= 0);
// })
// .on("header", function(header) {
// includeColumns.forEach(function (value, index) {
// assert.equal(index, header.indexOf(value));
// });
// })
// });
// it("should accept pipe as quote", function (done) {
// csv({
// quote: "|",
// output: "csv",
// "fork":true
// })
// .fromFile(__dirname + "/data/pipeAsQuote")
// .subscribe(function (csv) {
// assert.equal(csv[2], "blahhh, blah");
// })
// .on('done', function () {
// done()
// });
// })
// it("should allow async subscribe function", () => {
// return csv({ trim: true,fork:true })
// .fromString(`a,b,c
// 1,2,3
// 4,5,6`)
// .subscribe((d) => {
// return new Promise((resolve, reject) => {
// setTimeout(() => {
// d.a = 10;
// resolve();
// }, 20);
// })
// })
// .then((d) => {
// assert.equal(d[0].a, 10);
// assert.equal(d[1].a, 10);
// })
// })
// it("should omit a column", () => {
// return csv({
// colParser: {
// "a": "omit"
// },
// fork:true
// })
// .fromString(`a,b,c
// 1,2,3
// fefe,5,6`)
// .then((d) => {
// assert.strictEqual(d[0].a, undefined);
// assert.equal(d[1].a, undefined);
// })
// })
// });
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci5mb3JrLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0Q1NWQ29udmVydGVyLmZvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhDQUE4QztBQUM5Qyw0QkFBNEI7QUFDNUIsa0NBQWtDO0FBQ2xDLDBCQUEwQjtBQUMxQixtREFBbUQ7QUFDbkQsMkNBQTJDO0FBQzNDLDBEQUEwRDtBQUMxRCw4REFBOEQ7QUFDOUQsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixRQUFRO0FBR1Isc0RBQXNEO0FBQ3RELGdDQUFnQztBQUNoQyxtQkFBbUI7QUFDbkIsVUFBVTtBQUNWLDhDQUE4QztBQUM5QyxnQ0FBZ0M7QUFDaEMscUNBQXFDO0FBQ3JDLGdCQUFnQjtBQUNoQixpQkFBaUI7QUFDakIscUNBQXFDO0FBQ3JDLFVBQVU7QUFDVix3QkFBd0I7QUFDeEIsUUFBUTtBQUVSLHFFQUFxRTtBQUNyRSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBQzlDLDBCQUEwQjtBQUMxQiwyQ0FBMkM7QUFDM0MsMkJBQTJCO0FBQzNCLHVCQUF1QjtBQUN2QixVQUFVO0FBQ1YsbUNBQW1DO0FBQ25DLHdCQUF3QjtBQUN4QixnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLHdCQUF3QjtBQUN4QixRQUFRO0FBRVIsZ0ZBQWdGO0FBQ2hGLDRDQUE0QztBQUM1QyxtQ0FBbUM7QUFDbkMsd0JBQXdCO0FBQ3hCLHFDQUFxQztBQUNyQyxnQ0FBZ0M7QUFDaEMsb0NBQW9DO0FBQ3BDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCxnREFBZ0Q7QUFDaEQsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDViwyQ0FBMkM7QUFDM0MsUUFBUTtBQUVSLG1FQUFtRTtBQUNuRSx3REFBd0Q7QUFDeEQs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cnRlclwiO1xuLy8gaW1wb3J0IGNzdiBmcm9tIFwiLi4vc3JjXCI7XG4vLyB2YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbi8vIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbi8vIHZhciBzYW5kYm94ID0gcmVxdWlyZShcInNpbm9uXCIpLnNhbmRib3guY3JlYXRlKCk7XG4vLyB2YXIgZmlsZSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vIHZhciB0cmFpbENvbW1hRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHJhaWxpbmdDb21tYVwiO1xuLy8gZGVzY3JpYmUoXCJDU1YgQ29udmVydCBpbiBCYWNrZ3JvdW5kIFByb2Nlc3NcIiwgZnVuY3Rpb24gKCkge1xuLy8gICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuLy8gICAgIHNhbmRib3gucmVzdG9yZSgpO1xuLy8gICB9KTtcblxuXG4vLyAgIGl0KFwic2hvdWxkIHJlYWQgZnJvbSBhIHN0cmVhbVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6IHRydWVcbi8vICAgICB9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSwoZXJyKT0+e1xuLy8gICAgICAgY29uc29sZS5sb2coZXJyLnRvU3RyaW5nKCkpO1xuLy8gICAgIH0pO1xuLy8gICAgIHN0cmVhbS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGNhbGwgb25OZXh0IG9uY2UgYSByb3cgaXMgcGFyc2VkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4vLyAgICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0Um93KTtcbi8vICAgICAgIGNhbGxlZCA9IHRydWU7XG4vLyAgICAgfSk7XG4vLyAgICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQoY2FsbGVkKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0KTtcbi8vICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZGF0ZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZW1wbG95ZWUubmFtZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmFnZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm51bWJlcik7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmtleS5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdFswXS5hZGRyZXNzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSB0cmFsaW5nIGNvbW1hIGdyYWNlZnVsbHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0cmFpbENvbW1hRGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIG9iai50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdC5sZW5ndGggPiAwKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgY29tbWEgaW4gY29sdW1uIHdoaWNoIGlzIHN1cnJvdW5kZWQgYnkgcW91dGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aENvbW1hXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgXCJxdW90ZVwiOiBcIiNcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmNvbDEgPT09IFwiXFxcIk1pbmkuIFNlY3R0XCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFszXS5jb2wyLCBcIjEyNTAwMSxmZW52a2RzZlwiKTtcbi8vICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgYSBjc3YgdG8gY29sdW1uIGFycmF5IGRhdGFcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgY29sdW1BcnJEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oY29sdW1BcnJEYXRhKTtcbi8vICAgICB2YXIgcmVzdWx0OmFueSA9IHt9O1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICAvL2VuZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIG9uY2UgcGFyc2luZyBmaW5pc2hlZFxuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQuVElNRVNUQU1QLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG5cbi8vICAgICAvL3JlY29yZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIGVhY2ggdGltZSBhIHJvdyBoYXMgYmVlbiBwYXJzZWQuXG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93LCByb3dJbmRleCkge1xuLy8gICAgICAgZm9yICh2YXIga2V5IGluIHJlc3VsdFJvdykge1xuLy8gICAgICAgICBpZiAocmVzdWx0Um93Lmhhc093blByb3BlcnR5KGtleSkpIHtcbi8vICAgICAgICAgICBpZiAoIXJlc3VsdFtrZXldIHx8ICEocmVzdWx0W2tleV0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbi8vICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW107XG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICAgIHJlc3VsdFtrZXldW3Jvd0luZGV4XSA9IHJlc3VsdFJvd1trZXldO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyBkaXJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIpO1xuLy8gICAgICAgYXNzZXJ0KGVycik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgY29sdW1ucyB3aXRoIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbi8vICAgICAgIGFzc2VydChqc29uT2JqWzBdLlRJTUVTVEFNUCA9PT0gJzEzOTU0MjY0XCIyMicsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMF0uVElNRVNUQU1QKSk7XG5cbi8vICAgICAgIGFzc2VydChqc29uT2JqWzFdLlRJTUVTVEFNUCA9PT0gJ2FiYywgZGVmLCBjY2MnLCBKU09OLnN0cmluZ2lmeShqc29uT2JqWzFdLlRJTUVTVEFNUCkpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBjb2x1bW5zIHdpdGggdHdvIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL3R3b2RvdWJsZXF1b3Rlc1wiO1xuLy8gICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgbGFyZ2UgY3N2IGZpbGVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhhcmd1bWVudHMpO1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgZGF0YSBhbmQgY292ZXJ0IHRvIHNwZWNpZmljIHR5cGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFR5cGVcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBmb3JrOnRydWUsXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBjb2xQYXJzZXI6IHtcbi8vICAgICAgICAgXCJjb2x1bW42XCI6IFwic3RyaW5nXCIsXG4vLyAgICAgICAgIFwiY29sdW1uN1wiOiBcInN0cmluZ1wiXG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjEgPT09IFwibnVtYmVyXCIpO1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjIgPT09IFwic3RyaW5nXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGRbXCJjb2x1bWU0XCJdLCBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUuaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW42ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW43ID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW44ID09PSBcImFiY2RcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSB0cnVlKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSAyMyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW4xMFsxXSA9PT0gMzEpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTFbMF0uaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gZmFsc2UpO1xuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgdHVybiBvZmYgZmllbGQgdHlwZSBjaGVja1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgZm9yazp0cnVlLFxuLy8gICAgICAgY2hlY2tUeXBlOiBmYWxzZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydChkW1wiY29sdW1uM1wiXSA9PT0gXCIyMDEyLTAxLTAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bWU0XCJdID09PSBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUgPT09ICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1uNlwiXSwgJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bW43XCJdID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcImNvbHVtbjhcIl0gPT09IFwiYWJjZFwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjkgPT09IFwidHJ1ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSBcIjIzXCIpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IFwiMzFcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gJ2ZhbHNlJyk7XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBkYXRhIGV2ZW50IGNvcnJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbGFyZ2UtY3N2LXNhbXBsZS5jc3ZcIjtcblxuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0se29iamVjdE1vZGU6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydC5lcXVhbChjc3ZDb252ZXJ0ZXIucGFyc2VkTGluZU51bWJlciwgNTI5MCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBwcm9jZXNzIGNvbHVtbiB3aXRoIGxpbmVicmVha3NcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xpbmVCcmVha1wiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZSxcbi8vICAgICAgIGNoZWNrVHlwZTogdHJ1ZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydChkLlBlcmlvZCA9PT0gMTMpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJBcHBhcmVudCBhZ2VcIl0gPT09IFwiVW5rbm93blwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwiYmUgYWJsZSB0byBpZ25vcmUgZW1wdHkgY29sdW1uc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YUlnbm9yZUVtcHR5XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShjc3YoeyBcbi8vICAgICAgIGlnbm9yZUVtcHR5OiB0cnVlICxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuLy8gICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDMpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMi5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMlsxXSA9PT0gXCJkM1wiKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sMyA9PT0gdW5kZWZpbmVkKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sNSA9PT0gXCJ3b3JsZFwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMV0uY29sMSA9PT0gXCJkMlwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMl0uY29sMSA9PT0gXCJkNFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgbm8gaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7IFxuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcbi8vICAgICAgIGFzc2VydChyZXMubGVuZ3RoID09PSA1KTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGN1c3RvbWlzZWQgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBub2hlYWRlcjogdHJ1ZSxcbi8vICAgICAgIGhlYWRlcnM6IFtcImFcIiwgXCJiXCJdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBhc3NlcnQoai5hID09PSBcIkNDMTAyLVBETUktMDAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGouYiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDMgPT09IFwiMTAvMy8yMDE0XCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlciB0byBvdmVycmlkZSBleGlzdGluZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGhlYWRlcnM6IFtdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiRm9vZCBGYWN0b3J5XCIpO1xuLy8gICAgICAgYXNzZXJ0KGouZmllbGQyID09PSBcIk9zY2FyXCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgd2hlbiB0aGVyZSBpcyBhbiBlbXB0eSBzdHJpbmdcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoRW1wdHlTdHJpbmdcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiLCBcImNcIl0sXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcblxuLy8gICAgICAgLy8gYXNzZXJ0KHJlcy5sZW5ndGg9PT0yKTtcbi8vICAgICAgIGFzc2VydChqLmEgPT09IFwiZ3JlZW5cIik7XG4vLyAgICAgICBhc3NlcnQoai5iID09PSA0MCk7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoai5jLCBcIlwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBpcyBzbWFsbGVyIHRoYW4gaGVhZGVyIHJvdyBsZW5ndGhcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiAzIH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBlbmRzIGluIG1pZGRsZSBvZiBDUkxGIGxpbmUgYnJlYWtcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiA5IH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBlb2wgZXZlbnQgd2hlbiBsaW5lIGVuZGluZyBpcyBkZXRlY3RlZCBhcyBDUkxGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCByZW1vdmUgdGhlIEJ5dGUgT3JkZXIgTWFyayAoQk9NKSBmcm9tIGlucHV0XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQk9NXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oIGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuXG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aD09PTIpO1xuLy8gICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4vLyAgICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIHNldCBvdXRwdXQgYXMgY3N2XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBudW1PZlJvdyA9IDA7XG4vLyAgICAgY3N2KHsgb3V0cHV0OiBcImNzdlwiLGZvcms6dHJ1ZSB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChyb3csIGlkeCkge1xuLy8gICAgICAgICBudW1PZlJvdysrO1xuLy8gICAgICAgICBhc3NlcnQocm93KTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG5cbi8vICAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKGVycm9yKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyb3IpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoMiwgbnVtT2ZSb3cpO1xuLy8gICAgICAgICBhc3NlcnQobnVtT2ZSb3cgIT09IDApO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIHByb2Nlc3MgbG9uZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xvbmdIZWFkZXJcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhLCB7IGhpZ2hXYXRlck1hcms6IDEwMCB9KTtcbi8vICAgICB2YXIgbnVtT2ZSb3cgPSAwO1xuLy8gICAgIHZhciBudW1PZkpzb24gPSAwO1xuLy8gICAgIGNzdih7Zm9yazp0cnVlfSwgeyBoaWdoV2F0ZXJNYXJrOiAxMDAgfSlcbi8vICAgICAgIC5mcm9tU3RyZWFtKHJzKVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAocmVzLCBpZHgpIHtcbi8vICAgICAgICAgbnVtT2ZKc29uKys7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChyZXMuRGF0ZSwgJzgvMjYvMTYnKTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgYXNzZXJ0KG51bU9mSnNvbiA9PT0gMSk7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgIzEzOVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhIzEzOVwiKTtcbi8vICAgICBjc3Yoe2Zvcms6dHJ1ZX0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5maWVsZDMsIFwiOTAwMTAwOTM5NSA5MDAxMDA5OTkwXCIpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgaWdub3JlIGNvbHVtblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiKTtcbi8vICAgICB2YXIgaGVhZGVyRW1pdHRlZCA9IGZhbHNlO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpZ25vcmVDb2x1bW5zOiAvVElNRVNUQU1QLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZihcIlRJTUVTVEFNUFwiKSwgLTEpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIDApO1xuLy8gICAgICAgICBpZiAoaGVhZGVyRW1pdHRlZCkge1xuLy8gICAgICAgICAgIHRocm93IChcImhlYWRlciBldmVudCBzaG91bGQgb25seSBoYXBwZW4gb25jZVwiKVxuLy8gICAgICAgICB9XG4vLyAgICAgICAgIGhlYWRlckVtaXR0ZWQgPSB0cnVlO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC8vIC5vbihcImNzdlwiLCBmdW5jdGlvbiAocm93LCBpZHgpIHtcbi8vICAgICAgIC8vICAgaWYgKCFoZWFkZXJFbWl0dGVkKSB7XG4vLyAgICAgICAvLyAgICAgdGhyb3cgKFwiaGVhZGVyIHNob3VsZCBiZSBlbWl0dGVkIGJlZm9yZSBhbnkgZGF0YSBldmVudHNcIik7XG4vLyAgICAgICAvLyAgIH1cbi8vICAgICAgIC8vICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIC8vICAgaWYgKGlkeCA9PT0gMSkge1xuLy8gICAgICAgLy8gICAgIGFzc2VydC5lcXVhbChyb3dbMF0sIFwiblwiKTtcbi8vICAgICAgIC8vICAgfVxuLy8gICAgICAgLy8gfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICAvLyBjb25zb2xlLmxvZyhqKTtcbi8vICAgICAgICAgYXNzZXJ0KCFqLlRJTUVTVEFNUCk7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyKTtcbi8vICAgICAgICAgYXNzZXJ0KGhlYWRlckVtaXR0ZWQpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGluY2x1ZGUgY29sdW1uXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCIpO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogL1RJTUVTVEFNUC8sXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAub24oXCJoZWFkZXJcIiwgZnVuY3Rpb24gKGhlYWRlcikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJUSU1FU1RBTVBcIiksIDApO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIC0xKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5sZW5ndGgsIDEpO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuLy8gICAgICAgICBpZiAoaWR4ID09PSAxKSB7XG4vLyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGouVElNRVNUQU1QLCBcImFiYywgZGVmLCBjY2NcIik7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgYXNzZXJ0KCFqLlVJRClcbi8vICAgICAgICAgYXNzZXJ0KCFqWydCWVRFUyBTRU5UJ10pXG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgaGVhZGVycyBhbmQgaW5jbHVkZSBjb2x1bW5zIHRvIGJlIGdpdmVuIGFzIHJlZmVyZW5jZSB0byB0aGUgc2FtZSB2YXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGhlYWRlcnMgPSBbXG4vLyAgICAgICAnZmlyc3QnLFxuLy8gICAgICAgJ3NlY29uZCcsXG4vLyAgICAgICAndGhpcmQnLFxuLy8gICAgIF07XG5cbi8vICAgICB2YXIgZXhwZWN0ZWQgPSBoZWFkZXJzO1xuXG4vLyAgICAgY3N2KHtcbi8vICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogLyhmaXJzdHxzZWNvbmR8dGhpcmQpLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuLy8gICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZih2YWx1ZSksIGluZGV4KTtcbi8vICAgICAgICAgfSk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChleHBlY3RlZC5sZW5ndGgsIE9iamVjdC5rZXlzKGopLmxlbmd0aCk7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuLy8gICAgICAgICAgIGFzc2VydChqLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZSkpO1xuLy8gICAgICAgICB9KTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgZG9uZSgpO1xuLy8gICAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGxlYXZlIHByb3ZpZGVkIHBhcmFtcyBvYmplY3RzIHVubXV0YXRlZFwiLCBmdW5jdGlvbigpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGluY2x1ZGVDb2x1bW5zID0gW1xuLy8gICAgICAgJ2ZpZWxkQS50aXRsZScsXG4vLyAgICAgICAnZGVzY3JpcHRpb24nLFxuLy8gICAgIF07XG5cblxuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgaW5jbHVkZUNvbHVtbnM6IC8oZmllbGRBXFwudGl0bGV8ZGVzY3JpcHRpb24pLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImpzb25cIiwgZnVuY3Rpb24oaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiaGVhZGVyXCIsIGZ1bmN0aW9uKGhlYWRlcikge1xuLy8gICAgICAgICBpbmNsdWRlQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbi8vICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW5kZXgsIGhlYWRlci5pbmRleE9mKHZhbHVlKSk7XG4vLyAgICAgICAgIH0pO1xuLy8gICAgICAgfSlcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGFjY2VwdCBwaXBlIGFzIHF1b3RlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgY3N2KHtcbi8vICAgICAgIHF1b3RlOiBcInxcIixcbi8vICAgICAgIG91dHB1dDogXCJjc3ZcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvcGlwZUFzUXVvdGVcIilcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGNzdikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoY3N2WzJdLCBcImJsYWhoaCwgYmxhaFwiKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oJ2RvbmUnLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKVxuLy8gICAgICAgfSk7XG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGFzeW5jIHN1YnNjcmliZSBmdW5jdGlvblwiLCAoKSA9PiB7XG4vLyAgICAgcmV0dXJuIGNzdih7IHRyaW06IHRydWUsZm9yazp0cnVlIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgICAxLDIsM1xuLy8gICAgIDQsNSw2YClcbi8vICAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbi8vICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8vICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbi8vICAgICAgICAgICAgIGQuYSA9IDEwO1xuLy8gICAgICAgICAgICAgcmVzb2x2ZSgpO1xuLy8gICAgICAgICAgIH0sIDIwKTtcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0pXG4vLyAgICAgICAudGhlbigoZCkgPT4ge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAxMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIDEwKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIG9taXQgYSBjb2x1bW5cIiwgKCkgPT4ge1xuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgY29sUGFyc2VyOiB7XG4vLyAgICAgICAgIFwiYVwiOiBcIm9taXRcIlxuLy8gICAgICAgfSxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgMSwyLDNcbi8vICAgZmVmZSw1LDZgKVxuLy8gICAgICAgLnRoZW4oKGQpID0+IHtcbi8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4gIFxuLy8gfSk7XG4iXX0=
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var getEol_1 = __importDefault(require("./getEol"));
var util_1 = require("./util");
var defaulDelimiters = [",", "|", "\t", ";", ":"];
var RowSplit = /** @class */ (function () {
function RowSplit(conv) {
this.conv = conv;
this.cachedRegExp = {};
this.delimiterEmitted = false;
this._needEmitDelimiter = undefined;
this.quote = conv.parseParam.quote;
this.trim = conv.parseParam.trim;
this.escape = conv.parseParam.escape;
}
Object.defineProperty(RowSplit.prototype, "needEmitDelimiter", {
get: function () {
if (this._needEmitDelimiter === undefined) {
this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0;
}
return this._needEmitDelimiter;
},
enumerable: true,
configurable: true
});
RowSplit.prototype.parse = function (fileline) {
if (fileline.length === 0 || (this.conv.parseParam.ignoreEmpty && fileline.trim().length === 0)) {
return { cells: [], closed: true };
}
var quote = this.quote;
var trim = this.trim;
var escape = this.escape;
if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") {
this.conv.parseRuntime.delimiter = this.getDelimiter(fileline);
}
if (this.needEmitDelimiter && !this.delimiterEmitted) {
this.conv.emit("delimiter", this.conv.parseRuntime.delimiter);
this.delimiterEmitted = true;
}
var delimiter = this.conv.parseRuntime.delimiter;
var rowArr = fileline.split(delimiter);
if (quote === "off") {
if (trim) {
for (var i = 0; i < rowArr.length; i++) {
rowArr[i] = rowArr[i].trim();
}
}
return { cells: rowArr, closed: true };
}
else {
return this.toCSVRow(rowArr, trim, quote, delimiter);
}
};
RowSplit.prototype.toCSVRow = function (rowArr, trim, quote, delimiter) {
var row = [];
var inquote = false;
var quoteBuff = '';
for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) {
var e = rowArr[i];
if (!inquote && trim) {
e = util_1.trimLeft(e);
}
var len = e.length;
if (!inquote) {
if (len === 2 && e === this.quote + this.quote) {
row.push("");
continue;
}
else if (this.isQuoteOpen(e)) { //quote open
e = e.substr(1);
if (this.isQuoteClose(e)) { //quote close
e = e.substring(0, e.lastIndexOf(quote));
e = this.escapeQuote(e);
row.push(e);
continue;
}
else if (e.indexOf(quote) !== -1) {
var count = 0;
for (var _i = 0, e_1 = e; _i < e_1.length; _i++) {
var c = e_1[_i];
if (c === quote) {
count++;
}
}
if (count % 2 === 1) {
if (trim) {
e = util_1.trimRight(e);
}
row.push(quote + e);
continue;
}
else {
inquote = true;
quoteBuff += e;
continue;
}
}
else {
inquote = true;
quoteBuff += e;
continue;
}
}
else {
if (trim) {
e = util_1.trimRight(e);
}
row.push(e);
continue;
}
}
else { //previous quote not closed
if (this.isQuoteClose(e)) { //close double quote
inquote = false;
e = e.substr(0, len - 1);
quoteBuff += delimiter + e;
quoteBuff = this.escapeQuote(quoteBuff);
if (trim) {
quoteBuff = util_1.trimRight(quoteBuff);
}
row.push(quoteBuff);
quoteBuff = "";
}
else {
quoteBuff += delimiter + e;
}
}
}
// if (!inquote && param._needFilterRow) {
// row = filterRow(row, param);
// }
return { cells: row, closed: !inquote };
};
RowSplit.prototype.getDelimiter = function (fileline) {
var checker;
if (this.conv.parseParam.delimiter === "auto") {
checker = defaulDelimiters;
}
else if (this.conv.parseParam.delimiter instanceof Array) {
checker = this.conv.parseParam.delimiter;
}
else {
return this.conv.parseParam.delimiter;
}
var count = 0;
var rtn = ",";
checker.forEach(function (delim) {
var delimCount = fileline.split(delim).length;
if (delimCount > count) {
rtn = delim;
count = delimCount;
}
});
return rtn;
};
RowSplit.prototype.isQuoteOpen = function (str) {
var quote = this.quote;
var escape = this.escape;
return str[0] === quote && (str[1] !== quote ||
str[1] === escape && (str[2] === quote || str.length === 2));
};
RowSplit.prototype.isQuoteClose = function (str) {
var quote = this.quote;
var escape = this.escape;
if (this.conv.parseParam.trim) {
str = util_1.trimRight(str);
}
var count = 0;
var idx = str.length - 1;
while (str[idx] === quote || str[idx] === escape) {
idx--;
count++;
}
return count % 2 !== 0;
};
// private twoDoubleQuote(str: string): string {
// var twoQuote = this.quote + this.quote;
// var curIndex = -1;
// while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
// str = str.substring(0, curIndex) + str.substring(++curIndex);
// }
// return str;
// }
RowSplit.prototype.escapeQuote = function (segment) {
var key = "es|" + this.quote + "|" + this.escape;
if (this.cachedRegExp[key] === undefined) {
this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g');
}
var regExp = this.cachedRegExp[key];
// console.log(regExp,segment);
return segment.replace(regExp, this.quote);
};
RowSplit.prototype.parseMultiLines = function (lines) {
var csvLines = [];
var left = "";
while (lines.length) {
var line = left + lines.shift();
var row = this.parse(line);
if (row.cells.length === 0 && this.conv.parseParam.ignoreEmpty) {
continue;
}
if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) {
if (this.conv.parseRuntime.selectedColumns) {
csvLines.push(util_1.filterArray(row.cells, this.conv.parseRuntime.selectedColumns));
}
else {
csvLines.push(row.cells);
}
left = "";
}
else {
left = line + (getEol_1.default(line, this.conv.parseRuntime) || "\n");
}
}
return { rowsCells: csvLines, partial: left };
};
return RowSplit;
}());
exports.RowSplit = RowSplit;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLG9EQUE4QjtBQUM5QiwrQkFBMEQ7QUFFMUQsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRDtJQWFFLGtCQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztRQVQzQixpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFhLFNBQVMsQ0FBQztRQVEvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBVkQsc0JBQVksdUNBQWlCO2FBQTdCO1lBQ0UsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBTUQsd0JBQUssR0FBTCxVQUFNLFFBQWtCO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVB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eyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgeyBGaWxlbGluZSB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgZmlsdGVyQXJyYXksIHRyaW1MZWZ0LCB0cmltUmlnaHQgfSBmcm9tIFwiLi91dGlsXCI7XG5cbmNvbnN0IGRlZmF1bERlbGltaXRlcnMgPSBbXCIsXCIsIFwifFwiLCBcIlxcdFwiLCBcIjtcIiwgXCI6XCJdO1xuZXhwb3J0IGNsYXNzIFJvd1NwbGl0IHtcbiAgcHJpdmF0ZSBxdW90ZTogc3RyaW5nO1xuICBwcml2YXRlIHRyaW06IGJvb2xlYW47XG4gIHByaXZhdGUgZXNjYXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FjaGVkUmVnRXhwOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9ID0ge307XG4gIHByaXZhdGUgZGVsaW1pdGVyRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdERlbGltaXRlcj86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RGVsaW1pdGVyKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9IHRoaXMuY29udi5saXN0ZW5lcnMoXCJkZWxpbWl0ZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0RGVsaW1pdGVyO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udjogQ29udmVydGVyKSB7XG4gICAgdGhpcy5xdW90ZSA9IGNvbnYucGFyc2VQYXJhbS5xdW90ZTtcbiAgICB0aGlzLnRyaW0gPSBjb252LnBhcnNlUGFyYW0udHJpbTtcbiAgICB0aGlzLmVzY2FwZSA9IGNvbnYucGFyc2VQYXJhbS5lc2NhcGU7XG4gIH1cbiAgcGFyc2UoZmlsZWxpbmU6IEZpbGVsaW5lKTogUm93U3BsaXRSZXN1bHQge1xuICAgIGlmIChmaWxlbGluZS5sZW5ndGggPT09IDAgfHwgKHRoaXMuY29udi5wYXJzZVBhcmFtLmlnbm9yZUVtcHR5ICYmIGZpbGVsaW5lLnRyaW0oKS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4geyBjZWxsczogW10sIGNsb3NlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgdHJpbSA9IHRoaXMudHJpbTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICBpZiAodGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgaW5zdGFuY2VvZiBBcnJheSB8fCB0aGlzLmNvbnYucGFyc2VSdW50aW1lLmRlbGltaXRlci50b0xvd2VyQ2FzZSgpID09PSBcImF1dG9cIikge1xuICAgICAgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgPSB0aGlzLmdldERlbGltaXRlcihmaWxlbGluZSk7XG5cbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXREZWxpbWl0ZXIgJiYgIXRoaXMuZGVsaW1pdGVyRW1pdHRlZCkge1xuICAgICAgdGhpcy5jb252LmVtaXQoXCJkZWxpbWl0ZXJcIiwgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIpO1xuICAgICAgdGhpcy5kZWxpbWl0ZXJFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZGVsaW1pdGVyID0gdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXI7XG4gICAgY29uc3Qgcm93QXJyID0gZmlsZWxpbmUuc3BsaXQoZGVsaW1pdGVyKTtcbiAgICBpZiAocXVvdGUgPT09IFwib2ZmXCIpIHtcbiAgICAgIGlmICh0cmltKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcm93QXJyW2ldID0gcm93QXJyW2ldLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2VsbHM6IHJvd0FyciwgY2xvc2VkOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRvQ1NWUm93KHJvd0FyciwgdHJpbSwgcXVvdGUsIGRlbGltaXRlcik7XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSB0b0NTVlJvdyhyb3dBcnI6IHN0cmluZ1tdLCB0cmltOiBib29sZWFuLCBxdW90ZTogc3RyaW5nLCBkZWxpbWl0ZXI6IHN0cmluZyk6IFJvd1NwbGl0UmVzdWx0IHtcbiAgICBjb25zdCByb3c6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGlucXVvdGUgPSBmYWxzZTtcbiAgICBsZXQgcXVvdGVCdWZmID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIHJvd0xlbiA9IHJvd0Fyci5sZW5ndGg7IGkgPCByb3dMZW47IGkrKykge1xuICAgICAgbGV0IGUgPSByb3dBcnJbaV07XG4gICAgICBpZiAoIWlucXVvdGUgJiYgdHJpbSkge1xuICAgICAgICBlID0gdHJpbUxlZnQoZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsZW4gPSBlLmxlbmd0aDtcbiAgICAgIGlmICghaW5xdW90ZSkge1xuICAgICAgICBpZiAobGVuID09PSAyICYmIGUgPT09IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlKSB7XG4gICAgICAgICAgcm93LnB1c2goXCJcIik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1F1b3RlT3BlbihlKSkgeyAvL3F1b3RlIG9wZW5cbiAgICAgICAgICBlID0gZS5zdWJzdHIoMSk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNRdW90ZUNsb3NlKGUpKSB7IC8vcXVvdGUgY2xvc2VcbiAgICAgICAgICAgIGUgPSBlLnN1YnN0cmluZygwLCBlLmxhc3RJbmRleE9mKHF1b3RlKSk7XG4gICAgICAgICAgICBlID0gdGhpcy5lc2NhcGVRdW90ZShlKTtcbiAgICAgICAgICAgIHJvdy5wdXNoKGUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChlLmluZGV4T2YocXVvdGUpICE9PSAtMSkge1xuICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiBlKSB7XG4gICAgICAgICAgICAgIGlmIChjID09PSBxdW90ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb3VudCAlIDIgPT09IDEpIHtcbiAgICAgICAgICAgICAgaWYgKHRyaW0pIHtcbiAgICAgICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvdy5wdXNoKHF1b3RlICsgZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGlucXVvdGUgPSB0cnVlO1xuICAgICAgICAgICAgICBxdW90ZUJ1ZmYgKz0gZTtcbiAgICAgICAgICAgICAgY29udGludWU7ICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbnF1b3RlID0gdHJ1ZTtcbiAgICAgICAgICAgIHF1b3RlQnVmZiArPSBlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByb3cucHVzaChlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy9wcmV2aW91cyBxdW90ZSBub3QgY2xvc2VkXG4gICAgICAgIGlmICh0aGlzLmlzUXVvdGVDbG9zZShlKSkgeyAvL2Nsb3NlIGRvdWJsZSBxdW90ZVxuICAgICAgICAgIGlucXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICBlID0gZS5zdWJzdHIoMCwgbGVuIC0gMSk7XG4gICAgICAgICAgcXVvdGVCdWZmICs9IGRlbGltaXRlciArIGU7XG4gICAgICAgICAgcXVvdGVCdWZmID0gdGhpcy5lc2NhcGVRdW90ZShxdW90ZUJ1ZmYpO1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBxdW90ZUJ1ZmYgPSB0cmltUmlnaHQocXVvdGVCdWZmKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcm93LnB1c2gocXVvdGVCdWZmKTtcbiAgICAgICAgICBxdW90ZUJ1ZmYgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1b3RlQnVmZiArPSBkZWxpbWl0ZXIgKyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgKCFpbnF1b3RlICYmIHBhcmFtLl9uZWVkRmlsdGVyUm93KSB7XG4gICAgLy8gICByb3cgPSBmaWx0ZXJSb3cocm93LCBwYXJhbSk7XG4gICAgLy8gfVxuXG4gICAgcmV0dXJuIHsgY2VsbHM6IHJvdywgY2xvc2VkOiAhaW5xdW90ZSB9O1xuICB9XG4gIHByaXZhdGUgZ2V0RGVsaW1pdGVyKGZpbGVsaW5lOiBGaWxlbGluZSk6IHN0cmluZyB7XG4gICAgbGV0IGNoZWNrZXI7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLmRlbGltaXRlciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIGNoZWNrZXIgPSBkZWZhdWxEZWxpbWl0ZXJzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb252LnBhcnNlUGFyYW0uZGVsaW1pdGVyIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNoZWNrZXIgPSB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfVxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgbGV0IHJ0biA9IFwiLFwiO1xuICAgIGNoZWNrZXIuZm9yRWFjaChmdW5jdGlvbiAoZGVsaW0pIHtcbiAgICAgIGNvbnN0IGRlbGltQ291bnQgPSBmaWxlbGluZS5zcGxpdChkZWxpbSkubGVuZ3RoO1xuICAgICAgaWYgKGRlbGltQ291bnQgPiBjb3VudCkge1xuICAgICAgICBydG4gPSBkZWxpbTtcbiAgICAgICAgY291bnQgPSBkZWxpbUNvdW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBydG47XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlT3BlbihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1b3RlID0gdGhpcy5xdW90ZTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICByZXR1cm4gc3RyWzBdID09PSBxdW90ZSAmJiAoXG4gICAgICBzdHJbMV0gIT09IHF1b3RlIHx8XG4gICAgICBzdHJbMV0gPT09IGVzY2FwZSAmJiAoc3RyWzJdID09PSBxdW90ZSB8fCBzdHIubGVuZ3RoID09PSAyKSk7XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlQ2xvc2Uoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgZXNjYXBlID0gdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLnRyaW0pIHtcbiAgICAgIHN0ciA9IHRyaW1SaWdodChzdHIpO1xuICAgIH1cbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBpZHggPSBzdHIubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoc3RyW2lkeF0gPT09IHF1b3RlIHx8IHN0cltpZHhdID09PSBlc2NhcGUpIHtcbiAgICAgIGlkeC0tO1xuICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50ICUgMiAhPT0gMDtcbiAgfVxuXG4gIC8vIHByaXZhdGUgdHdvRG91YmxlUXVvdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyAgIHZhciB0d29RdW90ZSA9IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlO1xuICAvLyAgIHZhciBjdXJJbmRleCA9IC0xO1xuICAvLyAgIHdoaWxlICgoY3VySW5kZXggPSBzdHIuaW5kZXhPZih0d29RdW90ZSwgY3VySW5kZXgpKSA+IC0xKSB7XG4gIC8vICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGN1ckluZGV4KSArIHN0ci5zdWJzdHJpbmcoKytjdXJJbmRleCk7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiBzdHI7XG4gIC8vIH1cblxuXG4gIHByaXZhdGUgZXNjYXBlUXVvdGUoc2VnbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBcImVzfFwiICsgdGhpcy5xdW90ZSArIFwifFwiICsgdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY2FjaGVkUmVnRXhwW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jYWNoZWRSZWdFeHBba2V5XSA9IG5ldyBSZWdFeHAoJ1xcXFwnICsgdGhpcy5lc2NhcGUgKyAnXFxcXCcgKyB0aGlzLnF1b3RlLCAnZycpO1xuICAgIH1cbiAgICBjb25zdCByZWdFeHAgPSB0aGlzLmNhY2hlZFJlZ0V4cFtrZXldO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlZ0V4cCxzZWdtZW50KTtcbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKHJlZ0V4cCwgdGhpcy5xdW90ZSk7XG4gIH1cbiAgcGFyc2VNdWx0aUxpbmVzKGxpbmVzOiBGaWxlbGluZVtdKTogTXVsdGlwbGVSb3dSZXN1bHQge1xuICAgIGNvbnN0IGNzdkxpbmVzOiBzdHJpbmdbXVtdID0gW107XG4gICAgbGV0IGxlZnQgPSBcIlwiO1xuICAgIHdoaWxlIChsaW5lcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMucGFyc2UobGluZSk7XG4gICAgICBpZiAocm93LmNlbGxzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmNvbnYucGFyc2VQYXJhbS5pZ25vcmVFbXB0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3cuY2xvc2VkIHx8IHRoaXMuY29udi5wYXJzZVBhcmFtLmFsd2F5c1NwbGl0QXRFT0wpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChmaWx0ZXJBcnJheShyb3cuY2VsbHMsIHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChyb3cuY2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gbGluZSArIChnZXRFb2wobGluZSwgdGhpcy5jb252LnBhcnNlUnVudGltZSkgfHwgXCJcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvd3NDZWxsczogY3N2TGluZXMsIHBhcnRpYWw6IGxlZnQgfTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBNdWx0aXBsZVJvd1Jlc3VsdCB7XG4gIHJvd3NDZWxsczogc3RyaW5nW11bXTtcbiAgcGFydGlhbDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dTcGxpdFJlc3VsdCB7XG4gIC8qKlxuICAgKiBjc3Ygcm93IGFycmF5LiBbXCJhXCIsXCJiXCIsXCJjXCJdXG4gICAqL1xuICBjZWxsczogc3RyaW5nW10sXG4gIC8qKlxuICAgKiBpZiB0aGUgcGFzc2VkIGZpbGVsaW5lIGlzIGEgY29tcGxldGUgcm93XG4gICAqL1xuICBjbG9zZWQ6IGJvb2xlYW5cbn1cblxuIl19
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var strip_bom_1 = __importDefault(require("strip-bom"));
/**
* For each data chunk coming to parser:
* 1. append the data to the buffer that is left from last chunk
* 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
* 3. stripBom
*/
function prepareData(chunk, runtime) {
var workChunk = concatLeftChunk(chunk, runtime);
runtime.csvLineBuffer = undefined;
var cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8");
if (runtime.started === false) {
return strip_bom_1.default(cleanCSVString);
}
else {
return cleanCSVString;
}
}
exports.prepareData = prepareData;
/**
* append data to buffer that is left form last chunk
*/
function concatLeftChunk(chunk, runtime) {
if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) {
return Buffer.concat([runtime.csvLineBuffer, chunk]);
}
else {
return chunk;
}
}
/**
* check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
*/
function cleanUtf8Split(chunk, runtime) {
var idx = chunk.length - 1;
/**
* From Keyang:
* The code below is to check if a single utf8 char (which could be multiple bytes) being split.
* If the char being split, the buffer from two chunk needs to be concat
* check how utf8 being encoded to understand the code below.
* If anyone has any better way to do this, please let me know.
*/
if ((chunk[idx] & 1 << 7) != 0) {
while ((chunk[idx] & 3 << 6) === 128) {
idx--;
}
idx--;
}
if (idx != chunk.length - 1) {
runtime.csvLineBuffer = chunk.slice(idx + 1);
return chunk.slice(0, idx + 1);
// var _cb=cb;
// var self=this;
// cb=function(){
// if (self._csvLineBuffer){
// self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
// }else{
// self._csvLineBuffer=left;
// }
// _cb();
// }
}
else {
return chunk;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9kYXRhQ2xlYW4udHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZGF0YUNsZWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0RBQWlDO0FBQ2pDOzs7OztHQUtHO0FBQ0gscUJBQTRCLEtBQWEsRUFBRSxPQUFxQjtJQUM5RCxJQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLElBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7UUFDN0IsT0FBTyxtQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO1NBQU07UUFDTCxPQUFPLGNBQWMsQ0FBQztLQUN2QjtBQUNILENBQUM7QUFURCxrQ0FTQztBQUNEOztHQUVHO0FBQ0gseUJBQXlCLEtBQWEsRUFBRSxPQUFxQjtJQUMzRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN0RDtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFDRDs7R0FFRztBQUNILHdCQUF3QixLQUFhLEVBQUUsT0FBcUI7SUFDMUQsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0I7Ozs7OztPQU1HO0lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNwQyxHQUFHLEVBQUUsQ0FBQztTQUNQO1FBQ0QsR0FBRyxFQUFFLENBQUM7S0FDUDtJQUNELElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDOUIsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsOEJBQThCO1FBQzlCLDJGQUEyRjtRQUMzRixXQUFXO1FBQ1gsZ0NBQWdDO1FBQ2hDLE1BQU07UUFDTixXQUFXO1FBQ1gsSUFBSTtLQUNMO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IHN0cmlwQm9tIGZyb20gXCJzdHJpcC1ib21cIjtcbi8qKlxuICogRm9yIGVhY2ggZGF0YSBjaHVuayBjb21pbmcgdG8gcGFyc2VyOlxuICogMS4gYXBwZW5kIHRoZSBkYXRhIHRvIHRoZSBidWZmZXIgdGhhdCBpcyBsZWZ0IGZyb20gbGFzdCBjaHVua1xuICogMi4gY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICogMy4gc3RyaXBCb20gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRGF0YShjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBzdHJpbmcge1xuICBjb25zdCB3b3JrQ2h1bmsgPSBjb25jYXRMZWZ0Q2h1bmsoY2h1bmssIHJ1bnRpbWUpO1xuICBydW50aW1lLmNzdkxpbmVCdWZmZXIgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IGNsZWFuQ1NWU3RyaW5nID0gY2xlYW5VdGY4U3BsaXQod29ya0NodW5rLCBydW50aW1lKS50b1N0cmluZyhcInV0ZjhcIik7XG4gIGlmIChydW50aW1lLnN0YXJ0ZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHN0cmlwQm9tKGNsZWFuQ1NWU3RyaW5nKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2xlYW5DU1ZTdHJpbmc7XG4gIH1cbn1cbi8qKlxuICogIGFwcGVuZCBkYXRhIHRvIGJ1ZmZlciB0aGF0IGlzIGxlZnQgZm9ybSBsYXN0IGNodW5rXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdExlZnRDaHVuayhjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBpZiAocnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHJ1bnRpbWUuY3N2TGluZUJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3J1bnRpbWUuY3N2TGluZUJ1ZmZlciwgY2h1bmtdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2h1bms7XG4gIH1cbn1cbi8qKlxuICogY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbGVhblV0ZjhTcGxpdChjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBsZXQgaWR4ID0gY2h1bmsubGVuZ3RoIC0gMTtcbiAgLyoqXG4gICAqIEZyb20gS2V5YW5nOlxuICAgKiBUaGUgY29kZSBiZWxvdyBpcyB0byBjaGVjayBpZiBhIHNpbmdsZSB1dGY4IGNoYXIgKHdoaWNoIGNvdWxkIGJlIG11bHRpcGxlIGJ5dGVzKSBiZWluZyBzcGxpdC5cbiAgICogSWYgdGhlIGNoYXIgYmVpbmcgc3BsaXQsIHRoZSBidWZmZXIgZnJvbSB0d28gY2h1bmsgbmVlZHMgdG8gYmUgY29uY2F0XG4gICAqIGNoZWNrIGhvdyB1dGY4IGJlaW5nIGVuY29kZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBiZWxvdy4gXG4gICAqIElmIGFueW9uZSBoYXMgYW55IGJldHRlciB3YXkgdG8gZG8gdGhpcywgcGxlYXNlIGxldCBtZSBrbm93LlxuICAgKi9cbiAgaWYgKChjaHVua1tpZHhdICYgMSA8PCA3KSAhPSAwKSB7XG4gICAgd2hpbGUgKChjaHVua1tpZHhdICYgMyA8PCA2KSA9PT0gMTI4KSB7XG4gICAgICBpZHgtLTtcbiAgICB9XG4gICAgaWR4LS07XG4gIH1cbiAgaWYgKGlkeCAhPSBjaHVuay5sZW5ndGggLSAxKSB7XG4gICAgcnVudGltZS5jc3ZMaW5lQnVmZmVyID0gY2h1bmsuc2xpY2UoaWR4ICsgMSk7XG4gICAgcmV0dXJuIGNodW5rLnNsaWNlKDAsIGlkeCArIDEpXG4gICAgLy8gdmFyIF9jYj1jYjtcbiAgICAvLyB2YXIgc2VsZj10aGlzO1xuICAgIC8vIGNiPWZ1bmN0aW9uKCl7XG4gICAgLy8gICBpZiAoc2VsZi5fY3N2TGluZUJ1ZmZlcil7XG4gICAgLy8gICAgIHNlbGYuX2NzdkxpbmVCdWZmZXI9QnVmZmVyLmNvbmNhdChbYnVmRnJvbVN0cmluZyhzZWxmLl9jc3ZMaW5lQnVmZmVyLFwidXRmOFwiKSxsZWZ0XSk7XG4gICAgLy8gICB9ZWxzZXtcbiAgICAvLyAgICAgc2VsZi5fY3N2TGluZUJ1ZmZlcj1sZWZ0O1xuICAgIC8vICAgfVxuICAgIC8vICAgX2NiKCk7XG4gICAgLy8gfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSJdfQ==
"use strict";
var Converter_1 = require("./Converter");
var helper = function (param, options) {
return new Converter_1.Converter(param, options);
};
helper["Converter"] = Converter_1.Converter;
module.exports = helper;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEseUNBQXdDO0FBRXhDLElBQU0sTUFBTSxHQUFHLFVBQVUsS0FBOEIsRUFBRSxPQUEwQjtJQUNqRixPQUFPLElBQUkscUJBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLHFCQUFTLENBQUM7QUFDaEMsaUJBQVEsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtT3B0aW9ucyB9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7IENTVlBhcnNlUGFyYW0gfSBmcm9tIFwiLi9QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcblxuY29uc3QgaGVscGVyID0gZnVuY3Rpb24gKHBhcmFtPzogUGFydGlhbDxDU1ZQYXJzZVBhcmFtPiwgb3B0aW9ucz86IFRyYW5zZm9ybU9wdGlvbnMpOiBDb252ZXJ0ZXIge1xuICByZXR1cm4gbmV3IENvbnZlcnRlcihwYXJhbSwgb3B0aW9ucyk7XG59XG5cbmhlbHBlcltcIkNvbnZlcnRlclwiXSA9IENvbnZlcnRlcjtcbmV4cG9ydCA9aGVscGVyOyJdfQ==
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Converter_1 = require("../src/Converter");
var src_1 = __importDefault(require("../src"));
var assert = require("assert");
var fs = require("fs");
var sandbox = require("sinon").sandbox.create();
var file = __dirname + "/data/testData";
var trailCommaData = __dirname + "/data/trailingComma";
describe("CSV Converter", function () {
afterEach(function () {
sandbox.restore();
});
it("should create new instance of csv", function () {
var obj = new Converter_1.Converter();
assert(obj);
});
it("should read from a stream", function (done) {
var obj = new Converter_1.Converter();
var stream = fs.createReadStream(file);
obj.then(function (obj) {
assert.equal(obj.length, 2);
done();
});
stream.pipe(obj);
});
it("should call onNext once a row is parsed.", function (done) {
var obj = new Converter_1.Converter();
var stream = fs.createReadStream(file);
var called = false;
obj.subscribe(function (resultRow) {
assert(resultRow);
called = true;
});
obj.on("done", function () {
assert(called);
done();
});
stream.pipe(obj);
});
it("should emit end_parsed message once it is finished.", function (done) {
var obj = new Converter_1.Converter();
obj.then(function (result) {
assert(result);
assert(result.length === 2);
assert(result[0].date);
assert(result[0].employee);
assert(result[0].employee.name);
assert(result[0].employee.age);
assert(result[0].employee.number);
assert(result[0].employee.key.length === 2);
assert(result[0].address.length === 2);
done();
});
fs.createReadStream(file).pipe(obj);
});
it("should handle traling comma gracefully", function (done) {
var stream = fs.createReadStream(trailCommaData);
var obj = new Converter_1.Converter();
obj.then(function (result) {
assert(result);
assert(result.length > 0);
done();
});
stream.pipe(obj);
});
it("should handle comma in column which is surrounded by qoutes", function (done) {
var testData = __dirname + "/data/dataWithComma";
var rs = fs.createReadStream(testData);
var obj = new Converter_1.Converter({
"quote": "#"
});
obj.then(function (result) {
assert(result[0].col1 === "\"Mini. Sectt");
assert.equal(result[3].col2, "125001,fenvkdsf");
// console.log(result);
done();
});
rs.pipe(obj);
});
it("should be able to convert a csv to column array data", function (done) {
var columArrData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(columArrData);
var result = {};
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function () {
assert(result.TIMESTAMP.length === 5);
done();
});
//record_parsed will be emitted each time a row has been parsed.
csvConverter.subscribe(function (resultRow, rowIndex) {
for (var key in resultRow) {
if (resultRow.hasOwnProperty(key)) {
if (!result[key] || !(result[key] instanceof Array)) {
result[key] = [];
}
result[key][rowIndex] = resultRow[key];
}
}
});
rs.pipe(csvConverter);
});
it("should be able to convert csv string directly", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert.equal(jsonObj.length, 2);
});
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
});
it("should be able to convert csv string with error", function (done) {
var testData = __dirname + "/data/dataWithUnclosedQuotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(undefined, function (err) {
assert(err);
assert.equal(err.err, "unclosed_quote");
done();
});
});
it("should be able to convert csv string without callback provided", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
csvConverter.fromString(data);
});
it("should be able to handle columns with double quotes", function (done) {
var testData = __dirname + "/data/dataWithQoutes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
done();
});
});
it("should be able to handle columns with two double quotes", function (done) {
var testData = __dirname + "/data/twodoublequotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter_1.Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert.equal(jsonObj[0].title, "\"");
assert.equal(jsonObj[0].data, "xyabcde");
assert.equal(jsonObj[0].uuid, "fejal\"eifa");
assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
done();
});
});
it("should handle empty csv file", function (done) {
var testData = __dirname + "/data/emptyFile";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter();
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 0);
done();
});
rs.pipe(csvConverter);
});
it("should parse large csv file", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter();
var count = 0;
csvConverter.subscribe(function () {
//console.log(arguments);
count++;
});
csvConverter.then(function () {
assert(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should parse data and covert to specific types", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: true,
colParser: {
"column6": "string",
"column7": "string"
}
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "number");
assert(typeof d.column2 === "string");
assert.equal(d["colume4"], "someinvaliddate");
assert(d.column5.hello === "world");
assert(d.column6 === '{"hello":"world"}');
assert(d.column7 === "1234");
assert(d.column8 === "abcd");
assert(d.column9 === true);
assert(d.column10[0] === 23);
assert(d.column10[1] === 31);
assert(d.column11[0].hello === "world");
assert(d["name#!"] === false);
});
csvConverter.on("done", function () {
done();
});
rs.pipe(csvConverter);
});
it("should turn off field type check", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: false
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "string");
assert(typeof d.column2 === "string");
assert(d["column3"] === "2012-01-01");
assert(d["colume4"] === "someinvaliddate");
assert(d.column5 === '{"hello":"world"}');
assert.equal(d["column6"], '{"hello":"world"}');
assert(d["column7"] === "1234");
assert(d["column8"] === "abcd");
assert(d.column9 === "true");
assert(d.column10[0] === "23");
assert(d.column10[1] === "31");
assert(d["name#!"] === 'false');
});
csvConverter.then(function () {
done();
});
rs.pipe(csvConverter);
});
it("should emit data event correctly", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var csvConverter = new Converter_1.Converter({});
var count = 0;
csvConverter.on("data", function (d) {
count++;
});
csvConverter.on("end", function () {
assert.equal(count, 5290);
done();
});
var rs = fs.createReadStream(testData);
rs.pipe(csvConverter);
});
it("should process column with linebreaks", function (done) {
var testData = __dirname + "/data/lineBreak";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter_1.Converter({
checkType: true
});
csvConverter.subscribe(function (d) {
assert(d.Period === 13);
assert(d["Apparent age"] === "Unknown");
done();
});
rs.pipe(csvConverter);
});
it("be able to ignore empty columns", function (done) {
var testData = __dirname + "/data/dataIgnoreEmpty";
var rs = fs.createReadStream(testData);
var st = rs.pipe(src_1.default({ ignoreEmpty: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 3);
assert(j.col2.length === 2);
assert(j.col2[1] === "d3");
assert(j.col4.col3 === undefined);
assert(j.col4.col5 === "world");
assert(res[1].col1 === "d2");
assert(res[2].col1 === "d4");
done();
});
});
it("should allow no header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({ noheader: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.field1 === "CC102-PDMI-001");
assert(j.field2 === "eClass_5.1.3");
done();
});
});
it("should allow customised header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
noheader: true,
headers: ["a", "b"]
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.a === "CC102-PDMI-001");
assert(j.b === "eClass_5.1.3");
assert(j.field3 === "10/3/2014");
done();
});
});
it("should allow customised header to override existing header", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
headers: []
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.field1 === "Food Factory");
assert(j.field2 === "Oscar");
done();
});
});
it("should handle when there is an empty string", function (done) {
var testData = __dirname + "/data/dataWithEmptyString";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
noheader: true,
headers: ["a", "b", "c"],
checkType: true
}));
st.then(function (res) {
var j = res[0];
// assert(res.length===2);
assert(j.a === "green");
assert(j.b === 40);
assert.equal(j.c, "");
done();
});
});
it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 3 });
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 9 });
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should emit eol event when line ending is detected as CRLF", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\r\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
});
});
it("should emit eol event when line ending is detected as LF", function (done) {
var testData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
});
});
it("should remove the Byte Order Mark (BOM) from input", function (done) {
var testData = __dirname + "/data/dataNoTrimBOM";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter_1.Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
done();
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUEyQztBQUMzQywrQ0FBeUI7QUFDekIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hELElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxJQUFJLGNBQWMsR0FBRyxTQUFTLEdBQUcscUJBQXFCLENBQUM7QUFDdkQsUUFBUSxDQUFDLGVBQWUsRUFBRTtJQUN4QixTQUFTLENBQUM7UUFDUixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUU7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxJQUFJO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxD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USxHQUFHLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLENBQUM7WUFDN0IsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUMsQ0FBQztRQUNKLEVBQUUsQ0FBQyxJQUFJLENBQUUsVUFBVSxHQUFHO1lBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVmLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb252ZXJ0ZXJ9IGZyb20gXCIuLi9zcmMvQ29udmVydGVyXCI7XG5pbXBvcnQgY3N2IGZyb20gXCIuLi9zcmNcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIHNhbmRib3ggPSByZXF1aXJlKFwic2lub25cIikuc2FuZGJveC5jcmVhdGUoKTtcbnZhciBmaWxlID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xudmFyIHRyYWlsQ29tbWFEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90cmFpbGluZ0NvbW1hXCI7XG5kZXNjcmliZShcIkNTViBDb252ZXJ0ZXJcIiwgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIGNzdlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBhc3NlcnQob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcmVhZCBmcm9tIGEgc3RyZWFtXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgc3RyZWFtLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY2FsbCBvbk5leHQgb25jZSBhIHJvdyBpcyBwYXJzZWQuXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4gICAgICBhc3NlcnQocmVzdWx0Um93KTtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQoY2FsbGVkKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmRhdGUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZSk7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm5hbWUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5hZ2UpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5udW1iZXIpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5rZXkubGVuZ3RoID09PSAyKTtcbiAgICAgIGFzc2VydChyZXN1bHRbMF0uYWRkcmVzcy5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZSkucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBoYW5kbGUgdHJhbGluZyBjb21tYSBncmFjZWZ1bGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odHJhaWxDb21tYURhdGEpO1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA+IDApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5waXBlKG9iaik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBjb21tYSBpbiBjb2x1bW4gd2hpY2ggaXMgc3Vycm91bmRlZCBieSBxb3V0ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoQ29tbWFcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgb2JqID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBcInF1b3RlXCI6IFwiI1wiXG4gICAgfSk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5jb2wxID09PSBcIlxcXCJNaW5pLiBTZWN0dFwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbM10uY29sMiwgXCIxMjUwMDEsZmVudmtkc2ZcIik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGEgY3N2IHRvIGNvbHVtbiBhcnJheSBkYXRhXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNvbHVtQXJyRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvY29sdW1uQXJyYXlcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGNvbHVtQXJyRGF0YSk7XG4gICAgdmFyIHJlc3VsdDphbnkgPSB7fTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdC5USU1FU1RBTVAubGVuZ3RoID09PSA1KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcblxuICAgIC8vcmVjb3JkX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgZWFjaCB0aW1lIGEgcm93IGhhcyBiZWVuIHBhcnNlZC5cbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChyZXN1bHRSb3csIHJvd0luZGV4KSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcmVzdWx0Um93KSB7XG4gICAgICAgIGlmIChyZXN1bHRSb3cuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGlmICghcmVzdWx0W2tleV0gfHwgIShyZXN1bHRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0W2tleV1bcm93SW5kZXhdID0gcmVzdWx0Um93W2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gY29udmVydCBjc3Ygc3RyaW5nIGRpcmVjdGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgYXNzZXJ0KGVycik7XG4gICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbiAgICAgIGFzc2VydChqc29uT2JqLmxlbmd0aCA9PT0gMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCBkb3VibGUgcXVvdGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSkudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmpbMF0uVElNRVNUQU1QID09PSAnMTM5NTQyNjRcIjIyJywgSlNPTi5zdHJpbmdpZnkoanNvbk9ialswXS5USU1FU1RBTVApKTtcblxuICAgICAgYXNzZXJ0KGpzb25PYmpbMV0uVElNRVNUQU1QID09PSAnYWJjLCBkZWYsIGNjYycsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMV0uVElNRVNUQU1QKSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCB0d28gZG91YmxlIHF1b3Rlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHdvZG91YmxlcXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGxhcmdlIGNzdiBmaWxlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9sYXJnZS1jc3Ytc2FtcGxlLmNzdlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vY29uc29sZS5sb2coYXJndW1lbnRzKTtcbiAgICAgIGNvdW50Kys7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KGNvdW50ID09PSA1MjkwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGRhdGEgYW5kIGNvdmVydCB0byBzcGVjaWZpYyB0eXBlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgY2hlY2tUeXBlOiB0cnVlLFxuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiY29sdW1uNlwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcImNvbHVtbjdcIjogXCJzdHJpbmdcIlxuICAgICAgfVxuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcIm51bWJlclwiKTtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbiAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1lNFwiXSwgXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41LmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNiA9PT0gJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNyA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOCA9PT0gXCJhYmNkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOSA9PT0gdHJ1ZSk7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gMjMpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IDMxKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjExWzBdLmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09IGZhbHNlKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHR1cm4gb2ZmIGZpZWxkIHR5cGUgY2hlY2tcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoVHlwZVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrVHlwZTogZmFsc2VcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMSA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMiA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQoZFtcImNvbHVtbjNcIl0gPT09IFwiMjAxMi0wMS0wMVwiKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1lNFwiXSA9PT0gXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoZFtcImNvbHVtbjZcIl0sICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1uN1wiXSA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGRbXCJjb2x1bW44XCJdID09PSBcImFiY2RcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSBcInRydWVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gXCIyM1wiKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjEwWzFdID09PSBcIjMxXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09ICdmYWxzZScpO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZGF0YSBldmVudCBjb3JyZWN0bHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG5cbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgfSk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChkKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5vbihcImVuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcHJvY2VzcyBjb2x1bW4gd2l0aCBsaW5lYnJlYWtzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9saW5lQnJlYWtcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja1R5cGU6IHRydWVcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQoZC5QZXJpb2QgPT09IDEzKTtcbiAgICAgIGFzc2VydChkW1wiQXBwYXJlbnQgYWdlXCJdID09PSBcIlVua25vd25cIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuICB9KTtcblxuICBpdChcImJlIGFibGUgdG8gaWdub3JlIGVtcHR5IGNvbHVtbnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFJZ25vcmVFbXB0eVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUoY3N2KHsgaWdub3JlRW1wdHk6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMyk7XG4gICAgICBhc3NlcnQoai5jb2wyLmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQoai5jb2wyWzFdID09PSBcImQzXCIpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2wzID09PSB1bmRlZmluZWQpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2w1ID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KHJlc1sxXS5jb2wxID09PSBcImQyXCIpO1xuICAgICAgYXNzZXJ0KHJlc1syXS5jb2wxID09PSBcImQ0XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBubyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL25vaGVhZGVyY3N2XCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHsgbm9oZWFkZXI6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4gICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiQ0MxMDItUERNSS0wMDFcIik7XG4gICAgICBhc3NlcnQoai5maWVsZDIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbm9oZWFkZXJjc3ZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWUsXG4gICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDUpO1xuICAgICAgYXNzZXJ0KGouYSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbiAgICAgIGFzc2VydChqLmIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQzID09PSBcIjEwLzMvMjAxNFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgY3VzdG9taXNlZCBoZWFkZXIgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICBoZWFkZXJzOiBbXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQxID09PSBcIkZvb2QgRmFjdG9yeVwiKTtcbiAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJPc2NhclwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHdoZW4gdGhlcmUgaXMgYW4gZW1wdHkgc3RyaW5nXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aEVtcHR5U3RyaW5nXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgICAgaGVhZGVyczogW1wiYVwiLCBcImJcIiwgXCJjXCJdLFxuICAgICAgY2hlY2tUeXBlOiB0cnVlXG4gICAgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIC8vIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5hID09PSBcImdyZWVuXCIpO1xuICAgICAgYXNzZXJ0KGouYiA9PT0gNDApO1xuICAgICAgYXNzZXJ0LmVxdWFsKGouYywgXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgaXMgc21hbGxlciB0aGFuIGhlYWRlciByb3cgbGVuZ3RoXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogMyB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgZW5kcyBpbiBtaWRkbGUgb2YgQ1JMRiBsaW5lIGJyZWFrXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogOSB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZW9sIGV2ZW50IHdoZW4gbGluZSBlbmRpbmcgaXMgZGV0ZWN0ZWQgYXMgQ1JMRlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YU5vVHJpbUNSTEZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcigpKTtcbiAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbiAgICB9KTtcbiAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4gICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KVxuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKCkpO1xuICAgIHZhciBlb2xDYWxsYmFjayA9IHNhbmRib3guc3B5KGZ1bmN0aW9uIChlb2wpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2wsIFwiXFxuXCIpO1xuICAgIH0pO1xuICAgIHN0Lm9uKFwiZW9sXCIsIGVvbENhbGxiYWNrKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2xDYWxsYmFjay5jYWxsQ291bnQsIDEsICdzaG91bGQgZW1pdCBlb2wgZXZlbnQgb25jZScpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJlbW92ZSB0aGUgQnl0ZSBPcmRlciBNYXJrIChCT00pIGZyb20gaW5wdXRcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1CT01cIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgdHJpbTogZmFsc2VcbiAgICB9KSk7XG4gICAgc3QudGhlbiggZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbiAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function bufFromString(str) {
var length = Buffer.byteLength(str);
var buffer = Buffer.allocUnsafe
? Buffer.allocUnsafe(length)
: new Buffer(length);
buffer.write(str);
return buffer;
}
exports.bufFromString = bufFromString;
function emptyBuffer() {
var buffer = Buffer.allocUnsafe
? Buffer.allocUnsafe(0)
: new Buffer(0);
return buffer;
}
exports.emptyBuffer = emptyBuffer;
function filterArray(arr, filter) {
var rtn = [];
for (var i = 0; i < arr.length; i++) {
if (filter.indexOf(i) > -1) {
rtn.push(arr[i]);
}
}
return rtn;
}
exports.filterArray = filterArray;
exports.trimLeft = String.prototype.trimLeft ? function trimLeftNative(str) {
return str.trimLeft();
} : function trimLeftRegExp(str) {
return str.replace(/^\s+/, "");
};
exports.trimRight = String.prototype.trimRight ? function trimRightNative(str) {
return str.trimRight();
} : function trimRightRegExp(str) {
return str.replace(/\s+$/, "");
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy91dGlsLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1QkFBOEIsR0FBVztJQUN2QyxJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM1QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBUEQsc0NBT0M7QUFFRDtJQUNFLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUxELGtDQUtDO0FBRUQscUJBQTRCLEdBQVUsRUFBRSxNQUFnQjtJQUN0RCxJQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7SUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVJELGtDQVFDO0FBRVksUUFBQSxRQUFRLEdBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFBLHdCQUF3QixHQUFVO0lBQ2hGLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQSxDQUFDLENBQUEsd0JBQXdCLEdBQVU7SUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUE7QUFFWSxRQUFBLFNBQVMsR0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUEseUJBQXlCLEdBQVU7SUFDbkYsT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFBLENBQUMsQ0FBQSx5QkFBeUIsR0FBVTtJQUNuQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBidWZGcm9tU3RyaW5nKHN0cjogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgoc3RyKTtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICAgIDogbmV3IEJ1ZmZlcihsZW5ndGgpO1xuICBidWZmZXIud3JpdGUoc3RyKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5QnVmZmVyKCk6IEJ1ZmZlcntcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgICA6IG5ldyBCdWZmZXIoMCk7XG4gIHJldHVybiBidWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBcnJheShhcnI6IGFueVtdLCBmaWx0ZXI6IG51bWJlcltdKTogYW55W10ge1xuICBjb25zdCBydG46IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZpbHRlci5pbmRleE9mKGkpID4gLTEpIHtcbiAgICAgIHJ0bi5wdXNoKGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBydG47XG59XG5cbmV4cG9ydCBjb25zdCB0cmltTGVmdD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0P2Z1bmN0aW9uIHRyaW1MZWZ0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1MZWZ0KCk7XG59OmZ1bmN0aW9uIHRyaW1MZWZ0UmVnRXhwKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrLywgXCJcIik7XG59XG5cbmV4cG9ydCBjb25zdCB0cmltUmlnaHQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQ/ZnVuY3Rpb24gdHJpbVJpZ2h0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1SaWdodCgpO1xufTpmdW5jdGlvbiB0cmltUmlnaHRSZWdFeHAoc3RyOnN0cmluZyl7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKyQvLCBcIlwiKTtcbn1cbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function mergeParams(params) {
var defaultParam = {
delimiter: ',',
ignoreColumns: undefined,
includeColumns: undefined,
quote: '"',
trim: true,
checkType: false,
ignoreEmpty: false,
// fork: false,
noheader: false,
headers: undefined,
flatKeys: false,
maxRowLength: 0,
checkColumn: false,
escape: '"',
colParser: {},
eol: undefined,
alwaysSplitAtEOL: false,
output: "json"
};
if (!params) {
params = {};
}
for (var key in params) {
if (params.hasOwnProperty(key)) {
if (Array.isArray(params[key])) {
defaultParam[key] = [].concat(params[key]);
}
else {
defaultParam[key] = params[key];
}
}
}
return defaultParam;
}
exports.mergeParams = mergeParams;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJhbWV0ZXJzLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1BhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvRkEscUJBQTRCLE1BQStCO0lBQ3pELElBQU0sWUFBWSxHQUFrQjtRQUNsQyxTQUFTLEVBQUUsR0FBRztRQUNkLGFBQWEsRUFBRSxTQUFTO1FBQ3hCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixlQUFlO1FBQ2YsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixRQUFRLEVBQUUsS0FBSztRQUNmLFlBQVksRUFBRSxDQUFDO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLEdBQUc7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLEdBQUcsRUFBRSxTQUFTO1FBQ2QsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixNQUFNLEVBQUUsTUFBTTtLQUNmLENBQUE7SUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNiO0lBQ0QsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDdEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0Y7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBbENELGtDQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ1NWUGFyc2VQYXJhbSB7XG4gIC8qKlxuICAgKiAgIGRlbGltaXRlciB1c2VkIGZvciBzZXBlcmF0aW5nIGNvbHVtbnMuIFVzZSBcImF1dG9cIiBpZiBkZWxpbWl0ZXIgaXMgdW5rbm93biBpbiBhZHZhbmNlLCBpbiB0aGlzIGNhc2UsIGRlbGltaXRlciB3aWxsIGJlIGF1dG8tZGV0ZWN0ZWQgKGJ5IGJlc3QgYXR0ZW1wdCkuIFVzZSBhbiBhcnJheSB0byBnaXZlIGEgbGlzdCBvZiBwb3RlbnRpYWwgZGVsaW1pdGVycyBlLmcuIFtcIixcIixcInxcIixcIiRcIl0uIGRlZmF1bHQ6IFwiLFwiXG4gICAqL1xuICBkZWxpbWl0ZXI6IHN0cmluZyB8IHN0cmluZ1tdO1xuICAvKipcbiAgICogIFRoaXMgcGFyYW1ldGVyIGluc3RydWN0cyB0aGUgcGFyc2VyIHRvIGlnbm9yZSBjb2x1bW5zIGFzIHNwZWNpZmllZCBieSB0aGUgcmVndWxhciBleHByZXNzaW9uLiBFeGFtcGxlOiAvKG5hbWV8YWdlKS8gd2lsbCBpZ25vcmUgY29sdW1ucyB3aG9zZSBoZWFkZXIgY29udGFpbnMgXCJuYW1lXCIgb3IgXCJhZ2VcIlxuICAgKi9cbiAgaWdub3JlQ29sdW1ucz86IFJlZ0V4cDtcbiAgLyoqXG4gICAqICBUaGlzIHBhcmFtZXRlciBpbnN0cnVjdHMgdGhlIHBhcnNlciB0byBpbmNsdWRlIG9ubHkgdGhvc2UgY29sdW1ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4gRXhhbXBsZTogLyhuYW1lfGFnZSkvIHdpbGwgcGFyc2UgYW5kIGluY2x1ZGUgY29sdW1ucyB3aG9zZSBoZWFkZXIgY29udGFpbnMgXCJuYW1lXCIgb3IgXCJhZ2VcIlxuICAgKi9cbiAgaW5jbHVkZUNvbHVtbnM/OiBSZWdFeHA7XG4gIC8qKlxuICAgKiAgSWYgYSBjb2x1bW4gY29udGFpbnMgZGVsaW1pdGVyLCBpdCBpcyBhYmxlIHRvIHVzZSBxdW90ZSBjaGFyYWN0ZXIgdG8gc3Vycm91bmQgdGhlIGNvbHVtbiBjb250ZW50LiBlLmcuIFwiaGVsbG8sIHdvcmxkXCIgd29udCBiZSBzcGxpdCBpbnRvIHR3byBjb2x1bW5zIHdoaWxlIHBhcnNpbmcuIFNldCB0byBcIm9mZlwiIHdpbGwgaWdub3JlIGFsbCBxdW90ZXMuIGRlZmF1bHQ6IFwiIChkb3VibGUgcXVvdGUpXG4gICAqL1xuICBxdW90ZTogc3RyaW5nO1xuICAvKipcbiAgICogIEluZGljYXRlIGlmIHBhcnNlciB0cmltIG9mZiBzcGFjZXMgc3Vycm91bmRpbmcgY29sdW1uIGNvbnRlbnQuIGUuZy4gXCIgY29udGVudCBcIiB3aWxsIGJlIHRyaW1tZWQgdG8gXCJjb250ZW50XCIuIERlZmF1bHQ6IHRydWVcbiAgICovXG4gIHRyaW06IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgVGhpcyBwYXJhbWV0ZXIgdHVybnMgb24gYW5kIG9mZiB3aGV0aGVyIGNoZWNrIGZpZWxkIHR5cGUuIERlZmF1bHQgaXMgZmFsc2UuIFxuICAgKi9cbiAgY2hlY2tUeXBlOiBib29sZWFuO1xuICAvKipcbiAgICogIElnbm9yZSB0aGUgZW1wdHkgdmFsdWUgaW4gQ1NWIGNvbHVtbnMuIElmIGEgY29sdW1uIHZhbHVlIGlzIG5vdCBnaXZlbiwgc2V0IHRoaXMgdG8gdHJ1ZSB0byBza2lwIHRoZW0uIERlZmF1bHQ6IGZhbHNlLlxuICAgKi9cbiAgaWdub3JlRW1wdHk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgRGVsZWdhdGUgcGFyc2luZyB3b3JrIHRvIGFub3RoZXIgcHJvY2Vzcy5cbiAgICovXG4gIC8vIGZvcms6IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgSW5kaWNhdGluZyBjc3YgZGF0YSBoYXMgbm8gaGVhZGVyIHJvdyBhbmQgZmlyc3Qgcm93IGlzIGRhdGEgcm93LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKi9cbiAgbm9oZWFkZXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgQW4gYXJyYXkgdG8gc3BlY2lmeSB0aGUgaGVhZGVycyBvZiBDU1YgZGF0YS4gSWYgLS1ub2hlYWRlciBpcyBmYWxzZSwgdGhpcyB2YWx1ZSB3aWxsIG92ZXJyaWRlIENTViBoZWFkZXIgcm93LiBEZWZhdWx0OiBudWxsLiBFeGFtcGxlOiBbXCJteSBmaWVsZFwiLFwibmFtZVwiXS5cbiAgICovXG4gIGhlYWRlcnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqICBEb24ndCBpbnRlcnByZXQgZG90cyAoLikgYW5kIHNxdWFyZSBicmFja2V0cyBpbiBoZWFkZXIgZmllbGRzIGFzIG5lc3RlZCBvYmplY3Qgb3IgYXJyYXkgaWRlbnRpZmllcnMgYXQgYWxsICh0cmVhdCB0aGVtIGxpa2UgcmVndWxhciBjaGFyYWN0ZXJzIGZvciBKU09OIGZpZWxkIGlkZW50aWZpZXJzKS4gRGVmYXVsdDogZmFsc2UuXG4gICAqL1xuICBmbGF0S2V5czogYm9vbGVhbjtcbiAgLyoqXG4gICAqICB0aGUgbWF4IGNoYXJhY3RlciBhIGNzdiByb3cgY291bGQgaGF2ZS4gMCBtZWFucyBpbmZpbml0ZS4gSWYgbWF4IG51bWJlciBleGNlZWRlZCwgcGFyc2VyIHdpbGwgZW1pdCBcImVycm9yXCIgb2YgXCJyb3dfZXhjZWVkXCIuIGlmIGEgcG9zc2libHkgY29ycnVwdGVkIGNzdiBkYXRhIHByb3ZpZGVkLCBnaXZlIGl0IGEgbnVtYmVyIGxpa2UgNjU1MzUgc28gdGhlIHBhcnNlciB3b250IGNvbnN1bWUgbWVtb3J5LiBkZWZhdWx0OiAwXG4gICAqL1xuICBtYXhSb3dMZW5ndGg6IG51bWJlcjtcbiAgLyoqXG4gICAqICB3aGV0aGVyIGNoZWNrIGNvbHVtbiBudW1iZXIgb2YgYSByb3cgaXMgdGhlIHNhbWUgYXMgaGVhZGVycy4gSWYgY29sdW1uIG51bWJlciBtaXNtYXRjaGVkIGhlYWRlcnMgbnVtYmVyLCBhbiBlcnJvciBvZiBcIm1pc21hdGNoZWRfY29sdW1uXCIgd2lsbCBiZSBlbWl0dGVkLi4gZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIGNoZWNrQ29sdW1uOiBib29sZWFuO1xuICAvKipcbiAgICogIGVzY2FwZSBjaGFyYWN0ZXIgdXNlZCBpbiBxdW90ZWQgY29sdW1uLiBEZWZhdWx0IGlzIGRvdWJsZSBxdW90ZSAoXCIpIGFjY29yZGluZyB0byBSRkM0MTA4LiBDaGFuZ2UgdG8gYmFjayBzbGFzaCAoXFwpIG9yIG90aGVyIGNoYXJzIGZvciB5b3VyIG93biBjYXNlLlxuICAgKi9cbiAgZXNjYXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAgIEFsbG93cyBvdmVycmlkZSBwYXJzaW5nIGxvZ2ljIGZvciBhIHNwZWNpZmljIGNvbHVtbi4gSXQgYWNjZXB0cyBhIEpTT04gb2JqZWN0IHdpdGggZmllbGRzIGxpa2U6IGhlYWROYW1lOiA8U3RyaW5nIHwgRnVuY3Rpb24+IC4gZS5nLiB7ZmllbGQxOidudW1iZXInfSB3aWxsIHVzZSBidWlsdC1pbiBudW1iZXIgcGFyc2VyIHRvIGNvbnZlcnQgdmFsdWUgb2YgdGhlIGZpZWxkMSBjb2x1bW4gdG8gbnVtYmVyLiBBbm90aGVyIGV4YW1wbGUge1wibmFtZVwiOm5hbWVQcm9jZXNzRnVuY30gd2lsbCB1c2Ugc3BlY2lmaWVkIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSB2YWx1ZS5cbiAgICovXG4gIGNvbFBhcnNlcjoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IENlbGxQYXJzZXIgfCBDb2x1bW5QYXJhbVxuICB9O1xuICAvKipcbiAgICogIEVuZCBvZiBsaW5lIGNoYXJhY3Rlci4gSWYgb21pdHRlZCwgcGFyc2VyIHdpbGwgYXR0ZW1wdCB0byByZXRyaWV2ZSBpdCBmcm9tIHRoZSBmaXJzdCBjaHVua3Mgb2YgQ1NWIGRhdGFcbiAgICovXG4gIGVvbD86IHN0cmluZztcbiAgLyoqXG4gICAqICBBbHdheXMgaW50ZXJwcmV0IGVhY2ggbGluZSAoYXMgZGVmaW5lZCBieSBlb2wpIGFzIGEgcm93LiBUaGlzIHdpbGwgcHJldmVudCBlb2wgY2hhcmFjdGVycyBmcm9tIGJlaW5nIHVzZWQgd2l0aGluIGEgcm93IChldmVuIGluc2lkZSBhIHF1b3RlZCBmaWVsZCkuIFRoaXMgZW5zdXJlcyB0aGF0IG1pc3BsYWNlZCBxdW90ZXMgb25seSBicmVhayBvbiByb3csIGFuZCBub3QgYWxsIGVuc3Vpbmcgcm93cy5cbiAgICovXG4gIGFsd2F5c1NwbGl0QXRFT0w6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgZm9ybWF0IHRvIGJlIGNvbnZlcnRlZCB0by4gXCJqc29uXCIgKGRlZmF1bHQpIC0tIGNvbnZlcnQgY3N2IHRvIGpzb24uIFwiY3N2XCIgLS0gY29udmVydCBjc3YgdG8gY3N2IHJvdyBhcnJheS4gXCJsaW5lXCIgLS0gY29udmVydCBjc3YgdG8gY3N2IGxpbmUgc3RyaW5nIFxuICAgKi9cbiAgb3V0cHV0OiBcImpzb25cIiB8IFwiY3N2XCIgfCBcImxpbmVcIjtcbn1cblxuZXhwb3J0IHR5cGUgQ2VsbFBhcnNlciA9IChpdGVtOiBzdHJpbmcsIGhlYWQ6IHN0cmluZywgcmVzdWx0Um93OiBhbnksIHJvdzogc3RyaW5nW10sIGNvbHVtbkluZGV4OiBudW1iZXIpID0+IGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5QYXJhbSB7XG4gIGZsYXQ/OiBib29sZWFuO1xuICBjZWxsUGFyc2VyPzogc3RyaW5nIHwgQ2VsbFBhcnNlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUGFyYW1zKHBhcmFtcz86IFBhcnRpYWw8Q1NWUGFyc2VQYXJhbT4pOiBDU1ZQYXJzZVBhcmFtIHtcbiAgY29uc3QgZGVmYXVsdFBhcmFtOiBDU1ZQYXJzZVBhcmFtID0ge1xuICAgIGRlbGltaXRlcjogJywnLFxuICAgIGlnbm9yZUNvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICBpbmNsdWRlQ29sdW1uczogdW5kZWZpbmVkLFxuICAgIHF1b3RlOiAnXCInLFxuICAgIHRyaW06IHRydWUsXG4gICAgY2hlY2tUeXBlOiBmYWxzZSxcbiAgICBpZ25vcmVFbXB0eTogZmFsc2UsXG4gICAgLy8gZm9yazogZmFsc2UsXG4gICAgbm9oZWFkZXI6IGZhbHNlLFxuICAgIGhlYWRlcnM6IHVuZGVmaW5lZCxcbiAgICBmbGF0S2V5czogZmFsc2UsXG4gICAgbWF4Um93TGVuZ3RoOiAwLFxuICAgIGNoZWNrQ29sdW1uOiBmYWxzZSxcbiAgICBlc2NhcGU6ICdcIicsXG4gICAgY29sUGFyc2VyOiB7fSxcbiAgICBlb2w6IHVuZGVmaW5lZCxcbiAgICBhbHdheXNTcGxpdEF0RU9MOiBmYWxzZSxcbiAgICBvdXRwdXQ6IFwianNvblwiXG4gIH1cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICBwYXJhbXMgPSB7fTtcbiAgfVxuICBmb3IgKGxldCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXNba2V5XSkpIHtcbiAgICAgICAgZGVmYXVsdFBhcmFtW2tleV0gPSBbXS5jb25jYXQocGFyYW1zW2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdFBhcmFtW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRQYXJhbTtcbn1cblxuIl19
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CSVError = /** @class */ (function (_super) {
__extends(CSVError, _super);
function CSVError(err, line, extra) {
var _this = _super.call(this, "Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : "")) || this;
_this.err = err;
_this.line = line;
_this.extra = extra;
_this.name = "CSV Parse Error";
return _this;
}
CSVError.column_mismatched = function (index, extra) {
return new CSVError("column_mismatched", index, extra);
};
CSVError.unclosed_quote = function (index, extra) {
return new CSVError("unclosed_quote", index, extra);
};
CSVError.fromJSON = function (obj) {
return new CSVError(obj.err, obj.line, obj.extra);
};
CSVError.prototype.toJSON = function () {
return {
err: this.err,
line: this.line,
extra: this.extra
};
};
return CSVError;
}(Error));
exports.default = CSVError;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtJQUFzQyw0QkFBSztJQVV6QyxrQkFDUyxHQUFXLEVBQ1gsSUFBWSxFQUNaLEtBQWM7UUFIdkIsWUFLRSxrQkFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FFMUY7UUFOUSxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFdBQUssR0FBTCxLQUFLLENBQVM7UUFHckIsS0FBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQzs7SUFDaEMsQ0FBQztJQWhCTSwwQkFBaUIsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLEtBQWM7UUFDcEQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLHVCQUFjLEdBQXJCLFVBQXNCLEtBQWEsRUFBRSxLQUFjO1FBQ2pELE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDTSxpQkFBUSxHQUFmLFVBQWdCLEdBQUc7UUFDakIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFTRCx5QkFBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVILGVBQUM7QUFBRCxDQUFDLEFBMUJELENBQXNDLEtBQUssR0EwQjFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ1NWRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHN0YXRpYyBjb2x1bW5fbWlzbWF0Y2hlZChpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJjb2x1bW5fbWlzbWF0Y2hlZFwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyB1bmNsb3NlZF9xdW90ZShpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJ1bmNsb3NlZF9xdW90ZVwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyBmcm9tSlNPTihvYmopIHtcbiAgICByZXR1cm4gbmV3IENTVkVycm9yKG9iai5lcnIsIG9iai5saW5lLCBvYmouZXh0cmEpO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlcnI6IHN0cmluZyxcbiAgICBwdWJsaWMgbGluZTogbnVtYmVyLFxuICAgIHB1YmxpYyBleHRyYT86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcIkVycm9yOiBcIiArIGVyciArIFwiLiBKU09OIExpbmUgbnVtYmVyOiBcIiArIGxpbmUgKyAoZXh0cmEgPyBcIiBuZWFyOiBcIiArIGV4dHJhIDogXCJcIikpO1xuICAgIHRoaXMubmFtZSA9IFwiQ1NWIFBhcnNlIEVycm9yXCI7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnI6IHRoaXMuZXJyLFxuICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgZXh0cmE6IHRoaXMuZXh0cmFcbiAgICB9XG4gIH1cblxufVxuIl19
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Converter_1 = require("../src/Converter");
var assert = require("assert");
var fs = require("fs");
describe("Converter error handling", function () {
it("should handle quote not closed", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter_1.Converter({});
conv.on("error", function (err) {
assert(err.err === "unclosed_quote");
done();
});
rs.pipe(conv);
});
it("should handle column number mismatched error", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithMismatchedColumn");
var conv = new Converter_1.Converter({
checkColumn: true
});
var tested = false;
conv.on("error", function (err) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
// done();
}
});
conv.on('done', function () {
assert(tested);
done();
});
rs.pipe(conv);
});
it("should treat quote not closed as column_mismatched when alwaysSplitAtEOL is true", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter_1.Converter({
checkColumn: true,
alwaysSplitAtEOL: true,
});
var tested = false;
conv.on("error", function (err) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
}
});
conv.on('done', function () {
assert(tested);
done();
});
rs.pipe(conv);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdEVycm9ySGFuZGxlLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0RXJyb3JIYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBMkM7QUFFM0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QixRQUFRLENBQUMsMEJBQTBCLEVBQUU7SUFDbkMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFVBQVMsSUFBSTtRQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLDhCQUE4QixDQUFDLENBQUM7UUFDekUsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVMsR0FBWTtZQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBR0gsRUFBRSxDQUFFLDhDQUE4QyxFQUFFLFVBQVMsSUFBSTtRQUMvRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQ3ZCLFdBQVcsRUFBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNkLFVBQVU7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUM7WUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRkFBa0YsRUFBRSxVQUFTLElBQUk7UUFDbEcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUN2QixXQUFXLEVBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBQyxJQUFJO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFDO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udmVydGVyfSBmcm9tIFwiLi4vc3JjL0NvbnZlcnRlclwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuLi9zcmMvQ1NWRXJyb3JcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuXG5kZXNjcmliZShcIkNvbnZlcnRlciBlcnJvciBoYW5kbGluZ1wiLCBmdW5jdGlvbigpIHtcbiAgaXQoXCJzaG91bGQgaGFuZGxlIHF1b3RlIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7fSk7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwidW5jbG9zZWRfcXVvdGVcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjb252KTtcbiAgfSk7XG4gXG5cbiAgaXQgKFwic2hvdWxkIGhhbmRsZSBjb2x1bW4gbnVtYmVyIG1pc21hdGNoZWQgZXJyb3JcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aE1pc21hdGNoZWRDb2x1bW5cIik7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrQ29sdW1uOnRydWVcbiAgICB9KTtcbiAgICB2YXIgdGVzdGVkID0gZmFsc2U7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgaWYgKHRlc3RlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwiY29sdW1uX21pc21hdGNoZWRcIik7XG4gICAgICAgIHRlc3RlZCA9IHRydWU7XG4gICAgICAgIC8vIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHRyZWF0IHF1b3RlIG5vdCBjbG9zZWQgYXMgY29sdW1uX21pc21hdGNoZWQgd2hlbiBhbHdheXNTcGxpdEF0RU9MIGlzIHRydWVcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja0NvbHVtbjp0cnVlLFxuICAgICAgYWx3YXlzU3BsaXRBdEVPTDp0cnVlLFxuICAgIH0pO1xuICAgIHZhciB0ZXN0ZWQgPSBmYWxzZTtcbiAgICBjb252Lm9uKFwiZXJyb3JcIiwgZnVuY3Rpb24oZXJyOkNTVkVycm9yKSB7XG4gICAgICBpZiAodGVzdGVkID09PSBmYWxzZSkge1xuICAgICAgICBhc3NlcnQoZXJyLmVyciA9PT0gXCJjb2x1bW5fbWlzbWF0Y2hlZFwiKTtcbiAgICAgICAgdGVzdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xufSk7XG4iXX0=
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var ProcessorLocal_1 = require("./ProcessorLocal");
var Converter_1 = require("./Converter");
var fs_1 = require("fs");
var path_1 = __importDefault(require("path"));
var assert_1 = __importDefault(require("assert"));
var dataDir = path_1.default.join(__dirname, "../test/data/");
describe("ProcessLocal", function () {
it("should process csv chunks and output json", function () {
return __awaiter(this, void 0, void 0, function () {
var processor, data, lines, line0;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter());
data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return [4 /*yield*/, processor.process(data)];
case 1:
lines = _a.sent();
assert_1.default(lines.length === 2);
line0 = lines[0];
assert_1.default.equal(line0.fieldA.title, "Food Factory");
assert_1.default.equal(line0.fieldA.children.length, 2);
assert_1.default.equal(line0.fieldA.children[1].employee[0].name, "Tim");
return [2 /*return*/];
}
});
});
});
it("should process csv chunks and output csv rows", function () {
return __awaiter(this, void 0, void 0, function () {
var processor, data, lines;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter({ output: "line" }));
data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return [4 /*yield*/, processor.process(data)];
case 1:
lines = _a.sent();
assert_1.default(lines.length === 2);
return [2 /*return*/];
}
});
});
});
it("should return empty array if preRawHook removed the data", function () {
var conv = new Converter_1.Converter();
conv.preRawData(function (str) {
return "";
});
var processor = new ProcessorLocal_1.ProcessorLocal(conv);
var data = fs_1.readFileSync(dataDir + "/complexJSONCSV");
return processor.process(data)
.then(function (list) {
assert_1.default.equal(list.length, 0);
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1Byb2Nlc3NvckxvY2FsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCx5Q0FBd0M7QUFFeEMseUJBQWdDO0FBQ2hDLDhDQUF3QjtBQUN4QixrREFBNEI7QUFFNUIsSUFBTSxPQUFPLEdBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDbkQsUUFBUSxDQUFDLGNBQWMsRUFBQztJQUN0QixFQUFFLENBQUUsMkNBQTJDLEVBQUM7Ozs7Ozt3QkFDeEMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFDekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixLQUFLLEdBQUMsS0FBSyxDQUFDLENBQUMsQ0FBZSxDQUFDO3dCQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxjQUFjLENBQUMsQ0FBQzt3QkFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLEtBQUssQ0FBQyxDQUFDOzs7OztLQUMvRCxDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsK0NBQStDLEVBQUM7Ozs7Ozt3QkFDNUMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFFekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDOzs7OztLQUM1QixDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsMERBQTBELEVBQUM7UUFDN0QsSUFBTSxJQUFJLEdBQUMsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFDLEdBQUc7WUFDbEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILElBQU0sU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFNLElBQUksR0FBQyxpQkFBWSxDQUFDLE9BQU8sR0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDN0IsSUFBSSxDQUFDLFVBQUMsSUFBSTtZQUNULGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9jZXNzb3JMb2NhbH0gZnJvbSBcIi4vUHJvY2Vzc29yTG9jYWxcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IFAgZnJvbSBcImJsdWViaXJkXCI7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyBKU09OUmVzdWx0IH0gZnJvbSBcIi4vbGluZVRvSnNvblwiO1xuY29uc3QgZGF0YURpcj1wYXRoLmpvaW4oX19kaXJuYW1lLFwiLi4vdGVzdC9kYXRhL1wiKTtcbmRlc2NyaWJlKFwiUHJvY2Vzc0xvY2FsXCIsKCk9PntcbiAgaXQgKFwic2hvdWxkIHByb2Nlc3MgY3N2IGNodW5rcyBhbmQgb3V0cHV0IGpzb25cIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoKSk7XG4gICAgY29uc3QgZGF0YT1yZWFkRmlsZVN5bmMoZGF0YURpcitcIi9jb21wbGV4SlNPTkNTVlwiKTtcbiAgICBjb25zdCBsaW5lcz1hd2FpdCBwcm9jZXNzb3IucHJvY2VzcyhkYXRhKTtcbiAgICBhc3NlcnQobGluZXMubGVuZ3RoID09PSAyKTtcbiAgICBjb25zdCBsaW5lMD1saW5lc1swXSBhcyBKU09OUmVzdWx0O1xuICAgIGFzc2VydC5lcXVhbChsaW5lMC5maWVsZEEudGl0bGUsXCJGb29kIEZhY3RvcnlcIik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlbi5sZW5ndGgsMik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlblsxXS5lbXBsb3llZVswXS5uYW1lLFwiVGltXCIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcHJvY2VzcyBjc3YgY2h1bmtzIGFuZCBvdXRwdXQgY3N2IHJvd3NcIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoe291dHB1dDpcImxpbmVcIn0pKTtcbiAgICBjb25zdCBkYXRhPXJlYWRGaWxlU3luYyhkYXRhRGlyK1wiL2NvbXBsZXhKU09OQ1NWXCIpO1xuICAgIGNvbnN0IGxpbmVzPWF3YWl0IHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpO1xuICAgIFxuICAgIGFzc2VydChsaW5lcy5sZW5ndGggPT09IDIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcmV0dXJuIGVtcHR5IGFycmF5IGlmIHByZVJhd0hvb2sgcmVtb3ZlZCB0aGUgZGF0YVwiLCgpPT57XG4gICAgY29uc3QgY29udj1uZXcgQ29udmVydGVyKCk7XG4gICAgY29udi5wcmVSYXdEYXRhKChzdHIpPT57XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKGNvbnYpO1xuICAgIGNvbnN0IGRhdGE9cmVhZEZpbGVTeW5jKGRhdGFEaXIrXCIvY29tcGxleEpTT05DU1ZcIik7XG4gICAgcmV0dXJuIHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpXG4gICAgLnRoZW4oKGxpc3QpPT57XG4gICAgICBhc3NlcnQuZXF1YWwobGlzdC5sZW5ndGgsMCk7XG4gICAgfSlcbiAgfSlcbn0pXG5cbiJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
describe("CSVError", function () {
it("should toString()", function () {
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL0NTVkVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2xCLEVBQUUsQ0FBRSxtQkFBbUIsRUFBQztJQUN4QixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmRlc2NyaWJlKFwiQ1NWRXJyb3JcIiwoKT0+e1xuICBpdCAoXCJzaG91bGQgdG9TdHJpbmcoKVwiLCgpPT57XG4gIH0pXG59KSJdfQ==
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fileline_1 = require("./fileline");
var Converter_1 = require("./Converter");
var assert = require("assert");
describe("fileline function", function () {
it("should convert data to multiple lines ", function () {
var conv = new Converter_1.Converter();
var data = "abcde\nefef";
var result = fileline_1.stringToLines(data, conv.parseRuntime);
assert.equal(result.lines.length, 1);
assert.equal(result.partial, "efef");
assert.equal(result.lines[0], "abcde");
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2ZpbGVsaW5lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUM7QUFFekMseUNBQXdDO0FBQ3hDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFFLHdDQUF3QyxFQUFFO1FBQzVDLElBQU0sSUFBSSxHQUFDLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRyx3QkFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cmluZ1RvTGluZXN9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBtZXJnZVBhcmFtcyB9IGZyb20gXCIuL1BhcmFtZXRlcnNcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5kZXNjcmliZShcImZpbGVsaW5lIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uKCkge1xuICBpdCAoXCJzaG91bGQgY29udmVydCBkYXRhIHRvIG11bHRpcGxlIGxpbmVzIFwiLCBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBjb252PW5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgZGF0YSA9IFwiYWJjZGVcXG5lZmVmXCI7XG4gICAgdmFyIHJlc3VsdCA9IHN0cmluZ1RvTGluZXMoZGF0YSwgY29udi5wYXJzZVJ1bnRpbWUpO1xuICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGluZXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnBhcnRpYWwsIFwiZWZlZlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LmxpbmVzWzBdLCBcImFiY2RlXCIpO1xuICB9KTtcbn0pO1xuIl19

Sorry, the diff of this file is too big to display