novel-opds-now
Version:
按需生成 epub,此模組不使用排程任務來生成 epub
65 lines • 3.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.connectBuildInPeers = exports.connectCachePeers = exports._connectPeers = exports.getCachePeers = exports.getBuildInPeers = void 0;
const tslib_1 = require("tslib");
const bluebird_1 = (0, tslib_1.__importDefault)(require("bluebird"));
const fs_extra_1 = require("fs-extra");
const path_1 = require("path");
const const_1 = require("../../const");
const peer_1 = require("../peer");
const tmpPath_1 = require("../../util/tmpPath");
const handleCachePeersFile_1 = require("../../util/handleCachePeersFile");
const cache_1 = require("../pubsub/cache");
function getBuildInPeers() {
return bluebird_1.default.resolve((0, fs_extra_1.readFile)((0, path_1.join)(const_1.__root, 'lib/static/build-in-peers.txt'))
.then(buf => (0, handleCachePeersFile_1.handleCachePeersFile)(buf)));
}
exports.getBuildInPeers = getBuildInPeers;
function getCachePeers(force) {
return bluebird_1.default.props({
c1: (0, fs_extra_1.readFile)((0, path_1.join)((0, tmpPath_1.tmpPath)(), '.novel-opds-now.peers.txt')).catch(e => null),
c2: (0, fs_extra_1.readFile)((0, path_1.join)(const_1.__root, '.cache', '.novel-opds-now.peers.txt')).catch(e => null),
})
.then(({ c1, c2, }) => {
c1 = (c1 !== null && c1 !== void 0 ? c1 : '').toString();
c2 = (c2 !== null && c2 !== void 0 ? c2 : '').toString();
return (0, handleCachePeersFile_1.handleCachePeersFile)(c1 + '\n' + c2);
})
.tap(peers => {
if (!force && !peers.filter(peer => !cache_1.cachePubSubPeers.has(peer)).length) {
return;
}
let content = `\n${peers.join('\n')}\n`;
return Promise.all([
(0, fs_extra_1.outputFile)((0, path_1.join)((0, tmpPath_1.tmpPath)(), '.novel-opds-now.peers.txt'), content),
(0, fs_extra_1.outputFile)((0, path_1.join)(const_1.__root, '.cache', '.novel-opds-now.peers.txt'), content),
]);
});
}
exports.getCachePeers = getCachePeers;
function _connectPeers(ipfs, ls, extra) {
return bluebird_1.default.resolve(ipfs)
.then(async (ipfs) => {
const me = await ipfs.id({ timeout: 3000 }).catch(e => null);
return bluebird_1.default.resolve(ls).map(peer => {
cache_1.cachePubSubPeers.add(peer);
return (0, peer_1.connectPeers)(ipfs, peer, me, 30 * 60 * 1000, extra);
}, {
concurrency: 3,
}).tap(ls => !(ls === null || ls === void 0 ? void 0 : ls.length) && Promise.reject(new Error(`peers is empty`)));
});
}
exports._connectPeers = _connectPeers;
function connectCachePeers(ipfs) {
return _connectPeers(ipfs, getCachePeers(), {
hidden: true,
});
}
exports.connectCachePeers = connectCachePeers;
function connectBuildInPeers(ipfs) {
return _connectPeers(ipfs, getBuildInPeers(), {
hidden: true,
});
}
exports.connectBuildInPeers = connectBuildInPeers;
//# sourceMappingURL=connect-build-in-peers.js.map
;