Sha256: 082bb7c9c7f020c816c2582fe436c992b9851e0727339723337b580d6f6c1707
Contents?: true
Size: 1.09 KB
Versions: 68
Compression:
Stored size: 1.09 KB
Contents
'use strict' const MinipassPipeline = require('minipass-pipeline') class CachingMinipassPipeline extends MinipassPipeline { #events = [] #data = new Map() constructor (opts, ...streams) { // CRITICAL: do NOT pass the streams to the call to super(), this will start // the flow of data and potentially cause the events we need to catch to emit // before we've finished our own setup. instead we call super() with no args, // finish our setup, and then push the streams into ourselves to start the // data flow super() this.#events = opts.events /* istanbul ignore next - coverage disabled because this is pointless to test here */ if (streams.length) { this.push(...streams) } } on (event, handler) { if (this.#events.includes(event) && this.#data.has(event)) { return handler(...this.#data.get(event)) } return super.on(event, handler) } emit (event, ...data) { if (this.#events.includes(event)) { this.#data.set(event, data) } return super.emit(event, ...data) } } module.exports = CachingMinipassPipeline
Version data entries
68 entries across 35 versions & 2 rubygems