Skip to content
This repository was archived by the owner on Aug 4, 2021. It is now read-only.

Commit d786f8d

Browse files
committed
refactor: use Map for cache over Object
1 parent 774c954 commit d786f8d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/index.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ const DEFAULT_EXTS = [ '.mjs', '.js', '.json', '.node' ];
1212
const readFileAsync = file => new Promise((fulfil, reject) => fs.readFile(file, (err, contents) => err ? reject(err) : fulfil(contents)));
1313
const statAsync = file => new Promise((fulfil, reject) => fs.stat(file, (err, contents) => err ? reject(err) : fulfil(contents)));
1414
const cache = fn => {
15-
let cache = Object.create(null);
16-
const wrapped = (s, cb = false) => {
17-
if (s in cache === false) {
18-
cache[s] = fn(s).catch(err => {
19-
delete cache[s];
15+
const cache = new Map();
16+
const wrapped = (fileName, cb) => {
17+
if (cache.has(fileName) === false) {
18+
cache.set(fileName, fn(fileName).catch(err => {
19+
cache.delete(fileName);
2020
throw err;
21-
});
21+
}));
2222
}
23-
return cb ? cache[s].then(v => cb(null, v), cb) : cache[s];
23+
return cache.get(fileName).then(v => cb(null, v), cb);
2424
};
25-
wrapped.clear = () => { cache = {}; };
25+
wrapped.clear = () => cache.clear();
2626
return wrapped;
2727
};
2828
const ignoreENOENT = err => {

0 commit comments

Comments
 (0)