1.0.0 • Published 12 months ago

feature-flags-kay v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

feature-flag Package

The feature-flag package provides a function to determine if a feature is enabled based on either environment variables or feature flag objects. It is framework-agnostic and can be used in any JavaScript environment.

Installation

To use this package, install it via npm or Yarn:

npm install feature-flag

or

yarn add feature-flag

Function Signature

const isFeatureEnabled = (flag, user = {});

Parameters

  • flag: Can be either a string or an object.
    • String: If the string matches an environment variable key prefixed with REACT_APP_ (or no prefix for other environments), it checks if the environment variable is set to 'true'.
    • Object: If an object is provided, it is treated as a feature flag configuration with target and enabled properties.
  • user: (Optional) An object representing the user. Used to check if the user’s role matches the target roles of the feature flag.
    • Type: { role: string | string[] }
    • Default: {}

Returns

  • boolean: Returns true if the feature is enabled based on either the environment variable or feature flag object; otherwise, returns false.

Usage Examples

Example 1: Using Environment Variables

Set up environment variables in your environment. For example, in a .env file or environment configuration:

REACT_APP_FEATURE1=true

In your code:

import isFeatureEnabled from 'feature-flag';

// Check if the feature is enabled based on environment variables
const isFeature1Enabled = isFeatureEnabled('FEATURE1');
console.log(isFeature1Enabled); // true (if REACT_APP_FEATURE1 is 'true')

Example 2: Using Feature Flags Object

import isFeatureEnabled from 'feature-flag';

const featureFlags = {
  feature1: { target: ['admin', 'developer'], enabled: false },
  feature2: { target: ['qa', 'support'], enabled: true },
};

const user = { role: ['admin'] };

const isFeature1Enabled = isFeatureEnabled(featureFlags.feature1, user);
console.log(isFeature1Enabled); // true (because the user role matches the target)

const isFeature2Enabled = isFeatureEnabled(featureFlags.feature2, user);
console.log(isFeature2Enabled); // true (because the feature is  enabled)

Example 3: Handling User Roles

import isFeatureEnabled from 'feature-flag';

const featureFlags = {
  feature3: { target: ['admin'], enabled: true },
};

const user = { role: ['admin'] };

const isFeature3Enabled = isFeatureEnabled(featureFlags.feature3, user);
console.log(isFeature3Enabled); // true (because the user role matches the target)

Error Handling

  • Throws an error if flag is neither a string nor an object.

Dependencies

  • dotenv: If you need to load environment variables from a .env file during development, you can use dotenv. It should be listed as a devDependency.

Installing dotenv

To use dotenv for development, install it as a devDependency:

npm install dotenv --save-dev

or

yarn add dotenv --dev

Using dotenv

Create a .env file in your project root:

REACT_APP_FEATURE1=true

Load environment variables at the beginning of your application:

require('dotenv').config();

License

This package is licensed under the MIT License. See the LICENSE file for more details.

1.0.0

12 months ago