@webex/http-core 3.0.0-bnr.5 → 3.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -0
- package/babel.config.js +3 -0
- package/dist/http-error-subtypes.js.map +1 -1
- package/dist/http-error.js +21 -22
- package/dist/http-error.js.map +1 -1
- package/dist/index.js +58 -13
- package/dist/index.js.map +1 -1
- package/dist/interceptors/http-status.js +4 -3
- package/dist/interceptors/http-status.js.map +1 -1
- package/dist/lib/detect.js.map +1 -1
- package/dist/lib/interceptor.js +6 -4
- package/dist/lib/interceptor.js.map +1 -1
- package/dist/lib/xhr.js +7 -3
- package/dist/lib/xhr.js.map +1 -1
- package/dist/progress-event.js +6 -2
- package/dist/progress-event.js.map +1 -1
- package/dist/request/index.js +3 -30
- package/dist/request/index.js.map +1 -1
- package/dist/request/request.js.map +1 -1
- package/dist/request/request.shim.js +13 -11
- package/dist/request/request.shim.js.map +1 -1
- package/dist/request/utils.js +91 -0
- package/dist/request/utils.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +31 -13
- package/process +1 -0
- package/src/index.js +55 -0
- package/src/lib/xhr.js +5 -1
- package/src/request/index.js +4 -36
- package/src/request/request.shim.js +5 -2
- package/src/request/utils.ts +78 -0
- package/test/integration/spec/request.js +2 -1
- package/test/unit/spec/index.js +58 -0
- package/test/unit/spec/request/request.shim.js +28 -0
- package/test/unit/spec/request/utils.js +77 -0
- package/dist/types/http-error-subtypes.d.ts +0 -8
- package/dist/types/http-error.d.ts +0 -41
- package/dist/types/index.d.ts +0 -7
- package/dist/types/interceptors/http-status.d.ts +0 -17
- package/dist/types/lib/detect.d.ts +0 -6
- package/dist/types/lib/interceptor.d.ts +0 -51
- package/dist/types/lib/xhr.d.ts +0 -6
- package/dist/types/progress-event.d.ts +0 -18
- package/dist/types/request/index.d.ts +0 -5
- package/dist/types/request/request.d.ts +0 -6
- package/dist/types/request/request.shim.d.ts +0 -6
package/dist/request/index.js
CHANGED
|
@@ -6,9 +6,9 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = request;
|
|
9
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
10
9
|
var _events = require("events");
|
|
11
10
|
var _request2 = _interopRequireDefault(require("./request"));
|
|
11
|
+
var _utils = require("./utils");
|
|
12
12
|
/*!
|
|
13
13
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
14
14
|
*/
|
|
@@ -25,7 +25,7 @@ function request(options) {
|
|
|
25
25
|
options.headers = options.headers || {};
|
|
26
26
|
options.download = new _events.EventEmitter();
|
|
27
27
|
options.upload = new _events.EventEmitter();
|
|
28
|
-
return intercept(options.interceptors, 'Request').then(function () {
|
|
28
|
+
return (0, _utils.intercept)(options, options.interceptors, 'Request').then(function () {
|
|
29
29
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
30
30
|
args[_key] = arguments[_key];
|
|
31
31
|
}
|
|
@@ -34,34 +34,7 @@ function request(options) {
|
|
|
34
34
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
35
35
|
args[_key2] = arguments[_key2];
|
|
36
36
|
}
|
|
37
|
-
return intercept.apply(void 0, [options.interceptors.slice().reverse(), 'Response'].concat(args));
|
|
37
|
+
return _utils.intercept.apply(void 0, [options, options.interceptors.slice().reverse(), 'Response'].concat(args));
|
|
38
38
|
});
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* @param {Array} interceptors
|
|
42
|
-
* @param {string} key
|
|
43
|
-
* @param {Object} res
|
|
44
|
-
* @private
|
|
45
|
-
* @returns {Promise}
|
|
46
|
-
*/
|
|
47
|
-
function intercept(interceptors, key, res) {
|
|
48
|
-
var successKey = "on".concat(key);
|
|
49
|
-
var errorKey = "on".concat(key, "Error");
|
|
50
|
-
return interceptors.reduce(function (promise, interceptor) {
|
|
51
|
-
return promise.then(function (result) {
|
|
52
|
-
interceptor.logOptions(options);
|
|
53
|
-
if (interceptor[successKey]) {
|
|
54
|
-
return interceptor[successKey](options, result);
|
|
55
|
-
}
|
|
56
|
-
return _promise.default.resolve(result);
|
|
57
|
-
}, function (reason) {
|
|
58
|
-
interceptor.logOptions(options);
|
|
59
|
-
if (interceptor[errorKey]) {
|
|
60
|
-
return interceptor[errorKey](options, reason);
|
|
61
|
-
}
|
|
62
|
-
return _promise.default.reject(reason);
|
|
63
|
-
});
|
|
64
|
-
}, _promise.default.resolve(res));
|
|
65
|
-
}
|
|
66
39
|
}
|
|
67
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["request","options","url","uri","headers","download","EventEmitter","upload","intercept","interceptors","then","
|
|
1
|
+
{"version":3,"names":["_events","require","_request2","_interopRequireDefault","_utils","request","options","url","uri","headers","download","EventEmitter","upload","intercept","interceptors","then","_len","arguments","length","args","Array","_key","_request","apply","concat","_len2","_key2","slice","reverse"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport _request from './request';\nimport {intercept} from './utils';\n\n/**\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function request(options) {\n if (options.url) {\n options.uri = options.url;\n options.url = null;\n }\n\n options.headers = options.headers || {};\n\n options.download = new EventEmitter();\n options.upload = new EventEmitter();\n\n return intercept(options, options.interceptors, 'Request')\n .then((...args) => _request(options, ...args))\n .then((...args) =>\n intercept(options, options.interceptors.slice().reverse(), 'Response', ...args)\n );\n}\n"],"mappings":";;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACe,SAASI,OAAOA,CAACC,OAAO,EAAE;EACvC,IAAIA,OAAO,CAACC,GAAG,EAAE;IACfD,OAAO,CAACE,GAAG,GAAGF,OAAO,CAACC,GAAG;IACzBD,OAAO,CAACC,GAAG,GAAG,IAAI;EACpB;EAEAD,OAAO,CAACG,OAAO,GAAGH,OAAO,CAACG,OAAO,IAAI,CAAC,CAAC;EAEvCH,OAAO,CAACI,QAAQ,GAAG,IAAIC,oBAAY,CAAC,CAAC;EACrCL,OAAO,CAACM,MAAM,GAAG,IAAID,oBAAY,CAAC,CAAC;EAEnC,OAAO,IAAAE,gBAAS,EAACP,OAAO,EAAEA,OAAO,CAACQ,YAAY,EAAE,SAAS,CAAC,CACvDC,IAAI,CAAC;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAA,OAAKC,iBAAQ,CAAAC,KAAA,UAACjB,OAAO,EAAAkB,MAAA,CAAKL,IAAI,EAAC;EAAA,EAAC,CAC7CJ,IAAI,CAAC;IAAA,SAAAU,KAAA,GAAAR,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAAC,KAAA,CAAAK,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJP,IAAI,CAAAO,KAAA,IAAAT,SAAA,CAAAS,KAAA;IAAA;IAAA,OACZb,gBAAS,CAAAU,KAAA,UAACjB,OAAO,EAAEA,OAAO,CAACQ,YAAY,CAACa,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAAJ,MAAA,CAAKL,IAAI,EAAC;EAAA,CACjF,CAAC;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["prepareOptions","options","responseType","encoding","withCredentials","jar","isBuffer","body","detect","then","type","headers","resolve","doRequest","logger","r","request","error","response","warn","Buffer","from","statusCode","method","url","on","total","loaded","data","length","download","emit","ProgressEvent","_request"],"sources":["request.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport request from 'request';\nimport {Buffer} from 'safe-buffer';\nimport {isBuffer} from '@webex/common';\n\nimport detect from '../lib/detect';\nimport ProgressEvent from '../progress-event';\n\n/**\n * @param {Object} options\n * @private\n * @returns {Promise}\n */\nfunction prepareOptions(options) {\n if (options.responseType === 'buffer' || options.responseType === 'blob') {\n options.encoding = null;\n }\n\n if (options.withCredentials) {\n options.jar = true;\n }\n\n if (isBuffer(options.body)) {\n return detect(options.body).then((type) => {\n options.headers['content-type'] = type;\n\n return options;\n });\n }\n\n return Promise.resolve(options);\n}\n\n/**\n * @param {Object} options\n * @private\n * @returns {Promise}\n */\nfunction doRequest(options) {\n return new Promise((resolve) => {\n const {logger} = options;\n\n const r = request(options, (error, response) => {\n if (error) {\n logger.warn(error);\n }\n\n if (response) {\n response.options = options;\n\n // I'm not sure why this line is necessary. request seems to be creating\n // buffers that aren't Buffers.\n if (\n options.responseType === 'buffer' &&\n response.body.type === 'Buffer' &&\n !isBuffer(response.body)\n ) {\n response.body = Buffer.from(response.body);\n }\n\n if (isBuffer(response.body) && !response.body.type) {\n resolve(\n detect(response.body).then((type) => {\n response.body.type = type;\n\n return response;\n })\n );\n\n return;\n }\n\n resolve(response);\n } else {\n // Make a network error behave like a browser network error.\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.url,\n body: error,\n });\n }\n });\n\n r.on('response', (response) => {\n const total = parseInt(response.headers['content-length'], 10);\n let loaded = 0;\n\n response.on('data', (data) => {\n loaded += data.length;\n options.download.emit('progress', new ProgressEvent(loaded, total));\n });\n });\n });\n}\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return prepareOptions(options).then(doRequest);\n}\n"],"mappings":";;;;;;;;;;AAIA;AACA;AACA;AAEA;AACA;AATA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"names":["_request2","_interopRequireDefault","require","_safeBuffer","_common","_detect","_progressEvent","prepareOptions","options","responseType","encoding","withCredentials","jar","isBuffer","body","detect","then","type","headers","_promise","default","resolve","doRequest","logger","r","request","error","response","warn","Buffer","from","statusCode","method","url","on","total","_parseInt2","loaded","data","length","download","emit","ProgressEvent","_request"],"sources":["request.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport request from 'request';\nimport {Buffer} from 'safe-buffer';\nimport {isBuffer} from '@webex/common';\n\nimport detect from '../lib/detect';\nimport ProgressEvent from '../progress-event';\n\n/**\n * @param {Object} options\n * @private\n * @returns {Promise}\n */\nfunction prepareOptions(options) {\n if (options.responseType === 'buffer' || options.responseType === 'blob') {\n options.encoding = null;\n }\n\n if (options.withCredentials) {\n options.jar = true;\n }\n\n if (isBuffer(options.body)) {\n return detect(options.body).then((type) => {\n options.headers['content-type'] = type;\n\n return options;\n });\n }\n\n return Promise.resolve(options);\n}\n\n/**\n * @param {Object} options\n * @private\n * @returns {Promise}\n */\nfunction doRequest(options) {\n return new Promise((resolve) => {\n const {logger} = options;\n\n const r = request(options, (error, response) => {\n if (error) {\n logger.warn(error);\n }\n\n if (response) {\n response.options = options;\n\n // I'm not sure why this line is necessary. request seems to be creating\n // buffers that aren't Buffers.\n if (\n options.responseType === 'buffer' &&\n response.body.type === 'Buffer' &&\n !isBuffer(response.body)\n ) {\n response.body = Buffer.from(response.body);\n }\n\n if (isBuffer(response.body) && !response.body.type) {\n resolve(\n detect(response.body).then((type) => {\n response.body.type = type;\n\n return response;\n })\n );\n\n return;\n }\n\n resolve(response);\n } else {\n // Make a network error behave like a browser network error.\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.url,\n body: error,\n });\n }\n });\n\n r.on('response', (response) => {\n const total = parseInt(response.headers['content-length'], 10);\n let loaded = 0;\n\n response.on('data', (data) => {\n loaded += data.length;\n options.download.emit('progress', new ProgressEvent(loaded, total));\n });\n });\n });\n}\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return prepareOptions(options).then(doRequest);\n}\n"],"mappings":"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"}
|
|
@@ -11,20 +11,22 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
11
11
|
});
|
|
12
12
|
exports.default = _request;
|
|
13
13
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
14
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
14
16
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
15
17
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
16
18
|
var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
|
|
17
|
-
var
|
|
18
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
19
|
-
var _pick2 = _interopRequireDefault(require("lodash/pick"));
|
|
20
|
-
var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
|
|
21
|
-
var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
|
|
19
|
+
var _lodash = require("lodash");
|
|
22
20
|
var _qs = _interopRequireDefault(require("qs"));
|
|
23
21
|
var _xhr = _interopRequireDefault(require("../lib/xhr"));
|
|
24
22
|
var _detect = _interopRequireDefault(require("../lib/detect"));
|
|
25
23
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
26
24
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
27
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
25
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable no-underscore-dangle */ /*!
|
|
26
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
27
|
+
*/ /* eslint-env browser */ // Note: several code paths are ignored in this file. As far as I can tell, any
|
|
28
|
+
// error conditions that would provoke those paths are otherwise prevented and
|
|
29
|
+
// reported.
|
|
28
30
|
/**
|
|
29
31
|
* @name request
|
|
30
32
|
* @param {Object} options
|
|
@@ -32,7 +34,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
32
34
|
*/
|
|
33
35
|
function _request(options) {
|
|
34
36
|
return new _promise.default(function (resolve) {
|
|
35
|
-
var params = (0,
|
|
37
|
+
var params = (0, _lodash.pick)(options, 'method', 'uri', 'withCredentials', 'headers', 'timeout', 'responseType');
|
|
36
38
|
|
|
37
39
|
// Set `response` to `true` to approximate an `HttpResponse` object
|
|
38
40
|
params.response = true;
|
|
@@ -49,7 +51,7 @@ function _request(options) {
|
|
|
49
51
|
var x = (0, _xhr.default)(params, function (error, response) {
|
|
50
52
|
/* istanbul ignore next */
|
|
51
53
|
if (error) {
|
|
52
|
-
options.logger.warn(error);
|
|
54
|
+
options.logger.warn("XHR error for ".concat(options.method || 'request', " to ").concat(options.uri, " :"), error);
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
/* istanbul ignore else */
|
|
@@ -128,7 +130,7 @@ function _request(options) {
|
|
|
128
130
|
var user = o.auth.user || o.auth.username;
|
|
129
131
|
var pass = o.auth.pass || o.auth.password;
|
|
130
132
|
var token = btoa("".concat(user, ":").concat(pass));
|
|
131
|
-
params.headers.
|
|
133
|
+
params.headers.Authorization = "Basic ".concat(token);
|
|
132
134
|
}
|
|
133
135
|
}
|
|
134
136
|
}
|
|
@@ -159,7 +161,7 @@ function _request(options) {
|
|
|
159
161
|
withCredentials: false,
|
|
160
162
|
timeout: 0
|
|
161
163
|
};
|
|
162
|
-
(0,
|
|
164
|
+
(0, _lodash.defaults)(params, (0, _lodash.pick)(o, (0, _keys.default)(defs)), defs);
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
/**
|
|
@@ -249,7 +251,7 @@ function _request(options) {
|
|
|
249
251
|
* @returns {undefined}
|
|
250
252
|
*/
|
|
251
253
|
function append(form, key, value) {
|
|
252
|
-
if ((0,
|
|
254
|
+
if ((0, _lodash.isArray)(value)) {
|
|
253
255
|
var _iterator = _createForOfIteratorHelper(value),
|
|
254
256
|
_step;
|
|
255
257
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_request","options","resolve","params","response","setXhr","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","method","uri","x","xhr","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","o","includes","toUpperCase","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","jar","withCredentials","defs","cors","timeout","responseType","Blob","ArrayBuffer","json","detect","qs","stringify","ensureBlob","file","ret","type","filename","name","append","form","key","value","v","formData","reduce","fd","FormData","JSON","parse","e"],"sources":["request.shim.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\n// Note: several code paths are ignored in this file. As far as I can tell, any\n// error conditions that would provoke those paths are otherwise prevented and\n// reported.\n\nimport {defaults, isArray, pick} from 'lodash';\nimport qs from 'qs';\n\nimport xhr from '../lib/xhr';\nimport detect from '../lib/detect';\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return new Promise((resolve) => {\n const params = pick(\n options,\n 'method',\n 'uri',\n 'withCredentials',\n 'headers',\n 'timeout',\n 'responseType'\n );\n\n // Set `response` to `true` to approximate an `HttpResponse` object\n params.response = true;\n\n setXhr(params);\n bindProgressEvents(params, options);\n setAuth(params, options);\n setCookies(params, options);\n setDefaults(params, options);\n setResponseType(params, options);\n setContentType(params, options);\n setPayload(params, options);\n setQs(params, options);\n\n options.logger.debug(\n `start http ${options.method ? options.method : 'request'} to ${options.uri}`\n );\n\n const x = xhr(params, (error, response) => {\n /* istanbul ignore next */\n if (error) {\n options.logger.warn(error);\n }\n\n /* istanbul ignore else */\n if (response) {\n if (response.statusCode >= 400) {\n options.logger.warn(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n } else {\n options.logger.debug(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n } else {\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n });\n }\n });\n\n x.onprogress = options.download.emit.bind(options.download, 'progress');\n }).catch((error) => {\n options.logger.warn(error);\n\n /* eslint arrow-body-style: [0] */\n /* istanbul ignore next */\n return {\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n };\n });\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function bindProgressEvents(params, o) {\n if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {\n if (!params.xhr) {\n params.xhr = new XMLHttpRequest();\n }\n params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setXhr(params) {\n params.xhr = new XMLHttpRequest();\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setAuth(params, o) {\n if (o.auth) {\n if (o.auth.bearer) {\n params.headers.authorization = `Bearer ${o.auth.bearer}`;\n } else {\n const user = o.auth.user || o.auth.username;\n const pass = o.auth.pass || o.auth.password;\n\n const token = btoa(`${user}:${pass}`);\n\n params.headers.authorization = `Basic ${token}`;\n }\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setCookies(params, o) {\n if (o.jar) {\n params.withCredentials = true;\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setDefaults(params, o) {\n const defs = {\n cors: true,\n // raynos/xhr defaults withCredentials to true if cors is true, so we need\n // to make it explicitly false by default\n withCredentials: false,\n timeout: 0,\n };\n\n defaults(params, pick(o, Object.keys(defs)), defs);\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setResponseType(params, o) {\n if (o.responseType === 'buffer') {\n params.responseType = 'arraybuffer';\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n async function setContentType(params, o) {\n if (o.body instanceof Blob || o.body instanceof ArrayBuffer) {\n o.json = params.json = false;\n params.headers['content-type'] = params.headers['content-type'] || (await detect(o.body));\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setQs(params, o) {\n if (o.qs) {\n params.uri += `?${qs.stringify(o.qs)}`;\n }\n }\n\n /**\n * Converts arraybuffers to blobs before uploading them\n * @param {mixed} file\n * @private\n * @returns {mixed}\n */\n function ensureBlob(file) {\n if (file instanceof ArrayBuffer) {\n const ret = file.type ? new Blob([file], {type: file.type}) : new Blob([file]);\n\n ret.filename = file.filename || file.name || 'untitled';\n\n return ret;\n }\n\n return file;\n }\n\n /**\n * Appends an item to a form\n * @param {FormData} form\n * @param {string} key\n * @param {mixed} value\n * @returns {undefined}\n */\n function append(form, key, value) {\n if (isArray(value)) {\n for (const v of value) {\n append(form, key, v);\n }\n\n return;\n }\n\n value = ensureBlob(value);\n if (value.name) {\n value.filename = value.name;\n form.append(key, value, value.name);\n } else {\n form.append(key, value);\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setPayload(params, o) {\n if ((!('json' in o) || o.json === true) && o.body) {\n params.json = o.body;\n } else if (o.form) {\n params.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n params.body = qs.stringify(o.form);\n Reflect.deleteProperty(params, 'json');\n } else if (o.formData) {\n params.body = Object.keys(o.formData).reduce((fd, key) => {\n const value = o.formData[key];\n\n append(fd, key, value);\n\n return fd;\n }, new FormData());\n } else {\n params.body = o.body;\n Reflect.deleteProperty(params, 'json');\n }\n }\n\n /**\n * @param {Object} response\n * @param {Object} params\n * @private\n * @returns {undefined}\n */\n function processResponseJson(response, params) {\n // If params.json is not defined, xhr won't deserialize the response\n // so we should give it a shot just in case.\n if (!params.json && typeof response.body !== 'object') {\n try {\n response.body = JSON.parse(response.body);\n } catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_qs","_interopRequireDefault","_xhr","_detect","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","_request","options","_promise","default","resolve","params","pick","response","setXhr","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","concat","method","uri","x","xhr","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","includes","toUpperCase","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","Authorization","jar","withCredentials","defs","cors","timeout","defaults","_keys","responseType","_x","_x2","_setContentType","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","Blob","ArrayBuffer","json","t0","detect","sent","stop","qs","stringify","ensureBlob","file","ret","type","filename","append","form","key","isArray","_iterator","_step","v","_deleteProperty","formData","reduce","fd","FormData","_typeof2","JSON","parse"],"sources":["request.shim.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\n// Note: several code paths are ignored in this file. As far as I can tell, any\n// error conditions that would provoke those paths are otherwise prevented and\n// reported.\n\nimport {defaults, isArray, pick} from 'lodash';\nimport qs from 'qs';\n\nimport xhr from '../lib/xhr';\nimport detect from '../lib/detect';\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return new Promise((resolve) => {\n const params = pick(\n options,\n 'method',\n 'uri',\n 'withCredentials',\n 'headers',\n 'timeout',\n 'responseType'\n );\n\n // Set `response` to `true` to approximate an `HttpResponse` object\n params.response = true;\n\n setXhr(params);\n bindProgressEvents(params, options);\n setAuth(params, options);\n setCookies(params, options);\n setDefaults(params, options);\n setResponseType(params, options);\n setContentType(params, options);\n setPayload(params, options);\n setQs(params, options);\n\n options.logger.debug(\n `start http ${options.method ? options.method : 'request'} to ${options.uri}`\n );\n\n const x = xhr(params, (error, response) => {\n /* istanbul ignore next */\n if (error) {\n options.logger.warn(\n `XHR error for ${options.method || 'request'} to ${options.uri} :`,\n error\n );\n }\n\n /* istanbul ignore else */\n if (response) {\n if (response.statusCode >= 400) {\n options.logger.warn(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n } else {\n options.logger.debug(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n } else {\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n });\n }\n });\n\n x.onprogress = options.download.emit.bind(options.download, 'progress');\n }).catch((error) => {\n options.logger.warn(error);\n\n /* eslint arrow-body-style: [0] */\n /* istanbul ignore next */\n return {\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n };\n });\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function bindProgressEvents(params, o) {\n if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {\n if (!params.xhr) {\n params.xhr = new XMLHttpRequest();\n }\n params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setXhr(params) {\n params.xhr = new XMLHttpRequest();\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setAuth(params, o) {\n if (o.auth) {\n if (o.auth.bearer) {\n params.headers.authorization = `Bearer ${o.auth.bearer}`;\n } else {\n const user = o.auth.user || o.auth.username;\n const pass = o.auth.pass || o.auth.password;\n\n const token = btoa(`${user}:${pass}`);\n\n params.headers.Authorization = `Basic ${token}`;\n }\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setCookies(params, o) {\n if (o.jar) {\n params.withCredentials = true;\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setDefaults(params, o) {\n const defs = {\n cors: true,\n // raynos/xhr defaults withCredentials to true if cors is true, so we need\n // to make it explicitly false by default\n withCredentials: false,\n timeout: 0,\n };\n\n defaults(params, pick(o, Object.keys(defs)), defs);\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setResponseType(params, o) {\n if (o.responseType === 'buffer') {\n params.responseType = 'arraybuffer';\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n async function setContentType(params, o) {\n if (o.body instanceof Blob || o.body instanceof ArrayBuffer) {\n o.json = params.json = false;\n params.headers['content-type'] = params.headers['content-type'] || (await detect(o.body));\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setQs(params, o) {\n if (o.qs) {\n params.uri += `?${qs.stringify(o.qs)}`;\n }\n }\n\n /**\n * Converts arraybuffers to blobs before uploading them\n * @param {mixed} file\n * @private\n * @returns {mixed}\n */\n function ensureBlob(file) {\n if (file instanceof ArrayBuffer) {\n const ret = file.type ? new Blob([file], {type: file.type}) : new Blob([file]);\n\n ret.filename = file.filename || file.name || 'untitled';\n\n return ret;\n }\n\n return file;\n }\n\n /**\n * Appends an item to a form\n * @param {FormData} form\n * @param {string} key\n * @param {mixed} value\n * @returns {undefined}\n */\n function append(form, key, value) {\n if (isArray(value)) {\n for (const v of value) {\n append(form, key, v);\n }\n\n return;\n }\n\n value = ensureBlob(value);\n if (value.name) {\n value.filename = value.name;\n form.append(key, value, value.name);\n } else {\n form.append(key, value);\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setPayload(params, o) {\n if ((!('json' in o) || o.json === true) && o.body) {\n params.json = o.body;\n } else if (o.form) {\n params.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n params.body = qs.stringify(o.form);\n Reflect.deleteProperty(params, 'json');\n } else if (o.formData) {\n params.body = Object.keys(o.formData).reduce((fd, key) => {\n const value = o.formData[key];\n\n append(fd, key, value);\n\n return fd;\n }, new FormData());\n } else {\n params.body = o.body;\n Reflect.deleteProperty(params, 'json');\n }\n }\n\n /**\n * @param {Object} response\n * @param {Object} params\n * @private\n * @returns {undefined}\n */\n function processResponseJson(response, params) {\n // If params.json is not defined, xhr won't deserialize the response\n // so we should give it a shot just in case.\n if (!params.json && typeof response.body !== 'object') {\n try {\n response.body = JSON.parse(response.body);\n } catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.intercept = intercept;
|
|
9
|
+
exports.prepareFetchOptions = prepareFetchOptions;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
12
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
13
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
14
|
+
var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
|
|
15
|
+
var _events = require("events");
|
|
16
|
+
/* eslint-disable import/prefer-default-export */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @param {Object} options
|
|
20
|
+
* @param {Array<Object>} interceptors
|
|
21
|
+
* @param {string} key
|
|
22
|
+
* @param {Object | undefined} res
|
|
23
|
+
* @private
|
|
24
|
+
* @returns {Promise}
|
|
25
|
+
*/
|
|
26
|
+
function intercept(options, interceptors, key) {
|
|
27
|
+
var res = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
|
|
28
|
+
var successKey = "on".concat(key);
|
|
29
|
+
var errorKey = "on".concat(key, "Error");
|
|
30
|
+
return interceptors.reduce(function (promise, interceptor) {
|
|
31
|
+
return promise.then(function (result) {
|
|
32
|
+
interceptor.logOptions(options);
|
|
33
|
+
if (interceptor[successKey]) {
|
|
34
|
+
return interceptor[successKey](options, result);
|
|
35
|
+
}
|
|
36
|
+
return _promise.default.resolve(result);
|
|
37
|
+
}, function (reason) {
|
|
38
|
+
interceptor.logOptions(options);
|
|
39
|
+
if (interceptor[errorKey]) {
|
|
40
|
+
return interceptor[errorKey](options, reason);
|
|
41
|
+
}
|
|
42
|
+
return _promise.default.reject(reason);
|
|
43
|
+
});
|
|
44
|
+
}, _promise.default.resolve(res));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Prepare options for a fetch.
|
|
49
|
+
* @param {object} options
|
|
50
|
+
* @returns {Promise}
|
|
51
|
+
*/
|
|
52
|
+
function prepareFetchOptions(_x) {
|
|
53
|
+
return _prepareFetchOptions.apply(this, arguments);
|
|
54
|
+
}
|
|
55
|
+
function _prepareFetchOptions() {
|
|
56
|
+
_prepareFetchOptions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
|
|
57
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
58
|
+
while (1) switch (_context.prev = _context.next) {
|
|
59
|
+
case 0:
|
|
60
|
+
if (options.url) {
|
|
61
|
+
options.uri = options.url;
|
|
62
|
+
options.url = null;
|
|
63
|
+
}
|
|
64
|
+
options.headers = options.headers || {};
|
|
65
|
+
if (options.json) {
|
|
66
|
+
// don't override existing accept header declared by user
|
|
67
|
+
options.headers.accept = options.headers.accept || options.headers.Accept || 'application/json';
|
|
68
|
+
|
|
69
|
+
// don't override existing content-type header declared by user
|
|
70
|
+
if (options.method !== 'GET' && options.method !== 'HEAD') {
|
|
71
|
+
options.headers['content-type'] = options.headers['content-type'] || options.headers['Content-Type'] || 'application/json';
|
|
72
|
+
options.body = (0, _stringify.default)(options.json === true ? options.body : options.json);
|
|
73
|
+
}
|
|
74
|
+
} else if (options.json !== undefined) {
|
|
75
|
+
(0, _deleteProperty.default)(options, 'json');
|
|
76
|
+
}
|
|
77
|
+
options.download = new _events.EventEmitter();
|
|
78
|
+
options.upload = new _events.EventEmitter();
|
|
79
|
+
options.keepalive = true;
|
|
80
|
+
return _context.abrupt("return", intercept(options, options.interceptors, 'Request').then(function () {
|
|
81
|
+
return options;
|
|
82
|
+
}));
|
|
83
|
+
case 7:
|
|
84
|
+
case "end":
|
|
85
|
+
return _context.stop();
|
|
86
|
+
}
|
|
87
|
+
}, _callee);
|
|
88
|
+
}));
|
|
89
|
+
return _prepareFetchOptions.apply(this, arguments);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_events","require","intercept","options","interceptors","key","res","arguments","length","undefined","successKey","concat","errorKey","reduce","promise","interceptor","then","result","logOptions","_promise","default","resolve","reason","reject","prepareFetchOptions","_x","_prepareFetchOptions","apply","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","url","uri","headers","json","accept","Accept","method","body","_stringify","_deleteProperty","download","EventEmitter","upload","keepalive","abrupt","stop"],"sources":["utils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {EventEmitter} from 'events';\nimport Interceptor from '../lib/interceptor';\n\n/**\n * @param {Object} options\n * @param {Array<Object>} interceptors\n * @param {string} key\n * @param {Object | undefined} res\n * @private\n * @returns {Promise}\n */\nexport function intercept(\n options: object,\n interceptors: Array<Interceptor>,\n key: string,\n res: object = undefined\n): Promise<any> {\n const successKey = `on${key}`;\n const errorKey = `on${key}Error`;\n\n return interceptors.reduce(\n (promise, interceptor) =>\n promise.then(\n (result) => {\n interceptor.logOptions(options);\n if (interceptor[successKey]) {\n return interceptor[successKey](options, result);\n }\n\n return Promise.resolve(result);\n },\n (reason) => {\n interceptor.logOptions(options);\n if (interceptor[errorKey]) {\n return interceptor[errorKey](options, reason);\n }\n\n return Promise.reject(reason);\n }\n ),\n Promise.resolve(res)\n );\n}\n\n/**\n * Prepare options for a fetch.\n * @param {object} options\n * @returns {Promise}\n */\nexport async function prepareFetchOptions(options: any): Promise<any> {\n if (options.url) {\n options.uri = options.url;\n options.url = null;\n }\n\n options.headers = options.headers || {};\n\n if (options.json) {\n // don't override existing accept header declared by user\n options.headers.accept = options.headers.accept || options.headers.Accept || 'application/json';\n\n // don't override existing content-type header declared by user\n if (options.method !== 'GET' && options.method !== 'HEAD') {\n options.headers['content-type'] =\n options.headers['content-type'] || options.headers['Content-Type'] || 'application/json';\n options.body = JSON.stringify(options.json === true ? options.body : options.json);\n }\n } else if (options.json !== undefined) {\n Reflect.deleteProperty(options, 'json');\n }\n\n options.download = new EventEmitter();\n options.upload = new EventEmitter();\n options.keepalive = true;\n\n return intercept(options, options.interceptors, 'Request').then(() => options);\n}\n"],"mappings":"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"}
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/http-core",
|
|
3
|
-
"version": "3.0.0-bnr.5",
|
|
4
3
|
"description": "Core HTTP library for the Cisco Webex",
|
|
5
4
|
"license": "MIT",
|
|
6
5
|
"main": "dist/index.js",
|
|
@@ -24,26 +23,45 @@
|
|
|
24
23
|
]
|
|
25
24
|
},
|
|
26
25
|
"devDependencies": {
|
|
27
|
-
"@
|
|
28
|
-
"@webex/
|
|
29
|
-
"@webex/
|
|
30
|
-
"@webex/
|
|
26
|
+
"@babel/core": "^7.17.10",
|
|
27
|
+
"@webex/babel-config-legacy": "0.0.0",
|
|
28
|
+
"@webex/eslint-config-legacy": "0.0.0",
|
|
29
|
+
"@webex/jest-config-legacy": "0.0.0",
|
|
30
|
+
"@webex/legacy-tools": "0.0.0",
|
|
31
|
+
"@webex/test-helper-chai": "3.0.0-next.2",
|
|
32
|
+
"@webex/test-helper-file": "3.0.0-next.2",
|
|
33
|
+
"@webex/test-helper-make-local-url": "3.0.0-next.2",
|
|
34
|
+
"@webex/test-helper-mocha": "3.0.0-next.2",
|
|
35
|
+
"@webex/test-helper-mock-webex": "3.0.0-next.2",
|
|
36
|
+
"@webex/test-helper-test-users": "3.0.0-next.2",
|
|
37
|
+
"eslint": "^8.24.0",
|
|
38
|
+
"prettier": "^2.7.1",
|
|
31
39
|
"sinon": "^9.2.4"
|
|
32
40
|
},
|
|
33
41
|
"dependencies": {
|
|
34
|
-
"@webex/common": "3.0.0-
|
|
35
|
-
"@webex/
|
|
36
|
-
"@webex/
|
|
37
|
-
"@webex/
|
|
38
|
-
"@webex/webex-core": "3.0.0-bnr.5",
|
|
42
|
+
"@webex/common": "3.0.0-next.2",
|
|
43
|
+
"@webex/internal-plugin-device": "3.0.0-next.2",
|
|
44
|
+
"@webex/test-helper-test-users": "3.0.0-next.2",
|
|
45
|
+
"@webex/webex-core": "3.0.0-next.2",
|
|
39
46
|
"file-type": "^16.0.1",
|
|
40
47
|
"global": "^4.4.0",
|
|
41
48
|
"is-function": "^1.0.1",
|
|
42
49
|
"lodash": "^4.17.21",
|
|
43
50
|
"parse-headers": "^2.0.2",
|
|
44
|
-
"qs": "^6.7.
|
|
51
|
+
"qs": "^6.7.3",
|
|
45
52
|
"request": "^2.88.0",
|
|
46
53
|
"safe-buffer": "^5.2.0",
|
|
47
54
|
"xtend": "^4.0.2"
|
|
48
|
-
}
|
|
49
|
-
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "yarn build:src",
|
|
58
|
+
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
|
|
59
|
+
"deploy:npm": "yarn npm publish",
|
|
60
|
+
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
61
|
+
"test:browser": "webex-legacy-tools test --integration --runner karma",
|
|
62
|
+
"test:integration": "webex-legacy-tools test --integration --runner mocha",
|
|
63
|
+
"test:style": "eslint ./src/**/*.*",
|
|
64
|
+
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
65
|
+
},
|
|
66
|
+
"version": "3.0.0-next.2"
|
|
67
|
+
}
|
package/process
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = {browser: true};
|
package/src/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import {assign, curry, defaults as lodashDefaults, isString} from 'lodash';
|
|
|
6
6
|
|
|
7
7
|
import HttpStatusInterceptor from './interceptors/http-status';
|
|
8
8
|
import _request from './request';
|
|
9
|
+
import {prepareFetchOptions as _prepareFetchOptions} from './request/utils';
|
|
9
10
|
|
|
10
11
|
// Curry protorequest so we generate a function with default options built in.
|
|
11
12
|
const protorequest = curry(function protorequest(defaultOptions, options) {
|
|
@@ -41,6 +42,60 @@ const protorequest = curry(function protorequest(defaultOptions, options) {
|
|
|
41
42
|
return _request(options);
|
|
42
43
|
});
|
|
43
44
|
|
|
45
|
+
export const protoprepareFetchOptions = curry(function protoprepareFetchOptions(
|
|
46
|
+
defaultOptions,
|
|
47
|
+
options
|
|
48
|
+
) {
|
|
49
|
+
// Hide useless elements from logs
|
|
50
|
+
['download', 'interceptors', 'logger', 'upload'].forEach((prop) => {
|
|
51
|
+
let descriptor = Reflect.getOwnPropertyDescriptor(options, prop);
|
|
52
|
+
|
|
53
|
+
descriptor = assign({}, descriptor, {
|
|
54
|
+
enumerable: false,
|
|
55
|
+
writable: true,
|
|
56
|
+
});
|
|
57
|
+
Reflect.defineProperty(options, prop, descriptor);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
lodashDefaults(options, defaultOptions);
|
|
61
|
+
|
|
62
|
+
options.logger = options.logger || this.logger || console;
|
|
63
|
+
|
|
64
|
+
return _prepareFetchOptions(options);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Sets the $timings value(s) before the request/fetch.
|
|
69
|
+
* This function is only useful if you are about to send a request
|
|
70
|
+
* using prepared fetch options; normally it is done in webex.request();
|
|
71
|
+
*
|
|
72
|
+
* @param {any} options
|
|
73
|
+
* @returns {any} the updated options object
|
|
74
|
+
*/
|
|
75
|
+
const setRequestTimings = (options) => {
|
|
76
|
+
const now = new Date().getTime();
|
|
77
|
+
options.$timings = options.$timings || {};
|
|
78
|
+
options.$timings.requestStart = now;
|
|
79
|
+
options.$timings.networkStart = now;
|
|
80
|
+
|
|
81
|
+
return options;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Submits a metric from pre-built request options via the fetch API. Updates
|
|
86
|
+
* the "$timings" values to Date.now() since the existing times were set when
|
|
87
|
+
* the options were built (not submitted).
|
|
88
|
+
*
|
|
89
|
+
* @param {any} options - the pre-built request options for submitting a metric
|
|
90
|
+
* @returns {Promise} promise that resolves to a response object
|
|
91
|
+
*/
|
|
92
|
+
export const setTimingsAndFetch = (options) => {
|
|
93
|
+
const opts = setRequestTimings(options);
|
|
94
|
+
|
|
95
|
+
// call the fetch API
|
|
96
|
+
return fetch(opts.uri, opts);
|
|
97
|
+
};
|
|
98
|
+
|
|
44
99
|
const defaultOptions = {
|
|
45
100
|
json: true,
|
|
46
101
|
interceptors: [
|
package/src/lib/xhr.js
CHANGED
|
@@ -106,7 +106,11 @@ function _createXHR(options) {
|
|
|
106
106
|
function errorFunc(evt) {
|
|
107
107
|
clearTimeout(timeoutTimer);
|
|
108
108
|
if (!(evt instanceof Error)) {
|
|
109
|
-
|
|
109
|
+
if (evt instanceof ProgressEvent) {
|
|
110
|
+
evt = new Error(`XMLHttpRequest Error: ProgressEvent: loaded=${evt.loaded}, total=${evt.total}, lengthComputable=${evt.lengthComputable}, target.readyState=${evt.target?.readyState}`)
|
|
111
|
+
} else {
|
|
112
|
+
evt = new Error('' + (evt || 'Unknown XMLHttpRequest Error'));
|
|
113
|
+
}
|
|
110
114
|
}
|
|
111
115
|
evt.statusCode = 0;
|
|
112
116
|
return callback(evt, failureResponse);
|
package/src/request/index.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import {EventEmitter} from 'events';
|
|
6
6
|
|
|
7
7
|
import _request from './request';
|
|
8
|
+
import {intercept} from './utils';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @param {Object} options
|
|
@@ -21,42 +22,9 @@ export default function request(options) {
|
|
|
21
22
|
options.download = new EventEmitter();
|
|
22
23
|
options.upload = new EventEmitter();
|
|
23
24
|
|
|
24
|
-
return intercept(options.interceptors, 'Request')
|
|
25
|
+
return intercept(options, options.interceptors, 'Request')
|
|
25
26
|
.then((...args) => _request(options, ...args))
|
|
26
|
-
.then((...args) =>
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @param {Array} interceptors
|
|
30
|
-
* @param {string} key
|
|
31
|
-
* @param {Object} res
|
|
32
|
-
* @private
|
|
33
|
-
* @returns {Promise}
|
|
34
|
-
*/
|
|
35
|
-
function intercept(interceptors, key, res) {
|
|
36
|
-
const successKey = `on${key}`;
|
|
37
|
-
const errorKey = `on${key}Error`;
|
|
38
|
-
|
|
39
|
-
return interceptors.reduce(
|
|
40
|
-
(promise, interceptor) =>
|
|
41
|
-
promise.then(
|
|
42
|
-
(result) => {
|
|
43
|
-
interceptor.logOptions(options);
|
|
44
|
-
if (interceptor[successKey]) {
|
|
45
|
-
return interceptor[successKey](options, result);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return Promise.resolve(result);
|
|
49
|
-
},
|
|
50
|
-
(reason) => {
|
|
51
|
-
interceptor.logOptions(options);
|
|
52
|
-
if (interceptor[errorKey]) {
|
|
53
|
-
return interceptor[errorKey](options, reason);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return Promise.reject(reason);
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
Promise.resolve(res)
|
|
27
|
+
.then((...args) =>
|
|
28
|
+
intercept(options, options.interceptors.slice().reverse(), 'Response', ...args)
|
|
60
29
|
);
|
|
61
|
-
}
|
|
62
30
|
}
|
|
@@ -52,7 +52,10 @@ export default function _request(options) {
|
|
|
52
52
|
const x = xhr(params, (error, response) => {
|
|
53
53
|
/* istanbul ignore next */
|
|
54
54
|
if (error) {
|
|
55
|
-
options.logger.warn(
|
|
55
|
+
options.logger.warn(
|
|
56
|
+
`XHR error for ${options.method || 'request'} to ${options.uri} :`,
|
|
57
|
+
error
|
|
58
|
+
);
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
/* istanbul ignore else */
|
|
@@ -142,7 +145,7 @@ export default function _request(options) {
|
|
|
142
145
|
|
|
143
146
|
const token = btoa(`${user}:${pass}`);
|
|
144
147
|
|
|
145
|
-
params.headers.
|
|
148
|
+
params.headers.Authorization = `Basic ${token}`;
|
|
146
149
|
}
|
|
147
150
|
}
|
|
148
151
|
}
|