fluent-context

1.0.1 • Public • Published

fluent-context

Binds context to fluent API's so they can be used in functional programming patterns.

Usage:

Assume a fluent API that looks like this:

var createApi = (fooValue = 0) => ({
    _foo: fooValue,
    foo: function(){
        return this._foo;
    },
    bar: function(){
        return createApi(this._foo + 1);
    }
});

That you might use like this:

var api = createApi();

api.foo(); // 0;
api.bar().foo(); // 1;
api.bar().bar().foo(); // 2;

Normally you wouldn't be able to call a funciton that has been taken off of the API like this:

var api = createApi();

var bar = api.bar();

bar.foo(); // THROWS 'bar.foo is not a function'

This is because the functions on the API reference this, the value of which is not the API when you start passing the functions around.

fluent-context wraps fluent APIs in a chain of Proxy's that pass the API as context to the API's functions:

var api = createApi();
var wrappedApi = fluentContext(api);

var bar = wrappedApi.bar;

bar.foo(); // 1

Dependencies (0)

    Dev Dependencies (1)

    Package Sidebar

    Install

    npm i fluent-context

    Weekly Downloads

    1

    Version

    1.0.1

    License

    ISC

    Unpacked Size

    4.03 kB

    Total Files

    4

    Last publish

    Collaborators

    • korynunn