@rkrupinski/stan 1.5.1-rc1 → 1.6.0

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/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{i as e,d as t,R as s,a,s as i,e as n,b as c,c as o,E as l,M as h,U as u}from"./store-D_uSq-w8.js";export{D as DEFAULT_STORE,S as Store,m as makeStore,r as refresh,f as reset}from"./store-D_uSq-w8.js";class d extends Error{}class g{#e;#t;#s;constructor(e){this.#e=new Map,this.#t=new Map,this.#s=e}#a(e){const t=this.#e.get(e);t&&(t.controller.abort(),this.#e.delete(e),this.#t.delete(e))}#r(){for(const e of this.#e.keys())if(!((this.#t.get(e)??0)>0))return void this.#a(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.#a(e):this.#e.size>=this.#s&&this.#r();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return!!this.#e.has(e)&&(this.#a(e),!0)}clear(){for(const e of this.#e.keys())this.#a(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.#r())}}const v=(t,{cachePolicy:s={type:"keep-all"},keyMaker:a=e}={})=>{const r=(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=a(e);return r.has(s)||r.set(s,t(e,{retain:()=>r.retain(s),release:()=>r.release(s)})),r.get(s)}};let k=0;const w=(e,{tag:r,effects:i,areValuesEqual:n=t}={})=>{const c=e,o=`a${r?`-${r}`:""}-${k++}`;return v((e=>()=>{const t=new Set,r=new Set;e.value.set(o,c),e.version.set(o,1);const l=(s=!1)=>i=>{if(!e.initialized.get(o))return;const c=e.value.get(o),l=a(i)?i(c):i;n(c,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))))},h=l(),u=l(!0);return{key:o,get:()=>(e.initialized.get(o)||(e.value.set(o,c),i?.forEach((t=>t({init(t){e.initialized.get(o)||e.value.set(o,t)},set:u,onSet(e){r.add(e)}}))),e.initialized.set(o,!0)),e.value.get(o)),set:h,subscribe:e=>(t.add(e),()=>{t.delete(e)}),[s](){h(c)}}}))},p=(e,{tag:t,...s}={})=>v((r=>()=>w(a(e)?e(r):e,{tag:a(t)?t(r):t,...s})),{keyMaker:i});let z=0;const b=(e,{tag:s,areValuesEqual:a=t}={},{[l]:r,[h]:i,[u]:g}={})=>{const f=`s${s?`-${s}`:""}-${z++}`;return v((t=>()=>{const s=new Map;t.deps.set(f,s);const l=new Set,h=new Set;let u=null;r?.addEventListener("abort",(()=>{u?.abort(new d),n(t,f)}),{once:!0});const v=new Set;let k=0;const w=()=>{s.clear(),l.clear(),h.forEach((e=>e())),h.clear(),u?.abort(new d),u=new AbortController;const r=e({get:(i=++k,e=>{const a=e(t),r=a.get();if(!s.has(a.key)&&i===k){s.set(a.key,t.version.get(a.key)??0);const e=()=>a.subscribe((()=>{m()}));l.add(e),t.mounted.get(f)&&h.add(e())}return r}),signal:u.signal});var i;(!t.value.has(f)||!a(t.value.get(f),r))&&((()=>{const e=t.version.get(f)??0;t.version.set(f,e+1)})(),t.value.set(f,r),[...v].forEach((e=>e(t.value.get(f)))))},m=()=>{t.mounted.get(f)?w():t.initialized.set(f,!1)};return{key:f,get(){switch(!0){case!t.initialized.get(f):w(),t.initialized.set(f,!0);break;case o(t,f):w()}return t.value.get(f)},subscribe:e=>(0===v.size&&(l.forEach((e=>{h.add(e())})),t.mounted.set(f,!0),i?.()),v.add(e),function(){v.delete(e),0===v.size&&(h.forEach((e=>{e()})),h.clear(),t.mounted.set(f,!1),g?.())}),[c](){m()}}}))},y=(e,{cachePolicy:t,tag:s,...r}={})=>v(((t,{retain:i,release:n})=>c=>b(e(t),{tag:a(s)?s(t):s,...r},{[l]:c,[h]:i,[u]:n})),{cachePolicy:t,keyMaker:i});export{d as Aborted,w as atom,p as atomFamily,b as selector,y as selectorFamily};
1
+ import{i as e,d as t,R as s,a,s as n,e as i,b as c,c as o,E as h,M as l,U as u}from"./store-_qrBrIqS.js";export{D as DEFAULT_STORE,S as Store,m as makeStore,r as refresh,f as reset}from"./store-_qrBrIqS.js";class d extends Error{}class g{#e;#t;#s;constructor(e){this.#e=new Map,this.#t=new Map,this.#s=e}#a(e){const t=this.#e.get(e);t&&(t.controller.abort(),this.#e.delete(e),this.#t.delete(e))}#r(){for(const e of this.#e.keys())if(!((this.#t.get(e)??0)>0))return void this.#a(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.#a(e):this.#e.size>=this.#s&&this.#r();const s=new AbortController;this.#e.set(e,{value:t(s.signal),controller:s})}delete(e){return!!this.#e.has(e)&&(this.#a(e),!0)}clear(){for(const e of this.#e.keys())this.#a(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.#r())}}const v=(t,{cachePolicy:s={type:"keep-all"},keyMaker:a=e}={})=>{const r=(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=a(e);return r.has(s)||r.set(s,t(e,{retain:()=>r.retain(s),release:()=>r.release(s)})),r.get(s)}};let k=0;const w=(e,{tag:r,effects:n,areValuesEqual:i=t}={})=>{const c=e,o=`a${r?`-${r}`:""}-${k++}`;return v((e=>()=>{const t=new Set,r=new Set;e.value.set(o,c),e.version.set(o,1);const h=(s=!1)=>n=>{d();const c=e.value.get(o),h=a(n)?n(c):n;i(c,h)||((()=>{const t=e.version.get(o)??0;e.version.set(o,t+1)})(),e.value.set(o,h),[...t].forEach((e=>e(h))),s||r.forEach((e=>e(h))))},l=h(),u=h(!0),d=()=>{if(e.initialized.get(o))return;e.value.set(o,c),e.initialized.set(o,!0);let t=!0;n?.forEach((s=>s({init(s){t&&e.value.set(o,s)},set:u,onSet(e){r.add(e)}}))),t=!1};return{key:o,get:()=>(d(),e.value.get(o)),set:l,subscribe:e=>(t.add(e),()=>{t.delete(e)}),[s](){l(c)}}}))},p=(e,{tag:t,...s}={})=>v((r=>()=>w(a(e)?e(r):e,{tag:a(t)?t(r):t,...s})),{keyMaker:n});let b=0;const y=(e,{tag:s,areValuesEqual:a=t}={},{[h]:r,[l]:n,[u]:f}={})=>{const g=`s${s?`-${s}`:""}-${b++}`;return v((t=>()=>{const s=new Map;t.deps.set(g,s);const h=new Set,l=new Set;let u=null;r?.addEventListener("abort",(()=>{u?.abort(new d),i(t,g)}),{once:!0});const v=new Set;let k=0;const w=()=>{s.clear(),h.clear(),l.forEach((e=>e())),l.clear(),u?.abort(new d),u=new AbortController;const r=e({get:(n=++k,e=>{const a=e(t),r=a.get();if(!s.has(a.key)&&n===k){s.set(a.key,t.version.get(a.key)??0);const e=()=>a.subscribe((()=>{m()}));h.add(e),t.mounted.get(g)&&l.add(e())}return r}),signal:u.signal});var n;(!t.value.has(g)||!a(t.value.get(g),r))&&((()=>{const e=t.version.get(g)??0;t.version.set(g,e+1)})(),t.value.set(g,r),[...v].forEach((e=>e(t.value.get(g)))))},m=()=>{t.mounted.get(g)?w():t.initialized.set(g,!1)};return{key:g,get(){switch(!0){case!t.initialized.get(g):w(),t.initialized.set(g,!0);break;case o(t,g):w()}return t.value.get(g)},subscribe:e=>(0===v.size&&(h.forEach((e=>{l.add(e())})),t.mounted.set(g,!0),n?.()),v.add(e),function(){v.delete(e),0===v.size&&(l.forEach((e=>{e()})),l.clear(),t.mounted.set(g,!1),f?.())}),[c](){m()}}}))},E=(e,{cachePolicy:t,tag:s,...r}={})=>v(((t,{retain:n,release:i})=>c=>y(e(t),{tag:a(s)?s(t):s,...r},{[h]:c,[l]:n,[u]:i})),{cachePolicy:t,keyMaker:n});export{d as Aborted,w 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-DiTSwUBS.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))}#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 r=(t,{cachePolicy:r={type:"keep-all"},keyMaker:a=e.identity}={})=>{const i=(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 i.has(s)||i.set(s,t(e,{retain:()=>i.retain(s),release:()=>i.release(s)})),i.get(s)}};let a=0;const i=(t,{tag:s,effects:i,areValuesEqual:n=e.dejaVu}={})=>{const o=t,c=`a${s?`-${s}`:""}-${a++}`;return r((t=>()=>{const s=new Set,r=new Set;t.value.set(c,o),t.version.set(c,1);const a=(a=!1)=>i=>{if(!t.initialized.get(c))return;const o=t.value.get(c),l=e.isFunction(i)?i(o):i;n(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))),a||r.forEach((e=>e(l))))},l=a(),h=a(!0);return{key:c,get:()=>(t.initialized.get(c)||(t.value.set(c,o),i?.forEach((e=>e({init(e){t.initialized.get(c)||t.value.set(c,e)},set:h,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 n=0;const o=(s,{tag:a,areValuesEqual:i=e.dejaVu}={},{[e.ERASE_TAG]:o,[e.MOUNT_TAG]:c,[e.UNMOUNT_TAG]:l}={})=>{const h=`s${a?`-${a}`:""}-${n++}`;return r((r=>()=>{const a=new Map;r.deps.set(h,a);const n=new Set,u=new Set;let d=null;o?.addEventListener("abort",(()=>{d?.abort(new t),e.erase(r,h)}),{once:!0});const g=new Set;let f=0;const v=()=>{a.clear(),n.clear(),u.forEach((e=>e())),u.clear(),d?.abort(new t),d=new AbortController;const e=s({get:(o=++f,e=>{const t=e(r),s=t.get();if(!a.has(t.key)&&o===f){a.set(t.key,r.version.get(t.key)??0);const e=()=>t.subscribe((()=>{p()}));n.add(e),r.mounted.get(h)&&u.add(e())}return s}),signal:d.signal});var o;(!r.value.has(h)||!i(r.value.get(h),e))&&((()=>{const e=r.version.get(h)??0;r.version.set(h,e+1)})(),r.value.set(h,e),[...g].forEach((e=>e(r.value.get(h)))))},p=()=>{r.mounted.get(h)?v():r.initialized.set(h,!1)};return{key:h,get(){switch(!0){case!r.initialized.get(h):v(),r.initialized.set(h,!0);break;case e.depsChanged(r,h):v()}return r.value.get(h)},subscribe:e=>(0===g.size&&(n.forEach((e=>{u.add(e())})),r.mounted.set(h,!0),c?.()),g.add(e),function(){g.delete(e),0===g.size&&(u.forEach((e=>{e()})),u.clear(),r.mounted.set(h,!1),l?.())}),[e.REFRESH_TAG](){p()}}}))};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=i,exports.atomFamily=(t,{tag:s,...a}={})=>r((r=>()=>i(e.isFunction(t)?t(r):t,{tag:e.isFunction(s)?s(r):s,...a})),{keyMaker:e.stableStringify}),exports.selector=o,exports.selectorFamily=(t,{cachePolicy:s,tag:a,...i}={})=>r(((s,{retain:r,release:n})=>c=>o(t(s),{tag:e.isFunction(a)?a(s):a,...i},{[e.ERASE_TAG]:c,[e.MOUNT_TAG]:r,[e.UNMOUNT_TAG]:n})),{cachePolicy:s,keyMaker:e.stableStringify});
1
+ "use strict";var e=require("./store-CCFoiVXY.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))}#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 r=(t,{cachePolicy:r={type:"keep-all"},keyMaker:a=e.identity}={})=>{const i=(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 i.has(s)||i.set(s,t(e,{retain:()=>i.retain(s),release:()=>i.release(s)})),i.get(s)}};let a=0;const i=(t,{tag:s,effects:i,areValuesEqual:n=e.dejaVu}={})=>{const o=t,c=`a${s?`-${s}`:""}-${a++}`;return r((t=>()=>{const s=new Set,r=new Set;t.value.set(c,o),t.version.set(c,1);const a=(a=!1)=>i=>{u();const o=t.value.get(c),l=e.isFunction(i)?i(o):i;n(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))),a||r.forEach((e=>e(l))))},l=a(),h=a(!0),u=()=>{if(t.initialized.get(c))return;t.value.set(c,o),t.initialized.set(c,!0);let e=!0;i?.forEach((s=>s({init(s){e&&t.value.set(c,s)},set:h,onSet(e){r.add(e)}}))),e=!1};return{key:c,get:()=>(u(),t.value.get(c)),set:l,subscribe:e=>(s.add(e),()=>{s.delete(e)}),[e.RESET_TAG](){l(o)}}}))};let n=0;const o=(s,{tag:a,areValuesEqual:i=e.dejaVu}={},{[e.ERASE_TAG]:o,[e.MOUNT_TAG]:c,[e.UNMOUNT_TAG]:l}={})=>{const h=`s${a?`-${a}`:""}-${n++}`;return r((r=>()=>{const a=new Map;r.deps.set(h,a);const n=new Set,u=new Set;let d=null;o?.addEventListener("abort",(()=>{d?.abort(new t),e.erase(r,h)}),{once:!0});const g=new Set;let f=0;const v=()=>{a.clear(),n.clear(),u.forEach((e=>e())),u.clear(),d?.abort(new t),d=new AbortController;const e=s({get:(o=++f,e=>{const t=e(r),s=t.get();if(!a.has(t.key)&&o===f){a.set(t.key,r.version.get(t.key)??0);const e=()=>t.subscribe((()=>{p()}));n.add(e),r.mounted.get(h)&&u.add(e())}return s}),signal:d.signal});var o;(!r.value.has(h)||!i(r.value.get(h),e))&&((()=>{const e=r.version.get(h)??0;r.version.set(h,e+1)})(),r.value.set(h,e),[...g].forEach((e=>e(r.value.get(h)))))},p=()=>{r.mounted.get(h)?v():r.initialized.set(h,!1)};return{key:h,get(){switch(!0){case!r.initialized.get(h):v(),r.initialized.set(h,!0);break;case e.depsChanged(r,h):v()}return r.value.get(h)},subscribe:e=>(0===g.size&&(n.forEach((e=>{u.add(e())})),r.mounted.set(h,!0),c?.()),g.add(e),function(){g.delete(e),0===g.size&&(u.forEach((e=>{e()})),u.clear(),r.mounted.set(h,!1),l?.())}),[e.REFRESH_TAG](){p()}}}))};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=i,exports.atomFamily=(t,{tag:s,...a}={})=>r((r=>()=>i(e.isFunction(t)?t(r):t,{tag:e.isFunction(s)?s(r):s,...a})),{keyMaker:e.stableStringify}),exports.selector=o,exports.selectorFamily=(t,{cachePolicy:s,tag:a,...i}={})=>r(((s,{retain:r,release:n})=>c=>o(t(s),{tag:e.isFunction(a)?a(s):a,...i},{[e.ERASE_TAG]:c,[e.MOUNT_TAG]:r,[e.UNMOUNT_TAG]:n})),{cachePolicy:s,keyMaker:e.stableStringify});
package/dist/react.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type FC, type ReactNode } from 'react';
1
+ import { type FC, type ReactNode, type DependencyList } from 'react';
2
2
  import type { Scoped, State, ReadonlyState, WritableState } from './state';
3
3
  import { type Store } from './store';
4
4
  export type StanCtxType = {
@@ -25,3 +25,9 @@ export type AsyncValue<T, E = unknown> = {
25
25
  export declare const useStanValueAsync: <T, E = unknown>(scopedState: Scoped<State<PromiseLike<T>>>) => AsyncValue<T, E>;
26
26
  export declare const useStanRefresh: <T>(scopedState: Scoped<ReadonlyState<T>>) => () => void;
27
27
  export declare const useStanReset: <T>(scopedState: Scoped<WritableState<T>>) => () => void;
28
+ export type StanCallbackHelpers = {
29
+ set: <T>(scopedState: Scoped<WritableState<T>>, valueOrUpdater: T | ((currentValue: T) => T)) => void;
30
+ reset: <T>(scopedState: Scoped<WritableState<T>>) => void;
31
+ refresh: <T>(scopedState: Scoped<ReadonlyState<T>>) => void;
32
+ };
33
+ export declare const useStanCallback: <A extends unknown[], R>(factory: (helpers: StanCallbackHelpers) => (...args: A) => R, deps?: DependencyList) => (...args: A) => R;
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 n,useRef as o,useState as s,useEffect as c,useCallback as u}from"react";import{D as a,m as i,r as l,f as p}from"./store-D_uSq-w8.js";const m=e({store:a}),d=({store:e,children:t})=>{const o=n((()=>({store:e??i()})),[e]);return r(m.Provider,{value:o,children:t})},g=()=>t(m),y=r=>{const{store:e}=g(),t=r(e),n=o(t),[u,a]=s((()=>t.get()));let i=u;t!==n.current&&(i=t.get(),n.current=t,a(i));const l=o(new WeakMap);return l.current.has(t)||l.current.set(t,t.subscribe(a)),c((()=>{const r=l.current;return()=>{const e=r.get(t);e&&(e(),r.delete(t))}}),[t]),i},f=r=>{const{store:e}=g();return r(e).set},h=r=>[y(r),f(r)],v=r=>{const e=y(r),[t,n]=s({type:"loading"});return c((()=>{let r=!0;return n({type:"loading"}),e.then((e=>{r&&n({type:"ready",value:e})}),(e=>{r&&n({type:"error",reason:e})})),()=>{r=!1}}),[e]),t},b=r=>{const{store:e}=g(),t=r(e);return u((()=>{l(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 n,useRef as s,useState as o,useEffect as c,useCallback as u}from"react";import{D as a,m as i,r as l,f as p}from"./store-_qrBrIqS.js";const m=e({store:a}),d=({store:e,children:t})=>{const s=n((()=>({store:e??i()})),[e]);return r(m.Provider,{value:s,children:t})},f=()=>t(m),g=r=>{const{store:e}=f(),t=r(e),n=s(t),[u,a]=o((()=>t.get()));let i=u;t!==n.current&&(i=t.get(),n.current=t,a(i));const l=s(new WeakMap);return l.current.has(t)||l.current.set(t,t.subscribe(a)),c((()=>{const r=l.current;return()=>{const e=r.get(t);e&&(e(),r.delete(t))}}),[t]),i},h=r=>{const{store:e}=f();return r(e).set},y=r=>[g(r),h(r)],v=r=>{const e=g(r),[t,n]=o({type:"loading"});return c((()=>{let r=!0;return n({type:"loading"}),e.then((e=>{r&&n({type:"ready",value:e})}),(e=>{r&&n({type:"error",reason:e})})),()=>{r=!1}}),[e]),t},b=r=>{const{store:e}=f(),t=r(e);return u((()=>{l(t)}),[t])},j=r=>{const{store:e}=f(),t=r(e);return u((()=>{p(t)}),[t])},x=(r,e=[])=>{const{store:t}=f(),n=s(r);return c((()=>{n.current=r})),u(((...r)=>{const e={set:(r,e)=>{r(t).set(e)},reset:r=>{p(r(t))},refresh:r=>{l(r(t))}};return n.current(e)(...r)}),[t,...e])};export{d as StanProvider,h as useSetStanValue,y as useStan,x as useStanCallback,f as useStanCtx,b as useStanRefresh,j as useStanReset,g 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-DiTSwUBS.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()));let c=o;s!==u.current&&(c=s.get(),u.current=s,a(c));const l=t.useRef(new WeakMap);return l.current.has(s)||l.current.set(s,s.subscribe(a)),t.useEffect((()=>{const e=l.current;return()=>{const t=e.get(s);t&&(t(),e.delete(s))}}),[s]),c},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})})),()=>{e=!1}}),[r]),s};
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("./store-CCFoiVXY.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()));let c=o;s!==u.current&&(c=s.get(),u.current=s,a(c));const l=t.useRef(new WeakMap);return l.current.has(s)||l.current.set(s,s.subscribe(a)),t.useEffect((()=>{const e=l.current;return()=>{const t=e.get(s);t&&(t(),e.delete(s))}}),[s]),c},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.useStanCallback=(e,s=[])=>{const{store:u}=n(),o=t.useRef(e);return t.useEffect((()=>{o.current=e})),t.useCallback(((...e)=>{const t={set:(e,t)=>{e(u).set(t)},reset:e=>{r.reset(e(u))},refresh:e=>{r.refresh(e(u))}};return o.current(t)(...e)}),[u,...s])},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})})),()=>{e=!1}}),[r]),s};
@@ -0,0 +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]},s={key:n,value:e[n]};return r(o,s)}}),s=[];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,i;if(Array.isArray(t)){for(i="[",r=0;r<t.length;r++)r&&(i+=","),i+=e(t[r])||"null";return i+"]"}if(null===t)return"null";if(-1!==s.indexOf(t)){if(n)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=s.push(t)-1,c=Object.keys(t).sort(o&&o(t));for(i="",r=0;r<c.length;r++){var l=c[r],p=e(t[l]);p&&(i&&(i+=","),i+=JSON.stringify(l)+":"+p)}return s.splice(u,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh"),s=Symbol("@@reset"),i=Symbol("@@erase"),u=Symbol("@@mount"),c=Symbol("@@unmount"),l=["[object Function]","[object AsyncFunction]","[object GeneratorFunction]","[object AsyncGeneratorFunction]"],p=(e,t)=>{const r=e.deps.get(t);if(!r||!r.size)return!1;for(const[t,n]of r.entries())if(e.version.get(t)!==n)return!0;for(const t of r.keys())if(p(e,t))return!0;return!1};class f{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const a=()=>new f,y=a();exports.DEFAULT_STORE=y,exports.ERASE_TAG=i,exports.MOUNT_TAG=u,exports.REFRESH_TAG=o,exports.RESET_TAG=s,exports.Store=f,exports.UNMOUNT_TAG=c,exports.dejaVu=(e,t)=>e===t,exports.depsChanged=p,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=e=>l.includes(Object.prototype.toString.call(e)),exports.makeStore=a,exports.refresh=e=>{e[o]()},exports.reset=e=>{e[s]()},exports.stableStringify=n;
@@ -1 +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]},s={key:r,value:e[r]};return n(o,s)}}),s=[];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!==s.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=s.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 s.splice(a,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh@@"),s=Symbol("@@reset@@"),i=Symbol("@@erase@@"),a=Symbol("@@mount@@"),u=Symbol("@@unmount@@"),c=(e,t)=>e===t,l=e=>e,f=["[object Function]","[object AsyncFunction]","[object GeneratorFunction]","[object AsyncGeneratorFunction]"],y=e=>f.includes(Object.prototype.toString.call(e)),p=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},d=(e,t)=>{const n=e.deps.get(t);if(!n||!n.size)return!1;for(const[t,r]of n.entries())if(e.version.get(t)!==r)return!0;for(const t of n.keys())if(d(e,t))return!0;return!1},b=e=>{e[o]()},v=e=>{e[s]()};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,a as M,s as R,m as S,u as U,y as a,o as b,d as c,c as d,p as e,v as f,l as i,S as m,b as r,r as s};
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]},s={key:r,value:e[r]};return n(o,s)}}),s=[];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!==s.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var a=s.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 s.splice(a,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh"),s=Symbol("@@reset"),i=Symbol("@@erase"),a=Symbol("@@mount"),u=Symbol("@@unmount"),c=(e,t)=>e===t,l=e=>e,f=["[object Function]","[object AsyncFunction]","[object GeneratorFunction]","[object AsyncGeneratorFunction]"],y=e=>f.includes(Object.prototype.toString.call(e)),p=(e,t)=>{e.deps.delete(t),e.value.delete(t),e.version.delete(t),e.mounted.delete(t),e.initialized.delete(t)},d=(e,t)=>{const n=e.deps.get(t);if(!n||!n.size)return!1;for(const[t,r]of n.entries())if(e.version.get(t)!==r)return!0;for(const t of n.keys())if(d(e,t))return!0;return!1},b=e=>{e[o]()},v=e=>{e[s]()};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,a as M,s as R,m as S,u as U,y as a,o as b,d as c,c as d,p as e,v as f,l as i,S as m,b as r,r as s};
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.5.1-rc1",
4
+ "version": "1.6.0",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.esm.js",
7
7
  "types": "./dist/index.d.ts",
@@ -62,8 +62,8 @@
62
62
  "globals": "^16.0.0",
63
63
  "jest": "29.7.0",
64
64
  "jest-environment-jsdom": "29.7.0",
65
- "react": ">=18.0.0",
66
- "react-dom": ">=18.0.0",
65
+ "react": ">=19.0.0",
66
+ "react-dom": ">=19.0.0",
67
67
  "rollup": "4.37.0",
68
68
  "ts-jest": "29.3.0",
69
69
  "tslib": "2.8.1",
@@ -71,7 +71,7 @@
71
71
  "typescript-eslint": "^8.28.0"
72
72
  },
