Skip to content

mdaemon-technologies/observable

Repository files navigation

Dynamic JSON Badge Static Badge install size Dynamic JSON Badge Node.js CI

@mdaemon/observable, A function for observing values

The observable function provides methods for setting, getting, observing, and stopping observation of any of the following value types: object, array, boolean, string, and number.

Install

$ npm install @mdaemon/observable --save

Node CommonJS

    const observe = require("@mdaemon/observable/dist/observable.cjs");

Node Modules

    import observe from "@mdaemon/observable/dist/observable.mjs";

Web

    <script type="text/javascript" src="/path_to_modules/dist/observable.umd.js">

observe

You can use observe to keep track of a value from multiple contexts

Export observables

    import observe from "@mdaemon/observable/dist/observable.mjs";

    // observeTheseValues.js
    const observedNumber = observe("numberName", 20);
    export observedNumber;

    // note that objects are clones, so this object will not be changed by changes to the observedObject
    const obj = {};
    const observedObject = observe("objectName", obj);
    export observedObject;

    const observedArray = observe("arrayName", []);
    export observedArray;

    const observedBoolean = observe("boolName", true);
    export observedBoolean;

    const observedString = observe("stringName","test");
    export observedString;

Import observables

    // index.js
    import { 
        observedNumber, observedObject, 
        observedArray, observedBoolean, 
        observedString 
    } from "observeTheseValues.js";

    // change the value and return changed true/false
    let changed = observedNumber(30);
    console.log(changed); // true

    console.log(observedNumber(30)); // false
    
    // get the value
    console.log(observedNumber() === 30); // true

    // watch for value changes
    const stopObservingValue = observedNumber((newValue, oldValue) => {
      console.log("new", newValue);
      console.log("old", oldValue);
      console.log(newValue === oldValue);
    });

    // change the value for observation
    observedNumber(3);
    // new 3
    // old 30
    // false

    // stop observing changes
    stopObservingValue();

    // change the value again
    observedNumber(60); // nothing logged

    // observe also finds changes that are part of objects
    const stopObservingObject = observedObject((newValue, oldValue) => {
      console.log("new", newValue);
    });

    console.log(observedObject({ test: 10 })); // true
    // { test: 10 }

    // to remove a property from an object, set it to undefined
    observedObject({ test: undefined });
    // { }

    // from 2.0 you can also get an already observed value using the name of the value passed to the original

    const str = observe("stringName");

    console.log(str()); // "test"
    

License

Published under the LGPL-2.1 license.

Published by
MDaemon Technologies, Ltd.
Simple Secure Email

https://www.mdaemon.com

About

A function for observing variables

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published