taoyuan/memstreams

View on GitHub
src/buffer-duplex.ts

Summary

Maintainability
C
1 day
Test Coverage
A
100%
import {Duplex, DuplexOptions} from 'readable-stream';
import {
  MemReadable,
  MemReaderOptions,
  MemWritable,
  MemWriterOptions,
} from './types';
import {BufferReader} from './buffer-reader';
import {BufferWriter} from './buffer-writer';
import {applyMixins} from './utils';

export class BufferDuplex extends Duplex implements MemReadable, MemWritable {
  readonly data: any[] | Buffer;
  queue: any[] | Buffer[];
  it: Iterator<any>;

  constructor(
    source?: Iterable<any> | Array<any>,
    options: DuplexOptions & MemReaderOptions & MemWriterOptions = {},
  ) {
    options.objectMode = false;
    super(options);

    BufferReader.prototype.init.call(this, source, options);
    BufferWriter.prototype.init.call(this);
  }

  forward: <T extends MemReadable>(
    destination: T,
    options?: {end?: boolean},
  ) => T;
}

applyMixins(BufferDuplex, [BufferReader, BufferWriter]);