You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP

vue-composable

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-composable - npm Package Compare versions

Comparing version

to
1.0.0-alpha.7

@@ -14,2 +14,3 @@ var vueComposable = (function (exports, runtimeCore) {

const isSymbol = (val) => typeof val === "symbol";
const isBoolean = (val) => typeof val === "boolean";
const isDate = (val) => isObject(val) && isFunction(val.getTime);

@@ -22,2 +23,4 @@ const isNumber = (val) => typeof val === "number";

}
const NO_OP = () => { };
const FALSE_OP = () => false;
function promisedTimeout(timeout) {

@@ -51,2 +54,3 @@ return new Promise(res => {

result.value = null;
let throwExp = args && fn.length !== args.length && args.length > 0 && isBoolean(args[args.length - 1]) ? args[args.length - 1] : throwException;
const currentPromise = (promise.value = fn(...args));

@@ -65,3 +69,3 @@ try {

}
return throwException ? currentPromise : undefined;
return throwExp ? currentPromise : undefined;
}

@@ -83,3 +87,3 @@ finally {

function useCancellablePromise(fn) {
function useCancellablePromise(fn, throwException = false) {
const cancelled = runtimeCore.ref(false);

@@ -95,3 +99,3 @@ let _cancel = undefined;

});
const use = usePromise((...args) => promise(fn(...args)));
const use = usePromise((...args) => promise(fn(...args)), throwException);
return {

@@ -738,5 +742,8 @@ ...use,

exports.FALSE_OP = FALSE_OP;
exports.NO_OP = NO_OP;
exports.debounce = debounce;
exports.exponentialDelay = exponentialDelay;
exports.isArray = isArray;
exports.isBoolean = isBoolean;
exports.isDate = isDate;

@@ -774,2 +781,2 @@ exports.isElement = isElement;

}({}, runtimeCore));
}({}, VueRuntimeCore));

@@ -1,1 +0,1 @@

var vueComposable=function(e,t){"use strict";function n(e){return t.isRef(e)?e.value:e}function r(e){return t.isRef(e)?e:t.ref(e)}const o=Array.isArray,u=e=>"function"==typeof e,a=e=>s(e)&&u(e.getTime),l=e=>"number"==typeof e,s=e=>null!==e&&"object"==typeof e,i=e=>s(e)&&!!e.tagName;function v(e){return s(e)&&u(e.then)&&u(e.catch)}function c(e){return new Promise(t=>{setTimeout(t,e)})}function f(e,t,n){return e<t?t:e>n?n:e}function d(e,n=!1){if(!e)throw new Error(`[usePromise] argument can't be '${e}'`);if("function"!=typeof e)throw new Error(`[usePromise] expects function, but received ${typeof e}`);const r=t.ref(!1),o=t.ref(null),u=t.ref(null),a=t.ref();return{exec:async(...t)=>{r.value=!0,o.value=null,u.value=null;const l=a.value=e(...t);try{const e=await l;return a.value===l&&(u.value=e),e}catch(e){return a.value===l&&(o.value=e,u.value=null),n?l:void 0}finally{a.value===l&&(r.value=!1)}},result:u,promise:a,loading:r,error:o}}const m=Symbol("RetryId"),y=Symbol("CancellationToken"),p=async(e,t,n,r)=>{const o=t[m].value;let u=-1;const s=e.maxRetries||9001,i=e.retryDelay||g;t.retryErrors.value=[],t.isRetrying.value=!1,t.nextRetry.value=void 0;let f=void 0;do{let e=!1,d=null;try{if(++u,d=r?n(...r):n(),v(d)&&(d=await d),t[y].value)return null;e=!0}catch(e){d=null,t.retryErrors.value.push(e)}if(o!==t[m].value)return d;if(e)return t.isRetrying.value=!1,t.nextRetry.value=void 0,d;if(u>=s)return t.isRetrying.value=!1,t.nextRetry.value=void 0,Promise.reject(new Error(`[useRetry] max retries reached ${s}`));t.isRetrying.value=!0;const p=Date.now(),g=i(u),h=v(g)?await g:g;if(!v(g)||h){if(l(h))f=h;else{if(!a(h))throw new Error(`[useRetry] invalid value received from options.retryDelay '${typeof h}'`);f=h.getTime()}f<p?t.nextRetry.value=p+f:(t.nextRetry.value=f,f-=p),f>0&&await c(f)}if(t[y].value)return null;if(o!==t[m].value)return d}while(u<9e3);return null};const g=()=>0;function h(e,t,n){return w(e,t,n)}function w(e,t=50,n={isImmediate:!1}){let r;return function(...o){const u=this,a=n.isImmediate&&void 0===r;void 0!==r&&clearTimeout(r),r=setTimeout((function(){r=void 0,n.isImmediate||e.apply(u,o)}),t),a&&e.apply(u,o)}}function b(e){const n=r(e.currentPage),o=r(e.pageSize),u=t.ref(0),a=r(e.total),l=t.computed({get:()=>u.value,set(e){"number"==typeof e?u.value=Math.min(e,a.value):console.warn(`[offset] expected number but got: '${typeof e}' value: '${e}'`)}}),s=t.computed({get:()=>n.value,set(e){"number"==typeof e?(n.value=f(e,1,v.value),l.value=(n.value-1)*i.value):console.warn(`[currentPage] expected number but got: '${typeof e}' value: '${e}'`)}}),i=t.computed({get:()=>o.value,set(e){"number"==typeof e?o.value=e:console.warn(`[pageSize] expected number but got: '${typeof e}' value: '${e}'`)}}),v=t.computed(()=>Math.ceil(a.value/i.value));s.value=n.value;return t.watch([a,i],()=>{s.value>v.value&&(s.value=v.value)},{lazy:!0}),{pageSize:i,total:a,currentPage:s,offset:l,lastPage:v,next:()=>++s.value,prev:()=>--s.value,first:()=>s.value=1,last:()=>s.value=v.value}}function E(e,n,o,u){const a=r(e),l=()=>a.value.removeEventListener(n,o);return t.onMounted(()=>a.value.addEventListener(n,o,u)),t.onUnmounted(l),l}function R(e){const n=t.ref(matchMedia(e)),r=t.ref(n.value.matches),o=e=>{r.value=e.matches};n.value.addEventListener("change",o,{passive:!0});const u=()=>n.value.removeEventListener("change",o);return t.onUnmounted(u),{mediaQueryList:n,remove:u,matches:r}}const x=new Map,S=new WeakMap;return e.debounce=w,e.exponentialDelay=e=>{const t=100*Math.pow(2,e);return t+.2*t*Math.random()},e.isArray=o,e.isDate=a,e.isElement=i,e.isFunction=u,e.isNumber=l,e.isObject=s,e.isPromise=v,e.isString=e=>"string"==typeof e,e.isSymbol=e=>"symbol"==typeof e,e.minMax=f,e.noDelay=g,e.promisedTimeout=c,e.unwrap=n,e.useArrayPagination=function(e,n){const o=r(e),u=b({currentPage:1,pageSize:10,...n,total:t.computed(()=>o.value.length)}),a=t.computed(()=>{const e=o.value;return Array.isArray(e)?e.slice(u.offset.value,u.offset.value+u.pageSize.value):[]});return{...u,result:a}},e.useBreakpoint=function(e){const n={},r=new Map,o=t.ref();let u=[];const a=[];for(const o in e){const s=e[o];if(l(s)){const e=t.ref(!1);n[o]=e,r.set(s,{name:o,valid:e}),u.push(s)}else{const{matches:e,remove:t}=R(s);n[o]=e,a.push(t)}}u=u.sort((e,t)=>t-e);const s=()=>{const e=window.innerWidth;let t=void 0;for(let n=0;n<u.length;n++){const o=u[n],a=r.get(o);a.valid.value=e>=o,e>=o&&void 0===t&&(t=a.name)}o.value=t},i=h(s,10),v=()=>window.removeEventListener("resize",i);return t.onMounted(()=>{s(),window.addEventListener("resize",i,{passive:!0})}),t.onUnmounted(()=>{v(),a.forEach(e=>e())}),{...n,remove:v,current:o}},e.useCancellablePromise=function(e){const n=t.ref(!1);let r=void 0;return{...d((...t)=>(e=>new Promise((t,o)=>{r=e=>{n.value=!0,o(e)},e.then(t).catch(o)}))(e(...t))),cancel:e=>r(e),cancelled:n}},e.useDebounce=h,e.useEvent=E,e.useFetch=function(e){const n=t.ref(null),r=t.ref(null),o=!e||!1!==e.isJson,u=!e||!1!==e.parseImmediate,a=d(async(e,t)=>{const a=await fetch(e,t);if(o){const e=a.json().then(e=>n.value=e).catch(e=>{n.value=null,r.value=e});u&&await e}return a}),l=t.computed(()=>a.result.value&&a.result.value.status||null),s=t.computed(()=>a.result.value&&a.result.value.statusText||null);return{...a,json:n,jsonError:r,status:l,statusText:s}},e.useIntersectionObserver=function(e,o){const u=e?r(e):void 0,a=!u||!i(u.value)&&u.value?void 0:u,l=t.computed(()=>o?n(o):a?void 0:n(e)),s=t.ref(),v=t.computed(()=>s.value.length>0&&s.value.every(e=>e.isIntersecting)),c=e=>{s.value=e};let f=t.ref();t.watch(l,e=>{f.value&&f.value.disconnect();const t=e&&e&&{root:n(e.root),rootMargin:n(e.rootMargin),threshold:n(e.threshold)}||void 0;f.value=new IntersectionObserver(c,t),s.value.map(e=>e.target).forEach(f.value.observe)},{deep:!0});const d=e=>{const t=n(e);f.value.observe(t)},m=()=>f.value.disconnect();return a&&(a.value||t.onMounted(()=>{a.value&&d(a)}),t.onUnmounted(()=>{m()})),{elements:s,observe:d,unobserve:e=>{const t=n(e);f.value.unobserve(t)},disconnect:m,isIntersecting:v}},e.useLocalStorage=function(e,n){let o=!1,u=x.get(e);const a=localStorage.getItem(e),l=u&&S.get(u)||!!n&&r(n)||t.ref(null);if(a&&!u)try{l.value=JSON.parse(a),o=!1}catch(t){console.warn("[useLocalStorage] error parsing value from localStorage",e,t)}return u||(u={},x.set(e,u),S.set(u,l),t.watch(l,t=>{void 0!==t?w(()=>localStorage.setItem(e,JSON.stringify(t)),100)():localStorage.removeItem(e)},{deep:!0,lazy:o})),{storage:l,clear:()=>{x.forEach(e=>{const t=S.get(e);t&&(t.value=void 0),S.delete(e)}),x.clear()},remove:()=>{x.delete(e),S.delete(u),l.value=void 0}}},e.useMatchMedia=R,e.useOnMouseMove=function(e,n,r){const o=t.ref(0),u=t.ref(0);let a=e=>{o.value=e.x,u.value=e.y};const l="number"==typeof n?void 0:n;("number"==typeof n?n:r)&&(a=h(a,r));const s=E(e,"mousemove",a,l);return{mouseX:o,mouseY:u,remove:s}},e.useOnResize=function(e,n,o){const u=r(e),a=t.ref(u.value&&u.value.clientHeight),l=t.ref(u.value&&u.value.clientWidth);let s=()=>{a.value=u.value.clientHeight,l.value=u.value.clientWidth};const i="number"==typeof n?void 0:n;("number"==typeof n?n:o)&&(s=h(s,o));const v=E(window,"resize",s,i||{passive:!0});return{height:a,width:l,remove:v}},e.useOnScroll=function(e,n,o){const u=r(e),a=t.ref(u.value&&u.value.scrollTop),l=t.ref(u.value&&u.value.scrollLeft);let s=e=>{a.value=u.value.scrollTop,l.value=u.value.scrollLeft};const i="number"==typeof n?void 0:n;("number"==typeof n?n:o)&&(s=h(s,o));const v=E(u,"scroll",s,i);return{scrollTop:a,scrollLeft:l,remove:v}},e.usePagination=b,e.usePromise=d,e.useRetry=function(e,n){const r=!e||u(e)?{}:e,o=u(e)?e:n;if(!u(e)&&!s(e))throw new Error("[useRetry] options needs to be 'object'");if(o&&!u(o))throw new Error("[useRetry] factory needs to be 'function'");const a=t.ref(!1),l=t.ref(),i=t.ref([]),v={value:!1},c={isRetrying:a,retryCount:t.computed(()=>i.value.length),nextRetry:l,retryErrors:i,[m]:{value:0},[y]:v},f=o?(...e)=>(++c[m].value,p(r,c,o,e)):e=>(++c[m].value,p(r,c,e,void 0));return{...c,cancel:()=>{c.isRetrying.value=!1,c.retryErrors.value.push(new Error("[useRetry] cancelled")),c.nextRetry.value=void 0,v.value=!0},exec:f}},e.useWebSocket=function(e,n){const r=new WebSocket(e,n),o=t.ref(),u=t.ref(),a=t.ref(null),l=t.ref(!1),s=t.ref(!1),i=t.ref(!1);let v=Date.now()||void 0;return r.addEventListener("message",e=>{o.value=e,a.value=e.data,Date.now()-v<2&&console.warn('[useWebSocket] message rate is too high, if you are using "data" or "messageEvent" you might not get updated of all the messages. Use "ws..addEventListener("message", handler)" instead'),v=Date.now()}),r.addEventListener("error",e=>{u.value=e,i.value=!0}),r.addEventListener("close",()=>{l.value=!1,s.value=!0}),r.addEventListener("open",()=>{l.value=!0,s.value=!1}),{ws:r,send:e=>r.send(e),close:(e,t)=>{r.close(e,t)},messageEvent:o,errorEvent:u,data:a,isOpen:l,isClosed:s,errored:i}},e.wrap=r,e}({},runtimeCore);
var vueComposable=function(e,t){"use strict";function n(e){return t.isRef(e)?e.value:e}function r(e){return t.isRef(e)?e:t.ref(e)}const o=Array.isArray,u=e=>"function"==typeof e,a=e=>"boolean"==typeof e,l=e=>i(e)&&u(e.getTime),s=e=>"number"==typeof e,i=e=>null!==e&&"object"==typeof e,v=e=>i(e)&&!!e.tagName;function c(e){return i(e)&&u(e.then)&&u(e.catch)}function f(e){return new Promise(t=>{setTimeout(t,e)})}function d(e,t,n){return e<t?t:e>n?n:e}function m(e,n=!1){if(!e)throw new Error(`[usePromise] argument can't be '${e}'`);if("function"!=typeof e)throw new Error(`[usePromise] expects function, but received ${typeof e}`);const r=t.ref(!1),o=t.ref(null),u=t.ref(null),l=t.ref();return{exec:async(...t)=>{r.value=!0,o.value=null,u.value=null;let s=t&&e.length!==t.length&&t.length>0&&a(t[t.length-1])?t[t.length-1]:n;const i=l.value=e(...t);try{const e=await i;return l.value===i&&(u.value=e),e}catch(e){return l.value===i&&(o.value=e,u.value=null),s?i:void 0}finally{l.value===i&&(r.value=!1)}},result:u,promise:l,loading:r,error:o}}const y=Symbol("RetryId"),p=Symbol("CancellationToken"),g=async(e,t,n,r)=>{const o=t[y].value;let u=-1;const a=e.maxRetries||9001,i=e.retryDelay||h;t.retryErrors.value=[],t.isRetrying.value=!1,t.nextRetry.value=void 0;let v=void 0;do{let e=!1,d=null;try{if(++u,d=r?n(...r):n(),c(d)&&(d=await d),t[p].value)return null;e=!0}catch(e){d=null,t.retryErrors.value.push(e)}if(o!==t[y].value)return d;if(e)return t.isRetrying.value=!1,t.nextRetry.value=void 0,d;if(u>=a)return t.isRetrying.value=!1,t.nextRetry.value=void 0,Promise.reject(new Error(`[useRetry] max retries reached ${a}`));t.isRetrying.value=!0;const m=Date.now(),g=i(u),h=c(g)?await g:g;if(!c(g)||h){if(s(h))v=h;else{if(!l(h))throw new Error(`[useRetry] invalid value received from options.retryDelay '${typeof h}'`);v=h.getTime()}v<m?t.nextRetry.value=m+v:(t.nextRetry.value=v,v-=m),v>0&&await f(v)}if(t[p].value)return null;if(o!==t[y].value)return d}while(u<9e3);return null};const h=()=>0;function w(e,t,n){return b(e,t,n)}function b(e,t=50,n={isImmediate:!1}){let r;return function(...o){const u=this,a=n.isImmediate&&void 0===r;void 0!==r&&clearTimeout(r),r=setTimeout((function(){r=void 0,n.isImmediate||e.apply(u,o)}),t),a&&e.apply(u,o)}}function E(e){const n=r(e.currentPage),o=r(e.pageSize),u=t.ref(0),a=r(e.total),l=t.computed({get:()=>u.value,set(e){"number"==typeof e?u.value=Math.min(e,a.value):console.warn(`[offset] expected number but got: '${typeof e}' value: '${e}'`)}}),s=t.computed({get:()=>n.value,set(e){"number"==typeof e?(n.value=d(e,1,v.value),l.value=(n.value-1)*i.value):console.warn(`[currentPage] expected number but got: '${typeof e}' value: '${e}'`)}}),i=t.computed({get:()=>o.value,set(e){"number"==typeof e?o.value=e:console.warn(`[pageSize] expected number but got: '${typeof e}' value: '${e}'`)}}),v=t.computed(()=>Math.ceil(a.value/i.value));s.value=n.value;return t.watch([a,i],()=>{s.value>v.value&&(s.value=v.value)},{lazy:!0}),{pageSize:i,total:a,currentPage:s,offset:l,lastPage:v,next:()=>++s.value,prev:()=>--s.value,first:()=>s.value=1,last:()=>s.value=v.value}}function R(e,n,o,u){const a=r(e),l=()=>a.value.removeEventListener(n,o);return t.onMounted(()=>a.value.addEventListener(n,o,u)),t.onUnmounted(l),l}function S(e){const n=t.ref(matchMedia(e)),r=t.ref(n.value.matches),o=e=>{r.value=e.matches};n.value.addEventListener("change",o,{passive:!0});const u=()=>n.value.removeEventListener("change",o);return t.onUnmounted(u),{mediaQueryList:n,remove:u,matches:r}}const x=new Map,L=new WeakMap;return e.FALSE_OP=()=>!1,e.NO_OP=()=>{},e.debounce=b,e.exponentialDelay=e=>{const t=100*Math.pow(2,e);return t+.2*t*Math.random()},e.isArray=o,e.isBoolean=a,e.isDate=l,e.isElement=v,e.isFunction=u,e.isNumber=s,e.isObject=i,e.isPromise=c,e.isString=e=>"string"==typeof e,e.isSymbol=e=>"symbol"==typeof e,e.minMax=d,e.noDelay=h,e.promisedTimeout=f,e.unwrap=n,e.useArrayPagination=function(e,n){const o=r(e),u=E({currentPage:1,pageSize:10,...n,total:t.computed(()=>o.value.length)}),a=t.computed(()=>{const e=o.value;return Array.isArray(e)?e.slice(u.offset.value,u.offset.value+u.pageSize.value):[]});return{...u,result:a}},e.useBreakpoint=function(e){const n={},r=new Map,o=t.ref();let u=[];const a=[];for(const o in e){const l=e[o];if(s(l)){const e=t.ref(!1);n[o]=e,r.set(l,{name:o,valid:e}),u.push(l)}else{const{matches:e,remove:t}=S(l);n[o]=e,a.push(t)}}u=u.sort((e,t)=>t-e);const l=()=>{const e=window.innerWidth;let t=void 0;for(let n=0;n<u.length;n++){const o=u[n],a=r.get(o);a.valid.value=e>=o,e>=o&&void 0===t&&(t=a.name)}o.value=t},i=w(l,10),v=()=>window.removeEventListener("resize",i);return t.onMounted(()=>{l(),window.addEventListener("resize",i,{passive:!0})}),t.onUnmounted(()=>{v(),a.forEach(e=>e())}),{...n,remove:v,current:o}},e.useCancellablePromise=function(e,n=!1){const r=t.ref(!1);let o=void 0;return{...m((...t)=>{return n=e(...t),new Promise((e,t)=>{o=e=>{r.value=!0,t(e)},n.then(e).catch(t)});var n},n),cancel:e=>o(e),cancelled:r}},e.useDebounce=w,e.useEvent=R,e.useFetch=function(e){const n=t.ref(null),r=t.ref(null),o=!e||!1!==e.isJson,u=!e||!1!==e.parseImmediate,a=m(async(e,t)=>{const a=await fetch(e,t);if(o){const e=a.json().then(e=>n.value=e).catch(e=>{n.value=null,r.value=e});u&&await e}return a}),l=t.computed(()=>a.result.value&&a.result.value.status||null),s=t.computed(()=>a.result.value&&a.result.value.statusText||null);return{...a,json:n,jsonError:r,status:l,statusText:s}},e.useIntersectionObserver=function(e,o){const u=e?r(e):void 0,a=!u||!v(u.value)&&u.value?void 0:u,l=t.computed(()=>o?n(o):a?void 0:n(e)),s=t.ref(),i=t.computed(()=>s.value.length>0&&s.value.every(e=>e.isIntersecting)),c=e=>{s.value=e};let f=t.ref();t.watch(l,e=>{f.value&&f.value.disconnect();const t=e&&e&&{root:n(e.root),rootMargin:n(e.rootMargin),threshold:n(e.threshold)}||void 0;f.value=new IntersectionObserver(c,t),s.value.map(e=>e.target).forEach(f.value.observe)},{deep:!0});const d=e=>{const t=n(e);f.value.observe(t)},m=()=>f.value.disconnect();return a&&(a.value||t.onMounted(()=>{a.value&&d(a)}),t.onUnmounted(()=>{m()})),{elements:s,observe:d,unobserve:e=>{const t=n(e);f.value.unobserve(t)},disconnect:m,isIntersecting:i}},e.useLocalStorage=function(e,n){let o=!1,u=x.get(e);const a=localStorage.getItem(e),l=u&&L.get(u)||!!n&&r(n)||t.ref(null);if(a&&!u)try{l.value=JSON.parse(a),o=!1}catch(t){console.warn("[useLocalStorage] error parsing value from localStorage",e,t)}return u||(u={},x.set(e,u),L.set(u,l),t.watch(l,t=>{void 0!==t?b(()=>localStorage.setItem(e,JSON.stringify(t)),100)():localStorage.removeItem(e)},{deep:!0,lazy:o})),{storage:l,clear:()=>{x.forEach(e=>{const t=L.get(e);t&&(t.value=void 0),L.delete(e)}),x.clear()},remove:()=>{x.delete(e),L.delete(u),l.value=void 0}}},e.useMatchMedia=S,e.useOnMouseMove=function(e,n,r){const o=t.ref(0),u=t.ref(0);let a=e=>{o.value=e.x,u.value=e.y};const l="number"==typeof n?void 0:n;("number"==typeof n?n:r)&&(a=w(a,r));const s=R(e,"mousemove",a,l);return{mouseX:o,mouseY:u,remove:s}},e.useOnResize=function(e,n,o){const u=r(e),a=t.ref(u.value&&u.value.clientHeight),l=t.ref(u.value&&u.value.clientWidth);let s=()=>{a.value=u.value.clientHeight,l.value=u.value.clientWidth};const i="number"==typeof n?void 0:n;("number"==typeof n?n:o)&&(s=w(s,o));const v=R(window,"resize",s,i||{passive:!0});return{height:a,width:l,remove:v}},e.useOnScroll=function(e,n,o){const u=r(e),a=t.ref(u.value&&u.value.scrollTop),l=t.ref(u.value&&u.value.scrollLeft);let s=e=>{a.value=u.value.scrollTop,l.value=u.value.scrollLeft};const i="number"==typeof n?void 0:n;("number"==typeof n?n:o)&&(s=w(s,o));const v=R(u,"scroll",s,i);return{scrollTop:a,scrollLeft:l,remove:v}},e.usePagination=E,e.usePromise=m,e.useRetry=function(e,n){const r=!e||u(e)?{}:e,o=u(e)?e:n;if(!u(e)&&!i(e))throw new Error("[useRetry] options needs to be 'object'");if(o&&!u(o))throw new Error("[useRetry] factory needs to be 'function'");const a=t.ref(!1),l=t.ref(),s=t.ref([]),v={value:!1},c={isRetrying:a,retryCount:t.computed(()=>s.value.length),nextRetry:l,retryErrors:s,[y]:{value:0},[p]:v},f=o?(...e)=>(++c[y].value,g(r,c,o,e)):e=>(++c[y].value,g(r,c,e,void 0));return{...c,cancel:()=>{c.isRetrying.value=!1,c.retryErrors.value.push(new Error("[useRetry] cancelled")),c.nextRetry.value=void 0,v.value=!0},exec:f}},e.useWebSocket=function(e,n){const r=new WebSocket(e,n),o=t.ref(),u=t.ref(),a=t.ref(null),l=t.ref(!1),s=t.ref(!1),i=t.ref(!1);let v=Date.now()||void 0;return r.addEventListener("message",e=>{o.value=e,a.value=e.data,Date.now()-v<2&&console.warn('[useWebSocket] message rate is too high, if you are using "data" or "messageEvent" you might not get updated of all the messages. Use "ws..addEventListener("message", handler)" instead'),v=Date.now()}),r.addEventListener("error",e=>{u.value=e,i.value=!0}),r.addEventListener("close",()=>{l.value=!1,s.value=!0}),r.addEventListener("open",()=>{l.value=!0,s.value=!1}),{ws:r,send:e=>r.send(e),close:(e,t)=>{r.close(e,t)},messageEvent:o,errorEvent:u,data:a,isOpen:l,isClosed:s,errored:i}},e.wrap=r,e}({},VueRuntimeCore);
{
"name": "vue-composable",
"version": "1.0.0-alpha.5",
"version": "1.0.0-alpha.7",
"description": "vue-composable",

@@ -19,4 +19,3 @@ "main": "index.js",

"cjs",
"global",
"esm"
"global"
]

@@ -41,8 +40,6 @@ },

