observable-options

1.4.3 • Public • Published

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

Package Sidebar

Install

npm i observable-options

Weekly Downloads

1

Version

1.4.3

License

MIT

Unpacked Size

137 kB

Total Files

12

Last publish

Collaborators

  • averta