UNPKG

unleash-server

Version:

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

78 lines 2.49 kB
export default class FakeFeatureTagStore { constructor() { this.featureTags = []; } async getAllTagsForFeature(featureName) { const tags = this.featureTags .filter((f) => f.featureName === featureName) .map((f) => ({ type: f.tagType, value: f.tagValue, })); return Promise.resolve(tags); } async getAllFeaturesForTag(tagValue) { const tags = this.featureTags .filter((f) => f.tagValue === tagValue) .map((f) => f.featureName); return Promise.resolve(tags); } async delete(key) { this.featureTags.splice(this.featureTags.findIndex((t) => t === key), 1); } destroy() { } async exists(key) { return this.featureTags.some((t) => t === key); } async get(key) { return this.featureTags.find((t) => t === key); } async getAll() { return this.featureTags; } async tagFeature(featureName, tag, createdByUserId) { this.featureTags.push({ featureName, tagType: tag.type, tagValue: tag.value, createdByUserId, }); return Promise.resolve(tag); } async getAllFeatureTags() { return Promise.resolve(this.featureTags); } async deleteAll() { this.featureTags = []; return Promise.resolve(); } async tagFeatures(featureTags) { return Promise.all(featureTags.map(async (fT) => { const saved = await this.tagFeature(fT.featureName, { value: fT.tagValue, type: fT.tagType, }, fT.createdByUserId || -1337); return { featureName: fT.featureName, tag: saved, }; })); } async untagFeature(featureName, tag) { this.featureTags = this.featureTags.filter((fT) => { if (fT.featureName === featureName) { return !(fT.tagType === tag.type && fT.tagValue === tag.value); } return true; }); return Promise.resolve(); } getAllByFeatures(features) { return Promise.resolve(this.featureTags.filter((tag) => features.includes(tag.featureName))); } // eslint-disable-next-line @typescript-eslint/no-unused-vars untagFeatures(featureTags) { throw new Error('Method not implemented.'); } } //# sourceMappingURL=fake-feature-tag-store.js.map