Comparing version
1329
dist/xhook.js
@@ -1,138 +0,306 @@ | ||
// XHook - v1.4.9 - https://github.com/jpillora/xhook | ||
// Jaime Pillora <dev@jpillora.com> - MIT Copyright 2018 | ||
(function(undefined) { | ||
var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FETCH, FIRE, FormData, NativeFetch, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, WINDOW, XHookFetchRequest, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, nullify, proxyEvents, slice, useragent, xhook, _base, | ||
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; | ||
/*! | ||
* XHook - v1.5.0 - https://github.com/jpillora/xhook | ||
* Jaime Pillora <dev@jpillora.com> - MIT Copyright 2022 | ||
*/ | ||
/******/ (function(modules) { // webpackBootstrap | ||
/******/ // The module cache | ||
/******/ var installedModules = {}; | ||
/******/ | ||
/******/ // The require function | ||
/******/ function __webpack_require__(moduleId) { | ||
/******/ | ||
/******/ // Check if module is in cache | ||
/******/ if(installedModules[moduleId]) { | ||
/******/ return installedModules[moduleId].exports; | ||
/******/ } | ||
/******/ // Create a new module (and put it into the cache) | ||
/******/ var module = installedModules[moduleId] = { | ||
/******/ i: moduleId, | ||
/******/ l: false, | ||
/******/ exports: {} | ||
/******/ }; | ||
/******/ | ||
/******/ // Execute the module function | ||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | ||
/******/ | ||
/******/ // Flag the module as loaded | ||
/******/ module.l = true; | ||
/******/ | ||
/******/ // Return the exports of the module | ||
/******/ return module.exports; | ||
/******/ } | ||
/******/ | ||
/******/ | ||
/******/ // expose the modules object (__webpack_modules__) | ||
/******/ __webpack_require__.m = modules; | ||
/******/ | ||
/******/ // expose the module cache | ||
/******/ __webpack_require__.c = installedModules; | ||
/******/ | ||
/******/ // define getter function for harmony exports | ||
/******/ __webpack_require__.d = function(exports, name, getter) { | ||
/******/ if(!__webpack_require__.o(exports, name)) { | ||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); | ||
/******/ } | ||
/******/ }; | ||
/******/ | ||
/******/ // define __esModule on exports | ||
/******/ __webpack_require__.r = function(exports) { | ||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | ||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | ||
/******/ } | ||
/******/ Object.defineProperty(exports, '__esModule', { value: true }); | ||
/******/ }; | ||
/******/ | ||
/******/ // create a fake namespace object | ||
/******/ // mode & 1: value is a module id, require it | ||
/******/ // mode & 2: merge all properties of value into the ns | ||
/******/ // mode & 4: return value when already ns object | ||
/******/ // mode & 8|1: behave like require | ||
/******/ __webpack_require__.t = function(value, mode) { | ||
/******/ if(mode & 1) value = __webpack_require__(value); | ||
/******/ if(mode & 8) return value; | ||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | ||
/******/ var ns = Object.create(null); | ||
/******/ __webpack_require__.r(ns); | ||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | ||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | ||
/******/ return ns; | ||
/******/ }; | ||
/******/ | ||
/******/ // getDefaultExport function for compatibility with non-harmony modules | ||
/******/ __webpack_require__.n = function(module) { | ||
/******/ var getter = module && module.__esModule ? | ||
/******/ function getDefault() { return module['default']; } : | ||
/******/ function getModuleExports() { return module; }; | ||
/******/ __webpack_require__.d(getter, 'a', getter); | ||
/******/ return getter; | ||
/******/ }; | ||
/******/ | ||
/******/ // Object.prototype.hasOwnProperty.call | ||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; | ||
/******/ | ||
/******/ // __webpack_public_path__ | ||
/******/ __webpack_require__.p = ""; | ||
/******/ | ||
/******/ | ||
/******/ // Load entry module and return exports | ||
/******/ return __webpack_require__(__webpack_require__.s = "./src/main.js"); | ||
/******/ }) | ||
/************************************************************************/ | ||
/******/ ({ | ||
WINDOW = null; | ||
/***/ "./node_modules/webpack/buildin/amd-options.js": | ||
/*!****************************************!*\ | ||
!*** (webpack)/buildin/amd-options.js ***! | ||
\****************************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { | ||
WINDOW = self; | ||
} else if (typeof global !== 'undefined') { | ||
WINDOW = global; | ||
} else { | ||
WINDOW = window; | ||
/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ | ||
module.exports = __webpack_amd_options__; | ||
/* WEBPACK VAR INJECTION */}.call(this, {})) | ||
/***/ }), | ||
/***/ "./node_modules/webpack/buildin/global.js": | ||
/*!***********************************!*\ | ||
!*** (webpack)/buildin/global.js ***! | ||
\***********************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
var g; | ||
// This works in non-strict mode | ||
g = (function() { | ||
return this; | ||
})(); | ||
try { | ||
// This works if eval is allowed (see CSP) | ||
g = g || new Function("return this")(); | ||
} catch (e) { | ||
// This works if the window reference is available | ||
if (typeof window === "object") g = window; | ||
} | ||
document = WINDOW.document; | ||
// g can still be undefined, but nothing to do about it... | ||
// We return undefined, instead of nothing here, so it's | ||
// easier to handle this case. if(!global) { ...} | ||
BEFORE = 'before'; | ||
module.exports = g; | ||
AFTER = 'after'; | ||
READY_STATE = 'readyState'; | ||
/***/ }), | ||
ON = 'addEventListener'; | ||
/***/ "./node_modules/webpack/buildin/harmony-module.js": | ||
/*!*******************************************!*\ | ||
!*** (webpack)/buildin/harmony-module.js ***! | ||
\*******************************************/ | ||
/*! no static exports found */ | ||
/***/ (function(module, exports) { | ||
OFF = 'removeEventListener'; | ||
module.exports = function(originalModule) { | ||
if (!originalModule.webpackPolyfill) { | ||
var module = Object.create(originalModule); | ||
// module.parent = undefined by default | ||
if (!module.children) module.children = []; | ||
Object.defineProperty(module, "loaded", { | ||
enumerable: true, | ||
get: function() { | ||
return module.l; | ||
} | ||
}); | ||
Object.defineProperty(module, "id", { | ||
enumerable: true, | ||
get: function() { | ||
return module.i; | ||
} | ||
}); | ||
Object.defineProperty(module, "exports", { | ||
enumerable: true | ||
}); | ||
module.webpackPolyfill = 1; | ||
} | ||
return module; | ||
}; | ||
FIRE = 'dispatchEvent'; | ||
XMLHTTP = 'XMLHttpRequest'; | ||
/***/ }), | ||
FETCH = 'fetch'; | ||
/***/ "./src/main.js": | ||
/*!*********************!*\ | ||
!*** ./src/main.js ***! | ||
\*********************/ | ||
/*! no exports provided */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
FormData = 'FormData'; | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _misc_event_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./misc/event-emitter */ "./src/misc/event-emitter.js"); | ||
/* harmony import */ var _misc_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc/window */ "./src/misc/window.js"); | ||
/* harmony import */ var _misc_headers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./misc/headers */ "./src/misc/headers.js"); | ||
/* harmony import */ var _patch_xmlhttprequest__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./patch/xmlhttprequest */ "./src/patch/xmlhttprequest.js"); | ||
/* harmony import */ var _patch_fetch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./patch/fetch */ "./src/patch/fetch.js"); | ||
/* harmony import */ var _patch_formdata__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch/formdata */ "./src/patch/formdata.js"); | ||
/* harmony import */ var _misc_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./misc/hooks */ "./src/misc/hooks.js"); | ||
UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; | ||
COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; | ||
useragent = typeof navigator !== 'undefined' && navigator['useragent'] ? navigator.userAgent : ''; | ||
msie = parseInt((/msie (\d+)/.exec(useragent.toLowerCase()) || [])[1]); | ||
//patchable types | ||
if (isNaN(msie)) { | ||
msie = parseInt((/trident\/.*; rv:(\d+)/.exec(useragent.toLowerCase()) || [])[1]); | ||
} | ||
(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { | ||
var i, x, _i, _len; | ||
for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { | ||
x = this[i]; | ||
if (x === item) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
}); | ||
slice = function(o, n) { | ||
return Array.prototype.slice.call(o, n); | ||
}; | ||
depricatedProp = function(p) { | ||
return p === "returnValue" || p === "totalSize" || p === "position"; | ||
}; | ||
//global state | ||
mergeObjects = function(src, dst) { | ||
var k, v; | ||
for (k in src) { | ||
v = src[k]; | ||
if (depricatedProp(k)) { | ||
continue; | ||
} | ||
try { | ||
dst[k] = src[k]; | ||
} catch (_error) {} | ||
//the global hooks event emitter is also the global xhook object | ||
//(not the best decision in hindsight) | ||
const xhook = _misc_hooks__WEBPACK_IMPORTED_MODULE_6__["default"]; | ||
xhook.EventEmitter = _misc_event_emitter__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"]; | ||
//modify hooks | ||
xhook.before = function(handler, i) { | ||
if (handler.length < 1 || handler.length > 2) { | ||
throw "invalid hook"; | ||
} | ||
return dst; | ||
return xhook.on("before", handler, i); | ||
}; | ||
nullify = function(res) { | ||
if (res === void 0) { | ||
return null; | ||
xhook.after = function(handler, i) { | ||
if (handler.length < 2 || handler.length > 3) { | ||
throw "invalid hook"; | ||
} | ||
return res; | ||
return xhook.on("after", handler, i); | ||
}; | ||
proxyEvents = function(events, src, dst) { | ||
var event, p, _i, _len; | ||
p = function(event) { | ||
return function(e) { | ||
var clone, k, val; | ||
clone = {}; | ||
for (k in e) { | ||
if (depricatedProp(k)) { | ||
continue; | ||
} | ||
val = e[k]; | ||
clone[k] = val === src ? dst : val; | ||
} | ||
return dst[FIRE](event, clone); | ||
}; | ||
}; | ||
for (_i = 0, _len = events.length; _i < _len; _i++) { | ||
event = events[_i]; | ||
if (dst._has(event)) { | ||
src["on" + event] = p(event); | ||
} | ||
} | ||
//globally enable/disable | ||
xhook.enable = function() { | ||
_patch_xmlhttprequest__WEBPACK_IMPORTED_MODULE_3__["default"].patch(); | ||
_patch_fetch__WEBPACK_IMPORTED_MODULE_4__["default"].patch(); | ||
_patch_formdata__WEBPACK_IMPORTED_MODULE_5__["default"].patch(); | ||
}; | ||
xhook.disable = function() { | ||
_patch_xmlhttprequest__WEBPACK_IMPORTED_MODULE_3__["default"].unpatch(); | ||
_patch_fetch__WEBPACK_IMPORTED_MODULE_4__["default"].unpatch(); | ||
_patch_formdata__WEBPACK_IMPORTED_MODULE_5__["default"].unpatch(); | ||
}; | ||
//expose native objects | ||
xhook.XMLHttpRequest = _patch_xmlhttprequest__WEBPACK_IMPORTED_MODULE_3__["default"].Native; | ||
xhook.fetch = _patch_fetch__WEBPACK_IMPORTED_MODULE_4__["default"].Native; | ||
xhook.FormData = _patch_formdata__WEBPACK_IMPORTED_MODULE_5__["default"].Native; | ||
fakeEvent = function(type) { | ||
var msieEventObject; | ||
if (document && (document.createEventObject != null)) { | ||
msieEventObject = document.createEventObject(); | ||
msieEventObject.type = type; | ||
return msieEventObject; | ||
} else { | ||
try { | ||
return new Event(type); | ||
} catch (_error) { | ||
return { | ||
type: type | ||
}; | ||
//expose helpers | ||
xhook.headers = _misc_headers__WEBPACK_IMPORTED_MODULE_2__["default"].convert; | ||
//enable by default | ||
xhook.enable(); | ||
//publicise (amd+commonjs+window) | ||
if (typeof define === "function" && __webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js")) { | ||
define("xhook", [], () => xhook); | ||
} else if (module && typeof module === "object" && module.exports) { | ||
module.exports = { xhook }; | ||
} else if (_misc_window__WEBPACK_IMPORTED_MODULE_1__["window"]) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_1__["window"].xhook = xhook; | ||
} | ||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/harmony-module.js */ "./node_modules/webpack/buildin/harmony-module.js")(module))) | ||
/***/ }), | ||
/***/ "./src/misc/array.js": | ||
/*!***************************!*\ | ||
!*** ./src/misc/array.js ***! | ||
\***************************/ | ||
/*! exports provided: slice */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return slice; }); | ||
//if required, add 'indexOf' method to Array | ||
if (!Array.prototype.indexOf) { | ||
Array.prototype.indexOf = function(item) { | ||
for (let i = 0; i < this.length; i++) { | ||
const x = this[i]; | ||
if (x === item) { | ||
return i; | ||
} | ||
} | ||
} | ||
}; | ||
return -1; | ||
}; | ||
} | ||
EventEmitter = function(nodeStyle) { | ||
var emitter, events, listeners; | ||
events = {}; | ||
listeners = function(event) { | ||
return events[event] || []; | ||
}; | ||
emitter = {}; | ||
emitter[ON] = function(event, callback, i) { | ||
const slice = (o, n) => Array.prototype.slice.call(o, n); | ||
/***/ }), | ||
/***/ "./src/misc/event-emitter.js": | ||
/*!***********************************!*\ | ||
!*** ./src/misc/event-emitter.js ***! | ||
\***********************************/ | ||
/*! exports provided: EventEmitter */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventEmitter", function() { return EventEmitter; }); | ||
/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./src/misc/array.js"); | ||
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events */ "./src/misc/events.js"); | ||
//tiny event emitter | ||
const EventEmitter = function(nodeStyle) { | ||
//private | ||
let events = {}; | ||
const listeners = event => events[event] || []; | ||
//public | ||
const emitter = {}; | ||
emitter.addEventListener = function(event, callback, i) { | ||
events[event] = listeners(event); | ||
@@ -145,4 +313,4 @@ if (events[event].indexOf(callback) >= 0) { | ||
}; | ||
emitter[OFF] = function(event, callback) { | ||
var i; | ||
emitter.removeEventListener = function(event, callback) { | ||
//remove all | ||
if (event === undefined) { | ||
@@ -152,6 +320,8 @@ events = {}; | ||
} | ||
//remove all of type event | ||
if (callback === undefined) { | ||
events[event] = []; | ||
} | ||
i = listeners(event).indexOf(callback); | ||
//remove particular handler | ||
const i = listeners(event).indexOf(callback); | ||
if (i === -1) { | ||
@@ -162,32 +332,27 @@ return; | ||
}; | ||
emitter[FIRE] = function() { | ||
var args, event, i, legacylistener, listener, _i, _len, _ref; | ||
args = slice(arguments); | ||
event = args.shift(); | ||
emitter.dispatchEvent = function() { | ||
const args = Object(_array__WEBPACK_IMPORTED_MODULE_0__["slice"])(arguments); | ||
const event = args.shift(); | ||
if (!nodeStyle) { | ||
args[0] = mergeObjects(args[0], fakeEvent(event)); | ||
args[0] = Object(_events__WEBPACK_IMPORTED_MODULE_1__["mergeObjects"])(args[0], Object(_events__WEBPACK_IMPORTED_MODULE_1__["fakeEvent"])(event)); | ||
} | ||
legacylistener = emitter["on" + event]; | ||
const legacylistener = emitter[`on${event}`]; | ||
if (legacylistener) { | ||
legacylistener.apply(emitter, args); | ||
} | ||
_ref = listeners(event).concat(listeners("*")); | ||
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { | ||
listener = _ref[i]; | ||
const iterable = listeners(event).concat(listeners("*")); | ||
for (let i = 0; i < iterable.length; i++) { | ||
const listener = iterable[i]; | ||
listener.apply(emitter, args); | ||
} | ||
}; | ||
emitter._has = function(event) { | ||
return !!(events[event] || emitter["on" + event]); | ||
}; | ||
emitter._has = event => !!(events[event] || emitter[`on${event}`]); | ||
//add extra aliases | ||
if (nodeStyle) { | ||
emitter.listeners = function(event) { | ||
return slice(listeners(event)); | ||
}; | ||
emitter.on = emitter[ON]; | ||
emitter.off = emitter[OFF]; | ||
emitter.fire = emitter[FIRE]; | ||
emitter.listeners = event => Object(_array__WEBPACK_IMPORTED_MODULE_0__["slice"])(listeners(event)); | ||
emitter.on = emitter.addEventListener; | ||
emitter.off = emitter.removeEventListener; | ||
emitter.fire = emitter.dispatchEvent; | ||
emitter.once = function(e, fn) { | ||
var fire; | ||
fire = function() { | ||
var fire = function() { | ||
emitter.off(e, fire); | ||
@@ -198,47 +363,102 @@ return fn.apply(null, arguments); | ||
}; | ||
emitter.destroy = function() { | ||
return events = {}; | ||
}; | ||
emitter.destroy = () => (events = {}); | ||
} | ||
return emitter; | ||
}; | ||
xhook = EventEmitter(true); | ||
xhook.EventEmitter = EventEmitter; | ||
/***/ }), | ||
xhook[BEFORE] = function(handler, i) { | ||
if (handler.length < 1 || handler.length > 2) { | ||
throw "invalid hook"; | ||
/***/ "./src/misc/events.js": | ||
/*!****************************!*\ | ||
!*** ./src/misc/events.js ***! | ||
\****************************/ | ||
/*! exports provided: UPLOAD_EVENTS, COMMON_EVENTS, mergeObjects, proxyEvents, fakeEvent */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UPLOAD_EVENTS", function() { return UPLOAD_EVENTS; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "COMMON_EVENTS", function() { return COMMON_EVENTS; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeObjects", function() { return mergeObjects; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "proxyEvents", function() { return proxyEvents; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fakeEvent", function() { return fakeEvent; }); | ||
/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./window */ "./src/misc/window.js"); | ||
const UPLOAD_EVENTS = ["load", "loadend", "loadstart"]; | ||
const COMMON_EVENTS = ["progress", "abort", "error", "timeout"]; | ||
const depricatedProp = p => | ||
["returnValue", "totalSize", "position"].includes(p); | ||
const mergeObjects = function(src, dst) { | ||
for (let k in src) { | ||
if (depricatedProp(k)) { | ||
continue; | ||
} | ||
const v = src[k]; | ||
try { | ||
dst[k] = v; | ||
} catch (error) {} | ||
} | ||
return xhook[ON](BEFORE, handler, i); | ||
return dst; | ||
}; | ||
xhook[AFTER] = function(handler, i) { | ||
if (handler.length < 2 || handler.length > 3) { | ||
throw "invalid hook"; | ||
//proxy events from one emitter to another | ||
const proxyEvents = function(events, src, dst) { | ||
const p = event => | ||
function(e) { | ||
const clone = {}; | ||
//copies event, with dst emitter inplace of src | ||
for (let k in e) { | ||
if (depricatedProp(k)) { | ||
continue; | ||
} | ||
const val = e[k]; | ||
clone[k] = val === src ? dst : val; | ||
} | ||
//emits out the dst | ||
return dst.dispatchEvent(event, clone); | ||
}; | ||
//dont proxy manual events | ||
for (let event of Array.from(events)) { | ||
if (dst._has(event)) { | ||
src[`on${event}`] = p(event); | ||
} | ||
} | ||
return xhook[ON](AFTER, handler, i); | ||
}; | ||
xhook.enable = function() { | ||
WINDOW[XMLHTTP] = XHookHttpRequest; | ||
if (typeof XHookFetchRequest === "function") { | ||
WINDOW[FETCH] = XHookFetchRequest; | ||
//create fake event | ||
const fakeEvent = function(type) { | ||
if (_window__WEBPACK_IMPORTED_MODULE_0__["document"] && _window__WEBPACK_IMPORTED_MODULE_0__["document"].createEventObject != null) { | ||
const msieEventObject = _window__WEBPACK_IMPORTED_MODULE_0__["document"].createEventObject(); | ||
msieEventObject.type = type; | ||
return msieEventObject; | ||
} | ||
if (NativeFormData) { | ||
WINDOW[FormData] = XHookFormData; | ||
// on some platforms like android 4.1.2 and safari on windows, it appears | ||
// that new Event is not allowed | ||
try { | ||
return new Event(type); | ||
} catch (error) { | ||
return { type }; | ||
} | ||
}; | ||
xhook.disable = function() { | ||
WINDOW[XMLHTTP] = xhook[XMLHTTP]; | ||
WINDOW[FETCH] = xhook[FETCH]; | ||
if (NativeFormData) { | ||
WINDOW[FormData] = NativeFormData; | ||
} | ||
}; | ||
convertHeaders = xhook.headers = function(h, dest) { | ||
var header, headers, k, name, v, value, _i, _len, _ref; | ||
/***/ }), | ||
/***/ "./src/misc/headers.js": | ||
/*!*****************************!*\ | ||
!*** ./src/misc/headers.js ***! | ||
\*****************************/ | ||
/*! exports provided: default */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
//helper | ||
const convert = function(h, dest) { | ||
let name; | ||
if (dest == null) { | ||
@@ -249,16 +469,15 @@ dest = {}; | ||
case "object": | ||
headers = []; | ||
for (k in h) { | ||
v = h[k]; | ||
var headers = []; | ||
for (let k in h) { | ||
const v = h[k]; | ||
name = k.toLowerCase(); | ||
headers.push("" + name + ":\t" + v); | ||
headers.push(`${name}:\t${v}`); | ||
} | ||
return headers.join('\n') + '\n'; | ||
return headers.join("\n") + "\n"; | ||
case "string": | ||
headers = h.split('\n'); | ||
for (_i = 0, _len = headers.length; _i < _len; _i++) { | ||
header = headers[_i]; | ||
headers = h.split("\n"); | ||
for (let header of Array.from(headers)) { | ||
if (/([^:]+):\s*(.+)/.test(header)) { | ||
name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; | ||
value = RegExp.$2; | ||
name = RegExp.$1 != null ? RegExp.$1.toLowerCase() : undefined; | ||
const value = RegExp.$2; | ||
if (dest[name] == null) { | ||
@@ -271,69 +490,337 @@ dest[name] = value; | ||
} | ||
return []; | ||
}; | ||
NativeFormData = WINDOW[FormData]; | ||
/* harmony default export */ __webpack_exports__["default"] = ({ convert }); | ||
XHookFormData = function(form) { | ||
var entries; | ||
this.fd = form ? new NativeFormData(form) : new NativeFormData(); | ||
/***/ }), | ||
/***/ "./src/misc/hooks.js": | ||
/*!***************************!*\ | ||
!*** ./src/misc/hooks.js ***! | ||
\***************************/ | ||
/*! exports provided: default */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony import */ var _event_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event-emitter */ "./src/misc/event-emitter.js"); | ||
//global set of hook functions, | ||
//uses event emitter to store hooks | ||
const hooks = Object(_event_emitter__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"])(true); | ||
/* harmony default export */ __webpack_exports__["default"] = (hooks); | ||
/***/ }), | ||
/***/ "./src/misc/window.js": | ||
/*!****************************!*\ | ||
!*** ./src/misc/window.js ***! | ||
\****************************/ | ||
/*! exports provided: msie, window, document */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "msie", function() { return msie; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; }); | ||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "document", function() { return document; }); | ||
let result = null; | ||
//find global object | ||
if ( | ||
typeof WorkerGlobalScope !== "undefined" && | ||
self instanceof WorkerGlobalScope | ||
) { | ||
result = self; | ||
} else if (typeof global !== "undefined") { | ||
result = global; | ||
} else if (window) { | ||
result = window; | ||
} | ||
//find IE version | ||
const useragent = | ||
typeof navigator !== "undefined" && navigator["useragent"] | ||
? navigator.userAgent | ||
: ""; | ||
let msie = null; | ||
if ( | ||
/msie (\d+)/.test(useragent.toLowerCase()) || | ||
/trident\/.*; rv:(\d+)/.test(useragent.toLowerCase()) | ||
) { | ||
msie = parseInt(RegExp.$1, 10); | ||
} | ||
const window = result; | ||
const document = result.document; | ||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | ||
/***/ }), | ||
/***/ "./src/patch/fetch.js": | ||
/*!****************************!*\ | ||
!*** ./src/patch/fetch.js ***! | ||
\****************************/ | ||
/*! exports provided: default */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony import */ var _misc_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../misc/window */ "./src/misc/window.js"); | ||
/* harmony import */ var _misc_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../misc/events */ "./src/misc/events.js"); | ||
/* harmony import */ var _misc_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../misc/hooks */ "./src/misc/hooks.js"); | ||
/* harmony import */ var _formdata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formdata */ "./src/patch/formdata.js"); | ||
//browser's fetch | ||
const Native = _misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].fetch; | ||
//xhook's fetch | ||
const Xhook = function(url, options) { | ||
if (options == null) { | ||
options = { headers: {} }; | ||
} | ||
options.url = url; | ||
let request = null; | ||
const beforeHooks = _misc_hooks__WEBPACK_IMPORTED_MODULE_2__["default"].listeners("before"); | ||
const afterHooks = _misc_hooks__WEBPACK_IMPORTED_MODULE_2__["default"].listeners("after"); | ||
return new Promise(function(resolve, reject) { | ||
let fullfiled = resolve | ||
const getRequest = function() { | ||
if (options.body instanceof _formdata__WEBPACK_IMPORTED_MODULE_3__["default"].Xhook) { | ||
options.body = options.body.fd; | ||
} | ||
if (options.headers) { | ||
options.headers = new Headers(options.headers); | ||
} | ||
if (!request) { | ||
request = new Request(options.url, options); | ||
} | ||
return Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["mergeObjects"])(options, request); | ||
}; | ||
var processAfter = function(response) { | ||
if (!afterHooks.length) { | ||
return fullfiled(response); | ||
} | ||
const hook = afterHooks.shift(); | ||
if (hook.length === 2) { | ||
hook(getRequest(), response); | ||
return processAfter(response); | ||
} else if (hook.length === 3) { | ||
return hook(getRequest(), response, processAfter); | ||
} else { | ||
return processAfter(response); | ||
} | ||
}; | ||
const done = function(userResponse) { | ||
if (userResponse !== undefined) { | ||
const response = new Response( | ||
userResponse.body || userResponse.text, | ||
userResponse | ||
); | ||
resolve(response); | ||
processAfter(response); | ||
return; | ||
} | ||
//continue processing until no hooks left | ||
processBefore(); | ||
}; | ||
var processBefore = function() { | ||
if (!beforeHooks.length) { | ||
send(); | ||
return; | ||
} | ||
const hook = beforeHooks.shift(); | ||
if (hook.length === 1) { | ||
return done(hook(options)); | ||
} else if (hook.length === 2) { | ||
return hook(getRequest(), done); | ||
} | ||
}; | ||
var send = () => | ||
Native(getRequest()) | ||
.then(response => processAfter(response)) | ||
.catch(function(err) { | ||
fullfiled = reject | ||
processAfter(err); | ||
return reject(err); | ||
}); | ||
processBefore(); | ||
}); | ||
}; | ||
//patch interface | ||
/* harmony default export */ __webpack_exports__["default"] = ({ | ||
patch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].fetch = Xhook; | ||
} | ||
}, | ||
unpatch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].fetch = Native; | ||
} | ||
}, | ||
Native, | ||
Xhook | ||
}); | ||
/***/ }), | ||
/***/ "./src/patch/formdata.js": | ||
/*!*******************************!*\ | ||
!*** ./src/patch/formdata.js ***! | ||
\*******************************/ | ||
/*! exports provided: default */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony import */ var _misc_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../misc/window */ "./src/misc/window.js"); | ||
/* harmony import */ var _misc_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../misc/array */ "./src/misc/array.js"); | ||
//note: | ||
// we can patch FormData safely because all XHR | ||
// is hooked, so we can ensure the real FormData | ||
// object is used on send | ||
//browser's FormData | ||
var Native = _misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].FormData; | ||
//xhooks's FormData | ||
const Xhook = function(form) { | ||
this.fd = form ? new Native(form) : new Native(); | ||
this.form = form; | ||
entries = []; | ||
Object.defineProperty(this, 'entries', { | ||
get: function() { | ||
var fentries; | ||
fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { | ||
var _ref; | ||
return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; | ||
}).map(function(e) { | ||
return [e.name, e.type === "file" ? e.files : e.value]; | ||
}); | ||
const entries = []; | ||
Object.defineProperty(this, "entries", { | ||
get() { | ||
//extract form entries | ||
const fentries = !form | ||
? [] | ||
: Object(_misc_array__WEBPACK_IMPORTED_MODULE_1__["slice"])(form.querySelectorAll("input,select")) | ||
.filter(e => !["checkbox", "radio"].includes(e.type) || e.checked) | ||
.map(e => [e.name, e.type === "file" ? e.files : e.value]); | ||
//combine with js entries | ||
return fentries.concat(entries); | ||
} | ||
}); | ||
this.append = (function(_this) { | ||
return function() { | ||
var args; | ||
args = slice(arguments); | ||
entries.push(args); | ||
return _this.fd.append.apply(_this.fd, args); | ||
}; | ||
})(this); | ||
this.append = function() { | ||
const args = Object(_misc_array__WEBPACK_IMPORTED_MODULE_1__["slice"])(arguments); | ||
entries.push(args); | ||
return this.fd.append.apply(this.fd, args); | ||
}.bind(this); | ||
}; | ||
if (NativeFormData) { | ||
xhook[FormData] = NativeFormData; | ||
WINDOW[FormData] = XHookFormData; | ||
} | ||
//patch interface | ||
/* harmony default export */ __webpack_exports__["default"] = ({ | ||
patch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].FormData = Xhook; | ||
} | ||
}, | ||
unpatch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].FormData = Native; | ||
} | ||
}, | ||
Native, | ||
Xhook | ||
}); | ||
NativeXMLHttp = WINDOW[XMLHTTP]; | ||
xhook[XMLHTTP] = NativeXMLHttp; | ||
/***/ }), | ||
XHookHttpRequest = WINDOW[XMLHTTP] = function() { | ||
var ABORTED, currentState, emitFinal, emitReadyState, event, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr, _i, _len, _ref; | ||
ABORTED = -1; | ||
xhr = new xhook[XMLHTTP](); | ||
request = {}; | ||
status = null; | ||
hasError = void 0; | ||
transiting = void 0; | ||
response = void 0; | ||
readHead = function() { | ||
var key, name, val, _ref; | ||
/***/ "./src/patch/xmlhttprequest.js": | ||
/*!*************************************!*\ | ||
!*** ./src/patch/xmlhttprequest.js ***! | ||
\*************************************/ | ||
/*! exports provided: default */ | ||
/***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
__webpack_require__.r(__webpack_exports__); | ||
/* harmony import */ var _misc_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../misc/window */ "./src/misc/window.js"); | ||
/* harmony import */ var _misc_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../misc/events */ "./src/misc/events.js"); | ||
/* harmony import */ var _misc_event_emitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../misc/event-emitter */ "./src/misc/event-emitter.js"); | ||
/* harmony import */ var _misc_headers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../misc/headers */ "./src/misc/headers.js"); | ||
/* harmony import */ var _formdata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formdata */ "./src/patch/formdata.js"); | ||
const nullify = res => (res === undefined ? null : res); | ||
//browser's XMLHttpRequest | ||
const Native = _misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].XMLHttpRequest; | ||
//xhook's XMLHttpRequest | ||
const Xhook = function() { | ||
const ABORTED = -1; | ||
const xhr = new Native(); | ||
//========================== | ||
// Extra state | ||
const request = {}; | ||
let status = null; | ||
let hasError = undefined; | ||
let transiting = undefined; | ||
let response = undefined; | ||
var currentState = 0; | ||
//========================== | ||
// Private API | ||
//read results from real xhr into response | ||
const readHead = function() { | ||
// Accessing attributes on an aborted xhr object will | ||
// throw an 'c00c023f error' in IE9 and lower, don't touch it. | ||
response.status = status || xhr.status; | ||
if (!(status === ABORTED && msie < 10)) { | ||
if (status !== ABORTED || !(_misc_window__WEBPACK_IMPORTED_MODULE_0__["msie"] < 10)) { | ||
response.statusText = xhr.statusText; | ||
} | ||
if (status !== ABORTED) { | ||
_ref = convertHeaders(xhr.getAllResponseHeaders()); | ||
for (key in _ref) { | ||
val = _ref[key]; | ||
const object = _misc_headers__WEBPACK_IMPORTED_MODULE_3__["default"].convert(xhr.getAllResponseHeaders()); | ||
for (let key in object) { | ||
const val = object[key]; | ||
if (!response.headers[key]) { | ||
name = key.toLowerCase(); | ||
const name = key.toLowerCase(); | ||
response.headers[name] = val; | ||
} | ||
} | ||
return; | ||
} | ||
}; | ||
readBody = function() { | ||
const readBody = function() { | ||
//https://xhr.spec.whatwg.org/ | ||
if (!xhr.responseType || xhr.responseType === "text") { | ||
@@ -344,5 +831,7 @@ response.text = xhr.responseText; | ||
response.xml = xhr.responseXML; | ||
} catch (_error) { | ||
} | ||
} catch (error) {} | ||
// unable to set responseXML due to response type, we attempt to assign responseXML | ||
// when the type is text even though it's against the spec due to several libraries | ||
// and browser vendors who allow this behavior. causing these requests to fail when | ||
// xhook is installed on a page. | ||
} else if (xhr.responseType === "document") { | ||
@@ -354,2 +843,3 @@ response.xml = xhr.responseXML; | ||
} | ||
//new in some browsers | ||
if ("responseURL" in xhr) { | ||
@@ -359,25 +849,42 @@ response.finalUrl = xhr.responseURL; | ||
}; | ||
writeHead = function() { | ||
//write response into facade xhr | ||
const writeHead = function() { | ||
facade.status = response.status; | ||
facade.statusText = response.statusText; | ||
}; | ||
writeBody = function() { | ||
if ('text' in response) { | ||
const writeBody = function() { | ||
if ("text" in response) { | ||
facade.responseText = response.text; | ||
} | ||
if ('xml' in response) { | ||
if ("xml" in response) { | ||
facade.responseXML = response.xml; | ||
} | ||
if ('data' in response) { | ||
if ("data" in response) { | ||
facade.response = response.data; | ||
} | ||
if ('finalUrl' in response) { | ||
if ("finalUrl" in response) { | ||
facade.responseURL = response.finalUrl; | ||
} | ||
}; | ||
emitReadyState = function(n) { | ||
const emitFinal = function() { | ||
if (!hasError) { | ||
facade.dispatchEvent("load", {}); | ||
} | ||
facade.dispatchEvent("loadend", {}); | ||
if (hasError) { | ||
facade.readyState = 0; | ||
} | ||
}; | ||
//ensure ready state 0 through 4 is handled | ||
const emitReadyState = function(n) { | ||
while (n > currentState && currentState < 4) { | ||
facade[READY_STATE] = ++currentState; | ||
facade.readyState = ++currentState; | ||
// make fake events for libraries that actually check the type on | ||
// the event object | ||
if (currentState === 1) { | ||
facade[FIRE]("loadstart", {}); | ||
facade.dispatchEvent("loadstart", {}); | ||
} | ||
@@ -391,3 +898,4 @@ if (currentState === 2) { | ||
} | ||
facade[FIRE]("readystatechange", {}); | ||
facade.dispatchEvent("readystatechange", {}); | ||
//delay final events incase of error | ||
if (currentState === 4) { | ||
@@ -402,14 +910,6 @@ if (request.async === false) { | ||
}; | ||
emitFinal = function() { | ||
if (!hasError) { | ||
facade[FIRE]("load", {}); | ||
} | ||
facade[FIRE]("loadend", {}); | ||
if (hasError) { | ||
facade[READY_STATE] = 0; | ||
} | ||
}; | ||
currentState = 0; | ||
setReadyState = function(n) { | ||
var hooks, process; | ||
//control facade ready state | ||
const setReadyState = function(n) { | ||
//emit events until readyState reaches 4 | ||
if (n !== 4) { | ||
@@ -419,28 +919,40 @@ emitReadyState(n); | ||
} | ||
hooks = xhook.listeners(AFTER); | ||
process = function() { | ||
var hook; | ||
if (!hooks.length) { | ||
return emitReadyState(4); | ||
} | ||
hook = hooks.shift(); | ||
if (hook.length === 2) { | ||
hook(request, response); | ||
return process(); | ||
} else if (hook.length === 3 && request.async) { | ||
return hook(request, response, process); | ||
//before emitting 4, run all 'after' hooks in sequence | ||
const hooks = xhook.listeners("after"); | ||
var process = function() { | ||
if (hooks.length > 0) { | ||
//execute each 'before' hook one at a time | ||
const hook = hooks.shift(); | ||
if (hook.length === 2) { | ||
hook(request, response); | ||
process(); | ||
} else if (hook.length === 3 && request.async) { | ||
hook(request, response, process); | ||
} else { | ||
process(); | ||
} | ||
} else { | ||
return process(); | ||
//response ready for reading | ||
emitReadyState(4); | ||
} | ||
return; | ||
}; | ||
process(); | ||
}; | ||
facade = request.xhr = EventEmitter(); | ||
//========================== | ||
// Facade XHR | ||
var facade = Object(_misc_event_emitter__WEBPACK_IMPORTED_MODULE_2__["EventEmitter"])(); | ||
request.xhr = facade; | ||
// Handle the underlying ready state | ||
xhr.onreadystatechange = function(event) { | ||
//pull status and headers | ||
try { | ||
if (xhr[READY_STATE] === 2) { | ||
if (xhr.readyState === 2) { | ||
readHead(); | ||
} | ||
} catch (_error) {} | ||
if (xhr[READY_STATE] === 4) { | ||
} catch (error) {} | ||
//pull response data | ||
if (xhr.readyState === 4) { | ||
transiting = false; | ||
@@ -450,35 +962,44 @@ readHead(); | ||
} | ||
setReadyState(xhr[READY_STATE]); | ||
setReadyState(xhr.readyState); | ||
}; | ||
hasErrorHandler = function() { | ||
//mark this xhr as errored | ||
const hasErrorHandler = function() { | ||
hasError = true; | ||
}; | ||
facade[ON]('error', hasErrorHandler); | ||
facade[ON]('timeout', hasErrorHandler); | ||
facade[ON]('abort', hasErrorHandler); | ||
facade[ON]('progress', function() { | ||
facade.addEventListener("error", hasErrorHandler); | ||
facade.addEventListener("timeout", hasErrorHandler); | ||
facade.addEventListener("abort", hasErrorHandler); | ||
// progress means we're current downloading... | ||
facade.addEventListener("progress", function(event) { | ||
if (currentState < 3) { | ||
setReadyState(3); | ||
} else { | ||
facade[FIRE]("readystatechange", {}); | ||
} else if (xhr.readyState <= 3) { | ||
//until ready (4), each progress event is followed by readystatechange... | ||
facade.dispatchEvent("readystatechange", {}); //TODO fake an XHR event | ||
} | ||
}); | ||
if ('withCredentials' in xhr || xhook.addWithCredentials) { | ||
// initialise 'withCredentials' on facade xhr in browsers with it | ||
// or if explicitly told to do so | ||
if ("withCredentials" in xhr || xhook.addWithCredentials) { | ||
facade.withCredentials = false; | ||
} | ||
facade.status = 0; | ||
_ref = COMMON_EVENTS.concat(UPLOAD_EVENTS); | ||
for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
event = _ref[_i]; | ||
facade["on" + event] = null; | ||
// initialise all possible event handlers | ||
for (let event of Array.from(_misc_events__WEBPACK_IMPORTED_MODULE_1__["COMMON_EVENTS"].concat(_misc_events__WEBPACK_IMPORTED_MODULE_1__["UPLOAD_EVENTS"]))) { | ||
facade[`on${event}`] = null; | ||
} | ||
facade.open = function(method, url, async, user, pass) { | ||
// Initailize empty XHR facade | ||
currentState = 0; | ||
hasError = false; | ||
transiting = false; | ||
//reset request | ||
request.headers = {}; | ||
request.headerNames = {}; | ||
request.status = 0; | ||
response = {}; | ||
response.headers = {}; | ||
request.method = method; | ||
@@ -489,9 +1010,13 @@ request.url = url; | ||
request.pass = pass; | ||
//reset response | ||
response = {}; | ||
response.headers = {}; | ||
// openned facade xhr (not real xhr) | ||
setReadyState(1); | ||
}; | ||
facade.send = function(body) { | ||
var hooks, k, modk, process, send, _j, _len1, _ref1; | ||
_ref1 = ['type', 'timeout', 'withCredentials']; | ||
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { | ||
k = _ref1[_j]; | ||
//read xhr settings before hooking | ||
let k, modk; | ||
for (k of ["type", "timeout", "withCredentials"]) { | ||
modk = k === "type" ? "responseType" : k; | ||
@@ -502,14 +1027,29 @@ if (modk in facade) { | ||
} | ||
request.body = body; | ||
send = function() { | ||
var header, value, _k, _len2, _ref2, _ref3; | ||
proxyEvents(COMMON_EVENTS, xhr, facade); | ||
const send = function() { | ||
//proxy all events from real xhr to facade | ||
Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["proxyEvents"])(_misc_events__WEBPACK_IMPORTED_MODULE_1__["COMMON_EVENTS"], xhr, facade); | ||
//proxy all upload events from the real to the upload facade | ||
if (facade.upload) { | ||
proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); | ||
Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["proxyEvents"])( | ||
_misc_events__WEBPACK_IMPORTED_MODULE_1__["COMMON_EVENTS"].concat(_misc_events__WEBPACK_IMPORTED_MODULE_1__["UPLOAD_EVENTS"]), | ||
xhr.upload, | ||
facade.upload | ||
); | ||
} | ||
//prepare request all at once | ||
transiting = true; | ||
xhr.open(request.method, request.url, request.async, request.user, request.pass); | ||
_ref2 = ['type', 'timeout', 'withCredentials']; | ||
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { | ||
k = _ref2[_k]; | ||
//perform open | ||
xhr.open( | ||
request.method, | ||
request.url, | ||
request.async, | ||
request.user, | ||
request.pass | ||
); | ||
//write xhr settings | ||
for (k of ["type", "timeout", "withCredentials"]) { | ||
modk = k === "type" ? "responseType" : k; | ||
@@ -520,5 +1060,6 @@ if (k in request) { | ||
} | ||
_ref3 = request.headers; | ||
for (header in _ref3) { | ||
value = _ref3[header]; | ||
//insert headers | ||
for (let header in request.headers) { | ||
const value = request.headers[header]; | ||
if (header) { | ||
@@ -528,17 +1069,26 @@ xhr.setRequestHeader(header, value); | ||
} | ||
if (request.body instanceof XHookFormData) { | ||
//extract real formdata | ||
if (request.body instanceof _formdata__WEBPACK_IMPORTED_MODULE_4__["default"].Xhook) { | ||
request.body = request.body.fd; | ||
} | ||
//real send! | ||
xhr.send(request.body); | ||
}; | ||
hooks = xhook.listeners(BEFORE); | ||
process = function() { | ||
var done, hook; | ||
const hooks = xhook.listeners("before"); | ||
//process hooks sequentially | ||
var process = function() { | ||
if (!hooks.length) { | ||
return send(); | ||
} | ||
done = function(userResponse) { | ||
if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { | ||
mergeObjects(userResponse, response); | ||
if (__indexOf.call(userResponse, 'data') < 0) { | ||
//go to next hook OR optionally provide response | ||
const done = function(userResponse) { | ||
//break chain - provide dummy response (readyState 4) | ||
if ( | ||
typeof userResponse === "object" && | ||
(typeof userResponse.status === "number" || | ||
typeof response.status === "number") | ||
) { | ||
Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["mergeObjects"])(userResponse, response); | ||
if (!("data" in userResponse)) { | ||
userResponse.data = userResponse.response || userResponse.text; | ||
@@ -549,56 +1099,73 @@ } | ||
} | ||
//continue processing until no hooks left | ||
process(); | ||
}; | ||
//specifically provide headers (readyState 2) | ||
done.head = function(userResponse) { | ||
mergeObjects(userResponse, response); | ||
return setReadyState(2); | ||
Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["mergeObjects"])(userResponse, response); | ||
setReadyState(2); | ||
}; | ||
//specifically provide partial text (responseText readyState 3) | ||
done.progress = function(userResponse) { | ||
mergeObjects(userResponse, response); | ||
return setReadyState(3); | ||
Object(_misc_events__WEBPACK_IMPORTED_MODULE_1__["mergeObjects"])(userResponse, response); | ||
setReadyState(3); | ||
}; | ||
hook = hooks.shift(); | ||
const hook = hooks.shift(); | ||
//async or sync? | ||
if (hook.length === 1) { | ||
return done(hook(request)); | ||
done(hook(request)); | ||
} else if (hook.length === 2 && request.async) { | ||
return hook(request, done); | ||
//async handlers must use an async xhr | ||
hook(request, done); | ||
} else { | ||
return done(); | ||
//skip async hook on sync requests | ||
done(); | ||
} | ||
return; | ||
}; | ||
//kick off | ||
process(); | ||
}; | ||
facade.abort = function() { | ||
status = ABORTED; | ||
if (transiting) { | ||
xhr.abort(); | ||
xhr.abort(); //this will emit an 'abort' for us | ||
} else { | ||
facade[FIRE]('abort', {}); | ||
facade.dispatchEvent("abort", {}); | ||
} | ||
}; | ||
facade.setRequestHeader = function(header, value) { | ||
var lName, name; | ||
lName = header != null ? header.toLowerCase() : void 0; | ||
name = request.headerNames[lName] = request.headerNames[lName] || header; | ||
//the first header set is used for all future case-alternatives of 'name' | ||
const lName = header != null ? header.toLowerCase() : undefined; | ||
const name = (request.headerNames[lName] = | ||
request.headerNames[lName] || header); | ||
//append header to any previous values | ||
if (request.headers[name]) { | ||
value = request.headers[name] + ', ' + value; | ||
value = request.headers[name] + ", " + value; | ||
} | ||
request.headers[name] = value; | ||
}; | ||
facade.getResponseHeader = function(header) { | ||
var name; | ||
name = header != null ? header.toLowerCase() : void 0; | ||
return nullify(response.headers[name]); | ||
}; | ||
facade.getAllResponseHeaders = function() { | ||
return nullify(convertHeaders(response.headers)); | ||
}; | ||
facade.getResponseHeader = header => | ||
nullify(response.headers[header ? header.toLowerCase() : undefined]); | ||
facade.getAllResponseHeaders = () => | ||
nullify(_misc_headers__WEBPACK_IMPORTED_MODULE_3__["default"].convert(response.headers)); | ||
//proxy call only when supported | ||
if (xhr.overrideMimeType) { | ||
facade.overrideMimeType = function() { | ||
return xhr.overrideMimeType.apply(xhr, arguments); | ||
xhr.overrideMimeType.apply(xhr, arguments); | ||
}; | ||
} | ||
//create emitter when supported | ||
if (xhr.upload) { | ||
facade.upload = request.upload = EventEmitter(); | ||
let up = Object(_misc_event_emitter__WEBPACK_IMPORTED_MODULE_2__["EventEmitter"])(); | ||
facade.upload = up; | ||
request.upload = up; | ||
} | ||
facade.UNSENT = 0; | ||
@@ -609,111 +1176,39 @@ facade.OPENED = 1; | ||
facade.DONE = 4; | ||
facade.response = ''; | ||
facade.responseText = ''; | ||
// fill in default values for an empty XHR object according to the spec | ||
facade.response = ""; | ||
facade.responseText = ""; | ||
facade.responseXML = null; | ||
facade.readyState = 0; | ||
facade.statusText = ''; | ||
facade.statusText = ""; | ||
return facade; | ||
}; | ||
if (typeof WINDOW[FETCH] === "function") { | ||
NativeFetch = WINDOW[FETCH]; | ||
xhook[FETCH] = NativeFetch; | ||
XHookFetchRequest = WINDOW[FETCH] = function(url, options) { | ||
var afterHooks, beforeHooks, request; | ||
if (options == null) { | ||
options = { | ||
headers: {} | ||
}; | ||
Xhook.UNSENT = 0; | ||
Xhook.OPENED = 1; | ||
Xhook.HEADERS_RECEIVED = 2; | ||
Xhook.LOADING = 3; | ||
Xhook.DONE = 4; | ||
//patch interface | ||
/* harmony default export */ __webpack_exports__["default"] = ({ | ||
patch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].XMLHttpRequest = Xhook; | ||
} | ||
options.url = url; | ||
request = null; | ||
beforeHooks = xhook.listeners(BEFORE); | ||
afterHooks = xhook.listeners(AFTER); | ||
return new Promise(function(resolve, reject) { | ||
var done, getRequest, processAfter, processBefore, send; | ||
getRequest = function() { | ||
if (options.body instanceof XHookFormData) { | ||
options.body = options.body.fd; | ||
} | ||
if (options.headers) { | ||
options.headers = new Headers(options.headers); | ||
} | ||
if (!request) { | ||
request = new Request(options.url, options); | ||
} | ||
return mergeObjects(options, request); | ||
}; | ||
processAfter = function(response) { | ||
var hook; | ||
if (!afterHooks.length) { | ||
return resolve(response); | ||
} | ||
hook = afterHooks.shift(); | ||
if (hook.length === 2) { | ||
hook(getRequest(), response); | ||
return processAfter(response); | ||
} else if (hook.length === 3) { | ||
return hook(getRequest(), response, processAfter); | ||
} else { | ||
return processAfter(response); | ||
} | ||
}; | ||
done = function(userResponse) { | ||
var response; | ||
if (userResponse !== void 0) { | ||
response = new Response(userResponse.body || userResponse.text, userResponse); | ||
resolve(response); | ||
processAfter(response); | ||
return; | ||
} | ||
processBefore(); | ||
}; | ||
processBefore = function() { | ||
var hook; | ||
if (!beforeHooks.length) { | ||
send(); | ||
return; | ||
} | ||
hook = beforeHooks.shift(); | ||
if (hook.length === 1) { | ||
return done(hook(options)); | ||
} else if (hook.length === 2) { | ||
return hook(getRequest(), done); | ||
} | ||
}; | ||
send = function() { | ||
return NativeFetch(getRequest()).then(function(response) { | ||
return processAfter(response); | ||
})["catch"](function(err) { | ||
processAfter(err); | ||
return reject(err); | ||
}); | ||
}; | ||
processBefore(); | ||
}); | ||
}; | ||
} | ||
}, | ||
unpatch() { | ||
if (Native) { | ||
_misc_window__WEBPACK_IMPORTED_MODULE_0__["window"].XMLHttpRequest = Native; | ||
} | ||
}, | ||
Native, | ||
Xhook | ||
}); | ||
XHookHttpRequest.UNSENT = 0; | ||
XHookHttpRequest.OPENED = 1; | ||
/***/ }) | ||
XHookHttpRequest.HEADERS_RECEIVED = 2; | ||
XHookHttpRequest.LOADING = 3; | ||
XHookHttpRequest.DONE = 4; | ||
if (typeof define === "function" && define.amd) { | ||
define("xhook", [], function() { | ||
return xhook; | ||
}); | ||
} else if (typeof module === "object" && module.exports) { | ||
module.exports = { | ||
xhook: xhook | ||
}; | ||
} else if (WINDOW) { | ||
WINDOW.xhook = xhook; | ||
} | ||
}.call(this)); | ||
/******/ }); | ||
//# sourceMappingURL=xhook.js.map |
@@ -1,3 +0,5 @@ | ||
// XHook - v1.4.9 - https://github.com/jpillora/xhook | ||
// Jaime Pillora <dev@jpillora.com> - MIT Copyright 2018 | ||
(function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=[].indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(b in this&&this[b]===a)return b;return-1};q=null,q="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof global?global:a,x=q.document,d="before",c="after",o="readyState",n="addEventListener",m="removeEventListener",h="dispatchEvent",u="XMLHttpRequest",g="fetch",i="FormData",p=["load","loadend","loadstart"],e=["progress","abort","error","timeout"],E="undefined"!=typeof navigator&&navigator.useragent?navigator.userAgent:"",A=parseInt((/msie (\d+)/.exec(E.toLowerCase())||[])[1]),isNaN(A)&&(A=parseInt((/trident\/.*; rv:(\d+)/.exec(E.toLowerCase())||[])[1])),(G=Array.prototype).indexOf||(G.indexOf=function(a){var b,c,d,e;for(b=d=0,e=this.length;d<e;b=++d)if(c=this[b],c===a)return b;return-1}),D=function(a,b){return Array.prototype.slice.call(a,b)},w=function(a){return"returnValue"===a||"totalSize"===a||"position"===a},z=function(a,b){var c;for(c in a)if(a[c],!w(c))try{b[c]=a[c]}catch(a){}return b},B=function(a){return void 0===a?null:a},C=function(a,b,c){var d,e,f,g;for(e=function(a){return function(d){var e,f,g;e={};for(f in d)w(f)||(g=d[f],e[f]=g===b?c:g);return c[h](a,e)}},f=0,g=a.length;f<g;f++)d=a[f],c._has(d)&&(b["on"+d]=e(d))},y=function(a){var b;if(x&&null!=x.createEventObject)return b=x.createEventObject(),b.type=a,b;try{return new Event(a)}catch(b){return{type:a}}},f=function(a){var c,d,e;return d={},e=function(a){return d[a]||[]},c={},c[n]=function(a,c,f){d[a]=e(a),d[a].indexOf(c)>=0||(f=f===b?d[a].length:f,d[a].splice(f,0,c))},c[m]=function(a,c){var f;if(a===b)return void(d={});c===b&&(d[a]=[]),f=e(a).indexOf(c),f!==-1&&e(a).splice(f,1)},c[h]=function(){var b,d,f,g,h,i,j,k;for(b=D(arguments),d=b.shift(),a||(b[0]=z(b[0],y(d))),g=c["on"+d],g&&g.apply(c,b),k=e(d).concat(e("*")),f=i=0,j=k.length;i<j;f=++i)h=k[f],h.apply(c,b)},c._has=function(a){return!(!d[a]&&!c["on"+a])},a&&(c.listeners=function(a){return D(e(a))},c.on=c[n],c.off=c[m],c.fire=c[h],c.once=function(a,b){var d;return d=function(){return c.off(a,d),b.apply(null,arguments)},c.on(a,d)},c.destroy=function(){return d={}}),c},F=f(!0),F.EventEmitter=f,F[d]=function(a,b){if(a.length<1||a.length>2)throw"invalid hook";return F[n](d,a,b)},F[c]=function(a,b){if(a.length<2||a.length>3)throw"invalid hook";return F[n](c,a,b)},F.enable=function(){q[u]=t,"function"==typeof r&&(q[g]=r),k&&(q[i]=s)},F.disable=function(){q[u]=F[u],q[g]=F[g],k&&(q[i]=k)},v=F.headers=function(a,b){var c,d,e,f,g,h,i,j,k;switch(null==b&&(b={}),typeof a){case"object":d=[];for(e in a)g=a[e],f=e.toLowerCase(),d.push(f+":\t"+g);return d.join("\n")+"\n";case"string":for(d=a.split("\n"),i=0,j=d.length;i<j;i++)c=d[i],/([^:]+):\s*(.+)/.test(c)&&(f=null!=(k=RegExp.$1)?k.toLowerCase():void 0,h=RegExp.$2,null==b[f]&&(b[f]=h));return b}},k=q[i],s=function(a){var b;this.fd=a?new k(a):new k,this.form=a,b=[],Object.defineProperty(this,"entries",{get:function(){var c;return c=a?D(a.querySelectorAll("input,select")).filter(function(a){var b;return"checkbox"!==(b=a.type)&&"radio"!==b||a.checked}).map(function(a){return[a.name,"file"===a.type?a.files:a.value]}):[],c.concat(b)}}),this.append=function(a){return function(){var c;return c=D(arguments),b.push(c),a.fd.append.apply(a.fd,c)}}(this)},k&&(F[i]=k,q[i]=s),l=q[u],F[u]=l,t=q[u]=function(){var a,b,g,i,j,k,l,m,q,r,t,w,x,y,D,E,G,I,J,K,L;a=-1,I=new F[u],t={},y=null,l=void 0,D=void 0,w=void 0,r=function(){var b,c,d,e;if(w.status=y||I.status,y===a&&A<10||(w.statusText=I.statusText),y!==a){e=v(I.getAllResponseHeaders());for(b in e)d=e[b],w.headers[b]||(c=b.toLowerCase(),w.headers[c]=d)}},q=function(){if(I.responseType&&"text"!==I.responseType)"document"===I.responseType?(w.xml=I.responseXML,w.data=I.responseXML):w.data=I.response;else{w.text=I.responseText,w.data=I.responseText;try{w.xml=I.responseXML}catch(a){}}"responseURL"in I&&(w.finalUrl=I.responseURL)},G=function(){k.status=w.status,k.statusText=w.statusText},E=function(){"text"in w&&(k.responseText=w.text),"xml"in w&&(k.responseXML=w.xml),"data"in w&&(k.response=w.data),"finalUrl"in w&&(k.responseURL=w.finalUrl)},i=function(a){for(;a>b&&b<4;)k[o]=++b,1===b&&k[h]("loadstart",{}),2===b&&G(),4===b&&(G(),E()),k[h]("readystatechange",{}),4===b&&(t.async===!1?g():setTimeout(g,0))},g=function(){l||k[h]("load",{}),k[h]("loadend",{}),l&&(k[o]=0)},b=0,x=function(a){var b,d;if(4!==a)return void i(a);b=F.listeners(c),(d=function(){var a;return b.length?(a=b.shift(),2===a.length?(a(t,w),d()):3===a.length&&t.async?a(t,w,d):d()):i(4)})()},k=t.xhr=f(),I.onreadystatechange=function(a){try{2===I[o]&&r()}catch(a){}4===I[o]&&(D=!1,r(),q()),x(I[o])},m=function(){l=!0},k[n]("error",m),k[n]("timeout",m),k[n]("abort",m),k[n]("progress",function(){b<3?x(3):k[h]("readystatechange",{})}),("withCredentials"in I||F.addWithCredentials)&&(k.withCredentials=!1),k.status=0,L=e.concat(p);for(J=0,K=L.length;J<K;J++)j=L[J],k["on"+j]=null;return k.open=function(a,c,d,e,f){b=0,l=!1,D=!1,t.headers={},t.headerNames={},t.status=0,w={},w.headers={},t.method=a,t.url=c,t.async=d!==!1,t.user=e,t.pass=f,x(1)},k.send=function(a){var b,c,f,g,h,i,j,l;for(l=["type","timeout","withCredentials"],i=0,j=l.length;i<j;i++)c=l[i],f="type"===c?"responseType":c,f in k&&(t[c]=k[f]);t.body=a,h=function(){var a,b,d,g,h,i;for(C(e,I,k),k.upload&&C(e.concat(p),I.upload,k.upload),D=!0,I.open(t.method,t.url,t.async,t.user,t.pass),h=["type","timeout","withCredentials"],d=0,g=h.length;d<g;d++)c=h[d],f="type"===c?"responseType":c,c in t&&(I[f]=t[c]);i=t.headers;for(a in i)b=i[a],a&&I.setRequestHeader(a,b);t.body instanceof s&&(t.body=t.body.fd),I.send(t.body)},b=F.listeners(d),(g=function(){var a,c;return b.length?(a=function(a){if("object"==typeof a&&("number"==typeof a.status||"number"==typeof w.status))return z(a,w),H.call(a,"data")<0&&(a.data=a.response||a.text),void x(4);g()},a.head=function(a){return z(a,w),x(2)},a.progress=function(a){return z(a,w),x(3)},c=b.shift(),1===c.length?a(c(t)):2===c.length&&t.async?c(t,a):a()):h()})()},k.abort=function(){y=a,D?I.abort():k[h]("abort",{})},k.setRequestHeader=function(a,b){var c,d;c=null!=a?a.toLowerCase():void 0,d=t.headerNames[c]=t.headerNames[c]||a,t.headers[d]&&(b=t.headers[d]+", "+b),t.headers[d]=b},k.getResponseHeader=function(a){var b;return b=null!=a?a.toLowerCase():void 0,B(w.headers[b])},k.getAllResponseHeaders=function(){return B(v(w.headers))},I.overrideMimeType&&(k.overrideMimeType=function(){return I.overrideMimeType.apply(I,arguments)}),I.upload&&(k.upload=t.upload=f()),k.UNSENT=0,k.OPENED=1,k.HEADERS_RECEIVED=2,k.LOADING=3,k.DONE=4,k.response="",k.responseText="",k.responseXML=null,k.readyState=0,k.statusText="",k},"function"==typeof q[g]&&(j=q[g],F[g]=j,r=q[g]=function(a,b){var e,f,g;return null==b&&(b={headers:{}}),b.url=a,g=null,f=F.listeners(d),e=F.listeners(c),new Promise(function(a,c){var d,h,i,k,l;h=function(){return b.body instanceof s&&(b.body=b.body.fd),b.headers&&(b.headers=new Headers(b.headers)),g||(g=new Request(b.url,b)),z(b,g)},i=function(b){var c;return e.length?(c=e.shift(),2===c.length?(c(h(),b),i(b)):3===c.length?c(h(),b,i):i(b)):a(b)},d=function(b){var c;if(void 0!==b)return c=new Response(b.body||b.text,b),a(c),void i(c);k()},k=function(){var a;return f.length?(a=f.shift(),1===a.length?d(a(b)):2===a.length?a(h(),d):void 0):void l()},l=function(){return j(h()).then(function(a){return i(a)}).catch(function(a){return i(a),c(a)})},k()})}),t.UNSENT=0,t.OPENED=1,t.HEADERS_RECEIVED=2,t.LOADING=3,t.DONE=4,"function"==typeof define&&define.amd?define("xhook",[],function(){return F}):"object"==typeof module&&module.exports?module.exports={xhook:F}:q&&(q.xhook=F)}).call(this,window); | ||
/*! | ||
* XHook - v1.5.0 - https://github.com/jpillora/xhook | ||
* Jaime Pillora <dev@jpillora.com> - MIT Copyright 2022 | ||
*/!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return s})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return i}));let o=null;"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?o=self:void 0!==e?o=e:a&&(o=a);const r="undefined"!=typeof navigator&&navigator.useragent?navigator.userAgent:"";let s=null;(/msie (\d+)/.test(r.toLowerCase())||/trident\/.*; rv:(\d+)/.test(r.toLowerCase()))&&(s=parseInt(RegExp.$1,10));const a=o,i=o.document}).call(this,n(11))},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return i})),n.d(t,"e",(function(){return c})),n.d(t,"c",(function(){return u}));var o=n(0);const r=["load","loadend","loadstart"],s=["progress","abort","error","timeout"],a=e=>["returnValue","totalSize","position"].includes(e),i=function(e,t){for(let n in e){if(a(n))continue;const o=e[n];try{t[n]=o}catch(e){}}return t},c=function(e,t,n){const o=e=>function(o){const r={};for(let e in o){if(a(e))continue;const s=o[e];r[e]=s===t?n:s}return n.dispatchEvent(e,r)};for(let r of Array.from(e))n._has(r)&&(t[`on${r}`]=o(r))},u=function(e){if(o.a&&null!=o.a.createEventObject){const t=o.a.createEventObject();return t.type=e,t}try{return new Event(e)}catch(t){return{type:e}}}},function(e,t,n){"use strict";var o=n(0),r=n(4),s=o.c.FormData;const a=function(e){this.fd=e?new s(e):new s,this.form=e;const t=[];Object.defineProperty(this,"entries",{get:()=>(e?Object(r.a)(e.querySelectorAll("input,select")).filter(e=>!["checkbox","radio"].includes(e.type)||e.checked).map(e=>[e.name,"file"===e.type?e.files:e.value]):[]).concat(t)}),this.append=function(){const e=Object(r.a)(arguments);return t.push(e),this.fd.append.apply(this.fd,e)}.bind(this)};t.a={patch(){s&&(o.c.FormData=a)},unpatch(){s&&(o.c.FormData=s)},Native:s,Xhook:a}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var o=n(4),r=n(1);const s=function(e){let t={};const n=e=>t[e]||[],s={addEventListener:function(e,o,r){t[e]=n(e),t[e].indexOf(o)>=0||(r=void 0===r?t[e].length:r,t[e].splice(r,0,o))},removeEventListener:function(e,o){if(void 0===e)return void(t={});void 0===o&&(t[e]=[]);const r=n(e).indexOf(o);-1!==r&&n(e).splice(r,1)},dispatchEvent:function(){const t=Object(o.a)(arguments),a=t.shift();e||(t[0]=Object(r.d)(t[0],Object(r.c)(a)));const i=s[`on${a}`];i&&i.apply(s,t);const c=n(a).concat(n("*"));for(let e=0;e<c.length;e++){c[e].apply(s,t)}},_has:e=>!(!t[e]&&!s[`on${e}`])};return e&&(s.listeners=e=>Object(o.a)(n(e)),s.on=s.addEventListener,s.off=s.removeEventListener,s.fire=s.dispatchEvent,s.once=function(e,t){var n=function(){return s.off(e,n),t.apply(null,arguments)};return s.on(e,n)},s.destroy=()=>t={}),s}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){for(let t=0;t<this.length;t++){if(this[t]===e)return t}return-1});const o=(e,t)=>Array.prototype.slice.call(e,t)},function(e,t,n){"use strict";t.a={convert:function(e,t){let n;switch(null==t&&(t={}),typeof e){case"object":var o=[];for(let t in e){const r=e[t];n=t.toLowerCase(),o.push(`${n}:\t${r}`)}return o.join("\n")+"\n";case"string":o=e.split("\n");for(let e of Array.from(o))if(/([^:]+):\s*(.+)/.test(e)){n=null!=RegExp.$1?RegExp.$1.toLowerCase():void 0;const e=RegExp.$2;null==t[n]&&(t[n]=e)}return t}return[]}}},function(e,t,n){"use strict";var o=n(3);const r=Object(o.a)(!0);t.a=r},function(e,t,n){"use strict";var o=n(0),r=n(1),s=n(3),a=n(5),i=n(2);const c=e=>void 0===e?null:e,u=o.c.XMLHttpRequest,f=function(){const e=new u,t={};let n=null,f=void 0,d=void 0,l=void 0;var p=0;const h=function(){if(l.status=n||e.status,-1===n&&o.b<10||(l.statusText=e.statusText),-1===n);else{const t=a.a.convert(e.getAllResponseHeaders());for(let e in t){const n=t[e];if(!l.headers[e]){const t=e.toLowerCase();l.headers[t]=n}}}},y=function(){x.status=l.status,x.statusText=l.statusText},v=function(){f||x.dispatchEvent("load",{}),x.dispatchEvent("loadend",{}),f&&(x.readyState=0)},b=function(e){for(;e>p&&p<4;)x.readyState=++p,1===p&&x.dispatchEvent("loadstart",{}),2===p&&y(),4===p&&(y(),"text"in l&&(x.responseText=l.text),"xml"in l&&(x.responseXML=l.xml),"data"in l&&(x.response=l.data),"finalUrl"in l&&(x.responseURL=l.finalUrl)),x.dispatchEvent("readystatechange",{}),4===p&&(!1===t.async?v():setTimeout(v,0))},g=function(e){if(4!==e)return void b(e);const n=xhook.listeners("after");var o=function(){if(n.length>0){const e=n.shift();2===e.length?(e(t,l),o()):3===e.length&&t.async?e(t,l,o):o()}else b(4)};o()};var x=Object(s.a)();t.xhr=x,e.onreadystatechange=function(t){try{2===e.readyState&&h()}catch(e){}4===e.readyState&&(d=!1,h(),function(){if(e.responseType&&"text"!==e.responseType)"document"===e.responseType?(l.xml=e.responseXML,l.data=e.responseXML):l.data=e.response;else{l.text=e.responseText,l.data=e.responseText;try{l.xml=e.responseXML}catch(e){}}"responseURL"in e&&(l.finalUrl=e.responseURL)}()),g(e.readyState)};const m=function(){f=!0};x.addEventListener("error",m),x.addEventListener("timeout",m),x.addEventListener("abort",m),x.addEventListener("progress",(function(t){p<3?g(3):e.readyState<=3&&x.dispatchEvent("readystatechange",{})})),("withCredentials"in e||xhook.addWithCredentials)&&(x.withCredentials=!1),x.status=0;for(let e of Array.from(r.a.concat(r.b)))x[`on${e}`]=null;if(x.open=function(e,n,o,r,s){p=0,f=!1,d=!1,t.headers={},t.headerNames={},t.status=0,t.method=e,t.url=n,t.async=!1!==o,t.user=r,t.pass=s,l={},l.headers={},g(1)},x.send=function(n){let o,s;for(o of["type","timeout","withCredentials"])s="type"===o?"responseType":o,s in x&&(t[o]=x[s]);t.body=n;const a=xhook.listeners("before");var c=function(){if(!a.length)return function(){for(o of(Object(r.e)(r.a,e,x),x.upload&&Object(r.e)(r.a.concat(r.b),e.upload,x.upload),d=!0,e.open(t.method,t.url,t.async,t.user,t.pass),["type","timeout","withCredentials"]))s="type"===o?"responseType":o,o in t&&(e[s]=t[o]);for(let n in t.headers){const o=t.headers[n];n&&e.setRequestHeader(n,o)}t.body instanceof i.a.Xhook&&(t.body=t.body.fd),e.send(t.body)}();const n=function(e){if("object"==typeof e&&("number"==typeof e.status||"number"==typeof l.status))return Object(r.d)(e,l),"data"in e||(e.data=e.response||e.text),void g(4);c()};n.head=function(e){Object(r.d)(e,l),g(2)},n.progress=function(e){Object(r.d)(e,l),g(3)};const u=a.shift();1===u.length?n(u(t)):2===u.length&&t.async?u(t,n):n()};c()},x.abort=function(){n=-1,d?e.abort():x.dispatchEvent("abort",{})},x.setRequestHeader=function(e,n){const o=null!=e?e.toLowerCase():void 0,r=t.headerNames[o]=t.headerNames[o]||e;t.headers[r]&&(n=t.headers[r]+", "+n),t.headers[r]=n},x.getResponseHeader=e=>c(l.headers[e?e.toLowerCase():void 0]),x.getAllResponseHeaders=()=>c(a.a.convert(l.headers)),e.overrideMimeType&&(x.overrideMimeType=function(){e.overrideMimeType.apply(e,arguments)}),e.upload){let e=Object(s.a)();x.upload=e,t.upload=e}return x.UNSENT=0,x.OPENED=1,x.HEADERS_RECEIVED=2,x.LOADING=3,x.DONE=4,x.response="",x.responseText="",x.responseXML=null,x.readyState=0,x.statusText="",x};f.UNSENT=0,f.OPENED=1,f.HEADERS_RECEIVED=2,f.LOADING=3,f.DONE=4,t.a={patch(){u&&(o.c.XMLHttpRequest=f)},unpatch(){u&&(o.c.XMLHttpRequest=u)},Native:u,Xhook:f}},function(e,t,n){"use strict";var o=n(0),r=n(1),s=n(6),a=n(2);const i=o.c.fetch,c=function(e,t){null==t&&(t={headers:{}}),t.url=e;let n=null;const o=s.a.listeners("before"),c=s.a.listeners("after");return new Promise((function(e,s){let u=e;const f=function(){return t.body instanceof a.a.Xhook&&(t.body=t.body.fd),t.headers&&(t.headers=new Headers(t.headers)),n||(n=new Request(t.url,t)),Object(r.d)(t,n)};var d=function(e){if(!c.length)return u(e);const t=c.shift();return 2===t.length?(t(f(),e),d(e)):3===t.length?t(f(),e,d):d(e)};const l=function(t){if(void 0!==t){const n=new Response(t.body||t.text,t);return e(n),void d(n)}p()};var p=function(){if(!o.length)return void h();const e=o.shift();return 1===e.length?l(e(t)):2===e.length?e(f(),l):void 0},h=()=>i(f()).then(e=>d(e)).catch((function(e){return u=s,d(e),s(e)}));p()}))};t.a={patch(){i&&(o.c.fetch=c)},unpatch(){i&&(o.c.fetch=i)},Native:i,Xhook:c}},function(e,t,n){"use strict";n.r(t),function(e){var t=n(3),o=n(0),r=n(5),s=n(7),a=n(8),i=n(2);const c=n(6).a;c.EventEmitter=t.a,c.before=function(e,t){if(e.length<1||e.length>2)throw"invalid hook";return c.on("before",e,t)},c.after=function(e,t){if(e.length<2||e.length>3)throw"invalid hook";return c.on("after",e,t)},c.enable=function(){s.a.patch(),a.a.patch(),i.a.patch()},c.disable=function(){s.a.unpatch(),a.a.unpatch(),i.a.unpatch()},c.XMLHttpRequest=s.a.Native,c.fetch=a.a.Native,c.FormData=i.a.Native,c.headers=r.a.convert,c.enable(),"function"==typeof define&&n(12)?define("xhook",[],()=>c):e&&"object"==typeof e&&e.exports?e.exports={xhook:c}:o.c&&(o.c.xhook=c)}.call(this,n(10)(e))},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){(function(t){e.exports=t}).call(this,{})}]); | ||
//# sourceMappingURL=xhook.min.js.map |
{ | ||
"name": "xhook", | ||
"version": "1.4.9", | ||
"version": "1.5.0", | ||
"description": "Easily intercept and modify XHR request and response", | ||
"browser": "dist/xhook.js", | ||
"main": "dist/xhook.js", | ||
"main": "src/main.js", | ||
"scripts": { | ||
"start": "grunt-source --server=3000", | ||
"test": "testcafe chrome:headless tests", | ||
"start": "webpack-dev-server --mode development", | ||
"build": "webpack-cli --mode development && webpack-cli --mode production --output-filename xhook.min.js", | ||
"test": "playwright test", | ||
"test:server": "http-server --port 8080", | ||
"test:all": "testcafe all tests" | ||
@@ -39,5 +41,9 @@ }, | ||
"devDependencies": { | ||
"testcafe": "^0.16.2", | ||
"testcafe-browser-provider-saucelabs": "^1.3.0" | ||
} | ||
"@playwright/test": "^1.23.0", | ||
"http-server": "^14.1.1", | ||
"webpack": "^4.42.0", | ||
"webpack-cli": "^3.3.11", | ||
"webpack-dev-server": "^3.10.3" | ||
}, | ||
"prettier": {} | ||
} |
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
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
0
-100%4
-42.86%154922
-88.45%5
150%16
-76.47%1859
-74.98%