novel-opds-now
Version:
按需生成 epub,此模組不使用排程任務來生成 epub
50 lines • 2.21 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports._addMutableFileSystem = exports.waitingCache = void 0;
const tslib_1 = require("tslib");
const bluebird_1 = (0, tslib_1.__importDefault)(require("bluebird"));
const use_1 = require("../use");
const to_cid_1 = require("@lazy-ipfs/to-cid");
const is_same_cid_1 = require("@lazy-ipfs/is-same-cid");
const _ipfsFilesCopy_1 = require("./_ipfsFilesCopy");
const deepEntryListMap_1 = require("./deepEntryListMap");
exports.waitingCache = new Set();
function _addMutableFileSystem(dir_path, data, options, ignoreWaitingCheck) {
return bluebird_1.default.resolve()
.then(() => {
var _a;
const file_path = `${dir_path}/${data.path}`;
if (!ignoreWaitingCheck && exports.waitingCache.has(file_path)) {
return;
}
return bluebird_1.default.resolve((_a = options === null || options === void 0 ? void 0 : options.ipfs) !== null && _a !== void 0 ? _a : (0, use_1.getIPFS)()).then(async (ipfs) => {
let file_cid = (0, to_cid_1.toCID)(data.cid);
let file_stat = await ipfs.files.stat(file_path, {
hash: true,
}).catch(e => null);
if (!file_stat || !(0, is_same_cid_1.isSameCID)(file_stat.cid, file_cid)) {
file_stat = await (0, _ipfsFilesCopy_1._ipfsFilesCopyCID)(ipfs, file_cid, file_path, {
parents: true,
extraOptions: {
overwrite: true,
returnStat: true,
},
});
}
if (file_stat) {
(0, deepEntryListMap_1.appendDeepEntryListMapByStatResult)(file_path, file_stat);
}
return {
dir_path,
file_path,
file_cid,
};
})
.finally(() => {
var _a;
return (_a = options === null || options === void 0 ? void 0 : options.done) === null || _a === void 0 ? void 0 : _a.call(options, file_path);
});
});
}
exports._addMutableFileSystem = _addMutableFileSystem;
//# sourceMappingURL=_addMutableFileSystem.js.map
;