rip-hunter
Version:
JS utilities for AJAX and GraphQL
185 lines (145 loc) • 7.36 kB
Markdown

#### JS utilities for GraphQL
RipHunter is a small utility to parse objects formatted for GraphQL requests as well as use fetch to send query and
mutation requests, returning a promise. Some helpers include sending an authorization token as well as custom headers.
[](https://www.npmjs.com/package/rip-hunter)
[](https://travis-ci.org/nitrogenlabs/rip-hunter)
[](https://www.npmjs.com/package/rip-hunter)
[](https://github.com/nitrogenlabs/rip-hunter/issues)
[](http://opensource.org/licenses/MIT)
### Installation
Using [npm](https://www.npmjs.com/):
$ npm install rip-hunter
###App Usage
Then with a module bundler like [webpack](https://webpack.github.io/) that supports either CommonJS or ES2015 modules, use as you would anything else:
```js
import {Hunter} from 'rip-hunter';
```
### How to use
**Example:**
```js
import {Hunter} from 'rip-hunter';
const AppActions = {
getData: () => {
// Variables
const url = 'http://www.example.com/graphql';
const gql = '{ app { ping } }';
// Query data
return Hunter.query(url, gql)
.then(results => {
console.log(results);
// Assuming the results will return the JSON object, {status: 'ok'}
// Output: {status: 'ok'}
})
.catch(error => {
// ApiError will be returned if any problems occur.
});
},
updateData: () => {
// Variables
const url = 'http://www.example.com/graphql';
const data = {hello: 'world'};
const gql = `{ user { update(data: ${Hunter.toGQL(data)}) } }`;
// Mutate data
return Hunter.mutation(url, gql)
.then(results => {
console.log(results);
// Assuming the results will return the JSON object, {id: 'test', hello: 'world'}
// Output: {id: 'test', hello: 'world'}
})
.catch(error => {
// ApiError will be returned if any problems occur.
});
}
}
```
## API
### Formatting
#### `toGQL(data)`
Parses an immutable object, JSON object, string, or number into a GraphQL formatted string. This string is used when
sending variables in a request.
* [`data`] \(* Any *): An immutable object, JSON object, string or number to format for use with a GQL request.
##### Returns
A string formatted for use with GQL.
### Events
#### `on(eventType, data)`
Adds an event listener. The only event emitted is when an error occurs. The error event is _rip_hunter_error_.
* [`eventType`] \(*String*): Event to subscribe for store updates.
* [`listener`] \(*Function*): The callback to be invoked any time an action has been dispatched.
#### `off(eventType, data)`
Removes an event listener.
* [`eventType`] \(*String*): Event to unsubscribe.
* [`listener`] \(*Function*): The callback associated with the subscribed event.
### AJAX
#### `ajax(url, method, params, options)`
AJAX request.
* [`url`] \(*String*): URL to send the request. Must be an absolute url.
* [`method`] \(*String*): The HTTP method for the request.
* [`params`] \(*Object*): Data to be sent with the request. Params will be converted to a query string for GET methods.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
#### `get(url, params, options)`
Server request using HTTP GET.
* [`url`] \(*String*): URL to send the request. Must be an absolute url.
* [`params`] \(*Object*): Data to be sent with the request.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
#### `post(url, params, options)`
Server request using HTTP POST.
* [`url`] \(*String*): URL to send the request. Must be an absolute url.
* [`params`] \(*Object*): Data to be sent with the request.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
#### `put(url, params, options)`
Server request using HTTP PUT.
* [`url`] \(*String*): URL to send the request. Must be an absolute url.
* [`params`] \(*Object*): Data to be sent with the request.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
#### `del(url, params, options)`
Server request using HTTP DEL.
* [`url`] \(*String*): GraphQL server endpoint. Must be an absolute url.
* [`params`] \(*Object*): Data to be sent with the request.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
### GraphQL
#### `query(url, body, options)`
Queries a GraphQL server.
* [`url`] \(*String*): GraphQL server endpoint. Must be an absolute url.
* [`body`] \(*String*): GraphQL query.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.
#### `mutation(url, body, token, headers)`
Modifies data on a GraphQL server.
* [`url`] \(*String*): GraphQL server endpoint. Must be an absolute url.
* [`body`] \(*String*): GraphQL query.
* [`options`] \(*Object*): Rip Hunter options.
* [`headers`] \(*Object*): Overwrite the default headers.
* [`immutable`] \(*Boolean*): Converts result to an Immutable object if set to true. Default: false.
* [`token`] \(*String*): Add an _Authorization_ header with the value _Bearer [token]_.
##### Returns
A promise with either the response data or ApiError.