| Server IP : 185.208.173.17 / Your IP : 87.236.161.98 Web Server : Microsoft-IIS/10.0 System : Windows NT SRV8576125506 10.0 build 26100 (Windows Server 2016) AMD64 User : IUSR ( 0) PHP Version : 7.4.13 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/parsmega.nuxt/node_modules/hard-source-webpack-plugin/lib/ |
Upload File : |
const _level = require('level');
const promisify = require('./util/promisify');
const level = promisify(_level);
class LevelDbSerializer {
constructor({ cacheDirPath }) {
this.path = cacheDirPath;
this.leveldbLock = Promise.resolve();
}
read() {
const start = Date.now();
const moduleCache = {};
return level(this.path)
.then(
db =>
new Promise((resolve, reject) => {
const dbClose = promisify(db.close, { context: db });
db.createReadStream()
.on('data', data => {
const value = data.value;
if (!moduleCache[data.key]) {
moduleCache[data.key] = value;
}
})
.on('end', () => {
dbClose().then(resolve, reject);
});
}),
)
.then(() => moduleCache);
}
write(moduleOps) {
const ops = moduleOps;
if (ops.length === 0) {
return Promise.resolve();
}
for (let i = 0; i < ops.length; i++) {
if (ops[i].value === null) {
ops[i].type = 'delete';
} else {
if (typeof ops[i].value !== 'string') {
ops[i].value = JSON.stringify(ops[i].value);
}
ops[i].type = 'put';
}
}
const cachePath = this.path;
return (this.leveldbLock = this.leveldbLock
.then(() => level(cachePath))
.then(db => promisify(db.batch, { context: db })(ops).then(() => db))
.then(db => promisify(db.close, { context: db })()));
}
}
module.exports = LevelDbSerializer;