Repository navigation
Expand file tree
/
Copy pathparallel-data.min.js
More file actions
2 lines (2 loc) · 3.81 KB
/
Copy pathparallel-data.min.js
File metadata and controls
2 lines (2 loc) · 3.81 KB
1
2
// ParallelData v1.3.0 by Sean Roberts @DevelopSean
!function(){"use strict";var e="ParallelData";function t(){try{for(var t,n=arguments.length,r=Array(n),a=0;a<n;a++)r[a]=arguments[a];(t=console).error.apply(t,[e].concat(r))}catch(e){}}function n(e,t){return Object.assign.apply(Object,arguments)}var r={},a={},o={},s=function(e,t){return e.toUpperCase()+"-"+t},i=function(){};i=function(e,t,a,i){var _=s(e,t);if(!r[_]){var c=new XMLHttpRequest,u=r[_]={url:t,method:e,headers:a,xhrRef:c,events:{load:null,error:null,timeout:null}};c.__PDInternal__=!0,c.open(e,t),a=n({},o.headers,a||{}),Object.keys(a).forEach(function(e){c.setRequestHeader(e,a[e])}),i&&i.onParallelDataResponse&&c.addEventListener("readystatechange",function(){4===c.readyState&&i.onParallelDataResponse(c,{transferredToApp:!!c.__PDConsumed__})}),Object.keys(u.events).forEach(function(e){c.addEventListener(e,function(t){u.events[e]=t})}),c.send()}};var _=function(){};function c(e,n){n=n||{};try{i("GET",e,n.headers,n)}catch(e){t("makeXHRRequest failed",e)}}function u(e,t){if(e&&e.method&&e.url){var n=s(e.method,e.url);return"xhr"===t?r[n]:a[n]}}_=function(e,r,i){var _=s(e,r);if(!a[_])var c=a[_]=fetch(r,n({},i,{__PDFetch__:!0,method:e,headers:n({},o.headers,i.headers||{}),credentials:i.credentials||"include",redirect:i.redirect||"follow"})).then(function(e){return i&&i.onParallelDataResponse&&i.onParallelDataResponse(e.clone(),{transferredToApp:!!c.__PDConsumed__}),e}).catch(function(e){throw t("fetch request failed",e),e})},window.ParallelData={version:"1.3.0",configure:function(e){var t;(e=e||{}).allRequests&&(t=e.allRequests,o=n({},o,t||{}))}},window.ParallelData.getForXHR=c,function(){try{var e=XMLHttpRequest.prototype;e.__PDListeners__=[],Object.keys(e).forEach(function(t){var r=Object.getOwnPropertyDescriptor(e,t);void 0===r.value&&Object.defineProperty(e,t,n({},r,{get:function(){return!this.__PDInternal__&&this.__PDRequest__?this.__PDRequest__[t]:r.get.call(this)}}))});var r=e.open;e.open=function(e,t){this.__PDOpen__={method:e,url:t},r.apply(this,arguments)};var a=e.addEventListener;e.addEventListener=function(){if(!this.__PDInternal__){if(this.__PDRequest__)return this.__PDRequest__.addEventListener.apply(this.__PDRequest__,arguments);this.__PDListeners__.push({action:"add",args:arguments})}return a.apply(this,arguments)};var o=e.removeEventListener;e.removeEventListener=function(){if(!this.__PDInternal__){if(this.__PDRequest__)return this.__PDRequest__.removeEventListener.apply(this.__PDRequest__,arguments);this.__PDListeners__.push({action:"remove",args:arguments})}return o.apply(this,arguments)};var s=e.send;e.send=function(e){var n=this,r=u(this.__PDOpen__,"xhr"),a=r&&r.xhrRef;this.__PDInternal__||!a||a.__PDConsumed__?(this.__PDListeners__=[],s.call(this,e)):(a.__PDConsumed__=!0,(window.setImmediate||window.setTimeout)(function(){try{for(a.onreadystatechange=n.onreadystatechange,["onloadstart","onprogress","onabort","onerror","onload","ontimeout","onloadend"].forEach(function(e){a[e]=n[e]});n.__PDListeners__.length;){var e=n.__PDListeners__.shift();a[e.action+"EventListener"].apply(a,e.args)}n.__PDRequest__=a,a.onreadystatechange&&a.onreadystatechange(),Object.keys(r.events).forEach(function(e){r.events[e]&&n.dispatchEvent(r.events[e])})}catch(e){t("transferring events failed",e)}},0))}}catch(e){t("failed to run XHRInterceptor",e)}}(),window.ParallelData.getForFetch=function(e,n){n=n||{};try{"fetch"in window&&"Promise"in window?_("GET",e,n):c(e,n)}catch(e){t("fetch request failed",e)}},function(){try{var e=window.fetch;if(!e||!window.Promise)return;window.fetch=function(t,n){t=t||{},n=n||{};var r=void 0;"string"==typeof t?r=t:t.url&&(r=t.url);var a=u({method:n.method?n.method:t.method?t.method:"GET",url:r},"fetch");return n.__PDFetch__||!a||a.__PDConsumed__?e.apply(window,arguments):(a.__PDConsumed__=!0,a)}}catch(e){t("failed to run fetchInterceptor",e)}}()}();