0.2.10 • Published 3 years ago

slim-feature-toggle v0.2.10

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

Slim Feature Toggle

slim-feature-toggle is a JavaScript library for toggling content based on features and version management.

slim-feature-toggle fits for both client and server applications and is agnostic to frameworks

The following example will guide you through it

// Welcome to CuteCorp. 
// These are the cute Features and Sub-Features we develop in our app
// We use the 'enabled' property to set each feature's availability
const appFeatures = {
  PUPPIES: {
    enabled: true,
    POODLES: {
      enabled: true
    },
    LABRADORS: {
      enabled: false
    }
  },
  KITTEN: { enabled: true },
  BABIES: { enabled: true }
};

To set up the configuration needed,

import the featureToggle module at Application Start and set the app's features:

// inside App.js / index.js / server.js / main.js:
const { featureToggle } = require('slim-feature-toggle');
featureToggle.setAppFeatures(appFeatures); 

After setting the configuration we are good to go.

Simply import the featureToggle module into your code and control the application flow using one of the following methods:

// =========================================
// isFeatureEnabled - a Simple Control Flow:
// =========================================
const { featureToggle } = require('slim-feature-toggle');
const { isFeatureEnabled } = featureToggle;

if (isFeatureEnabled('PUPPIES')) {
  console.log(`TODO - Render the PuppyList component here ... `)
} else {
  console.log(`TODO - Engage a free monthly puppy subscription offer here ...`);
}

// feature set arrays are also supported:
if (isFeatureEnabled(['KITTEN', 'BABIES'])) {
  console.log(`Do stuff if both KITTEN and BABIES are enabled`);
}

// nested features traversal are also supported using . notation:
if (isFeatureEnabled('PUPPIES.POODLES')) {
  console.log(`Run if both PUPPIES feature and POODLES sub-feature are enabled`);
}



// =============================================================================
// featureToggleRunCallback - Execute a callback only if the feature is enabled
// =============================================================================
const { featureToggle } = require('slim-feature-toggle');
const { featureToggleRunCallback } = featureToggle;

featureToggleRunCallback('KITTEN', () => {
  // Execute some super cute kitty logic here ....

  // NOTE - this callback will execute only if the KITTEN feature is enabled,
  //        otherwise it will be skipped.

});



// ======================================================================
// featureToggleRunPromise - Resolve a promise if the feature is enabled, 
//                           Otherwise reject
// ======================================================================
const { featureToggle } = require('slim-feature-toggle');
const { featureToggleRunPromise } = featureToggle;

featureToggleRunPromise('BABIES')
  .then(() => console.log('resolves only if BABIES feature is enabled'))
  .catch(() => console.log('rejects if BABIES feature is disabled'));
0.2.10

3 years ago

0.2.9

3 years ago

0.2.8

3 years ago

0.2.7

3 years ago

0.2.6

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.0

3 years ago

0.0.1-a.2

3 years ago

0.0.1-a.1

3 years ago

0.0.1-a.0

3 years ago