killa
Version:
State management for Vanilla and React
2 lines (1 loc) • 2.68 kB
JavaScript
;var globalThis=globalThis||{};globalThis.killa=(()=>{var b=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var R=(e,t)=>{for(var r in t)b(e,r,{get:t[r],enumerable:!0})},h=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _(t))!I.call(e,n)&&n!==r&&b(e,n,{get:()=>t[n],enumerable:!(s=D(t,n))||s.enumerable});return e};var p=e=>h(b({},"__esModule",{value:!0}),e);var j={};R(j,{createStore:()=>N});var f=T;function T(e){let t=e;var r={}.toString.call(e).slice(8,-1);if(r=="Set")return new Set([...e].map(n=>T(n)));if(r=="Map")return new Map([...e].map(n=>[T(n[0]),T(n[1])]));if(r=="Date")return new Date(e.getTime());if(r=="RegExp")return RegExp(e.source,M(e));if(r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(var s in e)t[s]=T(e[s])}return t}function M(e){if(typeof e.source.flags=="string")return e.source.flags;var t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}var i=e=>e!==null&&typeof e=="object",O=(e,t)=>{if(!i(e)&&!i(t)&&Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return Object.is(e.getTime(),t.getTime());if(!i(e)||e===null||!i(t)||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let n of e){let a=n[0],c=n[1];if(!Object.is(c,t.get(a)))return O(c,t.get(a))}return!0}if(e instanceof Set&&t instanceof Set)return e.size!==t.size?!1:O([...e.values()],[...t.values()]);let r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(let n of r){let a=e[n],c=t[n],u=i(a)&&i(c);if(u&&!O(a,c)||!u&&!Object.is(a,c))return!1}return!0};var w=Symbol.for("@@killa-subscriber"),E=Symbol.for("@@killa-store"),Y=Symbol.for("@@killa-persist");function N(e=Object.assign({}),t){let r,s=new Set,n=typeof(t==null?void 0:t.compare)=="function"?t.compare:O,a=()=>f(r),c=(o,l=!1)=>{let m=o(a())||{};if(!n(r,m)){let k=r;r=l?Object.assign(m):Object.assign(a(),f(m)),s.forEach(S=>{let d=f(k),g=a();if(S.$$subscriber&&S.$$selector){let x=S.$$selectorState,v=S.$$selector(r);n(x,v)||(S.$$selectorState=v,S(g,d));return}S(g,d)})}},u=typeof e=="function"?e(a,c):e,U=(o,l)=>(typeof l=="function"&&(o.$$subscriber=w,o.$$selectorState=l(r),o.$$selector=l),s.add(o),()=>s.delete(o));if(!i(u))throw new Error("Store must be an object.");r=f(u);let $={$$store:E,getState:a,setState:c,subscribe:U,getServerState:()=>u,resetState:(o=null)=>{let l=o&&i(o)?o:f(u);$.setState(()=>l,!0)},destroy:()=>s.clear()};return t!=null&&t.use&&Array.isArray(t.use)&&t.use.forEach(o=>o($)),Object.freeze($);return $}return p(j);})();