Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
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.
86 lines
1.9 KiB
86 lines
1.9 KiB
2 years ago
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.measureStreamLength = measureStreamLength;
|
||
|
exports.readableFromStringOrBuffer = readableFromStringOrBuffer;
|
||
|
exports.bufferStream = bufferStream;
|
||
|
exports.blobToStream = blobToStream;
|
||
|
exports.streamFromPromise = streamFromPromise;
|
||
|
exports.fallbackStream = fallbackStream;
|
||
|
|
||
|
function _stream() {
|
||
|
const data = require("stream");
|
||
|
|
||
|
_stream = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function measureStreamLength(stream) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
let length = 0;
|
||
|
stream.on('data', chunk => {
|
||
|
length += chunk;
|
||
|
});
|
||
|
stream.on('end', () => resolve(length));
|
||
|
stream.on('error', reject);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function readableFromStringOrBuffer(str) {
|
||
|
// https://stackoverflow.com/questions/12755997/how-to-create-streams-from-string-in-node-js
|
||
|
const stream = new (_stream().Readable)();
|
||
|
stream.push(str);
|
||
|
stream.push(null);
|
||
|
return stream;
|
||
|
}
|
||
|
|
||
|
function bufferStream(stream) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
let buf = Buffer.from([]);
|
||
|
stream.on('data', data => {
|
||
|
buf = Buffer.concat([buf, data]);
|
||
|
});
|
||
|
stream.on('end', () => {
|
||
|
resolve(buf);
|
||
|
});
|
||
|
stream.on('error', reject);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function blobToStream(blob) {
|
||
|
if (blob instanceof _stream().Readable) {
|
||
|
return blob;
|
||
|
}
|
||
|
|
||
|
return readableFromStringOrBuffer(blob);
|
||
|
}
|
||
|
|
||
|
function streamFromPromise(promise) {
|
||
|
const stream = new (_stream().PassThrough)();
|
||
|
promise.then(blob => {
|
||
|
if (blob instanceof _stream().Readable) {
|
||
|
blob.pipe(stream);
|
||
|
} else {
|
||
|
stream.end(blob);
|
||
|
}
|
||
|
});
|
||
|
return stream;
|
||
|
}
|
||
|
|
||
|
function fallbackStream(stream, fallback) {
|
||
|
const res = new (_stream().PassThrough)();
|
||
|
stream.on('error', err => {
|
||
|
if (err.code === 'ENOENT') {
|
||
|
fallback().pipe(res);
|
||
|
} else {
|
||
|
res.emit('error', err);
|
||
|
}
|
||
|
});
|
||
|
stream.pipe(res);
|
||
|
return res;
|
||
|
}
|