"dependencies": {
"@vue-composable/core": "1.0.0-alpha.5",
"@vue-composable/web": "1.0.0-alpha.5"
},
"peerDependencies": {
"@vue/runtime-core": "^3.0.0-alpha.1"
"@vue-composable/core": "1.0.0-alpha.7",
"@vue-composable/web": "1.0.0-alpha.7",
"@vue/runtime-core": "^3.0.0-alpha.2"
}
}

@@ -19,2 +19,9 @@ # vue-composable

This library aim is to be one stop shop for many real-world composable functions, with aggressive tree-shaking to keep it light on your end code ([12kb gzip](https://app.circleci.com/jobs/github/pikax/vue-composable/318/parallel-runs/0/steps/0-105)).
[vue-composable](https://www.npmjs.com/package/vue-composable) is composed by two package [@vue-composable/core](./packages/core) and [@vue-composable/web](./packages/web).
- [@vue-composable/core](./packages/core): contains helpers composables, such as Promise and Pagination.
- [@vue-composable/web](./packages/web): contains [Web API](https://developer.mozilla.org/en-US/docs/Web/API) implementations
## Installing

@@ -44,6 +51,12 @@

- [localStorage](https://pikax.me/vue-composable/composable/misc/localStorage) - Reactive access to a `localStorage`
- [matchMedia](https://pikax.me/vue-composable/composable/misc/matchMedia) - Reactive `matchMedia`
- [breakpoint](https://pikax.me/vue-composable/composable/misc/breakpoint) - reactive `breakpoints` based on `window.innerWidth`
### Storage
- [WebStorage](https://pikax.me/vue-composable/composable/storage/webStorage) - Reactive access to `Storage API`, `useLocalStorage` and `useSessionStorage` use this
- [storage](https://pikax.me/vue-composable/composable/storage/storage) - uses `localStorage` or on safari private it uses `sessionStorage`
- [localStorage](https://pikax.me/vue-composable/composable/storage/localStorage) - Reactive access to a `localStorage`
- [sessionStorage](https://pikax.me/vue-composable/composable/storage/sessionStorage) - Reactive access to a `sessionStorage`
### Pagination

@@ -65,2 +78,6 @@

- [IntersectionObserver](https://pikax.me/vue-composable/composable/web/intersectionObserver) - reactive `IntersectionObserver`
- [NetworkInformation](https://pikax.me/vue-composable/composable/web/networkInformation) - reactive `NetworkInformation` wrapper
- [Online](<[composable/web](https://pikax.me/vue-composable/composable/web)/online>) - reactive `navigator.onLine` wrapper
- [PageVisibility](https://pikax.me/vue-composable/composable/web/pageVisibility) - reactive `Page Visibility API`
- [Language](https://pikax.me/vue-composable/composable/web/language) - reactive `NavigatorLanguage`

@@ -83,2 +100,4 @@ ### External

For [vue-next](https://github.com/vuejs/vue-next) support please check [@next](https://www.npmjs.com/package/vue-composable/v/next)
## Usage

@@ -123,2 +142,12 @@

You can contribute raising issues and by helping out with code.
Tests and Documentation are the most important things for me, because good documentation is really useful!
I really appreciate some tweaks or changes on how the documentation is displayed and how to make it easier to read.
> I really need an logo for this project, if you have a good idea for a logo, please enter in contact with me, you can find me on the `Vue discord : @pikax`
### New composable
1. Fork it!

@@ -125,0 +154,0 @@ 2. Create your feature branch: `git checkout -b feat/new-composable`