mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
// Adater module exposing all `fs` methods with promises instead of callbacks.
|
|
|
|
"use strict";
|
|
|
|
const fs = require("fs");
|
|
const promisify = require("./promisify");
|
|
|
|
const isCallbackMethod = key => {
|
|
return [
|
|
typeof fs[key] === "function",
|
|
!key.match(/Sync$/),
|
|
!key.match(/^[A-Z]/),
|
|
!key.match(/^create/),
|
|
!key.match(/^(un)?watch/)
|
|
].every(Boolean);
|
|
};
|
|
|
|
const adaptMethod = name => {
|
|
const original = fs[name];
|
|
return promisify(original);
|
|
};
|
|
|
|
const adaptAllMethods = () => {
|
|
const adapted = {};
|
|
|
|
Object.keys(fs).forEach(key => {
|
|
if (isCallbackMethod(key)) {
|
|
if (key === "exists") {
|
|
// fs.exists() does not follow standard
|
|
// Node callback conventions, and has
|
|
// no error object in the callback
|
|
adapted.exists = () => {
|
|
throw new Error("fs.exists() is deprecated");
|
|
};
|
|
} else {
|
|
adapted[key] = adaptMethod(key);
|
|
}
|
|
} else {
|
|
adapted[key] = fs[key];
|
|
}
|
|
});
|
|
|
|
return adapted;
|
|
};
|
|
|
|
module.exports = adaptAllMethods();
|