🚨 Active Supply Chain Attack:node-ipc Package Compromised.Learn More
Socket
Book a DemoSign in
Socket

@withease/web-api

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@withease/web-api - npm Package Compare versions

Comparing version
1.2.3
to
1.3.0
+1
-1
./dist/web-api.cjs

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

"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector");function d(n,t){try{const e=n();return e===void 0?t:e}catch{return t}}function u({add:n,remove:t,readPayload:e},o){const c=r.createEvent(),i=r.createStore(null,{serialize:"ignore"}),a=r.createEffect(()=>{const l=r.scopeBind(c,{safe:!0});let v=l;return e&&(v=()=>l(e())),n(v),v}),s=r.attach({source:i,effect(l){l&&t(l)}});return r.sample({clock:o.setup,target:a}),r.sample({clock:a.doneData,filter:Boolean,target:i}),o.teardown&&r.sample({clock:o.teardown,target:s}),r.sample({clock:s.done,target:i.reinit}),c}const f=n=>{const t=r.createStore(d(()=>screen.orientation.type,null),{serialize:"ignore"}),e=r.createStore(d(()=>screen.orientation.angle,null),{serialize:"ignore"}),o=t.map(a=>a==="landscape-primary"||a==="landscape-secondary"),c=t.map(a=>a==="portrait-primary"||a==="portrait-secondary"),i=u({add:a=>screen.orientation.addEventListener("change",a),remove:a=>screen.orientation.removeEventListener("change",a),readPayload:()=>screen.orientation},n);return r.sample({clock:i,fn:()=>screen.orientation.type,target:t}),r.sample({clock:i,fn:()=>screen.orientation.angle,target:e}),{$type:t,$angle:e,$portrait:c,$landscape:o}};f["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{$type:e}=f({setup:n,teardown:t}),o=r.sample({clock:e.updates,fn:()=>{}});return{setup:n,teardown:t,fired:o}};const m=n=>{const t=u({add:s=>document.addEventListener("visibilitychange",s),remove:s=>document.removeEventListener("visibilitychange",s),readPayload:()=>document.visibilityState},n),e=r.createStore(d(()=>document.visibilityState,"visible"),{serialize:"ignore"}).on(t,(s,l)=>l),o=e.map(s=>s==="visible"),c=e.map(s=>s==="hidden"),i=r.sample({clock:o.updates,filter:Boolean,fn:()=>{}}),a=r.sample({clock:c.updates,filter:Boolean,fn:()=>{}});return{visible:i,hidden:a,$visible:o,$hidden:c}};m["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{visible:e}=m({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};const h=n=>{const t=u({add:i=>window.addEventListener("online",i),remove:i=>window.removeEventListener("online",i)},n),e=u({add:i=>window.addEventListener("offline",i),remove:i=>window.removeEventListener("offline",i)},n),o=r.createStore(d(()=>navigator.onLine,!0),{serialize:"ignore"}).on(t,()=>!0).on(e,()=>!1),c=o.map(i=>!i);return{online:t,offline:e,$offline:c,$online:o}};h["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{online:e}=h({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};function k(n,t){if(typeof n=="string"){if(t)return p(n,t);{const e=o=>p(n,o);return e["@@trigger"]=()=>{const o=r.createEvent(),c=r.createEvent(),{matched:i}=p(n,{setup:o,teardown:c});return{setup:o,teardown:c,fired:i}},e}}else if(t){const e={};for(const[o,c]of Object.entries(n))e[o]=k(c,t);return e}else{const e={};for(const[o,c]of Object.entries(n))e[o]=i=>k(c,i);return e}}function p(n,t){const e=d(()=>window.matchMedia(n),null),o=u({add:a=>e==null?void 0:e.addEventListener("change",a),remove:a=>e==null?void 0:e.removeEventListener("change",a)},t),c=r.createStore((e==null?void 0:e.matches)??!1,{serialize:"ignore"}).on(o,(a,s)=>s.matches),i=r.createEvent();return r.sample({clock:[c.updates,t.setup],filter:c,fn:()=>{},target:i}),{$matches:c,matched:i}}const E=r.createStore(null,{serialize:"ignore"}),y=E.map(n=>n?n.split(",").map(t=>{var e;return(e=t.split(";")[0])==null?void 0:e.trim()}).filter(t=>t&&t!=="*"):[]),g=n=>{const t=r.createStore(d(()=>navigator.languages,[]),{serialize:"ignore"}),e=u({add:a=>window.addEventListener("languagechange",a),remove:a=>window.removeEventListener("languagechange",a),readPayload:()=>navigator.languages},n);r.sample({clock:e,target:t});const o=r.combine({fromHeader:y,fromNavigator:t},({fromHeader:a,fromNavigator:s})=>a.length>0?a:s),c=o.map(a=>a[0]??null),i=r.sample({clock:e,fn(){}});return{$languages:o,$language:c,languageChanged:i}};g["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{languageChanged:e}=g({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};g.$acceptLanguageHeader=E;exports.trackMediaQuery=k;exports.trackNetworkStatus=h;exports.trackPageVisibility=m;exports.trackPreferredLanguages=g;exports.trackScreenOrientation=f;
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("effector");function w(t,r){try{const n=t();return n===void 0?r:n}catch{return r}}function b({add:t,remove:r,readPayload:n},a){const c=e.createEvent(),o=e.createStore(null,{serialize:"ignore"}),i=e.createEffect(()=>{const g=e.scopeBind(c,{safe:!0});let f=g;return n&&(f=()=>g(n())),t(f),f}),l=e.attach({source:o,effect(g){g&&r(g)}});return e.sample({clock:a.setup,target:i}),e.sample({clock:i.doneData,filter:Boolean,target:o}),a.teardown&&e.sample({clock:a.teardown,target:l}),e.sample({clock:l.done,target:o.reinit}),c}function B(t){return t.map(r=>r)}const C=t=>{const r=e.createStore(w(()=>screen.orientation.type,null),{serialize:"ignore"}),n=e.createStore(w(()=>screen.orientation.angle,null),{serialize:"ignore"}),a=r.map(i=>i==="landscape-primary"||i==="landscape-secondary"),c=r.map(i=>i==="portrait-primary"||i==="portrait-secondary"),o=b({add:i=>screen.orientation.addEventListener("change",i),remove:i=>screen.orientation.removeEventListener("change",i),readPayload:()=>screen.orientation},t);return e.sample({clock:o,fn:()=>screen.orientation.type,target:r}),e.sample({clock:o,fn:()=>screen.orientation.angle,target:n}),{$type:r,$angle:n,$portrait:c,$landscape:a}};C["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{$type:n}=C({setup:t,teardown:r}),a=e.sample({clock:n.updates,fn:()=>{}});return{setup:t,teardown:r,fired:a}};const F=t=>{const r=b({add:l=>document.addEventListener("visibilitychange",l),remove:l=>document.removeEventListener("visibilitychange",l),readPayload:()=>document.visibilityState},t),n=e.createStore(w(()=>document.visibilityState,"visible"),{serialize:"ignore"}).on(r,(l,g)=>g),a=n.map(l=>l==="visible"),c=n.map(l=>l==="hidden"),o=e.sample({clock:a.updates,filter:Boolean,fn:()=>{}}),i=e.sample({clock:c.updates,filter:Boolean,fn:()=>{}});return{visible:o,hidden:i,$visible:a,$hidden:c}};F["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{visible:n}=F({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};const A=t=>{const r=b({add:o=>window.addEventListener("online",o),remove:o=>window.removeEventListener("online",o)},t),n=b({add:o=>window.addEventListener("offline",o),remove:o=>window.removeEventListener("offline",o)},t),a=e.createStore(w(()=>navigator.onLine,!0),{serialize:"ignore"}).on(r,()=>!0).on(n,()=>!1),c=a.map(o=>!o);return{online:r,offline:n,$offline:c,$online:a}};A["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{online:n}=A({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};function N(t,r){if(typeof t=="string"){if(r)return z(t,r);{const n=a=>z(t,a);return n["@@trigger"]=()=>{const a=e.createEvent(),c=e.createEvent(),{matched:o}=z(t,{setup:a,teardown:c});return{setup:a,teardown:c,fired:o}},n}}else if(r){const n={};for(const[a,c]of Object.entries(t))n[a]=N(c,r);return n}else{const n={};for(const[a,c]of Object.entries(t))n[a]=o=>N(c,o);return n}}function z(t,r){const n=w(()=>window.matchMedia(t),null),a=b({add:i=>n==null?void 0:n.addEventListener("change",i),remove:i=>n==null?void 0:n.removeEventListener("change",i)},r),c=e.createStore((n==null?void 0:n.matches)??!1,{serialize:"ignore"}).on(a,(i,l)=>l.matches),o=e.createEvent();return e.sample({clock:[c.updates,r.setup],filter:c,fn:()=>{},target:o}),{$matches:c,matched:o}}const T=e.createStore(null,{serialize:"ignore"}),I=T.map(t=>t?t.split(",").map(r=>{var n;return(n=r.split(";")[0])==null?void 0:n.trim()}).filter(r=>r&&r!=="*"):[]),y=t=>{const r=e.createStore(w(()=>navigator.languages,[]),{serialize:"ignore"}),n=b({add:i=>window.addEventListener("languagechange",i),remove:i=>window.removeEventListener("languagechange",i),readPayload:()=>navigator.languages},t);e.sample({clock:n,target:r});const a=e.combine({fromHeader:I,fromNavigator:r},({fromHeader:i,fromNavigator:l})=>i.length>0?i:l),c=a.map(i=>i[0]??null),o=e.sample({clock:n,fn(){}});return{$languages:a,$language:c,languageChanged:o}};y["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{languageChanged:n}=y({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};y.$acceptLanguageHeader=T;const x=Symbol("BrowserProvider");function V(t){let r;const n=t==null?void 0:t.providers;e.is.store(n)?r=n:r=e.createStore(n??[x]);const a=e.attach({source:r,effect(s){return s.map(d=>_(d,t)).filter(Boolean)}}),c=e.createStore(null,{serialize:"ignore"}).on(a.doneData,(s,d)=>d),o=e.createStore(null),i=e.combine(o,s=>(s==null?void 0:s.longitude)??null),l=e.combine(o,s=>(s==null?void 0:s.latitude)??null),g=e.createEvent(),f=e.createEvent(),$=e.createEvent(),D=e.createStore(!1),E=e.createEvent(),P=e.createEvent();e.sample({clock:P,fn:s=>({latitude:s.coords.latitude,longitude:s.coords.longitude}),target:o});const S=e.attach({source:c,async effect(s){let d=null;const k=e.scopeBind(E,{safe:!0});let v;s?v=s:v=await a();for(const p of v)try{O(p)?d=await new Promise((m,u)=>p.getCurrentPosition(m,u,t)):d=await p.getCurrentPosition()}catch(m){k(m)}if(!d)throw{code:"POSITION_UNAVAILABLE",message:"No available geolocation provider"};return d}});e.sample({clock:g,target:S}),e.sample({clock:S.doneData,target:P}),e.sample({clock:S.failData,target:E});const L=e.createStore(null),M=e.attach({source:c,async effect(s){const d=e.scopeBind(P,{safe:!0}),k=e.scopeBind(E,{safe:!0});let v;s?v=s:v=await a();const p=new Map,m=new Set;for(const u of v)try{if(O(u)){const h=u.watchPosition(d,k,t);p.set(G=>u.clearWatch(G),h)}else{const h=u.watchPosition(d,k);m.add(h)}}catch(h){k(h)}return()=>{for(const[u,h]of p)u(h),p.delete(u);for(const u of m)u(),m.delete(u)}}}),W=e.attach({source:L,effect(s){s==null||s()}});return e.sample({clock:f,target:M}),e.sample({clock:M.doneData,target:L}),e.sample({clock:$,target:W}),e.sample({clock:W.finally,target:L.reinit}),D.on(f,()=>!0).on($,()=>!1),{$location:B(o),$longitude:i,$latitude:l,request:g,watching:{start:f,stop:$,$active:B(D)},reporting:{failed:B(E)}}}V.browserProvider=x;function _(t,r){return t===x?globalThis.navigator&&"geolocation"in globalThis.navigator?globalThis.navigator.geolocation:null:O(t)?t:t(r??{})}function O(t){return"getCurrentPosition"in t&&"watchPosition"in t&&"clearWatch"in t}exports.trackGeolocation=V;exports.trackMediaQuery=N;exports.trackNetworkStatus=A;exports.trackPageVisibility=F;exports.trackPreferredLanguages=y;exports.trackScreenOrientation=C;

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

"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector");function d(n,t){try{const e=n();return e===void 0?t:e}catch{return t}}function u({add:n,remove:t,readPayload:e},o){const c=r.createEvent(),i=r.createStore(null,{serialize:"ignore"}),a=r.createEffect(()=>{const l=r.scopeBind(c,{safe:!0});let v=l;return e&&(v=()=>l(e())),n(v),v}),s=r.attach({source:i,effect(l){l&&t(l)}});return r.sample({clock:o.setup,target:a}),r.sample({clock:a.doneData,filter:Boolean,target:i}),o.teardown&&r.sample({clock:o.teardown,target:s}),r.sample({clock:s.done,target:i.reinit}),c}const f=n=>{const t=r.createStore(d(()=>screen.orientation.type,null),{serialize:"ignore"}),e=r.createStore(d(()=>screen.orientation.angle,null),{serialize:"ignore"}),o=t.map(a=>a==="landscape-primary"||a==="landscape-secondary"),c=t.map(a=>a==="portrait-primary"||a==="portrait-secondary"),i=u({add:a=>screen.orientation.addEventListener("change",a),remove:a=>screen.orientation.removeEventListener("change",a),readPayload:()=>screen.orientation},n);return r.sample({clock:i,fn:()=>screen.orientation.type,target:t}),r.sample({clock:i,fn:()=>screen.orientation.angle,target:e}),{$type:t,$angle:e,$portrait:c,$landscape:o}};f["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{$type:e}=f({setup:n,teardown:t}),o=r.sample({clock:e.updates,fn:()=>{}});return{setup:n,teardown:t,fired:o}};const m=n=>{const t=u({add:s=>document.addEventListener("visibilitychange",s),remove:s=>document.removeEventListener("visibilitychange",s),readPayload:()=>document.visibilityState},n),e=r.createStore(d(()=>document.visibilityState,"visible"),{serialize:"ignore"}).on(t,(s,l)=>l),o=e.map(s=>s==="visible"),c=e.map(s=>s==="hidden"),i=r.sample({clock:o.updates,filter:Boolean,fn:()=>{}}),a=r.sample({clock:c.updates,filter:Boolean,fn:()=>{}});return{visible:i,hidden:a,$visible:o,$hidden:c}};m["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{visible:e}=m({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};const h=n=>{const t=u({add:i=>window.addEventListener("online",i),remove:i=>window.removeEventListener("online",i)},n),e=u({add:i=>window.addEventListener("offline",i),remove:i=>window.removeEventListener("offline",i)},n),o=r.createStore(d(()=>navigator.onLine,!0),{serialize:"ignore"}).on(t,()=>!0).on(e,()=>!1),c=o.map(i=>!i);return{online:t,offline:e,$offline:c,$online:o}};h["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{online:e}=h({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};function k(n,t){if(typeof n=="string"){if(t)return p(n,t);{const e=o=>p(n,o);return e["@@trigger"]=()=>{const o=r.createEvent(),c=r.createEvent(),{matched:i}=p(n,{setup:o,teardown:c});return{setup:o,teardown:c,fired:i}},e}}else if(t){const e={};for(const[o,c]of Object.entries(n))e[o]=k(c,t);return e}else{const e={};for(const[o,c]of Object.entries(n))e[o]=i=>k(c,i);return e}}function p(n,t){const e=d(()=>window.matchMedia(n),null),o=u({add:a=>e==null?void 0:e.addEventListener("change",a),remove:a=>e==null?void 0:e.removeEventListener("change",a)},t),c=r.createStore((e==null?void 0:e.matches)??!1,{serialize:"ignore"}).on(o,(a,s)=>s.matches),i=r.createEvent();return r.sample({clock:[c.updates,t.setup],filter:c,fn:()=>{},target:i}),{$matches:c,matched:i}}const E=r.createStore(null,{serialize:"ignore"}),y=E.map(n=>n?n.split(",").map(t=>{var e;return(e=t.split(";")[0])==null?void 0:e.trim()}).filter(t=>t&&t!=="*"):[]),g=n=>{const t=r.createStore(d(()=>navigator.languages,[]),{serialize:"ignore"}),e=u({add:a=>window.addEventListener("languagechange",a),remove:a=>window.removeEventListener("languagechange",a),readPayload:()=>navigator.languages},n);r.sample({clock:e,target:t});const o=r.combine({fromHeader:y,fromNavigator:t},({fromHeader:a,fromNavigator:s})=>a.length>0?a:s),c=o.map(a=>a[0]??null),i=r.sample({clock:e,fn(){}});return{$languages:o,$language:c,languageChanged:i}};g["@@trigger"]=()=>{const n=r.createEvent(),t=r.createEvent(),{languageChanged:e}=g({setup:n,teardown:t});return{setup:n,teardown:t,fired:e}};g.$acceptLanguageHeader=E;exports.trackMediaQuery=k;exports.trackNetworkStatus=h;exports.trackPageVisibility=m;exports.trackPreferredLanguages=g;exports.trackScreenOrientation=f;
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("effector");function w(t,r){try{const n=t();return n===void 0?r:n}catch{return r}}function b({add:t,remove:r,readPayload:n},a){const c=e.createEvent(),o=e.createStore(null,{serialize:"ignore"}),i=e.createEffect(()=>{const g=e.scopeBind(c,{safe:!0});let f=g;return n&&(f=()=>g(n())),t(f),f}),l=e.attach({source:o,effect(g){g&&r(g)}});return e.sample({clock:a.setup,target:i}),e.sample({clock:i.doneData,filter:Boolean,target:o}),a.teardown&&e.sample({clock:a.teardown,target:l}),e.sample({clock:l.done,target:o.reinit}),c}function B(t){return t.map(r=>r)}const C=t=>{const r=e.createStore(w(()=>screen.orientation.type,null),{serialize:"ignore"}),n=e.createStore(w(()=>screen.orientation.angle,null),{serialize:"ignore"}),a=r.map(i=>i==="landscape-primary"||i==="landscape-secondary"),c=r.map(i=>i==="portrait-primary"||i==="portrait-secondary"),o=b({add:i=>screen.orientation.addEventListener("change",i),remove:i=>screen.orientation.removeEventListener("change",i),readPayload:()=>screen.orientation},t);return e.sample({clock:o,fn:()=>screen.orientation.type,target:r}),e.sample({clock:o,fn:()=>screen.orientation.angle,target:n}),{$type:r,$angle:n,$portrait:c,$landscape:a}};C["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{$type:n}=C({setup:t,teardown:r}),a=e.sample({clock:n.updates,fn:()=>{}});return{setup:t,teardown:r,fired:a}};const F=t=>{const r=b({add:l=>document.addEventListener("visibilitychange",l),remove:l=>document.removeEventListener("visibilitychange",l),readPayload:()=>document.visibilityState},t),n=e.createStore(w(()=>document.visibilityState,"visible"),{serialize:"ignore"}).on(r,(l,g)=>g),a=n.map(l=>l==="visible"),c=n.map(l=>l==="hidden"),o=e.sample({clock:a.updates,filter:Boolean,fn:()=>{}}),i=e.sample({clock:c.updates,filter:Boolean,fn:()=>{}});return{visible:o,hidden:i,$visible:a,$hidden:c}};F["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{visible:n}=F({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};const A=t=>{const r=b({add:o=>window.addEventListener("online",o),remove:o=>window.removeEventListener("online",o)},t),n=b({add:o=>window.addEventListener("offline",o),remove:o=>window.removeEventListener("offline",o)},t),a=e.createStore(w(()=>navigator.onLine,!0),{serialize:"ignore"}).on(r,()=>!0).on(n,()=>!1),c=a.map(o=>!o);return{online:r,offline:n,$offline:c,$online:a}};A["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{online:n}=A({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};function N(t,r){if(typeof t=="string"){if(r)return z(t,r);{const n=a=>z(t,a);return n["@@trigger"]=()=>{const a=e.createEvent(),c=e.createEvent(),{matched:o}=z(t,{setup:a,teardown:c});return{setup:a,teardown:c,fired:o}},n}}else if(r){const n={};for(const[a,c]of Object.entries(t))n[a]=N(c,r);return n}else{const n={};for(const[a,c]of Object.entries(t))n[a]=o=>N(c,o);return n}}function z(t,r){const n=w(()=>window.matchMedia(t),null),a=b({add:i=>n==null?void 0:n.addEventListener("change",i),remove:i=>n==null?void 0:n.removeEventListener("change",i)},r),c=e.createStore((n==null?void 0:n.matches)??!1,{serialize:"ignore"}).on(a,(i,l)=>l.matches),o=e.createEvent();return e.sample({clock:[c.updates,r.setup],filter:c,fn:()=>{},target:o}),{$matches:c,matched:o}}const T=e.createStore(null,{serialize:"ignore"}),I=T.map(t=>t?t.split(",").map(r=>{var n;return(n=r.split(";")[0])==null?void 0:n.trim()}).filter(r=>r&&r!=="*"):[]),y=t=>{const r=e.createStore(w(()=>navigator.languages,[]),{serialize:"ignore"}),n=b({add:i=>window.addEventListener("languagechange",i),remove:i=>window.removeEventListener("languagechange",i),readPayload:()=>navigator.languages},t);e.sample({clock:n,target:r});const a=e.combine({fromHeader:I,fromNavigator:r},({fromHeader:i,fromNavigator:l})=>i.length>0?i:l),c=a.map(i=>i[0]??null),o=e.sample({clock:n,fn(){}});return{$languages:a,$language:c,languageChanged:o}};y["@@trigger"]=()=>{const t=e.createEvent(),r=e.createEvent(),{languageChanged:n}=y({setup:t,teardown:r});return{setup:t,teardown:r,fired:n}};y.$acceptLanguageHeader=T;const x=Symbol("BrowserProvider");function V(t){let r;const n=t==null?void 0:t.providers;e.is.store(n)?r=n:r=e.createStore(n??[x]);const a=e.attach({source:r,effect(s){return s.map(d=>_(d,t)).filter(Boolean)}}),c=e.createStore(null,{serialize:"ignore"}).on(a.doneData,(s,d)=>d),o=e.createStore(null),i=e.combine(o,s=>(s==null?void 0:s.longitude)??null),l=e.combine(o,s=>(s==null?void 0:s.latitude)??null),g=e.createEvent(),f=e.createEvent(),$=e.createEvent(),D=e.createStore(!1),E=e.createEvent(),P=e.createEvent();e.sample({clock:P,fn:s=>({latitude:s.coords.latitude,longitude:s.coords.longitude}),target:o});const S=e.attach({source:c,async effect(s){let d=null;const k=e.scopeBind(E,{safe:!0});let v;s?v=s:v=await a();for(const p of v)try{O(p)?d=await new Promise((m,u)=>p.getCurrentPosition(m,u,t)):d=await p.getCurrentPosition()}catch(m){k(m)}if(!d)throw{code:"POSITION_UNAVAILABLE",message:"No available geolocation provider"};return d}});e.sample({clock:g,target:S}),e.sample({clock:S.doneData,target:P}),e.sample({clock:S.failData,target:E});const L=e.createStore(null),M=e.attach({source:c,async effect(s){const d=e.scopeBind(P,{safe:!0}),k=e.scopeBind(E,{safe:!0});let v;s?v=s:v=await a();const p=new Map,m=new Set;for(const u of v)try{if(O(u)){const h=u.watchPosition(d,k,t);p.set(G=>u.clearWatch(G),h)}else{const h=u.watchPosition(d,k);m.add(h)}}catch(h){k(h)}return()=>{for(const[u,h]of p)u(h),p.delete(u);for(const u of m)u(),m.delete(u)}}}),W=e.attach({source:L,effect(s){s==null||s()}});return e.sample({clock:f,target:M}),e.sample({clock:M.doneData,target:L}),e.sample({clock:$,target:W}),e.sample({clock:W.finally,target:L.reinit}),D.on(f,()=>!0).on($,()=>!1),{$location:B(o),$longitude:i,$latitude:l,request:g,watching:{start:f,stop:$,$active:B(D)},reporting:{failed:B(E)}}}V.browserProvider=x;function _(t,r){return t===x?globalThis.navigator&&"geolocation"in globalThis.navigator?globalThis.navigator.geolocation:null:O(t)?t:t(r??{})}function O(t){return"getCurrentPosition"in t&&"watchPosition"in t&&"clearWatch"in t}exports.trackGeolocation=V;exports.trackMediaQuery=N;exports.trackNetworkStatus=A;exports.trackPageVisibility=F;exports.trackPreferredLanguages=y;exports.trackScreenOrientation=C;

@@ -5,2 +5,62 @@ import { Event as Event_2 } from 'effector';

declare const BrowserProvider: unique symbol;
/**
* This type mimics GeolocationPositionError
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError}
*/
declare type CustomGeolocationError = {
code?: 'PERMISSION_DENIED' | 'POSITION_UNAVAILABLE' | 'TIMEOUT';
message?: string;
raw?: unknown;
};
/**
* This type mimics GeolocationPostion
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPosition}
*/
declare type CustomGeolocationPosition = {
timestamp: number;
coords: {
latitude: number;
longitude: number;
accuracy?: number;
altitude?: number;
altitudeAccuracy?: number;
heading?: number;
speed?: number;
};
};
declare type CustomProvider = (params: GeolocationParams) => {
getCurrentPosition: () => Promise<CustomGeolocationPosition>;
watchPosition: (successCallback: (position: CustomGeolocationPosition) => void, errorCallback: (error: CustomGeolocationError) => void) => Unsubscribe;
};
declare type Geolocation_2 = {
$location: Store<{
latitude: number;
longitude: number;
} | null>;
$latitude: Store<number | null>;
$longitude: Store<number | null>;
request: EventCallable<void>;
watching: {
start: EventCallable<void>;
stop: EventCallable<void>;
$active: Store<boolean>;
};
reporting: {
failed: Event_2<CustomGeolocationError | globalThis.GeolocationPositionError>;
};
};
declare type GeolocationParams = {
maximumAge?: number;
timeout?: number;
enableHighAccuracy?: boolean;
};
declare type NetworkStatus = ({ setup, teardown }: Setupable) => {

@@ -49,2 +109,10 @@ online: Event_2<void>;

export declare function trackGeolocation(params?: GeolocationParams & {
providers?: Array<typeof BrowserProvider | CustomProvider | globalThis.Geolocation> | Store<Array<typeof BrowserProvider | CustomProvider | globalThis.Geolocation>>;
}): Geolocation_2;
export declare namespace trackGeolocation {
var browserProvider: typeof BrowserProvider;
}
export declare function trackMediaQuery(mq: Query, c: Setupable): Result;

@@ -78,2 +146,10 @@

declare type Unsubscribe = () => void;
export { }
export declare namespace trackGeolocation {
var browserProvider: typeof BrowserProvider;
}

@@ -5,2 +5,62 @@ import { Event as Event_2 } from 'effector';

declare const BrowserProvider: unique symbol;
/**
* This type mimics GeolocationPositionError
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError}
*/
declare type CustomGeolocationError = {
code?: 'PERMISSION_DENIED' | 'POSITION_UNAVAILABLE' | 'TIMEOUT';
message?: string;
raw?: unknown;
};
/**
* This type mimics GeolocationPostion
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPosition}
*/
declare type CustomGeolocationPosition = {
timestamp: number;
coords: {
latitude: number;
longitude: number;
accuracy?: number;
altitude?: number;
altitudeAccuracy?: number;
heading?: number;
speed?: number;
};
};
declare type CustomProvider = (params: GeolocationParams) => {
getCurrentPosition: () => Promise<CustomGeolocationPosition>;
watchPosition: (successCallback: (position: CustomGeolocationPosition) => void, errorCallback: (error: CustomGeolocationError) => void) => Unsubscribe;
};
declare type Geolocation_2 = {
$location: Store<{
latitude: number;
longitude: number;
} | null>;
$latitude: Store<number | null>;
$longitude: Store<number | null>;
request: EventCallable<void>;
watching: {
start: EventCallable<void>;
stop: EventCallable<void>;
$active: Store<boolean>;
};
reporting: {
failed: Event_2<CustomGeolocationError | globalThis.GeolocationPositionError>;
};
};
declare type GeolocationParams = {
maximumAge?: number;
timeout?: number;
enableHighAccuracy?: boolean;
};
declare type NetworkStatus = ({ setup, teardown }: Setupable) => {

@@ -49,2 +109,10 @@ online: Event_2<void>;

export declare function trackGeolocation(params?: GeolocationParams & {
providers?: Array<typeof BrowserProvider | CustomProvider | globalThis.Geolocation> | Store<Array<typeof BrowserProvider | CustomProvider | globalThis.Geolocation>>;
}): Geolocation_2;
export declare namespace trackGeolocation {
var browserProvider: typeof BrowserProvider;
}
export declare function trackMediaQuery(mq: Query, c: Setupable): Result;

@@ -78,2 +146,10 @@

declare type Unsubscribe = () => void;
export { }
export declare namespace trackGeolocation {
var browserProvider: typeof BrowserProvider;
}

@@ -1,49 +0,52 @@

import { createEvent as l, createStore as d, createEffect as $, scopeBind as b, attach as E, sample as c, combine as z } from "effector";
function g(n, t) {
import { createEvent as u, createStore as d, createEffect as H, scopeBind as E, attach as P, sample as c, combine as A, is as K } from "effector";
function k(e, n) {
try {
const e = n();
return e === void 0 ? t : e;
const t = e();
return t === void 0 ? n : t;
} catch {
return t;
return n;
}
}
function v({
add: n,
remove: t,
readPayload: e
}, a) {
const i = l(), o = d(null, {
function y({
add: e,
remove: n,
readPayload: t
}, r) {
const a = u(), o = d(null, {
serialize: "ignore"
}), r = $(() => {
const u = b(i, { safe: !0 });
let f = u;
return e && (f = () => u(e())), n(f), f;
}), s = E({
}), i = H(() => {
const v = E(a, { safe: !0 });
let h = v;
return t && (h = () => v(t())), e(h), h;
}), l = P({
source: o,
effect(u) {
u && t(u);
effect(v) {
v && n(v);
}
});
return c({ clock: a.setup, target: r }), c({
clock: r.doneData,
return c({ clock: r.setup, target: i }), c({
clock: i.doneData,
filter: Boolean,
target: o
}), a.teardown && c({ clock: a.teardown, target: s }), c({ clock: s.done, target: o.reinit }), i;
}), r.teardown && c({ clock: r.teardown, target: l }), c({ clock: l.done, target: o.reinit }), a;
}
const h = (n) => {
const t = d(
g(() => screen.orientation.type, null),
function B(e) {
return e.map((n) => n);
}
const T = (e) => {
const n = d(
k(() => screen.orientation.type, null),
{
serialize: "ignore"
}
), e = d(
g(() => screen.orientation.angle, null),
), t = d(
k(() => screen.orientation.angle, null),
{ serialize: "ignore" }
), a = t.map((r) => r === "landscape-primary" || r === "landscape-secondary"), i = t.map((r) => r === "portrait-primary" || r === "portrait-secondary"), o = v(
), r = n.map((i) => i === "landscape-primary" || i === "landscape-secondary"), a = n.map((i) => i === "portrait-primary" || i === "portrait-secondary"), o = y(
{
add: (r) => screen.orientation.addEventListener("change", r),
remove: (r) => screen.orientation.removeEventListener("change", r),
add: (i) => screen.orientation.addEventListener("change", i),
remove: (i) => screen.orientation.removeEventListener("change", i),
readPayload: () => screen.orientation
},
n
e
);

@@ -53,35 +56,35 @@ return c({

fn: () => screen.orientation.type,
target: t
target: n
}), c({
clock: o,
fn: () => screen.orientation.angle,
target: e
}), { $type: t, $angle: e, $portrait: i, $landscape: a };
target: t
}), { $type: n, $angle: t, $portrait: a, $landscape: r };
};
h["@@trigger"] = () => {
const n = l(), t = l(), { $type: e } = h({ setup: n, teardown: t }), a = c({
clock: e.updates,
T["@@trigger"] = () => {
const e = u(), n = u(), { $type: t } = T({ setup: e, teardown: n }), r = c({
clock: t.updates,
fn: () => {
}
});
return { setup: n, teardown: t, fired: a };
return { setup: e, teardown: n, fired: r };
};
const w = (n) => {
const t = v(
const V = (e) => {
const n = y(
{
add: (s) => document.addEventListener("visibilitychange", s),
remove: (s) => document.removeEventListener("visibilitychange", s),
add: (l) => document.addEventListener("visibilitychange", l),
remove: (l) => document.removeEventListener("visibilitychange", l),
readPayload: () => document.visibilityState
},
n
), e = d(
g(() => document.visibilityState, "visible"),
e
), t = d(
k(() => document.visibilityState, "visible"),
{ serialize: "ignore" }
).on(t, (s, u) => u), a = e.map((s) => s === "visible"), i = e.map((s) => s === "hidden"), o = c({
clock: a.updates,
).on(n, (l, v) => v), r = t.map((l) => l === "visible"), a = t.map((l) => l === "hidden"), o = c({
clock: r.updates,
filter: Boolean,
fn: () => {
}
}), r = c({
clock: i.updates,
}), i = c({
clock: a.updates,
filter: Boolean,

@@ -91,10 +94,10 @@ fn: () => {

});
return { visible: o, hidden: r, $visible: a, $hidden: i };
return { visible: o, hidden: i, $visible: r, $hidden: a };
};
w["@@trigger"] = () => {
const n = l(), t = l(), { visible: e } = w({ setup: n, teardown: t });
return { setup: n, teardown: t, fired: e };
V["@@trigger"] = () => {
const e = u(), n = u(), { visible: t } = V({ setup: e, teardown: n });
return { setup: e, teardown: n, fired: t };
};
const k = (n) => {
const t = v(
const _ = (e) => {
const n = y(
{

@@ -104,4 +107,4 @@ add: (o) => window.addEventListener("online", o),

},
n
), e = v(
e
), t = y(
{

@@ -111,95 +114,212 @@ add: (o) => window.addEventListener("offline", o),

},
n
), a = d(
g(() => navigator.onLine, !0),
e
), r = d(
k(() => navigator.onLine, !0),
{ serialize: "ignore" }
).on(t, () => !0).on(e, () => !1), i = a.map((o) => !o);
return { online: t, offline: e, $offline: i, $online: a };
).on(n, () => !0).on(t, () => !1), a = r.map((o) => !o);
return { online: n, offline: t, $offline: a, $online: r };
};
k["@@trigger"] = () => {
const n = l(), t = l(), { online: e } = k({ setup: n, teardown: t });
return { setup: n, teardown: t, fired: e };
_["@@trigger"] = () => {
const e = u(), n = u(), { online: t } = _({ setup: e, teardown: n });
return { setup: e, teardown: n, fired: t };
};
function y(n, t) {
if (typeof n == "string") {
if (t)
return p(n, t);
function G(e, n) {
if (typeof e == "string") {
if (n)
return x(e, n);
{
const e = (a) => p(n, a);
return e["@@trigger"] = () => {
const a = l(), i = l(), { matched: o } = p(n, { setup: a, teardown: i });
return { setup: a, teardown: i, fired: o };
}, e;
const t = (r) => x(e, r);
return t["@@trigger"] = () => {
const r = u(), a = u(), { matched: o } = x(e, { setup: r, teardown: a });
return { setup: r, teardown: a, fired: o };
}, t;
}
} else if (t) {
const e = {};
for (const [a, i] of Object.entries(n))
e[a] = y(i, t);
return e;
} else if (n) {
const t = {};
for (const [r, a] of Object.entries(e))
t[r] = G(a, n);
return t;
} else {
const e = {};
for (const [a, i] of Object.entries(n))
e[a] = (o) => y(i, o);
return e;
const t = {};
for (const [r, a] of Object.entries(e))
t[r] = (o) => G(a, o);
return t;
}
}
function p(n, t) {
const e = g(() => window.matchMedia(n), null), a = v(
function x(e, n) {
const t = k(() => window.matchMedia(e), null), r = y(
{
add: (r) => e == null ? void 0 : e.addEventListener("change", r),
remove: (r) => e == null ? void 0 : e.removeEventListener("change", r)
add: (i) => t == null ? void 0 : t.addEventListener("change", i),
remove: (i) => t == null ? void 0 : t.removeEventListener("change", i)
},
t
), i = d((e == null ? void 0 : e.matches) ?? !1, {
n
), a = d((t == null ? void 0 : t.matches) ?? !1, {
serialize: "ignore"
}).on(a, (r, s) => s.matches), o = l();
}).on(r, (i, l) => l.matches), o = u();
return c({
clock: [i.updates, t.setup],
filter: i,
clock: [a.updates, n.setup],
filter: a,
fn: () => {
},
target: o
}), { $matches: i, matched: o };
}), { $matches: a, matched: o };
}
const L = d(null, {
const U = d(null, {
serialize: "ignore"
}), S = L.map((n) => n ? n.split(",").map((t) => {
var e;
return (e = t.split(";")[0]) == null ? void 0 : e.trim();
}).filter((t) => t && t !== "*") : []), m = (n) => {
const t = d(
g(() => navigator.languages, []),
}), Q = U.map((e) => e ? e.split(",").map((n) => {
var t;
return (t = n.split(";")[0]) == null ? void 0 : t.trim();
}).filter((n) => n && n !== "*") : []), D = (e) => {
const n = d(
k(() => navigator.languages, []),
{ serialize: "ignore" }
), e = v(
), t = y(
{
add: (r) => window.addEventListener("languagechange", r),
remove: (r) => window.removeEventListener("languagechange", r),
add: (i) => window.addEventListener("languagechange", i),
remove: (i) => window.removeEventListener("languagechange", i),
readPayload: () => navigator.languages
},
n
e
);
c({ clock: e, target: t });
const a = z(
{ fromHeader: S, fromNavigator: t },
({ fromHeader: r, fromNavigator: s }) => r.length > 0 ? r : s
), i = a.map(
(r) => r[0] ?? null
c({ clock: t, target: n });
const r = A(
{ fromHeader: Q, fromNavigator: n },
({ fromHeader: i, fromNavigator: l }) => i.length > 0 ? i : l
), a = r.map(
(i) => i[0] ?? null
), o = c({
clock: e,
clock: t,
fn() {
}
});
return { $languages: a, $language: i, languageChanged: o };
return { $languages: r, $language: a, languageChanged: o };
};
m["@@trigger"] = () => {
const n = l(), t = l(), { languageChanged: e } = m({ setup: n, teardown: t });
return { setup: n, teardown: t, fired: e };
D["@@trigger"] = () => {
const e = u(), n = u(), { languageChanged: t } = D({ setup: e, teardown: n });
return { setup: e, teardown: n, fired: t };
};
m.$acceptLanguageHeader = L;
D.$acceptLanguageHeader = U;
const W = Symbol("BrowserProvider");
function J(e) {
let n;
const t = e == null ? void 0 : e.providers;
K.store(t) ? n = t : n = d(t ?? [W]);
const r = P({
source: n,
effect(s) {
return s.map((f) => R(f, e)).filter(Boolean);
}
}), a = d(
null,
{ serialize: "ignore" }
).on(r.doneData, (s, f) => f), o = d(null), i = A(
o,
(s) => (s == null ? void 0 : s.longitude) ?? null
), l = A(
o,
(s) => (s == null ? void 0 : s.latitude) ?? null
), v = u(), h = u(), z = u(), O = d(!1), L = u(), S = u();
c({
clock: S,
fn: (s) => ({ latitude: s.coords.latitude, longitude: s.coords.longitude }),
target: o
});
const C = P({
source: a,
async effect(s) {
let f = null;
const $ = E(L, { safe: !0 });
let w;
s ? w = s : w = await r();
for (const p of w)
try {
N(p) ? f = await new Promise(
(m, g) => p.getCurrentPosition(m, g, e)
) : f = await p.getCurrentPosition();
} catch (m) {
$(m);
}
if (!f)
throw {
code: "POSITION_UNAVAILABLE",
message: "No available geolocation provider"
};
return f;
}
});
c({ clock: v, target: C }), c({
clock: C.doneData,
target: S
}), c({ clock: C.failData, target: L });
const F = d(null), I = P({
source: a,
async effect(s) {
const f = E(S, { safe: !0 }), $ = E(L, { safe: !0 });
let w;
s ? w = s : w = await r();
const p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set();
for (const g of w)
try {
if (N(g)) {
const b = g.watchPosition(
f,
$,
e
);
p.set(
(j) => g.clearWatch(j),
b
);
} else {
const b = g.watchPosition(
f,
$
);
m.add(b);
}
} catch (b) {
$(b);
}
return () => {
for (const [g, b] of p)
g(b), p.delete(g);
for (const g of m)
g(), m.delete(g);
};
}
}), M = P({
source: F,
effect(s) {
s == null || s();
}
});
return c({ clock: h, target: I }), c({ clock: I.doneData, target: F }), c({ clock: z, target: M }), c({ clock: M.finally, target: F.reinit }), O.on(h, () => !0).on(z, () => !1), {
$location: B(o),
$longitude: i,
$latitude: l,
request: v,
watching: {
start: h,
stop: z,
$active: B(O)
},
reporting: {
failed: B(L)
}
};
}
J.browserProvider = W;
function R(e, n) {
return e === W ? globalThis.navigator && "geolocation" in globalThis.navigator ? globalThis.navigator.geolocation : null : N(e) ? e : e(n ?? {});
}
function N(e) {
return "getCurrentPosition" in e && "watchPosition" in e && "clearWatch" in e;
}
export {
y as trackMediaQuery,
k as trackNetworkStatus,
w as trackPageVisibility,
m as trackPreferredLanguages,
h as trackScreenOrientation
J as trackGeolocation,
G as trackMediaQuery,
_ as trackNetworkStatus,
V as trackPageVisibility,
D as trackPreferredLanguages,
T as trackScreenOrientation
};
{
"name": "@withease/web-api",
"version": "1.2.3",
"version": "1.3.0",
"license": "MIT",

@@ -30,3 +30,3 @@ "peerDependencies": {

"path": "./dist/web-api.js",
"limit": "1.58 kB"
"limit": "2.49 kB"
}

@@ -36,2 +36,3 @@ ],

"test:run": "vitest run --typecheck",
"test:watch": "vitest --typecheck",
"build": "vite build",

@@ -38,0 +39,0 @@ "size": "size-limit",

# @withease/web-api
Read documentation [here](https://withease.pages.dev/web-api/).
Read documentation [here](https://withease.effector.dev/web-api/).