UNPKG

unleash-server

Version:

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

63 lines 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Repository { constructor({ appName, bootstrapProvider, storageProvider, }) { this.data = {}; this.appName = appName; this.bootstrapProvider = bootstrapProvider; this.storageProvider = storageProvider; this.segments = new Map(); } start() { return this.loadBootstrap(); } createSegmentLookup(segments) { if (!segments) { return new Map(); } return new Map(segments.map((segment) => [segment.id, segment])); } async save(response) { this.data = this.convertToMap(response.features); this.segments = this.createSegmentLookup(response.segments); await this.storageProvider.set(this.appName, response); } notEmpty(content) { return content.features.length > 0; } async loadBootstrap() { try { const content = await this.bootstrapProvider.readBootstrap(); if (content && this.notEmpty(content)) { await this.save(content); } } catch (err) { // intentionally left empty } } convertToMap(features) { const obj = features.reduce((o, feature) => { const a = { ...o }; a[feature.name] = feature; return a; }, {}); return obj; } stop() { if (this.timer) { clearTimeout(this.timer); } } getSegment(segmentId) { return this.segments.get(segmentId); } getToggle(name) { return this.data[name]; } getToggles() { return Object.keys(this.data).map((key) => this.data[key]); } } exports.default = Repository; //# sourceMappingURL=index.js.map