vue-use-async 1.2.2 → 1.4.0

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.
@@ -2,5 +2,6 @@ export default class Deferred<T> {
2
2
  resolve: (value: (T | PromiseLike<T>)) => void;
3
3
  reject: (e: any) => void;
4
4
  promise: Promise<T>;
5
+ done: boolean;
5
6
  constructor();
6
7
  }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("vue"));else if("function"==typeof define&&define.amd)define(["vue"],t);else{var r="object"==typeof exports?t(require("vue")):t(e.vue);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(self,(e=>(()=>{"use strict";var t={748:t=>{t.exports=e}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.r(o),n.d(o,{Deferred:()=>l,Xhr:()=>w,cache:()=>t,cacheIds:()=>i,cacheSize:()=>r,clearCache:()=>u,useAsync:()=>h,useMutation:()=>p,useResult:()=>y,useSpinner:()=>x,useXhr:()=>H});var e=new Map;function t(t){var r,n,o=t||{},i=o.id,u=o.xhr,a="string"!=typeof t.duration&&t.duration||200;if("max"===t.duration&&(a=36e5),!e.get(i)&&u?(r=u(),e.set(i,r),r.then((function(t){return"[Log] add cache: ".concat(i),clearTimeout(n),n=window.setTimeout((function(){e.delete(i),"[Log] delete cache: ".concat(i),clearTimeout(n)}),a),t}),(function(){return e.delete(i),void"[Log] delete cache: ".concat(i)}))):i&&(r=e.get(i)),r)return r;throw Error("Call to undefined cache")}function r(){return e.size}function i(){return Array.from(e.keys())}function u(t){t?e.delete(t):e.forEach((function(e,t,r){r.delete(t)}))}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function s(e,t,r){return t&&a(e.prototype,t),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var l=s((function e(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"resolve",void 0),c(this,"reject",void 0),c(this,"promise",void 0),this.resolve=function(){throw Error("Can t resolve")},this.reject=function(){throw Error("Can t reject")},this.promise=new Promise((function(e,r){t.resolve=e,t.reject=r}))})),f=n(748);function v(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function h(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,f.ref)(!0),n=(0,f.ref)(),o=(0,f.ref)(),i=(0,f.ref)(null),u=[],a=[],s=[],c=(0,f.ref)(null),l=(0,f.computed)((function(){return"function"==typeof t?t():(0,f.unref)(t)})),d=(0,f.ref)(),h=(0,f.computed)((function(){return"function"==typeof r?r():(0,f.unref)(r)})),p=function(t){a.forEach((function(e){return e(l.value)})),n.value=!0,i.value=null;var r=e,f=e;return c.value=Array.isArray(t)?f.apply(void 0,v(t)):r(t),c.value.catch((function(e){i.value=e||null,u.forEach((function(e){return e(i.value,l.value)})),i.value=e})),c.value.then((function(e){o.value=e,s.forEach((function(t){return t(e,l.value)}))})),c.value.finally((function(){n.value=!1})),c.value};return(0,f.watch)((function(){return h.value}),(function(e){!n.value&&e&&p(l.value)}),{immediate:!1}),(0,f.watch)((function(){return l.value}),(function(e){var t=JSON.stringify(e);!n.value&&(void 0===e&&void 0===d.value||h.value&&t!==JSON.stringify(d.value))&&p(e),d.value=void 0===t?void 0:JSON.parse(t)}),{immediate:h.value,deep:!0}),{isPending:n,data:o,error:i,reload:function(){return p(l.value)},onError:function(e){return u.push(e)},onStart:function(e){return a.push(e)},onEnd:function(e){return s.push(e)},promise:(0,f.computed)((function(){return c.value}))}}function p(e){var t=(0,f.ref)(),r=(0,f.ref)(),n=(0,f.ref)(),o=[],i=[],u=(0,f.ref)(null);return{mutate:function(a){for(var s=arguments.length,c=new Array(s>1?s-1:0),l=1;l<s;l++)c[l-1]=arguments[l];t.value=!0,n.value=null;var f=e;return u.value=f.apply(void 0,[a].concat(c)),u.value.then((function(e){r.value=e,i.forEach((function(e){return e(r.value,c.length?[a].concat(c):a)}))}),(function(e){n.value=e||null,o.forEach((function(e){return e(n.value,c.length?[a].concat(c):a)})),n.value=e})),u.value.finally((function(){t.value=!1})),u.value},onError:function(e){return o.push(e)},onEnd:function(e){return i.push(e)},isPending:t,error:n,data:r,promise:(0,f.computed)((function(){return u.value}))}}function y(e,t,r){var n=(0,f.ref)(t);return r||(r=function(e){return e}),t&&(n.value=r(t)),(0,f.watchEffect)((function(){if(e){var t,o=(0,f.unref)(e);o&&(n.value=null===(t=r)||void 0===t?void 0:t(o))}})),n}function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){O(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],u=!0,a=!1;try{for(r=r.call(e);!(u=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==r.return||r.return()}finally{if(a)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function j(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function O(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var w=function(){function e(t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),O(this,"onError",(function(){})),O(this,"onStart",(function(){})),O(this,"onAbort",(function(){})),O(this,"onProgress",(function(){})),O(this,"onEnd",(function(){})),O(this,"token",null),O(this,"url",""),O(this,"params",{}),O(this,"sendAs","json"),O(this,"timeout",1e4),O(this,"port",80),O(this,"responseType","text"),O(this,"isPending",!1),O(this,"_eventsReady",void 0),O(this,"_oXHR",void 0),O(this,"_onEnd",void 0),O(this,"_deferred",void 0),O(this,"_isXhrResolved",void 0),O(this,"_isXhrRejected",void 0),O(this,"_eventReady",void 0),this._eventsReady=!1,this._constructor(t||{},r)}var t,r,n;return t=e,r=[{key:"_onError",value:function(e){this.onError(e),this._deferred.reject(e)}},{key:"_getUrl",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.onBeforeSendList.reduce((function(e,t){return t(e||{})}),t);return e.stringifyUrl(this.url,r)}},{key:"removeEvents",value:function(){var e=this,t=function(){e._oXHR.removeEventListener("load",e._onEnd,!1),e._oXHR.removeEventListener("error",e.onError,!1),e._oXHR.removeEventListener("loadstart",e.onStart,!1),e._oXHR.removeEventListener("abort",e.onAbort,!1),e._oXHR.upload.removeEventListener("progress",e.onProgress,!1),e._oXHR.removeEventListener("progress",e.onProgress,!1),e._oXHR.removeEventListener("timeout",e.onError,!1)};this._deferred.promise.then(t,t)}},{key:"post",value:function(e){return this._constructor(e),this._oXHR.open("POST",this._getUrl(),!0),this._send(),this._deferred.promise}},{key:"put",value:function(e){return this._constructor(e),this._oXHR.open("PUT",this._getUrl(),!0),this._send(),this._deferred.promise}},{key:"get",value:function(e){this._constructor(e||{}),this._oXHR.open("GET",this._getUrl("multipart"===this.sendAs?{}:this.params),!0),this._send();var t=this._deferred.promise;return t.abortXhr=this.abort.bind(this),t}},{key:"delete",value:function(e){return this._constructor(e),this._oXHR.open("DELETE",this._getUrl(this.params),!0),this._send(),this._deferred.promise}},{key:"abort",value:function(){return this._isXhrResolved&&!this._isXhrRejected||(this._oXHR.abort(null,this),this._isXhrRejected=!0,this._deferred.reject({error:"Xhr aborted: ".concat(this.url),code:"HTTP-ABORTED"})),this._deferred.promise}},{key:"resolve",value:function(e){return this._deferred.resolve(e),this._deferred.promise}},{key:"reject",value:function(e){return this._deferred.reject(e),this._deferred.promise}},{key:"_setEvents",value:function(e){this._eventsReady||(this._eventReady=!0,e.addEventListener("load",this._onEnd,!1),e.addEventListener("error",this.onError,!1),e.addEventListener("loadstart",this.onStart,!1),e.addEventListener("abort",this.onAbort,!1),e.upload.addEventListener("progress",this.onProgress,!1),e.addEventListener("progress",this.onProgress,!1),e.addEventListener("timeout",this.onError,!1))}},{key:"_send",value:function(){var t;this.isPending=!0,"multipart"===this.sendAs?t=e.getFormData(this.params):"json"===this.sendAs&&(this._oXHR.setRequestHeader("content-type","application/json; charset=utf-8"),t=JSON.stringify(this.params)),this.token&&this._oXHR.setRequestHeader("Authorization","Bearer ".concat(this.token)),this._oXHR.send(t,this)}},{key:"_constructor",value:function(t,r){var n=this;t&&"object"===E(t)?(this.sendAs=t.sendAs||this.sendAs,this.url=t.url||this.url,this.port=t.port||this.port,this.params=t.params||this.params,this.timeout=t.timeout||this.timeout,this.responseType=t.responseType||this.responseType,this.onProgress=(t.onProgress||this.onProgress).bind(this),this.onStart=(t.onStart||this.onStart).bind(this),this.onAbort=(t.onAbort||this.onAbort).bind(this),this.onEnd=(t.onEnd||this.onEnd).bind(this),this.onError=(t.onError||this.onError).bind(this),this.token=t.token||this.token):t&&"string"==typeof t&&(this.url=t,this.params=r||this.params),80!==this.port&&(this.url="".concat(window.location.protocol,"//").concat(window.location.hostname,":").concat(this.port).concat(this.url)),this._deferred=new l,this._deferred.promise.finally((function(){n.isPending=!1})),this._oXHR=new XMLHttpRequest,this._oXHR.timeout=this.timeout,this._oXHR.responseType=this.responseType,this._isXhrResolved=!1,this._isXhrRejected=!1;var o=e._injectParamsInUrl(this.url,this.params),i=o.url,u=o.params;this.url=i,this.params=u,this._onEnd=function(t){var r=e.parseResult(n._oXHR);return n._oXHR.status>=400?(n._isXhrRejected=!0,n._onError(r),n._deferred.reject(r)):(n.onEnd(r,t),n._isXhrResolved=!0,n.removeEvents(),n.resolve(r))},this._setEvents(this._oXHR)}}],n=[{key:"parseResult",value:function(e){var t=e.response;try{var r=e.getResponseHeader("Content-Type");r&&r.toLowerCase().indexOf("json")>-1&&(t=JSON.parse(e.response))}catch(r){t=e.response}return t}},{key:"onBeforeSend",value:function(t){e.onBeforeSendList.push(t)}},{key:"new",value:function(t){return new e(t)}},{key:"stringifyUrl",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e._injectParamsInUrl(t,r);t=n.url,r=n.params;var o=t.indexOf("?")>-1?"&":"?",i="";return Object.getOwnPropertyNames(r).filter((function(e){return void 0!==r[e]})).forEach((function(e){i+="".concat(o).concat(e,"=").concat(encodeURIComponent(JSON.stringify(r[e]))),o="&"})),(t=t.replace(/\/:[^/]*/gi,""))+i}},{key:"getFormData",value:function(e){var t,r=new FormData;return Object.keys(e).forEach((function(n){if(e[n]instanceof FileList)for(var o=0;o<e[n].length;o+=1)r.append(n,e[n][o]);else e[n]instanceof File?r.append(n,e[n]):("object"!==E(t=e[n])&&!Array.isArray(t)||null===t||(t=JSON.stringify(t)),r.append(n,t))})),r}},{key:"_injectParamsInUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(t))return{url:e,params:t};var r={},n=decodeURIComponent(e),o=n.indexOf("?"),i=(!0).toString(),u=(!1).toString();o>-1&&(n.split("?")[1].split("&").reduce((function(e,t){var r=g(t.split("="),2),n=r[0],o=g(r[1].match(/^(?:"?([^"]+)"?)$/)||[],2)[1];if(o===i||o===u)e[n]=o===i;else{var a=Number(o);e[n]=""===o||Number.isNaN(a)?o:a}return e}),r),n=n.substring(0,o));var a=Object.getOwnPropertyNames(t).reduce((function(e,r){return e[r]=t[r],e}),b({},r));((n=n.replace(/#/,"%23")).match(/:[a-z0-9]+/gi)||[]).forEach((function(e){e=e.substring(1),void 0!==a[e]&&(n=n.replace(":".concat(e),null===a[e]||""===a[e]?"null":a[e]),delete a[e])})),Object.keys(a).forEach((function(e){void 0!==r[e]&&(r[e]=a[e],delete a[e])}));var s=Object.keys(r);if(s.length){var c="?";s.forEach((function(e){if(!0===r[e]||!1===r[e])n+="".concat(c).concat(e,"=").concat(r[e]);else if(null===r[e])n+="".concat(c).concat(e,"=").concat(r[e]);else{var t=Number(r[e]),o=Number.isNaN(t)?encodeURIComponent('"'.concat(r[e],'"')):t;n+="".concat(c).concat(e,"=").concat(o)}c="&"}))}return{url:n,params:a}}}],r&&j(t.prototype,r),n&&j(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){k(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function k(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}O(w,"onBeforeSendList",[]);var A=function(){},X=function(e){return(0,f.isRef)(e)?e.value:e};function H(e){var r=e||{onError:function(){},onStart:function(){},onEnd:function(){},context:null,legacy:!1,token:null},n=r.onError,o=r.onStart,i=r.onEnd,a=r.context,s=r.legacy,c=r.token,l=void 0===c?null:c,v=function(e){var t=X(l);return t?((0,f.isRef)(e)?e.value.token=t:e.token=t,e):e},d=(0,f.ref)([]);return s||(0,f.onBeforeUnmount)((function(){d.value.forEach((function(e){e.isPending&&e.abort()}))})),{get:function(e,r,s){var c=new w,v=(n||A).bind(a),h=(o||A).bind(a),p=(i||A).bind(a),y=[v],m=[h],b=[p],g=(0,f.ref)(null);d.value.push(c);var _,E,j=(0,f.ref)(),O=(0,f.ref)(),P="",k=0,H=(0,f.computed)((function(){var t,n={},o=(0,f.unref)(e);"string"==typeof o?t=o:(t=o.url,r||(r=o.params||{}),k=o.cacheDuration,void 0!==o.enabled&&(n.enabled=o.enabled),void 0===n.enabled&&(n.enabled=s),n.params=r,n.cacheDuration=k),l&&(n.token=X(l));var i=(0,f.unref)(n.params||r||{});return"function"==typeof i&&(i=i()),n.params=R(R({},i),(0,f.isRef)(r)?r.value||{}:r),P="function"==typeof t?t(n.params):(0,f.unref)(t),n.url=P,n})),x=void 0!==H.value.enabled?H.value.enabled:s;_=void 0===x?(0,f.ref)(!0):(0,f.isRef)(x)?x:"function"==typeof x?(0,f.ref)(x()):(0,f.ref)(!0===x);var T=(0,f.ref)(),L=function(){j.value&&c.abort();var e="object"===S(H.value.params)?H.value.params:{};m.forEach((function(t){return t(e,c)})),j.value=!0,g.value=null,E&&u(E),E=decodeURIComponent(w.stringifyUrl(String(P),e)),T.value=t({id:E,xhr:c.get.bind(c,H.value),duration:k}),T.value.then((function(e){O.value=e}),(function(e){y.forEach((function(t){return t(e,c)})),g.value=e})),T.value.finally((function(){var t;(t=d.value.indexOf(c))>-1&&d.value.splice(t,1),j.value=!1,b.forEach((function(t){return t(O.value,e,c)}))}))};return(0,f.watch)((function(){return H.value}),(function(){_.value&&L()}),{immediate:_.value}),(0,f.watch)((function(){return _.value}),(function(e){!j.value&&e&&L()}),{immediate:!1}),{isPending:(0,f.computed)((function(){return j.value})),data:O,onError:function(e){return y.push(e)},onStart:function(e){return m.push(e)},onEnd:function(e){return b.push(e)},error:g,abort:function(){var e;return null===(e=T.value)||void 0===e?void 0:e.abortXhr()},promise:(0,f.computed)((function(){return T.value||new Promise((function(){}))})),reload:L,xhr:c}},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new w;return R(R({},h((function(){return r.post(e||{})}),v(t))),{},{xhr:r})},put:function(e,t){var r=new w;return R(R({},h((function(){return r.put(e||{})}),v(t||{}))),{},{xhr:r})},delete:function(e,t){var r=new w;return R(R({},h((function(){return r.delete(e||{})}),v(t||{}))),{},{xhr:r})}}}function x(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=(0,f.ref)(!1);return(0,f.watch)((function(){return e.value}),(function(){n.value&&!e.value?(t&&clearTimeout(t),t=setTimeout((function(){n.value=!0===e.value}),r)):n.value=!0===e.value}),{immediate:!0}),(0,f.computed)((function(){return n.value}))}})(),o})()));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("vue"));else if("function"==typeof define&&define.amd)define(["vue"],t);else{var r="object"==typeof exports?t(require("vue")):t(e.vue);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(self,(e=>(()=>{"use strict";var t={748:t=>{t.exports=e}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.r(o),n.d(o,{Deferred:()=>l,Xhr:()=>w,cache:()=>t,cacheIds:()=>i,cacheSize:()=>r,clearCache:()=>u,useAsync:()=>h,useMutation:()=>p,useResult:()=>y,useSpinner:()=>x,useXhr:()=>H});var e=new Map;function t(t){var r,n,o=t||{},i=o.id,u=o.xhr,a="string"!=typeof t.duration&&t.duration||200;if("max"===t.duration&&(a=36e5),!e.get(i)&&u?(r=u(),e.set(i,r),r.then((function(t){return"[Log] add cache: ".concat(i),clearTimeout(n),n=window.setTimeout((function(){e.delete(i),"[Log] delete cache: ".concat(i),clearTimeout(n)}),a),t}),(function(){return e.delete(i),void"[Log] delete cache: ".concat(i)}))):i&&(r=e.get(i)),r)return r;throw Error("Call to undefined cache")}function r(){return e.size}function i(){return Array.from(e.keys())}function u(t){t?e.delete(t):e.forEach((function(e,t,r){r.delete(t)}))}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function s(e,t,r){return t&&a(e.prototype,t),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var l=s((function e(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"resolve",void 0),c(this,"reject",void 0),c(this,"promise",void 0),c(this,"done",!1),this.resolve=function(){throw Error("Can t resolve")},this.reject=function(){throw Error("Can t reject")},this.promise=new Promise((function(e,r){t.resolve=e,t.reject=r})),this.promise.finally((function(){t.done=!0}))})),f=n(748);function v(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function h(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,f.ref)(!0),n=(0,f.ref)(),o=(0,f.ref)(),i=(0,f.ref)(null),u=[],a=[],s=[],c=(0,f.ref)(null),l=(0,f.computed)((function(){return"function"==typeof t?t():(0,f.unref)(t)})),d=(0,f.ref)(),h=(0,f.computed)((function(){return"function"==typeof r?r():(0,f.unref)(r)})),p=function(t){a.forEach((function(e){return e(l.value)})),n.value=!0,i.value=null;var r=e,f=e;return c.value=Array.isArray(t)?f.apply(void 0,v(t)):r(t),c.value.catch((function(e){i.value=e||null,u.forEach((function(e){return e(i.value,l.value)})),i.value=e})),c.value.then((function(e){o.value=e,s.forEach((function(t){return t(e,l.value)}))})),c.value.finally((function(){n.value=!1})),c.value};return(0,f.watch)((function(){return h.value}),(function(e){!n.value&&e&&p(l.value)}),{immediate:!1}),(0,f.watch)((function(){return l.value}),(function(e){var t=JSON.stringify(e);!n.value&&(void 0===e&&void 0===d.value||h.value&&t!==JSON.stringify(d.value))&&p(e),d.value=void 0===t?void 0:JSON.parse(t)}),{immediate:h.value,deep:!0}),{isPending:n,data:o,error:i,reload:function(){return p(l.value)},onError:function(e){return u.push(e)},onStart:function(e){return a.push(e)},onEnd:function(e){return s.push(e)},promise:(0,f.computed)((function(){return c.value}))}}function p(e){var t=(0,f.ref)(),r=(0,f.ref)(),n=(0,f.ref)(),o=[],i=[],u=(0,f.ref)(null);return{mutate:function(a){for(var s=arguments.length,c=new Array(s>1?s-1:0),l=1;l<s;l++)c[l-1]=arguments[l];t.value=!0,n.value=null;var f=e;return u.value=f.apply(void 0,[a].concat(c)),u.value.then((function(e){r.value=e,i.forEach((function(e){return e(r.value,c.length?[a].concat(c):a)}))}),(function(e){n.value=e||null,o.forEach((function(e){return e(n.value,c.length?[a].concat(c):a)})),n.value=e})),u.value.finally((function(){t.value=!1})),u.value},onError:function(e){return o.push(e)},onEnd:function(e){return i.push(e)},isPending:t,error:n,data:r,promise:(0,f.computed)((function(){return u.value}))}}function y(e,t,r){var n=(0,f.ref)(t);return r||(r=function(e){return e}),t&&(n.value=r(t)),(0,f.watchEffect)((function(){if(e){var t,o=(0,f.unref)(e);o&&(n.value=null===(t=r)||void 0===t?void 0:t(o))}})),n}function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){O(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],u=!0,a=!1;try{for(r=r.call(e);!(u=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==r.return||r.return()}finally{if(a)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function j(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function O(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var w=function(){function e(t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),O(this,"onError",(function(){})),O(this,"onStart",(function(){})),O(this,"onAbort",(function(){})),O(this,"onProgress",(function(){})),O(this,"onEnd",(function(){})),O(this,"token",null),O(this,"url",""),O(this,"params",{}),O(this,"sendAs","json"),O(this,"timeout",1e4),O(this,"port",80),O(this,"responseType","text"),O(this,"isPending",!1),O(this,"_eventsReady",void 0),O(this,"_oXHR",void 0),O(this,"_onEnd",void 0),O(this,"_deferred",void 0),O(this,"_isXhrResolved",void 0),O(this,"_isXhrRejected",void 0),O(this,"_eventReady",void 0),this._eventsReady=!1,this._constructor(t||{},r)}var t,r,n;return t=e,r=[{key:"_onError",value:function(e){this.onError(e),this._deferred.reject(e)}},{key:"_getUrl",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.onBeforeSendList.reduce((function(e,t){return t(e||{})}),t);return e.stringifyUrl(this.url,r)}},{key:"removeEvents",value:function(){var e=this,t=function(){e._oXHR.removeEventListener("load",e._onEnd,!1),e._oXHR.removeEventListener("error",e.onError,!1),e._oXHR.removeEventListener("loadstart",e.onStart,!1),e._oXHR.removeEventListener("abort",e.onAbort,!1),e._oXHR.upload.removeEventListener("progress",e.onProgress,!1),e._oXHR.removeEventListener("progress",e.onProgress,!1),e._oXHR.removeEventListener("timeout",e.onError,!1)};this._deferred.promise.then(t,t)}},{key:"post",value:function(e){return this._constructor(e),this._oXHR.open("POST",this._getUrl(),!0),this._send(),this._deferred.promise}},{key:"put",value:function(e){return this._constructor(e),this._oXHR.open("PUT",this._getUrl(),!0),this._send(),this._deferred.promise}},{key:"get",value:function(e){this._constructor(e||{}),this._oXHR.open("GET",this._getUrl("multipart"===this.sendAs?{}:this.params),!0),this._send();var t=this._deferred.promise;return t.abortXhr=this.abort.bind(this),t}},{key:"delete",value:function(e){return this._constructor(e),this._oXHR.open("DELETE",this._getUrl(this.params),!0),this._send(),this._deferred.promise}},{key:"abort",value:function(){return this._isXhrResolved&&!this._isXhrRejected||(this._oXHR.abort(null,this),this._isXhrRejected=!0,this._deferred.reject({error:"Xhr aborted: ".concat(this.url),code:"HTTP-ABORTED"})),this._deferred.promise}},{key:"resolve",value:function(e){return this._deferred.resolve(e),this._deferred.promise}},{key:"reject",value:function(e){return this._deferred.reject(e),this._deferred.promise}},{key:"_setEvents",value:function(e){this._eventsReady||(this._eventReady=!0,e.addEventListener("load",this._onEnd,!1),e.addEventListener("error",this.onError,!1),e.addEventListener("loadstart",this.onStart,!1),e.addEventListener("abort",this.onAbort,!1),e.upload.addEventListener("progress",this.onProgress,!1),e.addEventListener("progress",this.onProgress,!1),e.addEventListener("timeout",this.onError,!1))}},{key:"_send",value:function(){var t;this.isPending=!0,"multipart"===this.sendAs?t=e.getFormData(this.params):"json"===this.sendAs&&(this._oXHR.setRequestHeader("content-type","application/json; charset=utf-8"),t=JSON.stringify(this.params)),this.token&&this._oXHR.setRequestHeader("Authorization","Bearer ".concat(this.token)),this._oXHR.send(t,this)}},{key:"_constructor",value:function(t,r){var n=this;t&&"object"===E(t)?(this.sendAs=t.sendAs||this.sendAs,this.url=t.url||this.url,this.port=t.port||this.port,this.params=t.params||this.params,this.timeout=t.timeout||this.timeout,this.responseType=t.responseType||this.responseType,this.onProgress=(t.onProgress||this.onProgress).bind(this),this.onStart=(t.onStart||this.onStart).bind(this),this.onAbort=(t.onAbort||this.onAbort).bind(this),this.onEnd=(t.onEnd||this.onEnd).bind(this),this.onError=(t.onError||this.onError).bind(this),this.token=t.token||this.token):t&&"string"==typeof t&&(this.url=t,this.params=r||this.params),80!==this.port&&(this.url="".concat(window.location.protocol,"//").concat(window.location.hostname,":").concat(this.port).concat(this.url)),this._deferred=new l,this._deferred.promise.finally((function(){n.isPending=!1})),this._oXHR=new XMLHttpRequest,this._oXHR.timeout=this.timeout,this._oXHR.responseType=this.responseType,this._isXhrResolved=!1,this._isXhrRejected=!1;var o=e._injectParamsInUrl(this.url,this.params),i=o.url,u=o.params;this.url=i,this.params=u,this._onEnd=function(t){var r=e.parseResult(n._oXHR);return n._oXHR.status>=400?(n._isXhrRejected=!0,n._onError(r),n._deferred.reject(r)):(n.onEnd(r,t),n._isXhrResolved=!0,n.removeEvents(),n.resolve(r))},this._setEvents(this._oXHR)}}],n=[{key:"parseResult",value:function(e){var t=e.response;try{var r=e.getResponseHeader("Content-Type");r&&r.toLowerCase().indexOf("json")>-1&&(t=JSON.parse(e.response))}catch(r){t=e.response}return t}},{key:"onBeforeSend",value:function(t){e.onBeforeSendList.push(t)}},{key:"new",value:function(t){return new e(t)}},{key:"stringifyUrl",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e._injectParamsInUrl(t,r);t=n.url,r=n.params;var o=t.indexOf("?")>-1?"&":"?",i="";return Object.getOwnPropertyNames(r).filter((function(e){return void 0!==r[e]})).forEach((function(e){i+="".concat(o).concat(e,"=").concat(encodeURIComponent(JSON.stringify(r[e]))),o="&"})),(t=t.replace(/\/:[^/]*/gi,""))+i}},{key:"getFormData",value:function(e){var t,r=new FormData;return Object.keys(e).forEach((function(n){if(e[n]instanceof FileList)for(var o=0;o<e[n].length;o+=1)r.append(n,e[n][o]);else e[n]instanceof File?r.append(n,e[n]):("object"!==E(t=e[n])&&!Array.isArray(t)||null===t||(t=JSON.stringify(t)),r.append(n,t))})),r}},{key:"_injectParamsInUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(t))return{url:e,params:t};var r={},n=decodeURIComponent(e),o=n.indexOf("?"),i=(!0).toString(),u=(!1).toString();o>-1&&(n.split("?")[1].split("&").reduce((function(e,t){var r=g(t.split("="),2),n=r[0],o=g(r[1].match(/^(?:"?([^"]+)"?)$/)||[],2)[1];if(o===i||o===u)e[n]=o===i;else{var a=Number(o);e[n]=""===o||Number.isNaN(a)?o:a}return e}),r),n=n.substring(0,o));var a=Object.getOwnPropertyNames(t).reduce((function(e,r){return e[r]=t[r],e}),b({},r));((n=n.replace(/#/,"%23")).match(/:[a-z0-9]+/gi)||[]).forEach((function(e){e=e.substring(1),void 0!==a[e]&&(n=n.replace(":".concat(e),null===a[e]||""===a[e]?"null":a[e]),delete a[e])})),Object.keys(a).forEach((function(e){void 0!==r[e]&&(r[e]=a[e],delete a[e])}));var s=Object.keys(r);if(s.length){var c="?";s.forEach((function(e){if(!0===r[e]||!1===r[e])n+="".concat(c).concat(e,"=").concat(r[e]);else if(null===r[e])n+="".concat(c).concat(e,"=").concat(r[e]);else{var t=Number(r[e]),o=Number.isNaN(t)?encodeURIComponent('"'.concat(r[e],'"')):t;n+="".concat(c).concat(e,"=").concat(o)}c="&"}))}return{url:n,params:a}}}],r&&j(t.prototype,r),n&&j(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){k(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function k(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}O(w,"onBeforeSendList",[]);var A=function(){},X=function(e){return(0,f.isRef)(e)?e.value:e};function H(e){var r=e||{onError:function(){},onStart:function(){},onEnd:function(){},context:null,legacy:!1,token:null},n=r.onError,o=r.onStart,i=r.onEnd,a=r.context,s=r.legacy,c=r.token,l=void 0===c?null:c,v=function(e){var t=X(l);return t?((0,f.isRef)(e)?e.value.token=t:e.token=t,e):e},d=(0,f.ref)([]);return s||(0,f.onBeforeUnmount)((function(){d.value.forEach((function(e){e.isPending&&e.abort()}))})),{get:function(e,r,s){var c=new w,v=(n||A).bind(a),h=(o||A).bind(a),p=(i||A).bind(a),y=[v],m=[h],b=[p],g=(0,f.ref)(null);d.value.push(c);var _,E,j=(0,f.ref)(),O=(0,f.ref)(),P="",k=0,H=(0,f.computed)((function(){var t,n={},o=(0,f.unref)(e);"string"==typeof o?t=o:(t=o.url,r||(r=o.params||{}),k=o.cacheDuration,void 0!==o.enabled&&(n.enabled=o.enabled),void 0===n.enabled&&(n.enabled=s),n.params=r,n.cacheDuration=k),l&&(n.token=X(l));var i=(0,f.unref)(n.params||r||{});return"function"==typeof i&&(i=i()),n.params=R(R({},i),(0,f.isRef)(r)?r.value||{}:r),P="function"==typeof t?t(n.params):(0,f.unref)(t),n.url=P,n})),x=void 0!==H.value.enabled?H.value.enabled:s;_=void 0===x?(0,f.ref)(!0):(0,f.isRef)(x)?x:"function"==typeof x?(0,f.ref)(x()):(0,f.ref)(!0===x);var T=(0,f.ref)(),L=function(){j.value&&c.abort();var e="object"===S(H.value.params)?H.value.params:{};m.forEach((function(t){return t(e,c)})),j.value=!0,g.value=null,E&&u(E),E=decodeURIComponent(w.stringifyUrl(String(P),e)),T.value=t({id:E,xhr:c.get.bind(c,H.value),duration:k}),T.value.then((function(e){O.value=e}),(function(e){y.forEach((function(t){return t(e,c)})),g.value=e})),T.value.finally((function(){var t;(t=d.value.indexOf(c))>-1&&d.value.splice(t,1),j.value=!1,b.forEach((function(t){return t(O.value,e,c)}))}))};return(0,f.watch)((function(){return H.value}),(function(){_.value&&L()}),{immediate:_.value}),(0,f.watch)((function(){return _.value}),(function(e){!j.value&&e&&L()}),{immediate:!1}),{isPending:(0,f.computed)((function(){return j.value})),data:O,onError:function(e){return y.push(e)},onStart:function(e){return m.push(e)},onEnd:function(e){return b.push(e)},error:g,abort:function(){var e;return null===(e=T.value)||void 0===e?void 0:e.abortXhr()},promise:(0,f.computed)((function(){return T.value||new Promise((function(){}))})),reload:L,xhr:c}},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new w;return R(R({},h((function(){return r.post(e||{})}),v(t))),{},{xhr:r})},put:function(e,t){var r=new w;return R(R({},h((function(){return r.put(e||{})}),v(t||{}))),{},{xhr:r})},delete:function(e,t){var r=new w;return R(R({},h((function(){return r.delete(e||{})}),v(t||{}))),{},{xhr:r})}}}function x(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=(0,f.ref)(!1);return(0,f.watch)((function(){return e.value}),(function(){n.value&&!e.value?(t&&clearTimeout(t),t=setTimeout((function(){n.value=!0===e.value}),r)):n.value=!0===e.value}),{immediate:!0}),(0,f.computed)((function(){return n.value}))}})(),o})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-use-async",
3
- "version": "1.2.2",
3
+ "version": "1.4.0",
4
4
  "description": "Xhr and async helpers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,23 +30,24 @@
30
30
  },
31
31
  "devDependencies": {
32
32
  "@babel/plugin-proposal-class-properties": "^7.16.7",
33
- "@babel/preset-env": "^7.16.11",
33
+ "@babel/preset-env": "^7.17.10",
34
34
  "@babel/preset-typescript": "^7.16.7",
35
- "@types/jest": "^27.4.1",
36
- "@typescript-eslint/eslint-plugin": "^5.19.0",
37
- "@typescript-eslint/parser": "^5.19.0",
35
+ "@types/jest": "^27.5.0",
36
+ "@typescript-eslint/eslint-plugin": "^5.22.0",
37
+ "@typescript-eslint/parser": "^5.22.0",
38
38
  "babel-eslint": "^10.1.0",
39
- "babel-jest": "^27.5.1",
40
- "babel-loader": "^8.2.4",
39
+ "babel-jest": "^28.0.3",
40
+ "babel-loader": "^8.2.5",
41
41
  "babel-plugin-module-resolver": "^4.1.0",
42
- "eslint": "^8.13.0",
42
+ "eslint": "^8.14.0",
43
43
  "eslint-config-airbnb-base": "^15.0.0",
44
44
  "eslint-import-resolver-typescript": "^2.7.1",
45
45
  "eslint-plugin-import": "^2.26.0",
46
46
  "husky": "^7.0.4",
47
- "jest": "^27.5.1",
48
- "lint-staged": "^12.3.7",
49
- "typescript": "^4.6.3",
47
+ "jest": "^28.0.3",
48
+ "jest-environment-jsdom": "^28.0.2",
49
+ "lint-staged": "^12.4.1",
50
+ "typescript": "^4.6.4",
50
51
  "vue": "^3.2.33",
51
52
  "webpack": "^5.72.0",
52
53
  "webpack-cli": "^4.9.2"