Lines Matching refs:stream

1 // Ported from https://github.com/mafintosh/end-of-stream with
49 function isRequest(stream) {
50 return stream.setHeader && typeof stream.abort === 'function';
55 function eos(stream, options, callback) {
69 if (isReadableStream(stream) || isWritableStream(stream)) {
70 return eosWeb(stream, options, callback);
73 if (!isNodeStream(stream)) {
74 throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream);
77 const readable = options.readable ?? isReadableNodeStream(stream);
78 const writable = options.writable ?? isWritableNodeStream(stream);
80 const wState = stream._writableState;
81 const rState = stream._readableState;
84 if (!stream.writable) {
93 _willEmitClose(stream) &&
94 isReadableNodeStream(stream) === readable &&
95 isWritableNodeStream(stream) === writable
98 let writableFinished = isWritableFinished(stream, false);
104 if (stream.destroyed) {
108 if (willEmitClose && (!stream.readable || readable)) {
113 callback.call(stream);
117 let readableFinished = isReadableFinished(stream, false);
123 if (stream.destroyed) {
127 if (willEmitClose && (!stream.writable || writable)) {
132 callback.call(stream);
137 callback.call(stream, err);
140 let closed = isClosed(stream);
145 const errored = isWritableErrored(stream) || isReadableErrored(stream);
148 return callback.call(stream, errored);
151 if (readable && !readableFinished && isReadableNodeStream(stream, true)) {
152 if (!isReadableFinished(stream, false))
153 return callback.call(stream,
157 if (!isWritableFinished(stream, false))
158 return callback.call(stream,
162 callback.call(stream);
168 const errored = isWritableErrored(stream) || isReadableErrored(stream);
171 return callback.call(stream, errored);
174 callback.call(stream);
178 stream.req.on('finish', onfinish);
181 if (isRequest(stream)) {
182 stream.on('complete', onfinish);
184 stream.on('abort', onclose);
186 if (stream.req) {
189 stream.on('request', onrequest);
192 stream.on('end', onlegacyfinish);
193 stream.on('close', onlegacyfinish);
197 if (!willEmitClose && typeof stream.aborted === 'boolean') {
198 stream.on('aborted', onclose);
201 stream.on('end', onend);
202 stream.on('finish', onfinish);
204 stream.on('error', onerror);
206 stream.on('close', onclose);
216 (!willEmitClose || isReadable(stream)) &&
217 (writableFinished || isWritable(stream) === false)
222 (!willEmitClose || isWritable(stream)) &&
223 (readableFinished || isReadable(stream) === false)
226 } else if ((rState && stream.req && stream.aborted)) {
232 stream.removeListener('aborted', onclose);
233 stream.removeListener('complete', onfinish);
234 stream.removeListener('abort', onclose);
235 stream.removeListener('request', onrequest);
236 if (stream.req) stream.req.removeListener('finish', onfinish);
237 stream.removeListener('end', onlegacyfinish);
238 stream.removeListener('close', onlegacyfinish);
239 stream.removeListener('finish', onfinish);
240 stream.removeListener('end', onend);
241 stream.removeListener('error', onerror);
242 stream.removeListener('close', onclose);
251 stream,
262 originalCallback.apply(stream, args);
270 function eosWeb(stream, options, callback) {
276 callback.call(stream, new AbortError(undefined, { cause: options.signal.reason }));
286 originalCallback.apply(stream, args);
292 process.nextTick(() => callback.apply(stream, args));
296 stream[kIsClosedPromise].promise,
303 function finished(stream, opts) {
313 const cleanup = eos(stream, opts, (err) => {