UNPKG

svelte-statusable

Version:

Super tiny, simple to use SvelteJS store to control your application status.

3 lines (2 loc) 3.56 kB
var statusable=function(e){"use strict";function n(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function t(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(n){r(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))}))}return e}function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function i(){}Promise.resolve();const u=[];function c(e,n=i){let t;const r=new Set;function o(n){if(i=n,((o=e)!=o?i==i:o!==i||o&&"object"==typeof o||"function"==typeof o)&&(e=n,t)){const n=!u.length;for(const n of r)n[1](),u.push(n,e);if(n){for(let e=0;e<u.length;e+=2)u[e][0](u[e+1]);u.length=0}}var o,i}return{set:o,update:function(n){o(n(e))},subscribe:function(u,c=i){const a=[u,c];return r.add(a),1===r.size&&(t=n(o)||i),u(e),()=>{r.delete(a),0===r.size&&(t(),t=null)}}}}var a=["url","abort","payload","retry"],f="undefined"!=typeof window,s="undefined"!=typeof navigator,d="undefined"!=typeof document,l="undefined"!=typeof EventSource,v="undefined"!=typeof AbortController;return e.statusable=function(e){var n=e.ping,i=e.sse,u={online:!s||navigator.onLine,hidden:!!d&&document.hidden,heartbeat:!f,stream:!f};return"string"==typeof n&&(n={url:n,method:"HEAD",cache:"no-cache",credentials:"omit",referrerPolicy:"no-referrer"}),"string"==typeof i&&(i={url:i,withCredentials:!1}),function(e,n){return{subscribe:c(e,n).subscribe}}(u,(function(e){var c,b;if(f&&s&&d)return i&&l&&((c=new EventSource(i.url,{withCredentials:i.withCredentials})).addEventListener("open",w),c.addEventListener("error",w),i.event&&c.addEventListener(i.event,w),p("stream",c.readyState===EventSource.OPEN)),n&&(b=function(e,n){return e(),setInterval(e,n)}((function(){!document.hidden&&navigator.onLine&&function(e){var n=e.url,t=e.abort,r=void 0===t?0:t,i=e.payload,u=void 0!==i&&i;e.retry;var c=o(e,a);if(r&&v){var f=new AbortController;c.signal=f.signal,setTimeout((function(){return f.abort()}),r)}return fetch(n,c).then((function(e){return u?e.json():"opaque"===e.type||e.ok})).catch((function(){return!1}))}(n).then((function(e){return p("heartbeat",e)}))}),n.retry||1e4)),window.addEventListener("online",y),window.addEventListener("offline",y),window.addEventListener("visibilitychange",h),function(){window.removeEventListener("online",y),window.removeEventListener("offline",y),window.removeEventListener("visibilitychange",h),c&&(c.removeEventListener("open",w),c.removeEventListener("error",w),i.event&&c.removeEventListener(i.event,w)),clearInterval(b)};function p(n,o){u[n]!==o&&e(u=t(t({},u),{},r({},n,o)))}function y(){p("online",navigator.onLine)}function h(){p("hidden",document.hidden)}function w(e){p("stream",e.target.readyState===EventSource.OPEN)}}))},Object.defineProperty(e,"__esModule",{value:!0}),e}({}); //# sourceMappingURL=statusable.min.js.map