@thewtex/vtk.js-esm
Version:
Visualization Toolkit for the Web
121 lines (92 loc) • 2.98 kB
JavaScript
import { e as events } from '../vendor/events/events.js';
import { u as util } from '../vendor/util/util.js';
import { D as Duplex } from './polyfill-node__stream_duplex.js';
import { R as Readable } from './polyfill-node__stream_readable.js';
import { W as Writable } from './polyfill-node__stream_writable.js';
import { T as Transform } from './polyfill-node__stream_transform.js';
import { P as PassThrough } from './polyfill-node__stream_passthrough.js';
util.inherits(Stream, events);
Stream.Readable = Readable;
Stream.Writable = Writable;
Stream.Duplex = Duplex;
Stream.Transform = Transform;
Stream.PassThrough = PassThrough;
// Backwards-compat with node 0.4.x
Stream.Stream = Stream;
// old-style streams. Note that the pipe method (the only relevant
// part of this class) is overridden in the Readable class.
function Stream() {
events.call(this);
}
Stream.prototype.pipe = function(dest, options) {
var source = this;
function ondata(chunk) {
if (dest.writable) {
if (false === dest.write(chunk) && source.pause) {
source.pause();
}
}
}
source.on('data', ondata);
function ondrain() {
if (source.readable && source.resume) {
source.resume();
}
}
dest.on('drain', ondrain);
// If the 'end' option is not supplied, dest.end() will be called when
// source gets the 'end' or 'close' events. Only dest.end() once.
if (!dest._isStdio && (!options || options.end !== false)) {
source.on('end', onend);
source.on('close', onclose);
}
var didOnEnd = false;
function onend() {
if (didOnEnd) return;
didOnEnd = true;
dest.end();
}
function onclose() {
if (didOnEnd) return;
didOnEnd = true;
if (typeof dest.destroy === 'function') dest.destroy();
}
// don't leave dangling pipes when there are errors.
function onerror(er) {
cleanup();
if (events.listenerCount(this, 'error') === 0) {
throw er; // Unhandled stream error in pipe.
}
}
source.on('error', onerror);
dest.on('error', onerror);
// remove all the event listeners that were added.
function cleanup() {
source.removeListener('data', ondata);
dest.removeListener('drain', ondrain);
source.removeListener('end', onend);
source.removeListener('close', onclose);
source.removeListener('error', onerror);
dest.removeListener('error', onerror);
source.removeListener('end', cleanup);
source.removeListener('close', cleanup);
dest.removeListener('close', cleanup);
}
source.on('end', cleanup);
source.on('close', cleanup);
dest.on('close', cleanup);
dest.emit('pipe', source);
// Allow for unix-like usage: A.pipe(B).pipe(C)
return dest;
};
var _polyfillNode_stream = /*#__PURE__*/Object.freeze({
__proto__: null,
'default': Stream,
Readable: Readable,
Writable: Writable,
Duplex: Duplex,
Transform: Transform,
PassThrough: PassThrough,
Stream: Stream
});
export { _polyfillNode_stream as _ };