@propero/easy-store
Version:
Simple, intuitive, functional reactive stores for typescript
10 lines • 1.86 kB
JavaScript
/**
* @propero/easy-store
* Simple, intuitive, functional reactive stores for typescript
* © 2021 - 2023 Propero Team <team@propero.dev>
* @license MIT
*/
function S(e,r,o){return Object.defineProperty(e,"value",{get:r,set:o,configurable:!0,enumerable:!0}),e}function f(e,r){let o=e,s;return[()=>o,function n(t){if(typeof t=="function")return Promise.resolve(t(o)).then(n);s=o,o=t,r(o,s)}]}function p(e,r){return function o(s){if(typeof s=="function")return Promise.resolve(s(e())).then(o);r({...e(),...s})}}function b(e,r,o){return o?function(n){let t=Array.isArray(n)?[...n]:[n];for(let i of t)i(r());return e(t)}:e}var T=e=>`Too many listeners registered for subscribable! maximum allowed is ${e}.
Maybe check if you attached listeners inside of a render function, event handler or loop?
In case you need more listeners, try setting the maxListeners option to a higher value.`;function y({maxListeners:e=50}={}){let r=[];function o(n){let t=Array.isArray(n)?[...n]:[n];if(r.length+t.length>e)throw Object.assign(new Error(T(e)),{code:"TOO_MANY_LISTENERS"});return r.push(...t),()=>{for(let i of t){let c=r.lastIndexOf(i);c!==-1&&r.splice(c,1)}}}function s(...n){for(let t of r)t(...n)}return{subscribe:o,notify:s}}function u(e,{maxListeners:r,immediatelyNotify:o}={}){let{subscribe:s,notify:n}=y({maxListeners:r}),[t,i]=f(e,n),c=p(t,i),l=b(s,t,o);return S({subscribe:l,set:i,get:t,patch:c},t,i)}function N(e,r,o,s){let{get:n,set:t,subscribe:i}=u(o,s),c=()=>{let a=r(...e.map(d=>d.get()));a&&typeof a=="object"&&"then"in a&&typeof a.then=="function"?a.then(t):t(a)};c();let l=e.map(a=>a.subscribe(c));return{get:n,subscribe:i,destroy:()=>l.forEach(a=>a())}}export{S as createAccessors,f as createGetSet,p as createPatch,u as createStore,b as createStoreSubscribe,y as createSubscribable,u as default,N as deriveStore};
//# sourceMappingURL=index.mjs.map