Comparing version 0.13.0 to 1.0.0
{ | ||
"name": "gangway", | ||
"version": "0.13.0", | ||
"version": "1.0.0", | ||
"description": "A client-side API abstraction layer", | ||
"main": "src/api.js", | ||
"scripts": { | ||
"test": "istanbul cover _mocha -- -R dot", | ||
"test:watch": "mocha -w -R dot" | ||
}, | ||
"author": "Nate Hunzaker", | ||
@@ -13,5 +17,10 @@ "license": "MIT", | ||
"dependencies": { | ||
"promise": "~7.0", | ||
"superagent": "~1.2" | ||
"promise": "~7.1", | ||
"superagent": "~1.6" | ||
}, | ||
"devDependencies": { | ||
"faux-jax": "4.2.1", | ||
"istanbul": "0.4.1", | ||
"mocha": "2.3.4" | ||
} | ||
} |
@@ -17,5 +17,5 @@ # Gangway | ||
```javascript | ||
let Gangway = require('../src') | ||
var Gangway = require('../src') | ||
let API = Gangway({ | ||
var API = Gangway({ | ||
baseURL: 'http://example.com', | ||
@@ -22,0 +22,0 @@ headers: { |
@@ -1,50 +0,30 @@ | ||
'use strict'; | ||
var Mock = require('./mock') | ||
var Promise = require('promise') | ||
var Request = require('superagent') | ||
var prepare = require('./prepare') | ||
var url = require('./url') | ||
var assign = require('./assign') | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
module.exports = function AJAX (options) { | ||
options = prepare(options) | ||
var Promise = require('promise'); | ||
var Request = require('superagent'); | ||
var url = require('./url'); | ||
var result = require('./result'); | ||
var defaults = { | ||
body: undefined, | ||
params: undefined, | ||
headers: {}, | ||
method: 'GET', | ||
path: '', | ||
type: 'application/json', | ||
beforeSend: function beforeSend(ajax) { | ||
return ajax; | ||
}, | ||
onResponse: function onResponse(response) { | ||
return response.body; | ||
}, | ||
onError: function onError(error) { | ||
return error; | ||
} | ||
}; | ||
module.exports = function (routeConfig, requestConfig) { | ||
var options = _extends({}, defaults, routeConfig, requestConfig); | ||
if ('mock' in options) { | ||
return Promise.resolve(result(options.mock, options)); | ||
return Mock(options) | ||
} | ||
var location = url(options.baseURL, options.path, options.params || options.body); | ||
var message = Request(options.method, location); | ||
var location = url(options.baseURL, options.path, assign(options.body, options.params)) | ||
var message = Request(options.method, location) | ||
message.send(options.body) // body parameters | ||
.query(options.query) // query parameters | ||
.set(options.headers) // headers | ||
.type(options.type); // content type | ||
message.type(options.type) | ||
.send(options.body) | ||
.query(options.query) | ||
.set(options.headers) | ||
options.beforeSend(message); | ||
options.beforeSend(message) | ||
return new Promise(function (resolve, reject) { | ||
message.end(function (err, response) { | ||
return err ? reject(options.onError(err)) : resolve(options.onResponse(response)); | ||
}); | ||
}); | ||
}; | ||
return new Promise(function(resolve, reject) { | ||
message.end(function(err, response) { | ||
return err ? reject(options.onError(err)) : resolve(options.onResponse(response)) | ||
}) | ||
}) | ||
} |
@@ -1,14 +0,12 @@ | ||
'use strict'; | ||
var ajax = require('./ajax') | ||
var route = require('./route') | ||
var ajax = require('./ajax'); | ||
var _route = require('./route'); | ||
module.exports = function (config, routes) { | ||
if (!config) { | ||
throw new TypeError('Please provide a configuration object as the first argument.'); | ||
throw new TypeError('Please provide a configuration object as the first argument.') | ||
} | ||
if ('baseURL' in config === false) { | ||
throw new TypeError('baseURL configuration option is required'); | ||
throw new TypeError('baseURL configuration option is required') | ||
} | ||
@@ -20,13 +18,13 @@ | ||
toString: function toString() { | ||
return config.baseURL; | ||
toString: function () { | ||
return config.baseURL | ||
}, | ||
route: function route(routes) { | ||
return _route(API, routes); | ||
route: function (routes) { | ||
return route(API, routes) | ||
} | ||
}; | ||
} | ||
return API.route(routes); | ||
}; | ||
return API.route(routes) | ||
} |
// This is taken from Call, hapi's routing logic: | ||
// https://github.com/hapijs/call/blob/master/lib/regex.js | ||
'use strict'; | ||
var pattern = new RegExp('(?:\\{(\\w+)(?:(\\*)(\\d+)?)?(\\?)?\\})', 'g') | ||
var pattern = new RegExp('(?:\\{(\\w+)(?:(\\*)(\\d+)?)?(\\?)?\\})', 'g'); | ||
module.exports = function (string, params) { | ||
params = params || {} | ||
module.exports = function (string) { | ||
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
return string.replace(pattern, function (match, key, isWildcard, _, isOptional) { | ||
if (isWildcard) { | ||
throw TypeError('Gangway does not support Hapi wildcard routes within ' + string); | ||
throw TypeError("Gangway does not support Hapi wildcard routes within " + string) | ||
} | ||
if (key in params === false && !isOptional) { | ||
throw TypeError('"' + key + '" was not provided in the given params for ' + string); | ||
throw TypeError(key + " was not provided in the given params for " + string) | ||
} | ||
return params[key] || ''; | ||
}); | ||
}; | ||
return key in params ? params[key] : '' | ||
}) | ||
} |
@@ -10,12 +10,10 @@ /** | ||
"use strict"; | ||
module.exports = function (obj, transform, map) { | ||
map = map || {} | ||
module.exports = function (obj, transform) { | ||
var map = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
for (var key in obj) { | ||
map[key] = transform(obj[key], key, obj); | ||
map[key] = transform(obj[key], key, obj) | ||
} | ||
return map; | ||
}; | ||
return map | ||
} |
@@ -1,25 +0,22 @@ | ||
'use strict'; | ||
var remap = require('./remap') | ||
var prepare = require('./prepare') | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
module.exports = function route(API, routes) { | ||
var remap = require('./remap'); | ||
return remap(routes || {}, function(resource) { | ||
module.exports = function route(API) { | ||
var routes = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
// For each endpoint (create, read, update, delete...) | ||
return remap(resource, function(options) { | ||
var config = prepare(API.config, options) | ||
return remap(routes, function (resource) { | ||
var request = function (overrides) { | ||
return API.ajax(prepare(config, overrides)) | ||
} | ||
// For each endpoint (create, read, update, delete...) | ||
return remap(resource, function (options) { | ||
var config = _extends({}, API.config, options); | ||
var request = function request(overrides) { | ||
return API.ajax(config, overrides); | ||
}; | ||
// Make the config for this route available under 'config' | ||
request.config = config; | ||
request.config = config | ||
return request; | ||
}); | ||
}, API); | ||
}; | ||
return request | ||
}) | ||
}, API) | ||
} |
@@ -1,12 +0,10 @@ | ||
'use strict'; | ||
var parameterizeRoute = require('./parameterizeRoute') | ||
var trimRight = /\/$/ | ||
var trimLeft = /^\// | ||
var parameterizeRoute = require('./parameterizeRoute'); | ||
var trimRight = /\/$/; | ||
var trimLeft = /^\//; | ||
module.exports = function (base, path, params) { | ||
base = base.replace(trimRight, ''); | ||
path = path.replace(trimLeft, ''); | ||
base = base.replace(trimRight, '') | ||
path = path.replace(trimLeft, '') | ||
return parameterizeRoute(base + '/' + path, params).replace(trimRight, ''); | ||
}; | ||
return parameterizeRoute(base + '/' + path, params).replace(trimRight, '') | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
27
502
1
27409
3
1
+ Addedcookiejar@2.0.6(transitive)
+ Addedpromise@7.1.1(transitive)
+ Addedsuperagent@1.6.1(transitive)
- Removedcookiejar@2.0.1(transitive)
- Removedpromise@7.0.4(transitive)
- Removedsuperagent@1.2.0(transitive)
Updatedpromise@~7.1
Updatedsuperagent@~1.6