You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

35 lines
941 B

import {createWriteStream} from "fs"
function handleEpipe(error) {
if (error.code === "EPIPE" || error.errno === "EPIPE") {
process.exit(0);
}
}
export default function(file) {
var output = (file === "-" ? process.stdout : createWriteStream(file)).on("error", handleEpipe),
queue = Promise.resolve();
return {
write: function(data) {
return queue = queue.then(function() {
return new Promise(function(resolve, reject) {
output.write(data, function(error) {
if (error) reject(error);
else resolve();
});
});
});
},
end: function() {
if (output === process.stdout) return queue;
return queue = queue.then(function() {
return new Promise(function(resolve, reject) {
output.end(function(error) {
if (error) reject(error);
else resolve();
});
});
});
}
};
}