mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +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();
 | 
						|
                }
 | 
						|
            });
 | 
						|
        },
 | 
						|
    };
 | 
						|
};
 |