UNPKG

series-processing

Version:

Time-series processing for forex, market analysis, including MA, EMA,...

119 lines (92 loc) 2.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _dataStream = require('./data-stream'); var _dataStream2 = _interopRequireDefault(_dataStream); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var TimeSeries = function TimeSeries(options) { var _this = this; _classCallCheck(this, TimeSeries); this.chain = []; this.getDataSeries = function () { return _this.dataStream.getData(); }; this.getLatest = function () { var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; return _this.dataStream.getLast(num); }; this.initData = function () { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var skip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (skip) { _this.dataStream.setData(data); } else { // Append one-by-one _this.dataStream.setData(null); data.map(function (record) { return _this.appendData(record); }); } return _this; }; this.appendData = function (record) { // TODO How about update last data? _this.dataStream.push(record); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _this.chain[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _ref2 = _step.value; var type = _ref2.type, func = _ref2.func; if (type === 'map') { Object.assign(record, func(record, _this.dataStream)); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return _this; }; this.map = function (func) { if (Array.isArray(func)) { // Recursive add to chain if array func.map(function (f) { return _this.map(f); }); } else if (typeof func === 'function') { _this.chain.push({ type: 'map', func: func }); // TODO Call func if data exists if (_this.dataStream.hasData()) {} } return _this; }; this.aggregate = function (func) { return func(_this.dataStream); }; this.options = Object.assign({ // Default value }, options); this.dataStream = new _dataStream2.default(); } // TODO Reduce function? ; exports.default = TimeSeries; module.exports = exports['default'];