@known-as-bmf/store
Version:
Lightweight synchronous state management library.
3 lines (2 loc) • 1.22 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("immer"),t=require("@known-as-bmf/hookable");const r=Symbol(),o=Symbol(),n=Symbol();class s{}function i(e){if(!(e instanceof s))throw new TypeError("Provided value is not a valid store instance.")}function a(e){return e[o]}function c(e,t){e[n](t)}function u(e,t){e[r].forEach((([e,r])=>{e(t.previous)!==e(t.current)&&r(t)}))}const p=(...e)=>(t,r)=>e.map((e=>e(t,r)));exports.composeMiddlewares=(...e)=>p(...e.reverse()),exports.deref=function(e){return i(e),a(e)},exports.of=function(e,i){const a=Object.defineProperties(Object.create(s.prototype),{[r]:{value:new Set,writable:!0},[o]:{value:void 0,writable:!0}}),u=t.createHookable((e=>(a[o]=e,e)));return Object.defineProperty(a,n,{value:u}),i&&i(a,{stateDidChange:u.leave,stateWillChange:u.enter,transformState:u.transformInput}),c(a,e),a},exports.pipeMiddlewares=p,exports.set=function(e,t){i(e);const r=a(e);c(e,t),u(e,{previous:r,current:t})},exports.subscribe=function(e,t,o=(e=>e)){i(e);const n=[o,t];return e[r].add(n),()=>{e[r].delete(n)}},exports.swap=function(t,r){i(t);const o=a(t),n=e.produce(o,r);c(t,n),u(t,{previous:o,current:n})};
//# sourceMappingURL=index.cjs.min.js.map