@directive-run/react 0.8.4 → 0.8.6

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,6 +336,30 @@ 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
+ /**
341
+ * React hook for reading query data with Suspense support.
342
+ *
343
+ * Throws a Promise while the query is pending (triggers Suspense fallback).
344
+ * Throws the error if the query fails (triggers error boundary).
345
+ * Returns the data directly when available – no isPending/isError checks needed.
346
+ *
347
+ * @example
348
+ * ```tsx
349
+ * import { useSuspenseQuery } from "@directive-run/react";
350
+ *
351
+ * function UserProfile({ system }) {
352
+ * const user = useSuspenseQuery(system, "user");
353
+ * return <h1>{user.name}</h1>;
354
+ * }
355
+ *
356
+ * <Suspense fallback={<Spinner />}>
357
+ * <ErrorBoundary>
358
+ * <UserProfile system={system} />
359
+ * </ErrorBoundary>
360
+ * </Suspense>
361
+ * ```
362
+ */
363
+ declare function useSuspenseQuery<T = unknown>(system: SingleModuleSystem<any>, queryName: string): T;
340
364
 
341
- export { DirectiveHydrator, type HydratorProps, type OptimisticUpdateResult, type StatusPlugin, type UseDirectiveOptions, type UseDirectiveRefNamespacedOptions, type UseDirectiveRefOptions, type UseDirectiveReturn, type UseDirectiveReturnWithStatus, type UseInspectOptions, createTypedHooks, useConstraintStatus, useDerived, useDirective, useDirectiveRef, useDispatch, useEvents, useExplain, useFact, useHistory, useHydratedSystem, useInspect, useNamespacedSelector, useOptimisticUpdate, useQuerySystem, useRequirementStatus, useSelector, useSuspenseRequirement, useWatch };
365
+ export { DirectiveHydrator, type HydratorProps, type OptimisticUpdateResult, type StatusPlugin, type UseDirectiveOptions, type UseDirectiveRefNamespacedOptions, type UseDirectiveRefOptions, type UseDirectiveReturn, type UseDirectiveReturnWithStatus, type UseInspectOptions, createTypedHooks, useConstraintStatus, useDerived, useDirective, useDirectiveRef, useDispatch, useEvents, useExplain, useFact, useHistory, useHydratedSystem, useInspect, useNamespacedSelector, useOptimisticUpdate, useQuerySystem, useRequirementStatus, useSelector, useSuspenseQuery, useSuspenseRequirement, useWatch };
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,6 +336,30 @@ 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
+ /**
341
+ * React hook for reading query data with Suspense support.
342
+ *
343
+ * Throws a Promise while the query is pending (triggers Suspense fallback).
344
+ * Throws the error if the query fails (triggers error boundary).
345
+ * Returns the data directly when available – no isPending/isError checks needed.
346
+ *
347
+ * @example
348
+ * ```tsx
349
+ * import { useSuspenseQuery } from "@directive-run/react";
350
+ *
351
+ * function UserProfile({ system }) {
352
+ * const user = useSuspenseQuery(system, "user");
353
+ * return <h1>{user.name}</h1>;
354
+ * }
355
+ *
356
+ * <Suspense fallback={<Spinner />}>
357
+ * <ErrorBoundary>
358
+ * <UserProfile system={system} />
359
+ * </ErrorBoundary>
360
+ * </Suspense>
361
+ * ```
362
+ */
363
+ declare function useSuspenseQuery<T = unknown>(system: SingleModuleSystem<any>, queryName: string): T;
340
364
 
