@westacks/vortex
Version:
Server-based routing for SPAs
2 lines (1 loc) • 1.24 kB
JavaScript
;function p(n,t){const e=Object.keys,r=typeof n;return n&&t&&r==="object"&&r===typeof t?e(n).length===e(t).length&&e(n).every(s=>p(n[s],t[s])):n===t}function l(n,t){return typeof n!="object"||n===null||n instanceof File||n instanceof Blob?n:Array.isArray(n)?n.map(e=>l(e,t)):Object.entries(n).reduce((e,[r,o])=>(e[r]=typeof o!="object"||o===null?o:new Proxy(l(o,t),t),e),{})}function b(n){return typeof n!="object"||n===null||n instanceof File||n instanceof Blob?n:Array.isArray(n)?n.map(b):Object.keys(n).reduce((t,e)=>(t[e]=b(n[e]),t),{})}let f=null;function g(n=void 0,t=(e,r)=>e===r){let e=n;const r=new Set;function o(i){r.delete(i)}function s(){return f&&!r.has(f)&&(r.add(f),f.link(o)),e}function u(i,j=!1){const y=i instanceof Function?i(e):i;if(!(!j&&t(e,y))){e=y;for(const w of[...r])w.notify()}}return{get:s,set:u,subscribe:i=>k(()=>i(s()))}}function k(n){let t;const e=new Set,r={notify:o,link:s};function o(){u(),f=r;try{t=n()}catch(c){console.error(c)}f=null}function s(c){e.add(c)}async function u(){for(const i of e)i(r);e.clear();const c=await t;c instanceof Function&&c(),t=void 0}return o(),u}const A=g(void 0,p);exports.isEqual=p;exports.page=A;exports.proxyUnwrap=b;exports.proxyWrap=l;exports.signal=g;