UNPKG

stream-limit-throughput

Version:
53 lines (34 loc) 1.63 kB
'use strict'; exports.__esModule = true; exports.MAX_ALLOWED_ITEMS = exports.DEFAULT_MAX_ITEMS_IN_FLIGHT = undefined; exports['default'] = streamLimitThroughput; var _events = require('events'); var _events2 = _interopRequireDefault(_events); var _isStream = require('is-stream'); var _isStream2 = _interopRequireDefault(_isStream); var _runGarbageCollection = require('./run-garbage-collection'); var _runGarbageCollection2 = _interopRequireDefault(_runGarbageCollection); var _createFill = require('./create-fill'); var _createFill2 = _interopRequireDefault(_createFill); var _createDrain = require('./create-drain'); var _createDrain2 = _interopRequireDefault(_createDrain); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } const DEFAULT_MAX_ITEMS_IN_FLIGHT = exports.DEFAULT_MAX_ITEMS_IN_FLIGHT = 50; const MAX_ALLOWED_ITEMS = exports.MAX_ALLOWED_ITEMS = 4096; function streamLimitThroughput({ input, max, objectMode } = {}) { // set input stream property if (!(0, _isStream2['default'])(input)) throw new Error('inputStream is required'); // context as EventEmitter const context = new _events2['default'](); context.input = input; context.objectMode = objectMode; context.items = 0; context.max = ~~max; // eslint-disable-line no-bitwise if (context.max < 1 || context.max > MAX_ALLOWED_ITEMS) { context.max = DEFAULT_MAX_ITEMS_IN_FLIGHT; } context.fill = (0, _createFill2['default'])(context); context.drain = (0, _createDrain2['default'])(context); context.on('filling', _runGarbageCollection2['default']); return context; }