@rkrupinski/stan 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cache.d.ts CHANGED
@@ -12,5 +12,9 @@ type MemoizeOptions<A> = {
12
12
  cachePolicy?: CachePolicy;
13
13
  keyMaker?: KeyMaker<A>;
14
14
  };
15
- export declare const memoize: <A, R>(fn: (arg: A) => Evictable<R>, { cachePolicy, keyMaker, }?: MemoizeOptions<A>) => (arg: A) => NonNullable<R>;
15
+ type Tools = {
16
+ retain: VoidFunction;
17
+ release: VoidFunction;
18
+ };
19
+ export declare const memoize: <A, R>(fn: (arg: A, tools: Tools) => Evictable<R>, { cachePolicy, keyMaker, }?: MemoizeOptions<A>) => (arg: A) => NonNullable<R>;
16
20
  export {};
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{i as e,d as t,R as s,a,s as n,e as c,b as i,c as o,E as l}from"./store-BlOVE6Q3.js";export{D as DEFAULT_STORE,S as Store,m as makeStore,r as refresh,f as reset}from"./store-BlOVE6Q3.js";class u extends Error{}class h{#e;#t;constructor(e){this.#e=new Map,this.#t=e}#s(){const e=this.#e.keys().next().value;e&&(this.#e.get(e)?.controller.abort(),this.#e.delete(e))}has(e){return this.#e.has(e)}get(e){const t=this.#e.get(e);if(t)return this.#e.delete(e),this.#e.set(e,t),t.value}set(e,t){this.#e.has(e)?this.#e.delete(e):this.#e.size>=this.#t&&this.#s();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return this.#e.delete(e)}clear(){this.#e.clear()}}const d=(t,{cachePolicy:s={type:"keep-all"},keyMaker:a=e}={})=>{const r=(e=>{switch(e.type){case"keep-all":return new h(Number.POSITIVE_INFINITY);case"most-recent":return new h(1);case"lru":return new h(e.maxSize);default:return e}})(s);return e=>{const s=a(e);return r.has(s)||r.set(s,t(e)),r.get(s)}};let g=0;const v=(e,{tag:r,effects:n,areValuesEqual:c=t}={})=>{const i=e,o=`a${r?`-${r}`:""}-${g++}`;return d((e=>()=>{const t=new Set,r=new Set;e.value.set(o,i),e.version.set(o,1);const l=(s=!1)=>n=>{if(!e.initialized.get(o))return;const i=e.value.get(o),l=a(n)?n(i):n;c(i,l)||((()=>{const t=e.version.get(o)??0;e.version.set(o,t+1)})(),e.value.set(o,l),[...t].forEach((e=>e(l))),s||r.forEach((e=>e(l))))},u=l(),h=l(!0);return{key:o,get:()=>(e.initialized.get(o)||(e.value.set(o,i),n?.forEach((t=>t({init(t){e.initialized.get(o)||e.value.set(o,t)},set:h,onSet(e){r.add(e)}}))),e.initialized.set(o,!0)),e.value.get(o)),set:u,subscribe:e=>(t.add(e),()=>{t.delete(e)}),[s](){u(i)}}}))},k=(e,{tag:t,...s}={})=>d((r=>()=>v(a(e)?e(r):e,{tag:a(t)?t(r):t,...s})),{keyMaker:n});let y=0;const z=(e,{tag:s,areValuesEqual:a=t}={},{[l]:r}={})=>{const n=`s${s?`-${s}`:""}-${y++}`;return d((t=>()=>{const s=new Map;t.deps.set(n,s);const l=new Set,h=new Set;r?.addEventListener("abort",(()=>{c(t,n)}),{once:!0});let d=null;const g=new Set,v=e=>{const s=t.deps.get(e);if(!s||!s.size)return!1;for(const[e,a]of s.entries())if(t.version.get(e)!==a)return!0;for(const e of s.keys())if(v(e))return!0;return!1};let f=0;const k=()=>{s.clear(),l.clear(),h.forEach((e=>e())),h.clear(),d?.abort(new u),d=new AbortController;const r=e({get:(c=++f,e=>{const a=e(t),r=a.get();if(!s.has(a.key)&&c===f){s.set(a.key,t.version.get(a.key)??0);const e=()=>a.subscribe((()=>{y()}));l.add(e),t.mounted.get(n)&&h.add(e())}return r}),signal:d.signal});var c;if(!(!t.value.has(n)||!a(t.value.get(n),r)))return;if((()=>{const e=t.version.get(n)??0;t.version.set(n,e+1)})(),t.value.set(n,r),[...g].forEach((e=>e(t.value.get(n)))),!o(r))return;const i=t.version.get(n);r.then(void 0,(()=>{i===t.version.get(n)&&t.initialized.set(n,!1)}))},y=()=>{t.mounted.get(n)?k():t.initialized.set(n,!1)};return{key:n,get(){switch(!0){case!t.initialized.get(n):k(),t.initialized.set(n,!0);break;case v(n):k()}return t.value.get(n)},subscribe:e=>(0===g.size&&(l.forEach((e=>{h.add(e())})),t.mounted.set(n,!0)),g.add(e),function(){g.delete(e),0===g.size&&(h.forEach((e=>{e()})),h.clear(),t.mounted.set(n,!1))}),[i](){y()}}}))},w=(e,{cachePolicy:t,tag:s,...r}={})=>d((t=>n=>z(e(t),{tag:a(s)?s(t):s,...r},{[l]:n})),{cachePolicy:t,keyMaker:n});export{u as Aborted,v as atom,k as atomFamily,z as selector,w as selectorFamily};
1
+ import{i as e,d as t,R as s,a,s as i,e as n,b as o,c,E as l,M as h,U as u}from"./store-BdWcwmvf.js";export{D as DEFAULT_STORE,S as Store,m as makeStore,r as refresh,f as reset}from"./store-BdWcwmvf.js";class d extends Error{}class g{#e;#t;#s;constructor(e){this.#e=new Map,this.#t=new Map,this.#s=e}#r(e){const t=this.#e.get(e);t&&(t.controller.abort(),this.#e.delete(e),this.#t.delete(e))}#a(){for(const e of this.#e.keys())if(!((this.#t.get(e)??0)>0))return void this.#r(e)}has(e){return this.#e.has(e)}get(e){const t=this.#e.get(e);if(t)return this.#e.delete(e),this.#e.set(e,t),t.value}set(e,t){this.#e.has(e)?this.#r(e):this.#e.size>=this.#s&&this.#a();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return!!this.#e.has(e)&&(this.#r(e),!0)}clear(){for(const e of this.#e.keys())this.#r(e)}retain(e){this.#t.set(e,(this.#t.get(e)??0)+1)}release(e){const t=this.#t.get(e)??0;t>0&&this.#t.set(e,t-1),0===(this.#t.get(e)??0)&&(this.#t.delete(e),this.#e.size>this.#s&&this.#a())}}const v=(t,{cachePolicy:s={type:"keep-all"},keyMaker:r=e}={})=>{const a=(e=>{switch(e.type){case"keep-all":return new g(Number.POSITIVE_INFINITY);case"most-recent":return new g(1);case"lru":return new g(e.maxSize);default:return e}})(s);return e=>{const s=r(e);return a.has(s)||a.set(s,t(e,{retain:()=>a.retain(s),release:()=>a.release(s)})),a.get(s)}};let k=0;const z=(e,{tag:r,effects:i,areValuesEqual:n=t}={})=>{const o=e,c=`a${r?`-${r}`:""}-${k++}`;return v((e=>()=>{const t=new Set,r=new Set;e.value.set(c,o),e.version.set(c,1);const l=(s=!1)=>i=>{if(!e.initialized.get(c))return;const o=e.value.get(c),l=a(i)?i(o):i;n(o,l)||((()=>{const t=e.version.get(c)??0;e.version.set(c,t+1)})(),e.value.set(c,l),[...t].forEach((e=>e(l))),s||r.forEach((e=>e(l))))},h=l(),u=l(!0);return{key:c,get:()=>(e.initialized.get(c)||(e.value.set(c,o),i?.forEach((t=>t({init(t){e.initialized.get(c)||e.value.set(c,t)},set:u,onSet(e){r.add(e)}}))),e.initialized.set(c,!0)),e.value.get(c)),set:h,subscribe:e=>(t.add(e),()=>{t.delete(e)}),[s](){h(o)}}}))},p=(e,{tag:t,...s}={})=>v((r=>()=>z(a(e)?e(r):e,{tag:a(t)?t(r):t,...s})),{keyMaker:i});let w=0;const y=(e,{tag:s,areValuesEqual:r=t}={},{[l]:a,[h]:i,[u]:f}={})=>{const g=`s${s?`-${s}`:""}-${w++}`;return v((t=>()=>{const s=new Map;t.deps.set(g,s);const l=new Set,h=new Set;a?.addEventListener("abort",(()=>{n(t,g)}),{once:!0});let u=null;const v=new Set,k=e=>{const s=t.deps.get(e);if(!s||!s.size)return!1;for(const[e,r]of s.entries())if(t.version.get(e)!==r)return!0;for(const e of s.keys())if(k(e))return!0;return!1};let z=0;const p=()=>{s.clear(),l.clear(),h.forEach((e=>e())),h.clear(),u?.abort(new d),u=new AbortController;const a=e({get:(i=++z,e=>{const r=e(t),a=r.get();if(!s.has(r.key)&&i===z){s.set(r.key,t.version.get(r.key)??0);const e=()=>r.subscribe((()=>{m()}));l.add(e),t.mounted.get(g)&&h.add(e())}return a}),signal:u.signal});var i;if(!(!t.value.has(g)||!r(t.value.get(g),a)))return;if((()=>{const e=t.version.get(g)??0;t.version.set(g,e+1)})(),t.value.set(g,a),[...v].forEach((e=>e(t.value.get(g)))),!c(a))return;const n=t.version.get(g);a.then(void 0,(()=>{n===t.version.get(g)&&t.initialized.set(g,!1)}))},m=()=>{t.mounted.get(g)?p():t.initialized.set(g,!1)};return{key:g,get(){switch(!0){case!t.initialized.get(g):p(),t.initialized.set(g,!0);break;case k(g):p()}return t.value.get(g)},subscribe:e=>(0===v.size&&(l.forEach((e=>{h.add(e())})),t.mounted.set(g,!0),i?.()),v.add(e),function(){v.delete(e),0===v.size&&(h.forEach((e=>{e()})),h.clear(),t.mounted.set(g,!1),f?.())}),[o](){m()}}}))},E=(e,{cachePolicy:t,tag:s,...r}={})=>v(((t,{retain:i,release:n})=>o=>y(e(t),{tag:a(s)?s(t):s,...r},{[l]:o,[h]:i,[u]:n})),{cachePolicy:t,keyMaker:i});export{d as Aborted,z as atom,p as atomFamily,y as selector,E as selectorFamily};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("./store-CtFDhBEG.js");class t extends Error{}class s{#e;#t;constructor(e){this.#e=new Map,this.#t=e}#s(){const e=this.#e.keys().next().value;e&&(this.#e.get(e)?.controller.abort(),this.#e.delete(e))}has(e){return this.#e.has(e)}get(e){const t=this.#e.get(e);if(t)return this.#e.delete(e),this.#e.set(e,t),t.value}set(e,t){this.#e.has(e)?this.#e.delete(e):this.#e.size>=this.#t&&this.#s();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return this.#e.delete(e)}clear(){this.#e.clear()}}const r=(t,{cachePolicy:r={type:"keep-all"},keyMaker:a=e.identity}={})=>{const n=(e=>{switch(e.type){case"keep-all":return new s(Number.POSITIVE_INFINITY);case"most-recent":return new s(1);case"lru":return new s(e.maxSize);default:return e}})(r);return e=>{const s=a(e);return n.has(s)||n.set(s,t(e)),n.get(s)}};let a=0;const n=(t,{tag:s,effects:n,areValuesEqual:i=e.dejaVu}={})=>{const c=t,o=`a${s?`-${s}`:""}-${a++}`;return r((t=>()=>{const s=new Set,r=new Set;t.value.set(o,c),t.version.set(o,1);const a=(a=!1)=>n=>{if(!t.initialized.get(o))return;const c=t.value.get(o),l=e.isFunction(n)?n(c):n;i(c,l)||((()=>{const e=t.version.get(o)??0;t.version.set(o,e+1)})(),t.value.set(o,l),[...s].forEach((e=>e(l))),a||r.forEach((e=>e(l))))},l=a(),u=a(!0);return{key:o,get:()=>(t.initialized.get(o)||(t.value.set(o,c),n?.forEach((e=>e({init(e){t.initialized.get(o)||t.value.set(o,e)},set:u,onSet(e){r.add(e)}}))),t.initialized.set(o,!0)),t.value.get(o)),set:l,subscribe:e=>(s.add(e),()=>{s.delete(e)}),[e.RESET_TAG](){l(c)}}}))};let i=0;const c=(s,{tag:a,areValuesEqual:n=e.dejaVu}={},{[e.ERASE_TAG]:c}={})=>{const o=`s${a?`-${a}`:""}-${i++}`;return r((r=>()=>{const a=new Map;r.deps.set(o,a);const i=new Set,l=new Set;c?.addEventListener("abort",(()=>{e.erase(r,o)}),{once:!0});let u=null;const h=new Set,d=e=>{const t=r.deps.get(e);if(!t||!t.size)return!1;for(const[e,s]of t.entries())if(r.version.get(e)!==s)return!0;for(const e of t.keys())if(d(e))return!0;return!1};let g=0;const v=()=>{a.clear(),i.clear(),l.forEach((e=>e())),l.clear(),u?.abort(new t),u=new AbortController;const c=s({get:(d=++g,e=>{const t=e(r),s=t.get();if(!a.has(t.key)&&d===g){a.set(t.key,r.version.get(t.key)??0);const e=()=>t.subscribe((()=>{f()}));i.add(e),r.mounted.get(o)&&l.add(e())}return s}),signal:u.signal});var d;if(!(!r.value.has(o)||!n(r.value.get(o),c)))return;if((()=>{const e=r.version.get(o)??0;r.version.set(o,e+1)})(),r.value.set(o,c),[...h].forEach((e=>e(r.value.get(o)))),!e.isPromiseLike(c))return;const v=r.version.get(o);c.then(void 0,(()=>{v===r.version.get(o)&&r.initialized.set(o,!1)}))},f=()=>{r.mounted.get(o)?v():r.initialized.set(o,!1)};return{key:o,get(){switch(!0){case!r.initialized.get(o):v(),r.initialized.set(o,!0);break;case d(o):v()}return r.value.get(o)},subscribe:e=>(0===h.size&&(i.forEach((e=>{l.add(e())})),r.mounted.set(o,!0)),h.add(e),function(){h.delete(e),0===h.size&&(l.forEach((e=>{e()})),l.clear(),r.mounted.set(o,!1))}),[e.REFRESH_TAG](){f()}}}))};exports.DEFAULT_STORE=e.DEFAULT_STORE,exports.Store=e.Store,exports.makeStore=e.makeStore,exports.refresh=e.refresh,exports.reset=e.reset,exports.Aborted=t,exports.atom=n,exports.atomFamily=(t,{tag:s,...a}={})=>r((r=>()=>n(e.isFunction(t)?t(r):t,{tag:e.isFunction(s)?s(r):s,...a})),{keyMaker:e.stableStringify}),exports.selector=c,exports.selectorFamily=(t,{cachePolicy:s,tag:a,...n}={})=>r((s=>r=>c(t(s),{tag:e.isFunction(a)?a(s):a,...n},{[e.ERASE_TAG]:r})),{cachePolicy:s,keyMaker:e.stableStringify});
1
+ "use strict";var e=require("./store-CEFia5bi.js");class t extends Error{}class s{#e;#t;#s;constructor(e){this.#e=new Map,this.#t=new Map,this.#s=e}#r(e){const t=this.#e.get(e);t&&(t.controller.abort(),this.#e.delete(e),this.#t.delete(e))}#i(){for(const e of this.#e.keys())if(!((this.#t.get(e)??0)>0))return void this.#r(e)}has(e){return this.#e.has(e)}get(e){const t=this.#e.get(e);if(t)return this.#e.delete(e),this.#e.set(e,t),t.value}set(e,t){this.#e.has(e)?this.#r(e):this.#e.size>=this.#s&&this.#i();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return!!this.#e.has(e)&&(this.#r(e),!0)}clear(){for(const e of this.#e.keys())this.#r(e)}retain(e){this.#t.set(e,(this.#t.get(e)??0)+1)}release(e){const t=this.#t.get(e)??0;t>0&&this.#t.set(e,t-1),0===(this.#t.get(e)??0)&&(this.#t.delete(e),this.#e.size>this.#s&&this.#i())}}const r=(t,{cachePolicy:r={type:"keep-all"},keyMaker:i=e.identity}={})=>{const n=(e=>{switch(e.type){case"keep-all":return new s(Number.POSITIVE_INFINITY);case"most-recent":return new s(1);case"lru":return new s(e.maxSize);default:return e}})(r);return e=>{const s=i(e);return n.has(s)||n.set(s,t(e,{retain:()=>n.retain(s),release:()=>n.release(s)})),n.get(s)}};let i=0;const n=(t,{tag:s,effects:n,areValuesEqual:a=e.dejaVu}={})=>{const o=t,c=`a${s?`-${s}`:""}-${i++}`;return r((t=>()=>{const s=new Set,r=new Set;t.value.set(c,o),t.version.set(c,1);const i=(i=!1)=>n=>{if(!t.initialized.get(c))return;const o=t.value.get(c),l=e.isFunction(n)?n(o):n;a(o,l)||((()=>{const e=t.version.get(c)??0;t.version.set(c,e+1)})(),t.value.set(c,l),[...s].forEach((e=>e(l))),i||r.forEach((e=>e(l))))},l=i(),u=i(!0);return{key:c,get:()=>(t.initialized.get(c)||(t.value.set(c,o),n?.forEach((e=>e({init(e){t.initialized.get(c)||t.value.set(c,e)},set:u,onSet(e){r.add(e)}}))),t.initialized.set(c,!0)),t.value.get(c)),set:l,subscribe:e=>(s.add(e),()=>{s.delete(e)}),[e.RESET_TAG](){l(o)}}}))};let a=0;const o=(s,{tag:i,areValuesEqual:n=e.dejaVu}={},{[e.ERASE_TAG]:o,[e.MOUNT_TAG]:c,[e.UNMOUNT_TAG]:l}={})=>{const u=`s${i?`-${i}`:""}-${a++}`;return r((r=>()=>{const i=new Map;r.deps.set(u,i);const a=new Set,h=new Set;o?.addEventListener("abort",(()=>{e.erase(r,u)}),{once:!0});let d=null;const f=new Set,g=e=>{const t=r.deps.get(e);if(!t||!t.size)return!1;for(const[e,s]of t.entries())if(r.version.get(e)!==s)return!0;for(const e of t.keys())if(g(e))return!0;return!1};let v=0;const p=()=>{i.clear(),a.clear(),h.forEach((e=>e())),h.clear(),d?.abort(new t),d=new AbortController;const o=s({get:(c=++v,e=>{const t=e(r),s=t.get();if(!i.has(t.key)&&c===v){i.set(t.key,r.version.get(t.key)??0);const e=()=>t.subscribe((()=>{E()}));a.add(e),r.mounted.get(u)&&h.add(e())}return s}),signal:d.signal});var c;if(!(!r.value.has(u)||!n(r.value.get(u),o)))return;if((()=>{const e=r.version.get(u)??0;r.version.set(u,e+1)})(),r.value.set(u,o),[...f].forEach((e=>e(r.value.get(u)))),!e.isPromiseLike(o))return;const l=r.version.get(u);o.then(void 0,(()=>{l===r.version.get(u)&&r.initialized.set(u,!1)}))},E=()=>{r.mounted.get(u)?p():r.initialized.set(u,!1)};return{key:u,get(){switch(!0){case!r.initialized.get(u):p(),r.initialized.set(u,!0);break;case g(u):p()}return r.value.get(u)},subscribe:e=>(0===f.size&&(a.forEach((e=>{h.add(e())})),r.mounted.set(u,!0),c?.()),f.add(e),function(){f.delete(e),0===f.size&&(h.forEach((e=>{e()})),h.clear(),r.mounted.set(u,!1),l?.())}),[e.REFRESH_TAG](){E()}}}))};exports.DEFAULT_STORE=e.DEFAULT_STORE,exports.Store=e.Store,exports.makeStore=e.makeStore,exports.refresh=e.refresh,exports.reset=e.reset,exports.Aborted=t,exports.atom=n,exports.atomFamily=(t,{tag:s,...i}={})=>r((r=>()=>n(e.isFunction(t)?t(r):t,{tag:e.isFunction(s)?s(r):s,...i})),{keyMaker:e.stableStringify}),exports.selector=o,exports.selectorFamily=(t,{cachePolicy:s,tag:i,...n}={})=>r(((s,{retain:r,release:a})=>c=>o(t(s),{tag:e.isFunction(i)?i(s):i,...n},{[e.ERASE_TAG]:c,[e.MOUNT_TAG]:r,[e.UNMOUNT_TAG]:a})),{cachePolicy:s,keyMaker:e.stableStringify});
@@ -3,6 +3,8 @@ export { default as stableStringify } from 'fast-json-stable-stringify';
3
3
  export declare const REFRESH_TAG: unique symbol;
4
4
  export declare const RESET_TAG: unique symbol;
5
5
  export declare const ERASE_TAG: unique symbol;
6
+ export declare const MOUNT_TAG: unique symbol;
7
+ export declare const UNMOUNT_TAG: unique symbol;
6
8
  export declare const dejaVu: <T>(a: T, b: T) => boolean;
7
9
  export declare const identity: <T>(arg: T) => T;
8
10
  export type TypedOmit<T, K extends keyof T> = Omit<T, K>;
package/dist/react.esm.js CHANGED
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as t,useMemo as o,useRef as s,useState as n,useEffect as c,useCallback as u}from"react";import{D as a,m as i,r as m,f as p}from"./store-BlOVE6Q3.js";const l=e({store:a}),d=({store:e,children:t})=>{const s=o((()=>({store:e??i()})),[e]);return r(l.Provider,{value:s,children:t})},g=()=>t(l),y=r=>{const{store:e}=g(),t=r(e),o=s(t),[u,a]=n((()=>t.get()));return c((()=>(t!==o.current&&(o.current=t,a(t.get())),t.subscribe(a))),[t]),u},f=r=>{const{store:e}=g();return r(e).set},h=r=>[y(r),f(r)],v=r=>{const e=y(r),[t,o]=n({type:"loading"});return c((()=>{let r=!0;return o({type:"loading"}),e.then((e=>{r&&o({type:"ready",value:e})}),(e=>{r&&o({type:"error",reason:e?.message??"unknown"})})),()=>{r=!1}}),[e]),t},b=r=>{const{store:e}=g(),t=r(e);return u((()=>{m(t)}),[t])},j=r=>{const{store:e}=g(),t=r(e);return u((()=>{p(t)}),[t])};export{d as StanProvider,f as useSetStanValue,h as useStan,g as useStanCtx,b as useStanRefresh,j as useStanReset,y as useStanValue,v as useStanValueAsync};
1
+ import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as t,useMemo as o,useRef as s,useState as n,useEffect as c,useCallback as u}from"react";import{D as a,m as i,r as m,f as p}from"./store-BdWcwmvf.js";const l=e({store:a}),d=({store:e,children:t})=>{const s=o((()=>({store:e??i()})),[e]);return r(l.Provider,{value:s,children:t})},g=()=>t(l),y=r=>{const{store:e}=g(),t=r(e),o=s(t),[u,a]=n((()=>t.get()));return c((()=>(t!==o.current&&(o.current=t,a(t.get())),t.subscribe(a))),[t]),u},f=r=>{const{store:e}=g();return r(e).set},h=r=>[y(r),f(r)],v=r=>{const e=y(r),[t,o]=n({type:"loading"});return c((()=>{let r=!0;return o({type:"loading"}),e.then((e=>{r&&o({type:"ready",value:e})}),(e=>{r&&o({type:"error",reason:e?.message??"unknown"})})),()=>{r=!1}}),[e]),t},b=r=>{const{store:e}=g(),t=r(e);return u((()=>{m(t)}),[t])},j=r=>{const{store:e}=g(),t=r(e);return u((()=>{p(t)}),[t])};export{d as StanProvider,f as useSetStanValue,h as useStan,g as useStanCtx,b as useStanRefresh,j as useStanReset,y as useStanValue,v as useStanValueAsync};
package/dist/react.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("./store-CtFDhBEG.js");const s=t.createContext({store:r.DEFAULT_STORE}),n=()=>t.useContext(s),u=e=>{const{store:r}=n(),s=e(r),u=t.useRef(s),[o,a]=t.useState((()=>s.get()));return t.useEffect((()=>(s!==u.current&&(u.current=s,a(s.get())),s.subscribe(a))),[s]),o},o=e=>{const{store:t}=n();return e(t).set};exports.StanProvider=({store:n,children:u})=>{const o=t.useMemo((()=>({store:n??r.makeStore()})),[n]);return e.jsx(s.Provider,{value:o,children:u})},exports.useSetStanValue=o,exports.useStan=e=>[u(e),o(e)],exports.useStanCtx=n,exports.useStanRefresh=e=>{const{store:s}=n(),u=e(s);return t.useCallback((()=>{r.refresh(u)}),[u])},exports.useStanReset=e=>{const{store:s}=n(),u=e(s);return t.useCallback((()=>{r.reset(u)}),[u])},exports.useStanValue=u,exports.useStanValueAsync=e=>{const r=u(e),[s,n]=t.useState({type:"loading"});return t.useEffect((()=>{let e=!0;return n({type:"loading"}),r.then((t=>{e&&n({type:"ready",value:t})}),(t=>{e&&n({type:"error",reason:t?.message??"unknown"})})),()=>{e=!1}}),[r]),s};
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("./store-CEFia5bi.js");const s=t.createContext({store:r.DEFAULT_STORE}),n=()=>t.useContext(s),u=e=>{const{store:r}=n(),s=e(r),u=t.useRef(s),[o,a]=t.useState((()=>s.get()));return t.useEffect((()=>(s!==u.current&&(u.current=s,a(s.get())),s.subscribe(a))),[s]),o},o=e=>{const{store:t}=n();return e(t).set};exports.StanProvider=({store:n,children:u})=>{const o=t.useMemo((()=>({store:n??r.makeStore()})),[n]);return e.jsx(s.Provider,{value:o,children:u})},exports.useSetStanValue=o,exports.useStan=e=>[u(e),o(e)],exports.useStanCtx=n,exports.useStanRefresh=e=>{const{store:s}=n(),u=e(s);return t.useCallback((()=>{r.refresh(u)}),[u])},exports.useStanReset=e=>{const{store:s}=n(),u=e(s);return t.useCallback((()=>{r.reset(u)}),[u])},exports.useStanValue=u,exports.useStanValueAsync=e=>{const r=u(e),[s,n]=t.useState({type:"loading"});return t.useEffect((()=>{let e=!0;return n({type:"loading"}),r.then((t=>{e&&n({type:"ready",value:t})}),(t=>{e&&n({type:"error",reason:t?.message??"unknown"})})),()=>{e=!1}}),[r]),s};
@@ -1,4 +1,4 @@
1
- import { ERASE_TAG, type TypedOmit } from './internal';
1
+ import { ERASE_TAG, MOUNT_TAG, UNMOUNT_TAG, type TypedOmit } from './internal';
2
2
  import type { SerializableParam, TagFromParam } from './types';
3
3
  import type { ReadonlyState, State, Scoped } from './state';
4
4
  import { type CachePolicy } from './cache';
@@ -15,8 +15,10 @@ export type SelectorOptions = {
15
15
  };
16
16
  export type SelectorCtx = {
17
17
  [ERASE_TAG]?: AbortSignal;
18
+ [MOUNT_TAG]?: () => void;
19
+ [UNMOUNT_TAG]?: () => void;
18
20
  };
19
- export declare const selector: <T>(selectorFn: SelectorFn<T>, { tag, areValuesEqual }?: SelectorOptions, { [ERASE_TAG]: eraseSignal }?: SelectorCtx) => Scoped<ReadonlyState<T>>;
21
+ export declare const selector: <T>(selectorFn: SelectorFn<T>, { tag, areValuesEqual }?: SelectorOptions, { [ERASE_TAG]: eraseSignal, [MOUNT_TAG]: onMountCb, [UNMOUNT_TAG]: onUnmountCb, }?: SelectorCtx) => Scoped<ReadonlyState<T>>;
20
22
  export type SelectorFamilyFn<T, P extends SerializableParam> = (param: P) => SelectorFn<T>;
21
23
  export type SelectorFamilyOptions<P extends SerializableParam> = TypedOmit<SelectorOptions, 'tag'> & {
22
24
  tag?: string | TagFromParam<P>;
@@ -0,0 +1 @@
1
+ function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,n;var r=e(n?t:(n=1,t=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,r="boolean"==typeof t.cycles&&t.cycles,o=t.cmp&&(n=t.cmp,function(e){return function(t,r){var o={key:t,value:e[t]},a={key:r,value:e[r]};return n(o,a)}}),a=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,i;if(Array.isArray(t)){for(i="[",n=0;n<t.length;n++)n&&(i+=","),i+=e(t[n])||"null";return i+"]"}if(null===t)return"null";if(-1!==a.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=a.push(t)-1,u=Object.keys(t).sort(o&&o(t));for(i="",n=0;n<u.length;n++){var c=u[n],l=e(t[c]);l&&(i&&(i+=","),i+=JSON.stringify(c)+":"+l)}return a.splice(s,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh@@"),a=Symbol("@@reset@@"),i=Symbol("@@erase@@"),s=Symbol("@@mount@@"),u=Symbol("@@unmount@@"),c=(e,t)=>e===t,l=e=>e,f=["[object AsyncFunction]","[object AsyncGeneratorFunction]","[object GeneratorFunction]","[object Function]"],y=e=>f.includes(Object.prototype.toString.call(e)),p=e=>!!e&&y(e.then),d=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},b=e=>{e[o]()},v=e=>{e[a]()};class m{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const S=()=>new m,O=S();export{O as D,i as E,s as M,a as R,m as S,u as U,y as a,o as b,p as c,c as d,d as e,v as f,l as i,S as m,b as r,r as s};
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,r;var n=e(r?t:(r=1,t=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r,n="boolean"==typeof t.cycles&&t.cycles,o=t.cmp&&(r=t.cmp,function(e){return function(t,n){var o={key:t,value:e[t]},i={key:n,value:e[n]};return r(o,i)}}),i=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var r,s;if(Array.isArray(t)){for(s="[",r=0;r<t.length;r++)r&&(s+=","),s+=e(t[r])||"null";return s+"]"}if(null===t)return"null";if(-1!==i.indexOf(t)){if(n)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=i.push(t)-1,c=Object.keys(t).sort(o&&o(t));for(s="",r=0;r<c.length;r++){var l=c[r],p=e(t[l]);p&&(s&&(s+=","),s+=JSON.stringify(l)+":"+p)}return i.splice(u,1),"{"+s+"}"}}(e)}));const o=Symbol("@@refresh@@"),i=Symbol("@@reset@@"),s=Symbol("@@erase@@"),u=["[object AsyncFunction]","[object AsyncGeneratorFunction]","[object GeneratorFunction]","[object Function]"],c=e=>u.includes(Object.prototype.toString.call(e));class l{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const p=()=>new l,a=p();exports.DEFAULT_STORE=a,exports.ERASE_TAG=s,exports.REFRESH_TAG=o,exports.RESET_TAG=i,exports.Store=l,exports.dejaVu=(e,t)=>e===t,exports.erase=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},exports.identity=e=>e,exports.isFunction=c,exports.isPromiseLike=e=>!!e&&c(e.then),exports.makeStore=p,exports.refresh=e=>{e[o]()},exports.reset=e=>{e[i]()},exports.stableStringify=n;
1
+ "use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,r;var n=e(r?t:(r=1,t=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r,n="boolean"==typeof t.cycles&&t.cycles,o=t.cmp&&(r=t.cmp,function(e){return function(t,n){var o={key:t,value:e[t]},i={key:n,value:e[n]};return r(o,i)}}),i=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var r,s;if(Array.isArray(t)){for(s="[",r=0;r<t.length;r++)r&&(s+=","),s+=e(t[r])||"null";return s+"]"}if(null===t)return"null";if(-1!==i.indexOf(t)){if(n)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=i.push(t)-1,c=Object.keys(t).sort(o&&o(t));for(s="",r=0;r<c.length;r++){var l=c[r],p=e(t[l]);p&&(s&&(s+=","),s+=JSON.stringify(l)+":"+p)}return i.splice(u,1),"{"+s+"}"}}(e)}));const o=Symbol("@@refresh@@"),i=Symbol("@@reset@@"),s=Symbol("@@erase@@"),u=Symbol("@@mount@@"),c=Symbol("@@unmount@@"),l=["[object AsyncFunction]","[object AsyncGeneratorFunction]","[object GeneratorFunction]","[object Function]"],p=e=>l.includes(Object.prototype.toString.call(e));class a{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const f=()=>new a,y=f();exports.DEFAULT_STORE=y,exports.ERASE_TAG=s,exports.MOUNT_TAG=u,exports.REFRESH_TAG=o,exports.RESET_TAG=i,exports.Store=a,exports.UNMOUNT_TAG=c,exports.dejaVu=(e,t)=>e===t,exports.erase=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},exports.identity=e=>e,exports.isFunction=p,exports.isPromiseLike=e=>!!e&&p(e.then),exports.makeStore=f,exports.refresh=e=>{e[o]()},exports.reset=e=>{e[i]()},exports.stableStringify=n;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rkrupinski/stan",
3
3
  "description": "Minimal, type-safe state management",
4
- "version": "1.3.3",
4
+ "version": "1.3.4",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.esm.js",
7
7
  "types": "./dist/index.d.ts",
@@ -1 +0,0 @@
1
- function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,n;var r=e(n?t:(n=1,t=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,r="boolean"==typeof t.cycles&&t.cycles,o=t.cmp&&(n=t.cmp,function(e){return function(t,r){var o={key:t,value:e[t]},a={key:r,value:e[r]};return n(o,a)}}),a=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,i;if(Array.isArray(t)){for(i="[",n=0;n<t.length;n++)n&&(i+=","),i+=e(t[n])||"null";return i+"]"}if(null===t)return"null";if(-1!==a.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=a.push(t)-1,c=Object.keys(t).sort(o&&o(t));for(i="",n=0;n<c.length;n++){var u=c[n],l=e(t[u]);l&&(i&&(i+=","),i+=JSON.stringify(u)+":"+l)}return a.splice(s,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh@@"),a=Symbol("@@reset@@"),i=Symbol("@@erase@@"),s=(e,t)=>e===t,c=e=>e,u=["[object AsyncFunction]","[object AsyncGeneratorFunction]","[object GeneratorFunction]","[object Function]"],l=e=>u.includes(Object.prototype.toString.call(e)),f=e=>!!e&&l(e.then),y=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},p=e=>{e[o]()},d=e=>{e[a]()};class v{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const b=()=>new v,O=b();export{O as D,i as E,a as R,v as S,l as a,o as b,f as c,s as d,y as e,d as f,c as i,b as m,p as r,r as s};