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.
180 lines
4.3 KiB
180 lines
4.3 KiB
2 years ago
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.OverlayFS = void 0;
|
||
|
|
||
|
function _core() {
|
||
|
const data = require("@parcel/core");
|
||
|
|
||
|
_core = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
var _package = _interopRequireDefault(require("../package.json"));
|
||
|
|
||
|
var _find = require("./find");
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
function read(method) {
|
||
|
return async function (...args) {
|
||
|
try {
|
||
|
return await this.writable[method](...args);
|
||
|
} catch (err) {
|
||
|
return this.readable[method](...args);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function readSync(method) {
|
||
|
return function (...args) {
|
||
|
try {
|
||
|
return this.writable[method](...args);
|
||
|
} catch (err) {
|
||
|
return this.readable[method](...args);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function write(method) {
|
||
|
return function (...args) {
|
||
|
return this.writable[method](...args);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function checkExists(method) {
|
||
|
return function (filePath, ...args) {
|
||
|
if (this.writable.existsSync(filePath)) {
|
||
|
return this.writable[method](filePath, ...args);
|
||
|
}
|
||
|
|
||
|
return this.readable[method](filePath, ...args);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
class OverlayFS {
|
||
|
constructor(writable, readable) {
|
||
|
this.writable = writable;
|
||
|
this.readable = readable;
|
||
|
}
|
||
|
|
||
|
static deserialize(opts) {
|
||
|
return new OverlayFS(opts.writable, opts.readable);
|
||
|
}
|
||
|
|
||
|
serialize() {
|
||
|
return {
|
||
|
$$raw: false,
|
||
|
writable: this.writable,
|
||
|
readable: this.readable
|
||
|
};
|
||
|
}
|
||
|
|
||
|
readFile = read('readFile');
|
||
|
writeFile = write('writeFile');
|
||
|
|
||
|
async copyFile(source, destination) {
|
||
|
if (await this.writable.exists(source)) {
|
||
|
await this.writable.writeFile(destination, await this.writable.readFile(source));
|
||
|
} else {
|
||
|
await this.writable.writeFile(destination, await this.readable.readFile(source));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
stat = read('stat');
|
||
|
unlink = write('unlink');
|
||
|
mkdirp = write('mkdirp');
|
||
|
rimraf = write('rimraf');
|
||
|
ncp = write('ncp');
|
||
|
createReadStream = checkExists('createReadStream');
|
||
|
createWriteStream = write('createWriteStream');
|
||
|
cwd = readSync('cwd');
|
||
|
chdir = readSync('chdir');
|
||
|
realpath = checkExists('realpath');
|
||
|
readFileSync = readSync('readFileSync');
|
||
|
statSync = readSync('statSync');
|
||
|
existsSync = readSync('existsSync');
|
||
|
realpathSync = checkExists('realpathSync');
|
||
|
|
||
|
async exists(filePath) {
|
||
|
return (await this.writable.exists(filePath)) || this.readable.exists(filePath);
|
||
|
}
|
||
|
|
||
|
async readdir(path, opts) {
|
||
|
// Read from both filesystems and merge the results
|
||
|
let writable = [];
|
||
|
let readable = [];
|
||
|
|
||
|
try {
|
||
|
writable = await this.writable.readdir(path, opts);
|
||
|
} catch (err) {// do nothing
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
readable = await this.readable.readdir(path, opts);
|
||
|
} catch (err) {// do nothing
|
||
|
}
|
||
|
|
||
|
return Array.from(new Set([...writable, ...readable]));
|
||
|
}
|
||
|
|
||
|
readdirSync(path, opts) {
|
||
|
// Read from both filesystems and merge the results
|
||
|
let writable = [];
|
||
|
let readable = [];
|
||
|
|
||
|
try {
|
||
|
writable = this.writable.readdirSync(path, opts);
|
||
|
} catch (err) {// do nothing
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
readable = this.readable.readdirSync(path, opts);
|
||
|
} catch (err) {// do nothing
|
||
|
}
|
||
|
|
||
|
return Array.from(new Set([...writable, ...readable]));
|
||
|
}
|
||
|
|
||
|
async watch(dir, fn, opts) {
|
||
|
let writableSubscription = await this.writable.watch(dir, fn, opts);
|
||
|
let readableSubscription = await this.readable.watch(dir, fn, opts);
|
||
|
return {
|
||
|
unsubscribe: async () => {
|
||
|
await writableSubscription.unsubscribe();
|
||
|
await readableSubscription.unsubscribe();
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
async getEventsSince(dir, snapshot, opts) {
|
||
|
let writableEvents = await this.writable.getEventsSince(dir, snapshot, opts);
|
||
|
let readableEvents = await this.readable.getEventsSince(dir, snapshot, opts);
|
||
|
return [...writableEvents, ...readableEvents];
|
||
|
}
|
||
|
|
||
|
async writeSnapshot(dir, snapshot, opts) {
|
||
|
await this.writable.writeSnapshot(dir, snapshot, opts);
|
||
|
}
|
||
|
|
||
|
findAncestorFile(fileNames, fromDir, root) {
|
||
|
return (0, _find.findAncestorFile)(this, fileNames, fromDir, root);
|
||
|
}
|
||
|
|
||
|
findNodeModule(moduleName, fromDir) {
|
||
|
return (0, _find.findNodeModule)(this, moduleName, fromDir);
|
||
|
}
|
||
|
|
||
|
findFirstFile(filePaths) {
|
||
|
return (0, _find.findFirstFile)(this, filePaths);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
exports.OverlayFS = OverlayFS;
|
||
|
(0, _core().registerSerializableClass)(`${_package.default.version}:OverlayFS`, OverlayFS);
|