| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- import { Subscription } from '../Subscription';
 
- import { operate } from '../util/lift';
 
- import { createOperatorSubscriber } from './OperatorSubscriber';
 
- import { arrRemove } from '../util/arrRemove';
 
- import { asyncScheduler } from '../scheduler/async';
 
- import { popScheduler } from '../util/args';
 
- import { executeSchedule } from '../util/executeSchedule';
 
- export function bufferTime(bufferTimeSpan, ...otherArgs) {
 
-     var _a, _b;
 
-     const scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;
 
-     const bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
 
-     const maxBufferSize = otherArgs[1] || Infinity;
 
-     return operate((source, subscriber) => {
 
-         let bufferRecords = [];
 
-         let restartOnEmit = false;
 
-         const emit = (record) => {
 
-             const { buffer, subs } = record;
 
-             subs.unsubscribe();
 
-             arrRemove(bufferRecords, record);
 
-             subscriber.next(buffer);
 
-             restartOnEmit && startBuffer();
 
-         };
 
-         const startBuffer = () => {
 
-             if (bufferRecords) {
 
-                 const subs = new Subscription();
 
-                 subscriber.add(subs);
 
-                 const buffer = [];
 
-                 const record = {
 
-                     buffer,
 
-                     subs,
 
-                 };
 
-                 bufferRecords.push(record);
 
-                 executeSchedule(subs, scheduler, () => emit(record), bufferTimeSpan);
 
-             }
 
-         };
 
-         if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {
 
-             executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);
 
-         }
 
-         else {
 
-             restartOnEmit = true;
 
-         }
 
-         startBuffer();
 
-         const bufferTimeSubscriber = createOperatorSubscriber(subscriber, (value) => {
 
-             const recordsCopy = bufferRecords.slice();
 
-             for (const record of recordsCopy) {
 
-                 const { buffer } = record;
 
-                 buffer.push(value);
 
-                 maxBufferSize <= buffer.length && emit(record);
 
-             }
 
-         }, () => {
 
-             while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {
 
-                 subscriber.next(bufferRecords.shift().buffer);
 
-             }
 
-             bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();
 
-             subscriber.complete();
 
-             subscriber.unsubscribe();
 
-         }, undefined, () => (bufferRecords = null));
 
-         source.subscribe(bufferTimeSubscriber);
 
-     });
 
- }
 
- //# sourceMappingURL=bufferTime.js.map
 
 
  |