Swap-Aggregator-Subgraph/node_modules/fs-jetpack/lib/utils/fs.js
Richa-iitr d211083153 Revert "Revert "added handler""
This reverts commit c36ee8c5ca.
2022-07-03 07:30:05 +05:30

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();