hard-source-webpack-plugin
Version:
Hard cache the source of modules in webpack.
44 lines (39 loc) • 955 B
JavaScript
const cacache = require('cacache');
class CacacheSerializer {
constructor({ cacheDirPath }) {
this.path = cacheDirPath;
}
read() {
const cache = {};
const promises = [];
return new Promise((resolve, reject) => {
cacache.ls
.stream(this.path)
.on('data', ({ key }) => {
promises.push(
cacache.get(this.path, key).then(({ data }) => {
cache[key] = JSON.parse(data);
}),
);
})
.on('error', reject)
.on('end', () => {
resolve();
});
})
.then(() => Promise.all(promises))
.then(() => cache);
}
write(ops) {
return Promise.all(
ops.map(op => {
if (op.value) {
return cacache.put(this.path, op.key, JSON.stringify(op.value));
} else {
return cacache.rm.entry(this.path, op.key);
}
}),
);
}
}
module.exports = CacacheSerializer;