"use strict"; var Batcher, Events, parser; parser = require("./parser"); Events = require("./Events"); Batcher = function () { class Batcher { constructor(options = {}) { this.options = options; parser.load(this.options, this.defaults, this); this.Events = new Events(this); this._arr = []; this._resetPromise(); this._lastFlush = Date.now(); } _resetPromise() { return this._promise = new this.Promise((res, rej) => { return this._resolve = res; }); } _flush() { clearTimeout(this._timeout); this._lastFlush = Date.now(); this._resolve(); this.Events.trigger("batch", this._arr); this._arr = []; return this._resetPromise(); } add(data) { var ret; this._arr.push(data); ret = this._promise; if (this._arr.length === this.maxSize) { this._flush(); } else if (this.maxTime != null && this._arr.length === 1) { this._timeout = setTimeout(() => { return this._flush(); }, this.maxTime); } return ret; } } ; Batcher.prototype.defaults = { maxTime: null, maxSize: null, Promise: Promise }; return Batcher; }.call(void 0); module.exports = Batcher;