thedesk/app/node_modules/slice-stream/slicestream.js
2018-02-18 16:29:06 +09:00

35 lines
854 B
JavaScript

'use strict';
module.exports = SliceStream;
var Transform = require('readable-stream/transform');
var inherits = require("util").inherits;
inherits(SliceStream, Transform);
function SliceStream(opts, sliceFn) {
if (!(this instanceof SliceStream)) {
return new SliceStream(opts, sliceFn);
}
this._opts = opts;
this._accumulatedLength = 0;
this.sliceFn = sliceFn;
Transform.call(this);
}
SliceStream.prototype._transform = function (chunk, encoding, callback) {
this._accumulatedLength += chunk.length;
if (this._accumulatedLength >= this._opts.length) {
//todo handle more than one slice in a stream
var offset = chunk.length - (this._accumulatedLength - this._opts.length);
this.sliceFn(chunk.slice(0, offset), true, chunk.slice(offset));
callback();
} else {
this.sliceFn(chunk);
callback();
}
};