tiny-updater
Version:
A small update notifier for NPM packages, useful for CLI apps.
27 lines (26 loc) • 840 B
JavaScript
/* IMPORT */
import Store from './store.js';
import Utils from './utils.js';
/* MAIN */
//TODO: Account for non-latest releases
const updater = async ({ name, version, ttl = 0 }) => {
const record = Store.get(name);
const timestamp = Date.now();
const isFresh = !record || (timestamp - record.timestampFetch) >= ttl;
const latest = isFresh ? await Utils.getLatestVersion(name).catch(Utils.noop) : record?.version;
if (!latest)
return false;
if (isFresh) {
const record = { timestampFetch: timestamp, timestampNotification: timestamp, version: latest };
Store.set(name, record);
}
if (!Utils.isUpdateAvailable(version, latest)) {
return false;
}
if (isFresh) {
Utils.notify(name, version, latest);
}
return true;
};
/* EXPORT */
export default updater;