You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					193 lines
				
				6.4 KiB
			
		
		
			
		
	
	
					193 lines
				
				6.4 KiB
			| 
											3 years ago
										 | "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=Converter.js.map
 |