Skip to content

Latest commit

 

History

History
94 lines (74 loc) · 2.46 KB

README.md

File metadata and controls

94 lines (74 loc) · 2.46 KB

Abstrax

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

npm Code Climate Test Coverage Issue Count Build Status

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