abstrax

0.4.0 • Public • Published

Abstrax

A simple wrapper on top of jQuery.ajax to reduce redundancy

npm CodeClimate TestCoverage IssueCount BuildStatus

Installation

npm install --save abstrax

See package.json for available formats.

Abstrax requires jQuery as a peer dependency.

Abstrax also requires that Object.assign be available in the runtime environment.

Usage

Pass in a config object containing a list of requests and any defaults for jQuery.ajax. abstrax will return an object of functions matching the keys of your requests object.

Calling any of the request functions will return a jQuery promise. Data payloads for jQuery.ajax can be passed as an argument to a request function. Arguments for templated request urls can be applied by calling .for on a request function object with a keyed object argument.

Example usage:

var myModel = abstrax({
    requests: {
        getThings: {
            url: "/api/things",
            headers: {
                'Fake-Header': 'bar'
            }
        },
        getUsers: {
            url: "/api/users"
        },
        createUser: {
            url: "/api/users",
            method: "post"
        },
        getUser: {
            url: "/api/users/${userId}",
        },
        updateUser: {
            url: "/api/users/${userId}",
            method: "patch",
        }
    },
    defaults: {
        headers: {
            "Fake-Header": 'foo'
        },
    }
});

myModel.getUsers()
    .then(success, failure);

myModel.getUser.for(urlKeys)()
    .then(success, failure);

myModel.createUser(dataPayload)
    .then(success, failure);

var getCurrentUser = myModel.getUser.for(urlKeys);
getCurrentUser()
    .then(success, failure);

myModel.updateUser.for(urlKeys)(dataPayload)
    .then(success, failure);

var updateCurrentUser = myModel.updateUser.for(urlKeys);
updateCurrentUser(dataPayload)
    .then(success, failure);

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i abstrax

Weekly Downloads

5

Version

0.4.0

License

MIT

Unpacked Size

14.9 kB

Total Files

11

Last publish

Collaborators

  • farneman