mirror of
				https://kkgithub.com/actions/setup-python.git
				synced 2025-11-04 04:31:51 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
const pump = require('pump');
 | 
						|
const bufferStream = require('./buffer-stream');
 | 
						|
 | 
						|
class MaxBufferError extends Error {
 | 
						|
	constructor() {
 | 
						|
		super('maxBuffer exceeded');
 | 
						|
		this.name = 'MaxBufferError';
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function getStream(inputStream, options) {
 | 
						|
	if (!inputStream) {
 | 
						|
		return Promise.reject(new Error('Expected a stream'));
 | 
						|
	}
 | 
						|
 | 
						|
	options = Object.assign({maxBuffer: Infinity}, options);
 | 
						|
 | 
						|
	const {maxBuffer} = options;
 | 
						|
 | 
						|
	let stream;
 | 
						|
	return new Promise((resolve, reject) => {
 | 
						|
		const rejectPromise = error => {
 | 
						|
			if (error) { // A null check
 | 
						|
				error.bufferedData = stream.getBufferedValue();
 | 
						|
			}
 | 
						|
			reject(error);
 | 
						|
		};
 | 
						|
 | 
						|
		stream = pump(inputStream, bufferStream(options), error => {
 | 
						|
			if (error) {
 | 
						|
				rejectPromise(error);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			resolve();
 | 
						|
		});
 | 
						|
 | 
						|
		stream.on('data', () => {
 | 
						|
			if (stream.getBufferedLength() > maxBuffer) {
 | 
						|
				rejectPromise(new MaxBufferError());
 | 
						|
			}
 | 
						|
		});
 | 
						|
	}).then(() => stream.getBufferedValue());
 | 
						|
}
 | 
						|
 | 
						|
module.exports = getStream;
 | 
						|
module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
 | 
						|
module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
 | 
						|
module.exports.MaxBufferError = MaxBufferError;
 |