calculation-engine

2.0.1 • Public • Published

Calculation Engine

Recursively perform calcuatations from a predefined list in order to fill in missing attribute values of an object.

Calculation definitions are selected and executed only if all of their input values are defined, and if all of their outputs are null.

The order in which the calculations are defined determines the precedence of execution.

Usage

const calcEngine = require('calculation-engine');

let ce = new calcEngine([
    {
        inupts: ['var_1'],
        outputs: ['var_2'],
        fn: function (v) {
            return { var_2: v.var_1 * 2 };
        },
    },
    {
        inputs: ['var_2'],
        outputs: ['var_3'],
        excludes: ['var_4'],
        fn: function (v) {
            return { var_3: v.var_2 - 0.2 };
        },
    },
    {
        inputs: ['var_2'],
        outputs: ['var_3'],
        fn: function (v) {
            return { var_3: v.var_2 - 0.1 };
        },
    },
]);

expect(ce.calculate({
    var_1: 2,
    var_2: null,
    var_3: null,
    var_4: null,
})).to.deep.equal({
    var_1: 2,
    var_2: 4,
    var_3: 3.9,
    var_4: null,
});

Constructor

@param {Array.<Object>} definitions
@param {Array.<String>} definitions[].inputs
@param {Array.<String>} definitions[].outputs
@param {!Array.<String>} definitions[].excludes
@param {Function}       definitions[].fn 

Provide an array of objects. Each object must contain a list of input keys and a list of output keys, as well as a function to execute when the definition is selected. Optionally, attribute names listed in 'excludes' will prevent the calculation from being used if any of those attributes exist on the incoming object. Missing or invalid attributes, duplicate input/output definitions, and circular references will throw an error.

Methods

calculate

@param {Object} values
@returns {Object}

getInputKeys

@returns {Array.<String>}

getOutputKeys

@param {!Array.<String>} inputs - optional list of input keys; outputs are filtered to only those that
                                  can be satisified with the given inputs
@returns {Array.<String>}

/calculation-engine/

    Package Sidebar

    Install

    npm i calculation-engine

    Weekly Downloads

    13

    Version

    2.0.1

    License

    ISC

    Unpacked Size

    21.6 kB

    Total Files

    6

    Last publish

    Collaborators

    • braunc1