Socket
Socket
Sign inDemoInstall

reqlib

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reqlib - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

history.md

200

dist/index.js
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _setImmediate2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set-immediate"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
var _events = _interopRequireDefault(require("events"));

@@ -40,2 +52,3 @@

error: 'error',
redirect: 'redirect',
request: 'request',

@@ -45,2 +58,8 @@ response: 'response',

},
HTTP_HEADERS = {
CONNECTION: 'Connection',
CONTENT_LENGTH: 'Content-Length',
CONTENT_TYPE: 'Content-Type',
LOCATION: 'Location'
},
// reference: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

@@ -59,5 +78,6 @@ HTTP_STATUS_CODES = {

RE_URL_PARAMETERS = /(\/\:([a-z0-9\_\-\~\.]*))*/gi,
SUPPORTED_REQUEST_OPTIONS = ['agent', 'auth', 'family', 'headers', 'host', 'hostname', //'keepAlive', // custom
//'keepAliveMsecs', // custom
'localAddress', 'maxRetryCount', // custom
SUPPORTED_REQUEST_OPTIONS = ['agent', 'auth', 'family', 'headers', 'host', 'hostname', // 'keepAlive', // custom
// 'keepAliveMsecs', // custom
'localAddress', 'maxRedirectCount', // custom
'maxRetryCount', // custom
'method', 'path', 'pathname', 'port', 'protocol', // use to determine HTTPS or HTTP

@@ -77,4 +97,16 @@ 'query', // custom

function ensureOptions(value) {
if (!isObject(value) && typeof value === 'string') {
return _url.default.parse(value);
}
return value;
}
function headerExists(headers, name) {
return !isEmpty(headers[name]) || !isEmpty(headers[name.toLowerCase()]);
}
function isEmpty(value) {
return value === null || [typeof value === 'undefined', typeof value === 'string' && !value.length, Array.isArray(value) && !value.length, isObject(value) && !Object.keys(value).length].some(function (result) {
return value === null || [typeof value === 'undefined', typeof value === 'string' && !value.length, (0, _isArray.default)(value) && !value.length, isObject(value) && !(0, _keys.default)(value).length].some(function (result) {
return result;

@@ -85,3 +117,3 @@ });

function isObject(value) {
return ![value === null, typeof value === 'undefined', (0, _typeof2.default)(value) !== 'object', Array.isArray(value), value && value.toString && !/^\[object\sObject\]$/.test(value.toString())].some(function (result) {
return ![value === null, typeof value === 'undefined', (0, _typeof2.default)(value) !== 'object', (0, _isArray.default)(value), value && value.toString && !/^\[object\sObject\]$/.test(value.toString())].some(function (result) {
return result;

@@ -104,4 +136,6 @@ });

}); // TODO: apply keep-alive
// apply retry
// apply redirect
result.maxRedirectCount = coalesce(result.maxRedirectCount, DEFAULTS.MAX_REDIRECT_COUNT); // apply retry
result.maxRetryCount = coalesce(result.maxRetryCount, DEFAULTS.MAX_RETRY_COUNT); // apply timeout

@@ -115,5 +149,5 @@

Object.keys(result.query).forEach(function (param) {
(0, _keys.default)(result.query).forEach(function (param) {
// ensure arrays in querystring are properly serialized...
if (Array.isArray(result.query[param]) && result.query[param].length > 1) {
if ((0, _isArray.default)(result.query[param]) && result.query[param].length > 1) {
result.query[param] = result.query[param].join(',');

@@ -140,3 +174,3 @@ return;

parts.path.match(RE_URL_PARAMETERS) //.filter((match) => RE_URL_PARAMETERS.test(match))
parts.path.match(RE_URL_PARAMETERS) // .filter((match) => RE_URL_PARAMETERS.test(match))
.forEach(function (match) {

@@ -174,3 +208,3 @@ var parameters = match.split(RE_URL_PARAMETERS);

var serializedKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return Object.keys(document).forEach(function (key) {
return (0, _keys.default)(document).forEach(function (key) {
if (isEmpty(document[key])) {

@@ -233,3 +267,3 @@ return;

if (isObject(state.data)) {
state.data = JSON.stringify(state.data);
state.data = (0, _stringify.default)(state.data);
} // ensure default values for all request options

@@ -241,14 +275,14 @@

options.headers['Content-Length'] = Buffer.byteLength(state.data); // apply application/json header as default
options.headers[HTTP_HEADERS.CONTENT_LENGTH] = options.headers[HTTP_HEADERS.CONTENT_LENGTH] || Buffer.byteLength(state.data); // apply application/json header as default
if (!options.headers['Content-Type']) {
options.headers['Content-Type'] = 'application/json';
if (!headerExists(options.headers, HTTP_HEADERS.CONTENT_TYPE)) {
options.headers[HTTP_HEADERS.CONTENT_TYPE] = 'application/json';
} // apply keep-alive header when specified
if (options.keepAlive && !options.headers['Connection']) {
options.headers['Connection'] = 'keep-alive';
if (options.keepAlive && !headerExists(options.headers, HTTP_HEADERS.CONNECTION)) {
options.headers[HTTP_HEADERS.CONNECTION] = 'keep-alive';
}
executeRequest = new Promise(function (resolve, reject) {
executeRequest = new _promise.default(function (resolve, reject) {
// emit request event

@@ -263,3 +297,3 @@ self.emit(EVENTS.request, {

var chunks = [],
contentType = response.headers['content-type'],
contentType = coalesce(response.headers[HTTP_HEADERS.CONTENT_TYPE], response.headers[HTTP_HEADERS.CONTENT_TYPE.toLowerCase()]),
json = RE_CONTENT_TYPE_JSON.test(contentType),

@@ -287,3 +321,3 @@ redirect = [HTTP_STATUS_CODES.REDIRECT_CODE_PERM, HTTP_STATUS_CODES.REDIRECT_CODE_TEMP, HTTP_STATUS_CODES.REDIRECT_NEW_CODE_PERM, HTTP_STATUS_CODES.REDIRECT_NEW_CODE_TEMP].some(function (code) {

if (redirect) {
if (isEmpty(state.headers.location)) {
if (isEmpty(state.headers[HTTP_HEADERS.LOCATION])) {
var _err = new Error('redirect requested with no location');

@@ -296,3 +330,3 @@

if (state.redirects >= DEFAULTS.MAX_REDIRECT_COUNT) {
if (state.redirects >= options.maxRedirectCount) {
var _err2 = new Error('maximum redirect limit exceeded');

@@ -306,5 +340,5 @@

var redirectUrl = _url.default.parse(state.headers.location);
var redirectUrl = _url.default.parse(state.headers[HTTP_HEADERS.LOCATION]);
Object.assign(options, redirectUrl); // increment number of redirects (to avoid endless looping)
(0, _assign.default)(options, redirectUrl); // increment number of redirects (to avoid endless looping)

@@ -318,3 +352,3 @@ state.redirects++; // emit redirect event

return setImmediate(clientRequest);
return (0, _setImmediate2.default)(clientRequest);
} // utilize content-type to understand if response should be a stream

@@ -342,3 +376,6 @@ // assume missing content-type header indicates text value

if (contentParts.length > 1) {
response.setEncoding(contentParts[contentParts.length - 1]);
try {
response.setEncoding(contentParts[contentParts.length - 1]);
} catch (ex) {// TODO: handle warning...
}
}

@@ -352,3 +389,3 @@ }

var body = chunks.join(''),
error = state.statusCode >= DEFAULTS.HTTP_ERROR_CODE_THRESHOLD,
error = state.statusCode >= DEFAULTS.HTTP_ERROR_CODE_THRESHHOLD,
retry = state.statusCode >= DEFAULTS.HTTP_ERROR_CODE_RETRY_THRESHHOLD && state.tries <= options.maxRetryCount;

@@ -398,3 +435,3 @@

state.tries += 1;
return setImmediate(clientRequest);
return (0, _setImmediate2.default)(clientRequest);
}

@@ -452,10 +489,17 @@

callback = _args.length > 1 ? _args[1] : undefined;
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'DELETE';
_context.next = 5;
_context.next = 7;
return this.call(options, callback);
case 5:
case 7:
return _context.abrupt("return", _context.sent);
case 6:
case 8:
case "end":

@@ -490,10 +534,17 @@ return _context.stop();

callback = _args2.length > 1 ? _args2[1] : undefined;
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'GET';
_context2.next = 5;
_context2.next = 7;
return this.call(options, callback);
case 5:
case 7:
return _context2.abrupt("return", _context2.sent);
case 6:
case 8:
case "end":

@@ -528,10 +579,17 @@ return _context2.stop();

callback = _args3.length > 1 ? _args3[1] : undefined;
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'HEAD';
_context3.next = 5;
_context3.next = 7;
return this.call(options, callback);
case 5:
case 7:
return _context3.abrupt("return", _context3.sent);
case 6:
case 8:
case "end":

@@ -568,10 +626,22 @@ return _context3.stop();

callback = _args4.length > 2 ? _args4[2] : undefined;
if (typeof data === 'function' && isEmpty(callback)) {
callback = data;
data = null;
}
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'PATCH';
_context4.next = 6;
_context4.next = 9;
return this.call(options, data, callback);
case 6:
case 9:
return _context4.abrupt("return", _context4.sent);
case 7:
case 10:
case "end":

@@ -608,10 +678,22 @@ return _context4.stop();

callback = _args5.length > 2 ? _args5[2] : undefined;
if (typeof data === 'function' && isEmpty(callback)) {
callback = data;
data = null;
}
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'POST';
_context5.next = 6;
_context5.next = 9;
return this.call(options, data, callback);
case 6:
case 9:
return _context5.abrupt("return", _context5.sent);
case 7:
case 10:
case "end":

@@ -648,10 +730,22 @@ return _context5.stop();

callback = _args6.length > 2 ? _args6[2] : undefined;
if (typeof data === 'function' && isEmpty(callback)) {
callback = data;
data = null;
}
if (typeof options === 'function' && isEmpty(callback)) {
callback = options;
options = {};
}
options = ensureOptions(options);
options.method = 'PUT';
_context6.next = 6;
_context6.next = 9;
return this.call(options, data, callback);
case 6:
case 9:
return _context6.abrupt("return", _context6.sent);
case 7:
case 10:
case "end":

@@ -658,0 +752,0 @@ return _context6.stop();

{
"name": "reqlib",
"version": "1.0.0",
"version": "1.0.1",
"description": "A library to simplify REST API requests and to provide utilities for handling common REST API consumer scenarios ",

@@ -9,7 +9,6 @@ "main": "dist",

"posttest": "nyc report --reporter=text-lcov | coveralls",
"prepare": "gulp build",
"prepublish": "check-node-version --npm \">=4\" || npm run prepare",
"prepublish": "gulp build",
"pretest": "gulp clean && gulp lint",
"test": "nyc mocha ./test/src",
"test-unit": "nyc mocha ./test/src"
"test": "NODE_ENV=test nyc mocha ./test/src",
"test:unit": "NODE_ENV=test nyc mocha ./test/src"
},

@@ -35,6 +34,6 @@ "repository": {

"dependencies": {
"@babel/polyfill": "^7.2.5",
"@babel/runtime": "^7.2.0"
"@babel/runtime-corejs2": "^7.3.1"
},
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",

@@ -44,4 +43,4 @@ "@babel/plugin-transform-runtime": "^7.2.0",

"@babel/register": "^7.0.0",
"babel-cli": "^6.26.0",
"babel-eslint": "^10.0.1",
"babel-plugin-istanbul": "^5.1.0",
"chai": "^4.2.0",

@@ -56,2 +55,3 @@ "coveralls": "^3.0.2",

"mocha": "^5.2.0",
"nock": "^10.0.6",
"nyc": "^13.1.0"

@@ -64,3 +64,3 @@ },

],
"instrument": true,
"instrument": false,
"report-dir": "./reports",

@@ -75,4 +75,4 @@ "reporter": [

],
"sourceMap": true
"sourceMap": false
}
}
# Simple Request Library
[![Build Status](https://travis-ci.org/brozeph/reqlib.svg?branch=master)](https://travis-ci.org/brozeph/reqlib) [![Coverage Status](https://coveralls.io/repos/github/brozeph/reqlib/badge.svg)](https://coveralls.io/github/brozeph/reqlib)
## Request
`new Request(options)`
```javascript
import { Request } from 'reqlib';
const
options = {
maxRedirectCount : 5, // # of redirects to follow
maxRetryCount : 3, // # of times to retry in the event of a 5xx
timeout : 1000 // milliseconds
},
req = new Request(options);
(async () => {
try {
let result = await req.get('https://test.api.io/v1/tests');
console.log(result);
} catch (ex) {
console.error(ex);
}
})();
```
### delete
### get
### head
### patch
### post
### put
## Resource

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc