Initial commit
This commit is contained in:
154
themes/keepit/node_modules/csvtojson/v2/ProcessFork.js
generated
vendored
Normal file
154
themes/keepit/node_modules/csvtojson/v2/ProcessFork.js
generated
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
"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
|
||||
Reference in New Issue
Block a user