WME/aufgabe5/node_modules/csvtojson/v2/ProcessFork.js

154 lines
5.6 KiB
JavaScript
Raw Normal View History

2019-01-09 11:25:28 +00:00
"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 Parameters_1 = require("./Parameters");
var CSVError_1 = __importDefault(require("./CSVError"));
var ProcessorFork = /** @class */ (function (_super) {
__extends(ProcessorFork, _super);
function ProcessorFork(converter) {
var _this = _super.call(this, converter) || this;
_this.converter = converter;
_this.inited = false;
_this.resultBuf = [];
_this.leftChunk = "";
_this.finalChunk = false;
_this.childProcess = require("child_process").spawn(process.execPath, [__dirname + "/../v2/worker.js"], {
stdio: ["pipe", "pipe", "pipe", "ipc"]
});
_this.initWorker();
return _this;
}
ProcessorFork.prototype.flush = function () {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
// console.log("flush");
_this.finalChunk = true;
_this.next = resolve;
_this.childProcess.stdin.end();
// this.childProcess.stdout.on("end",()=>{
// // console.log("!!!!");
// this.flushResult();
// })
});
};
ProcessorFork.prototype.destroy = function () {
this.childProcess.kill();
return bluebird_1.default.resolve();
};
ProcessorFork.prototype.prepareParam = function (param) {
var clone = Parameters_1.mergeParams(param);
if (clone.ignoreColumns) {
clone.ignoreColumns = {
source: clone.ignoreColumns.source,
flags: clone.ignoreColumns.flags
};
}
if (clone.includeColumns) {
clone.includeColumns = {
source: clone.includeColumns.source,
flags: clone.includeColumns.flags
};
}
return clone;
};
ProcessorFork.prototype.initWorker = function () {
var _this = this;
this.childProcess.on("exit", function () {
_this.flushResult();
});
this.childProcess.send({
cmd: "init",
params: this.prepareParam(this.converter.parseParam)
});
this.childProcess.on("message", function (msg) {
if (msg.cmd === "inited") {
_this.inited = true;
}
else if (msg.cmd === "eol") {
if (_this.converter.listeners("eol").length > 0) {
_this.converter.emit("eol", msg.value);
}
}
else if (msg.cmd === "header") {
if (_this.converter.listeners("header").length > 0) {
_this.converter.emit("header", msg.value);
}
}
else if (msg.cmd === "done") {
// this.flushResult();
}
});
this.childProcess.stdout.on("data", function (data) {
// console.log("stdout", data.toString());
var res = data.toString();
// console.log(res);
_this.appendBuf(res);
});
this.childProcess.stderr.on("data", function (data) {
// console.log("stderr", data.toString());
_this.converter.emit("error", CSVError_1.default.fromJSON(JSON.parse(data.toString())));
});
};
ProcessorFork.prototype.flushResult = function () {
// console.log("flush result", this.resultBuf.length);
if (this.next) {
this.next(this.resultBuf);
}
this.resultBuf = [];
};
ProcessorFork.prototype.appendBuf = function (data) {
var res = this.leftChunk + data;
var list = res.split("\n");
var counter = 0;
var lastBit = list[list.length - 1];
if (lastBit !== "") {
this.leftChunk = list.pop() || "";
}
else {
this.leftChunk = "";
}
this.resultBuf = this.resultBuf.concat(list);
// while (list.length) {
// let item = list.shift() || "";
// if (item.length === 0 ) {
// continue;
// }
// // if (this.params.output !== "line") {
// // item = JSON.parse(item);
// // }
// this.resultBuf.push(item);
// counter++;
// }
// console.log("buf length",this.resultBuf.length);
};
ProcessorFork.prototype.process = function (chunk) {
var _this = this;
return new bluebird_1.default(function (resolve, reject) {
// console.log("chunk", chunk.length);
_this.next = resolve;
// this.appendReadBuf(chunk);
_this.childProcess.stdin.write(chunk, function () {
// console.log("chunk callback");
_this.flushResult();
});
});
};
return ProcessorFork;
}(Processor_1.Processor));
exports.ProcessorFork = ProcessorFork;
exports.EOM = "\x03";
//# sourceMappingURL=ProcessFork.js.map