Sha256: 56d0dfbd2acbaffd7a592eb25130eed4ab12bc1c10844677b2d869d5992c36a9

Contents?: true

Size: 1011 Bytes

Versions: 41

Compression:

Stored size: 1011 Bytes

Contents

const Minipass = require('minipass')
const _flush = Symbol('_flush')
const _flushed = Symbol('_flushed')
const _flushing = Symbol('_flushing')
class Flush extends Minipass {
  constructor (opt = {}) {
    if (typeof opt === 'function')
      opt = { flush: opt }

    super(opt)

    // or extend this class and provide a 'flush' method in your subclass
    if (typeof opt.flush !== 'function' && typeof this.flush !== 'function')
      throw new TypeError('must provide flush function in options')

    this[_flush] = opt.flush || this.flush
  }

  emit (ev, ...data) {
    if ((ev !== 'end' && ev !== 'finish') || this[_flushed])
      return super.emit(ev, ...data)

    if (this[_flushing])
      return

    this[_flushing] = true

    const afterFlush = er => {
      this[_flushed] = true
      er ? super.emit('error', er) : super.emit('end')
    }

    const ret = this[_flush](afterFlush)
    if (ret && ret.then)
      ret.then(() => afterFlush(), er => afterFlush(er))
  }
}

module.exports = Flush

Version data entries

41 entries across 40 versions & 7 rubygems

Version Path
immosquare-cleaner-0.1.51 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.50 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.49 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.48 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.47 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.46 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.45 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.44 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.43 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.42 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.41 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.40 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.39 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.38 node_modules/minipass-flush/index.js
optimacms-0.1.61 spec/dummy/node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.32 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.31 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.30 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.29 node_modules/minipass-flush/index.js
immosquare-cleaner-0.1.28 node_modules/minipass-flush/index.js