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
						
					
					
				| "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
 |