line_push/node_modules/fs-memo/dist/index.js
2022-07-21 03:28:35 +00:00

57 lines
1.3 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const fs = require('fs');
const path = require('path');
const _memo = {
_pid: process.pid
};
async function getMemo(config) {
const options = getOptions(config);
try {
const memo = JSON.parse(await fs.promises.readFile(options.file, "utf-8")) || {};
if (!memo._pid) {
throw new Error("Memo lacks _pid");
}
if (memo._pid === _memo._pid || !isAlive(memo.pid)) {
Object.assign(_memo, memo);
_memo._pid = process.pid;
}
} catch (e) {
}
return _memo;
}
async function setMemo(memo, config) {
const options = getOptions(config);
Object.assign(_memo, memo);
_memo._pid = process.pid;
try {
await fs.promises.mkdir(options.dir);
} catch (e) {
}
try {
await fs.promises.writeFile(options.file, JSON.stringify(_memo), "utf-8");
} catch (e) {
}
}
function getOptions(config) {
const options = {...config};
options.name = options.name || "default";
options.dir = options.dir || path.resolve(process.cwd(), "node_modules/.cache/fs-memo");
options.file = options.file || path.resolve(options.dir, options.name + ".json");
return options;
}
function isAlive(pid) {
try {
process.kill(pid, 0);
return true;
} catch (e) {
return e.code === "EPERM";
}
}
exports.getMemo = getMemo;
exports.setMemo = setMemo;