@webex/http-core 1.147.1 → 1.149.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.
@@ -58,6 +58,7 @@ function _request(options) {
58
58
  var params = (0, _pick2.default)(options, 'method', 'uri', 'withCredentials', 'headers', 'timeout', 'responseType'); // Set `response` to `true` to approximate an `HttpResponse` object
59
59
 
60
60
  params.response = true;
61
+ setXhr(params);
61
62
  bindProgressEvents(params, options);
62
63
  setAuth(params, options);
63
64
  setCookies(params, options);
@@ -121,7 +122,10 @@ function _request(options) {
121
122
 
122
123
  function bindProgressEvents(params, o) {
123
124
  if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {
124
- params.xhr = new XMLHttpRequest();
125
+ if (!params.xhr) {
126
+ params.xhr = new XMLHttpRequest();
127
+ }
128
+
125
129
  params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');
126
130
  }
127
131
  }
@@ -133,6 +137,17 @@ function _request(options) {
133
137
  */
134
138
 
135
139
 
140
+ function setXhr(params) {
141
+ params.xhr = new XMLHttpRequest();
142
+ }
143
+ /**
144
+ * @param {Object} params
145
+ * @param {Object} o
146
+ * @private
147
+ * @returns {undefined}
148
+ */
149
+
150
+
136
151
  function setAuth(params, o) {
137
152
  if (o.auth) {
138
153
  if (o.auth.bearer) {
@@ -1 +1 @@
1
- {"version":3,"sources":["request.shim.js"],"names":["_request","options","resolve","params","response","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","method","uri","x","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","o","includes","toUpperCase","xhr","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","jar","withCredentials","defs","cors","timeout","responseType","Blob","ArrayBuffer","json","qs","stringify","ensureBlob","file","ret","type","filename","name","append","form","key","value","v","formData","reduce","fd","FormData","JSON","parse","e"],"mappings":"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","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(options, 'method', 'uri', 'withCredentials', 'headers', 'timeout', 'responseType');\n\n // Set `response` to `true` to approximate an `HttpResponse` object\n params.response = true;\n\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(`start http ${options.method ? options.method : 'request'} to ${options.uri}`);\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(`http ${options.method ? options.method : 'request'} to ${options.uri} result: ${response.statusCode}`);\n }\n else {\n options.logger.debug(`http ${options.method ? options.method : 'request'} to ${options.uri} result: ${response.statusCode}`);\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n }\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 })\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 params.xhr = new XMLHttpRequest();\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 setAuth(params, o) {\n if (o.auth) {\n if (o.auth.bearer) {\n params.headers.authorization = `Bearer ${o.auth.bearer}`;\n }\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 }\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 }\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 }\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 }\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 }\n catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["request.shim.js"],"names":["_request","options","resolve","params","response","setXhr","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","method","uri","x","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","o","includes","toUpperCase","xhr","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","jar","withCredentials","defs","cors","timeout","responseType","Blob","ArrayBuffer","json","qs","stringify","ensureBlob","file","ret","type","filename","name","append","form","key","value","v","formData","reduce","fd","FormData","JSON","parse","e"],"mappings":"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","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(options, 'method', 'uri', 'withCredentials', 'headers', 'timeout', 'responseType');\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(`start http ${options.method ? options.method : 'request'} to ${options.uri}`);\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(`http ${options.method ? options.method : 'request'} to ${options.uri} result: ${response.statusCode}`);\n }\n else {\n options.logger.debug(`http ${options.method ? options.method : 'request'} to ${options.uri} result: ${response.statusCode}`);\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n }\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 })\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 }\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 }\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 }\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 }\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 }\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 }\n catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/http-core",
3
- "version": "1.147.1",
3
+ "version": "1.149.2",
4
4
  "description": "Core HTTP library for the Cisco Webex",
5
5
  "license": "MIT",
6
6
  "author": "Ian W. Remmel <iremmel@cisco.com>",
@@ -22,7 +22,7 @@
22
22
  "dependencies": {
23
23
  "@babel/runtime-corejs2": "^7.14.8",
24
24
  "lodash": "^4.17.21",
25
- "@webex/common": "1.147.1",
25
+ "@webex/common": "1.149.2",
26
26
  "request": "^2.88.0",
27
27
  "safe-buffer": "^5.2.0",
28
28
  "file-type": "^16.0.1",
@@ -27,6 +27,7 @@ export default function _request(options) {
27
27
  // Set `response` to `true` to approximate an `HttpResponse` object
28
28
  params.response = true;
29
29
 
30
+ setXhr(params);
30
31
  bindProgressEvents(params, options);
31
32
  setAuth(params, options);
32
33
  setCookies(params, options);
@@ -93,11 +94,23 @@ export default function _request(options) {
93
94
  */
94
95
  function bindProgressEvents(params, o) {
95
96
  if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {
96
- params.xhr = new XMLHttpRequest();
97
+ if (!params.xhr) {
98
+ params.xhr = new XMLHttpRequest();
99
+ }
97
100
  params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');
98
101
  }
99
102
  }
100
103
 
104
+ /**
105
+ * @param {Object} params
106
+ * @param {Object} o
107
+ * @private
108
+ * @returns {undefined}
109
+ */
110
+ function setXhr(params) {
111
+ params.xhr = new XMLHttpRequest();
112
+ }
113
+
101
114
  /**
102
115
  * @param {Object} params
103
116
  * @param {Object} o