mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = () => {
|
|
const _features = [];
|
|
const _archive = [];
|
|
return {
|
|
getFeature: name => {
|
|
const toggle = _features.find(f => f.name === name);
|
|
if (toggle) {
|
|
return Promise.resolve(toggle);
|
|
}
|
|
return Promise.reject(new Error('could not find toggle'));
|
|
},
|
|
hasFeature: name => {
|
|
const toggle = _features.find(f => f.name === name);
|
|
const archived = _archive.find(f => f.name === name);
|
|
if (toggle) {
|
|
return Promise.resolve({ name, archived: false });
|
|
}
|
|
if (archived) {
|
|
return Promise.resolve({ name, archived: true });
|
|
}
|
|
return Promise.reject();
|
|
},
|
|
getFeatures: () => Promise.resolve(_features),
|
|
addFeature: feature => _features.push(feature),
|
|
getArchivedFeatures: () => Promise.resolve(_archive),
|
|
addArchivedFeature: feature => _archive.push(feature),
|
|
lastSeenToggles: (names = []) => {
|
|
names.forEach(name => {
|
|
const toggle = _features.find(f => f.name === name);
|
|
if (toggle) {
|
|
toggle.lastSeenAt = new Date();
|
|
}
|
|
});
|
|
},
|
|
};
|
|
};
|