initial commit
This commit is contained in:
9
node_modules/fs-memo/dist/index.d.ts
generated
vendored
Normal file
9
node_modules/fs-memo/dist/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
interface MemoOptions {
|
||||
dir: string;
|
||||
name: string;
|
||||
file: string;
|
||||
}
|
||||
declare function getMemo(config: Partial<MemoOptions>): Promise<any>;
|
||||
declare function setMemo(memo: object, config: Partial<MemoOptions>): Promise<void>;
|
||||
|
||||
export { getMemo, setMemo };
|
||||
56
node_modules/fs-memo/dist/index.js
generated
vendored
Normal file
56
node_modules/fs-memo/dist/index.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
'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;
|
||||
Reference in New Issue
Block a user