UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

80 lines 2.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const make_fetch_happen_1 = __importDefault(require("make-fetch-happen")); const version_1 = __importDefault(require("../util/version")); const date_fns_1 = require("date-fns"); class VersionService { constructor({ settingStore }, { getLogger, versionCheck, enterpriseVersion, }) { this.logger = getLogger('lib/services/version-service.js'); this.settingStore = settingStore; this.current = { oss: version_1.default, enterprise: enterpriseVersion || '', }; this.enabled = versionCheck.enable; this.versionCheckUrl = versionCheck.url; this.isLatest = true; process.nextTick(() => this.setup()); } async setup() { await this.setInstanceId(); await this.checkLatestVersion(); this.timer = setInterval(async () => this.checkLatestVersion(), (0, date_fns_1.hoursToMilliseconds)(48)); this.timer.unref(); } async setInstanceId() { try { const { id } = await this.settingStore.get('instanceInfo'); this.instanceId = id; } catch (err) { this.logger.warn('Could not find instanceInfo'); } } async checkLatestVersion() { if (this.enabled) { try { const res = await (0, make_fetch_happen_1.default)(this.versionCheckUrl, { method: 'POST', body: JSON.stringify({ versions: this.current, instanceId: this.instanceId, }), headers: { 'Content-Type': 'application/json' }, }); if (res.ok) { const data = (await res.json()); this.latest = { oss: data.versions.oss, enterprise: data.versions.enterprise, }; this.isLatest = data.latest; } else { this.logger.info(`Could not check newest version. Status: ${res.status}`); } } catch (err) { this.logger.info('Could not check newest version', err); } } } getVersionInfo() { return { current: this.current, latest: this.latest || {}, isLatest: this.isLatest, instanceId: this.instanceId, }; } destroy() { clearInterval(this.timer); this.timer = null; } } exports.default = VersionService; module.exports = VersionService; //# sourceMappingURL=version-service.js.map