mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-31 02:17:01 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			910 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			910 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| 
 | |
| const { ArrayPrototypePop, Promise } = require('../ours/primordials')
 | |
| 
 | |
| const { isIterable, isNodeStream } = require('../internal/streams/utils')
 | |
| 
 | |
| const { pipelineImpl: pl } = require('../internal/streams/pipeline')
 | |
| 
 | |
| const { finished } = require('../internal/streams/end-of-stream')
 | |
| 
 | |
| function pipeline(...streams) {
 | |
|   return new Promise((resolve, reject) => {
 | |
|     let signal
 | |
|     let end
 | |
|     const lastArg = streams[streams.length - 1]
 | |
| 
 | |
|     if (lastArg && typeof lastArg === 'object' && !isNodeStream(lastArg) && !isIterable(lastArg)) {
 | |
|       const options = ArrayPrototypePop(streams)
 | |
|       signal = options.signal
 | |
|       end = options.end
 | |
|     }
 | |
| 
 | |
|     pl(
 | |
|       streams,
 | |
|       (err, value) => {
 | |
|         if (err) {
 | |
|           reject(err)
 | |
|         } else {
 | |
|           resolve(value)
 | |
|         }
 | |
|       },
 | |
|       {
 | |
|         signal,
 | |
|         end
 | |
|       }
 | |
|     )
 | |
|   })
 | |
| }
 | |
| 
 | |
| module.exports = {
 | |
|   finished,
 | |
|   pipeline
 | |
| }
 |