@coorpacademy/squirrel
Version:
Local mirror mecanism for ETCD
35 lines (23 loc) • 1.14 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _fs = require("fs");
var _fp = require("lodash/fp");
var _rxjs = require("rxjs");
var _debug = _interopRequireDefault(require("debug"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const debug = (0, _debug.default)('squirrel:fallback');
const readFile$ = _rxjs.Observable.bindNodeCallback(_fs.readFile);
const restorePreloadedStore = preloadedStore => _rxjs.Observable.fromPromise(Promise.resolve(preloadedStore)).catch(() => _rxjs.Observable.empty());
const parseToEvent = store => ({
type: 'fetch',
payload: (0, _fp.values)(store)
});
const createRestorer$ = (filePath, preloadedStore) => {
return readFile$(filePath, {
encoding: 'UTF8'
}).map(JSON.parse).filter(_fp.identity).do(() => debug(`Restore from file: ${filePath}`)).catch(() => preloadedStore ? restorePreloadedStore(preloadedStore).do(() => debug('Restore from preloadedStore')) : _rxjs.Observable.empty()).map(parseToEvent);
};
var _default = createRestorer$;
exports.default = _default;
//# sourceMappingURL=restorer.js.map