@directive-run/react 0.8.5 → 0.8.7

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.d.cts CHANGED
@@ -300,16 +300,16 @@ declare function createTypedHooks<M extends ModuleSchema>(): {
300
300
  /**
301
301
  * React hook to create and manage a query system with proper lifecycle.
302
302
  *
303
- * Accepts a QuerySystemConfig directly no factory wrapper needed.
303
+ * Accepts either a config object or a factory function:
304
+ * - Config object: calls `createQuerySystem` from `@directive-run/query` automatically
305
+ * - Factory function: calls the factory to create the system (for custom setups)
306
+ *
304
307
  * Creates the system once, starts on mount, destroys on unmount.
305
308
  * Handles Strict Mode re-creation and SSR safety.
306
309
  *
307
- * Requires `@directive-run/query` as a peer dependency.
308
- *
309
310
  * @example
310
311
  * ```tsx
311
- * import { useQuerySystem } from "@directive-run/react";
312
- * import { useDerived } from "@directive-run/react";
312
+ * import { useQuerySystem, useDerived } from "@directive-run/react";
313
313
  *
314
314
  * function App() {
315
315
  * const app = useQuerySystem({
@@ -336,7 +336,7 @@ declare function useQuerySystem<T extends {
336
336
  destroy: () => void;
337
337
  isRunning?: boolean;
338
338
  [key: string]: any;
339
- }>(factory: () => T): T;
339
+ }>(config: Record<string, unknown>): T;
340
340
  /**
341
341
  * React hook for reading query data with Suspense support.
342
342
  *
package/dist/index.d.ts CHANGED
@@ -300,16 +300,16 @@ declare function createTypedHooks<M extends ModuleSchema>(): {
300
300
  /**
301
301
  * React hook to create and manage a query system with proper lifecycle.
302
302
  *
303
- * Accepts a QuerySystemConfig directly no factory wrapper needed.
303
+ * Accepts either a config object or a factory function:
304
+ * - Config object: calls `createQuerySystem` from `@directive-run/query` automatically
305
+ * - Factory function: calls the factory to create the system (for custom setups)
306
+ *
304
307
  * Creates the system once, starts on mount, destroys on unmount.
305
308
  * Handles Strict Mode re-creation and SSR safety.
306
309
  *
307
- * Requires `@directive-run/query` as a peer dependency.
308
- *
309
310
  * @example
310
311
  * ```tsx
311
- * import { useQuerySystem } from "@directive-run/react";
312
- * import { useDerived } from "@directive-run/react";
312
+ * import { useQuerySystem, useDerived } from "@directive-run/react";
313
313
  *
314
314
  * function App() {
315
315
  * const app = useQuerySystem({
@@ -336,7 +336,7 @@ declare function useQuerySystem<T extends {
336
336
  destroy: () => void;
337
337
  isRunning?: boolean;
338
338
  [key: string]: any;
339
- }>(factory: () => T): T;
339
+ }>(config: Record<string, unknown>): T;
340
340
  /**
341
341
  * React hook for reading query data with Suspense support.
342
342
  *
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createSystem,createRequirementStatusPlugin}from'@directive-run/core';import {assertSystem,defaultEquality,runTrackedSelector,createThrottle,buildHistoryState,depsChanged,computeInspectState}from'@directive-run/core/adapter-utils';export{shallowEqual}from'@directive-run/core/adapter-utils';import {createContext,useCallback,useSyncExternalStore,useRef,useMemo,useEffect,useState,useContext}from'react';import {jsx}from'react/jsx-runtime';var b=Symbol("directive.uninitialized");function re(t,e){return assertSystem("useFact",t),process.env.NODE_ENV!=="production"&&typeof e=="function"&&console.error("[Directive] useFact() received a function. Did you mean useSelector()? useFact() takes a string key or array of keys, not a selector function."),Array.isArray(e)?oe(t,e):se(t,e)}function se(t,e){process.env.NODE_ENV!=="production"&&(e in t.facts.$store.toObject()||console.warn(`[Directive] useFact("${e}") \u2014 fact not found in store. Check that "${e}" is defined in your module's schema.`));let r=useCallback(n=>t.facts.$store.subscribe([e],n),[t,e]),u=useCallback(()=>t.facts.$store.get(e),[t,e]);return useSyncExternalStore(r,u,u)}function oe(t,e){let r=useRef(b),u=useCallback(o=>t.facts.$store.subscribe(e,o),[t,...e]),n=useCallback(()=>{let o={};for(let s of e)o[s]=t.facts.$store.get(s);if(r.current!==b){let s=true;for(let i of e)if(!Object.is(r.current[i],o[i])){s=false;break}if(s)return r.current}return r.current=o,o},[t,...e]);return useSyncExternalStore(u,n,n)}function ue(t,e){return assertSystem("useDerived",t),process.env.NODE_ENV!=="production"&&typeof e=="function"&&console.error("[Directive] useDerived() received a function. Did you mean useSelector()? useDerived() takes a string key or array of keys, not a selector function."),Array.isArray(e)?ce(t,e):ie(t,e)}function ie(t,e){process.env.NODE_ENV!=="production"&&(e in t.derive||console.warn(`[Directive] useDerived("${e}") \u2014 derivation not found. Check that "${e}" is defined in your module's derive property.`));let r=useCallback(n=>t.subscribe([e],n),[t,e]),u=useCallback(()=>t.read(e),[t,e]);return useSyncExternalStore(r,u,u)}function ce(t,e){let r=useRef(b),u=useCallback(o=>t.subscribe(e,o),[t,...e]),n=useCallback(()=>{let o={};for(let s of e)o[s]=t.read(s);if(r.current!==b){let s=true;for(let i of e)if(!Object.is(r.current[i],o[i])){s=false;break}if(s)return r.current}return r.current=o,o},[t,...e]);return useSyncExternalStore(u,n,n)}function xe(t,e,r,u){if(t&&t._mode==="namespaced")return ae(t,e,r,u);let n=t,o,s=false,i=u??defaultEquality;r!==void 0&&(o=r,s=true),process.env.NODE_ENV!=="production"&&!n&&!s&&console.error("[Directive] useSelector() received a null/undefined system without a default value. Provide a default value as the 3rd parameter: useSelector(system, selector, defaultValue)");let f=useRef(e),a=useRef(i),c=useRef(o),g=useRef(e),y=useRef(0);g.current!==e&&(g.current=e,y.current++),f.current=e,a.current=i,c.current=o;let K=y.current,v=useRef([]),x=useRef([]),k=useRef(b),R=useRef([]),P=useMemo(()=>n?new Set(Object.keys(n.derive)):new Set,[n]),F=useCallback(()=>n?runTrackedSelector(n,P,f.current):{value:c.current,factKeys:[],deriveKeys:[]},[n,P]),I=useCallback(S=>{if(!n)return ()=>{};let p=()=>{for(let M of R.current)M();R.current=[];let{factKeys:m,deriveKeys:w}=F();v.current=m,x.current=w,m.length>0?R.current.push(n.facts.$store.subscribe(m,()=>{let M=F();depsChanged(v.current,M.factKeys,x.current,M.deriveKeys)&&p(),S();})):w.length===0&&R.current.push(n.facts.$store.subscribeAll(S)),w.length>0&&R.current.push(n.subscribe(w,()=>{let M=F();depsChanged(v.current,M.factKeys,x.current,M.deriveKeys)&&p(),S();}));};return p(),()=>{for(let m of R.current)m();R.current=[];}},[n,F,K]),C=useCallback(()=>{let S;if(!n)S=c.current;else {let{value:p}=F();S=p===void 0&&s?c.current:p;}return k.current!==b&&a.current(k.current,S)?k.current:(k.current=S,S)},[F,n,s]);return useSyncExternalStore(I,C,C)}function ae(t,e,r,u){let n=r!==void 0,o=u??defaultEquality,s=useRef(e),i=useRef(o),f=useRef(r);s.current=e,i.current=o,f.current=r;let a=useRef(b),c=useMemo(()=>Object.keys(t.facts),[t]),g=useCallback(K=>{let v=c.map(x=>`${x}.*`);return t.subscribe(v,K)},[t,c]),y=useCallback(()=>{let K=s.current(t),v=K===void 0&&n?f.current:K;return a.current!==b&&i.current(a.current,v)?a.current:(a.current=v,v)},[t,n]);return useSyncExternalStore(g,y,y)}function le(t){return assertSystem("useDispatch",t),useCallback(e=>{t.dispatch(e);},[t])}function de(t,e,r){assertSystem("useWatch",t);let u=useRef(r);u.current=r,useEffect(()=>t.watch(e,(n,o)=>{u.current(n,o);}),[t,e]);}function fe(t,e){assertSystem("useInspect",t);let r=pe(t),u=e?.throttleMs,[n,o]=useState(r),s=useRef(null);return useEffect(()=>{if(!u||u<=0){s.current?.cleanup(),s.current=null;return}return s.current?.cleanup(),s.current=createThrottle((...i)=>{o(i[0]);},u),()=>{s.current?.cleanup(),s.current=null;}},[u]),useEffect(()=>{s.current&&s.current.throttled(r);},[r]),!u||u<=0?r:n}function Se(t){return computeInspectState(t)}function pe(t){let e=useRef(null),r=useRef([]),u=useRef([]),n=useRef(null),o=useCallback(i=>{let f=t.facts.$store.subscribeAll(i),a=t.onSettledChange(i);return ()=>{f(),a();}},[t]),s=useCallback(()=>{let i=Se(t),f=i.unmet.length===r.current.length&&i.unmet.every((g,y)=>g.id===r.current[y]),a=i.inflight.length===u.current.length&&i.inflight.every((g,y)=>g.id===u.current[y]),c=i.isSettled===n.current;return f&&a&&c&&e.current?e.current:(e.current=i,r.current=i.unmet.map(g=>g.id),u.current=i.inflight.map(g=>g.id),n.current=i.isSettled,i)},[t]);return useSyncExternalStore(o,s,s)}function ke(t){assertSystem("useHistory",t);let e=useRef(null),r=useCallback(n=>t.onHistoryChange(n),[t]),u=useCallback(()=>{let n=buildHistoryState(t);return n?(e.current&&e.current.canGoBack===n.canGoBack&&e.current.canGoForward===n.canGoForward&&e.current.currentIndex===n.currentIndex&&e.current.totalSnapshots===n.totalSnapshots&&e.current.isPaused===n.isPaused||(e.current=n),e.current):null},[t]);return useSyncExternalStore(r,u,u)}function Ie(t,e){return Array.isArray(e)?ye(t,e):ge(t,e)}function ge(t,e){let r=useRef(b),u=useCallback(o=>t.subscribe(o),[t]),n=useCallback(()=>{let o=t.getStatus(e);if(r.current!==b){let s=r.current;if(s.pending===o.pending&&s.inflight===o.inflight&&s.failed===o.failed&&s.isLoading===o.isLoading&&s.hasError===o.hasError&&s.lastError===o.lastError)return r.current}return r.current=o,o},[t,e]);return useSyncExternalStore(u,n,n)}function ye(t,e){let r=useRef(null),u=useRef(""),n=useCallback(s=>t.subscribe(s),[t]),o=useCallback(()=>{let s={},i=[];for(let a of e){let c=t.getStatus(a);s[a]=c,i.push(`${a}:${c.pending}:${c.inflight}:${c.failed}:${c.hasError}:${c.lastError?.message??""}`);}let f=i.join("|");return f!==u.current&&(u.current=f,r.current=s),r.current??s},[t,...e]);return useSyncExternalStore(n,o,o)}var L=new WeakMap;function A(t){let e=L.get(t);return e||(e=new Map,L.set(t,e)),e}function we(t,e){return Array.isArray(e)?Me(t,e):ve(t,e)}function ve(t,e){let r=t.getStatus(e);if(r.hasError&&r.lastError)throw r.lastError;if(r.isLoading){let u=A(t),n=u.get(e);throw n||(n=new Promise(o=>{let s=t.subscribe(()=>{t.getStatus(e).isLoading||(u.delete(e),s(),o());});}),u.set(e,n)),n}return r}function Me(t,e){let r={},u=false,n=null;for(let o of e){let s=t.getStatus(o);r[o]=s,s.hasError&&s.lastError&&!n&&(n=s.lastError),s.isLoading&&(u=true);}if(n)throw n;if(u){let o=A(t),s=e.slice().sort().join(","),i=o.get(s);throw i||(i=new Promise(f=>{let a=t.subscribe(()=>{e.every(g=>!t.getStatus(g).isLoading)&&(o.delete(s),a(),f());});}),o.set(s,i)),i}return r}function B(t,e){let r=useRef(null),u=useRef(null),n=useRef(null),o=e?.status===true,s="modules"in t;return r.current||(n.current=()=>{if(s){let{modules:F,...I}=t,C=e?.plugins??I.plugins??[],S=e?.history??I.history,p=e?.trace??I.trace,m=e?.errorBoundary??I.errorBoundary,w=e?.tickMs??I.tickMs,M=e?.zeroConfig??I.zeroConfig,T=e?.initialFacts??I.initialFacts,N=createSystem({modules:F,plugins:C.length>0?C:void 0,history:S,trace:p,errorBoundary:m,tickMs:w,zeroConfig:M,initialFacts:T});return N.initialize(),typeof window<"u"&&N.start(),N}let i="id"in t&&"schema"in t,f=i?t:t.module,a=i?{}:t,c=e?.plugins??a.plugins??[],g=e?.history??a.history,y=e?.trace??a.trace,K=e?.errorBoundary??a.errorBoundary,v=e?.tickMs??a.tickMs,x=e?.zeroConfig??a.zeroConfig,k=e?.initialFacts??a.initialFacts,R=[...c];o&&(u.current=createRequirementStatusPlugin(),R=[...R,u.current.plugin]);let P=createSystem({module:f,plugins:R.length>0?R:void 0,history:g,trace:y,errorBoundary:K,tickMs:v,zeroConfig:x,initialFacts:k});return P.initialize(),typeof window<"u"&&P.start(),P},r.current=n.current()),useEffect(()=>(!r.current&&n.current&&(r.current=n.current()),()=>{r.current?.destroy(),r.current=null,u.current=null;}),[]),o&&!s?{system:r.current,statusPlugin:u.current}:r.current}function Ke(t,e,r){let u=useRef(e);u.current=e;let n=useRef(r);n.current=r;let o=useCallback(i=>t.subscribe(u.current,i),[t]),s=useCallback(()=>n.current(t),[t]);return useSyncExternalStore(o,s,s)}function Fe(t,e={}){let{facts:r,derived:u,status:n,...o}=e,s=r??[],i=u??[],f=s.length===0&&i.length===0,a=n?B(t,{status:true,...o}):B(t,o),c=n?a.system:a,g=n?a.statusPlugin:void 0,y=useMemo(()=>f?Object.keys(c.derive):[],[c,f]),K=useCallback(S=>{let p=[];return f?(p.push(c.facts.$store.subscribeAll(S)),y.length>0&&p.push(c.subscribe(y,S))):(s.length>0&&p.push(c.facts.$store.subscribe(s,S)),i.length>0&&p.push(c.subscribe(i,S))),()=>{for(let m of p)m();}},[c,f,...s,...i,...y]),v=useRef(b),x=useRef(b),k=useRef(null),R=useCallback(()=>{let S,p,m,w;if(f){S=c.facts.$store.toObject(),m=Object.keys(S),p={};for(let h of y)p[h]=c.read(h);w=y;}else {S={};for(let h of s)S[h]=c.facts[h];m=s,p={};for(let h of i)p[h]=c.read(h);w=i;}let M=v.current!==b;if(M){let h=v.current;if(Object.keys(h).length!==m.length)M=false;else for(let O of m)if(!Object.is(h[O],S[O])){M=false;break}}let T=x.current!==b;if(T){let h=x.current;if(Object.keys(h).length!==w.length)T=false;else for(let O of w)if(!Object.is(h[O],p[O])){T=false;break}}let N=M?v.current:S,Z=T?x.current:p;return M||(v.current=S),T||(x.current=p),M&&T&&k.current||(k.current={facts:N,derived:Z}),k.current},[c,f,...s,...i,...y]),P=useSyncExternalStore(K,R,R),F=useCallback(S=>c.dispatch(S),[c]),I=W(c),C={system:c,dispatch:F,events:I,facts:P.facts,derived:P.derived};return n&&g?{...C,statusPlugin:g}:C}function W(t){return assertSystem("useEvents",t),useMemo(()=>t.events,[t])}function Ee(t,e){assertSystem("useExplain",t);let r=useCallback(n=>{let o=t.facts.$store.subscribeAll(n),s=t.onSettledChange(n);return ()=>{o(),s();}},[t]),u=useCallback(()=>t.explain(e),[t,e]);return useSyncExternalStore(r,u,u)}function Pe(t,e){assertSystem("useConstraintStatus",t);let r=fe(t);return useMemo(()=>{let u=t.inspect();return e?u.constraints.find(n=>n.id===e)??null:u.constraints},[t,e,r])}function Ce(t,e,r){assertSystem("useOptimisticUpdate",t);let[u,n]=useState(false),[o,s]=useState(null),i=useRef(null),f=useCallback(()=>{i.current&&(t.restore(i.current),i.current=null),n(false),s(null);},[t]),a=useCallback(c=>{i.current=t.getSnapshot(),n(true),s(null),t.batch(c);},[t]);return useEffect(()=>{if(!(!e||!r||!u))return e.subscribe(()=>{let c=e.getStatus(r);!c.isLoading&&!c.hasError?(i.current=null,n(false)):c.hasError&&(s(c.lastError),f());})},[e,r,u,f]),{mutate:a,isPending:u,error:o,rollback:f}}var z=createContext(null);function Te({snapshot:t,children:e}){return jsx(z.Provider,{value:t,children:e})}function Ue(t,e){let r=useContext(z),u=useMemo(()=>r?.data?{...e??{},initialFacts:{...e?.initialFacts??{},...r.data}}:e??{},[r,e]);return B(t,u)}function Ve(){return {useFact:(t,e)=>re(t,e),useDerived:(t,e)=>ue(t,e),useDispatch:t=>le(t),useEvents:t=>W(t),useWatch:(t,e,r)=>de(t,e,r)}}function Ne(t){let e=useRef(null),r=useRef(t);return r.current=t,e.current||(e.current=r.current()),useEffect(()=>(!e.current&&r.current&&(e.current=r.current()),typeof window<"u"&&e.current&&!e.current.isRunning&&e.current.start(),()=>{e.current?.destroy(),e.current=null;}),[]),e.current}var $=new WeakMap;function Oe(t,e){let r=useCallback(s=>t.subscribe([e],s),[t,e]),u=useCallback(()=>t.read(e),[t,e]),n=useSyncExternalStore(r,u,u);$.has(t)||$.set(t,new Map);let o=$.get(t);if(n?.status==="success"&&n?.data!==null)return o.has(e)&&(o.get(e).resolve(),o.delete(e)),n.data;if(n?.status==="error"&&n?.error)throw o.has(e)&&(o.get(e).resolve(),o.delete(e)),n.error;if(!o.has(e)){let s,i=new Promise(a=>{s=a;});o.set(e,{promise:i,resolve:s});let f=t.subscribe([e],()=>{let a=t.read(e);if(a?.status==="success"||a?.status==="error"){let c=o.get(e);c&&(c.resolve(),o.delete(e)),f();}});}throw o.get(e).promise}export{Te as DirectiveHydrator,Ve as createTypedHooks,Pe as useConstraintStatus,ue as useDerived,Fe as useDirective,B as useDirectiveRef,le as useDispatch,W as useEvents,Ee as useExplain,re as useFact,ke as useHistory,Ue as useHydratedSystem,fe as useInspect,Ke as useNamespacedSelector,Ce as useOptimisticUpdate,Ne as useQuerySystem,Ie as useRequirementStatus,xe as useSelector,Oe as useSuspenseQuery,we as useSuspenseRequirement,de as useWatch};//# sourceMappingURL=index.js.map
1
+ import {createSystem,createRequirementStatusPlugin}from'@directive-run/core';import {assertSystem,defaultEquality,runTrackedSelector,createThrottle,buildHistoryState,mergeHydrationFacts,depsChanged,computeInspectState}from'@directive-run/core/adapter-utils';export{shallowEqual}from'@directive-run/core/adapter-utils';import {createContext,useCallback,useSyncExternalStore,useRef,useMemo,useEffect,useState,useContext}from'react';import {jsx}from'react/jsx-runtime';var J=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=Symbol("directive.uninitialized");function ue(e,t){return assertSystem("useFact",e),process.env.NODE_ENV!=="production"&&typeof t=="function"&&console.error("[Directive] useFact() received a function. Did you mean useSelector()? useFact() takes a string key or array of keys, not a selector function."),Array.isArray(t)?ce(e,t):ie(e,t)}function ie(e,t){process.env.NODE_ENV!=="production"&&(t in e.facts.$store.toObject()||console.warn(`[Directive] useFact("${t}") \u2014 fact not found in store. Check that "${t}" is defined in your module's schema.`));let r=useCallback(n=>e.facts.$store.subscribe([t],n),[e,t]),o=useCallback(()=>e.facts.$store.get(t),[e,t]);return useSyncExternalStore(r,o,o)}function ce(e,t){let r=useRef(b),o=useCallback(u=>e.facts.$store.subscribe(t,u),[e,...t]),n=useCallback(()=>{let u={};for(let s of t)u[s]=e.facts.$store.get(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return useSyncExternalStore(o,n,n)}function ae(e,t){return assertSystem("useDerived",e),process.env.NODE_ENV!=="production"&&typeof t=="function"&&console.error("[Directive] useDerived() received a function. Did you mean useSelector()? useDerived() takes a string key or array of keys, not a selector function."),Array.isArray(t)?de(e,t):le(e,t)}function le(e,t){process.env.NODE_ENV!=="production"&&(t in e.derive||console.warn(`[Directive] useDerived("${t}") \u2014 derivation not found. Check that "${t}" is defined in your module's derive property.`));let r=useCallback(n=>e.subscribe([t],n),[e,t]),o=useCallback(()=>e.read(t),[e,t]);return useSyncExternalStore(r,o,o)}function de(e,t){let r=useRef(b),o=useCallback(u=>e.subscribe(t,u),[e,...t]),n=useCallback(()=>{let u={};for(let s of t)u[s]=e.read(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return useSyncExternalStore(o,n,n)}function Fe(e,t,r,o){if(e&&e._mode==="namespaced")return fe(e,t,r,o);let n=e,u,s=false,i=o??defaultEquality;r!==void 0&&(u=r,s=true),process.env.NODE_ENV!=="production"&&!n&&!s&&console.error("[Directive] useSelector() received a null/undefined system without a default value. Provide a default value as the 3rd parameter: useSelector(system, selector, defaultValue)");let f=useRef(t),l=useRef(i),c=useRef(u),g=useRef(t),y=useRef(0);g.current!==t&&(g.current=t,y.current++),f.current=t,l.current=i,c.current=u;let K=y.current,v=useRef([]),k=useRef([]),x=useRef(b),m=useRef([]),P=useMemo(()=>n?new Set(Object.keys(n.derive)):new Set,[n]),F=useCallback(()=>n?runTrackedSelector(n,P,f.current):{value:c.current,factKeys:[],deriveKeys:[]},[n,P]),I=useCallback(S=>{if(!n)return ()=>{};let p=()=>{for(let M of m.current)M();m.current=[];let{factKeys:R,deriveKeys:w}=F();v.current=R,k.current=w,R.length>0?m.current.push(n.facts.$store.subscribe(R,()=>{let M=F();depsChanged(v.current,M.factKeys,k.current,M.deriveKeys)&&p(),S();})):w.length===0&&m.current.push(n.facts.$store.subscribeAll(S)),w.length>0&&m.current.push(n.subscribe(w,()=>{let M=F();depsChanged(v.current,M.factKeys,k.current,M.deriveKeys)&&p(),S();}));};return p(),()=>{for(let R of m.current)R();m.current=[];}},[n,F,K]),C=useCallback(()=>{let S;if(!n)S=c.current;else {let{value:p}=F();S=p===void 0&&s?c.current:p;}return x.current!==b&&l.current(x.current,S)?x.current:(x.current=S,S)},[F,n,s]);return useSyncExternalStore(I,C,C)}function fe(e,t,r,o){let n=r!==void 0,u=o??defaultEquality,s=useRef(t),i=useRef(u),f=useRef(r);s.current=t,i.current=u,f.current=r;let l=useRef(b),c=useMemo(()=>Object.keys(e.facts),[e]),g=useCallback(K=>{let v=c.map(k=>`${k}.*`);return e.subscribe(v,K)},[e,c]),y=useCallback(()=>{let K=s.current(e),v=K===void 0&&n?f.current:K;return l.current!==b&&i.current(l.current,v)?l.current:(l.current=v,v)},[e,n]);return useSyncExternalStore(g,y,y)}function Se(e){return assertSystem("useDispatch",e),useCallback(t=>{e.dispatch(t);},[e])}function pe(e,t,r){assertSystem("useWatch",e);let o=useRef(r);o.current=r,useEffect(()=>e.watch(t,(n,u)=>{o.current(n,u);}),[e,t]);}function ge(e,t){assertSystem("useInspect",e);let r=ve(e),o=t?.throttleMs,[n,u]=useState(r),s=useRef(null);return useEffect(()=>{if(!o||o<=0){s.current?.cleanup(),s.current=null;return}return s.current?.cleanup(),s.current=createThrottle((...i)=>{u(i[0]);},o),()=>{s.current?.cleanup(),s.current=null;}},[o]),useEffect(()=>{s.current&&s.current.throttled(r);},[r]),!o||o<=0?r:n}function ye(e){return computeInspectState(e)}function ve(e){let t=useRef(null),r=useRef([]),o=useRef([]),n=useRef(null),u=useCallback(i=>{let f=e.facts.$store.subscribeAll(i),l=e.onSettledChange(i);return ()=>{f(),l();}},[e]),s=useCallback(()=>{let i=ye(e),f=i.unmet.length===r.current.length&&i.unmet.every((g,y)=>g.id===r.current[y]),l=i.inflight.length===o.current.length&&i.inflight.every((g,y)=>g.id===o.current[y]),c=i.isSettled===n.current;return f&&l&&c&&t.current?t.current:(t.current=i,r.current=i.unmet.map(g=>g.id),o.current=i.inflight.map(g=>g.id),n.current=i.isSettled,i)},[e]);return useSyncExternalStore(u,s,s)}function Ee(e){assertSystem("useHistory",e);let t=useRef(null),r=useCallback(n=>e.onHistoryChange(n),[e]),o=useCallback(()=>{let n=buildHistoryState(e);return n?(t.current&&t.current.canGoBack===n.canGoBack&&t.current.canGoForward===n.canGoForward&&t.current.currentIndex===n.currentIndex&&t.current.totalSnapshots===n.totalSnapshots&&t.current.isPaused===n.isPaused||(t.current=n),t.current):null},[e]);return useSyncExternalStore(r,o,o)}function Pe(e,t){return Array.isArray(t)?me(e,t):Me(e,t)}function Me(e,t){let r=useRef(b),o=useCallback(u=>e.subscribe(u),[e]),n=useCallback(()=>{let u=e.getStatus(t);if(r.current!==b){let s=r.current;if(s.pending===u.pending&&s.inflight===u.inflight&&s.failed===u.failed&&s.isLoading===u.isLoading&&s.hasError===u.hasError&&s.lastError===u.lastError)return r.current}return r.current=u,u},[e,t]);return useSyncExternalStore(o,n,n)}function me(e,t){let r=useRef(null),o=useRef(""),n=useCallback(s=>e.subscribe(s),[e]),u=useCallback(()=>{let s={},i=[];for(let l of t){let c=e.getStatus(l);s[l]=c,i.push(`${l}:${c.pending}:${c.inflight}:${c.failed}:${c.hasError}:${c.lastError?.message??""}`);}let f=i.join("|");return f!==o.current&&(o.current=f,r.current=s),r.current??s},[e,...t]);return useSyncExternalStore(n,u,u)}var j=new WeakMap;function W(e){let t=j.get(e);return t||(t=new Map,j.set(e,t)),t}function Ce(e,t){return Array.isArray(t)?he(e,t):Re(e,t)}function Re(e,t){let r=e.getStatus(t);if(r.hasError&&r.lastError)throw r.lastError;if(r.isLoading){let o=W(e),n=o.get(t);throw n||(n=new Promise(u=>{let s=e.subscribe(()=>{e.getStatus(t).isLoading||(o.delete(t),s(),u());});}),o.set(t,n)),n}return r}function he(e,t){let r={},o=false,n=null;for(let u of t){let s=e.getStatus(u);r[u]=s,s.hasError&&s.lastError&&!n&&(n=s.lastError),s.isLoading&&(o=true);}if(n)throw n;if(o){let u=W(e),s=t.slice().sort().join(","),i=u.get(s);throw i||(i=new Promise(f=>{let l=e.subscribe(()=>{t.every(g=>!e.getStatus(g).isLoading)&&(u.delete(s),l(),f());});}),u.set(s,i)),i}return r}function _(e,t){let r=useRef(null),o=useRef(null),n=useRef(null),u=t?.status===true,s="modules"in e;return r.current||(n.current=()=>{if(s){let{modules:F,...I}=e,C=t?.plugins??I.plugins??[],S=t?.history??I.history,p=t?.trace??I.trace,R=t?.errorBoundary??I.errorBoundary,w=t?.tickMs??I.tickMs,M=t?.zeroConfig??I.zeroConfig,T=t?.initialFacts??I.initialFacts,N=createSystem({modules:F,plugins:C.length>0?C:void 0,history:S,trace:p,errorBoundary:R,tickMs:w,zeroConfig:M,initialFacts:T});return N.initialize(),typeof window<"u"&&N.start(),N}let i="id"in e&&"schema"in e,f=i?e:e.module,l=i?{}:e,c=t?.plugins??l.plugins??[],g=t?.history??l.history,y=t?.trace??l.trace,K=t?.errorBoundary??l.errorBoundary,v=t?.tickMs??l.tickMs,k=t?.zeroConfig??l.zeroConfig,x=t?.initialFacts??l.initialFacts,m=[...c];u&&(o.current=createRequirementStatusPlugin(),m=[...m,o.current.plugin]);let P=createSystem({module:f,plugins:m.length>0?m:void 0,history:g,trace:y,errorBoundary:K,tickMs:v,zeroConfig:k,initialFacts:x});return P.initialize(),typeof window<"u"&&P.start(),P},r.current=n.current()),useEffect(()=>(!r.current&&n.current&&(r.current=n.current()),()=>{r.current?.destroy(),r.current=null,o.current=null;}),[]),u&&!s?{system:r.current,statusPlugin:o.current}:r.current}function Te(e,t,r){let o=useRef(t);o.current=t;let n=useRef(r);n.current=r;let u=useCallback(i=>e.subscribe(o.current,i),[e]),s=useCallback(()=>n.current(e),[e]);return useSyncExternalStore(u,s,s)}function Ue(e,t={}){let{facts:r,derived:o,status:n,...u}=t,s=r??[],i=o??[],f=s.length===0&&i.length===0,l=n?_(e,{status:true,...u}):_(e,u),c=n?l.system:l,g=n?l.statusPlugin:void 0,y=useMemo(()=>f?Object.keys(c.derive):[],[c,f]),K=useCallback(S=>{let p=[];return f?(p.push(c.facts.$store.subscribeAll(S)),y.length>0&&p.push(c.subscribe(y,S))):(s.length>0&&p.push(c.facts.$store.subscribe(s,S)),i.length>0&&p.push(c.subscribe(i,S))),()=>{for(let R of p)R();}},[c,f,...s,...i,...y]),v=useRef(b),k=useRef(b),x=useRef(null),m=useCallback(()=>{let S,p,R,w;if(f){S=c.facts.$store.toObject(),R=Object.keys(S),p={};for(let h of y)p[h]=c.read(h);w=y;}else {S={};for(let h of s)S[h]=c.facts[h];R=s,p={};for(let h of i)p[h]=c.read(h);w=i;}let M=v.current!==b;if(M){let h=v.current;if(Object.keys(h).length!==R.length)M=false;else for(let O of R)if(!Object.is(h[O],S[O])){M=false;break}}let T=k.current!==b;if(T){let h=k.current;if(Object.keys(h).length!==w.length)T=false;else for(let O of w)if(!Object.is(h[O],p[O])){T=false;break}}let N=M?v.current:S,Z=T?k.current:p;return M||(v.current=S),T||(k.current=p),M&&T&&x.current||(x.current={facts:N,derived:Z}),x.current},[c,f,...s,...i,...y]),P=useSyncExternalStore(K,m,m),F=useCallback(S=>c.dispatch(S),[c]),I=z(c),C={system:c,dispatch:F,events:I,facts:P.facts,derived:P.derived};return n&&g?{...C,statusPlugin:g}:C}function z(e){return assertSystem("useEvents",e),useMemo(()=>e.events,[e])}function Ve(e,t){assertSystem("useExplain",e);let r=useCallback(n=>{let u=e.facts.$store.subscribeAll(n),s=e.onSettledChange(n);return ()=>{u(),s();}},[e]),o=useCallback(()=>e.explain(t),[e,t]);return useSyncExternalStore(r,o,o)}function Ne(e,t){assertSystem("useConstraintStatus",e);let r=ge(e);return useMemo(()=>{let o=e.inspect();return t?o.constraints.find(n=>n.id===t)??null:o.constraints},[e,t,r])}function Oe(e,t,r){assertSystem("useOptimisticUpdate",e);let[o,n]=useState(false),[u,s]=useState(null),i=useRef(null),f=useCallback(()=>{i.current&&(e.restore(i.current),i.current=null),n(false),s(null);},[e]),l=useCallback(c=>{i.current=e.getSnapshot(),n(true),s(null),e.batch(c);},[e]);return useEffect(()=>{if(!(!t||!r||!o))return t.subscribe(()=>{let c=t.getStatus(r);!c.isLoading&&!c.hasError?(i.current=null,n(false)):c.hasError&&(s(c.lastError),f());})},[t,r,o,f]),{mutate:l,isPending:o,error:u,rollback:f}}var Q=createContext(null);function qe({snapshot:e,children:t}){return jsx(Q.Provider,{value:e,children:t})}function $e(e,t){let r=useContext(Q),o=useMemo(()=>{let n=mergeHydrationFacts(r,t?.initialFacts);return {...t??{},initialFacts:n}},[r,t]);return _(e,o)}function Be(){return {useFact:(e,t)=>ue(e,t),useDerived:(e,t)=>ae(e,t),useDispatch:e=>Se(e),useEvents:e=>z(e),useWatch:(e,t,r)=>pe(e,t,r)}}var q=null;function be(){if(!q)try{q=J("@directive-run/query").createQuerySystem;}catch{throw new Error("[Directive] @directive-run/query is not installed. Install it with: pnpm add @directive-run/query")}return q}function _e(e){let t=useRef(e),r=useMemo(()=>{let u=be();return ()=>u(t.current)},[]),o=useRef(null),n=useRef(r);return n.current=r,o.current||(o.current=n.current()),useEffect(()=>(!o.current&&n.current&&(o.current=n.current()),typeof window<"u"&&o.current&&!o.current.isRunning&&o.current.start(),()=>{o.current?.destroy(),o.current=null;}),[]),o.current}var $=new WeakMap;function He(e,t){let r=useCallback(s=>e.subscribe([t],s),[e,t]),o=useCallback(()=>e.read(t),[e,t]),n=useSyncExternalStore(r,o,o);$.has(e)||$.set(e,new Map);let u=$.get(e);if(n?.status==="success"&&n?.data!==null)return u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.data;if(n?.status==="error"&&n?.error)throw u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.error;if(!u.has(t)){let s,i=new Promise(l=>{s=l;});u.set(t,{promise:i,resolve:s});let f=e.subscribe([t],()=>{let l=e.read(t);if(l?.status==="success"||l?.status==="error"){let c=u.get(t);c&&(c.resolve(),u.delete(t)),f();}});}throw u.get(t).promise}export{qe as DirectiveHydrator,Be as createTypedHooks,Ne as useConstraintStatus,ae as useDerived,Ue as useDirective,_ as useDirectiveRef,Se as useDispatch,z as useEvents,Ve as useExplain,ue as useFact,Ee as useHistory,$e as useHydratedSystem,ge as useInspect,Te as useNamespacedSelector,Oe as useOptimisticUpdate,_e as useQuerySystem,Pe as useRequirementStatus,Fe as useSelector,He as useSuspenseQuery,Ce as useSuspenseRequirement,pe as useWatch};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map