HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/tana/frontend/node_modules/ternary-stream/index.js
'use strict';

var through2 = require('through2');
var ForkStream = require('fork-stream');
var mergeStream = require('merge-stream');
var duplexify = require('duplexify');

module.exports = function (condition, trueStream, falseStream) {
	if (!trueStream) {
		throw new Error('fork-stream: child action is required');
	}

	// output stream
	var outStream = through2.obj();

	// create fork-stream
	var forkStream = new ForkStream({
		classifier: function (e, cb) {
			var ans = !!condition(e);
			return cb(null, ans);
		}
	});

	// if condition is true, pipe input to trueStream
	forkStream.a.pipe(trueStream);

	var mergedStream;

	if (falseStream) {
		// if there's an 'else' condition
		// if condition is false
		// pipe input to falseStream
		forkStream.b.pipe(falseStream);
		// merge output with trueStream's output
		mergedStream = mergeStream(falseStream, trueStream);
		// redirect falseStream errors to mergedStream
		falseStream.on('error', function(err) { mergedStream.emit('error', err); });
	} else {
		// if there's no 'else' condition
		// if condition is false
		// merge output with trueStream's output
		mergedStream = mergeStream(forkStream.b, trueStream);
	}

	// redirect trueStream errors to mergedStream
	trueStream.on('error', function(err) { mergedStream.emit('error', err); });

	// send everything down-stream
	mergedStream.pipe(outStream);
	// redirect mergedStream errors to outStream
	mergedStream.on('error', function(err) { outStream.emit('error', err); });

	// consumers write in to forkStream, we write out to outStream
	return duplexify.obj(forkStream, outStream);
};