UNPKG

cli-engine

Version:
43 lines (32 loc) 1.22 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // TODO: move to its own package exports.default = class { static async fetch(cachePath, cacheDuration, options) { let cachePresent = await _fsExtra2.default.exists(cachePath); if (cachePresent && !this._isStale(cachePath, cacheDuration)) { return _fsExtra2.default.readJSON(cachePath); } const cache = await options.cacheFn(); // TODO: move this to a fork await this._updateCache(cachePath, cache); return cache; } static async _updateCache(cachePath, cache) { await _fsExtra2.default.ensureFile(cachePath); await _fsExtra2.default.writeJSON(cachePath, cache); } static _isStale(cachePath, cacheDuration) { return this._mtime(cachePath).isBefore((0, _moment2.default)().subtract(cacheDuration, 'seconds')); } static _mtime(f) { return (0, _moment2.default)(_fsExtra2.default.statSync(f).mtime); } };