341
- export { DirectiveHydrator, type HydratorProps, type OptimisticUpdateResult, type StatusPlugin, type UseDirectiveOptions, type UseDirectiveRefNamespacedOptions, type UseDirectiveRefOptions, type UseDirectiveReturn, type UseDirectiveReturnWithStatus, type UseInspectOptions, createTypedHooks, useConstraintStatus, useDerived, useDirective, useDirectiveRef, useDispatch, useEvents, useExplain, useFact, useHistory, useHydratedSystem, useInspect, useNamespacedSelector, useOptimisticUpdate, useQuerySystem, useRequirementStatus, useSelector, useSuspenseRequirement, useWatch };
365
+ export { DirectiveHydrator, type HydratorProps, type OptimisticUpdateResult, type StatusPlugin, type UseDirectiveOptions, type UseDirectiveRefNamespacedOptions, type UseDirectiveRefOptions, type UseDirectiveReturn, type UseDirectiveReturnWithStatus, type UseInspectOptions, createTypedHooks, useConstraintStatus, useDerived, useDirective, useDirectiveRef, useDispatch, useEvents, useExplain, useFact, useHistory, useHydratedSystem, useInspect, useNamespacedSelector, useOptimisticUpdate, useQuerySystem, useRequirementStatus, useSelector, useSuspenseQuery, useSuspenseRequirement, useWatch };
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 ne(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)?se(t,e):re(t,e)}function re(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 n=useCallback(r=>t.facts.$store.subscribe([e],r),[t,e]),u=useCallback(()=>t.facts.$store.get(e),[t,e]);return useSyncExternalStore(n,u,u)}function se(t,e){let n=useRef(b),u=useCallback(o=>t.facts.$store.subscribe(e,o),[t,...e]),r=useCallback(()=>{let o={};for(let s of e)o[s]=t.facts.$store.get(s);if(n.current!==b){let s=true;for(let i of e)if(!Object.is(n.current[i],o[i])){s=false;break}if(s)return n.current}return n.current=o,o},[t,...e]);return useSyncExternalStore(u,r,r)}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)?ie(t,e):oe(t,e)}function oe(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 n=useCallback(r=>t.subscribe([e],r),[t,e]),u=useCallback(()=>t.read(e),[t,e]);return useSyncExternalStore(n,u,u)}function ie(t,e){let n=useRef(b),u=useCallback(o=>t.subscribe(e,o),[t,...e]),r=useCallback(()=>{let o={};for(let s of e)o[s]=t.read(s);if(n.current!==b){let s=true;for(let i of e)if(!Object.is(n.current[i],o[i])){s=false;break}if(s)return n.current}return n.current=o,o},[t,...e]);return useSyncExternalStore(u,r,r)}function De(t,e,n,u){if(t&&t._mode==="namespaced")return ce(t,e,n,u);let r=t,o,s=false,i=u??defaultEquality;n!==void 0&&(o=n,s=true),process.env.NODE_ENV!=="production"&&!r&&!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),l=useRef(i),c=useRef(o),g=useRef(e),y=useRef(0);g.current!==e&&(g.current=e,y.current++),f.current=e,l.current=i,c.current=o;let w=y.current,v=useRef([]),x=useRef([]),k=useRef(b),M=useRef([]),N=useMemo(()=>r?new Set(Object.keys(r.derive)):new Set,[r]),F=useCallback(()=>r?runTrackedSelector(r,N,f.current):{value:c.current,factKeys:[],deriveKeys:[]},[r,N]),I=useCallback(S=>{if(!r)return ()=>{};let p=()=>{for(let m of M.current)m();M.current=[];let{factKeys:R,deriveKeys:K}=F();v.current=R,x.current=K,R.length>0?M.current.push(r.facts.$store.subscribe(R,()=>{let m=F();depsChanged(v.current,m.factKeys,x.current,m.deriveKeys)&&p(),S();})):K.length===0&&M.current.push(r.facts.$store.subscribeAll(S)),K.length>0&&M.current.push(r.subscribe(K,()=>{let m=F();depsChanged(v.current,m.factKeys,x.current,m.deriveKeys)&&p(),S();}));};return p(),()=>{for(let R of M.current)R();M.current=[];}},[r,F,w]),q=useCallback(()=>{let S;if(!r)S=c.current;else {let{value:p}=F();S=p===void 0&&s?c.current:p;}return k.current!==b&&l.current(k.current,S)?k.current:(k.current=S,S)},[F,r,s]);return useSyncExternalStore(I,q,q)}function ce(t,e,n,u){let r=n!==void 0,o=u??defaultEquality,s=useRef(e),i=useRef(o),f=useRef(n);s.current=e,i.current=o,f.current=n;let l=useRef(b),c=useMemo(()=>Object.keys(t.facts),[t]),g=useCallback(w=>{let v=c.map(x=>`${x}.*`);return t.subscribe(v,w)},[t,c]),y=useCallback(()=>{let w=s.current(t),v=w===void 0&&r?f.current:w;return l.current!==b&&i.current(l.current,v)?l.current:(l.current=v,v)},[t,r]);return useSyncExternalStore(g,y,y)}function ae(t){return assertSystem("useDispatch",t),useCallback(e=>{t.dispatch(e);},[t])}function le(t,e,n){assertSystem("useWatch",t);let u=useRef(n);u.current=n,useEffect(()=>t.watch(e,(r,o)=>{u.current(r,o);}),[t,e]);}function de(t,e){assertSystem("useInspect",t);let n=Se(t),u=e?.throttleMs,[r,o]=useState(n),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(n);},[n]),!u||u<=0?n:r}function fe(t){return computeInspectState(t)}function Se(t){let e=useRef(null),n=useRef([]),u=useRef([]),r=useRef(null),o=useCallback(i=>{let f=t.facts.$store.subscribeAll(i),l=t.onSettledChange(i);return ()=>{f(),l();}},[t]),s=useCallback(()=>{let i=fe(t),f=i.unmet.length===n.current.length&&i.unmet.every((g,y)=>g.id===n.current[y]),l=i.inflight.length===u.current.length&&i.inflight.every((g,y)=>g.id===u.current[y]),c=i.isSettled===r.current;return f&&l&&c&&e.current?e.current:(e.current=i,n.current=i.unmet.map(g=>g.id),u.current=i.inflight.map(g=>g.id),r.current=i.isSettled,i)},[t]);return useSyncExternalStore(o,s,s)}function xe(t){assertSystem("useHistory",t);let e=useRef(null),n=useCallback(r=>t.onHistoryChange(r),[t]),u=useCallback(()=>{let r=buildHistoryState(t);return r?(e.current&&e.current.canGoBack===r.canGoBack&&e.current.canGoForward===r.canGoForward&&e.current.currentIndex===r.currentIndex&&e.current.totalSnapshots===r.totalSnapshots&&e.current.isPaused===r.isPaused||(e.current=r),e.current):null},[t]);return useSyncExternalStore(n,u,u)}function ke(t,e){return Array.isArray(e)?ge(t,e):pe(t,e)}function pe(t,e){let n=useRef(b),u=useCallback(o=>t.subscribe(o),[t]),r=useCallback(()=>{let o=t.getStatus(e);if(n.current!==b){let s=n.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 n.current}return n.current=o,o},[t,e]);return useSyncExternalStore(u,r,r)}function ge(t,e){let n=useRef(null),u=useRef(""),r=useCallback(s=>t.subscribe(s),[t]),o=useCallback(()=>{let s={},i=[];for(let l of e){let c=t.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!==u.current&&(u.current=f,n.current=s),n.current??s},[t,...e]);return useSyncExternalStore(r,o,o)}var H=new WeakMap;function j(t){let e=H.get(t);return e||(e=new Map,H.set(t,e)),e}function Ie(t,e){return Array.isArray(e)?ve(t,e):ye(t,e)}function ye(t,e){let n=t.getStatus(e);if(n.hasError&&n.lastError)throw n.lastError;if(n.isLoading){let u=j(t),r=u.get(e);throw r||(r=new Promise(o=>{let s=t.subscribe(()=>{t.getStatus(e).isLoading||(u.delete(e),s(),o());});}),u.set(e,r)),r}return n}function ve(t,e){let n={},u=false,r=null;for(let o of e){let s=t.getStatus(o);n[o]=s,s.hasError&&s.lastError&&!r&&(r=s.lastError),s.isLoading&&(u=true);}if(r)throw r;if(u){let o=j(t),s=e.slice().sort().join(","),i=o.get(s);throw i||(i=new Promise(f=>{let l=t.subscribe(()=>{e.every(g=>!t.getStatus(g).isLoading)&&(o.delete(s),l(),f());});}),o.set(s,i)),i}return n}function $(t,e){let n=useRef(null),u=useRef(null),r=useRef(null),o=e?.status===true,s="modules"in t;return n.current||(r.current=()=>{if(s){let{modules:F,...I}=t,q=e?.plugins??I.plugins??[],S=e?.history??I.history,p=e?.trace??I.trace,R=e?.errorBoundary??I.errorBoundary,K=e?.tickMs??I.tickMs,m=e?.zeroConfig??I.zeroConfig,P=e?.initialFacts??I.initialFacts,V=createSystem({modules:F,plugins:q.length>0?q:void 0,history:S,trace:p,errorBoundary:R,tickMs:K,zeroConfig:m,initialFacts:P});return V.initialize(),typeof window<"u"&&V.start(),V}let i="id"in t&&"schema"in t,f=i?t:t.module,l=i?{}:t,c=e?.plugins??l.plugins??[],g=e?.history??l.history,y=e?.trace??l.trace,w=e?.errorBoundary??l.errorBoundary,v=e?.tickMs??l.tickMs,x=e?.zeroConfig??l.zeroConfig,k=e?.initialFacts??l.initialFacts,M=[...c];o&&(u.current=createRequirementStatusPlugin(),M=[...M,u.current.plugin]);let N=createSystem({module:f,plugins:M.length>0?M:void 0,history:g,trace:y,errorBoundary:w,tickMs:v,zeroConfig:x,initialFacts:k});return N.initialize(),typeof window<"u"&&N.start(),N},n.current=r.current()),useEffect(()=>(!n.current&&r.current&&(n.current=r.current()),()=>{n.current?.destroy(),n.current=null,u.current=null;}),[]),o&&!s?{system:n.current,statusPlugin:u.current}:n.current}function Ke(t,e,n){let u=useRef(e);u.current=e;let r=useRef(n);r.current=n;let o=useCallback(i=>t.subscribe(u.current,i),[t]),s=useCallback(()=>r.current(t),[t]);return useSyncExternalStore(o,s,s)}function we(t,e={}){let{facts:n,derived:u,status:r,...o}=e,s=n??[],i=u??[],f=s.length===0&&i.length===0,l=r?$(t,{status:true,...o}):$(t,o),c=r?l.system:l,g=r?l.statusPlugin:void 0,y=useMemo(()=>f?Object.keys(c.derive):[],[c,f]),w=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),x=useRef(b),k=useRef(null),M=useCallback(()=>{let S,p,R,K;if(f){S=c.facts.$store.toObject(),R=Object.keys(S),p={};for(let h of y)p[h]=c.read(h);K=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);K=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 P=x.current!==b;if(P){let h=x.current;if(Object.keys(h).length!==K.length)P=false;else for(let O of K)if(!Object.is(h[O],p[O])){P=false;break}}let V=m?v.current:S,z=P?x.current:p;return m||(v.current=S),P||(x.current=p),m&&P&&k.current||(k.current={facts:V,derived:z}),k.current},[c,f,...s,...i,...y]),N=useSyncExternalStore(w,M,M),F=useCallback(S=>c.dispatch(S),[c]),I=A(c),q={system:c,dispatch:F,events:I,facts:N.facts,derived:N.derived};return r&&g?{...q,statusPlugin:g}:q}function A(t){return assertSystem("useEvents",t),useMemo(()=>t.events,[t])}function Fe(t,e){assertSystem("useExplain",t);let n=useCallback(r=>{let o=t.facts.$store.subscribeAll(r),s=t.onSettledChange(r);return ()=>{o(),s();}},[t]),u=useCallback(()=>t.explain(e),[t,e]);return useSyncExternalStore(n,u,u)}function Ee(t,e){assertSystem("useConstraintStatus",t);let n=de(t);return useMemo(()=>{let u=t.inspect();return e?u.constraints.find(r=>r.id===e)??null:u.constraints},[t,e,n])}function Ne(t,e,n){assertSystem("useOptimisticUpdate",t);let[u,r]=useState(false),[o,s]=useState(null),i=useRef(null),f=useCallback(()=>{i.current&&(t.restore(i.current),i.current=null),r(false),s(null);},[t]),l=useCallback(c=>{i.current=t.getSnapshot(),r(true),s(null),t.batch(c);},[t]);return useEffect(()=>{if(!(!e||!n||!u))return e.subscribe(()=>{let c=e.getStatus(n);!c.isLoading&&!c.hasError?(i.current=null,r(false)):c.hasError&&(s(c.lastError),f());})},[e,n,u,f]),{mutate:l,isPending:u,error:o,rollback:f}}var W=createContext(null);function qe({snapshot:t,children:e}){return jsx(W.Provider,{value:t,children:e})}function Pe(t,e){let n=useContext(W),u=useMemo(()=>n?.data?{...e??{},initialFacts:{...e?.initialFacts??{},...n.data}}:e??{},[n,e]);return $(t,u)}function Ce(){return {useFact:(t,e)=>ne(t,e),useDerived:(t,e)=>ue(t,e),useDispatch:t=>ae(t),useEvents:t=>A(t),useWatch:(t,e,n)=>le(t,e,n)}}function Ue(t){let e=useRef(null),n=useRef(t);return n.current=t,e.current||(e.current=n.current()),useEffect(()=>(!e.current&&n.current&&(e.current=n.current()),typeof window<"u"&&e.current&&!e.current.isRunning&&e.current.start(),()=>{e.current?.destroy(),e.current=null;}),[]),e.current}export{qe as DirectiveHydrator,Ce as createTypedHooks,Ee as useConstraintStatus,ue as useDerived,we as useDirective,$ as useDirectiveRef,ae as useDispatch,A as useEvents,Fe as useExplain,ne as useFact,xe as useHistory,Pe as useHydratedSystem,de as useInspect,Ke as useNamespacedSelector,Ne as useOptimisticUpdate,Ue as useQuerySystem,ke as useRequirementStatus,De as useSelector,Ie as useSuspenseRequirement,le as useWatch};//# sourceMappingURL=index.js.map
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 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 oe(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)?ie(e,t):ue(e,t)}function ue(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 ie(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 ce(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)?le(e,t):ae(e,t)}function ae(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 le(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 Ke(e,t,r,o){if(e&&e._mode==="namespaced")return de(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 de(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 fe(e){return assertSystem("useDispatch",e),useCallback(t=>{e.dispatch(t);},[e])}function Se(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 pe(e,t){assertSystem("useInspect",e);let r=ye(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 ge(e){return computeInspectState(e)}function ye(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=ge(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 Fe(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 Ee(e,t){return Array.isArray(t)?Me(e,t):ve(e,t)}function ve(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 Pe(e,t){return Array.isArray(t)?Re(e,t):me(e,t)}function me(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 Re(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 Ce(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 Te(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 Ue(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 Ve(e,t){assertSystem("useConstraintStatus",e);let r=pe(e);return useMemo(()=>{let o=e.inspect();return t?o.constraints.find(n=>n.id===t)??null:o.constraints},[e,t,r])}function Ne(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 Oe({snapshot:e,children:t}){return jsx(Q.Provider,{value:e,children:t})}function qe(e,t){let r=useContext(Q),o=useMemo(()=>r?.data?{...t??{},initialFacts:{...t?.initialFacts??{},...r.data}}:t??{},[r,t]);return _(e,o)}function $e(){return {useFact:(e,t)=>oe(e,t),useDerived:(e,t)=>ce(e,t),useDispatch:e=>fe(e),useEvents:e=>z(e),useWatch:(e,t,r)=>Se(e,t,r)}}var q=null;function he(){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 Be(e){let t=useRef(e),r=useMemo(()=>{let u=he();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 _e(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{Oe as DirectiveHydrator,$e as createTypedHooks,Ve as useConstraintStatus,ce as useDerived,Te as useDirective,_ as useDirectiveRef,fe as useDispatch,z as useEvents,Ue as useExplain,oe as useFact,Fe as useHistory,qe as useHydratedSystem,pe as useInspect,Ce as useNamespacedSelector,Ne as useOptimisticUpdate,Be as useQuerySystem,Ee as useRequirementStatus,Ke as useSelector,_e as useSuspenseQuery,Pe as useSuspenseRequirement,Se as useWatch};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map