Socket
Socket
Sign inDemoInstall

observable-options

Package Overview
Dependencies
0
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    observable-options

Manage options and observe changes easily.


Version published
Maintainers
1
Install size
133 kB
Created

Readme

Source

Observable Options

A simple library for defining and managing options. It lets you register options, nest options, observe changes, reset to default value and define alias names.

npm badge

Install

npm install --save-dev observable-options

API

Register options

const options = new Observable();

// registers new option in options list and sets a default value: `John`
options.register("name", "John");

// registers multiple and nested options
options.register({
    name: "John",
    familyName: "Doe",
    age: 34,
    car: {
        name: "Mini",
        color: "Red",
        wheels: 4
    }
});

Set and get values

// Change age value
options.set("age", 40);

// Change nested option value
options.set("car.color", "blue");

// get value
options.get("age");
options.get("car.color");

Observe changes

options.observe("name", (name, value) => {
    console.log(name, value);
});

options.observe("car.color", (name, value) => {
    console.log(name, value);
});

// observes any changes in options
options.observe("*", (name, value) => {
    console.log(name, value);
});

// observes any changes in car
options.observe("car", (name, value) => {
    console.log(name, value);
});

// add and remove observer
let callback = (name, value) => {
    console.log(name, value);
};

options.observe("car.name", callback);

// remove observer
options.dontObserve("car.name", callback);

// Observes multiple options
options.observe(["car.name", "name", "familyName"], callback);

// remove observer
options.dontObserve(["car.name", "name", "familyName"], callback);

Disable observers on set

// starts denying observers
options.internalChange();

options.set("name", "Johnny");
options.set("age", 54);

options.endInternalChange();

// denies observer on set
options.set("name", "bob", true);

Reset to default

// resets age to default
options.reset("age"); // 34

// resets a nested option
options.reset("car.color"); // red

// resets all options of car
options.reset("car");

// resets all options
options.reset("*");

Inject values

Sets multiple values to the options even if some of the options were not registered yet. It is useful when you need to set all options before any other action in your script.

// injects new values to the options
let values = {
    name: "Jane",
    age: 26,
    vegetarian: true,
    car: {
        name: "Fiat 500",
        color: "blue"
    }
};

options.inject(values);

// you can register "vegetarian" even later after value injection
options.register("vegetarian", false);

Alias

options.alias("color", "car.color");
options.alias("surname", "familyName");

// set and get value by alias
options.set("color", "white");
options.get("color");

options.set("surname", "Roe");

// aliases are supported for value injection too
options.register("postalCode", 0);
options.alias("zipCode", "postalCode");

let values = {
    name: "Jane",
    zipCode: 23301
};

options.inject(values);

Check for option existence

options.has("name"); // true
options.has("car.color"); // true
options.has("gender"); // false

Keywords

FAQs

Last updated on 11 Apr 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc