@directive-run/core 0.8.6 → 0.8.8
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/README.md +13 -0
- package/dist/adapter-utils.cjs +1 -1
- package/dist/adapter-utils.cjs.map +1 -1
- package/dist/adapter-utils.d.cts +14 -2
- package/dist/adapter-utils.d.ts +14 -2
- package/dist/adapter-utils.js +1 -1
- package/dist/adapter-utils.js.map +1 -1
- package/dist/chunk-4CMO5OVZ.js +3 -0
- package/dist/chunk-4CMO5OVZ.js.map +1 -0
- package/dist/chunk-BEJ6ICA7.cjs +3 -0
- package/dist/chunk-BEJ6ICA7.cjs.map +1 -0
- package/dist/{chunk-KZZBWL4M.cjs → chunk-CFSW3RP5.cjs} +3 -3
- package/dist/{chunk-KZZBWL4M.cjs.map → chunk-CFSW3RP5.cjs.map} +1 -1
- package/dist/{chunk-O75OISQ2.js → chunk-EFBBEXDA.js} +2 -2
- package/dist/{chunk-O75OISQ2.js.map → chunk-EFBBEXDA.js.map} +1 -1
- package/dist/chunk-ER6QUYTL.cjs +2 -0
- package/dist/{chunk-PK2EH26L.cjs.map → chunk-ER6QUYTL.cjs.map} +1 -1
- package/dist/chunk-ISYFVEHR.js +3 -0
- package/dist/chunk-ISYFVEHR.js.map +1 -0
- package/dist/chunk-L3SUAAPM.cjs +3 -0
- package/dist/chunk-L3SUAAPM.cjs.map +1 -0
- package/dist/{chunk-7DJCOAZH.js → chunk-LB6PNML4.js} +3 -3
- package/dist/{chunk-7DJCOAZH.js.map → chunk-LB6PNML4.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internals.cjs +1 -1
- package/dist/internals.d.cts +21 -2
- package/dist/internals.d.ts +21 -2
- package/dist/internals.js +1 -1
- package/dist/plugins/index.cjs +2 -2
- package/dist/plugins/index.cjs.map +1 -1
- package/dist/plugins/index.d.cts +71 -3
- package/dist/plugins/index.d.ts +71 -3
- package/dist/plugins/index.js +2 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/system-3H5V4HJZ.js +2 -0
- package/dist/{system-CIWPXJOP.js.map → system-3H5V4HJZ.js.map} +1 -1
- package/dist/system-IJKVTF3C.cjs +2 -0
- package/dist/{system-VBZ3OJEO.cjs.map → system-IJKVTF3C.cjs.map} +1 -1
- package/dist/testing.cjs +1 -1
- package/dist/testing.js +1 -1
- package/dist/{utils-4JrY5fk9.d.cts → utils-BnQajqPu.d.cts} +9 -1
- package/dist/{utils-4JrY5fk9.d.ts → utils-BnQajqPu.d.ts} +9 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-GO63IIN5.js +0 -2
- package/dist/chunk-GO63IIN5.js.map +0 -1
- package/dist/chunk-JVDQ2CBC.js +0 -3
- package/dist/chunk-JVDQ2CBC.js.map +0 -1
- package/dist/chunk-JXYZ755I.cjs +0 -3
- package/dist/chunk-JXYZ755I.cjs.map +0 -1
- package/dist/chunk-KQKNE23L.cjs +0 -2
- package/dist/chunk-KQKNE23L.cjs.map +0 -1
- package/dist/chunk-PK2EH26L.cjs +0 -2
- package/dist/system-CIWPXJOP.js +0 -2
- package/dist/system-VBZ3OJEO.cjs +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {y}from'./chunk-
|
|
1
|
+
import {y}from'./chunk-ISYFVEHR.js';import {k}from'./chunk-EFBBEXDA.js';import {c}from'./chunk-4CMO5OVZ.js';var f="::";function R(n){return new Proxy({},{get(e,t){if(typeof t!="symbol"&&!k.has(t))return n.get(t)},set(e,t,o){return typeof t=="symbol"||k.has(t)?false:n.set?n.set(t,o):false},has(e,t){return typeof t=="symbol"||k.has(t)?false:n.has?n.has(t):false},deleteProperty(e,t){return typeof t=="symbol"||k.has(t)?false:n.delete?n.delete(t):false},ownKeys(){return n.ownKeys?n.ownKeys():[]},getOwnPropertyDescriptor(e,t){if(typeof t!="symbol"&&n.has&&typeof t=="string"&&n.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var q=new WeakMap,I=new WeakMap,H=new WeakMap,V=new WeakMap,W=new WeakMap,z=new WeakMap;function S(n,e){let t=q.get(n);if(t){let r=t.get(e);if(r)return r}else t=new Map,q.set(n,t);let o=R({get:r=>r==="$store"||r==="$snapshot"?n[r]:n[`${e}${f}${r}`],set:(r,a)=>(n[`${e}${f}${r}`]=a,true),has:r=>`${e}${f}${r}`in n,delete:r=>(delete n[`${e}${f}${r}`],true)});return t.set(e,o),o}function U(n,e,t){let o=I.get(n);if(o)return o;let r=R({get:a=>{if(Object.hasOwn(e,a))return S(n,a)},has:a=>Object.hasOwn(e,a),ownKeys:()=>t()});return I.set(n,r),r}function G(n,e,t){let o=`${e}|${t.join(",")}`,r=W.get(n);if(r){let i=r.get(o);if(i)return i}else r=new Map,W.set(n,r);let a=new Set(t),u=["self",...t],y=R({get:i=>{if(i==="self")return S(n,e);if(a.has(i))return S(n,i);process.env.NODE_ENV!=="production"&&console.warn(`[Directive] Module "${e}" accessed undeclared cross-module property "${i}". Add it to crossModuleDeps or use "facts.self.${i}" for own module facts.`);},has:i=>i==="self"||a.has(i),ownKeys:()=>u});return r.set(o,y),y}function A(n,e){let t=V.get(n);if(t){let r=t.get(e);if(r)return r}else t=new Map,V.set(n,t);let o=R({get:r=>n[`${e}${f}${r}`],has:r=>`${e}${f}${r}`in n});return t.set(e,o),o}function L(n,e,t){let o=H.get(n);if(o)return o;let r=R({get:a=>{if(Object.hasOwn(e,a))return A(n,a)},has:a=>Object.hasOwn(e,a),ownKeys:()=>t()});return H.set(n,r),r}function Z(n,e,t){let o=z.get(n);return o||(o=new Map,z.set(n,o)),R({get:r=>{if(!Object.hasOwn(e,r))return;let a=o.get(r);if(a)return a;let u=R({get:y=>i=>{n.dispatch({type:`${r}${f}${y}`,...i});}});return o.set(r,u),u},has:r=>Object.hasOwn(e,r),ownKeys:()=>t()})}function v(n){if(n.includes(".")){let[e,...t]=n.split(".");return `${e}${f}${t.join(f)}`}return n}function F(n){let e={};for(let[t,o]of Object.entries(n)){let r=t.indexOf(f);if(r>0){let a=t.slice(0,r),u=t.slice(r+f.length);e[a]||(e[a]={}),e[a][u]=o;}else e._root||(e._root={}),e._root[t]=o;}return e}function O(n,e,t,o){return t?G(n,e,o):S(n,e)}function M(n,e){return `${n}${f}${e}`}function $(n){return Object.keys(n).length>0?n:void 0}function te(n,e){let t={};for(let[o,r]of Object.entries(n.schema.facts))t[M(e,o)]=r;return t}function re(n,e){if(n.init)return t=>{let o=S(t,e);n.init(o);}}function se(n,e,t,o){if(!n.derive)return;let r={};for(let[a,u]of Object.entries(n.derive))r[M(e,a)]=(y,i)=>{let k=O(y,e,t,o),g=A(i,e);return u(k,g)};return $(r)}function oe(n,e){if(!n.events)return;let t={};for(let[o,r]of Object.entries(n.events))t[M(e,o)]=(a,u)=>{let y=S(a,e);r(y,u);};return $(t)}function ie(n,e,t,o){if(!n.constraints)return;let r={};for(let[a,u]of Object.entries(n.constraints)){let y=u;r[M(e,a)]={...y,deps:y.deps?.map(i=>M(e,i)),after:y.after?.map(i=>i.includes(f)?i:M(e,i)),when:i=>{let k=O(i,e,t,o);return y.when(k)},require:typeof y.require=="function"?i=>{let k=O(i,e,t,o);return y.require(k)}:y.require};}return $(r)}function ae(n,e,t,o){if(!n.resolvers)return;let r={};for(let[u,y]of Object.entries(n.resolvers)){let k=function(g){return {facts:O(g.facts,e,t,o),signal:g.signal}};let i=y;r[M(e,u)]={...i,...i.resolve&&{resolve:async(g,d)=>{await i.resolve(g,k(d));}},...i.resolveBatch&&{resolveBatch:async(g,d)=>{await i.resolveBatch(g,k(d));}},...i.resolveBatchWithResults&&{resolveBatchWithResults:async(g,d)=>i.resolveBatchWithResults(g,k(d))}};}return $(r)}function ce(n,e,t,o){if(!n.effects)return;let r={};for(let[a,u]of Object.entries(n.effects)){let y=u;r[M(e,a)]={...y,run:(i,k)=>{let g=O(i,e,t,o),d=k?O(k,e,t,o):void 0;return y.run(g,d)},deps:y.deps?.map(i=>M(e,i))};}return $(r)}function ue(n,e,t){return {snapshotEvents:t&&!t.has(e)?[]:n.history?.snapshotEvents?.map(o=>M(e,o))}}function T(n){let{mod:e,namespace:t,snapshotModulesSet:o}=n,r=!!(e.crossModuleDeps&&Object.keys(e.crossModuleDeps).length>0),a=r?Object.keys(e.crossModuleDeps):[];return {id:e.id,schema:te(e,t),requirements:e.schema.requirements??{},init:re(e,t),derive:se(e,t,r,a),events:oe(e,t),effects:ce(e,t,r,a),constraints:ie(e,t,r,a),resolvers:ae(e,t,r,a),hooks:e.hooks,history:ue(e,t,o)}}function de(n){let e=Object.keys(n),t=new Set(e),o=new Set,r=new Set,a=[],u=[];function y(i){if(o.has(i))return;if(r.has(i)){let g=u.indexOf(i),d=[...u.slice(g),i].join(" \u2192 ");throw new Error(`[Directive] Circular dependency detected: ${d}. Modules cannot have circular crossModuleDeps. Break the cycle by removing one of the cross-module references.`)}r.add(i),u.push(i);let k=n[i];if(k?.crossModuleDeps)for(let g of Object.keys(k.crossModuleDeps))t.has(g)&&y(g);u.pop(),r.delete(i),o.add(i),a.push(i);}for(let i of e)y(i);return a}function J(n,e){let t=[];for(let o of Object.keys(e.schema.facts))t.push(`${n}${f}${o}`);if(e.schema.derivations)for(let o of Object.keys(e.schema.derivations))t.push(`${n}${f}${o}`);return t}function be(n){if("module"in n){if(!n.module)throw new Error("[Directive] createSystem requires a module. Got: "+typeof n.module);return fe(n)}let e=n;if(Array.isArray(e.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array.
|
|
2
2
|
|
|
3
3
|
Instead of:
|
|
4
4
|
createSystem({ modules: [authModule, dataModule] })
|
|
@@ -12,5 +12,5 @@ Or for a single module:
|
|
|
12
12
|
createSystem({ module: myModule })
|
|
13
13
|
|
|
14
14
|
For multiple modules, wrap in an object:
|
|
15
|
-
createSystem({ modules: { myName: myModule } })`);return le(e)}function le(n){let e=n.modules,t=new Set(Object.keys(e)),o=typeof n.history=="object"?n.history:null,r=o?.snapshotModules?new Set(o.snapshotModules):null;if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(process.env.NODE_ENV!=="production"){for(let[s,c]of Object.entries(e))if(c.crossModuleDeps)for(let l of Object.keys(c.crossModuleDeps))l===s?console.warn(`[Directive] Module "${s}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(l)||console.warn(`[Directive] Module "${s}" declares crossModuleDeps.${l}, but no module with namespace "${l}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(process.env.NODE_ENV!=="production"&&o?.snapshotModules)for(let s of o.snapshotModules)t.has(s)||console.warn(`[Directive] history.snapshotModules entry "${s}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let a,u=n.initOrder??"auto";if(Array.isArray(u)){let s=u,c=Object.keys(e).filter(l=>!s.includes(l));if(c.length>0)throw new Error(`[Directive] initOrder is missing modules: ${c.join(", ")}. All modules must be included in the explicit order.`);a=s;}else u==="declaration"?a=Object.keys(e):a=de(e);let{history:y$1,trace:i,errorBoundary:k$1}=Q(n);for(let s of Object.keys(e)){if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}". Module names cannot contain "${f}".`);let c=e[s];if(c){for(let l of Object.keys(c.schema.facts))if(l.includes(f))throw new Error(`[Directive] Schema key "${l}" in module "${s}" contains the reserved separator "${f}". Schema keys cannot contain "${f}".`)}}let g={names:null};function d(){return g.names===null&&(g.names=Object.keys(e)),g.names}let w=a.map(s=>{let c=e[s];return c?T({mod:c,namespace:s,snapshotModulesSet:r}):null}).filter(s=>s!==null);process.env.NODE_ENV!=="production"&&n.tickMs&&n.tickMs>0&&(w.some(c=>c.events&&Object.keys(c.events).some(l=>l.endsWith(`${f}tick`)))||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but no module defines a "tick" event handler.`));let D=null,h=null;function _(s){for(let[c$1,l]of Object.entries(s)){if(k.has(c$1)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${c$1}". Skipping.`);continue}if(!t.has(c$1)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${c$1}". Available modules: ${[...t].join(", ")}`);continue}if(l&&typeof l=="object"&&!c(l))throw new Error(`[Directive] initialFacts/hydrate for namespace "${c$1}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[p,b]of Object.entries(l))k.has(p)||(h.facts[`${c$1}${f}${p}`]=b);}}h=y({modules:w,plugins:n.plugins,history:y$1,trace:i,errorBoundary:k$1,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{n.initialFacts&&_(n.initialFacts),D&&(_(D),D=null);}});let x=new Map;for(let s of Object.keys(e)){let c=e[s];c&&x.set(s,J(s,c));}let B=U(h.facts,e,d),ee=L(h.derive,e,d),ne=Z(h,e,d),E=null,j=n.tickMs,N={_mode:"namespaced",facts:B,history:h.history,derive:ee,events:ne,constraints:h.constraints,effects:h.effects,resolvers:h.resolvers,async hydrate(s){if(h.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let c=await s();c&&typeof c=="object"&&(D=c);},initialize(){h.initialize();},start(){if(h.start(),j&&j>0){let s;for(let c of w)if(c?.events&&(s=Object.keys(c.events).find(l=>l.endsWith(`${f}tick`)),s))break;if(s){let c=s;E=setInterval(()=>{h.dispatch({type:c});},j);}}},stop(){E&&(clearInterval(E),E=null),h.stop();},destroy(){this.stop(),h.destroy();},dispatch(s){h.dispatch(s);},read(s){return h.read(v(s))},subscribe(s,c){let l=[];for(let p of s)if(p.endsWith(".*")){let b=p.slice(0,-2),K=x.get(b);K?l.push(...K):process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribe wildcard "${p}" \u2014 namespace "${b}" not found.`);}else l.push(v(p));return h.subscribe(l,c)},subscribeModule(s,c){let l=x.get(s);return !l||l.length===0?(process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribeModule("${s}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):h.subscribe(l,c)},watch(s,c,l){return h.watch(v(s),c,l)},when(s,c){return h.when(()=>s(B),c)},getDistributableSnapshot(s){let c={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)},l=h.getDistributableSnapshot(c);return {...l,data:F(l.data)}},watchDistributableSnapshot(s,c){let l={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)};return h.watchDistributableSnapshot(l,p=>{c({...p,data:F(p.data)});})},registerModule(s,c){if(t.has(s))throw new Error(`[Directive] Module namespace "${s}" already exists. Cannot register a duplicate namespace.`);if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}".`);if(k.has(s))throw new Error(`[Directive] Module name "${s}" is a blocked property.`);for(let b of Object.keys(c.schema.facts))if(b.includes(f))throw new Error(`[Directive] Schema key "${b}" in module "${s}" contains the reserved separator "${f}".`);let l=c,p=T({mod:l,namespace:s,snapshotModulesSet:r});t.add(s),e[s]=l,g.names=null,x.set(s,J(s,l)),h.registerModule(p);}};return X(N,h),Y(N),N}function Q(n){let e=n.history,t=n.trace,o=n.errorBoundary;if(n.zeroConfig){let r=process.env.NODE_ENV!=="production";e=e??r,o={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...n.errorBoundary};}return {history:e,trace:t,errorBoundary:o}}function X(n,e){Object.defineProperties(n,{trace:{get(){return e.trace},enumerable:true,configurable:true},isRunning:{get(){return e.isRunning},enumerable:true,configurable:true},isSettled:{get(){return e.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return e.isInitialized},enumerable:true,configurable:true},isReady:{get(){return e.isReady},enumerable:true,configurable:true}}),n.whenReady=e.whenReady.bind(e),n.batch=e.batch.bind(e),n.onSettledChange=e.onSettledChange.bind(e),n.onHistoryChange=e.onHistoryChange.bind(e),n.inspect=e.inspect.bind(e),n.settle=e.settle.bind(e),n.explain=e.explain.bind(e),n.getSnapshot=e.getSnapshot.bind(e),n.restore=e.restore.bind(e);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let o of t)o in n||(n[o]=e[o].bind(e));}function Y(n){process.env.NODE_ENV!=="production"&&process.env.NODE_ENV!=="test"&&setTimeout(()=>{!n.isRunning&&!n.isInitialized&&console.warn("[Directive] System created but start() was never called. Constraints, resolvers, and effects will not run until you call system.start().");},0);}function fe(n){let e=n.module;if(!e)throw new Error("[Directive] createSystem requires a module. Got: "+typeof e);if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(n.initialFacts&&!c(n.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");process.env.NODE_ENV!=="production"&&(e.crossModuleDeps&&Object.keys(e.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),n.tickMs&&n.tickMs>0&&(e.events&&"tick"in e.events||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but module has no "tick" event handler.`)),(typeof n.history=="object"?n.history:null)?.snapshotModules&&console.warn("[Directive] history.snapshotModules has no effect in single-module mode. Use history.snapshotEvents on the module definition instead, or switch to createSystem({ modules: { ... } }) for multi-module filtering."));let{history:t,trace:o,errorBoundary:r}=Q(n),a=null,u=null;u=y({modules:[{id:e.id,schema:e.schema.facts,requirements:e.schema.requirements,init:e.init,derive:e.derive,events:e.events,effects:e.effects,constraints:e.constraints,resolvers:e.resolvers,hooks:e.hooks,history:e.history}],plugins:n.plugins,history:t,trace:o,errorBoundary:r,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{if(n.initialFacts)for(let[d,w]of Object.entries(n.initialFacts))k.has(d)||(u.facts[d]=w);if(a){if(!c(a))process.env.NODE_ENV!=="production"&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,w]of Object.entries(a))k.has(d)||(u.facts[d]=w);a=null;}}});let y$1=new Proxy({},{get(d,w){if(typeof w!="symbol"&&!k.has(w))return D=>{u.dispatch({type:w,...D});}},has(d,w){return typeof w=="symbol"||k.has(w)?false:e.events?w in e.events:false},ownKeys(){return e.events?Object.keys(e.events):[]},getOwnPropertyDescriptor(d,w){if(typeof w!="symbol"&&!k.has(w)&&e.events&&w in e.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),i=null,k$1=n.tickMs,g={_mode:"single",facts:u.facts,history:u.history,derive:u.derive,events:y$1,constraints:u.constraints,effects:u.effects,resolvers:u.resolvers,async hydrate(d){if(u.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let w=await d();w&&typeof w=="object"&&(a=w);},initialize(){u.initialize();},start(){u.start(),k$1&&k$1>0&&e.events&&"tick"in e.events&&(i=setInterval(()=>{u.dispatch({type:"tick"});},k$1));},stop(){i&&(clearInterval(i),i=null),u.stop();},destroy(){this.stop(),u.destroy();},registerModule(d){u.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return X(g,u),Y(g),g}export{be as a};//# sourceMappingURL=chunk-7DJCOAZH.js.map
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
createSystem({ modules: { myName: myModule } })`);return le(e)}function le(n){let e=n.modules,t=new Set(Object.keys(e)),o=typeof n.history=="object"?n.history:null,r=o?.snapshotModules?new Set(o.snapshotModules):null;if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(process.env.NODE_ENV!=="production"){for(let[s,c]of Object.entries(e))if(c.crossModuleDeps)for(let l of Object.keys(c.crossModuleDeps))l===s?console.warn(`[Directive] Module "${s}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(l)||console.warn(`[Directive] Module "${s}" declares crossModuleDeps.${l}, but no module with namespace "${l}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(process.env.NODE_ENV!=="production"&&o?.snapshotModules)for(let s of o.snapshotModules)t.has(s)||console.warn(`[Directive] history.snapshotModules entry "${s}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let a,u=n.initOrder??"auto";if(Array.isArray(u)){let s=u,c=Object.keys(e).filter(l=>!s.includes(l));if(c.length>0)throw new Error(`[Directive] initOrder is missing modules: ${c.join(", ")}. All modules must be included in the explicit order.`);a=s;}else u==="declaration"?a=Object.keys(e):a=de(e);let{history:y$1,trace:i,errorBoundary:k$1}=Q(n);for(let s of Object.keys(e)){if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}". Module names cannot contain "${f}".`);let c=e[s];if(c){for(let l of Object.keys(c.schema.facts))if(l.includes(f))throw new Error(`[Directive] Schema key "${l}" in module "${s}" contains the reserved separator "${f}". Schema keys cannot contain "${f}".`)}}let g={names:null};function d(){return g.names===null&&(g.names=Object.keys(e)),g.names}let w=a.map(s=>{let c=e[s];return c?T({mod:c,namespace:s,snapshotModulesSet:r}):null}).filter(s=>s!==null);process.env.NODE_ENV!=="production"&&n.tickMs&&n.tickMs>0&&(w.some(c=>c.events&&Object.keys(c.events).some(l=>l.endsWith(`${f}tick`)))||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but no module defines a "tick" event handler.`));let D=null,h=null;function _(s){for(let[c$1,l]of Object.entries(s)){if(k.has(c$1)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${c$1}". Skipping.`);continue}if(!t.has(c$1)){process.env.NODE_ENV!=="production"&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${c$1}". Available modules: ${[...t].join(", ")}`);continue}if(l&&typeof l=="object"&&!c(l))throw new Error(`[Directive] initialFacts/hydrate for namespace "${c$1}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[p,b]of Object.entries(l))k.has(p)||(h.facts[`${c$1}${f}${p}`]=b);}}h=y({modules:w,plugins:n.plugins,history:y$1,trace:i,errorBoundary:k$1,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{n.initialFacts&&_(n.initialFacts),D&&(_(D),D=null);}});let x=new Map;for(let s of Object.keys(e)){let c=e[s];c&&x.set(s,J(s,c));}let B=U(h.facts,e,d),ee=L(h.derive,e,d),ne=Z(h,e,d),E=null,j=n.tickMs,N={_mode:"namespaced",facts:B,history:h.history,derive:ee,events:ne,constraints:h.constraints,effects:h.effects,resolvers:h.resolvers,async hydrate(s){if(h.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let c=await s();c&&typeof c=="object"&&(D=c);},initialize(){h.initialize();},start(){if(h.start(),j&&j>0){let s;for(let c of w)if(c?.events&&(s=Object.keys(c.events).find(l=>l.endsWith(`${f}tick`)),s))break;if(s){let c=s;E=setInterval(()=>{h.dispatch({type:c});},j);}}},stop(){E&&(clearInterval(E),E=null),h.stop();},destroy(){this.stop(),h.destroy();},dispatch(s){h.dispatch(s);},read(s){return h.read(v(s))},subscribe(s,c){let l=[];for(let p of s)if(p.endsWith(".*")){let b=p.slice(0,-2),K=x.get(b);K?l.push(...K):process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribe wildcard "${p}" \u2014 namespace "${b}" not found.`);}else l.push(v(p));return h.subscribe(l,c)},subscribeModule(s,c){let l=x.get(s);return !l||l.length===0?(process.env.NODE_ENV!=="production"&&console.warn(`[Directive] subscribeModule("${s}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):h.subscribe(l,c)},watch(s,c,l){return h.watch(v(s),c,l)},when(s,c){return h.when(()=>s(B),c)},getDistributableSnapshot(s){let c={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)},l=h.getDistributableSnapshot(c);return {...l,data:F(l.data)}},watchDistributableSnapshot(s,c){let l={...s,includeDerivations:s?.includeDerivations?.map(v),excludeDerivations:s?.excludeDerivations?.map(v),includeFacts:s?.includeFacts?.map(v)};return h.watchDistributableSnapshot(l,p=>{c({...p,data:F(p.data)});})},registerModule(s,c){if(t.has(s))throw new Error(`[Directive] Module namespace "${s}" already exists. Cannot register a duplicate namespace.`);if(s.includes(f))throw new Error(`[Directive] Module name "${s}" contains the reserved separator "${f}".`);if(k.has(s))throw new Error(`[Directive] Module name "${s}" is a blocked property.`);for(let b of Object.keys(c.schema.facts))if(b.includes(f))throw new Error(`[Directive] Schema key "${b}" in module "${s}" contains the reserved separator "${f}".`);let l=c,p=T({mod:l,namespace:s,snapshotModulesSet:r});t.add(s),e[s]=l,g.names=null,x.set(s,J(s,l)),h.registerModule(p);}};return X(N,h),Y(N),N}function Q(n){let e=n.history,t=n.trace,o=n.errorBoundary;if(n.zeroConfig){let r=process.env.NODE_ENV!=="production";e=e??r,o={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...n.errorBoundary};}return {history:e,trace:t,errorBoundary:o}}function X(n,e){Object.defineProperties(n,{trace:{get(){return e.trace},enumerable:true,configurable:true},isRunning:{get(){return e.isRunning},enumerable:true,configurable:true},isSettled:{get(){return e.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return e.isInitialized},enumerable:true,configurable:true},isReady:{get(){return e.isReady},enumerable:true,configurable:true}}),n.whenReady=e.whenReady.bind(e),n.batch=e.batch.bind(e),n.onSettledChange=e.onSettledChange.bind(e),n.onHistoryChange=e.onHistoryChange.bind(e),n.inspect=e.inspect.bind(e),n.settle=e.settle.bind(e),n.explain=e.explain.bind(e),n.getSnapshot=e.getSnapshot.bind(e),n.restore=e.restore.bind(e);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let o of t)o in n||(n[o]=e[o].bind(e));}function Y(n){process.env.NODE_ENV!=="production"&&process.env.NODE_ENV!=="test"&&setTimeout(()=>{!n.isRunning&&!n.isInitialized&&console.warn("[Directive] System created but start() was never called. Constraints, resolvers, and effects will not run until you call system.start().");},0);}function fe(n){let e=n.module;if(!e)throw new Error("[Directive] createSystem requires a module. Got: "+typeof e);if(n.tickMs!==void 0&&n.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(n.initialFacts&&!c(n.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");process.env.NODE_ENV!=="production"&&(e.crossModuleDeps&&Object.keys(e.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),n.tickMs&&n.tickMs>0&&(e.events&&"tick"in e.events||console.warn(`[Directive] tickMs is set to ${n.tickMs}ms but module has no "tick" event handler.`)),(typeof n.history=="object"?n.history:null)?.snapshotModules&&console.warn("[Directive] history.snapshotModules has no effect in single-module mode. Use history.snapshotEvents on the module definition instead, or switch to createSystem({ modules: { ... } }) for multi-module filtering."));let{history:t,trace:o,errorBoundary:r}=Q(n),a=null,u=null;u=y({modules:[{id:e.id,schema:e.schema.facts,requirements:e.schema.requirements,init:e.init,derive:e.derive,events:e.events,effects:e.effects,constraints:e.constraints,resolvers:e.resolvers,hooks:e.hooks,history:e.history}],plugins:n.plugins,history:t,trace:o,errorBoundary:r,tickMs:n.tickMs,cloud:n.cloud,onAfterModuleInit:()=>{if(n.initialFacts)for(let[d,w]of Object.entries(n.initialFacts))k.has(d)||(u.facts[d]=w);if(a){if(!c(a))process.env.NODE_ENV!=="production"&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,w]of Object.entries(a))k.has(d)||(u.facts[d]=w);a=null;}}});let y$1=new Proxy({},{get(d,w){if(typeof w!="symbol"&&!k.has(w))return D=>{u.dispatch({type:w,...D});}},has(d,w){return typeof w=="symbol"||k.has(w)?false:e.events?w in e.events:false},ownKeys(){return e.events?Object.keys(e.events):[]},getOwnPropertyDescriptor(d,w){if(typeof w!="symbol"&&!k.has(w)&&e.events&&w in e.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),i=null,k$1=n.tickMs,g={_mode:"single",facts:u.facts,history:u.history,derive:u.derive,events:y$1,constraints:u.constraints,effects:u.effects,resolvers:u.resolvers,async hydrate(d){if(u.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let w=await d();w&&typeof w=="object"&&(a=w);},initialize(){u.initialize();},start(){u.start(),k$1&&k$1>0&&e.events&&"tick"in e.events&&(i=setInterval(()=>{u.dispatch({type:"tick"});},k$1));},stop(){i&&(clearInterval(i),i=null),u.stop();},destroy(){this.stop(),u.destroy();},registerModule(d){u.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return X(g,u),Y(g),g}export{be as a};//# sourceMappingURL=chunk-LB6PNML4.js.map
|
|
16
|
+
//# sourceMappingURL=chunk-LB6PNML4.js.map
|