73
73
  "peerDependencies": {
74
- "react": ">=18.0.0"
74
+ "react": ">=19.0.0"
75
75
  },
76
76
  "author": "Rafał Krupiński <rkrupinski.npm@gmail.com> (https://github.com/rkrupinski)",
77
77
  "homepage": "https://github.com/rkrupinski/stan#readme",
@@ -1 +0,0 @@
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]},s={key:n,value:e[n]};return r(o,s)}}),s=[];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,i;if(Array.isArray(t)){for(i="[",r=0;r<t.length;r++)r&&(i+=","),i+=e(t[r])||"null";return i+"]"}if(null===t)return"null";if(-1!==s.indexOf(t)){if(n)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var u=s.push(t)-1,c=Object.keys(t).sort(o&&o(t));for(i="",r=0;r<c.length;r++){var l=c[r],p=e(t[l]);p&&(i&&(i+=","),i+=JSON.stringify(l)+":"+p)}return s.splice(u,1),"{"+i+"}"}}(e)}));const o=Symbol("@@refresh@@"),s=Symbol("@@reset@@"),i=Symbol("@@erase@@"),u=Symbol("@@mount@@"),c=Symbol("@@unmount@@"),l=["[object Function]","[object AsyncFunction]","[object GeneratorFunction]","[object AsyncGeneratorFunction]"],p=(e,t)=>{const r=e.deps.get(t);if(!r||!r.size)return!1;for(const[t,n]of r.entries())if(e.version.get(t)!==n)return!0;for(const t of r.keys())if(p(e,t))return!0;return!1};class f{value=new Map;version=new Map;mounted=new Map;initialized=new Map;deps=new Map}const a=()=>new f,y=a();exports.DEFAULT_STORE=y,exports.ERASE_TAG=i,exports.MOUNT_TAG=u,exports.REFRESH_TAG=o,exports.RESET_TAG=s,exports.Store=f,exports.UNMOUNT_TAG=c,exports.dejaVu=(e,t)=>e===t,exports.depsChanged=p,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=e=>l.includes(Object.prototype.toString.call(e)),exports.makeStore=a,exports.refresh=e=>{e[o]()},exports.reset=e=>{e[s]()},exports.stableStringify=n;