togglee
TypeScript icon, indicating that this package has built-in type declarations

1.0.53 • Public • Published

LogoMakr_4ojFPZ

Build & Publish codecov npm GitHub license Maintenance Donate

Motivation

Simple library to separate deployment of features from release time. It uses network accesible files without the need of a server to provide feature toggles.

Installation

add it to your project using npm install togglee --save or yarn add togglee

Usage

const { Togglee } = require("togglee")

const url = "https://gist.githubusercontent.com/kanekotic/c469f99bef5a5c0634b4a94a4acd6546/raw/toggles"
const refreshRateSeconds = 5
const defaultValues = [
    {
      type: "release",
      name: "prop",
      value: true,
    },
    {
      type: "release",
      name: "prop2",
      value: true
    },
    {
      type: "context",
      name: "prop3",
      conditions: [
        {
          field: "username",
          value: "user1",
          operation: "eq"
        }
      ]
    }
]

const subject = new Togglee(url, refreshRateSeconds, defaultValues)


setInterval(() => {
    if (subject.isEnabled("prop"))
        console.log("do stuff")
    else
        console.log("dont do stuff")
    if (subject.isEnabled("prop3", {"username": "user1"}))
        console.log("do stuff for user 1")
    else
        console.log("dont do stuff for user 1")
    if (subject.isEnabled("prop3", {"username": "user2"}))
        console.log("do stuff for user 2")
    else
        console.log("dont do stuff for user 2")
        
    console.log("-----------")
}, 10000);

Type of toggles

Release

Simple true/false logical path definition.

{
    type: "release",
    name: "prop",
    value: true,
}

Context

Allows complex logic to decide the outcome of the logical path (example traffic, users, resources available).

{
    type: "context",
    name: "prop3",
    conditions: [
        {
            field: "username",
            value: "user1",
            operation: "eq"
        }
    ]
}

available operations are:

  • 'eq': equal (===)
  • 'ne': not equal (!==)
  • 'gt': greater than (>)
  • 'ge': greater equal (>=)
  • 'lt': lesser than (<)
  • 'le': lesser qqual (<=)

Package Sidebar

Install

npm i togglee

Weekly Downloads

2

Version

1.0.53

License

APACHE-2.0

Unpacked Size

94.2 kB

Total Files

42

Last publish

Collaborators

  • kanekotic