@directive-run/core
Advanced tools
| 'use strict';var chunkAG2FPVZN_cjs=require('./chunk-AG2FPVZN.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');var m="::",he=Symbol.for("nodejs.util.inspect.custom");function we(e){if(!e.ownKeys)return {};let n={};for(let t of e.ownKeys())n[t]=e.get(t);return n}function $(e){return new Proxy({},{get(n,t){if(typeof t=="symbol")return t===he?()=>we(e):void 0;if(!chunkJGPPJV5P_cjs.k.has(t))return e.get(t)},set(n,t,i){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.set?e.set(t,i):false},has(n,t){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.has?e.has(t):false},deleteProperty(n,t){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.delete?e.delete(t):false},ownKeys(){return e.ownKeys?e.ownKeys():[]},getOwnPropertyDescriptor(n,t){if(typeof t!="symbol"&&e.has&&typeof t=="string"&&e.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var Z=new WeakMap,Q=new WeakMap,X=new WeakMap,ee=new WeakMap,ne=new WeakMap,te=new WeakMap;function P(e,n){let t=Z.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,Z.set(e,t);let i=$({get:r=>r==="$store"||r==="$snapshot"?e[r]:e[`${n}${m}${r}`],set:(r,u)=>{if(chunk4MNQDXH7_cjs.a){let s=chunkJGPPJV5P_cjs.l(u);s&&chunkJGPPJV5P_cjs.m(`${n}.${r}`,s);}return e[`${n}${m}${r}`]=u,true},has:r=>`${n}${m}${r}`in e,delete:r=>(delete e[`${n}${m}${r}`],true)});return t.set(n,i),i}function re(e,n,t){let i=Q.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return P(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return Q.set(e,r),r}function oe(e,n,t){let i=`${n}|${t.join(",")}`,r=ne.get(e);if(r){let o=r.get(i);if(o)return o}else r=new Map,ne.set(e,r);let u=new Set(t),s=["self",...t],c=$({get:o=>{if(o==="self")return P(e,n);if(u.has(o))return P(e,o);chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] Module "${n}" accessed undeclared cross-module property "${o}". Add it to crossModuleDeps or use "facts.self.${o}" for own module facts.`);},has:o=>o==="self"||u.has(o),ownKeys:()=>s});return r.set(i,c),c}function K(e,n){let t=ee.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,ee.set(e,t);let i=$({get:r=>e[`${n}${m}${r}`],has:r=>`${n}${m}${r}`in e});return t.set(n,i),i}function se(e,n,t){let i=X.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return K(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return X.set(e,r),r}function ie(e,n,t){let i=te.get(e);return i||(i=new Map,te.set(e,i)),$({get:r=>{if(!Object.hasOwn(n,r))return;let u=i.get(r);if(u)return u;let s=$({get:c=>o=>{e.dispatch({type:`${r}${m}${c}`,...o});}});return i.set(r,s),s},has:r=>Object.hasOwn(n,r),ownKeys:()=>t()})}function S(e){if(e.includes(".")){let[n,...t]=e.split(".");return `${n}${m}${t.join(m)}`}return e}function B(e){let n={};for(let[t,i]of Object.entries(e)){let r=t.indexOf(m);if(r>0){let u=t.slice(0,r),s=t.slice(r+m.length);n[u]||(n[u]={}),n[u][s]=i;}else n._root||(n._root={}),n._root[t]=i;}return n}function A(e,n,t,i){return t?oe(e,n,i):P(e,n)}function b(e,n){return `${e}${m}${n}`}function ae(e){return e.includes(m)}function E(e,n,t){if(Array.isArray(e)){let s=e.map(c=>{if(c&&typeof c=="object"&&typeof c.fact=="string"){let o=c.fact;return ae(o)?c:{...c,fact:b(n,o)}}return c});return chunk4MNQDXH7_cjs.b(s),s}if(!e||typeof e!="object")return e;let i=e;if("$all"in i||"$any"in i){let s="$all"in i?"$all":"$any",c=i[s],o={[s]:c.map(f=>E(f,n,t))};return chunk4MNQDXH7_cjs.b(o),o}if("$not"in i){let s={$not:E(i.$not,n,t)};return chunk4MNQDXH7_cjs.b(s),s}function r(s,c){return E(s,c,ce)}let u={};for(let s of Object.keys(i)){if(s.startsWith("$")||ae(s)){u[s]=i[s];continue}if(s==="self"){let c=i[s];if(c&&typeof c=="object"){let o=r(c,n);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}if(t.has(s)){let c=i[s];if(c&&typeof c=="object"){let o=r(c,s);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}u[b(n,s)]=i[s];}return chunk4MNQDXH7_cjs.b(u),u}var ce=new Set;function me(e,n){let t=e.crossModuleDeps?new Set(Object.keys(e.crossModuleDeps)):ce,i=e.constraints;if(i){let c=false,o={};for(let[f,l]of Object.entries(i)){let d=l;if(d.when!==void 0&&typeof d.when!="function"){o[f]={...d,when:E(d.when,n,t)},c=true;continue}o[f]=l;}c&&(i=o);}let r=e.derive;if(r){let c=false,o={};for(let[f,l]of Object.entries(r)){let d=l&&typeof l=="object"&&Object.hasOwn(l,"compute")?l:null;if(!d){o[f]=l;continue}let h=d.compute;if(typeof h=="function"){o[f]=l;continue}if(chunkRWFKUNF7_cjs.k(h)){chunk4MNQDXH7_cjs.b(h);let k=g=>chunkRWFKUNF7_cjs.s(h,g);o[f]=d.meta?{compute:k,meta:d.meta}:k,c=true;continue}if(chunkRWFKUNF7_cjs.h(h)){chunk4MNQDXH7_cjs.b(h);let k=chunkRWFKUNF7_cjs.q(h),g=j=>k(j);o[f]=d.meta?{compute:g,meta:d.meta}:g,c=true;continue}o[f]=l;}c&&(r=o);}let u=e.events;if(u){let c=false,o={};for(let[f,l]of Object.entries(u)){if(l&&typeof l=="object"){let d=Object.hasOwn(l,"handler"),h=Object.hasOwn(l,"patch");if(d&&h&&chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] event "${f}": both \`handler\` and \`patch\` provided \u2014 using \`handler\` (patch is ignored).`),h&&!d){let k=l;chunk4MNQDXH7_cjs.b(k.patch);let g=(j,x)=>chunkRWFKUNF7_cjs.v(k.patch,j,x??{});o[f]=k.meta?{handler:g,meta:k.meta}:g,c=true;continue}}o[f]=l;}c&&(u=o);}let s=e.effects;if(s){let c=false,o={};for(let[f,l]of Object.entries(s)){let d=l;if(d.on!==void 0&&chunkRWFKUNF7_cjs.h(d.on)){o[f]={...d,on:E(d.on,n,t)},c=true;continue}o[f]=l;}c&&(s=o);}return i===e.constraints&&r===e.derive&&u===e.events&&s===e.effects?e:{...e,constraints:i,derive:r,events:u,effects:s}}function C(e){return Object.keys(e).length>0?e:void 0}function ke(e,n){let t={};for(let[i,r]of Object.entries(e.schema.facts))t[b(n,i)]=r;return t}function pe(e,n){if(e.init)return t=>{let i=P(t,n);e.init(i);}}function ve(e,n,t,i){if(!e.derive)return;let r={};for(let[u,s]of Object.entries(e.derive)){let c=chunkAG2FPVZN_cjs.a(s),o=c?s.compute:s,f=c?s.meta:void 0,l=(d,h)=>{let k=A(d,n,t,i),g=K(h,n);return o(k,g)};r[b(n,u)]=f?{compute:l,meta:f}:l;}return C(r)}function be(e,n){if(!e.events)return;let t={};for(let[i,r]of Object.entries(e.events)){let u=typeof r=="object"&&r!==null&&Object.hasOwn(r,"handler"),s=u?r.handler:r,c=u?r.meta:void 0,o=(f,l)=>{let d=P(f,n);s(d,l);};t[b(n,i)]=c?{handler:o,meta:c}:o;}return C(t)}function Me(e,n,t,i){if(!e.constraints)return;let r={};for(let[u,s]of Object.entries(e.constraints)){let c=s,o=typeof c.when=="function";r[b(n,u)]={...c,deps:c.deps?.map(f=>b(n,f)),after:c.after?.map(f=>f.includes(m)?f:b(n,f)),owns:c.owns?.map(f=>f.includes(m)?f:b(n,f)),when:o?f=>{let l=A(f,n,t,i);return c.when(l)}:c.when,require:typeof c.require=="function"?f=>{let l=A(f,n,t,i);return c.require(l)}:c.require};}return C(r)}function Re(e,n,t,i){if(!e.resolvers)return;let r={};for(let[s,c]of Object.entries(e.resolvers)){let f=function(l){return {facts:A(l.facts,n,t,i),signal:l.signal}};let o=c;r[b(n,s)]={...o,...o.resolve&&{resolve:async(l,d)=>{await o.resolve(l,f(d));}},...o.resolveBatch&&{resolveBatch:async(l,d)=>{await o.resolveBatch(l,f(d));}},...o.resolveBatchWithResults&&{resolveBatchWithResults:async(l,d)=>o.resolveBatchWithResults(l,f(d))}};}return C(r)}function Se(e,n,t,i){if(!e.effects)return;let r={};for(let[u,s]of Object.entries(e.effects)){let c=s;r[b(n,u)]={...c,run:(o,f)=>{let l=A(o,n,t,i),d=f?A(f,n,t,i):void 0;return c.run(l,d)},deps:c.deps?.map(o=>b(n,o))};}return C(r)}function Oe(e,n,t){return {snapshotEvents:t&&!t.has(n)?[]:e.history?.snapshotEvents?.map(i=>b(n,i))}}function H(e){let{mod:n,namespace:t,snapshotModulesSet:i}=e,r=me(n,t),u=!!(r.crossModuleDeps&&Object.keys(r.crossModuleDeps).length>0),s=u?Object.keys(r.crossModuleDeps):[];return {id:r.id,schema:ke(r,t),requirements:r.schema.requirements??{},init:pe(r,t),derive:ve(r,t,u,s),events:be(r,t),effects:Se(r,t,u,s),sources:r.sources,constraints:Me(r,t,u,s),resolvers:Re(r,t,u,s),hooks:r.hooks,meta:r.meta,history:Oe(r,t,i)}}function xe(e){let n=Object.keys(e),t=new Set(n),i=new Set,r=new Set,u=[],s=[];function c(o){if(i.has(o))return;if(r.has(o)){let l=s.indexOf(o),d=[...s.slice(l),o].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(o),s.push(o);let f=e[o];if(f?.crossModuleDeps)for(let l of Object.keys(f.crossModuleDeps))t.has(l)&&c(l);s.pop(),r.delete(o),i.add(o),u.push(o);}for(let o of n)c(o);return u}function ue(e,n){let t=[];for(let i of Object.keys(n.schema.facts))t.push(`${e}${m}${i}`);if(n.schema.derivations)for(let i of Object.keys(n.schema.derivations))t.push(`${e}${m}${i}`);return t}function ze(e){if("module"in e){if(!e.module)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof e.module}`);return $e(e)}let n=e;if(Array.isArray(n.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array. | ||
| Instead of: | ||
| createSystem({ modules: [authModule, dataModule] }) | ||
| Use: | ||
| createSystem({ modules: { auth: authModule, data: dataModule } }) | ||
| Or for a single module: | ||
| createSystem({ module: counterModule })`);let t=n.modules;if(t&&typeof t=="object"&&"id"in t&&"schema"in t)throw new Error(`[Directive] A single module was passed to \`modules:\`. For a single module, use \`module:\` instead: | ||
| createSystem({ module: myModule }) | ||
| For multiple modules, wrap in an object: | ||
| createSystem({ modules: { myName: myModule } })`);return De(n)}function De(e){let n=e.modules,t=new Set(Object.keys(n)),i=typeof e.history=="object"?e.history:null,r=i?.snapshotModules?new Set(i.snapshotModules):null;if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(chunk4MNQDXH7_cjs.a){for(let[a,y]of Object.entries(n))if(y.crossModuleDeps)for(let w of Object.keys(y.crossModuleDeps))w===a?console.warn(`[Directive] Module "${a}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(w)||console.warn(`[Directive] Module "${a}" declares crossModuleDeps.${w}, but no module with namespace "${w}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(chunk4MNQDXH7_cjs.a&&i?.snapshotModules)for(let a of i.snapshotModules)t.has(a)||console.warn(`[Directive] history.snapshotModules entry "${a}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let u,s=e.initOrder??"auto";if(Array.isArray(s)){let a=s,y=Object.keys(n).filter(w=>!a.includes(w));if(y.length>0)throw new Error(`[Directive] initOrder is missing modules: ${y.join(", ")}. All modules must be included in the explicit order.`);u=a;}else s==="declaration"?u=Object.keys(n):u=xe(n);let{history:c,trace:o,errorBoundary:f}=de(e);for(let a of Object.keys(n)){if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}". Module names cannot contain "${m}".`);let y=n[a];if(y){for(let w of Object.keys(y.schema.facts))if(w.includes(m))throw new Error(`[Directive] Schema key "${w}" in module "${a}" contains the reserved separator "${m}". Schema keys cannot contain "${m}".`)}}let l={names:null};function d(){return l.names===null&&(l.names=Object.keys(n)),l.names}let h=u.map(a=>{let y=n[a];return y?H({mod:y,namespace:a,snapshotModulesSet:r}):null}).filter(a=>a!==null);chunk4MNQDXH7_cjs.a&&e.tickMs&&e.tickMs>0&&(h.some(y=>y.events&&Object.keys(y.events).some(w=>w.endsWith(`${m}tick`)))||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but no module defines a "tick" event handler.`));let k=null,g=null;function j(a){for(let[y,w]of Object.entries(a)){if(chunkJGPPJV5P_cjs.k.has(y)){chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${y}". Skipping.`);continue}if(!t.has(y)){chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${y}". Available modules: ${[...t].join(", ")}`);continue}if(w&&typeof w=="object"&&!chunk4MNQDXH7_cjs.f(w))throw new Error(`[Directive] initialFacts/hydrate for namespace "${y}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[M,D]of Object.entries(w))chunkJGPPJV5P_cjs.k.has(M)||(g.facts[`${y}${m}${M}`]=D);}}g=chunkAG2FPVZN_cjs.A({modules:h,plugins:e.plugins,history:c,trace:o,errorBoundary:f,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{e.initialFacts&&j(e.initialFacts),k&&(j(k),k=null);}});let x=new Map;for(let a of Object.keys(n)){let y=n[a];y&&x.set(a,ue(a,y));}let q=re(g.facts,n,d),ye=se(g.derive,n,d),ge=ie(g,n,d),R=null,F=e.tickMs,_={_mode:"namespaced",facts:q,history:g.history,derive:ye,events:ge,constraints:g.constraints,effects:g.effects,resolvers:g.resolvers,async hydrate(a){if(g.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let y=await a();y&&typeof y=="object"&&(k=y);},initialize(){g.initialize();},start(){if(g.start(),F&&F>0){let a;for(let y of h)if(y?.events&&(a=Object.keys(y.events).find(w=>w.endsWith(`${m}tick`)),a))break;if(a){let y=a;R=setInterval(()=>{g.dispatch({type:y});},F);}}},stop(){R&&(clearInterval(R),R=null),g.stop();},async stopAsync(){R&&(clearInterval(R),R=null),await g.stopAsync();},destroy(){this.stop(),g.destroy();},async destroyAsync(){await this.stopAsync(),await g.destroyAsync();},async evict(a){R&&(clearInterval(R),R=null),await g.evict(a);},dispatch(a){g.dispatch(a);},read(a){return g.read(S(a))},subscribe(a,y){let w=[];for(let M of a)if(M.endsWith(".*")){let D=M.slice(0,-2),W=x.get(D);W?w.push(...W):chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] subscribe wildcard "${M}" \u2014 namespace "${D}" not found.`);}else w.push(S(M));return g.subscribe(w,y)},subscribeModule(a,y){let w=x.get(a);return !w||w.length===0?(chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] subscribeModule("${a}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):g.subscribe(w,y)},watch(a,y,w){return g.watch(S(a),y,w)},when(a,y){return g.when(()=>a(q),y)},getDistributableSnapshot(a){let y={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)},w=g.getDistributableSnapshot(y);return {...w,data:B(w.data)}},watchDistributableSnapshot(a,y){let w={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)};return g.watchDistributableSnapshot(w,M=>{y({...M,data:B(M.data)});})},registerModule(a,y){if(t.has(a))throw new Error(`[Directive] Module namespace "${a}" already exists. Cannot register a duplicate namespace.`);if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}".`);if(chunkJGPPJV5P_cjs.k.has(a))throw new Error(`[Directive] Module name "${a}" is a blocked property.`);for(let D of Object.keys(y.schema.facts))if(D.includes(m))throw new Error(`[Directive] Schema key "${D}" in module "${a}" contains the reserved separator "${m}".`);let w=y,M=H({mod:w,namespace:a,snapshotModulesSet:r});t.add(a),n[a]=w,l.names=null,x.set(a,ue(a,w)),g.registerModule(M);}};return le(_,g),fe(_),_}function de(e){let n=e.history,t=e.trace,i=e.errorBoundary;return e.zeroConfig&&(n=n??chunk4MNQDXH7_cjs.a,i={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...e.errorBoundary}),{history:n,trace:t,errorBoundary:i}}function le(e,n){Object.defineProperties(e,{trace:{get(){return n.trace},enumerable:true,configurable:true},meta:{value:n.meta,enumerable:true,configurable:true},isRunning:{get(){return n.isRunning},enumerable:true,configurable:true},isSettled:{get(){return n.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return n.isInitialized},enumerable:true,configurable:true},isReady:{get(){return n.isReady},enumerable:true,configurable:true}}),e.whenReady=n.whenReady.bind(n),e.batch=n.batch.bind(n),e.onSettledChange=n.onSettledChange.bind(n),e.onHistoryChange=n.onHistoryChange.bind(n),e.inspect=n.inspect.bind(n),e.settle=n.settle.bind(n),e.explain=n.explain.bind(n),e.getSnapshot=n.getSnapshot.bind(n),e.restore=n.restore.bind(n),e.observe=n.observe.bind(n);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let i of t)i in e||(e[i]=n[i].bind(n));}function fe(e){chunk4MNQDXH7_cjs.a&&(typeof process>"u"||process.env?.NODE_ENV!=="test")&&setTimeout(()=>{!e.isRunning&&!e.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 $e(e){let n=e.module;if(!n)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof n}`);if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(e.initialFacts&&!chunk4MNQDXH7_cjs.f(e.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");chunk4MNQDXH7_cjs.a&&(n.crossModuleDeps&&Object.keys(n.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),e.tickMs&&e.tickMs>0&&(n.events&&"tick"in n.events||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but module has no "tick" event handler.`)),(typeof e.history=="object"?e.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:i,errorBoundary:r}=de(e),u=null,s=null;s=chunkAG2FPVZN_cjs.A({modules:[{id:n.id,schema:n.schema.facts,requirements:n.schema.requirements,init:n.init,derive:n.derive,events:n.events,effects:n.effects,sources:n.sources,constraints:n.constraints,resolvers:n.resolvers,hooks:n.hooks,meta:n.meta,history:n.history}],plugins:e.plugins,history:t,trace:i,errorBoundary:r,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{if(e.initialFacts)for(let[d,h]of Object.entries(e.initialFacts))chunkJGPPJV5P_cjs.k.has(d)||(s.facts[d]=h);if(u){if(!chunk4MNQDXH7_cjs.f(u))chunk4MNQDXH7_cjs.a&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,h]of Object.entries(u))chunkJGPPJV5P_cjs.k.has(d)||(s.facts[d]=h);u=null;}}});let c=new Proxy({},{get(d,h){if(typeof h!="symbol"&&!chunkJGPPJV5P_cjs.k.has(h))return k=>{s.dispatch({type:h,...k});}},has(d,h){return typeof h=="symbol"||chunkJGPPJV5P_cjs.k.has(h)?false:n.events?h in n.events:false},ownKeys(){return n.events?Object.keys(n.events):[]},getOwnPropertyDescriptor(d,h){if(typeof h!="symbol"&&!chunkJGPPJV5P_cjs.k.has(h)&&n.events&&h in n.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),o=null,f=e.tickMs,l={_mode:"single",facts:s.facts,history:s.history,derive:s.derive,events:c,constraints:s.constraints,effects:s.effects,resolvers:s.resolvers,async hydrate(d){if(s.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let h=await d();h&&typeof h=="object"&&(u=h);},initialize(){s.initialize();},start(){s.start(),f&&f>0&&n.events&&"tick"in n.events&&(o=setInterval(()=>{s.dispatch({type:"tick"});},f));},stop(){o&&(clearInterval(o),o=null),s.stop();},async stopAsync(){o&&(clearInterval(o),o=null),await s.stopAsync();},destroy(){this.stop(),s.destroy();},async destroyAsync(){await this.stopAsync(),await s.destroyAsync();},async evict(d){o&&(clearInterval(o),o=null),await s.evict(d);},registerModule(d){s.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,sources:d.sources,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return le(l,s),fe(l),l}exports.a=ze;//# sourceMappingURL=chunk-7ALP4OLB.cjs.map | ||
| //# sourceMappingURL=chunk-7ALP4OLB.cjs.map |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| import {A as A$1,a as a$1}from'./chunk-Y3A5ABR4.js';import {k as k$1,h,q,s,v}from'./chunk-O4GQEV4G.js';import {k,l,m as m$1}from'./chunk-3ETCZLAY.js';import {a,f,b as b$1}from'./chunk-PXRV64PA.js';var m="::",he=Symbol.for("nodejs.util.inspect.custom");function we(e){if(!e.ownKeys)return {};let n={};for(let t of e.ownKeys())n[t]=e.get(t);return n}function $(e){return new Proxy({},{get(n,t){if(typeof t=="symbol")return t===he?()=>we(e):void 0;if(!k.has(t))return e.get(t)},set(n,t,i){return typeof t=="symbol"||k.has(t)?false:e.set?e.set(t,i):false},has(n,t){return typeof t=="symbol"||k.has(t)?false:e.has?e.has(t):false},deleteProperty(n,t){return typeof t=="symbol"||k.has(t)?false:e.delete?e.delete(t):false},ownKeys(){return e.ownKeys?e.ownKeys():[]},getOwnPropertyDescriptor(n,t){if(typeof t!="symbol"&&e.has&&typeof t=="string"&&e.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var Z=new WeakMap,Q=new WeakMap,X=new WeakMap,ee=new WeakMap,ne=new WeakMap,te=new WeakMap;function P(e,n){let t=Z.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,Z.set(e,t);let i=$({get:r=>r==="$store"||r==="$snapshot"?e[r]:e[`${n}${m}${r}`],set:(r,u)=>{if(a){let s=l(u);s&&m$1(`${n}.${r}`,s);}return e[`${n}${m}${r}`]=u,true},has:r=>`${n}${m}${r}`in e,delete:r=>(delete e[`${n}${m}${r}`],true)});return t.set(n,i),i}function re(e,n,t){let i=Q.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return P(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return Q.set(e,r),r}function oe(e,n,t){let i=`${n}|${t.join(",")}`,r=ne.get(e);if(r){let o=r.get(i);if(o)return o}else r=new Map,ne.set(e,r);let u=new Set(t),s=["self",...t],c=$({get:o=>{if(o==="self")return P(e,n);if(u.has(o))return P(e,o);a&&console.warn(`[Directive] Module "${n}" accessed undeclared cross-module property "${o}". Add it to crossModuleDeps or use "facts.self.${o}" for own module facts.`);},has:o=>o==="self"||u.has(o),ownKeys:()=>s});return r.set(i,c),c}function K(e,n){let t=ee.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,ee.set(e,t);let i=$({get:r=>e[`${n}${m}${r}`],has:r=>`${n}${m}${r}`in e});return t.set(n,i),i}function se(e,n,t){let i=X.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return K(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return X.set(e,r),r}function ie(e,n,t){let i=te.get(e);return i||(i=new Map,te.set(e,i)),$({get:r=>{if(!Object.hasOwn(n,r))return;let u=i.get(r);if(u)return u;let s=$({get:c=>o=>{e.dispatch({type:`${r}${m}${c}`,...o});}});return i.set(r,s),s},has:r=>Object.hasOwn(n,r),ownKeys:()=>t()})}function S(e){if(e.includes(".")){let[n,...t]=e.split(".");return `${n}${m}${t.join(m)}`}return e}function B(e){let n={};for(let[t,i]of Object.entries(e)){let r=t.indexOf(m);if(r>0){let u=t.slice(0,r),s=t.slice(r+m.length);n[u]||(n[u]={}),n[u][s]=i;}else n._root||(n._root={}),n._root[t]=i;}return n}function A(e,n,t,i){return t?oe(e,n,i):P(e,n)}function b(e,n){return `${e}${m}${n}`}function ae(e){return e.includes(m)}function E(e,n,t){if(Array.isArray(e)){let s=e.map(c=>{if(c&&typeof c=="object"&&typeof c.fact=="string"){let o=c.fact;return ae(o)?c:{...c,fact:b(n,o)}}return c});return b$1(s),s}if(!e||typeof e!="object")return e;let i=e;if("$all"in i||"$any"in i){let s="$all"in i?"$all":"$any",c=i[s],o={[s]:c.map(f=>E(f,n,t))};return b$1(o),o}if("$not"in i){let s={$not:E(i.$not,n,t)};return b$1(s),s}function r(s,c){return E(s,c,ce)}let u={};for(let s of Object.keys(i)){if(s.startsWith("$")||ae(s)){u[s]=i[s];continue}if(s==="self"){let c=i[s];if(c&&typeof c=="object"){let o=r(c,n);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}if(t.has(s)){let c=i[s];if(c&&typeof c=="object"){let o=r(c,s);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}u[b(n,s)]=i[s];}return b$1(u),u}var ce=new Set;function me(e,n){let t=e.crossModuleDeps?new Set(Object.keys(e.crossModuleDeps)):ce,i=e.constraints;if(i){let c=false,o={};for(let[f,l]of Object.entries(i)){let d=l;if(d.when!==void 0&&typeof d.when!="function"){o[f]={...d,when:E(d.when,n,t)},c=true;continue}o[f]=l;}c&&(i=o);}let r=e.derive;if(r){let c=false,o={};for(let[f,l]of Object.entries(r)){let d=l&&typeof l=="object"&&Object.hasOwn(l,"compute")?l:null;if(!d){o[f]=l;continue}let h$1=d.compute;if(typeof h$1=="function"){o[f]=l;continue}if(k$1(h$1)){b$1(h$1);let k=g=>s(h$1,g);o[f]=d.meta?{compute:k,meta:d.meta}:k,c=true;continue}if(h(h$1)){b$1(h$1);let k=q(h$1),g=j=>k(j);o[f]=d.meta?{compute:g,meta:d.meta}:g,c=true;continue}o[f]=l;}c&&(r=o);}let u=e.events;if(u){let c=false,o={};for(let[f,l]of Object.entries(u)){if(l&&typeof l=="object"){let d=Object.hasOwn(l,"handler"),h=Object.hasOwn(l,"patch");if(d&&h&&a&&console.warn(`[Directive] event "${f}": both \`handler\` and \`patch\` provided \u2014 using \`handler\` (patch is ignored).`),h&&!d){let k=l;b$1(k.patch);let g=(j,x)=>v(k.patch,j,x??{});o[f]=k.meta?{handler:g,meta:k.meta}:g,c=true;continue}}o[f]=l;}c&&(u=o);}let s$1=e.effects;if(s$1){let c=false,o={};for(let[f,l]of Object.entries(s$1)){let d=l;if(d.on!==void 0&&h(d.on)){o[f]={...d,on:E(d.on,n,t)},c=true;continue}o[f]=l;}c&&(s$1=o);}return i===e.constraints&&r===e.derive&&u===e.events&&s$1===e.effects?e:{...e,constraints:i,derive:r,events:u,effects:s$1}}function C(e){return Object.keys(e).length>0?e:void 0}function ke(e,n){let t={};for(let[i,r]of Object.entries(e.schema.facts))t[b(n,i)]=r;return t}function pe(e,n){if(e.init)return t=>{let i=P(t,n);e.init(i);}}function ve(e,n,t,i){if(!e.derive)return;let r={};for(let[u,s]of Object.entries(e.derive)){let c=a$1(s),o=c?s.compute:s,f=c?s.meta:void 0,l=(d,h)=>{let k=A(d,n,t,i),g=K(h,n);return o(k,g)};r[b(n,u)]=f?{compute:l,meta:f}:l;}return C(r)}function be(e,n){if(!e.events)return;let t={};for(let[i,r]of Object.entries(e.events)){let u=typeof r=="object"&&r!==null&&Object.hasOwn(r,"handler"),s=u?r.handler:r,c=u?r.meta:void 0,o=(f,l)=>{let d=P(f,n);s(d,l);};t[b(n,i)]=c?{handler:o,meta:c}:o;}return C(t)}function Me(e,n,t,i){if(!e.constraints)return;let r={};for(let[u,s]of Object.entries(e.constraints)){let c=s,o=typeof c.when=="function";r[b(n,u)]={...c,deps:c.deps?.map(f=>b(n,f)),after:c.after?.map(f=>f.includes(m)?f:b(n,f)),owns:c.owns?.map(f=>f.includes(m)?f:b(n,f)),when:o?f=>{let l=A(f,n,t,i);return c.when(l)}:c.when,require:typeof c.require=="function"?f=>{let l=A(f,n,t,i);return c.require(l)}:c.require};}return C(r)}function Re(e,n,t,i){if(!e.resolvers)return;let r={};for(let[s,c]of Object.entries(e.resolvers)){let f=function(l){return {facts:A(l.facts,n,t,i),signal:l.signal}};let o=c;r[b(n,s)]={...o,...o.resolve&&{resolve:async(l,d)=>{await o.resolve(l,f(d));}},...o.resolveBatch&&{resolveBatch:async(l,d)=>{await o.resolveBatch(l,f(d));}},...o.resolveBatchWithResults&&{resolveBatchWithResults:async(l,d)=>o.resolveBatchWithResults(l,f(d))}};}return C(r)}function Se(e,n,t,i){if(!e.effects)return;let r={};for(let[u,s]of Object.entries(e.effects)){let c=s;r[b(n,u)]={...c,run:(o,f)=>{let l=A(o,n,t,i),d=f?A(f,n,t,i):void 0;return c.run(l,d)},deps:c.deps?.map(o=>b(n,o))};}return C(r)}function Oe(e,n,t){return {snapshotEvents:t&&!t.has(n)?[]:e.history?.snapshotEvents?.map(i=>b(n,i))}}function H(e){let{mod:n,namespace:t,snapshotModulesSet:i}=e,r=me(n,t),u=!!(r.crossModuleDeps&&Object.keys(r.crossModuleDeps).length>0),s=u?Object.keys(r.crossModuleDeps):[];return {id:r.id,schema:ke(r,t),requirements:r.schema.requirements??{},init:pe(r,t),derive:ve(r,t,u,s),events:be(r,t),effects:Se(r,t,u,s),sources:r.sources,constraints:Me(r,t,u,s),resolvers:Re(r,t,u,s),hooks:r.hooks,meta:r.meta,history:Oe(r,t,i)}}function xe(e){let n=Object.keys(e),t=new Set(n),i=new Set,r=new Set,u=[],s=[];function c(o){if(i.has(o))return;if(r.has(o)){let l=s.indexOf(o),d=[...s.slice(l),o].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(o),s.push(o);let f=e[o];if(f?.crossModuleDeps)for(let l of Object.keys(f.crossModuleDeps))t.has(l)&&c(l);s.pop(),r.delete(o),i.add(o),u.push(o);}for(let o of n)c(o);return u}function ue(e,n){let t=[];for(let i of Object.keys(n.schema.facts))t.push(`${e}${m}${i}`);if(n.schema.derivations)for(let i of Object.keys(n.schema.derivations))t.push(`${e}${m}${i}`);return t}function ze(e){if("module"in e){if(!e.module)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof e.module}`);return $e(e)}let n=e;if(Array.isArray(n.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array. | ||
| Instead of: | ||
| createSystem({ modules: [authModule, dataModule] }) | ||
| Use: | ||
| createSystem({ modules: { auth: authModule, data: dataModule } }) | ||
| Or for a single module: | ||
| createSystem({ module: counterModule })`);let t=n.modules;if(t&&typeof t=="object"&&"id"in t&&"schema"in t)throw new Error(`[Directive] A single module was passed to \`modules:\`. For a single module, use \`module:\` instead: | ||
| createSystem({ module: myModule }) | ||
| For multiple modules, wrap in an object: | ||
| createSystem({ modules: { myName: myModule } })`);return De(n)}function De(e){let n=e.modules,t=new Set(Object.keys(n)),i=typeof e.history=="object"?e.history:null,r=i?.snapshotModules?new Set(i.snapshotModules):null;if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(a){for(let[a,y]of Object.entries(n))if(y.crossModuleDeps)for(let w of Object.keys(y.crossModuleDeps))w===a?console.warn(`[Directive] Module "${a}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(w)||console.warn(`[Directive] Module "${a}" declares crossModuleDeps.${w}, but no module with namespace "${w}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(a&&i?.snapshotModules)for(let a of i.snapshotModules)t.has(a)||console.warn(`[Directive] history.snapshotModules entry "${a}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let u,s=e.initOrder??"auto";if(Array.isArray(s)){let a=s,y=Object.keys(n).filter(w=>!a.includes(w));if(y.length>0)throw new Error(`[Directive] initOrder is missing modules: ${y.join(", ")}. All modules must be included in the explicit order.`);u=a;}else s==="declaration"?u=Object.keys(n):u=xe(n);let{history:c,trace:o,errorBoundary:f$1}=de(e);for(let a of Object.keys(n)){if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}". Module names cannot contain "${m}".`);let y=n[a];if(y){for(let w of Object.keys(y.schema.facts))if(w.includes(m))throw new Error(`[Directive] Schema key "${w}" in module "${a}" contains the reserved separator "${m}". Schema keys cannot contain "${m}".`)}}let l={names:null};function d(){return l.names===null&&(l.names=Object.keys(n)),l.names}let h=u.map(a=>{let y=n[a];return y?H({mod:y,namespace:a,snapshotModulesSet:r}):null}).filter(a=>a!==null);a&&e.tickMs&&e.tickMs>0&&(h.some(y=>y.events&&Object.keys(y.events).some(w=>w.endsWith(`${m}tick`)))||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but no module defines a "tick" event handler.`));let k$1=null,g=null;function j(a$1){for(let[y,w]of Object.entries(a$1)){if(k.has(y)){a&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${y}". Skipping.`);continue}if(!t.has(y)){a&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${y}". Available modules: ${[...t].join(", ")}`);continue}if(w&&typeof w=="object"&&!f(w))throw new Error(`[Directive] initialFacts/hydrate for namespace "${y}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[M,D]of Object.entries(w))k.has(M)||(g.facts[`${y}${m}${M}`]=D);}}g=A$1({modules:h,plugins:e.plugins,history:c,trace:o,errorBoundary:f$1,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{e.initialFacts&&j(e.initialFacts),k$1&&(j(k$1),k$1=null);}});let x=new Map;for(let a of Object.keys(n)){let y=n[a];y&&x.set(a,ue(a,y));}let q=re(g.facts,n,d),ye=se(g.derive,n,d),ge=ie(g,n,d),R=null,F=e.tickMs,_={_mode:"namespaced",facts:q,history:g.history,derive:ye,events:ge,constraints:g.constraints,effects:g.effects,resolvers:g.resolvers,async hydrate(a){if(g.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let y=await a();y&&typeof y=="object"&&(k$1=y);},initialize(){g.initialize();},start(){if(g.start(),F&&F>0){let a;for(let y of h)if(y?.events&&(a=Object.keys(y.events).find(w=>w.endsWith(`${m}tick`)),a))break;if(a){let y=a;R=setInterval(()=>{g.dispatch({type:y});},F);}}},stop(){R&&(clearInterval(R),R=null),g.stop();},async stopAsync(){R&&(clearInterval(R),R=null),await g.stopAsync();},destroy(){this.stop(),g.destroy();},async destroyAsync(){await this.stopAsync(),await g.destroyAsync();},async evict(a){R&&(clearInterval(R),R=null),await g.evict(a);},dispatch(a){g.dispatch(a);},read(a){return g.read(S(a))},subscribe(a$1,y){let w=[];for(let M of a$1)if(M.endsWith(".*")){let D=M.slice(0,-2),W=x.get(D);W?w.push(...W):a&&console.warn(`[Directive] subscribe wildcard "${M}" \u2014 namespace "${D}" not found.`);}else w.push(S(M));return g.subscribe(w,y)},subscribeModule(a$1,y){let w=x.get(a$1);return !w||w.length===0?(a&&console.warn(`[Directive] subscribeModule("${a$1}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):g.subscribe(w,y)},watch(a,y,w){return g.watch(S(a),y,w)},when(a,y){return g.when(()=>a(q),y)},getDistributableSnapshot(a){let y={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)},w=g.getDistributableSnapshot(y);return {...w,data:B(w.data)}},watchDistributableSnapshot(a,y){let w={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)};return g.watchDistributableSnapshot(w,M=>{y({...M,data:B(M.data)});})},registerModule(a,y){if(t.has(a))throw new Error(`[Directive] Module namespace "${a}" already exists. Cannot register a duplicate namespace.`);if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}".`);if(k.has(a))throw new Error(`[Directive] Module name "${a}" is a blocked property.`);for(let D of Object.keys(y.schema.facts))if(D.includes(m))throw new Error(`[Directive] Schema key "${D}" in module "${a}" contains the reserved separator "${m}".`);let w=y,M=H({mod:w,namespace:a,snapshotModulesSet:r});t.add(a),n[a]=w,l.names=null,x.set(a,ue(a,w)),g.registerModule(M);}};return le(_,g),fe(_),_}function de(e){let n=e.history,t=e.trace,i=e.errorBoundary;return e.zeroConfig&&(n=n??a,i={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...e.errorBoundary}),{history:n,trace:t,errorBoundary:i}}function le(e,n){Object.defineProperties(e,{trace:{get(){return n.trace},enumerable:true,configurable:true},meta:{value:n.meta,enumerable:true,configurable:true},isRunning:{get(){return n.isRunning},enumerable:true,configurable:true},isSettled:{get(){return n.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return n.isInitialized},enumerable:true,configurable:true},isReady:{get(){return n.isReady},enumerable:true,configurable:true}}),e.whenReady=n.whenReady.bind(n),e.batch=n.batch.bind(n),e.onSettledChange=n.onSettledChange.bind(n),e.onHistoryChange=n.onHistoryChange.bind(n),e.inspect=n.inspect.bind(n),e.settle=n.settle.bind(n),e.explain=n.explain.bind(n),e.getSnapshot=n.getSnapshot.bind(n),e.restore=n.restore.bind(n),e.observe=n.observe.bind(n);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let i of t)i in e||(e[i]=n[i].bind(n));}function fe(e){a&&(typeof process>"u"||process.env?.NODE_ENV!=="test")&&setTimeout(()=>{!e.isRunning&&!e.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 $e(e){let n=e.module;if(!n)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof n}`);if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(e.initialFacts&&!f(e.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");a&&(n.crossModuleDeps&&Object.keys(n.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),e.tickMs&&e.tickMs>0&&(n.events&&"tick"in n.events||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but module has no "tick" event handler.`)),(typeof e.history=="object"?e.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:i,errorBoundary:r}=de(e),u=null,s=null;s=A$1({modules:[{id:n.id,schema:n.schema.facts,requirements:n.schema.requirements,init:n.init,derive:n.derive,events:n.events,effects:n.effects,sources:n.sources,constraints:n.constraints,resolvers:n.resolvers,hooks:n.hooks,meta:n.meta,history:n.history}],plugins:e.plugins,history:t,trace:i,errorBoundary:r,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{if(e.initialFacts)for(let[d,h]of Object.entries(e.initialFacts))k.has(d)||(s.facts[d]=h);if(u){if(!f(u))a&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,h]of Object.entries(u))k.has(d)||(s.facts[d]=h);u=null;}}});let c=new Proxy({},{get(d,h){if(typeof h!="symbol"&&!k.has(h))return k=>{s.dispatch({type:h,...k});}},has(d,h){return typeof h=="symbol"||k.has(h)?false:n.events?h in n.events:false},ownKeys(){return n.events?Object.keys(n.events):[]},getOwnPropertyDescriptor(d,h){if(typeof h!="symbol"&&!k.has(h)&&n.events&&h in n.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),o=null,f$1=e.tickMs,l={_mode:"single",facts:s.facts,history:s.history,derive:s.derive,events:c,constraints:s.constraints,effects:s.effects,resolvers:s.resolvers,async hydrate(d){if(s.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let h=await d();h&&typeof h=="object"&&(u=h);},initialize(){s.initialize();},start(){s.start(),f$1&&f$1>0&&n.events&&"tick"in n.events&&(o=setInterval(()=>{s.dispatch({type:"tick"});},f$1));},stop(){o&&(clearInterval(o),o=null),s.stop();},async stopAsync(){o&&(clearInterval(o),o=null),await s.stopAsync();},destroy(){this.stop(),s.destroy();},async destroyAsync(){await this.stopAsync(),await s.destroyAsync();},async evict(d){o&&(clearInterval(o),o=null),await s.evict(d);},registerModule(d){s.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,sources:d.sources,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return le(l,s),fe(l),l}export{ze as a};//# sourceMappingURL=chunk-NKECJWNH.js.map | ||
| //# sourceMappingURL=chunk-NKECJWNH.js.map |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| 'use strict';var chunk7ALP4OLB_cjs=require('./chunk-7ALP4OLB.cjs');require('./chunk-AG2FPVZN.cjs'),require('./chunk-RWFKUNF7.cjs'),require('./chunk-JGPPJV5P.cjs'),require('./chunk-4MNQDXH7.cjs');Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunk7ALP4OLB_cjs.a}});//# sourceMappingURL=system-ADZRD4N2.cjs.map | ||
| //# sourceMappingURL=system-ADZRD4N2.cjs.map |
| {"version":3,"sources":[],"names":[],"mappings":"","file":"system-ADZRD4N2.cjs"} |
| export{a as createSystem}from'./chunk-NKECJWNH.js';import'./chunk-Y3A5ABR4.js';import'./chunk-O4GQEV4G.js';import'./chunk-3ETCZLAY.js';import'./chunk-PXRV64PA.js';//# sourceMappingURL=system-XJ5J2J5K.js.map | ||
| //# sourceMappingURL=system-XJ5J2J5K.js.map |
| {"version":3,"sources":[],"names":[],"mappings":"","file":"system-XJ5J2J5K.js"} |
+2
-2
@@ -1,5 +0,5 @@ | ||
| 'use strict';var chunk4QCKAJCX_cjs=require('./chunk-4QCKAJCX.cjs'),chunkOSXI7JFB_cjs=require('./chunk-OSXI7JFB.cjs'),chunkLC5SSD5D_cjs=require('./chunk-LC5SSD5D.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');var A=1e6;function Me(e,t){try{chunkRWFKUNF7_cjs.l(e);}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`[Directive] replayUnder: the ${t} predicate is invalid \u2014 ${i}`)}if(!chunkRWFKUNF7_cjs.h(e)){let r=e===null||typeof e!="object"?`${typeof e} \u2014 ${JSON.stringify(e)}`:JSON.stringify(e).slice(0,80);throw new Error(`[Directive] replayUnder: the ${t} predicate is not a valid FactPredicate (got ${r})`)}let n;if(chunkRWFKUNF7_cjs.i(e,{operator(r,i){n===void 0&&i.startsWith("$")&&!chunkRWFKUNF7_cjs.a.has(i)&&(n=i);},strayOperatorKey(r){n===void 0&&!chunkRWFKUNF7_cjs.a.has(r)&&!chunkRWFKUNF7_cjs.b.has(r)&&(n=r);}}),n!==void 0)throw new Error(`[Directive] replayUnder: the ${t} predicate uses an unknown operator "${n}" \u2014 known operators: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}function Re(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.snapshots))return Ce(e);let t=Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.frames)?e.frames:null;if(!t)throw new Error("[Directive] toReplayFrames: history must be a JSON array of frames, an object with a `frames` array, or a history export with a `snapshots` array");if(t.length>A)throw new Error(`[Directive] toReplayFrames: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);return t.map((n,r)=>{if(n&&typeof n=="object"&&"facts"in n){let i=n,s={id:i.id??`#${r}`,facts:i.facts??{}};return typeof i.timestamp=="number"&&(s.timestamp=i.timestamp),s}return {id:`#${r}`,facts:n??{}}})}function Ce(e){let t=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(t))return se(t);if(!t||typeof t!="object")throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");let n=t;if(n.version!==void 0&&n.version!==1)throw new Error(`[Directive] framesFromHistory: unsupported history export version ${JSON.stringify(n.version)} \u2014 expected 1`);if(!Array.isArray(n.snapshots))throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");return se(n.snapshots)}function se(e){if(!Array.isArray(e))throw new Error("[Directive] framesFromSnapshots: expected an array of fact-state snapshots");if(e.length>A)throw new Error(`[Directive] framesFromSnapshots: history has ${e.length} snapshots, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);for(let t=0;t<e.length;t++){let n=e[t];if(!n||typeof n!="object"||!("facts"in n))throw new Error(`[Directive] framesFromSnapshots: snapshot at index ${t} is not a { facts, ... } object`)}return Re(e)}function H(e){let{frames:t,original:n,proposed:r,entityKey:i}=e,s=e.maxSamples??20,o=s>0?s:0;if(t.length>A)throw new Error(`[Directive] replayUnder: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);Me(n,"original"),Me(r,"proposed");let u=0,a=0,c=0,l=0,d=0,g=[],y=[],$=i?new Set:void 0,m=i?new Set:void 0,M;for(let F of t){let T=F.facts,v=chunkRWFKUNF7_cjs.o(n,T,M),R=chunkRWFKUNF7_cjs.o(r,T,M);v&&(u++,$?.add(T[i])),R&&(a++,m?.add(T[i])),v===R?d++:!v&&R?(c++,g.length<o&&g.push(De(F,n,r,M))):(l++,y.length<o&&y.push(De(F,n,r,M))),M=T;}let E={framesEvaluated:t.length,original:{matched:u},proposed:{matched:a},delta:a-u,newMatchCount:c,lostMatchCount:l,unchanged:d,newMatches:g,lostMatches:y};return $&&m&&(E.original.matchedEntities=$.size,E.proposed.matchedEntities=m.size),E}function De(e,t,n,r){let i=e.facts,s={frameId:e.id,facts:i,originalExplain:chunkRWFKUNF7_cjs.p(t,i,r),proposedExplain:chunkRWFKUNF7_cjs.p(n,i,r)};return e.timestamp!==void 0&&(s.timestamp=e.timestamp),s}var ae=1e4,Ae=5e7;function It(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===1&&typeof e.$hole=="string"}function ue(e,t,n=new Set,r=0){if(r>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] sweepUnder: template exceeds MAX_PREDICATE_DEPTH (${chunkRWFKUNF7_cjs.g}) \u2014 flatten the template or split the sweep`);if(It(e)){let i=e.$hole;if(!(i in t))throw new Error(`[Directive] sweepUnder: template references hole "${i}" but sweep has no values for it`);return t[i]}if(e===null||typeof e!="object")return e;if(n.has(e))throw new Error("[Directive] sweepUnder: template contains a cycle \u2014 predicate templates must be a tree");n.add(e);try{if(Array.isArray(e))return e.map(s=>ue(s,t,n,r+1));let i={};for(let[s,o]of Object.entries(e))i[s]=ue(o,t,n,r+1);return i}finally{n.delete(e);}}function*Ee(e,t){if(e.length===0){yield {};return}let n=e[0],r=e.slice(1),i=t[n]??[];for(let s of i)for(let o of Ee(r,t))yield {[n]:s,...o};}function Lt(e){let t=1;for(let n of Object.values(e))t*=n.length;return t}function qt(e){let{frames:t,original:n,template:r,sweep:i,objective:s=T=>T.proposed.matched,entityKey:o,maxSamples:u=0}=e,a=Object.keys(i);if(a.length===0)throw new Error("[Directive] sweepUnder: `sweep` must contain at least one hole name");let c=Lt(i);if(c>ae)throw new Error(`[Directive] sweepUnder: grid has ${c} points, exceeds the MAX_SWEEP_POINTS limit (${ae}) \u2014 narrow the sweep ranges or split the run`);if(c===0)throw new Error("[Directive] sweepUnder: at least one hole has zero candidate values");let l=c*t.length;if(l>Ae)throw new Error(`[Directive] sweepUnder: ${c} points \xD7 ${t.length} frames = ${l} per-frame evaluations, exceeds the MAX_SWEEP_EVALUATIONS limit (${Ae}) \u2014 narrow the sweep, down-sample the history, or split the run`);let d=false,g=T=>{let v;try{v=s(T);}catch(R){return d||(d=true,console.warn(`[Directive] sweepUnder: objective threw \u2014 point will not rank (${R.message})`)),Number.NEGATIVE_INFINITY}return typeof v!="number"||!Number.isFinite(v)?(d||(d=true,console.warn(`[Directive] sweepUnder: objective returned a non-finite number (${String(v)}) \u2014 point will not rank`)),Number.NEGATIVE_INFINITY):v},y=H({frames:t,original:n,proposed:n,entityKey:o,maxSamples:u}),$={values:{},report:y,score:g(y)},m=[],M=0,E=Number.NEGATIVE_INFINITY;for(let T of Ee(a,i)){let v=ue(r,T),R=H({frames:t,original:n,proposed:v,entityKey:o,maxSamples:u}),te=g(R);te>E&&(E=te,M=m.length),m.push({values:T,report:R,score:te});}let F=m[M];return {points:m,bestIndex:M,best:F,baseline:$}}function ce(e){let t=e&&typeof e=="object"&&!Array.isArray(e)&&"constraints"in e?e.constraints:e;if(Array.isArray(t)){let n={};for(let r of t){if(!r||typeof r!="object"||!("id"in r))throw new Error("[Directive] diffRules: array entries must be `{ id, whenSpec }` objects");let i=r;if(typeof i.id!="string")throw new Error("[Directive] diffRules: constraint `id` must be a string");n[i.id]=i.whenSpec;}return n}if(t&&typeof t=="object")return t;throw new Error("[Directive] diffRules: expected a `{ id: whenSpec }` map, an array of `{ id, whenSpec }`, or `{ constraints: ... }`")}var Wt=new Set(["$eq","$ne","$in","$nin","$exists","$gt","$gte","$lt","$lte","$between","$matches","$startsWith","$endsWith","$contains","$changed"]),Bt=new Set(["$all","$any","$not"]);function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ut(e){if(!xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;let n=false;for(let r of t){if(!r.startsWith("$"))return false;Wt.has(r)&&(n=true);}return n}function S(e,t="",n=[]){if(e===null||typeof e!="object")return n;if(Array.isArray(e)){for(let r of e)if(r&&typeof r=="object"&&"fact"in r&&"op"in r){let i=r;n.push({path:t?`${t}.${String(i.fact)}`:String(i.fact),op:String(i.op),value:i.value});}return n}if("$all"in e&&Array.isArray(e.$all))return e.$all.forEach((i,s)=>{S(i,`${t}$all[${s}]`,n);}),n;if("$any"in e&&Array.isArray(e.$any))return e.$any.forEach((i,s)=>{S(i,`${t}$any[${s}]`,n);}),n;if("$not"in e)return S(e.$not,`${t}$not`,n),n;for(let[r,i]of Object.entries(e)){let s=t?`${t}.${r}`:r;if(Ut(i))for(let[o,u]of Object.entries(i))n.push({path:s,op:o,value:u});else xe(i)&&!Bt.has(r)?S(i,s,n):n.push({path:s,op:"$eq",value:i});}return n}function C(e){return typeof e=="number"&&Number.isFinite(e)}function Kt(e,t,n){switch(e){case "$gte":case "$gt":if(C(t)&&C(n)){if(n<t)return "relaxed";if(n>t)return "tightened"}return null;case "$lte":case "$lt":if(C(t)&&C(n)){if(n>t)return "relaxed";if(n<t)return "tightened"}return null;case "$between":{if(Array.isArray(t)&&Array.isArray(n)&&t.length===2&&n.length===2&&C(t[0])&&C(t[1])&&C(n[0])&&C(n[1])){let r=t[1]-t[0],i=n[1]-n[0];if(i>r)return "relaxed";if(i<r)return "tightened"}return null}case "$in":case "$nin":{if(Array.isArray(t)&&Array.isArray(n))if(e==="$in"){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}else {if(n.length>t.length)return "tightened";if(n.length<t.length)return "relaxed"}return null}case "$contains":{if(Array.isArray(t)&&Array.isArray(n)){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}return null}default:return null}}function zt(e){let t=ce(e.before),n=ce(e.after),i=[...new Set([...Object.keys(t),...Object.keys(n)])].sort(),s=[],o={added:0,removed:0,changed:0,unchanged:0,totalClauseChanges:0};for(let u of i){let a=t[u],c=n[u],l=u in t,d=u in n;if(l&&!d){let y=S(a),$=y.length===0?[{path:"(function-form predicate)",kind:"removed"}]:y.map(m=>({path:m.path,kind:"removed",before:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"removed",changes:$}),o.removed++,o.totalClauseChanges+=$.length;continue}if(!l&&d){let y=S(c),$=y.length===0?[{path:"(function-form predicate)",kind:"added"}]:y.map(m=>({path:m.path,kind:"added",after:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"added",changes:$}),o.added++,o.totalClauseChanges+=$.length;continue}let g=Oe(a,c);g.length===0?(s.push({id:u,status:"unchanged",changes:[]}),o.unchanged++):(s.push({id:u,status:"changed",changes:g}),o.changed++,o.totalClauseChanges+=g.length);}return {constraints:s,summary:o}}function Oe(e,t){if(e!==void 0&&t!==void 0&&(e===null||t===null||typeof e!="object"||typeof t!="object"))return chunk4MNQDXH7_cjs.e(e)===chunk4MNQDXH7_cjs.e(t)?[]:[{path:"",kind:"changed",before:{op:"$eq",value:e},after:{op:"$eq",value:t}}];let n=e===void 0?[]:S(e),r=t===void 0?[]:S(t),i=c=>`${c.path}::${c.op}`,s=new Map(n.map(c=>[i(c),c])),o=new Map(r.map(c=>[i(c),c])),u=new Set([...s.keys(),...o.keys()]),a=[];for(let c of u){let l=s.get(c),d=o.get(c);if(l&&!d){a.push({path:l.path,kind:"removed",before:{op:l.op,value:l.value}});continue}if(!l&&d){a.push({path:d.path,kind:"added",after:{op:d.op,value:d.value}});continue}if(l&&d){if(chunk4MNQDXH7_cjs.e(l.value)===chunk4MNQDXH7_cjs.e(d.value))continue;let g=Kt(l.op,l.value,d.value);a.push({path:l.path,kind:g??"changed",before:{op:l.op,value:l.value},after:{op:d.op,value:d.value}});}}return le(a),a}function le(e){e.sort((t,n)=>{let r=t.path.localeCompare(n.path);if(r!==0)return r;let i=t.before?.op??t.after?.op??"",s=n.before?.op??n.after?.op??"";return i.localeCompare(s)});}function Ht(e){return chunk4MNQDXH7_cjs.h(e)}function J(e){return e===null?"null":e===void 0?"undefined":e instanceof Date?e.toISOString():typeof e=="string"||typeof e=="object"?JSON.stringify(e):String(e)}function Jt(e){let t=e.path,n=J(e.expected),r=J(e.actual);switch(e.op){case "$eq":return `set ${t} to ${n} (currently ${r})`;case "$ne":return `change ${t} to anything other than ${n} (currently ${r})`;case "$gt":return `set ${t} above ${n} (currently ${r})`;case "$gte":return `set ${t} to at least ${n} (currently ${r})`;case "$lt":return `set ${t} below ${n} (currently ${r})`;case "$lte":return `set ${t} to at most ${n} (currently ${r})`;case "$in":return `set ${t} to one of ${n} (currently ${r})`;case "$nin":return `set ${t} to something other than ${n} (currently ${r})`;case "$exists":return e.expected===true?`set ${t} to a non-null value (currently null/missing)`:`unset ${t} (currently ${r})`;case "$between":return Array.isArray(e.expected)&&e.expected.length===2?`set ${t} between ${J(e.expected[0])} and ${J(e.expected[1])} (currently ${r})`:`set ${t} within range ${n} (currently ${r})`;case "$startsWith":return `set ${t} to start with ${n} (currently ${r})`;case "$endsWith":return `set ${t} to end with ${n} (currently ${r})`;case "$contains":return `set ${t} to contain ${n} (currently ${r})`;case "$matches":return `set ${t} to match the pattern ${n} (currently ${r})`;case "$changed":return `the previous-vs-current change of ${t} is required to differ (currently they match: ${r})`;case "$all":case "$any":case "$not":return `the ${e.op} group at "${t}" did not pass \u2014 see its child clauses`;default:return `clause at ${t} (${e.op}) failed: expected ${n}, got ${r}`}}function je(e,t){for(let n of e)if(!n.pass){if((n.op==="$all"||n.op==="$any"||n.op==="$not")&&n.children){je(n.children,t);continue}t.push({path:n.path,op:n.op,expected:n.expected,actual:n.actual,suggestion:Jt(n)});}}function Qt(e,t,n){let r=chunkRWFKUNF7_cjs.p(e,t,n),i=r.every(o=>o.pass),s=[];if(i||je(r,s),!i&&n===void 0){let o=[];chunkRWFKUNF7_cjs.i(e,{operator(u,a){a==="$changed"&&o.push(u);}});for(let u of o)s.push({path:u,op:"$changed",expected:true,actual:void 0,suggestion:`$changed clause at "${u}" cannot be evaluated without a \`prev\` snapshot \u2014 pass predict(predicate, facts, prev).`});}return {wouldFire:i,whenExplain:r,missingChanges:s}}var Pe=new Set(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"]);function Q(e,t){if(e===t)return 0;if(typeof e=="number"&&typeof t=="number"||typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),r=t.getTime();return n<r?-1:n>r?1:0}return typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function _(e,t){if(e===t)return true;if(typeof e!=typeof t||e===null||t===null||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!_(e[i],t[i]))return false;return true}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let i of n)if(!_(e[i],t[i]))return false;return true}function Xt(e,t){if(!Pe.has(e.op)||!Pe.has(t.op))return {type:"overlap",reason:`Both rules touch "${e.path}".`};if(e.op==="$eq"&&t.op==="$eq")return _(e.value,t.value)?{type:"subset",reason:`Both rules require ${e.path} = ${JSON.stringify(e.value)} \u2014 candidate is redundant.`}:{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires ${e.path} = ${JSON.stringify(t.value)} \u2014 they cannot both fire.`};if(e.op==="$eq"&&t.op==="$ne")return _(e.value,t.value)?{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule excludes that value.`}:null;if(e.op==="$ne"&&t.op==="$eq")return _(e.value,t.value)?{type:"direct",reason:`Candidate excludes ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires that exact value.`}:null;if(e.op==="$in"&&t.op==="$in"){let o=new Set(Array.isArray(e.value)?e.value:[]),u=new Set(Array.isArray(t.value)?t.value:[]),a=[...o].filter(c=>u.has(c));return a.length===0?{type:"direct",reason:`Candidate $in set for ${e.path} (${JSON.stringify([...o])}) and existing $in set (${JSON.stringify([...u])}) have no values in common \u2014 the candidate can never fire while the existing rule holds.`}:a.length===o.size&&a.length<u.size?{type:"subset",reason:`Candidate $in set for ${e.path} is a strict subset of the existing rule's $in set.`}:null}let n=e.op==="$gt"||e.op==="$gte"?e.value:void 0,r=e.op==="$lt"||e.op==="$lte"?e.value:void 0,i=t.op==="$gt"||t.op==="$gte"?t.value:void 0,s=t.op==="$lt"||t.op==="$lte"?t.value:void 0;if(n!==void 0&&s!==void 0){let o=Q(n,s);if(!Number.isNaN(o)&&(o>0||o===0&&(e.op==="$gt"||t.op==="$lt")))return {type:"direct",reason:`Candidate requires ${e.path} ${e.op==="$gt"?">":"\u2265"} ${JSON.stringify(n)} but an existing rule caps it at ${t.op==="$lt"?"<":"\u2264"} ${JSON.stringify(s)}.`}}if(i!==void 0&&r!==void 0){let o=Q(i,r);if(!Number.isNaN(o)&&(o>0||o===0&&(t.op==="$gt"||e.op==="$lt")))return {type:"direct",reason:`Candidate caps ${e.path} at ${e.op==="$lt"?"<":"\u2264"} ${JSON.stringify(r)} but an existing rule requires it ${t.op==="$gt"?">":"\u2265"} ${JSON.stringify(i)}.`}}if(n!==void 0&&i!==void 0){let o=Q(n,i);if(!Number.isNaN(o)&&o>0)return {type:"subset",reason:`Candidate's lower bound on ${e.path} (${JSON.stringify(n)}) is stricter than the existing rule's lower bound (${JSON.stringify(i)}) \u2014 candidate is a subset.`}}if(r!==void 0&&s!==void 0){let o=Q(r,s);if(!Number.isNaN(o)&&o<0)return {type:"subset",reason:`Candidate's upper bound on ${e.path} (${JSON.stringify(r)}) is stricter than the existing rule's upper bound (${JSON.stringify(s)}) \u2014 candidate is a subset.`}}return {type:"overlap",reason:`Both rules constrain "${e.path}".`}}function Fe(e){return typeof e=="object"&&e!==null&&typeof e.id=="string"}var Zt={checkAgainst(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {contradictions:[],warnings:[]};let i=new Map;for(let u of r){let a=i.get(u.path)??[];a.push(u),i.set(u.path,a);}let s=[],o=[];for(let u of n){if(!Fe(u)||u.whenSpec===void 0)continue;let a=S(u.whenSpec);for(let c of a){let l=i.get(c.path);if(l)for(let d of l){let g=Xt(d,c);if(!g)continue;let y={constraintId:u.id,type:g.type,reason:g.reason,candidatePath:d.path,candidate:{op:d.op,value:d.value},existing:{op:c.op,value:c.value}};g.type==="overlap"||g.type==="subset"?o.push(y):s.push(y);}}}return {contradictions:s,warnings:o}},checkOwns(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {warnings:[]};let i=new Set(r.map(o=>o.path)),s=[];for(let o of n){if(!Fe(o))continue;let u=Array.isArray(o.owns)?o.owns:[],a=Array.isArray(o.bind)?o.bind:[];for(let c of u)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"owns",reason:`Constraint "${o.id}" already owns "${c}" \u2014 candidate would race or shadow its writes.`,severity:"warning"});for(let c of a)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"bind",reason:`Constraint "${o.id}" binds "${c}" \u2014 candidate would write to a bound field.`,severity:"warning"});}return {warnings:s}}};var I=new Map,Yt=50;function Gt(e){let t=I.get(e);if(!t){try{t=new Intl.NumberFormat(e);}catch{t=new Intl.NumberFormat("en-US");}if(I.size>=Yt){let n=I.keys().next().value;n!==void 0&&I.delete(n);}I.set(e,t);}return t}function Vt(e,t={}){let n=t.style??"natural",r=t.parenthesize??true,i=t.locale??"en-US",s=t.factName??(a=>a);if(e===null||typeof e!="object")return "<invalid predicate>";let o={style:n,parenthesize:r,locale:i,factName:s,seen:new WeakSet,cycle:false},u=X(e,o,0);return o.cycle?"<invalid predicate: cycle>":u}var Ie=" AND ",en=" OR ",tn="NOT",Le=" \u2227 ",nn=" \u2228 ",rn="\xAC";function q(e){return typeof e!="object"||e===null||Array.isArray(e)?false:!(e instanceof Date)&&!(e instanceof RegExp)}function on(e){if(!q(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function X(e,t,n){if(n>chunkRWFKUNF7_cjs.g)return chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] describePredicate: depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 bailing.`),t.style==="formal"?"\u22A5":"always true";if(Array.isArray(e))return sn(e,t);if(!q(e))return f(e,t);if(t.seen.has(e))return t.cycle=true,"<invalid predicate: cycle>";t.seen.add(e);let r=e,i=Object.keys(r);for(let o of ["$all","$any","$not"])if(o in r)return an(o,r[o],t,n);let s=[];for(let o of i)o.startsWith("$")||s.push(qe(o,r[o],t,n));return Z(s,t)}function sn(e,t,n){let r=[];for(let i of e){if(!q(i))continue;let s=i;typeof s.fact!="string"||typeof s.op!="string"||r.push(L(s.fact,s.op,s.value,t));}return r.length===0?t.style==="formal"?"\u22A4":"always true":Z(r,t)}function an(e,t,n,r){if(e==="$not"){if(q(t)&&Object.keys(t).length===0)return n.style==="formal"?"\u22A5":"never";let o=X(t,n,r+1);return o==="always true"?"never":o==="\u22A4"?"\u22A5":`${n.style==="formal"?rn:`${tn} `}(${o})`}if(!Array.isArray(t))return n.style==="formal"?"\u22A5":"<invalid predicate>";if(t.length===0)return e==="$all"?n.style==="formal"?"\u22A4":"always true":n.style==="formal"?"\u22A5":"never";let i=[];for(let o of t){let u=X(o,n,r+1);i.push(u);}if(i.length===1)return i[0];let s=n.parenthesize?i.map(o=>`(${o})`):i;return e==="$all"?s.join(n.style==="formal"?Le:Ie):s.join(n.style==="formal"?nn:en)}function qe(e,t,n,r){if(on(t)){let i=t,s=Object.keys(i);if(s.length===1)return L(e,s[0],i[s[0]],n);let o=s.map(u=>L(e,u,i[u],n));return Z(o,n)}if(q(t)){let i=t;if("$all"in i||"$any"in i||"$not"in i)return X(t,n,r+1);let o=[];for(let u of Object.keys(i))u.startsWith("$")||o.push(qe(`${e}.${u}`,i[u],n,r+1));return o.length===0?L(e,"$eq",t,n):Z(o,n)}return L(e,"$eq",t,n)}function L(e,t,n,r){let i=r.style==="formal"?e:r.factName(e);return r.style==="formal"?cn(i,t,n,r):un(i,t,n,r)}function un(e,t,n,r){switch(t){case "$eq":return n===null?`${e} is null`:`${e} is ${f(n,r)}`;case "$ne":return n===null?`${e} is not null`:`${e} is not ${f(n,r)}`;case "$gt":return `${e} is more than ${f(n,r)}`;case "$gte":return `${e} is at least ${f(n,r)}`;case "$lt":return `${e} is less than ${f(n,r)}`;case "$lte":return `${e} is at most ${f(n,r)}`;case "$in":return `${e} is one of ${Ne(n,r)}`;case "$nin":return `${e} is not one of ${Ne(n,r)}`;case "$exists":return n===true?`${e} is set`:`${e} is not set`;case "$between":return Array.isArray(n)&&n.length===2?`${e} is between ${f(n[0],r)} and ${f(n[1],r)}`:`${e} is between ${f(n,r)}`;case "$startsWith":return `${e} starts with ${O(n,r,true)}`;case "$endsWith":return `${e} ends with ${O(n,r,true)}`;case "$contains":return `${e} contains ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} matches ${n.toString()}`:`${e} matches ${f(n,r)}`;case "$changed":return `${e} changed`;default:return chunk4MNQDXH7_cjs.a&&!chunkRWFKUNF7_cjs.a.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function cn(e,t,n,r){switch(t){case "$eq":return `${e} = ${f(n,r)}`;case "$ne":return `${e} \u2260 ${f(n,r)}`;case "$gt":return `${e} > ${f(n,r)}`;case "$gte":return `${e} \u2265 ${f(n,r)}`;case "$lt":return `${e} < ${f(n,r)}`;case "$lte":return `${e} \u2264 ${f(n,r)}`;case "$in":return `${e} \u2208 {${_e(n,r)}}`;case "$nin":return `${e} \u2209 {${_e(n,r)}}`;case "$exists":return n===true?`\u2203 ${e}`:`\u2204 ${e}`;case "$between":return Array.isArray(n)&&n.length===2?`${f(n[0],r)} \u2264 ${e} \u2264 ${f(n[1],r)}`:`${e} \u2208 [${f(n,r)}]`;case "$startsWith":return `${e} ^= ${O(n,r,true)}`;case "$endsWith":return `${e} $= ${O(n,r,true)}`;case "$contains":return `${e} \u2287 ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} ~ ${n.toString()}`:`${e} ~ ${f(n,r)}`;case "$changed":return `\u0394${e}`;default:return chunk4MNQDXH7_cjs.a&&!chunkRWFKUNF7_cjs.a.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function Y(e){return e.length===0?true:/[\s,"']/.test(e)}function O(e,t,n){return typeof e!="string"||n||Y(e)?JSON.stringify(e):e}function f(e,t){if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))return String(e);try{return Gt(t.locale).format(e)}catch{return String(e)}}if(typeof e=="bigint")return t.style==="formal"?`${e.toString()}n`:e.toString();if(typeof e=="string")return t.style==="formal"||Y(e)?JSON.stringify(e):e;if(e instanceof Date)return e.toISOString();if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return `[${e.map(n=>f(n,t)).join(", ")}]`;if(typeof e=="object")try{return JSON.stringify(e)}catch{return "[object]"}return String(e)}function Ne(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function _e(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function Z(e,t){if(e.length===0)return t.style==="formal"?"\u22A4":"always true";if(e.length===1)return e[0];let n=t.style==="formal"?Le:Ie;return t.parenthesize,e.join(n)}var ln=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/;function B(e,t){if(typeof e!="string"||!ln.test(e))throw new Error(`[Directive] predicateToSQL: invalid ${t} identifier "${e}" \u2014 must match /^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?$/`)}function We(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToSQL: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function dn(e){if(Array.isArray(e)){if(e.length===0)throw new Error("[Directive] predicateToSQL: select must not be empty");for(let n of e)B(n,"column");return e.join(", ")}let t=e;return t==="*"?"*":(B(t,"column"),t)}function b(e,t){return e.params.push(t),e.placeholder(e.params.length)}function de(e,t,n,r){switch(t){case "$eq":return `${e} = ${b(r,n)}`;case "$ne":return `${e} <> ${b(r,n)}`;case "$gt":return `${e} > ${b(r,n)}`;case "$gte":return `${e} >= ${b(r,n)}`;case "$lt":return `${e} < ${b(r,n)}`;case "$lte":return `${e} <= ${b(r,n)}`;case "$in":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $in operand must be an array");return `${e} = ANY(${b(r,n)})`;case "$nin":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $nin operand must be an array");return `NOT (${e} = ANY(${b(r,n)}))`;case "$exists":return n===true?`${e} IS NOT NULL`:`${e} IS NULL`;case "$between":{if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToSQL: $between operand must be a [low, high] tuple");return `${e} BETWEEN ${b(r,n[0])} AND ${b(r,n[1])}`}case "$startsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $startsWith operand must be a string");return `${e} LIKE ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$endsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $endsWith operand must be a string");return `${e} LIKE '%' || ${b(r,fe(n))} ESCAPE '\\'`;case "$contains":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $contains only supports string operands \u2014 array containment requires a JOIN, not a predicate");return `${e} LIKE '%' || ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$matches":{if(!(n instanceof RegExp))throw new Error("[Directive] predicateToSQL: $matches operand must be a RegExp");let i=n.flags.includes("i")?"~*":"~";return `${e} ${i} ${b(r,n.source)}`}case "$changed":throw new Error('[Directive] predicateToSQL: $changed is an effects-only operator \u2014 no server-side translation (a database row has no "prev" snapshot)');default:throw new Error(`[Directive] predicateToSQL: unknown operator "${t}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function fe(e){return e.replace(/[\\%_]/g,"\\$&")}function Be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function fn(e){if(!Be(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function pe(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToSQL: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function W(e,t,n){if(n>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToSQL: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToSQL: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return "TRUE";let i=e.map(s=>{if(!s||typeof s!="object"||!("fact"in s)||!("op"in s))throw new Error("[Directive] predicateToSQL: array-form clause must be { fact, op, value }");let o=s;return B(o.fact,"column"),We(o.fact,t.allowed),de(o.fact,o.op,o.value,t)});return i.length===1?i[0]:`(${i.join(" AND ")})`}if("$all"in e){pe(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $all must be an array");if(i.length===0)return "TRUE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" AND ")})`}if("$any"in e){pe(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $any must be an array");if(i.length===0)return "FALSE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" OR ")})`}if("$not"in e){pe(e,"$not");let i=e.$not;return `NOT (${W(i,t,n+1)})`}let r=[];for(let[i,s]of Object.entries(e))if(B(i,"column"),We(i,t.allowed),fn(s))for(let[o,u]of Object.entries(s)){if(!chunkRWFKUNF7_cjs.a.has(o))throw new Error(`[Directive] predicateToSQL: unknown operator "${o}" on column "${i}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);r.push(de(i,o,u,t));}else {if(Be(s))throw new Error(`[Directive] predicateToSQL: nested predicate at "${i}" \u2014 cross-module / partial-match predicates have no SQL equivalent (single-table queries only in v1; pass a flat predicate or build JOIN by hand with predicateToWhere)`);r.push(de(i,"$eq",s,t));}return r.length===0?"TRUE":r.length===1?r[0]:`(${r.join(" AND ")})`}var Ue=e=>`$${e}`;function pn(e,t){let{table:n,allowedKeys:r}=t,i=t.placeholder??Ue,s=t.select??"*";B(n,"table");let o=dn(s),u={params:[],placeholder:i,allowed:r},a=W(e,u,0);return {sql:`SELECT ${o} FROM ${n} WHERE ${a}`,where:a,params:u.params}}function gn(e,t={}){let n=t.placeholder??Ue,r={params:[],placeholder:n,allowed:t.allowedKeys};return {where:W(e,r,0),params:r.params}}function ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function he(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function yn(e){if(!he(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}var hn=/^[A-Za-z_][A-Za-z0-9_]*$/,mn=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*$/;function Ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`[Directive] predicateToMongo: field name must be a non-empty string, got ${typeof e}`);if(e.startsWith("$"))throw new Error(`[Directive] predicateToMongo: field name "${e}" starts with "$" \u2014 reserved for Mongo operators (a top-level $where would be an injection vector)`);if(!(t.allowDottedPaths?mn:hn).test(e))throw new Error(`[Directive] predicateToMongo: invalid field name "${e}"${t.allowDottedPaths?"":' \u2014 pass options.allowDottedPaths=true to permit sub-document paths like "user.role"'}`)}function ze(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToMongo: field "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function ye(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToMongo: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function He(e,t){switch(e){case "$eq":case "$ne":case "$gt":case "$gte":case "$lt":case "$lte":case "$in":case "$nin":case "$exists":return {[e]:t};case "$between":{if(!Array.isArray(t)||t.length!==2)throw new Error("[Directive] predicateToMongo: $between operand must be a [low, high] tuple");return {$gte:t[0],$lte:t[1]}}case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $startsWith operand must be a string");return {$regex:`^${ge(t)}`};case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $endsWith operand must be a string");return {$regex:`${ge(t)}$`};case "$contains":if(typeof t=="string")return {$regex:ge(t)};throw new Error("[Directive] predicateToMongo: $contains in Mongo expects a string operand \u2014 for array element membership use $elemMatch or $in directly");case "$matches":{if(t instanceof RegExp)return t.flags?{$regex:t.source,$options:t.flags}:{$regex:t.source};if(typeof t=="string")return {$regex:t};throw new Error("[Directive] predicateToMongo: $matches operand must be a RegExp or string")}case "$changed":throw new Error("[Directive] predicateToMongo: $changed is an effects-only operator \u2014 no MongoDB query equivalent");default:throw new Error(`[Directive] predicateToMongo: unknown operator "${e}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function j(e,t,n){if(n>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToMongo: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToMongo: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return {};let i={},s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToMongo: array-form clause must be { fact, op, value }");let u=o;Ke(u.fact,t),ze(u.fact,t.allowedKeys);let a=He(u.op,u.value);if(u.fact in i&&he(i[u.fact])){let c=i[u.fact];Object.keys(a).some(d=>d in c)?s.push({[u.fact]:a}):i[u.fact]={...c,...a};}else u.fact in i?s.push({[u.fact]:a}):i[u.fact]=a;}if(s.length>0){let o=[];for(let[u,a]of Object.entries(i))o.push({[u]:a});return o.push(...s),{$and:o}}return i}if("$all"in e){ye(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $all must be an array");return i.length===0?{}:i.length===1?j(i[0],t,n+1):{$and:i.map(s=>j(s,t,n+1))}}if("$any"in e){ye(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $any must be an array");return i.length===0?{$expr:{$eq:[1,0]}}:i.length===1?j(i[0],t,n+1):{$or:i.map(s=>j(s,t,n+1))}}if("$not"in e){ye(e,"$not");let i=e.$not;return {$nor:[j(i,t,n+1)]}}let r={};for(let[i,s]of Object.entries(e))if(Ke(i,t),ze(i,t.allowedKeys),yn(s)){let o={};for(let[u,a]of Object.entries(s)){if(!chunkRWFKUNF7_cjs.a.has(u))throw new Error(`[Directive] predicateToMongo: unknown operator "${u}" on field "${i}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);Object.assign(o,He(u,a));}r[i]=o;}else r[i]=s;return r}function $n(e,t={}){return j(e,t,0)}var wn=/^[A-Za-z_][A-Za-z0-9_]*$/;function Je(e,t){if(typeof e!="string"||!wn.test(e))throw new Error(`[Directive] predicateToPostgrest: invalid column identifier "${e}"`);if(t&&!t.includes(e))throw new Error(`[Directive] predicateToPostgrest: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function me(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToPostgrest: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function k(e){if(e==null)return "null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"||typeof e=="bigint")return String(e);if(e instanceof Date)return e.toISOString();if(typeof e=="string")return /[,.():"\\\s]/.test(e)?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:e;throw new Error(`[Directive] predicateToPostgrest: cannot encode value of type ${typeof e}`)}function Qe(e){return `(${e.map(k).join(",")})`}function $e(e){return e.replace(/[\\%_*]/g,"\\$&")}function P(e,t){switch(e){case "$eq":return `eq.${k(t)}`;case "$ne":return `neq.${k(t)}`;case "$gt":return `gt.${k(t)}`;case "$gte":return `gte.${k(t)}`;case "$lt":return `lt.${k(t)}`;case "$lte":return `lte.${k(t)}`;case "$in":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $in operand must be an array");return `in.${Qe(t)}`;case "$nin":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $nin operand must be an array");return `not.in.${Qe(t)}`;case "$exists":return t===true?"not.is.null":"is.null";case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $startsWith operand must be a string");return `like.${k(`${$e(t)}*`)}`;case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $endsWith operand must be a string");return `like.${k(`*${$e(t)}`)}`;case "$contains":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $contains expects a string operand (array containment is the cs operator with a different shape \u2014 out of scope for v1)");return `like.${k(`*${$e(t)}*`)}`;case "$matches":if(t instanceof RegExp)return `${t.flags.includes("i")?"imatch":"match"}.${k(t.source)}`;if(typeof t=="string")return `match.${k(t)}`;throw new Error("[Directive] predicateToPostgrest: $matches operand must be a RegExp or string");case "$changed":throw new Error("[Directive] predicateToPostgrest: $changed is an effects-only operator \u2014 no server query equivalent");default:throw new Error(`[Directive] predicateToPostgrest: unknown operator "${e}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function Xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function bn(e){if(!Xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function we(e,t){return `${e}=${t}`}function G(e,t){return `${e}=(${t.join(",")})`}function be(e,t,n,r){if(t==="$between"){if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToPostgrest: $between operand must be a [low, high] tuple");let i=r?we(e,P("$gte",n[0])):`${e}.${P("$gte",n[0])}`,s=r?we(e,P("$lte",n[1])):`${e}.${P("$lte",n[1])}`;return [i,s]}return [r?we(e,P(t,n)):`${e}.${P(t,n)}`]}function U(e,t,n,r){if(r>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToPostgrest: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error("[Directive] predicateToPostgrest: predicate must be an object or array");if(Array.isArray(e)){let s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToPostgrest: array-form clause must be { fact, op, value }");let u=o;Je(u.fact,t),s.push(...be(u.fact,u.op,u.value,n));}return s}if("$all"in e){me(e,"$all");let s=e.$all;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $all must be an array");if(n){let u=[];for(let a of s)u.push(...U(a,t,true,r+1));return u}let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("and",o)]}if("$any"in e){me(e,"$any");let s=e.$any;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $any must be an array");if(s.length===0)return n?["id=is.null","id=not.is.null"]:[G("and",["id.is.null","id.not.is.null"])];let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("or",o)]}if("$not"in e){me(e,"$not");let s=e.$not,o=U(s,t,false,r+1);return [G("not.and",o)]}let i=[];for(let[s,o]of Object.entries(e))if(Je(s,t),bn(o))for(let[u,a]of Object.entries(o)){if(!chunkRWFKUNF7_cjs.a.has(u))throw new Error(`[Directive] predicateToPostgrest: unknown operator "${u}" on column "${s}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);i.push(...be(s,u,a,n));}else {if(Xe(o))throw new Error(`[Directive] predicateToPostgrest: nested predicate at "${s}" \u2014 single-table queries only`);i.push(...be(s,"$eq",o,n));}return i}function Sn(e){let t=e.indexOf("=");if(t<0)return encodeURIComponent(e);let n=e.slice(0,t),r=e.slice(t+1);return `${n}=${encodeURIComponent(r)}`}function Tn(e,t={}){let n=t.mode??"querystring",r=U(e,t.allowedKeys,true,0);return r.length===0?"":n==="raw"?r.join("&"):r.map(Sn).join("&")}function V(e=[],t,n,r,i,s,o){return {_type:void 0,_validators:e,_typeName:t,_default:n,_transform:r,_description:i,_refinements:s,_meta:o,validate(u){return V([...e,u],t,n,r,i,s,o)}}}function p(e,t,n,r,i,s,o){return {...V(e,t,n,r,i,s,o),default(a){return p(e,t,a,r,i,s,o)},transform(a){return p([],t,void 0,l=>{let d=r?r(l):l;return a(d)},i,void 0,o)},brand(){return p(e,`Branded<${t}>`,n,r,i,s,o)},describe(a){return p(e,t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return p([...e,a],t,n,r,i,l,o)},nullable(){return p([a=>a===null||e.every(c=>c(a))],`${t} | null`,n,r,i,void 0,o)},optional(){return p([a=>a===void 0||e.every(c=>c(a))],`${t} | undefined`,n,r,i,void 0,o)},meta(a){return p(e,t,n,r,i,s,a)}}}var kn=((...e)=>{if(e.length===0)return p([],"union");let t=e.map(n=>n._typeName??"unknown");return p([n=>e.some(r=>r._validators.every(i=>i(n)))],t.join(" | "))}),vn={string(){let e=(t,n,r,i,s,o)=>({...p(t,"string",n,r,i,s,o),minLength(a){return e([...t,c=>c.length>=a],n,r,i,s,o)},maxLength(a){return e([...t,c=>c.length<=a],n,r,i,s,o)},pattern(a){return e([...t,c=>a.test(c)],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="string"])},number(){let e=(t,n,r,i,s,o)=>({...p(t,"number",n,r,i,s,o),min(a){return e([...t,c=>c>=a],n,r,i,s,o)},max(a){return e([...t,c=>c<=a],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="number"])},boolean(){return p([e=>typeof e=="boolean"],"boolean")},array(){let e=(t,n,r,i,s,o)=>{let u=p(t,"array",r,void 0,i,void 0,o),a=s??{value:-1};return {...u,get _lastFailedIndex(){return a.value},set _lastFailedIndex(l){a.value=l;},of(l){let d={value:-1};return e([...t,g=>{for(let y=0;y<g.length;y++)if(!l._validators.every($=>$(g[y])))return d.value=y,false;return true}],l,r,i,d,o)},nonEmpty(){return e([...t,l=>l.length>0],n,r,i,a,o)},maxLength(l){return e([...t,d=>d.length<=l],n,r,i,a,o)},minLength(l){return e([...t,d=>d.length>=l],n,r,i,a,o)},default(l){return e(t,n,l,i,a,o)},describe(l){return e(t,n,r,l,a,o)},meta(l){return e(t,n,r,i,a,l)}}};return e([t=>Array.isArray(t)])},object(){let e=(t,n,r,i)=>({...p(t,"object",n,void 0,r,void 0,i),shape(o){return e([...t,u=>{for(let[a,c]of Object.entries(o)){let l=u[a],d=c;if(d&&!d._validators.every(g=>g(l)))return false}return true}],n,r,i)},nonNull(){return e([...t,o=>o!=null],n,r,i)},hasKeys(...o){return e([...t,u=>o.every(a=>a in u)],n,r,i)},default(o){return e(t,o,r,i)},describe(o){return e(t,n,o,i)},meta(o){return e(t,n,r,o)}});return e([t=>typeof t=="object"&&t!==null&&!Array.isArray(t)])},enum(...e){chunk4MNQDXH7_cjs.a&&e.length===0&&console.warn("[Directive] t.enum() called with no values - this will reject all strings");let t=new Set(e);return p([n=>typeof n=="string"&&t.has(n)],`enum(${e.join("|")})`)},literal(e){return p([t=>t===e],`literal(${String(e)})`)},nullable(e){let t=e._typeName??"unknown";return V([n=>n===null?true:e._validators.every(r=>r(n))],`${t} | null`)},optional(e){let t=e._typeName??"unknown";return V([n=>n===void 0?true:e._validators.every(r=>r(n))],`${t} | undefined`)},union:kn,record(e){let t=e._typeName??"unknown";return p([n=>typeof n!="object"||n===null||Array.isArray(n)?false:Object.values(n).every(r=>e._validators.every(i=>i(r)))],`Record<string, ${t}>`)},tuple(...e){chunk4MNQDXH7_cjs.a&&e.length===0&&console.warn("[Directive] t.tuple() called with no types - this will only accept empty arrays");let t=e.map(n=>n._typeName??"unknown");return p([n=>!Array.isArray(n)||n.length!==e.length?false:e.every((r,i)=>r._validators.every(s=>s(n[i])))],`[${t.join(", ")}]`)},date(){return p([e=>e instanceof Date&&!Number.isNaN(e.getTime())],"Date")},uuid(){let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return p([t=>typeof t=="string"&&e.test(t)],"uuid")},email(){let e=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return p([t=>typeof t=="string"&&e.test(t)],"email")},url(){return p([e=>{if(typeof e!="string")return false;try{return new URL(e),!0}catch{return false}}],"url")},bigint(){return p([e=>typeof e=="bigint"],"bigint")},any(){return p([],"any")},unknown(){return p([],"unknown")}};function Mn(e){if(!e||typeof e!="string"){console.warn("[Directive] Module ID must be a non-empty string");return}/^(__[a-z][a-z0-9_-]*|[a-z][a-z0-9-]*)$/i.test(e)||console.warn(`[Directive] Module ID "${e}" should follow kebab-case convention (e.g., "my-module")`);}function Ze(e,t,n,r,i){for(let s of e)t.has(s)||console.warn(`[Directive] ${n} "${s}" not declared in ${r}`);for(let s of t)e.has(s)||console.warn(`[Directive] ${r}["${s}"] ${i}`);}function Dn(e,t){e.length===0&&console.warn("[Directive] history.snapshotEvents is an empty array \u2014 no events will create history snapshots. Omit history.snapshotEvents entirely to snapshot all events, or list specific events.");let n=new Set(Object.keys(t));for(let r of e)n.has(r)||console.warn(`[Directive] history.snapshotEvents entry "${r}" not declared in schema.events. Available events: ${[...n].join(", ")||"(none)"}`);}function Rn(e,t){let n=new Set(Object.keys(t));for(let[r,i]of Object.entries(e)){let s=i;typeof s.requirement=="string"&&!n.has(s.requirement)&&console.warn(`[Directive] Resolver "${r}" references unknown requirement type "${s.requirement}". Available types: ${[...n].join(", ")||"(none)"}`);}}function Cn(e,t){let n=t.schema?.facts??{},r=Object.keys(n);if(r.length===0)return;let i=new Set(["self","prev","current"]),s="crossModuleDeps"in t&&t.crossModuleDeps?Object.keys(t.crossModuleDeps):[];for(let o of s)i.add(o);for(let o of r)if(i.has(o))throw new Error(`[Directive] module '${e}': fact key '${o}' conflicts with a reserved namespace pivot or evaluation alias (self / prev / current / a crossModuleDep namespace). Three fixes: | ||
| 'use strict';var chunk4QCKAJCX_cjs=require('./chunk-4QCKAJCX.cjs'),chunk7ALP4OLB_cjs=require('./chunk-7ALP4OLB.cjs'),chunkAG2FPVZN_cjs=require('./chunk-AG2FPVZN.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');var A=1e6;function Me(e,t){try{chunkRWFKUNF7_cjs.l(e);}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`[Directive] replayUnder: the ${t} predicate is invalid \u2014 ${i}`)}if(!chunkRWFKUNF7_cjs.h(e)){let r=e===null||typeof e!="object"?`${typeof e} \u2014 ${JSON.stringify(e)}`:JSON.stringify(e).slice(0,80);throw new Error(`[Directive] replayUnder: the ${t} predicate is not a valid FactPredicate (got ${r})`)}let n;if(chunkRWFKUNF7_cjs.i(e,{operator(r,i){n===void 0&&i.startsWith("$")&&!chunkRWFKUNF7_cjs.a.has(i)&&(n=i);},strayOperatorKey(r){n===void 0&&!chunkRWFKUNF7_cjs.a.has(r)&&!chunkRWFKUNF7_cjs.b.has(r)&&(n=r);}}),n!==void 0)throw new Error(`[Directive] replayUnder: the ${t} predicate uses an unknown operator "${n}" \u2014 known operators: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}function Re(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.snapshots))return Ce(e);let t=Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.frames)?e.frames:null;if(!t)throw new Error("[Directive] toReplayFrames: history must be a JSON array of frames, an object with a `frames` array, or a history export with a `snapshots` array");if(t.length>A)throw new Error(`[Directive] toReplayFrames: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);return t.map((n,r)=>{if(n&&typeof n=="object"&&"facts"in n){let i=n,s={id:i.id??`#${r}`,facts:i.facts??{}};return typeof i.timestamp=="number"&&(s.timestamp=i.timestamp),s}return {id:`#${r}`,facts:n??{}}})}function Ce(e){let t=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(t))return se(t);if(!t||typeof t!="object")throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");let n=t;if(n.version!==void 0&&n.version!==1)throw new Error(`[Directive] framesFromHistory: unsupported history export version ${JSON.stringify(n.version)} \u2014 expected 1`);if(!Array.isArray(n.snapshots))throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");return se(n.snapshots)}function se(e){if(!Array.isArray(e))throw new Error("[Directive] framesFromSnapshots: expected an array of fact-state snapshots");if(e.length>A)throw new Error(`[Directive] framesFromSnapshots: history has ${e.length} snapshots, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);for(let t=0;t<e.length;t++){let n=e[t];if(!n||typeof n!="object"||!("facts"in n))throw new Error(`[Directive] framesFromSnapshots: snapshot at index ${t} is not a { facts, ... } object`)}return Re(e)}function H(e){let{frames:t,original:n,proposed:r,entityKey:i}=e,s=e.maxSamples??20,o=s>0?s:0;if(t.length>A)throw new Error(`[Directive] replayUnder: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);Me(n,"original"),Me(r,"proposed");let u=0,a=0,c=0,l=0,d=0,g=[],y=[],$=i?new Set:void 0,m=i?new Set:void 0,M;for(let F of t){let T=F.facts,v=chunkRWFKUNF7_cjs.o(n,T,M),R=chunkRWFKUNF7_cjs.o(r,T,M);v&&(u++,$?.add(T[i])),R&&(a++,m?.add(T[i])),v===R?d++:!v&&R?(c++,g.length<o&&g.push(De(F,n,r,M))):(l++,y.length<o&&y.push(De(F,n,r,M))),M=T;}let E={framesEvaluated:t.length,original:{matched:u},proposed:{matched:a},delta:a-u,newMatchCount:c,lostMatchCount:l,unchanged:d,newMatches:g,lostMatches:y};return $&&m&&(E.original.matchedEntities=$.size,E.proposed.matchedEntities=m.size),E}function De(e,t,n,r){let i=e.facts,s={frameId:e.id,facts:i,originalExplain:chunkRWFKUNF7_cjs.p(t,i,r),proposedExplain:chunkRWFKUNF7_cjs.p(n,i,r)};return e.timestamp!==void 0&&(s.timestamp=e.timestamp),s}var ae=1e4,Ae=5e7;function It(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===1&&typeof e.$hole=="string"}function ue(e,t,n=new Set,r=0){if(r>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] sweepUnder: template exceeds MAX_PREDICATE_DEPTH (${chunkRWFKUNF7_cjs.g}) \u2014 flatten the template or split the sweep`);if(It(e)){let i=e.$hole;if(!(i in t))throw new Error(`[Directive] sweepUnder: template references hole "${i}" but sweep has no values for it`);return t[i]}if(e===null||typeof e!="object")return e;if(n.has(e))throw new Error("[Directive] sweepUnder: template contains a cycle \u2014 predicate templates must be a tree");n.add(e);try{if(Array.isArray(e))return e.map(s=>ue(s,t,n,r+1));let i={};for(let[s,o]of Object.entries(e))i[s]=ue(o,t,n,r+1);return i}finally{n.delete(e);}}function*Ee(e,t){if(e.length===0){yield {};return}let n=e[0],r=e.slice(1),i=t[n]??[];for(let s of i)for(let o of Ee(r,t))yield {[n]:s,...o};}function Lt(e){let t=1;for(let n of Object.values(e))t*=n.length;return t}function qt(e){let{frames:t,original:n,template:r,sweep:i,objective:s=T=>T.proposed.matched,entityKey:o,maxSamples:u=0}=e,a=Object.keys(i);if(a.length===0)throw new Error("[Directive] sweepUnder: `sweep` must contain at least one hole name");let c=Lt(i);if(c>ae)throw new Error(`[Directive] sweepUnder: grid has ${c} points, exceeds the MAX_SWEEP_POINTS limit (${ae}) \u2014 narrow the sweep ranges or split the run`);if(c===0)throw new Error("[Directive] sweepUnder: at least one hole has zero candidate values");let l=c*t.length;if(l>Ae)throw new Error(`[Directive] sweepUnder: ${c} points \xD7 ${t.length} frames = ${l} per-frame evaluations, exceeds the MAX_SWEEP_EVALUATIONS limit (${Ae}) \u2014 narrow the sweep, down-sample the history, or split the run`);let d=false,g=T=>{let v;try{v=s(T);}catch(R){return d||(d=true,console.warn(`[Directive] sweepUnder: objective threw \u2014 point will not rank (${R.message})`)),Number.NEGATIVE_INFINITY}return typeof v!="number"||!Number.isFinite(v)?(d||(d=true,console.warn(`[Directive] sweepUnder: objective returned a non-finite number (${String(v)}) \u2014 point will not rank`)),Number.NEGATIVE_INFINITY):v},y=H({frames:t,original:n,proposed:n,entityKey:o,maxSamples:u}),$={values:{},report:y,score:g(y)},m=[],M=0,E=Number.NEGATIVE_INFINITY;for(let T of Ee(a,i)){let v=ue(r,T),R=H({frames:t,original:n,proposed:v,entityKey:o,maxSamples:u}),te=g(R);te>E&&(E=te,M=m.length),m.push({values:T,report:R,score:te});}let F=m[M];return {points:m,bestIndex:M,best:F,baseline:$}}function ce(e){let t=e&&typeof e=="object"&&!Array.isArray(e)&&"constraints"in e?e.constraints:e;if(Array.isArray(t)){let n={};for(let r of t){if(!r||typeof r!="object"||!("id"in r))throw new Error("[Directive] diffRules: array entries must be `{ id, whenSpec }` objects");let i=r;if(typeof i.id!="string")throw new Error("[Directive] diffRules: constraint `id` must be a string");n[i.id]=i.whenSpec;}return n}if(t&&typeof t=="object")return t;throw new Error("[Directive] diffRules: expected a `{ id: whenSpec }` map, an array of `{ id, whenSpec }`, or `{ constraints: ... }`")}var Wt=new Set(["$eq","$ne","$in","$nin","$exists","$gt","$gte","$lt","$lte","$between","$matches","$startsWith","$endsWith","$contains","$changed"]),Bt=new Set(["$all","$any","$not"]);function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ut(e){if(!xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;let n=false;for(let r of t){if(!r.startsWith("$"))return false;Wt.has(r)&&(n=true);}return n}function S(e,t="",n=[]){if(e===null||typeof e!="object")return n;if(Array.isArray(e)){for(let r of e)if(r&&typeof r=="object"&&"fact"in r&&"op"in r){let i=r;n.push({path:t?`${t}.${String(i.fact)}`:String(i.fact),op:String(i.op),value:i.value});}return n}if("$all"in e&&Array.isArray(e.$all))return e.$all.forEach((i,s)=>{S(i,`${t}$all[${s}]`,n);}),n;if("$any"in e&&Array.isArray(e.$any))return e.$any.forEach((i,s)=>{S(i,`${t}$any[${s}]`,n);}),n;if("$not"in e)return S(e.$not,`${t}$not`,n),n;for(let[r,i]of Object.entries(e)){let s=t?`${t}.${r}`:r;if(Ut(i))for(let[o,u]of Object.entries(i))n.push({path:s,op:o,value:u});else xe(i)&&!Bt.has(r)?S(i,s,n):n.push({path:s,op:"$eq",value:i});}return n}function C(e){return typeof e=="number"&&Number.isFinite(e)}function Kt(e,t,n){switch(e){case "$gte":case "$gt":if(C(t)&&C(n)){if(n<t)return "relaxed";if(n>t)return "tightened"}return null;case "$lte":case "$lt":if(C(t)&&C(n)){if(n>t)return "relaxed";if(n<t)return "tightened"}return null;case "$between":{if(Array.isArray(t)&&Array.isArray(n)&&t.length===2&&n.length===2&&C(t[0])&&C(t[1])&&C(n[0])&&C(n[1])){let r=t[1]-t[0],i=n[1]-n[0];if(i>r)return "relaxed";if(i<r)return "tightened"}return null}case "$in":case "$nin":{if(Array.isArray(t)&&Array.isArray(n))if(e==="$in"){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}else {if(n.length>t.length)return "tightened";if(n.length<t.length)return "relaxed"}return null}case "$contains":{if(Array.isArray(t)&&Array.isArray(n)){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}return null}default:return null}}function zt(e){let t=ce(e.before),n=ce(e.after),i=[...new Set([...Object.keys(t),...Object.keys(n)])].sort(),s=[],o={added:0,removed:0,changed:0,unchanged:0,totalClauseChanges:0};for(let u of i){let a=t[u],c=n[u],l=u in t,d=u in n;if(l&&!d){let y=S(a),$=y.length===0?[{path:"(function-form predicate)",kind:"removed"}]:y.map(m=>({path:m.path,kind:"removed",before:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"removed",changes:$}),o.removed++,o.totalClauseChanges+=$.length;continue}if(!l&&d){let y=S(c),$=y.length===0?[{path:"(function-form predicate)",kind:"added"}]:y.map(m=>({path:m.path,kind:"added",after:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"added",changes:$}),o.added++,o.totalClauseChanges+=$.length;continue}let g=Oe(a,c);g.length===0?(s.push({id:u,status:"unchanged",changes:[]}),o.unchanged++):(s.push({id:u,status:"changed",changes:g}),o.changed++,o.totalClauseChanges+=g.length);}return {constraints:s,summary:o}}function Oe(e,t){if(e!==void 0&&t!==void 0&&(e===null||t===null||typeof e!="object"||typeof t!="object"))return chunk4MNQDXH7_cjs.e(e)===chunk4MNQDXH7_cjs.e(t)?[]:[{path:"",kind:"changed",before:{op:"$eq",value:e},after:{op:"$eq",value:t}}];let n=e===void 0?[]:S(e),r=t===void 0?[]:S(t),i=c=>`${c.path}::${c.op}`,s=new Map(n.map(c=>[i(c),c])),o=new Map(r.map(c=>[i(c),c])),u=new Set([...s.keys(),...o.keys()]),a=[];for(let c of u){let l=s.get(c),d=o.get(c);if(l&&!d){a.push({path:l.path,kind:"removed",before:{op:l.op,value:l.value}});continue}if(!l&&d){a.push({path:d.path,kind:"added",after:{op:d.op,value:d.value}});continue}if(l&&d){if(chunk4MNQDXH7_cjs.e(l.value)===chunk4MNQDXH7_cjs.e(d.value))continue;let g=Kt(l.op,l.value,d.value);a.push({path:l.path,kind:g??"changed",before:{op:l.op,value:l.value},after:{op:d.op,value:d.value}});}}return le(a),a}function le(e){e.sort((t,n)=>{let r=t.path.localeCompare(n.path);if(r!==0)return r;let i=t.before?.op??t.after?.op??"",s=n.before?.op??n.after?.op??"";return i.localeCompare(s)});}function Ht(e){return chunk4MNQDXH7_cjs.h(e)}function J(e){return e===null?"null":e===void 0?"undefined":e instanceof Date?e.toISOString():typeof e=="string"||typeof e=="object"?JSON.stringify(e):String(e)}function Jt(e){let t=e.path,n=J(e.expected),r=J(e.actual);switch(e.op){case "$eq":return `set ${t} to ${n} (currently ${r})`;case "$ne":return `change ${t} to anything other than ${n} (currently ${r})`;case "$gt":return `set ${t} above ${n} (currently ${r})`;case "$gte":return `set ${t} to at least ${n} (currently ${r})`;case "$lt":return `set ${t} below ${n} (currently ${r})`;case "$lte":return `set ${t} to at most ${n} (currently ${r})`;case "$in":return `set ${t} to one of ${n} (currently ${r})`;case "$nin":return `set ${t} to something other than ${n} (currently ${r})`;case "$exists":return e.expected===true?`set ${t} to a non-null value (currently null/missing)`:`unset ${t} (currently ${r})`;case "$between":return Array.isArray(e.expected)&&e.expected.length===2?`set ${t} between ${J(e.expected[0])} and ${J(e.expected[1])} (currently ${r})`:`set ${t} within range ${n} (currently ${r})`;case "$startsWith":return `set ${t} to start with ${n} (currently ${r})`;case "$endsWith":return `set ${t} to end with ${n} (currently ${r})`;case "$contains":return `set ${t} to contain ${n} (currently ${r})`;case "$matches":return `set ${t} to match the pattern ${n} (currently ${r})`;case "$changed":return `the previous-vs-current change of ${t} is required to differ (currently they match: ${r})`;case "$all":case "$any":case "$not":return `the ${e.op} group at "${t}" did not pass \u2014 see its child clauses`;default:return `clause at ${t} (${e.op}) failed: expected ${n}, got ${r}`}}function je(e,t){for(let n of e)if(!n.pass){if((n.op==="$all"||n.op==="$any"||n.op==="$not")&&n.children){je(n.children,t);continue}t.push({path:n.path,op:n.op,expected:n.expected,actual:n.actual,suggestion:Jt(n)});}}function Qt(e,t,n){let r=chunkRWFKUNF7_cjs.p(e,t,n),i=r.every(o=>o.pass),s=[];if(i||je(r,s),!i&&n===void 0){let o=[];chunkRWFKUNF7_cjs.i(e,{operator(u,a){a==="$changed"&&o.push(u);}});for(let u of o)s.push({path:u,op:"$changed",expected:true,actual:void 0,suggestion:`$changed clause at "${u}" cannot be evaluated without a \`prev\` snapshot \u2014 pass predict(predicate, facts, prev).`});}return {wouldFire:i,whenExplain:r,missingChanges:s}}var Pe=new Set(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"]);function Q(e,t){if(e===t)return 0;if(typeof e=="number"&&typeof t=="number"||typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),r=t.getTime();return n<r?-1:n>r?1:0}return typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function _(e,t){if(e===t)return true;if(typeof e!=typeof t||e===null||t===null||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!_(e[i],t[i]))return false;return true}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let i of n)if(!_(e[i],t[i]))return false;return true}function Xt(e,t){if(!Pe.has(e.op)||!Pe.has(t.op))return {type:"overlap",reason:`Both rules touch "${e.path}".`};if(e.op==="$eq"&&t.op==="$eq")return _(e.value,t.value)?{type:"subset",reason:`Both rules require ${e.path} = ${JSON.stringify(e.value)} \u2014 candidate is redundant.`}:{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires ${e.path} = ${JSON.stringify(t.value)} \u2014 they cannot both fire.`};if(e.op==="$eq"&&t.op==="$ne")return _(e.value,t.value)?{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule excludes that value.`}:null;if(e.op==="$ne"&&t.op==="$eq")return _(e.value,t.value)?{type:"direct",reason:`Candidate excludes ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires that exact value.`}:null;if(e.op==="$in"&&t.op==="$in"){let o=new Set(Array.isArray(e.value)?e.value:[]),u=new Set(Array.isArray(t.value)?t.value:[]),a=[...o].filter(c=>u.has(c));return a.length===0?{type:"direct",reason:`Candidate $in set for ${e.path} (${JSON.stringify([...o])}) and existing $in set (${JSON.stringify([...u])}) have no values in common \u2014 the candidate can never fire while the existing rule holds.`}:a.length===o.size&&a.length<u.size?{type:"subset",reason:`Candidate $in set for ${e.path} is a strict subset of the existing rule's $in set.`}:null}let n=e.op==="$gt"||e.op==="$gte"?e.value:void 0,r=e.op==="$lt"||e.op==="$lte"?e.value:void 0,i=t.op==="$gt"||t.op==="$gte"?t.value:void 0,s=t.op==="$lt"||t.op==="$lte"?t.value:void 0;if(n!==void 0&&s!==void 0){let o=Q(n,s);if(!Number.isNaN(o)&&(o>0||o===0&&(e.op==="$gt"||t.op==="$lt")))return {type:"direct",reason:`Candidate requires ${e.path} ${e.op==="$gt"?">":"\u2265"} ${JSON.stringify(n)} but an existing rule caps it at ${t.op==="$lt"?"<":"\u2264"} ${JSON.stringify(s)}.`}}if(i!==void 0&&r!==void 0){let o=Q(i,r);if(!Number.isNaN(o)&&(o>0||o===0&&(t.op==="$gt"||e.op==="$lt")))return {type:"direct",reason:`Candidate caps ${e.path} at ${e.op==="$lt"?"<":"\u2264"} ${JSON.stringify(r)} but an existing rule requires it ${t.op==="$gt"?">":"\u2265"} ${JSON.stringify(i)}.`}}if(n!==void 0&&i!==void 0){let o=Q(n,i);if(!Number.isNaN(o)&&o>0)return {type:"subset",reason:`Candidate's lower bound on ${e.path} (${JSON.stringify(n)}) is stricter than the existing rule's lower bound (${JSON.stringify(i)}) \u2014 candidate is a subset.`}}if(r!==void 0&&s!==void 0){let o=Q(r,s);if(!Number.isNaN(o)&&o<0)return {type:"subset",reason:`Candidate's upper bound on ${e.path} (${JSON.stringify(r)}) is stricter than the existing rule's upper bound (${JSON.stringify(s)}) \u2014 candidate is a subset.`}}return {type:"overlap",reason:`Both rules constrain "${e.path}".`}}function Fe(e){return typeof e=="object"&&e!==null&&typeof e.id=="string"}var Zt={checkAgainst(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {contradictions:[],warnings:[]};let i=new Map;for(let u of r){let a=i.get(u.path)??[];a.push(u),i.set(u.path,a);}let s=[],o=[];for(let u of n){if(!Fe(u)||u.whenSpec===void 0)continue;let a=S(u.whenSpec);for(let c of a){let l=i.get(c.path);if(l)for(let d of l){let g=Xt(d,c);if(!g)continue;let y={constraintId:u.id,type:g.type,reason:g.reason,candidatePath:d.path,candidate:{op:d.op,value:d.value},existing:{op:c.op,value:c.value}};g.type==="overlap"||g.type==="subset"?o.push(y):s.push(y);}}}return {contradictions:s,warnings:o}},checkOwns(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {warnings:[]};let i=new Set(r.map(o=>o.path)),s=[];for(let o of n){if(!Fe(o))continue;let u=Array.isArray(o.owns)?o.owns:[],a=Array.isArray(o.bind)?o.bind:[];for(let c of u)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"owns",reason:`Constraint "${o.id}" already owns "${c}" \u2014 candidate would race or shadow its writes.`,severity:"warning"});for(let c of a)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"bind",reason:`Constraint "${o.id}" binds "${c}" \u2014 candidate would write to a bound field.`,severity:"warning"});}return {warnings:s}}};var I=new Map,Yt=50;function Gt(e){let t=I.get(e);if(!t){try{t=new Intl.NumberFormat(e);}catch{t=new Intl.NumberFormat("en-US");}if(I.size>=Yt){let n=I.keys().next().value;n!==void 0&&I.delete(n);}I.set(e,t);}return t}function Vt(e,t={}){let n=t.style??"natural",r=t.parenthesize??true,i=t.locale??"en-US",s=t.factName??(a=>a);if(e===null||typeof e!="object")return "<invalid predicate>";let o={style:n,parenthesize:r,locale:i,factName:s,seen:new WeakSet,cycle:false},u=X(e,o,0);return o.cycle?"<invalid predicate: cycle>":u}var Ie=" AND ",en=" OR ",tn="NOT",Le=" \u2227 ",nn=" \u2228 ",rn="\xAC";function q(e){return typeof e!="object"||e===null||Array.isArray(e)?false:!(e instanceof Date)&&!(e instanceof RegExp)}function on(e){if(!q(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function X(e,t,n){if(n>chunkRWFKUNF7_cjs.g)return chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] describePredicate: depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 bailing.`),t.style==="formal"?"\u22A5":"always true";if(Array.isArray(e))return sn(e,t);if(!q(e))return f(e,t);if(t.seen.has(e))return t.cycle=true,"<invalid predicate: cycle>";t.seen.add(e);let r=e,i=Object.keys(r);for(let o of ["$all","$any","$not"])if(o in r)return an(o,r[o],t,n);let s=[];for(let o of i)o.startsWith("$")||s.push(qe(o,r[o],t,n));return Z(s,t)}function sn(e,t,n){let r=[];for(let i of e){if(!q(i))continue;let s=i;typeof s.fact!="string"||typeof s.op!="string"||r.push(L(s.fact,s.op,s.value,t));}return r.length===0?t.style==="formal"?"\u22A4":"always true":Z(r,t)}function an(e,t,n,r){if(e==="$not"){if(q(t)&&Object.keys(t).length===0)return n.style==="formal"?"\u22A5":"never";let o=X(t,n,r+1);return o==="always true"?"never":o==="\u22A4"?"\u22A5":`${n.style==="formal"?rn:`${tn} `}(${o})`}if(!Array.isArray(t))return n.style==="formal"?"\u22A5":"<invalid predicate>";if(t.length===0)return e==="$all"?n.style==="formal"?"\u22A4":"always true":n.style==="formal"?"\u22A5":"never";let i=[];for(let o of t){let u=X(o,n,r+1);i.push(u);}if(i.length===1)return i[0];let s=n.parenthesize?i.map(o=>`(${o})`):i;return e==="$all"?s.join(n.style==="formal"?Le:Ie):s.join(n.style==="formal"?nn:en)}function qe(e,t,n,r){if(on(t)){let i=t,s=Object.keys(i);if(s.length===1)return L(e,s[0],i[s[0]],n);let o=s.map(u=>L(e,u,i[u],n));return Z(o,n)}if(q(t)){let i=t;if("$all"in i||"$any"in i||"$not"in i)return X(t,n,r+1);let o=[];for(let u of Object.keys(i))u.startsWith("$")||o.push(qe(`${e}.${u}`,i[u],n,r+1));return o.length===0?L(e,"$eq",t,n):Z(o,n)}return L(e,"$eq",t,n)}function L(e,t,n,r){let i=r.style==="formal"?e:r.factName(e);return r.style==="formal"?cn(i,t,n,r):un(i,t,n,r)}function un(e,t,n,r){switch(t){case "$eq":return n===null?`${e} is null`:`${e} is ${f(n,r)}`;case "$ne":return n===null?`${e} is not null`:`${e} is not ${f(n,r)}`;case "$gt":return `${e} is more than ${f(n,r)}`;case "$gte":return `${e} is at least ${f(n,r)}`;case "$lt":return `${e} is less than ${f(n,r)}`;case "$lte":return `${e} is at most ${f(n,r)}`;case "$in":return `${e} is one of ${Ne(n,r)}`;case "$nin":return `${e} is not one of ${Ne(n,r)}`;case "$exists":return n===true?`${e} is set`:`${e} is not set`;case "$between":return Array.isArray(n)&&n.length===2?`${e} is between ${f(n[0],r)} and ${f(n[1],r)}`:`${e} is between ${f(n,r)}`;case "$startsWith":return `${e} starts with ${O(n,r,true)}`;case "$endsWith":return `${e} ends with ${O(n,r,true)}`;case "$contains":return `${e} contains ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} matches ${n.toString()}`:`${e} matches ${f(n,r)}`;case "$changed":return `${e} changed`;default:return chunk4MNQDXH7_cjs.a&&!chunkRWFKUNF7_cjs.a.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function cn(e,t,n,r){switch(t){case "$eq":return `${e} = ${f(n,r)}`;case "$ne":return `${e} \u2260 ${f(n,r)}`;case "$gt":return `${e} > ${f(n,r)}`;case "$gte":return `${e} \u2265 ${f(n,r)}`;case "$lt":return `${e} < ${f(n,r)}`;case "$lte":return `${e} \u2264 ${f(n,r)}`;case "$in":return `${e} \u2208 {${_e(n,r)}}`;case "$nin":return `${e} \u2209 {${_e(n,r)}}`;case "$exists":return n===true?`\u2203 ${e}`:`\u2204 ${e}`;case "$between":return Array.isArray(n)&&n.length===2?`${f(n[0],r)} \u2264 ${e} \u2264 ${f(n[1],r)}`:`${e} \u2208 [${f(n,r)}]`;case "$startsWith":return `${e} ^= ${O(n,r,true)}`;case "$endsWith":return `${e} $= ${O(n,r,true)}`;case "$contains":return `${e} \u2287 ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} ~ ${n.toString()}`:`${e} ~ ${f(n,r)}`;case "$changed":return `\u0394${e}`;default:return chunk4MNQDXH7_cjs.a&&!chunkRWFKUNF7_cjs.a.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function Y(e){return e.length===0?true:/[\s,"']/.test(e)}function O(e,t,n){return typeof e!="string"||n||Y(e)?JSON.stringify(e):e}function f(e,t){if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))return String(e);try{return Gt(t.locale).format(e)}catch{return String(e)}}if(typeof e=="bigint")return t.style==="formal"?`${e.toString()}n`:e.toString();if(typeof e=="string")return t.style==="formal"||Y(e)?JSON.stringify(e):e;if(e instanceof Date)return e.toISOString();if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return `[${e.map(n=>f(n,t)).join(", ")}]`;if(typeof e=="object")try{return JSON.stringify(e)}catch{return "[object]"}return String(e)}function Ne(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function _e(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function Z(e,t){if(e.length===0)return t.style==="formal"?"\u22A4":"always true";if(e.length===1)return e[0];let n=t.style==="formal"?Le:Ie;return t.parenthesize,e.join(n)}var ln=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/;function B(e,t){if(typeof e!="string"||!ln.test(e))throw new Error(`[Directive] predicateToSQL: invalid ${t} identifier "${e}" \u2014 must match /^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?$/`)}function We(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToSQL: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function dn(e){if(Array.isArray(e)){if(e.length===0)throw new Error("[Directive] predicateToSQL: select must not be empty");for(let n of e)B(n,"column");return e.join(", ")}let t=e;return t==="*"?"*":(B(t,"column"),t)}function b(e,t){return e.params.push(t),e.placeholder(e.params.length)}function de(e,t,n,r){switch(t){case "$eq":return `${e} = ${b(r,n)}`;case "$ne":return `${e} <> ${b(r,n)}`;case "$gt":return `${e} > ${b(r,n)}`;case "$gte":return `${e} >= ${b(r,n)}`;case "$lt":return `${e} < ${b(r,n)}`;case "$lte":return `${e} <= ${b(r,n)}`;case "$in":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $in operand must be an array");return `${e} = ANY(${b(r,n)})`;case "$nin":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $nin operand must be an array");return `NOT (${e} = ANY(${b(r,n)}))`;case "$exists":return n===true?`${e} IS NOT NULL`:`${e} IS NULL`;case "$between":{if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToSQL: $between operand must be a [low, high] tuple");return `${e} BETWEEN ${b(r,n[0])} AND ${b(r,n[1])}`}case "$startsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $startsWith operand must be a string");return `${e} LIKE ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$endsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $endsWith operand must be a string");return `${e} LIKE '%' || ${b(r,fe(n))} ESCAPE '\\'`;case "$contains":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $contains only supports string operands \u2014 array containment requires a JOIN, not a predicate");return `${e} LIKE '%' || ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$matches":{if(!(n instanceof RegExp))throw new Error("[Directive] predicateToSQL: $matches operand must be a RegExp");let i=n.flags.includes("i")?"~*":"~";return `${e} ${i} ${b(r,n.source)}`}case "$changed":throw new Error('[Directive] predicateToSQL: $changed is an effects-only operator \u2014 no server-side translation (a database row has no "prev" snapshot)');default:throw new Error(`[Directive] predicateToSQL: unknown operator "${t}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function fe(e){return e.replace(/[\\%_]/g,"\\$&")}function Be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function fn(e){if(!Be(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function pe(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToSQL: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function W(e,t,n){if(n>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToSQL: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToSQL: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return "TRUE";let i=e.map(s=>{if(!s||typeof s!="object"||!("fact"in s)||!("op"in s))throw new Error("[Directive] predicateToSQL: array-form clause must be { fact, op, value }");let o=s;return B(o.fact,"column"),We(o.fact,t.allowed),de(o.fact,o.op,o.value,t)});return i.length===1?i[0]:`(${i.join(" AND ")})`}if("$all"in e){pe(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $all must be an array");if(i.length===0)return "TRUE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" AND ")})`}if("$any"in e){pe(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $any must be an array");if(i.length===0)return "FALSE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" OR ")})`}if("$not"in e){pe(e,"$not");let i=e.$not;return `NOT (${W(i,t,n+1)})`}let r=[];for(let[i,s]of Object.entries(e))if(B(i,"column"),We(i,t.allowed),fn(s))for(let[o,u]of Object.entries(s)){if(!chunkRWFKUNF7_cjs.a.has(o))throw new Error(`[Directive] predicateToSQL: unknown operator "${o}" on column "${i}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);r.push(de(i,o,u,t));}else {if(Be(s))throw new Error(`[Directive] predicateToSQL: nested predicate at "${i}" \u2014 cross-module / partial-match predicates have no SQL equivalent (single-table queries only in v1; pass a flat predicate or build JOIN by hand with predicateToWhere)`);r.push(de(i,"$eq",s,t));}return r.length===0?"TRUE":r.length===1?r[0]:`(${r.join(" AND ")})`}var Ue=e=>`$${e}`;function pn(e,t){let{table:n,allowedKeys:r}=t,i=t.placeholder??Ue,s=t.select??"*";B(n,"table");let o=dn(s),u={params:[],placeholder:i,allowed:r},a=W(e,u,0);return {sql:`SELECT ${o} FROM ${n} WHERE ${a}`,where:a,params:u.params}}function gn(e,t={}){let n=t.placeholder??Ue,r={params:[],placeholder:n,allowed:t.allowedKeys};return {where:W(e,r,0),params:r.params}}function ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function he(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function yn(e){if(!he(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}var hn=/^[A-Za-z_][A-Za-z0-9_]*$/,mn=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*$/;function Ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`[Directive] predicateToMongo: field name must be a non-empty string, got ${typeof e}`);if(e.startsWith("$"))throw new Error(`[Directive] predicateToMongo: field name "${e}" starts with "$" \u2014 reserved for Mongo operators (a top-level $where would be an injection vector)`);if(!(t.allowDottedPaths?mn:hn).test(e))throw new Error(`[Directive] predicateToMongo: invalid field name "${e}"${t.allowDottedPaths?"":' \u2014 pass options.allowDottedPaths=true to permit sub-document paths like "user.role"'}`)}function ze(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToMongo: field "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function ye(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToMongo: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function He(e,t){switch(e){case "$eq":case "$ne":case "$gt":case "$gte":case "$lt":case "$lte":case "$in":case "$nin":case "$exists":return {[e]:t};case "$between":{if(!Array.isArray(t)||t.length!==2)throw new Error("[Directive] predicateToMongo: $between operand must be a [low, high] tuple");return {$gte:t[0],$lte:t[1]}}case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $startsWith operand must be a string");return {$regex:`^${ge(t)}`};case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $endsWith operand must be a string");return {$regex:`${ge(t)}$`};case "$contains":if(typeof t=="string")return {$regex:ge(t)};throw new Error("[Directive] predicateToMongo: $contains in Mongo expects a string operand \u2014 for array element membership use $elemMatch or $in directly");case "$matches":{if(t instanceof RegExp)return t.flags?{$regex:t.source,$options:t.flags}:{$regex:t.source};if(typeof t=="string")return {$regex:t};throw new Error("[Directive] predicateToMongo: $matches operand must be a RegExp or string")}case "$changed":throw new Error("[Directive] predicateToMongo: $changed is an effects-only operator \u2014 no MongoDB query equivalent");default:throw new Error(`[Directive] predicateToMongo: unknown operator "${e}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function j(e,t,n){if(n>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToMongo: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToMongo: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return {};let i={},s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToMongo: array-form clause must be { fact, op, value }");let u=o;Ke(u.fact,t),ze(u.fact,t.allowedKeys);let a=He(u.op,u.value);if(u.fact in i&&he(i[u.fact])){let c=i[u.fact];Object.keys(a).some(d=>d in c)?s.push({[u.fact]:a}):i[u.fact]={...c,...a};}else u.fact in i?s.push({[u.fact]:a}):i[u.fact]=a;}if(s.length>0){let o=[];for(let[u,a]of Object.entries(i))o.push({[u]:a});return o.push(...s),{$and:o}}return i}if("$all"in e){ye(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $all must be an array");return i.length===0?{}:i.length===1?j(i[0],t,n+1):{$and:i.map(s=>j(s,t,n+1))}}if("$any"in e){ye(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $any must be an array");return i.length===0?{$expr:{$eq:[1,0]}}:i.length===1?j(i[0],t,n+1):{$or:i.map(s=>j(s,t,n+1))}}if("$not"in e){ye(e,"$not");let i=e.$not;return {$nor:[j(i,t,n+1)]}}let r={};for(let[i,s]of Object.entries(e))if(Ke(i,t),ze(i,t.allowedKeys),yn(s)){let o={};for(let[u,a]of Object.entries(s)){if(!chunkRWFKUNF7_cjs.a.has(u))throw new Error(`[Directive] predicateToMongo: unknown operator "${u}" on field "${i}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);Object.assign(o,He(u,a));}r[i]=o;}else r[i]=s;return r}function $n(e,t={}){return j(e,t,0)}var wn=/^[A-Za-z_][A-Za-z0-9_]*$/;function Je(e,t){if(typeof e!="string"||!wn.test(e))throw new Error(`[Directive] predicateToPostgrest: invalid column identifier "${e}"`);if(t&&!t.includes(e))throw new Error(`[Directive] predicateToPostgrest: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function me(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToPostgrest: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function k(e){if(e==null)return "null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"||typeof e=="bigint")return String(e);if(e instanceof Date)return e.toISOString();if(typeof e=="string")return /[,.():"\\\s]/.test(e)?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:e;throw new Error(`[Directive] predicateToPostgrest: cannot encode value of type ${typeof e}`)}function Qe(e){return `(${e.map(k).join(",")})`}function $e(e){return e.replace(/[\\%_*]/g,"\\$&")}function P(e,t){switch(e){case "$eq":return `eq.${k(t)}`;case "$ne":return `neq.${k(t)}`;case "$gt":return `gt.${k(t)}`;case "$gte":return `gte.${k(t)}`;case "$lt":return `lt.${k(t)}`;case "$lte":return `lte.${k(t)}`;case "$in":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $in operand must be an array");return `in.${Qe(t)}`;case "$nin":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $nin operand must be an array");return `not.in.${Qe(t)}`;case "$exists":return t===true?"not.is.null":"is.null";case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $startsWith operand must be a string");return `like.${k(`${$e(t)}*`)}`;case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $endsWith operand must be a string");return `like.${k(`*${$e(t)}`)}`;case "$contains":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $contains expects a string operand (array containment is the cs operator with a different shape \u2014 out of scope for v1)");return `like.${k(`*${$e(t)}*`)}`;case "$matches":if(t instanceof RegExp)return `${t.flags.includes("i")?"imatch":"match"}.${k(t.source)}`;if(typeof t=="string")return `match.${k(t)}`;throw new Error("[Directive] predicateToPostgrest: $matches operand must be a RegExp or string");case "$changed":throw new Error("[Directive] predicateToPostgrest: $changed is an effects-only operator \u2014 no server query equivalent");default:throw new Error(`[Directive] predicateToPostgrest: unknown operator "${e}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`)}}function Xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function bn(e){if(!Xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function we(e,t){return `${e}=${t}`}function G(e,t){return `${e}=(${t.join(",")})`}function be(e,t,n,r){if(t==="$between"){if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToPostgrest: $between operand must be a [low, high] tuple");let i=r?we(e,P("$gte",n[0])):`${e}.${P("$gte",n[0])}`,s=r?we(e,P("$lte",n[1])):`${e}.${P("$lte",n[1])}`;return [i,s]}return [r?we(e,P(t,n)):`${e}.${P(t,n)}`]}function U(e,t,n,r){if(r>chunkRWFKUNF7_cjs.g)throw new Error(`[Directive] predicateToPostgrest: predicate depth limit (${chunkRWFKUNF7_cjs.g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error("[Directive] predicateToPostgrest: predicate must be an object or array");if(Array.isArray(e)){let s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToPostgrest: array-form clause must be { fact, op, value }");let u=o;Je(u.fact,t),s.push(...be(u.fact,u.op,u.value,n));}return s}if("$all"in e){me(e,"$all");let s=e.$all;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $all must be an array");if(n){let u=[];for(let a of s)u.push(...U(a,t,true,r+1));return u}let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("and",o)]}if("$any"in e){me(e,"$any");let s=e.$any;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $any must be an array");if(s.length===0)return n?["id=is.null","id=not.is.null"]:[G("and",["id.is.null","id.not.is.null"])];let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("or",o)]}if("$not"in e){me(e,"$not");let s=e.$not,o=U(s,t,false,r+1);return [G("not.and",o)]}let i=[];for(let[s,o]of Object.entries(e))if(Je(s,t),bn(o))for(let[u,a]of Object.entries(o)){if(!chunkRWFKUNF7_cjs.a.has(u))throw new Error(`[Directive] predicateToPostgrest: unknown operator "${u}" on column "${s}" \u2014 known: ${[...chunkRWFKUNF7_cjs.a].join(", ")}`);i.push(...be(s,u,a,n));}else {if(Xe(o))throw new Error(`[Directive] predicateToPostgrest: nested predicate at "${s}" \u2014 single-table queries only`);i.push(...be(s,"$eq",o,n));}return i}function Sn(e){let t=e.indexOf("=");if(t<0)return encodeURIComponent(e);let n=e.slice(0,t),r=e.slice(t+1);return `${n}=${encodeURIComponent(r)}`}function Tn(e,t={}){let n=t.mode??"querystring",r=U(e,t.allowedKeys,true,0);return r.length===0?"":n==="raw"?r.join("&"):r.map(Sn).join("&")}function V(e=[],t,n,r,i,s,o){return {_type:void 0,_validators:e,_typeName:t,_default:n,_transform:r,_description:i,_refinements:s,_meta:o,validate(u){return V([...e,u],t,n,r,i,s,o)}}}function p(e,t,n,r,i,s,o){return {...V(e,t,n,r,i,s,o),default(a){return p(e,t,a,r,i,s,o)},transform(a){return p([],t,void 0,l=>{let d=r?r(l):l;return a(d)},i,void 0,o)},brand(){return p(e,`Branded<${t}>`,n,r,i,s,o)},describe(a){return p(e,t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return p([...e,a],t,n,r,i,l,o)},nullable(){return p([a=>a===null||e.every(c=>c(a))],`${t} | null`,n,r,i,void 0,o)},optional(){return p([a=>a===void 0||e.every(c=>c(a))],`${t} | undefined`,n,r,i,void 0,o)},meta(a){return p(e,t,n,r,i,s,a)}}}var kn=((...e)=>{if(e.length===0)return p([],"union");let t=e.map(n=>n._typeName??"unknown");return p([n=>e.some(r=>r._validators.every(i=>i(n)))],t.join(" | "))}),vn={string(){let e=(t,n,r,i,s,o)=>({...p(t,"string",n,r,i,s,o),minLength(a){return e([...t,c=>c.length>=a],n,r,i,s,o)},maxLength(a){return e([...t,c=>c.length<=a],n,r,i,s,o)},pattern(a){return e([...t,c=>a.test(c)],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="string"])},number(){let e=(t,n,r,i,s,o)=>({...p(t,"number",n,r,i,s,o),min(a){return e([...t,c=>c>=a],n,r,i,s,o)},max(a){return e([...t,c=>c<=a],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="number"])},boolean(){return p([e=>typeof e=="boolean"],"boolean")},array(){let e=(t,n,r,i,s,o)=>{let u=p(t,"array",r,void 0,i,void 0,o),a=s??{value:-1};return {...u,get _lastFailedIndex(){return a.value},set _lastFailedIndex(l){a.value=l;},of(l){let d={value:-1};return e([...t,g=>{for(let y=0;y<g.length;y++)if(!l._validators.every($=>$(g[y])))return d.value=y,false;return true}],l,r,i,d,o)},nonEmpty(){return e([...t,l=>l.length>0],n,r,i,a,o)},maxLength(l){return e([...t,d=>d.length<=l],n,r,i,a,o)},minLength(l){return e([...t,d=>d.length>=l],n,r,i,a,o)},default(l){return e(t,n,l,i,a,o)},describe(l){return e(t,n,r,l,a,o)},meta(l){return e(t,n,r,i,a,l)}}};return e([t=>Array.isArray(t)])},object(){let e=(t,n,r,i)=>({...p(t,"object",n,void 0,r,void 0,i),shape(o){return e([...t,u=>{for(let[a,c]of Object.entries(o)){let l=u[a],d=c;if(d&&!d._validators.every(g=>g(l)))return false}return true}],n,r,i)},nonNull(){return e([...t,o=>o!=null],n,r,i)},hasKeys(...o){return e([...t,u=>o.every(a=>a in u)],n,r,i)},default(o){return e(t,o,r,i)},describe(o){return e(t,n,o,i)},meta(o){return e(t,n,r,o)}});return e([t=>typeof t=="object"&&t!==null&&!Array.isArray(t)])},enum(...e){chunk4MNQDXH7_cjs.a&&e.length===0&&console.warn("[Directive] t.enum() called with no values - this will reject all strings");let t=new Set(e);return p([n=>typeof n=="string"&&t.has(n)],`enum(${e.join("|")})`)},literal(e){return p([t=>t===e],`literal(${String(e)})`)},nullable(e){let t=e._typeName??"unknown";return V([n=>n===null?true:e._validators.every(r=>r(n))],`${t} | null`)},optional(e){let t=e._typeName??"unknown";return V([n=>n===void 0?true:e._validators.every(r=>r(n))],`${t} | undefined`)},union:kn,record(e){let t=e._typeName??"unknown";return p([n=>typeof n!="object"||n===null||Array.isArray(n)?false:Object.values(n).every(r=>e._validators.every(i=>i(r)))],`Record<string, ${t}>`)},tuple(...e){chunk4MNQDXH7_cjs.a&&e.length===0&&console.warn("[Directive] t.tuple() called with no types - this will only accept empty arrays");let t=e.map(n=>n._typeName??"unknown");return p([n=>!Array.isArray(n)||n.length!==e.length?false:e.every((r,i)=>r._validators.every(s=>s(n[i])))],`[${t.join(", ")}]`)},date(){return p([e=>e instanceof Date&&!Number.isNaN(e.getTime())],"Date")},uuid(){let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return p([t=>typeof t=="string"&&e.test(t)],"uuid")},email(){let e=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return p([t=>typeof t=="string"&&e.test(t)],"email")},url(){return p([e=>{if(typeof e!="string")return false;try{return new URL(e),!0}catch{return false}}],"url")},bigint(){return p([e=>typeof e=="bigint"],"bigint")},any(){return p([],"any")},unknown(){return p([],"unknown")}};function Mn(e){if(!e||typeof e!="string"){console.warn("[Directive] Module ID must be a non-empty string");return}/^(__[a-z][a-z0-9_-]*|[a-z][a-z0-9-]*)$/i.test(e)||console.warn(`[Directive] Module ID "${e}" should follow kebab-case convention (e.g., "my-module")`);}function Ze(e,t,n,r,i){for(let s of e)t.has(s)||console.warn(`[Directive] ${n} "${s}" not declared in ${r}`);for(let s of t)e.has(s)||console.warn(`[Directive] ${r}["${s}"] ${i}`);}function Dn(e,t){e.length===0&&console.warn("[Directive] history.snapshotEvents is an empty array \u2014 no events will create history snapshots. Omit history.snapshotEvents entirely to snapshot all events, or list specific events.");let n=new Set(Object.keys(t));for(let r of e)n.has(r)||console.warn(`[Directive] history.snapshotEvents entry "${r}" not declared in schema.events. Available events: ${[...n].join(", ")||"(none)"}`);}function Rn(e,t){let n=new Set(Object.keys(t));for(let[r,i]of Object.entries(e)){let s=i;typeof s.requirement=="string"&&!n.has(s.requirement)&&console.warn(`[Directive] Resolver "${r}" references unknown requirement type "${s.requirement}". Available types: ${[...n].join(", ")||"(none)"}`);}}function Cn(e,t){let n=t.schema?.facts??{},r=Object.keys(n);if(r.length===0)return;let i=new Set(["self","prev","current"]),s="crossModuleDeps"in t&&t.crossModuleDeps?Object.keys(t.crossModuleDeps):[];for(let o of s)i.add(o);for(let o of r)if(i.has(o))throw new Error(`[Directive] module '${e}': fact key '${o}' conflicts with a reserved namespace pivot or evaluation alias (self / prev / current / a crossModuleDep namespace). Three fixes: | ||
| 1. Rename the fact (e.g. ${o}_) | ||
| 2. Remove '${o}' from this module's crossModuleDeps if it's not actually needed | ||
| 3. Move the fact under a wrapping namespace (t.object({ inner: ... }))`)}function An(e,t){let n=t.constraints;if(n)for(let[r,i]of Object.entries(n)){let s=i?.owns;if(s){for(let o of s)if(chunkJGPPJV5P_cjs.k.has(o)||o.startsWith("$"))throw new Error(`[Directive] module '${e}' constraint '${r}': owns key '${o}' is reserved (BLOCKED_PROPS or $-prefixed)`)}}}function En(e,t){Mn(e),t.schema?t.schema.facts||console.warn("[Directive] Module schema.facts is required"):console.warn("[Directive] Module schema is required"),Ze(new Set(Object.keys(t.derive??{})),new Set(Object.keys(t.schema?.derivations??{})),"Derivation","schema.derivations","has no matching implementation in derive"),Ze(new Set(Object.keys(t.events??{})),new Set(Object.keys(t.schema?.events??{})),"Event","schema.events","has no matching handler in events"),t.history?.snapshotEvents&&Dn(t.history.snapshotEvents,t.schema?.events??{}),t.resolvers&&t.schema?.requirements&&Rn(t.resolvers,t.schema.requirements);}function Ye(e,t){Cn(e,t),An(e,t),chunk4MNQDXH7_cjs.a&&En(e,t);let n="crossModuleDeps"in t?t.crossModuleDeps:void 0;return {id:e,schema:t.schema,init:t.init,derive:t.derive??{},events:t.events??{},effects:t.effects,sources:t.sources,constraints:t.constraints,resolvers:t.resolvers,hooks:t.hooks,meta:t.meta,history:t.history,crossModuleDeps:n}}function xn(e){return t=>Ye(t,e)}function Se(){let e={pending:new Map,inflight:new Map,failed:new Map,errors:new Map,listeners:new Set};function t(){for(let a of e.listeners)a();}function n(a,c){let l=a.get(c);return l||(l=new Set,a.set(c,l)),l}function r(a){let c=e.pending.get(a)??new Set,l=e.inflight.get(a)??new Set,d=e.failed.get(a)??new Set,g=e.errors.get(a)??null;return {pending:c.size,inflight:l.size,failed:d.size,isLoading:c.size>0||l.size>0,hasError:d.size>0,lastError:g}}function i(){let a=new Set([...e.pending.keys(),...e.inflight.keys(),...e.failed.keys()]),c=new Map;for(let l of a)c.set(l,r(l));return c}function s(a){return e.listeners.add(a),()=>e.listeners.delete(a)}function o(){e.pending.clear(),e.inflight.clear(),e.failed.clear(),e.errors.clear(),t();}return {plugin:{name:"requirement-status",onRequirementCreated(a){let c=a.requirement.type;n(e.pending,c).add(a.id),e.failed.get(c)?.delete(a.id),t();},onResolverStart(a,c){let l=c.requirement.type;e.pending.get(l)?.delete(c.id),n(e.inflight,l).add(c.id),t();},onResolverComplete(a,c){let l=c.requirement.type;e.inflight.get(l)?.delete(c.id),e.pending.get(l)?.delete(c.id),t();},onResolverError(a,c,l){let d=c.requirement.type;e.inflight.get(d)?.delete(c.id),n(e.failed,d).add(c.id),e.errors.set(d,l instanceof Error?l:new Error(String(l))),t();},onResolverCancel(a,c){let l=c.requirement.type;e.pending.get(l)?.delete(c.id),e.inflight.get(l)?.delete(c.id),t();},onRequirementMet(a){let c=a.requirement.type;e.pending.get(c)?.delete(a.id),e.inflight.get(c)?.delete(a.id),t();}},getStatus:r,getAllStatus:i,subscribe:s,reset:o}}function On(e){return t=>e.getStatus(t)}function jn(e){let t=Se(),r=[...e.plugins??[],t.plugin];return {system:chunkOSXI7JFB_cjs.a({module:e.module,plugins:r,trace:e.trace,errorBoundary:e.errorBoundary,tickMs:e.tickMs,zeroConfig:e.zeroConfig,initialFacts:e.initialFacts}),statusPlugin:t}}function Ge(){return {now:()=>Date.now(),setTimeout:(e,t)=>{let n=globalThis.setTimeout(e,t);return ()=>globalThis.clearTimeout(n)}}}function Pn(e=0){let t=e,n=0,r=[];return {now:()=>t,setTimeout:(i,s)=>{let o={id:n++,deadlineMs:t+s,cb:i,canceled:false};return r.push(o),()=>{o.canceled=true;}},advanceBy:i=>{let s=t+i;for(;;){let o=r.filter(a=>!a.canceled&&a.deadlineMs<=s).sort((a,c)=>a.deadlineMs!==c.deadlineMs?a.deadlineMs-c.deadlineMs:a.id-c.id);if(o.length===0)break;let u=o[0];t=Math.max(t,u.deadlineMs),u.canceled=true,u.cb();}t=Math.max(t,s);}}}function Fn(){return Ge()}function Te(){return {startedAtMs:null,pausedDurationMs:0,pausedAtMs:null,status:"idle",repeats:0}}function ee(e,t){return e.startedAtMs===null?0:e.status==="paused"&&e.pausedAtMs!==null?Math.max(0,e.pausedAtMs-e.startedAtMs-e.pausedDurationMs):Math.max(0,t-e.startedAtMs-e.pausedDurationMs)}function Ve(e,t,n){return Math.max(0,n-ee(e,t))}function et(e,t){return e.status==="running"||e.status==="paused"?e:{...e,startedAtMs:t,pausedDurationMs:0,pausedAtMs:null,status:"running",repeats:0}}function tt(e,t){return e.status!=="running"?e:{...e,pausedAtMs:t,status:"paused"}}function nt(e,t){if(e.status!=="paused"||e.pausedAtMs===null)return e;let n=Math.max(0,t-e.pausedAtMs);return {...e,pausedDurationMs:e.pausedDurationMs+n,pausedAtMs:null,status:"running"}}function rt(){return Te()}function it(e){return {...e,status:"completed"}}function ot(e,t){return e.startedAtMs===null||e.status==="paused"?e:{...e,startedAtMs:e.startedAtMs+t,pausedDurationMs:0,pausedAtMs:null,repeats:e.repeats+1}}function st(e,t,n){if(e.status!=="running")return {kind:"no-op"};let r=ee(e,t);return n.mode==="up"?{kind:"no-op"}:n.mode==="repeat"?r>=n.ms?{kind:"repeat"}:{kind:"no-op"}:r>=n.ms?{kind:"complete"}:{kind:"no-op"}}function Nn(e){return {initial:Te,start:et,pause:tt,resume:nt,reset:rt,complete:it,registerRepeat:t=>ot(t,e.ms),tick:(t,n)=>st(t,n,e),elapsedMs:ee,remainingMs:(t,n)=>Ve(t,n,e.ms)}}var Sr={None:"none",Linear:"linear",Exponential:"exponential"};Object.defineProperty(exports,"createAuditLedger",{enumerable:true,get:function(){return chunk4QCKAJCX_cjs.b}});Object.defineProperty(exports,"memorySink",{enumerable:true,get:function(){return chunk4QCKAJCX_cjs.a}});Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunkOSXI7JFB_cjs.a}});Object.defineProperty(exports,"DirectiveError",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.b}});Object.defineProperty(exports,"RequirementSet",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.o}});Object.defineProperty(exports,"forType",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.n}});Object.defineProperty(exports,"generateRequirementId",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.k}});Object.defineProperty(exports,"isNamespacedSystem",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.h}});Object.defineProperty(exports,"isRequirementType",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.m}});Object.defineProperty(exports,"isSingleModuleSystem",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.g}});Object.defineProperty(exports,"req",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.l}});Object.defineProperty(exports,"typedConstraint",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.e}});Object.defineProperty(exports,"typedResolver",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.f}});Object.defineProperty(exports,"applyPatch",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.v}});Object.defineProperty(exports,"evaluateKeySelector",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.u}});Object.defineProperty(exports,"evaluatePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.o}});Object.defineProperty(exports,"evaluatePredicateExplained",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.p}});Object.defineProperty(exports,"evaluateTemplate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.s}});Object.defineProperty(exports,"extractDeps",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.r}});Object.defineProperty(exports,"extractTemplateKeys",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.t}});Object.defineProperty(exports,"getKind",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.c}});Object.defineProperty(exports,"getOperatorsForKind",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.e}});Object.defineProperty(exports,"getSchemaFieldKinds",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.d}});Object.defineProperty(exports,"isPredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.h}});Object.defineProperty(exports,"isTemplate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.k}});Object.defineProperty(exports,"listAllPredicateOperators",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.f}});Object.defineProperty(exports,"memoizePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.q}});Object.defineProperty(exports,"validatePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.l}});Object.defineProperty(exports,"validatePredicateAgainstSchema",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.n}});Object.defineProperty(exports,"diffSnapshots",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.k}});Object.defineProperty(exports,"isSignedSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.l}});Object.defineProperty(exports,"isSnapshotExpired",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.i}});Object.defineProperty(exports,"shallowEqual",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.g}});Object.defineProperty(exports,"signSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.m}});Object.defineProperty(exports,"validateSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.j}});Object.defineProperty(exports,"verifySnapshotSignature",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.n}});exports.Backoff=Sr;exports.MAX_REPLAY_FRAMES=A;exports.MAX_SWEEP_POINTS=ae;exports.completeTimer=it;exports.createModule=Ye;exports.createModuleFactory=xn;exports.createRequirementStatusPlugin=Se;exports.createStatusHook=On;exports.createSystemWithStatus=jn;exports.defaultClock=Fn;exports.describePredicate=Vt;exports.diffClauses=Oe;exports.diffRules=zt;exports.doctor=Zt;exports.elapsedMs=ee;exports.flattenPredicate=S;exports.framesFromHistory=Ce;exports.framesFromSnapshots=se;exports.initialTimerState=Te;exports.pauseTimer=tt;exports.predicateHash=Ht;exports.predicateToMongo=$n;exports.predicateToPostgrest=Tn;exports.predicateToSQL=pn;exports.predicateToWhere=gn;exports.predict=Qt;exports.realClock=Ge;exports.registerRepeat=ot;exports.remainingMs=Ve;exports.replayUnder=H;exports.resetTimer=rt;exports.resumeTimer=nt;exports.startTimer=et;exports.sweepUnder=qt;exports.t=vn;exports.tickTimer=st;exports.timerOps=Nn;exports.toReplayFrames=Re;exports.toRulesMap=ce;exports.virtualClock=Pn;//# sourceMappingURL=index.cjs.map | ||
| 3. Move the fact under a wrapping namespace (t.object({ inner: ... }))`)}function An(e,t){let n=t.constraints;if(n)for(let[r,i]of Object.entries(n)){let s=i?.owns;if(s){for(let o of s)if(chunkJGPPJV5P_cjs.k.has(o)||o.startsWith("$"))throw new Error(`[Directive] module '${e}' constraint '${r}': owns key '${o}' is reserved (BLOCKED_PROPS or $-prefixed)`)}}}function En(e,t){Mn(e),t.schema?t.schema.facts||console.warn("[Directive] Module schema.facts is required"):console.warn("[Directive] Module schema is required"),Ze(new Set(Object.keys(t.derive??{})),new Set(Object.keys(t.schema?.derivations??{})),"Derivation","schema.derivations","has no matching implementation in derive"),Ze(new Set(Object.keys(t.events??{})),new Set(Object.keys(t.schema?.events??{})),"Event","schema.events","has no matching handler in events"),t.history?.snapshotEvents&&Dn(t.history.snapshotEvents,t.schema?.events??{}),t.resolvers&&t.schema?.requirements&&Rn(t.resolvers,t.schema.requirements);}function Ye(e,t){Cn(e,t),An(e,t),chunk4MNQDXH7_cjs.a&&En(e,t);let n="crossModuleDeps"in t?t.crossModuleDeps:void 0;return {id:e,schema:t.schema,init:t.init,derive:t.derive??{},events:t.events??{},effects:t.effects,sources:t.sources,constraints:t.constraints,resolvers:t.resolvers,hooks:t.hooks,meta:t.meta,history:t.history,crossModuleDeps:n}}function xn(e){return t=>Ye(t,e)}function Se(){let e={pending:new Map,inflight:new Map,failed:new Map,errors:new Map,listeners:new Set};function t(){for(let a of e.listeners)a();}function n(a,c){let l=a.get(c);return l||(l=new Set,a.set(c,l)),l}function r(a){let c=e.pending.get(a)??new Set,l=e.inflight.get(a)??new Set,d=e.failed.get(a)??new Set,g=e.errors.get(a)??null;return {pending:c.size,inflight:l.size,failed:d.size,isLoading:c.size>0||l.size>0,hasError:d.size>0,lastError:g}}function i(){let a=new Set([...e.pending.keys(),...e.inflight.keys(),...e.failed.keys()]),c=new Map;for(let l of a)c.set(l,r(l));return c}function s(a){return e.listeners.add(a),()=>e.listeners.delete(a)}function o(){e.pending.clear(),e.inflight.clear(),e.failed.clear(),e.errors.clear(),t();}return {plugin:{name:"requirement-status",onRequirementCreated(a){let c=a.requirement.type;n(e.pending,c).add(a.id),e.failed.get(c)?.delete(a.id),t();},onResolverStart(a,c){let l=c.requirement.type;e.pending.get(l)?.delete(c.id),n(e.inflight,l).add(c.id),t();},onResolverComplete(a,c){let l=c.requirement.type;e.inflight.get(l)?.delete(c.id),e.pending.get(l)?.delete(c.id),t();},onResolverError(a,c,l){let d=c.requirement.type;e.inflight.get(d)?.delete(c.id),n(e.failed,d).add(c.id),e.errors.set(d,l instanceof Error?l:new Error(String(l))),t();},onResolverCancel(a,c){let l=c.requirement.type;e.pending.get(l)?.delete(c.id),e.inflight.get(l)?.delete(c.id),t();},onRequirementMet(a){let c=a.requirement.type;e.pending.get(c)?.delete(a.id),e.inflight.get(c)?.delete(a.id),t();}},getStatus:r,getAllStatus:i,subscribe:s,reset:o}}function On(e){return t=>e.getStatus(t)}function jn(e){let t=Se(),r=[...e.plugins??[],t.plugin];return {system:chunk7ALP4OLB_cjs.a({module:e.module,plugins:r,trace:e.trace,errorBoundary:e.errorBoundary,tickMs:e.tickMs,zeroConfig:e.zeroConfig,initialFacts:e.initialFacts}),statusPlugin:t}}function Ge(){return {now:()=>Date.now(),setTimeout:(e,t)=>{let n=globalThis.setTimeout(e,t);return ()=>globalThis.clearTimeout(n)}}}function Pn(e=0){let t=e,n=0,r=[];return {now:()=>t,setTimeout:(i,s)=>{let o={id:n++,deadlineMs:t+s,cb:i,canceled:false};return r.push(o),()=>{o.canceled=true;}},advanceBy:i=>{let s=t+i;for(;;){let o=r.filter(a=>!a.canceled&&a.deadlineMs<=s).sort((a,c)=>a.deadlineMs!==c.deadlineMs?a.deadlineMs-c.deadlineMs:a.id-c.id);if(o.length===0)break;let u=o[0];t=Math.max(t,u.deadlineMs),u.canceled=true,u.cb();}t=Math.max(t,s);}}}function Fn(){return Ge()}function Te(){return {startedAtMs:null,pausedDurationMs:0,pausedAtMs:null,status:"idle",repeats:0}}function ee(e,t){return e.startedAtMs===null?0:e.status==="paused"&&e.pausedAtMs!==null?Math.max(0,e.pausedAtMs-e.startedAtMs-e.pausedDurationMs):Math.max(0,t-e.startedAtMs-e.pausedDurationMs)}function Ve(e,t,n){return Math.max(0,n-ee(e,t))}function et(e,t){return e.status==="running"||e.status==="paused"?e:{...e,startedAtMs:t,pausedDurationMs:0,pausedAtMs:null,status:"running",repeats:0}}function tt(e,t){return e.status!=="running"?e:{...e,pausedAtMs:t,status:"paused"}}function nt(e,t){if(e.status!=="paused"||e.pausedAtMs===null)return e;let n=Math.max(0,t-e.pausedAtMs);return {...e,pausedDurationMs:e.pausedDurationMs+n,pausedAtMs:null,status:"running"}}function rt(){return Te()}function it(e){return {...e,status:"completed"}}function ot(e,t){return e.startedAtMs===null||e.status==="paused"?e:{...e,startedAtMs:e.startedAtMs+t,pausedDurationMs:0,pausedAtMs:null,repeats:e.repeats+1}}function st(e,t,n){if(e.status!=="running")return {kind:"no-op"};let r=ee(e,t);return n.mode==="up"?{kind:"no-op"}:n.mode==="repeat"?r>=n.ms?{kind:"repeat"}:{kind:"no-op"}:r>=n.ms?{kind:"complete"}:{kind:"no-op"}}function Nn(e){return {initial:Te,start:et,pause:tt,resume:nt,reset:rt,complete:it,registerRepeat:t=>ot(t,e.ms),tick:(t,n)=>st(t,n,e),elapsedMs:ee,remainingMs:(t,n)=>Ve(t,n,e.ms)}}var Sr={None:"none",Linear:"linear",Exponential:"exponential"};Object.defineProperty(exports,"createAuditLedger",{enumerable:true,get:function(){return chunk4QCKAJCX_cjs.b}});Object.defineProperty(exports,"memorySink",{enumerable:true,get:function(){return chunk4QCKAJCX_cjs.a}});Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunk7ALP4OLB_cjs.a}});Object.defineProperty(exports,"DirectiveError",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.b}});Object.defineProperty(exports,"RequirementSet",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.o}});Object.defineProperty(exports,"forType",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.n}});Object.defineProperty(exports,"generateRequirementId",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.k}});Object.defineProperty(exports,"isNamespacedSystem",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.h}});Object.defineProperty(exports,"isRequirementType",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.m}});Object.defineProperty(exports,"isSingleModuleSystem",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.g}});Object.defineProperty(exports,"req",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.l}});Object.defineProperty(exports,"typedConstraint",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.e}});Object.defineProperty(exports,"typedResolver",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.f}});Object.defineProperty(exports,"applyPatch",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.v}});Object.defineProperty(exports,"evaluateKeySelector",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.u}});Object.defineProperty(exports,"evaluatePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.o}});Object.defineProperty(exports,"evaluatePredicateExplained",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.p}});Object.defineProperty(exports,"evaluateTemplate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.s}});Object.defineProperty(exports,"extractDeps",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.r}});Object.defineProperty(exports,"extractTemplateKeys",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.t}});Object.defineProperty(exports,"getKind",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.c}});Object.defineProperty(exports,"getOperatorsForKind",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.e}});Object.defineProperty(exports,"getSchemaFieldKinds",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.d}});Object.defineProperty(exports,"isPredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.h}});Object.defineProperty(exports,"isTemplate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.k}});Object.defineProperty(exports,"listAllPredicateOperators",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.f}});Object.defineProperty(exports,"memoizePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.q}});Object.defineProperty(exports,"validatePredicate",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.l}});Object.defineProperty(exports,"validatePredicateAgainstSchema",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.n}});Object.defineProperty(exports,"diffSnapshots",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.k}});Object.defineProperty(exports,"isSignedSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.l}});Object.defineProperty(exports,"isSnapshotExpired",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.i}});Object.defineProperty(exports,"shallowEqual",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.g}});Object.defineProperty(exports,"signSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.m}});Object.defineProperty(exports,"validateSnapshot",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.j}});Object.defineProperty(exports,"verifySnapshotSignature",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.n}});exports.Backoff=Sr;exports.MAX_REPLAY_FRAMES=A;exports.MAX_SWEEP_POINTS=ae;exports.completeTimer=it;exports.createModule=Ye;exports.createModuleFactory=xn;exports.createRequirementStatusPlugin=Se;exports.createStatusHook=On;exports.createSystemWithStatus=jn;exports.defaultClock=Fn;exports.describePredicate=Vt;exports.diffClauses=Oe;exports.diffRules=zt;exports.doctor=Zt;exports.elapsedMs=ee;exports.flattenPredicate=S;exports.framesFromHistory=Ce;exports.framesFromSnapshots=se;exports.initialTimerState=Te;exports.pauseTimer=tt;exports.predicateHash=Ht;exports.predicateToMongo=$n;exports.predicateToPostgrest=Tn;exports.predicateToSQL=pn;exports.predicateToWhere=gn;exports.predict=Qt;exports.realClock=Ge;exports.registerRepeat=ot;exports.remainingMs=Ve;exports.replayUnder=H;exports.resetTimer=rt;exports.resumeTimer=nt;exports.startTimer=et;exports.sweepUnder=qt;exports.t=vn;exports.tickTimer=st;exports.timerOps=Nn;exports.toReplayFrames=Re;exports.toRulesMap=ce;exports.virtualClock=Pn;//# sourceMappingURL=index.cjs.map | ||
| //# sourceMappingURL=index.cjs.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| export{b as createAuditLedger,a as memorySink}from'./chunk-WKCMOU2F.js';import {a as a$2}from'./chunk-43YXBRQC.js';export{a as createSystem}from'./chunk-43YXBRQC.js';export{b as DirectiveError,o as RequirementSet,n as forType,k as generateRequirementId,h as isNamespacedSystem,m as isRequirementType,g as isSingleModuleSystem,l as req,e as typedConstraint,f as typedResolver}from'./chunk-NEKZLX66.js';import {o,p as p$1,i,g,a as a$1,l,h as h$1,b as b$1}from'./chunk-O4GQEV4G.js';export{v as applyPatch,u as evaluateKeySelector,o as evaluatePredicate,p as evaluatePredicateExplained,s as evaluateTemplate,r as extractDeps,t as extractTemplateKeys,c as getKind,e as getOperatorsForKind,d as getSchemaFieldKinds,h as isPredicate,k as isTemplate,f as listAllPredicateOperators,q as memoizePredicate,l as validatePredicate,n as validatePredicateAgainstSchema}from'./chunk-O4GQEV4G.js';import {k as k$1}from'./chunk-3ETCZLAY.js';import {e,h,a}from'./chunk-PXRV64PA.js';export{k as diffSnapshots,l as isSignedSnapshot,i as isSnapshotExpired,g as shallowEqual,m as signSnapshot,j as validateSnapshot,n as verifySnapshotSignature}from'./chunk-PXRV64PA.js';var A=1e6;function Me(e,t){try{l(e);}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`[Directive] replayUnder: the ${t} predicate is invalid \u2014 ${i}`)}if(!h$1(e)){let r=e===null||typeof e!="object"?`${typeof e} \u2014 ${JSON.stringify(e)}`:JSON.stringify(e).slice(0,80);throw new Error(`[Directive] replayUnder: the ${t} predicate is not a valid FactPredicate (got ${r})`)}let n;if(i(e,{operator(r,i){n===void 0&&i.startsWith("$")&&!a$1.has(i)&&(n=i);},strayOperatorKey(r){n===void 0&&!a$1.has(r)&&!b$1.has(r)&&(n=r);}}),n!==void 0)throw new Error(`[Directive] replayUnder: the ${t} predicate uses an unknown operator "${n}" \u2014 known operators: ${[...a$1].join(", ")}`)}function Re(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.snapshots))return Ce(e);let t=Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.frames)?e.frames:null;if(!t)throw new Error("[Directive] toReplayFrames: history must be a JSON array of frames, an object with a `frames` array, or a history export with a `snapshots` array");if(t.length>A)throw new Error(`[Directive] toReplayFrames: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);return t.map((n,r)=>{if(n&&typeof n=="object"&&"facts"in n){let i=n,s={id:i.id??`#${r}`,facts:i.facts??{}};return typeof i.timestamp=="number"&&(s.timestamp=i.timestamp),s}return {id:`#${r}`,facts:n??{}}})}function Ce(e){let t=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(t))return se(t);if(!t||typeof t!="object")throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");let n=t;if(n.version!==void 0&&n.version!==1)throw new Error(`[Directive] framesFromHistory: unsupported history export version ${JSON.stringify(n.version)} \u2014 expected 1`);if(!Array.isArray(n.snapshots))throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");return se(n.snapshots)}function se(e){if(!Array.isArray(e))throw new Error("[Directive] framesFromSnapshots: expected an array of fact-state snapshots");if(e.length>A)throw new Error(`[Directive] framesFromSnapshots: history has ${e.length} snapshots, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);for(let t=0;t<e.length;t++){let n=e[t];if(!n||typeof n!="object"||!("facts"in n))throw new Error(`[Directive] framesFromSnapshots: snapshot at index ${t} is not a { facts, ... } object`)}return Re(e)}function H(e){let{frames:t,original:n,proposed:r,entityKey:i}=e,s=e.maxSamples??20,o$1=s>0?s:0;if(t.length>A)throw new Error(`[Directive] replayUnder: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);Me(n,"original"),Me(r,"proposed");let u=0,a=0,c=0,l=0,d=0,g=[],y=[],$=i?new Set:void 0,m=i?new Set:void 0,M;for(let F of t){let T=F.facts,v=o(n,T,M),R=o(r,T,M);v&&(u++,$?.add(T[i])),R&&(a++,m?.add(T[i])),v===R?d++:!v&&R?(c++,g.length<o$1&&g.push(De(F,n,r,M))):(l++,y.length<o$1&&y.push(De(F,n,r,M))),M=T;}let E={framesEvaluated:t.length,original:{matched:u},proposed:{matched:a},delta:a-u,newMatchCount:c,lostMatchCount:l,unchanged:d,newMatches:g,lostMatches:y};return $&&m&&(E.original.matchedEntities=$.size,E.proposed.matchedEntities=m.size),E}function De(e,t,n,r){let i=e.facts,s={frameId:e.id,facts:i,originalExplain:p$1(t,i,r),proposedExplain:p$1(n,i,r)};return e.timestamp!==void 0&&(s.timestamp=e.timestamp),s}var ae=1e4,Ae=5e7;function It(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===1&&typeof e.$hole=="string"}function ue(e,t,n=new Set,r=0){if(r>g)throw new Error(`[Directive] sweepUnder: template exceeds MAX_PREDICATE_DEPTH (${g}) \u2014 flatten the template or split the sweep`);if(It(e)){let i=e.$hole;if(!(i in t))throw new Error(`[Directive] sweepUnder: template references hole "${i}" but sweep has no values for it`);return t[i]}if(e===null||typeof e!="object")return e;if(n.has(e))throw new Error("[Directive] sweepUnder: template contains a cycle \u2014 predicate templates must be a tree");n.add(e);try{if(Array.isArray(e))return e.map(s=>ue(s,t,n,r+1));let i={};for(let[s,o]of Object.entries(e))i[s]=ue(o,t,n,r+1);return i}finally{n.delete(e);}}function*Ee(e,t){if(e.length===0){yield {};return}let n=e[0],r=e.slice(1),i=t[n]??[];for(let s of i)for(let o of Ee(r,t))yield {[n]:s,...o};}function Lt(e){let t=1;for(let n of Object.values(e))t*=n.length;return t}function qt(e){let{frames:t,original:n,template:r,sweep:i,objective:s=T=>T.proposed.matched,entityKey:o,maxSamples:u=0}=e,a=Object.keys(i);if(a.length===0)throw new Error("[Directive] sweepUnder: `sweep` must contain at least one hole name");let c=Lt(i);if(c>ae)throw new Error(`[Directive] sweepUnder: grid has ${c} points, exceeds the MAX_SWEEP_POINTS limit (${ae}) \u2014 narrow the sweep ranges or split the run`);if(c===0)throw new Error("[Directive] sweepUnder: at least one hole has zero candidate values");let l=c*t.length;if(l>Ae)throw new Error(`[Directive] sweepUnder: ${c} points \xD7 ${t.length} frames = ${l} per-frame evaluations, exceeds the MAX_SWEEP_EVALUATIONS limit (${Ae}) \u2014 narrow the sweep, down-sample the history, or split the run`);let d=false,g=T=>{let v;try{v=s(T);}catch(R){return d||(d=true,console.warn(`[Directive] sweepUnder: objective threw \u2014 point will not rank (${R.message})`)),Number.NEGATIVE_INFINITY}return typeof v!="number"||!Number.isFinite(v)?(d||(d=true,console.warn(`[Directive] sweepUnder: objective returned a non-finite number (${String(v)}) \u2014 point will not rank`)),Number.NEGATIVE_INFINITY):v},y=H({frames:t,original:n,proposed:n,entityKey:o,maxSamples:u}),$={values:{},report:y,score:g(y)},m=[],M=0,E=Number.NEGATIVE_INFINITY;for(let T of Ee(a,i)){let v=ue(r,T),R=H({frames:t,original:n,proposed:v,entityKey:o,maxSamples:u}),te=g(R);te>E&&(E=te,M=m.length),m.push({values:T,report:R,score:te});}let F=m[M];return {points:m,bestIndex:M,best:F,baseline:$}}function ce(e){let t=e&&typeof e=="object"&&!Array.isArray(e)&&"constraints"in e?e.constraints:e;if(Array.isArray(t)){let n={};for(let r of t){if(!r||typeof r!="object"||!("id"in r))throw new Error("[Directive] diffRules: array entries must be `{ id, whenSpec }` objects");let i=r;if(typeof i.id!="string")throw new Error("[Directive] diffRules: constraint `id` must be a string");n[i.id]=i.whenSpec;}return n}if(t&&typeof t=="object")return t;throw new Error("[Directive] diffRules: expected a `{ id: whenSpec }` map, an array of `{ id, whenSpec }`, or `{ constraints: ... }`")}var Wt=new Set(["$eq","$ne","$in","$nin","$exists","$gt","$gte","$lt","$lte","$between","$matches","$startsWith","$endsWith","$contains","$changed"]),Bt=new Set(["$all","$any","$not"]);function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ut(e){if(!xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;let n=false;for(let r of t){if(!r.startsWith("$"))return false;Wt.has(r)&&(n=true);}return n}function S(e,t="",n=[]){if(e===null||typeof e!="object")return n;if(Array.isArray(e)){for(let r of e)if(r&&typeof r=="object"&&"fact"in r&&"op"in r){let i=r;n.push({path:t?`${t}.${String(i.fact)}`:String(i.fact),op:String(i.op),value:i.value});}return n}if("$all"in e&&Array.isArray(e.$all))return e.$all.forEach((i,s)=>{S(i,`${t}$all[${s}]`,n);}),n;if("$any"in e&&Array.isArray(e.$any))return e.$any.forEach((i,s)=>{S(i,`${t}$any[${s}]`,n);}),n;if("$not"in e)return S(e.$not,`${t}$not`,n),n;for(let[r,i]of Object.entries(e)){let s=t?`${t}.${r}`:r;if(Ut(i))for(let[o,u]of Object.entries(i))n.push({path:s,op:o,value:u});else xe(i)&&!Bt.has(r)?S(i,s,n):n.push({path:s,op:"$eq",value:i});}return n}function C(e){return typeof e=="number"&&Number.isFinite(e)}function Kt(e,t,n){switch(e){case "$gte":case "$gt":if(C(t)&&C(n)){if(n<t)return "relaxed";if(n>t)return "tightened"}return null;case "$lte":case "$lt":if(C(t)&&C(n)){if(n>t)return "relaxed";if(n<t)return "tightened"}return null;case "$between":{if(Array.isArray(t)&&Array.isArray(n)&&t.length===2&&n.length===2&&C(t[0])&&C(t[1])&&C(n[0])&&C(n[1])){let r=t[1]-t[0],i=n[1]-n[0];if(i>r)return "relaxed";if(i<r)return "tightened"}return null}case "$in":case "$nin":{if(Array.isArray(t)&&Array.isArray(n))if(e==="$in"){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}else {if(n.length>t.length)return "tightened";if(n.length<t.length)return "relaxed"}return null}case "$contains":{if(Array.isArray(t)&&Array.isArray(n)){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}return null}default:return null}}function zt(e){let t=ce(e.before),n=ce(e.after),i=[...new Set([...Object.keys(t),...Object.keys(n)])].sort(),s=[],o={added:0,removed:0,changed:0,unchanged:0,totalClauseChanges:0};for(let u of i){let a=t[u],c=n[u],l=u in t,d=u in n;if(l&&!d){let y=S(a),$=y.length===0?[{path:"(function-form predicate)",kind:"removed"}]:y.map(m=>({path:m.path,kind:"removed",before:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"removed",changes:$}),o.removed++,o.totalClauseChanges+=$.length;continue}if(!l&&d){let y=S(c),$=y.length===0?[{path:"(function-form predicate)",kind:"added"}]:y.map(m=>({path:m.path,kind:"added",after:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"added",changes:$}),o.added++,o.totalClauseChanges+=$.length;continue}let g=Oe(a,c);g.length===0?(s.push({id:u,status:"unchanged",changes:[]}),o.unchanged++):(s.push({id:u,status:"changed",changes:g}),o.changed++,o.totalClauseChanges+=g.length);}return {constraints:s,summary:o}}function Oe(e$1,t){if(e$1!==void 0&&t!==void 0&&(e$1===null||t===null||typeof e$1!="object"||typeof t!="object"))return e(e$1)===e(t)?[]:[{path:"",kind:"changed",before:{op:"$eq",value:e$1},after:{op:"$eq",value:t}}];let n=e$1===void 0?[]:S(e$1),r=t===void 0?[]:S(t),i=c=>`${c.path}::${c.op}`,s=new Map(n.map(c=>[i(c),c])),o=new Map(r.map(c=>[i(c),c])),u=new Set([...s.keys(),...o.keys()]),a=[];for(let c of u){let l=s.get(c),d=o.get(c);if(l&&!d){a.push({path:l.path,kind:"removed",before:{op:l.op,value:l.value}});continue}if(!l&&d){a.push({path:d.path,kind:"added",after:{op:d.op,value:d.value}});continue}if(l&&d){if(e(l.value)===e(d.value))continue;let g=Kt(l.op,l.value,d.value);a.push({path:l.path,kind:g??"changed",before:{op:l.op,value:l.value},after:{op:d.op,value:d.value}});}}return le(a),a}function le(e){e.sort((t,n)=>{let r=t.path.localeCompare(n.path);if(r!==0)return r;let i=t.before?.op??t.after?.op??"",s=n.before?.op??n.after?.op??"";return i.localeCompare(s)});}function Ht(e){return h(e)}function J(e){return e===null?"null":e===void 0?"undefined":e instanceof Date?e.toISOString():typeof e=="string"||typeof e=="object"?JSON.stringify(e):String(e)}function Jt(e){let t=e.path,n=J(e.expected),r=J(e.actual);switch(e.op){case "$eq":return `set ${t} to ${n} (currently ${r})`;case "$ne":return `change ${t} to anything other than ${n} (currently ${r})`;case "$gt":return `set ${t} above ${n} (currently ${r})`;case "$gte":return `set ${t} to at least ${n} (currently ${r})`;case "$lt":return `set ${t} below ${n} (currently ${r})`;case "$lte":return `set ${t} to at most ${n} (currently ${r})`;case "$in":return `set ${t} to one of ${n} (currently ${r})`;case "$nin":return `set ${t} to something other than ${n} (currently ${r})`;case "$exists":return e.expected===true?`set ${t} to a non-null value (currently null/missing)`:`unset ${t} (currently ${r})`;case "$between":return Array.isArray(e.expected)&&e.expected.length===2?`set ${t} between ${J(e.expected[0])} and ${J(e.expected[1])} (currently ${r})`:`set ${t} within range ${n} (currently ${r})`;case "$startsWith":return `set ${t} to start with ${n} (currently ${r})`;case "$endsWith":return `set ${t} to end with ${n} (currently ${r})`;case "$contains":return `set ${t} to contain ${n} (currently ${r})`;case "$matches":return `set ${t} to match the pattern ${n} (currently ${r})`;case "$changed":return `the previous-vs-current change of ${t} is required to differ (currently they match: ${r})`;case "$all":case "$any":case "$not":return `the ${e.op} group at "${t}" did not pass \u2014 see its child clauses`;default:return `clause at ${t} (${e.op}) failed: expected ${n}, got ${r}`}}function je(e,t){for(let n of e)if(!n.pass){if((n.op==="$all"||n.op==="$any"||n.op==="$not")&&n.children){je(n.children,t);continue}t.push({path:n.path,op:n.op,expected:n.expected,actual:n.actual,suggestion:Jt(n)});}}function Qt(e,t,n){let r=p$1(e,t,n),i$1=r.every(o=>o.pass),s=[];if(i$1||je(r,s),!i$1&&n===void 0){let o=[];i(e,{operator(u,a){a==="$changed"&&o.push(u);}});for(let u of o)s.push({path:u,op:"$changed",expected:true,actual:void 0,suggestion:`$changed clause at "${u}" cannot be evaluated without a \`prev\` snapshot \u2014 pass predict(predicate, facts, prev).`});}return {wouldFire:i$1,whenExplain:r,missingChanges:s}}var Pe=new Set(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"]);function Q(e,t){if(e===t)return 0;if(typeof e=="number"&&typeof t=="number"||typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),r=t.getTime();return n<r?-1:n>r?1:0}return typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function _(e,t){if(e===t)return true;if(typeof e!=typeof t||e===null||t===null||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!_(e[i],t[i]))return false;return true}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let i of n)if(!_(e[i],t[i]))return false;return true}function Xt(e,t){if(!Pe.has(e.op)||!Pe.has(t.op))return {type:"overlap",reason:`Both rules touch "${e.path}".`};if(e.op==="$eq"&&t.op==="$eq")return _(e.value,t.value)?{type:"subset",reason:`Both rules require ${e.path} = ${JSON.stringify(e.value)} \u2014 candidate is redundant.`}:{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires ${e.path} = ${JSON.stringify(t.value)} \u2014 they cannot both fire.`};if(e.op==="$eq"&&t.op==="$ne")return _(e.value,t.value)?{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule excludes that value.`}:null;if(e.op==="$ne"&&t.op==="$eq")return _(e.value,t.value)?{type:"direct",reason:`Candidate excludes ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires that exact value.`}:null;if(e.op==="$in"&&t.op==="$in"){let o=new Set(Array.isArray(e.value)?e.value:[]),u=new Set(Array.isArray(t.value)?t.value:[]),a=[...o].filter(c=>u.has(c));return a.length===0?{type:"direct",reason:`Candidate $in set for ${e.path} (${JSON.stringify([...o])}) and existing $in set (${JSON.stringify([...u])}) have no values in common \u2014 the candidate can never fire while the existing rule holds.`}:a.length===o.size&&a.length<u.size?{type:"subset",reason:`Candidate $in set for ${e.path} is a strict subset of the existing rule's $in set.`}:null}let n=e.op==="$gt"||e.op==="$gte"?e.value:void 0,r=e.op==="$lt"||e.op==="$lte"?e.value:void 0,i=t.op==="$gt"||t.op==="$gte"?t.value:void 0,s=t.op==="$lt"||t.op==="$lte"?t.value:void 0;if(n!==void 0&&s!==void 0){let o=Q(n,s);if(!Number.isNaN(o)&&(o>0||o===0&&(e.op==="$gt"||t.op==="$lt")))return {type:"direct",reason:`Candidate requires ${e.path} ${e.op==="$gt"?">":"\u2265"} ${JSON.stringify(n)} but an existing rule caps it at ${t.op==="$lt"?"<":"\u2264"} ${JSON.stringify(s)}.`}}if(i!==void 0&&r!==void 0){let o=Q(i,r);if(!Number.isNaN(o)&&(o>0||o===0&&(t.op==="$gt"||e.op==="$lt")))return {type:"direct",reason:`Candidate caps ${e.path} at ${e.op==="$lt"?"<":"\u2264"} ${JSON.stringify(r)} but an existing rule requires it ${t.op==="$gt"?">":"\u2265"} ${JSON.stringify(i)}.`}}if(n!==void 0&&i!==void 0){let o=Q(n,i);if(!Number.isNaN(o)&&o>0)return {type:"subset",reason:`Candidate's lower bound on ${e.path} (${JSON.stringify(n)}) is stricter than the existing rule's lower bound (${JSON.stringify(i)}) \u2014 candidate is a subset.`}}if(r!==void 0&&s!==void 0){let o=Q(r,s);if(!Number.isNaN(o)&&o<0)return {type:"subset",reason:`Candidate's upper bound on ${e.path} (${JSON.stringify(r)}) is stricter than the existing rule's upper bound (${JSON.stringify(s)}) \u2014 candidate is a subset.`}}return {type:"overlap",reason:`Both rules constrain "${e.path}".`}}function Fe(e){return typeof e=="object"&&e!==null&&typeof e.id=="string"}var Zt={checkAgainst(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {contradictions:[],warnings:[]};let i=new Map;for(let u of r){let a=i.get(u.path)??[];a.push(u),i.set(u.path,a);}let s=[],o=[];for(let u of n){if(!Fe(u)||u.whenSpec===void 0)continue;let a=S(u.whenSpec);for(let c of a){let l=i.get(c.path);if(l)for(let d of l){let g=Xt(d,c);if(!g)continue;let y={constraintId:u.id,type:g.type,reason:g.reason,candidatePath:d.path,candidate:{op:d.op,value:d.value},existing:{op:c.op,value:c.value}};g.type==="overlap"||g.type==="subset"?o.push(y):s.push(y);}}}return {contradictions:s,warnings:o}},checkOwns(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {warnings:[]};let i=new Set(r.map(o=>o.path)),s=[];for(let o of n){if(!Fe(o))continue;let u=Array.isArray(o.owns)?o.owns:[],a=Array.isArray(o.bind)?o.bind:[];for(let c of u)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"owns",reason:`Constraint "${o.id}" already owns "${c}" \u2014 candidate would race or shadow its writes.`,severity:"warning"});for(let c of a)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"bind",reason:`Constraint "${o.id}" binds "${c}" \u2014 candidate would write to a bound field.`,severity:"warning"});}return {warnings:s}}};var I=new Map,Yt=50;function Gt(e){let t=I.get(e);if(!t){try{t=new Intl.NumberFormat(e);}catch{t=new Intl.NumberFormat("en-US");}if(I.size>=Yt){let n=I.keys().next().value;n!==void 0&&I.delete(n);}I.set(e,t);}return t}function Vt(e,t={}){let n=t.style??"natural",r=t.parenthesize??true,i=t.locale??"en-US",s=t.factName??(a=>a);if(e===null||typeof e!="object")return "<invalid predicate>";let o={style:n,parenthesize:r,locale:i,factName:s,seen:new WeakSet,cycle:false},u=X(e,o,0);return o.cycle?"<invalid predicate: cycle>":u}var Ie=" AND ",en=" OR ",tn="NOT",Le=" \u2227 ",nn=" \u2228 ",rn="\xAC";function q(e){return typeof e!="object"||e===null||Array.isArray(e)?false:!(e instanceof Date)&&!(e instanceof RegExp)}function on(e){if(!q(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function X(e,t,n){if(n>g)return a&&console.warn(`[Directive] describePredicate: depth limit (${g}) exceeded \u2014 bailing.`),t.style==="formal"?"\u22A5":"always true";if(Array.isArray(e))return sn(e,t);if(!q(e))return f(e,t);if(t.seen.has(e))return t.cycle=true,"<invalid predicate: cycle>";t.seen.add(e);let r=e,i=Object.keys(r);for(let o of ["$all","$any","$not"])if(o in r)return an(o,r[o],t,n);let s=[];for(let o of i)o.startsWith("$")||s.push(qe(o,r[o],t,n));return Z(s,t)}function sn(e,t,n){let r=[];for(let i of e){if(!q(i))continue;let s=i;typeof s.fact!="string"||typeof s.op!="string"||r.push(L(s.fact,s.op,s.value,t));}return r.length===0?t.style==="formal"?"\u22A4":"always true":Z(r,t)}function an(e,t,n,r){if(e==="$not"){if(q(t)&&Object.keys(t).length===0)return n.style==="formal"?"\u22A5":"never";let o=X(t,n,r+1);return o==="always true"?"never":o==="\u22A4"?"\u22A5":`${n.style==="formal"?rn:`${tn} `}(${o})`}if(!Array.isArray(t))return n.style==="formal"?"\u22A5":"<invalid predicate>";if(t.length===0)return e==="$all"?n.style==="formal"?"\u22A4":"always true":n.style==="formal"?"\u22A5":"never";let i=[];for(let o of t){let u=X(o,n,r+1);i.push(u);}if(i.length===1)return i[0];let s=n.parenthesize?i.map(o=>`(${o})`):i;return e==="$all"?s.join(n.style==="formal"?Le:Ie):s.join(n.style==="formal"?nn:en)}function qe(e,t,n,r){if(on(t)){let i=t,s=Object.keys(i);if(s.length===1)return L(e,s[0],i[s[0]],n);let o=s.map(u=>L(e,u,i[u],n));return Z(o,n)}if(q(t)){let i=t;if("$all"in i||"$any"in i||"$not"in i)return X(t,n,r+1);let o=[];for(let u of Object.keys(i))u.startsWith("$")||o.push(qe(`${e}.${u}`,i[u],n,r+1));return o.length===0?L(e,"$eq",t,n):Z(o,n)}return L(e,"$eq",t,n)}function L(e,t,n,r){let i=r.style==="formal"?e:r.factName(e);return r.style==="formal"?cn(i,t,n,r):un(i,t,n,r)}function un(e,t,n,r){switch(t){case "$eq":return n===null?`${e} is null`:`${e} is ${f(n,r)}`;case "$ne":return n===null?`${e} is not null`:`${e} is not ${f(n,r)}`;case "$gt":return `${e} is more than ${f(n,r)}`;case "$gte":return `${e} is at least ${f(n,r)}`;case "$lt":return `${e} is less than ${f(n,r)}`;case "$lte":return `${e} is at most ${f(n,r)}`;case "$in":return `${e} is one of ${Ne(n,r)}`;case "$nin":return `${e} is not one of ${Ne(n,r)}`;case "$exists":return n===true?`${e} is set`:`${e} is not set`;case "$between":return Array.isArray(n)&&n.length===2?`${e} is between ${f(n[0],r)} and ${f(n[1],r)}`:`${e} is between ${f(n,r)}`;case "$startsWith":return `${e} starts with ${O(n,r,true)}`;case "$endsWith":return `${e} ends with ${O(n,r,true)}`;case "$contains":return `${e} contains ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} matches ${n.toString()}`:`${e} matches ${f(n,r)}`;case "$changed":return `${e} changed`;default:return a&&!a$1.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function cn(e,t,n,r){switch(t){case "$eq":return `${e} = ${f(n,r)}`;case "$ne":return `${e} \u2260 ${f(n,r)}`;case "$gt":return `${e} > ${f(n,r)}`;case "$gte":return `${e} \u2265 ${f(n,r)}`;case "$lt":return `${e} < ${f(n,r)}`;case "$lte":return `${e} \u2264 ${f(n,r)}`;case "$in":return `${e} \u2208 {${_e(n,r)}}`;case "$nin":return `${e} \u2209 {${_e(n,r)}}`;case "$exists":return n===true?`\u2203 ${e}`:`\u2204 ${e}`;case "$between":return Array.isArray(n)&&n.length===2?`${f(n[0],r)} \u2264 ${e} \u2264 ${f(n[1],r)}`:`${e} \u2208 [${f(n,r)}]`;case "$startsWith":return `${e} ^= ${O(n,r,true)}`;case "$endsWith":return `${e} $= ${O(n,r,true)}`;case "$contains":return `${e} \u2287 ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} ~ ${n.toString()}`:`${e} ~ ${f(n,r)}`;case "$changed":return `\u0394${e}`;default:return a&&!a$1.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function Y(e){return e.length===0?true:/[\s,"']/.test(e)}function O(e,t,n){return typeof e!="string"||n||Y(e)?JSON.stringify(e):e}function f(e,t){if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))return String(e);try{return Gt(t.locale).format(e)}catch{return String(e)}}if(typeof e=="bigint")return t.style==="formal"?`${e.toString()}n`:e.toString();if(typeof e=="string")return t.style==="formal"||Y(e)?JSON.stringify(e):e;if(e instanceof Date)return e.toISOString();if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return `[${e.map(n=>f(n,t)).join(", ")}]`;if(typeof e=="object")try{return JSON.stringify(e)}catch{return "[object]"}return String(e)}function Ne(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function _e(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function Z(e,t){if(e.length===0)return t.style==="formal"?"\u22A4":"always true";if(e.length===1)return e[0];let n=t.style==="formal"?Le:Ie;return t.parenthesize,e.join(n)}var ln=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/;function B(e,t){if(typeof e!="string"||!ln.test(e))throw new Error(`[Directive] predicateToSQL: invalid ${t} identifier "${e}" \u2014 must match /^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?$/`)}function We(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToSQL: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function dn(e){if(Array.isArray(e)){if(e.length===0)throw new Error("[Directive] predicateToSQL: select must not be empty");for(let n of e)B(n,"column");return e.join(", ")}let t=e;return t==="*"?"*":(B(t,"column"),t)}function b(e,t){return e.params.push(t),e.placeholder(e.params.length)}function de(e,t,n,r){switch(t){case "$eq":return `${e} = ${b(r,n)}`;case "$ne":return `${e} <> ${b(r,n)}`;case "$gt":return `${e} > ${b(r,n)}`;case "$gte":return `${e} >= ${b(r,n)}`;case "$lt":return `${e} < ${b(r,n)}`;case "$lte":return `${e} <= ${b(r,n)}`;case "$in":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $in operand must be an array");return `${e} = ANY(${b(r,n)})`;case "$nin":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $nin operand must be an array");return `NOT (${e} = ANY(${b(r,n)}))`;case "$exists":return n===true?`${e} IS NOT NULL`:`${e} IS NULL`;case "$between":{if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToSQL: $between operand must be a [low, high] tuple");return `${e} BETWEEN ${b(r,n[0])} AND ${b(r,n[1])}`}case "$startsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $startsWith operand must be a string");return `${e} LIKE ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$endsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $endsWith operand must be a string");return `${e} LIKE '%' || ${b(r,fe(n))} ESCAPE '\\'`;case "$contains":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $contains only supports string operands \u2014 array containment requires a JOIN, not a predicate");return `${e} LIKE '%' || ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$matches":{if(!(n instanceof RegExp))throw new Error("[Directive] predicateToSQL: $matches operand must be a RegExp");let i=n.flags.includes("i")?"~*":"~";return `${e} ${i} ${b(r,n.source)}`}case "$changed":throw new Error('[Directive] predicateToSQL: $changed is an effects-only operator \u2014 no server-side translation (a database row has no "prev" snapshot)');default:throw new Error(`[Directive] predicateToSQL: unknown operator "${t}" \u2014 known: ${[...a$1].join(", ")}`)}}function fe(e){return e.replace(/[\\%_]/g,"\\$&")}function Be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function fn(e){if(!Be(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function pe(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToSQL: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function W(e,t,n){if(n>g)throw new Error(`[Directive] predicateToSQL: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToSQL: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return "TRUE";let i=e.map(s=>{if(!s||typeof s!="object"||!("fact"in s)||!("op"in s))throw new Error("[Directive] predicateToSQL: array-form clause must be { fact, op, value }");let o=s;return B(o.fact,"column"),We(o.fact,t.allowed),de(o.fact,o.op,o.value,t)});return i.length===1?i[0]:`(${i.join(" AND ")})`}if("$all"in e){pe(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $all must be an array");if(i.length===0)return "TRUE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" AND ")})`}if("$any"in e){pe(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $any must be an array");if(i.length===0)return "FALSE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" OR ")})`}if("$not"in e){pe(e,"$not");let i=e.$not;return `NOT (${W(i,t,n+1)})`}let r=[];for(let[i,s]of Object.entries(e))if(B(i,"column"),We(i,t.allowed),fn(s))for(let[o,u]of Object.entries(s)){if(!a$1.has(o))throw new Error(`[Directive] predicateToSQL: unknown operator "${o}" on column "${i}" \u2014 known: ${[...a$1].join(", ")}`);r.push(de(i,o,u,t));}else {if(Be(s))throw new Error(`[Directive] predicateToSQL: nested predicate at "${i}" \u2014 cross-module / partial-match predicates have no SQL equivalent (single-table queries only in v1; pass a flat predicate or build JOIN by hand with predicateToWhere)`);r.push(de(i,"$eq",s,t));}return r.length===0?"TRUE":r.length===1?r[0]:`(${r.join(" AND ")})`}var Ue=e=>`$${e}`;function pn(e,t){let{table:n,allowedKeys:r}=t,i=t.placeholder??Ue,s=t.select??"*";B(n,"table");let o=dn(s),u={params:[],placeholder:i,allowed:r},a=W(e,u,0);return {sql:`SELECT ${o} FROM ${n} WHERE ${a}`,where:a,params:u.params}}function gn(e,t={}){let n=t.placeholder??Ue,r={params:[],placeholder:n,allowed:t.allowedKeys};return {where:W(e,r,0),params:r.params}}function ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function he(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function yn(e){if(!he(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}var hn=/^[A-Za-z_][A-Za-z0-9_]*$/,mn=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*$/;function Ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`[Directive] predicateToMongo: field name must be a non-empty string, got ${typeof e}`);if(e.startsWith("$"))throw new Error(`[Directive] predicateToMongo: field name "${e}" starts with "$" \u2014 reserved for Mongo operators (a top-level $where would be an injection vector)`);if(!(t.allowDottedPaths?mn:hn).test(e))throw new Error(`[Directive] predicateToMongo: invalid field name "${e}"${t.allowDottedPaths?"":' \u2014 pass options.allowDottedPaths=true to permit sub-document paths like "user.role"'}`)}function ze(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToMongo: field "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function ye(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToMongo: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function He(e,t){switch(e){case "$eq":case "$ne":case "$gt":case "$gte":case "$lt":case "$lte":case "$in":case "$nin":case "$exists":return {[e]:t};case "$between":{if(!Array.isArray(t)||t.length!==2)throw new Error("[Directive] predicateToMongo: $between operand must be a [low, high] tuple");return {$gte:t[0],$lte:t[1]}}case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $startsWith operand must be a string");return {$regex:`^${ge(t)}`};case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $endsWith operand must be a string");return {$regex:`${ge(t)}$`};case "$contains":if(typeof t=="string")return {$regex:ge(t)};throw new Error("[Directive] predicateToMongo: $contains in Mongo expects a string operand \u2014 for array element membership use $elemMatch or $in directly");case "$matches":{if(t instanceof RegExp)return t.flags?{$regex:t.source,$options:t.flags}:{$regex:t.source};if(typeof t=="string")return {$regex:t};throw new Error("[Directive] predicateToMongo: $matches operand must be a RegExp or string")}case "$changed":throw new Error("[Directive] predicateToMongo: $changed is an effects-only operator \u2014 no MongoDB query equivalent");default:throw new Error(`[Directive] predicateToMongo: unknown operator "${e}" \u2014 known: ${[...a$1].join(", ")}`)}}function j(e,t,n){if(n>g)throw new Error(`[Directive] predicateToMongo: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToMongo: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return {};let i={},s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToMongo: array-form clause must be { fact, op, value }");let u=o;Ke(u.fact,t),ze(u.fact,t.allowedKeys);let a=He(u.op,u.value);if(u.fact in i&&he(i[u.fact])){let c=i[u.fact];Object.keys(a).some(d=>d in c)?s.push({[u.fact]:a}):i[u.fact]={...c,...a};}else u.fact in i?s.push({[u.fact]:a}):i[u.fact]=a;}if(s.length>0){let o=[];for(let[u,a]of Object.entries(i))o.push({[u]:a});return o.push(...s),{$and:o}}return i}if("$all"in e){ye(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $all must be an array");return i.length===0?{}:i.length===1?j(i[0],t,n+1):{$and:i.map(s=>j(s,t,n+1))}}if("$any"in e){ye(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $any must be an array");return i.length===0?{$expr:{$eq:[1,0]}}:i.length===1?j(i[0],t,n+1):{$or:i.map(s=>j(s,t,n+1))}}if("$not"in e){ye(e,"$not");let i=e.$not;return {$nor:[j(i,t,n+1)]}}let r={};for(let[i,s]of Object.entries(e))if(Ke(i,t),ze(i,t.allowedKeys),yn(s)){let o={};for(let[u,a]of Object.entries(s)){if(!a$1.has(u))throw new Error(`[Directive] predicateToMongo: unknown operator "${u}" on field "${i}" \u2014 known: ${[...a$1].join(", ")}`);Object.assign(o,He(u,a));}r[i]=o;}else r[i]=s;return r}function $n(e,t={}){return j(e,t,0)}var wn=/^[A-Za-z_][A-Za-z0-9_]*$/;function Je(e,t){if(typeof e!="string"||!wn.test(e))throw new Error(`[Directive] predicateToPostgrest: invalid column identifier "${e}"`);if(t&&!t.includes(e))throw new Error(`[Directive] predicateToPostgrest: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function me(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToPostgrest: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function k(e){if(e==null)return "null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"||typeof e=="bigint")return String(e);if(e instanceof Date)return e.toISOString();if(typeof e=="string")return /[,.():"\\\s]/.test(e)?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:e;throw new Error(`[Directive] predicateToPostgrest: cannot encode value of type ${typeof e}`)}function Qe(e){return `(${e.map(k).join(",")})`}function $e(e){return e.replace(/[\\%_*]/g,"\\$&")}function P(e,t){switch(e){case "$eq":return `eq.${k(t)}`;case "$ne":return `neq.${k(t)}`;case "$gt":return `gt.${k(t)}`;case "$gte":return `gte.${k(t)}`;case "$lt":return `lt.${k(t)}`;case "$lte":return `lte.${k(t)}`;case "$in":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $in operand must be an array");return `in.${Qe(t)}`;case "$nin":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $nin operand must be an array");return `not.in.${Qe(t)}`;case "$exists":return t===true?"not.is.null":"is.null";case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $startsWith operand must be a string");return `like.${k(`${$e(t)}*`)}`;case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $endsWith operand must be a string");return `like.${k(`*${$e(t)}`)}`;case "$contains":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $contains expects a string operand (array containment is the cs operator with a different shape \u2014 out of scope for v1)");return `like.${k(`*${$e(t)}*`)}`;case "$matches":if(t instanceof RegExp)return `${t.flags.includes("i")?"imatch":"match"}.${k(t.source)}`;if(typeof t=="string")return `match.${k(t)}`;throw new Error("[Directive] predicateToPostgrest: $matches operand must be a RegExp or string");case "$changed":throw new Error("[Directive] predicateToPostgrest: $changed is an effects-only operator \u2014 no server query equivalent");default:throw new Error(`[Directive] predicateToPostgrest: unknown operator "${e}" \u2014 known: ${[...a$1].join(", ")}`)}}function Xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function bn(e){if(!Xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function we(e,t){return `${e}=${t}`}function G(e,t){return `${e}=(${t.join(",")})`}function be(e,t,n,r){if(t==="$between"){if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToPostgrest: $between operand must be a [low, high] tuple");let i=r?we(e,P("$gte",n[0])):`${e}.${P("$gte",n[0])}`,s=r?we(e,P("$lte",n[1])):`${e}.${P("$lte",n[1])}`;return [i,s]}return [r?we(e,P(t,n)):`${e}.${P(t,n)}`]}function U(e,t,n,r){if(r>g)throw new Error(`[Directive] predicateToPostgrest: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error("[Directive] predicateToPostgrest: predicate must be an object or array");if(Array.isArray(e)){let s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToPostgrest: array-form clause must be { fact, op, value }");let u=o;Je(u.fact,t),s.push(...be(u.fact,u.op,u.value,n));}return s}if("$all"in e){me(e,"$all");let s=e.$all;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $all must be an array");if(n){let u=[];for(let a of s)u.push(...U(a,t,true,r+1));return u}let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("and",o)]}if("$any"in e){me(e,"$any");let s=e.$any;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $any must be an array");if(s.length===0)return n?["id=is.null","id=not.is.null"]:[G("and",["id.is.null","id.not.is.null"])];let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("or",o)]}if("$not"in e){me(e,"$not");let s=e.$not,o=U(s,t,false,r+1);return [G("not.and",o)]}let i=[];for(let[s,o]of Object.entries(e))if(Je(s,t),bn(o))for(let[u,a]of Object.entries(o)){if(!a$1.has(u))throw new Error(`[Directive] predicateToPostgrest: unknown operator "${u}" on column "${s}" \u2014 known: ${[...a$1].join(", ")}`);i.push(...be(s,u,a,n));}else {if(Xe(o))throw new Error(`[Directive] predicateToPostgrest: nested predicate at "${s}" \u2014 single-table queries only`);i.push(...be(s,"$eq",o,n));}return i}function Sn(e){let t=e.indexOf("=");if(t<0)return encodeURIComponent(e);let n=e.slice(0,t),r=e.slice(t+1);return `${n}=${encodeURIComponent(r)}`}function Tn(e,t={}){let n=t.mode??"querystring",r=U(e,t.allowedKeys,true,0);return r.length===0?"":n==="raw"?r.join("&"):r.map(Sn).join("&")}function V(e=[],t,n,r,i,s,o){return {_type:void 0,_validators:e,_typeName:t,_default:n,_transform:r,_description:i,_refinements:s,_meta:o,validate(u){return V([...e,u],t,n,r,i,s,o)}}}function p(e,t,n,r,i,s,o){return {...V(e,t,n,r,i,s,o),default(a){return p(e,t,a,r,i,s,o)},transform(a){return p([],t,void 0,l=>{let d=r?r(l):l;return a(d)},i,void 0,o)},brand(){return p(e,`Branded<${t}>`,n,r,i,s,o)},describe(a){return p(e,t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return p([...e,a],t,n,r,i,l,o)},nullable(){return p([a=>a===null||e.every(c=>c(a))],`${t} | null`,n,r,i,void 0,o)},optional(){return p([a=>a===void 0||e.every(c=>c(a))],`${t} | undefined`,n,r,i,void 0,o)},meta(a){return p(e,t,n,r,i,s,a)}}}var kn=((...e)=>{if(e.length===0)return p([],"union");let t=e.map(n=>n._typeName??"unknown");return p([n=>e.some(r=>r._validators.every(i=>i(n)))],t.join(" | "))}),vn={string(){let e=(t,n,r,i,s,o)=>({...p(t,"string",n,r,i,s,o),minLength(a){return e([...t,c=>c.length>=a],n,r,i,s,o)},maxLength(a){return e([...t,c=>c.length<=a],n,r,i,s,o)},pattern(a){return e([...t,c=>a.test(c)],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="string"])},number(){let e=(t,n,r,i,s,o)=>({...p(t,"number",n,r,i,s,o),min(a){return e([...t,c=>c>=a],n,r,i,s,o)},max(a){return e([...t,c=>c<=a],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="number"])},boolean(){return p([e=>typeof e=="boolean"],"boolean")},array(){let e=(t,n,r,i,s,o)=>{let u=p(t,"array",r,void 0,i,void 0,o),a=s??{value:-1};return {...u,get _lastFailedIndex(){return a.value},set _lastFailedIndex(l){a.value=l;},of(l){let d={value:-1};return e([...t,g=>{for(let y=0;y<g.length;y++)if(!l._validators.every($=>$(g[y])))return d.value=y,false;return true}],l,r,i,d,o)},nonEmpty(){return e([...t,l=>l.length>0],n,r,i,a,o)},maxLength(l){return e([...t,d=>d.length<=l],n,r,i,a,o)},minLength(l){return e([...t,d=>d.length>=l],n,r,i,a,o)},default(l){return e(t,n,l,i,a,o)},describe(l){return e(t,n,r,l,a,o)},meta(l){return e(t,n,r,i,a,l)}}};return e([t=>Array.isArray(t)])},object(){let e=(t,n,r,i)=>({...p(t,"object",n,void 0,r,void 0,i),shape(o){return e([...t,u=>{for(let[a,c]of Object.entries(o)){let l=u[a],d=c;if(d&&!d._validators.every(g=>g(l)))return false}return true}],n,r,i)},nonNull(){return e([...t,o=>o!=null],n,r,i)},hasKeys(...o){return e([...t,u=>o.every(a=>a in u)],n,r,i)},default(o){return e(t,o,r,i)},describe(o){return e(t,n,o,i)},meta(o){return e(t,n,r,o)}});return e([t=>typeof t=="object"&&t!==null&&!Array.isArray(t)])},enum(...e){a&&e.length===0&&console.warn("[Directive] t.enum() called with no values - this will reject all strings");let t=new Set(e);return p([n=>typeof n=="string"&&t.has(n)],`enum(${e.join("|")})`)},literal(e){return p([t=>t===e],`literal(${String(e)})`)},nullable(e){let t=e._typeName??"unknown";return V([n=>n===null?true:e._validators.every(r=>r(n))],`${t} | null`)},optional(e){let t=e._typeName??"unknown";return V([n=>n===void 0?true:e._validators.every(r=>r(n))],`${t} | undefined`)},union:kn,record(e){let t=e._typeName??"unknown";return p([n=>typeof n!="object"||n===null||Array.isArray(n)?false:Object.values(n).every(r=>e._validators.every(i=>i(r)))],`Record<string, ${t}>`)},tuple(...e){a&&e.length===0&&console.warn("[Directive] t.tuple() called with no types - this will only accept empty arrays");let t=e.map(n=>n._typeName??"unknown");return p([n=>!Array.isArray(n)||n.length!==e.length?false:e.every((r,i)=>r._validators.every(s=>s(n[i])))],`[${t.join(", ")}]`)},date(){return p([e=>e instanceof Date&&!Number.isNaN(e.getTime())],"Date")},uuid(){let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return p([t=>typeof t=="string"&&e.test(t)],"uuid")},email(){let e=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return p([t=>typeof t=="string"&&e.test(t)],"email")},url(){return p([e=>{if(typeof e!="string")return false;try{return new URL(e),!0}catch{return false}}],"url")},bigint(){return p([e=>typeof e=="bigint"],"bigint")},any(){return p([],"any")},unknown(){return p([],"unknown")}};function Mn(e){if(!e||typeof e!="string"){console.warn("[Directive] Module ID must be a non-empty string");return}/^(__[a-z][a-z0-9_-]*|[a-z][a-z0-9-]*)$/i.test(e)||console.warn(`[Directive] Module ID "${e}" should follow kebab-case convention (e.g., "my-module")`);}function Ze(e,t,n,r,i){for(let s of e)t.has(s)||console.warn(`[Directive] ${n} "${s}" not declared in ${r}`);for(let s of t)e.has(s)||console.warn(`[Directive] ${r}["${s}"] ${i}`);}function Dn(e,t){e.length===0&&console.warn("[Directive] history.snapshotEvents is an empty array \u2014 no events will create history snapshots. Omit history.snapshotEvents entirely to snapshot all events, or list specific events.");let n=new Set(Object.keys(t));for(let r of e)n.has(r)||console.warn(`[Directive] history.snapshotEvents entry "${r}" not declared in schema.events. Available events: ${[...n].join(", ")||"(none)"}`);}function Rn(e,t){let n=new Set(Object.keys(t));for(let[r,i]of Object.entries(e)){let s=i;typeof s.requirement=="string"&&!n.has(s.requirement)&&console.warn(`[Directive] Resolver "${r}" references unknown requirement type "${s.requirement}". Available types: ${[...n].join(", ")||"(none)"}`);}}function Cn(e,t){let n=t.schema?.facts??{},r=Object.keys(n);if(r.length===0)return;let i=new Set(["self","prev","current"]),s="crossModuleDeps"in t&&t.crossModuleDeps?Object.keys(t.crossModuleDeps):[];for(let o of s)i.add(o);for(let o of r)if(i.has(o))throw new Error(`[Directive] module '${e}': fact key '${o}' conflicts with a reserved namespace pivot or evaluation alias (self / prev / current / a crossModuleDep namespace). Three fixes: | ||
| export{b as createAuditLedger,a as memorySink}from'./chunk-WKCMOU2F.js';import {a as a$2}from'./chunk-NKECJWNH.js';export{a as createSystem}from'./chunk-NKECJWNH.js';export{b as DirectiveError,o as RequirementSet,n as forType,k as generateRequirementId,h as isNamespacedSystem,m as isRequirementType,g as isSingleModuleSystem,l as req,e as typedConstraint,f as typedResolver}from'./chunk-Y3A5ABR4.js';import {o,p as p$1,i,g,a as a$1,l,h as h$1,b as b$1}from'./chunk-O4GQEV4G.js';export{v as applyPatch,u as evaluateKeySelector,o as evaluatePredicate,p as evaluatePredicateExplained,s as evaluateTemplate,r as extractDeps,t as extractTemplateKeys,c as getKind,e as getOperatorsForKind,d as getSchemaFieldKinds,h as isPredicate,k as isTemplate,f as listAllPredicateOperators,q as memoizePredicate,l as validatePredicate,n as validatePredicateAgainstSchema}from'./chunk-O4GQEV4G.js';import {k as k$1}from'./chunk-3ETCZLAY.js';import {e,h,a}from'./chunk-PXRV64PA.js';export{k as diffSnapshots,l as isSignedSnapshot,i as isSnapshotExpired,g as shallowEqual,m as signSnapshot,j as validateSnapshot,n as verifySnapshotSignature}from'./chunk-PXRV64PA.js';var A=1e6;function Me(e,t){try{l(e);}catch(r){let i=r instanceof Error?r.message:String(r);throw new Error(`[Directive] replayUnder: the ${t} predicate is invalid \u2014 ${i}`)}if(!h$1(e)){let r=e===null||typeof e!="object"?`${typeof e} \u2014 ${JSON.stringify(e)}`:JSON.stringify(e).slice(0,80);throw new Error(`[Directive] replayUnder: the ${t} predicate is not a valid FactPredicate (got ${r})`)}let n;if(i(e,{operator(r,i){n===void 0&&i.startsWith("$")&&!a$1.has(i)&&(n=i);},strayOperatorKey(r){n===void 0&&!a$1.has(r)&&!b$1.has(r)&&(n=r);}}),n!==void 0)throw new Error(`[Directive] replayUnder: the ${t} predicate uses an unknown operator "${n}" \u2014 known operators: ${[...a$1].join(", ")}`)}function Re(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.snapshots))return Ce(e);let t=Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.frames)?e.frames:null;if(!t)throw new Error("[Directive] toReplayFrames: history must be a JSON array of frames, an object with a `frames` array, or a history export with a `snapshots` array");if(t.length>A)throw new Error(`[Directive] toReplayFrames: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);return t.map((n,r)=>{if(n&&typeof n=="object"&&"facts"in n){let i=n,s={id:i.id??`#${r}`,facts:i.facts??{}};return typeof i.timestamp=="number"&&(s.timestamp=i.timestamp),s}return {id:`#${r}`,facts:n??{}}})}function Ce(e){let t=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(t))return se(t);if(!t||typeof t!="object")throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");let n=t;if(n.version!==void 0&&n.version!==1)throw new Error(`[Directive] framesFromHistory: unsupported history export version ${JSON.stringify(n.version)} \u2014 expected 1`);if(!Array.isArray(n.snapshots))throw new Error("[Directive] framesFromHistory: expected a history export object with a `snapshots` array (from system.history.export())");return se(n.snapshots)}function se(e){if(!Array.isArray(e))throw new Error("[Directive] framesFromSnapshots: expected an array of fact-state snapshots");if(e.length>A)throw new Error(`[Directive] framesFromSnapshots: history has ${e.length} snapshots, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);for(let t=0;t<e.length;t++){let n=e[t];if(!n||typeof n!="object"||!("facts"in n))throw new Error(`[Directive] framesFromSnapshots: snapshot at index ${t} is not a { facts, ... } object`)}return Re(e)}function H(e){let{frames:t,original:n,proposed:r,entityKey:i}=e,s=e.maxSamples??20,o$1=s>0?s:0;if(t.length>A)throw new Error(`[Directive] replayUnder: history has ${t.length} frames, exceeds the MAX_REPLAY_FRAMES limit (${A}) \u2014 split or down-sample the history`);Me(n,"original"),Me(r,"proposed");let u=0,a=0,c=0,l=0,d=0,g=[],y=[],$=i?new Set:void 0,m=i?new Set:void 0,M;for(let F of t){let T=F.facts,v=o(n,T,M),R=o(r,T,M);v&&(u++,$?.add(T[i])),R&&(a++,m?.add(T[i])),v===R?d++:!v&&R?(c++,g.length<o$1&&g.push(De(F,n,r,M))):(l++,y.length<o$1&&y.push(De(F,n,r,M))),M=T;}let E={framesEvaluated:t.length,original:{matched:u},proposed:{matched:a},delta:a-u,newMatchCount:c,lostMatchCount:l,unchanged:d,newMatches:g,lostMatches:y};return $&&m&&(E.original.matchedEntities=$.size,E.proposed.matchedEntities=m.size),E}function De(e,t,n,r){let i=e.facts,s={frameId:e.id,facts:i,originalExplain:p$1(t,i,r),proposedExplain:p$1(n,i,r)};return e.timestamp!==void 0&&(s.timestamp=e.timestamp),s}var ae=1e4,Ae=5e7;function It(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===1&&typeof e.$hole=="string"}function ue(e,t,n=new Set,r=0){if(r>g)throw new Error(`[Directive] sweepUnder: template exceeds MAX_PREDICATE_DEPTH (${g}) \u2014 flatten the template or split the sweep`);if(It(e)){let i=e.$hole;if(!(i in t))throw new Error(`[Directive] sweepUnder: template references hole "${i}" but sweep has no values for it`);return t[i]}if(e===null||typeof e!="object")return e;if(n.has(e))throw new Error("[Directive] sweepUnder: template contains a cycle \u2014 predicate templates must be a tree");n.add(e);try{if(Array.isArray(e))return e.map(s=>ue(s,t,n,r+1));let i={};for(let[s,o]of Object.entries(e))i[s]=ue(o,t,n,r+1);return i}finally{n.delete(e);}}function*Ee(e,t){if(e.length===0){yield {};return}let n=e[0],r=e.slice(1),i=t[n]??[];for(let s of i)for(let o of Ee(r,t))yield {[n]:s,...o};}function Lt(e){let t=1;for(let n of Object.values(e))t*=n.length;return t}function qt(e){let{frames:t,original:n,template:r,sweep:i,objective:s=T=>T.proposed.matched,entityKey:o,maxSamples:u=0}=e,a=Object.keys(i);if(a.length===0)throw new Error("[Directive] sweepUnder: `sweep` must contain at least one hole name");let c=Lt(i);if(c>ae)throw new Error(`[Directive] sweepUnder: grid has ${c} points, exceeds the MAX_SWEEP_POINTS limit (${ae}) \u2014 narrow the sweep ranges or split the run`);if(c===0)throw new Error("[Directive] sweepUnder: at least one hole has zero candidate values");let l=c*t.length;if(l>Ae)throw new Error(`[Directive] sweepUnder: ${c} points \xD7 ${t.length} frames = ${l} per-frame evaluations, exceeds the MAX_SWEEP_EVALUATIONS limit (${Ae}) \u2014 narrow the sweep, down-sample the history, or split the run`);let d=false,g=T=>{let v;try{v=s(T);}catch(R){return d||(d=true,console.warn(`[Directive] sweepUnder: objective threw \u2014 point will not rank (${R.message})`)),Number.NEGATIVE_INFINITY}return typeof v!="number"||!Number.isFinite(v)?(d||(d=true,console.warn(`[Directive] sweepUnder: objective returned a non-finite number (${String(v)}) \u2014 point will not rank`)),Number.NEGATIVE_INFINITY):v},y=H({frames:t,original:n,proposed:n,entityKey:o,maxSamples:u}),$={values:{},report:y,score:g(y)},m=[],M=0,E=Number.NEGATIVE_INFINITY;for(let T of Ee(a,i)){let v=ue(r,T),R=H({frames:t,original:n,proposed:v,entityKey:o,maxSamples:u}),te=g(R);te>E&&(E=te,M=m.length),m.push({values:T,report:R,score:te});}let F=m[M];return {points:m,bestIndex:M,best:F,baseline:$}}function ce(e){let t=e&&typeof e=="object"&&!Array.isArray(e)&&"constraints"in e?e.constraints:e;if(Array.isArray(t)){let n={};for(let r of t){if(!r||typeof r!="object"||!("id"in r))throw new Error("[Directive] diffRules: array entries must be `{ id, whenSpec }` objects");let i=r;if(typeof i.id!="string")throw new Error("[Directive] diffRules: constraint `id` must be a string");n[i.id]=i.whenSpec;}return n}if(t&&typeof t=="object")return t;throw new Error("[Directive] diffRules: expected a `{ id: whenSpec }` map, an array of `{ id, whenSpec }`, or `{ constraints: ... }`")}var Wt=new Set(["$eq","$ne","$in","$nin","$exists","$gt","$gte","$lt","$lte","$between","$matches","$startsWith","$endsWith","$contains","$changed"]),Bt=new Set(["$all","$any","$not"]);function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ut(e){if(!xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;let n=false;for(let r of t){if(!r.startsWith("$"))return false;Wt.has(r)&&(n=true);}return n}function S(e,t="",n=[]){if(e===null||typeof e!="object")return n;if(Array.isArray(e)){for(let r of e)if(r&&typeof r=="object"&&"fact"in r&&"op"in r){let i=r;n.push({path:t?`${t}.${String(i.fact)}`:String(i.fact),op:String(i.op),value:i.value});}return n}if("$all"in e&&Array.isArray(e.$all))return e.$all.forEach((i,s)=>{S(i,`${t}$all[${s}]`,n);}),n;if("$any"in e&&Array.isArray(e.$any))return e.$any.forEach((i,s)=>{S(i,`${t}$any[${s}]`,n);}),n;if("$not"in e)return S(e.$not,`${t}$not`,n),n;for(let[r,i]of Object.entries(e)){let s=t?`${t}.${r}`:r;if(Ut(i))for(let[o,u]of Object.entries(i))n.push({path:s,op:o,value:u});else xe(i)&&!Bt.has(r)?S(i,s,n):n.push({path:s,op:"$eq",value:i});}return n}function C(e){return typeof e=="number"&&Number.isFinite(e)}function Kt(e,t,n){switch(e){case "$gte":case "$gt":if(C(t)&&C(n)){if(n<t)return "relaxed";if(n>t)return "tightened"}return null;case "$lte":case "$lt":if(C(t)&&C(n)){if(n>t)return "relaxed";if(n<t)return "tightened"}return null;case "$between":{if(Array.isArray(t)&&Array.isArray(n)&&t.length===2&&n.length===2&&C(t[0])&&C(t[1])&&C(n[0])&&C(n[1])){let r=t[1]-t[0],i=n[1]-n[0];if(i>r)return "relaxed";if(i<r)return "tightened"}return null}case "$in":case "$nin":{if(Array.isArray(t)&&Array.isArray(n))if(e==="$in"){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}else {if(n.length>t.length)return "tightened";if(n.length<t.length)return "relaxed"}return null}case "$contains":{if(Array.isArray(t)&&Array.isArray(n)){if(n.length>t.length)return "relaxed";if(n.length<t.length)return "tightened"}return null}default:return null}}function zt(e){let t=ce(e.before),n=ce(e.after),i=[...new Set([...Object.keys(t),...Object.keys(n)])].sort(),s=[],o={added:0,removed:0,changed:0,unchanged:0,totalClauseChanges:0};for(let u of i){let a=t[u],c=n[u],l=u in t,d=u in n;if(l&&!d){let y=S(a),$=y.length===0?[{path:"(function-form predicate)",kind:"removed"}]:y.map(m=>({path:m.path,kind:"removed",before:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"removed",changes:$}),o.removed++,o.totalClauseChanges+=$.length;continue}if(!l&&d){let y=S(c),$=y.length===0?[{path:"(function-form predicate)",kind:"added"}]:y.map(m=>({path:m.path,kind:"added",after:{op:m.op,value:m.value}}));le($),s.push({id:u,status:"added",changes:$}),o.added++,o.totalClauseChanges+=$.length;continue}let g=Oe(a,c);g.length===0?(s.push({id:u,status:"unchanged",changes:[]}),o.unchanged++):(s.push({id:u,status:"changed",changes:g}),o.changed++,o.totalClauseChanges+=g.length);}return {constraints:s,summary:o}}function Oe(e$1,t){if(e$1!==void 0&&t!==void 0&&(e$1===null||t===null||typeof e$1!="object"||typeof t!="object"))return e(e$1)===e(t)?[]:[{path:"",kind:"changed",before:{op:"$eq",value:e$1},after:{op:"$eq",value:t}}];let n=e$1===void 0?[]:S(e$1),r=t===void 0?[]:S(t),i=c=>`${c.path}::${c.op}`,s=new Map(n.map(c=>[i(c),c])),o=new Map(r.map(c=>[i(c),c])),u=new Set([...s.keys(),...o.keys()]),a=[];for(let c of u){let l=s.get(c),d=o.get(c);if(l&&!d){a.push({path:l.path,kind:"removed",before:{op:l.op,value:l.value}});continue}if(!l&&d){a.push({path:d.path,kind:"added",after:{op:d.op,value:d.value}});continue}if(l&&d){if(e(l.value)===e(d.value))continue;let g=Kt(l.op,l.value,d.value);a.push({path:l.path,kind:g??"changed",before:{op:l.op,value:l.value},after:{op:d.op,value:d.value}});}}return le(a),a}function le(e){e.sort((t,n)=>{let r=t.path.localeCompare(n.path);if(r!==0)return r;let i=t.before?.op??t.after?.op??"",s=n.before?.op??n.after?.op??"";return i.localeCompare(s)});}function Ht(e){return h(e)}function J(e){return e===null?"null":e===void 0?"undefined":e instanceof Date?e.toISOString():typeof e=="string"||typeof e=="object"?JSON.stringify(e):String(e)}function Jt(e){let t=e.path,n=J(e.expected),r=J(e.actual);switch(e.op){case "$eq":return `set ${t} to ${n} (currently ${r})`;case "$ne":return `change ${t} to anything other than ${n} (currently ${r})`;case "$gt":return `set ${t} above ${n} (currently ${r})`;case "$gte":return `set ${t} to at least ${n} (currently ${r})`;case "$lt":return `set ${t} below ${n} (currently ${r})`;case "$lte":return `set ${t} to at most ${n} (currently ${r})`;case "$in":return `set ${t} to one of ${n} (currently ${r})`;case "$nin":return `set ${t} to something other than ${n} (currently ${r})`;case "$exists":return e.expected===true?`set ${t} to a non-null value (currently null/missing)`:`unset ${t} (currently ${r})`;case "$between":return Array.isArray(e.expected)&&e.expected.length===2?`set ${t} between ${J(e.expected[0])} and ${J(e.expected[1])} (currently ${r})`:`set ${t} within range ${n} (currently ${r})`;case "$startsWith":return `set ${t} to start with ${n} (currently ${r})`;case "$endsWith":return `set ${t} to end with ${n} (currently ${r})`;case "$contains":return `set ${t} to contain ${n} (currently ${r})`;case "$matches":return `set ${t} to match the pattern ${n} (currently ${r})`;case "$changed":return `the previous-vs-current change of ${t} is required to differ (currently they match: ${r})`;case "$all":case "$any":case "$not":return `the ${e.op} group at "${t}" did not pass \u2014 see its child clauses`;default:return `clause at ${t} (${e.op}) failed: expected ${n}, got ${r}`}}function je(e,t){for(let n of e)if(!n.pass){if((n.op==="$all"||n.op==="$any"||n.op==="$not")&&n.children){je(n.children,t);continue}t.push({path:n.path,op:n.op,expected:n.expected,actual:n.actual,suggestion:Jt(n)});}}function Qt(e,t,n){let r=p$1(e,t,n),i$1=r.every(o=>o.pass),s=[];if(i$1||je(r,s),!i$1&&n===void 0){let o=[];i(e,{operator(u,a){a==="$changed"&&o.push(u);}});for(let u of o)s.push({path:u,op:"$changed",expected:true,actual:void 0,suggestion:`$changed clause at "${u}" cannot be evaluated without a \`prev\` snapshot \u2014 pass predict(predicate, facts, prev).`});}return {wouldFire:i$1,whenExplain:r,missingChanges:s}}var Pe=new Set(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"]);function Q(e,t){if(e===t)return 0;if(typeof e=="number"&&typeof t=="number"||typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),r=t.getTime();return n<r?-1:n>r?1:0}return typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function _(e,t){if(e===t)return true;if(typeof e!=typeof t||e===null||t===null||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let i=0;i<e.length;i++)if(!_(e[i],t[i]))return false;return true}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return false;for(let i of n)if(!_(e[i],t[i]))return false;return true}function Xt(e,t){if(!Pe.has(e.op)||!Pe.has(t.op))return {type:"overlap",reason:`Both rules touch "${e.path}".`};if(e.op==="$eq"&&t.op==="$eq")return _(e.value,t.value)?{type:"subset",reason:`Both rules require ${e.path} = ${JSON.stringify(e.value)} \u2014 candidate is redundant.`}:{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires ${e.path} = ${JSON.stringify(t.value)} \u2014 they cannot both fire.`};if(e.op==="$eq"&&t.op==="$ne")return _(e.value,t.value)?{type:"direct",reason:`Candidate requires ${e.path} = ${JSON.stringify(e.value)} but an existing rule excludes that value.`}:null;if(e.op==="$ne"&&t.op==="$eq")return _(e.value,t.value)?{type:"direct",reason:`Candidate excludes ${e.path} = ${JSON.stringify(e.value)} but an existing rule requires that exact value.`}:null;if(e.op==="$in"&&t.op==="$in"){let o=new Set(Array.isArray(e.value)?e.value:[]),u=new Set(Array.isArray(t.value)?t.value:[]),a=[...o].filter(c=>u.has(c));return a.length===0?{type:"direct",reason:`Candidate $in set for ${e.path} (${JSON.stringify([...o])}) and existing $in set (${JSON.stringify([...u])}) have no values in common \u2014 the candidate can never fire while the existing rule holds.`}:a.length===o.size&&a.length<u.size?{type:"subset",reason:`Candidate $in set for ${e.path} is a strict subset of the existing rule's $in set.`}:null}let n=e.op==="$gt"||e.op==="$gte"?e.value:void 0,r=e.op==="$lt"||e.op==="$lte"?e.value:void 0,i=t.op==="$gt"||t.op==="$gte"?t.value:void 0,s=t.op==="$lt"||t.op==="$lte"?t.value:void 0;if(n!==void 0&&s!==void 0){let o=Q(n,s);if(!Number.isNaN(o)&&(o>0||o===0&&(e.op==="$gt"||t.op==="$lt")))return {type:"direct",reason:`Candidate requires ${e.path} ${e.op==="$gt"?">":"\u2265"} ${JSON.stringify(n)} but an existing rule caps it at ${t.op==="$lt"?"<":"\u2264"} ${JSON.stringify(s)}.`}}if(i!==void 0&&r!==void 0){let o=Q(i,r);if(!Number.isNaN(o)&&(o>0||o===0&&(t.op==="$gt"||e.op==="$lt")))return {type:"direct",reason:`Candidate caps ${e.path} at ${e.op==="$lt"?"<":"\u2264"} ${JSON.stringify(r)} but an existing rule requires it ${t.op==="$gt"?">":"\u2265"} ${JSON.stringify(i)}.`}}if(n!==void 0&&i!==void 0){let o=Q(n,i);if(!Number.isNaN(o)&&o>0)return {type:"subset",reason:`Candidate's lower bound on ${e.path} (${JSON.stringify(n)}) is stricter than the existing rule's lower bound (${JSON.stringify(i)}) \u2014 candidate is a subset.`}}if(r!==void 0&&s!==void 0){let o=Q(r,s);if(!Number.isNaN(o)&&o<0)return {type:"subset",reason:`Candidate's upper bound on ${e.path} (${JSON.stringify(r)}) is stricter than the existing rule's upper bound (${JSON.stringify(s)}) \u2014 candidate is a subset.`}}return {type:"overlap",reason:`Both rules constrain "${e.path}".`}}function Fe(e){return typeof e=="object"&&e!==null&&typeof e.id=="string"}var Zt={checkAgainst(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {contradictions:[],warnings:[]};let i=new Map;for(let u of r){let a=i.get(u.path)??[];a.push(u),i.set(u.path,a);}let s=[],o=[];for(let u of n){if(!Fe(u)||u.whenSpec===void 0)continue;let a=S(u.whenSpec);for(let c of a){let l=i.get(c.path);if(l)for(let d of l){let g=Xt(d,c);if(!g)continue;let y={constraintId:u.id,type:g.type,reason:g.reason,candidatePath:d.path,candidate:{op:d.op,value:d.value},existing:{op:c.op,value:c.value}};g.type==="overlap"||g.type==="subset"?o.push(y):s.push(y);}}}return {contradictions:s,warnings:o}},checkOwns(e,t){let n=Array.isArray(t)?t:"constraints"in t&&Array.isArray(t.constraints)?t.constraints:[],r=S(e);if(r.length===0)return {warnings:[]};let i=new Set(r.map(o=>o.path)),s=[];for(let o of n){if(!Fe(o))continue;let u=Array.isArray(o.owns)?o.owns:[],a=Array.isArray(o.bind)?o.bind:[];for(let c of u)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"owns",reason:`Constraint "${o.id}" already owns "${c}" \u2014 candidate would race or shadow its writes.`,severity:"warning"});for(let c of a)i.has(c)&&s.push({constraintId:o.id,candidatePath:c,source:"bind",reason:`Constraint "${o.id}" binds "${c}" \u2014 candidate would write to a bound field.`,severity:"warning"});}return {warnings:s}}};var I=new Map,Yt=50;function Gt(e){let t=I.get(e);if(!t){try{t=new Intl.NumberFormat(e);}catch{t=new Intl.NumberFormat("en-US");}if(I.size>=Yt){let n=I.keys().next().value;n!==void 0&&I.delete(n);}I.set(e,t);}return t}function Vt(e,t={}){let n=t.style??"natural",r=t.parenthesize??true,i=t.locale??"en-US",s=t.factName??(a=>a);if(e===null||typeof e!="object")return "<invalid predicate>";let o={style:n,parenthesize:r,locale:i,factName:s,seen:new WeakSet,cycle:false},u=X(e,o,0);return o.cycle?"<invalid predicate: cycle>":u}var Ie=" AND ",en=" OR ",tn="NOT",Le=" \u2227 ",nn=" \u2228 ",rn="\xAC";function q(e){return typeof e!="object"||e===null||Array.isArray(e)?false:!(e instanceof Date)&&!(e instanceof RegExp)}function on(e){if(!q(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function X(e,t,n){if(n>g)return a&&console.warn(`[Directive] describePredicate: depth limit (${g}) exceeded \u2014 bailing.`),t.style==="formal"?"\u22A5":"always true";if(Array.isArray(e))return sn(e,t);if(!q(e))return f(e,t);if(t.seen.has(e))return t.cycle=true,"<invalid predicate: cycle>";t.seen.add(e);let r=e,i=Object.keys(r);for(let o of ["$all","$any","$not"])if(o in r)return an(o,r[o],t,n);let s=[];for(let o of i)o.startsWith("$")||s.push(qe(o,r[o],t,n));return Z(s,t)}function sn(e,t,n){let r=[];for(let i of e){if(!q(i))continue;let s=i;typeof s.fact!="string"||typeof s.op!="string"||r.push(L(s.fact,s.op,s.value,t));}return r.length===0?t.style==="formal"?"\u22A4":"always true":Z(r,t)}function an(e,t,n,r){if(e==="$not"){if(q(t)&&Object.keys(t).length===0)return n.style==="formal"?"\u22A5":"never";let o=X(t,n,r+1);return o==="always true"?"never":o==="\u22A4"?"\u22A5":`${n.style==="formal"?rn:`${tn} `}(${o})`}if(!Array.isArray(t))return n.style==="formal"?"\u22A5":"<invalid predicate>";if(t.length===0)return e==="$all"?n.style==="formal"?"\u22A4":"always true":n.style==="formal"?"\u22A5":"never";let i=[];for(let o of t){let u=X(o,n,r+1);i.push(u);}if(i.length===1)return i[0];let s=n.parenthesize?i.map(o=>`(${o})`):i;return e==="$all"?s.join(n.style==="formal"?Le:Ie):s.join(n.style==="formal"?nn:en)}function qe(e,t,n,r){if(on(t)){let i=t,s=Object.keys(i);if(s.length===1)return L(e,s[0],i[s[0]],n);let o=s.map(u=>L(e,u,i[u],n));return Z(o,n)}if(q(t)){let i=t;if("$all"in i||"$any"in i||"$not"in i)return X(t,n,r+1);let o=[];for(let u of Object.keys(i))u.startsWith("$")||o.push(qe(`${e}.${u}`,i[u],n,r+1));return o.length===0?L(e,"$eq",t,n):Z(o,n)}return L(e,"$eq",t,n)}function L(e,t,n,r){let i=r.style==="formal"?e:r.factName(e);return r.style==="formal"?cn(i,t,n,r):un(i,t,n,r)}function un(e,t,n,r){switch(t){case "$eq":return n===null?`${e} is null`:`${e} is ${f(n,r)}`;case "$ne":return n===null?`${e} is not null`:`${e} is not ${f(n,r)}`;case "$gt":return `${e} is more than ${f(n,r)}`;case "$gte":return `${e} is at least ${f(n,r)}`;case "$lt":return `${e} is less than ${f(n,r)}`;case "$lte":return `${e} is at most ${f(n,r)}`;case "$in":return `${e} is one of ${Ne(n,r)}`;case "$nin":return `${e} is not one of ${Ne(n,r)}`;case "$exists":return n===true?`${e} is set`:`${e} is not set`;case "$between":return Array.isArray(n)&&n.length===2?`${e} is between ${f(n[0],r)} and ${f(n[1],r)}`:`${e} is between ${f(n,r)}`;case "$startsWith":return `${e} starts with ${O(n,r,true)}`;case "$endsWith":return `${e} ends with ${O(n,r,true)}`;case "$contains":return `${e} contains ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} matches ${n.toString()}`:`${e} matches ${f(n,r)}`;case "$changed":return `${e} changed`;default:return a&&!a$1.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function cn(e,t,n,r){switch(t){case "$eq":return `${e} = ${f(n,r)}`;case "$ne":return `${e} \u2260 ${f(n,r)}`;case "$gt":return `${e} > ${f(n,r)}`;case "$gte":return `${e} \u2265 ${f(n,r)}`;case "$lt":return `${e} < ${f(n,r)}`;case "$lte":return `${e} \u2264 ${f(n,r)}`;case "$in":return `${e} \u2208 {${_e(n,r)}}`;case "$nin":return `${e} \u2209 {${_e(n,r)}}`;case "$exists":return n===true?`\u2203 ${e}`:`\u2204 ${e}`;case "$between":return Array.isArray(n)&&n.length===2?`${f(n[0],r)} \u2264 ${e} \u2264 ${f(n[1],r)}`:`${e} \u2208 [${f(n,r)}]`;case "$startsWith":return `${e} ^= ${O(n,r,true)}`;case "$endsWith":return `${e} $= ${O(n,r,true)}`;case "$contains":return `${e} \u2287 ${O(n,r,true)}`;case "$matches":return n instanceof RegExp?`${e} ~ ${n.toString()}`:`${e} ~ ${f(n,r)}`;case "$changed":return `\u0394${e}`;default:return a&&!a$1.has(t)&&console.warn(`[Directive] describePredicate: unknown operator "${t}" \u2014 falling through to generic rendering.`),`${e} ${t} ${f(n,r)}`}}function Y(e){return e.length===0?true:/[\s,"']/.test(e)}function O(e,t,n){return typeof e!="string"||n||Y(e)?JSON.stringify(e):e}function f(e,t){if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))return String(e);try{return Gt(t.locale).format(e)}catch{return String(e)}}if(typeof e=="bigint")return t.style==="formal"?`${e.toString()}n`:e.toString();if(typeof e=="string")return t.style==="formal"||Y(e)?JSON.stringify(e):e;if(e instanceof Date)return e.toISOString();if(e instanceof RegExp)return e.toString();if(Array.isArray(e))return `[${e.map(n=>f(n,t)).join(", ")}]`;if(typeof e=="object")try{return JSON.stringify(e)}catch{return "[object]"}return String(e)}function Ne(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function _e(e,t){return Array.isArray(e)?e.map(n=>typeof n=="string"?Y(n)?JSON.stringify(n):n:f(n,t)).join(", "):f(e,t)}function Z(e,t){if(e.length===0)return t.style==="formal"?"\u22A4":"always true";if(e.length===1)return e[0];let n=t.style==="formal"?Le:Ie;return t.parenthesize,e.join(n)}var ln=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/;function B(e,t){if(typeof e!="string"||!ln.test(e))throw new Error(`[Directive] predicateToSQL: invalid ${t} identifier "${e}" \u2014 must match /^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?$/`)}function We(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToSQL: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function dn(e){if(Array.isArray(e)){if(e.length===0)throw new Error("[Directive] predicateToSQL: select must not be empty");for(let n of e)B(n,"column");return e.join(", ")}let t=e;return t==="*"?"*":(B(t,"column"),t)}function b(e,t){return e.params.push(t),e.placeholder(e.params.length)}function de(e,t,n,r){switch(t){case "$eq":return `${e} = ${b(r,n)}`;case "$ne":return `${e} <> ${b(r,n)}`;case "$gt":return `${e} > ${b(r,n)}`;case "$gte":return `${e} >= ${b(r,n)}`;case "$lt":return `${e} < ${b(r,n)}`;case "$lte":return `${e} <= ${b(r,n)}`;case "$in":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $in operand must be an array");return `${e} = ANY(${b(r,n)})`;case "$nin":if(!Array.isArray(n))throw new Error("[Directive] predicateToSQL: $nin operand must be an array");return `NOT (${e} = ANY(${b(r,n)}))`;case "$exists":return n===true?`${e} IS NOT NULL`:`${e} IS NULL`;case "$between":{if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToSQL: $between operand must be a [low, high] tuple");return `${e} BETWEEN ${b(r,n[0])} AND ${b(r,n[1])}`}case "$startsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $startsWith operand must be a string");return `${e} LIKE ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$endsWith":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $endsWith operand must be a string");return `${e} LIKE '%' || ${b(r,fe(n))} ESCAPE '\\'`;case "$contains":if(typeof n!="string")throw new Error("[Directive] predicateToSQL: $contains only supports string operands \u2014 array containment requires a JOIN, not a predicate");return `${e} LIKE '%' || ${b(r,fe(n))} || '%' ESCAPE '\\'`;case "$matches":{if(!(n instanceof RegExp))throw new Error("[Directive] predicateToSQL: $matches operand must be a RegExp");let i=n.flags.includes("i")?"~*":"~";return `${e} ${i} ${b(r,n.source)}`}case "$changed":throw new Error('[Directive] predicateToSQL: $changed is an effects-only operator \u2014 no server-side translation (a database row has no "prev" snapshot)');default:throw new Error(`[Directive] predicateToSQL: unknown operator "${t}" \u2014 known: ${[...a$1].join(", ")}`)}}function fe(e){return e.replace(/[\\%_]/g,"\\$&")}function Be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function fn(e){if(!Be(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function pe(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToSQL: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function W(e,t,n){if(n>g)throw new Error(`[Directive] predicateToSQL: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToSQL: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return "TRUE";let i=e.map(s=>{if(!s||typeof s!="object"||!("fact"in s)||!("op"in s))throw new Error("[Directive] predicateToSQL: array-form clause must be { fact, op, value }");let o=s;return B(o.fact,"column"),We(o.fact,t.allowed),de(o.fact,o.op,o.value,t)});return i.length===1?i[0]:`(${i.join(" AND ")})`}if("$all"in e){pe(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $all must be an array");if(i.length===0)return "TRUE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" AND ")})`}if("$any"in e){pe(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToSQL: $any must be an array");if(i.length===0)return "FALSE";let s=i.map(o=>W(o,t,n+1));return s.length===1?s[0]:`(${s.join(" OR ")})`}if("$not"in e){pe(e,"$not");let i=e.$not;return `NOT (${W(i,t,n+1)})`}let r=[];for(let[i,s]of Object.entries(e))if(B(i,"column"),We(i,t.allowed),fn(s))for(let[o,u]of Object.entries(s)){if(!a$1.has(o))throw new Error(`[Directive] predicateToSQL: unknown operator "${o}" on column "${i}" \u2014 known: ${[...a$1].join(", ")}`);r.push(de(i,o,u,t));}else {if(Be(s))throw new Error(`[Directive] predicateToSQL: nested predicate at "${i}" \u2014 cross-module / partial-match predicates have no SQL equivalent (single-table queries only in v1; pass a flat predicate or build JOIN by hand with predicateToWhere)`);r.push(de(i,"$eq",s,t));}return r.length===0?"TRUE":r.length===1?r[0]:`(${r.join(" AND ")})`}var Ue=e=>`$${e}`;function pn(e,t){let{table:n,allowedKeys:r}=t,i=t.placeholder??Ue,s=t.select??"*";B(n,"table");let o=dn(s),u={params:[],placeholder:i,allowed:r},a=W(e,u,0);return {sql:`SELECT ${o} FROM ${n} WHERE ${a}`,where:a,params:u.params}}function gn(e,t={}){let n=t.placeholder??Ue,r={params:[],placeholder:n,allowed:t.allowedKeys};return {where:W(e,r,0),params:r.params}}function ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function he(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function yn(e){if(!he(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}var hn=/^[A-Za-z_][A-Za-z0-9_]*$/,mn=/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*$/;function Ke(e,t){if(typeof e!="string"||e.length===0)throw new Error(`[Directive] predicateToMongo: field name must be a non-empty string, got ${typeof e}`);if(e.startsWith("$"))throw new Error(`[Directive] predicateToMongo: field name "${e}" starts with "$" \u2014 reserved for Mongo operators (a top-level $where would be an injection vector)`);if(!(t.allowDottedPaths?mn:hn).test(e))throw new Error(`[Directive] predicateToMongo: invalid field name "${e}"${t.allowDottedPaths?"":' \u2014 pass options.allowDottedPaths=true to permit sub-document paths like "user.role"'}`)}function ze(e,t){if(t&&!t.includes(e))throw new Error(`[Directive] predicateToMongo: field "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function ye(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToMongo: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function He(e,t){switch(e){case "$eq":case "$ne":case "$gt":case "$gte":case "$lt":case "$lte":case "$in":case "$nin":case "$exists":return {[e]:t};case "$between":{if(!Array.isArray(t)||t.length!==2)throw new Error("[Directive] predicateToMongo: $between operand must be a [low, high] tuple");return {$gte:t[0],$lte:t[1]}}case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $startsWith operand must be a string");return {$regex:`^${ge(t)}`};case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToMongo: $endsWith operand must be a string");return {$regex:`${ge(t)}$`};case "$contains":if(typeof t=="string")return {$regex:ge(t)};throw new Error("[Directive] predicateToMongo: $contains in Mongo expects a string operand \u2014 for array element membership use $elemMatch or $in directly");case "$matches":{if(t instanceof RegExp)return t.flags?{$regex:t.source,$options:t.flags}:{$regex:t.source};if(typeof t=="string")return {$regex:t};throw new Error("[Directive] predicateToMongo: $matches operand must be a RegExp or string")}case "$changed":throw new Error("[Directive] predicateToMongo: $changed is an effects-only operator \u2014 no MongoDB query equivalent");default:throw new Error(`[Directive] predicateToMongo: unknown operator "${e}" \u2014 known: ${[...a$1].join(", ")}`)}}function j(e,t,n){if(n>g)throw new Error(`[Directive] predicateToMongo: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error(`[Directive] predicateToMongo: predicate must be an object or array, got ${typeof e}`);if(Array.isArray(e)){if(e.length===0)return {};let i={},s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToMongo: array-form clause must be { fact, op, value }");let u=o;Ke(u.fact,t),ze(u.fact,t.allowedKeys);let a=He(u.op,u.value);if(u.fact in i&&he(i[u.fact])){let c=i[u.fact];Object.keys(a).some(d=>d in c)?s.push({[u.fact]:a}):i[u.fact]={...c,...a};}else u.fact in i?s.push({[u.fact]:a}):i[u.fact]=a;}if(s.length>0){let o=[];for(let[u,a]of Object.entries(i))o.push({[u]:a});return o.push(...s),{$and:o}}return i}if("$all"in e){ye(e,"$all");let i=e.$all;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $all must be an array");return i.length===0?{}:i.length===1?j(i[0],t,n+1):{$and:i.map(s=>j(s,t,n+1))}}if("$any"in e){ye(e,"$any");let i=e.$any;if(!Array.isArray(i))throw new Error("[Directive] predicateToMongo: $any must be an array");return i.length===0?{$expr:{$eq:[1,0]}}:i.length===1?j(i[0],t,n+1):{$or:i.map(s=>j(s,t,n+1))}}if("$not"in e){ye(e,"$not");let i=e.$not;return {$nor:[j(i,t,n+1)]}}let r={};for(let[i,s]of Object.entries(e))if(Ke(i,t),ze(i,t.allowedKeys),yn(s)){let o={};for(let[u,a]of Object.entries(s)){if(!a$1.has(u))throw new Error(`[Directive] predicateToMongo: unknown operator "${u}" on field "${i}" \u2014 known: ${[...a$1].join(", ")}`);Object.assign(o,He(u,a));}r[i]=o;}else r[i]=s;return r}function $n(e,t={}){return j(e,t,0)}var wn=/^[A-Za-z_][A-Za-z0-9_]*$/;function Je(e,t){if(typeof e!="string"||!wn.test(e))throw new Error(`[Directive] predicateToPostgrest: invalid column identifier "${e}"`);if(t&&!t.includes(e))throw new Error(`[Directive] predicateToPostgrest: column "${e}" is not in the allowedKeys list \u2014 add it to options.allowedKeys or remove it from the predicate`)}function me(e,t){let n=Object.keys(e).filter(r=>r!==t);if(n.length>0)throw new Error(`[Directive] predicateToPostgrest: ${t} cannot coexist with sibling keys (${n.join(", ")}) \u2014 wrap them in $all together, or move them inside the ${t} children`)}function k(e){if(e==null)return "null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"||typeof e=="bigint")return String(e);if(e instanceof Date)return e.toISOString();if(typeof e=="string")return /[,.():"\\\s]/.test(e)?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:e;throw new Error(`[Directive] predicateToPostgrest: cannot encode value of type ${typeof e}`)}function Qe(e){return `(${e.map(k).join(",")})`}function $e(e){return e.replace(/[\\%_*]/g,"\\$&")}function P(e,t){switch(e){case "$eq":return `eq.${k(t)}`;case "$ne":return `neq.${k(t)}`;case "$gt":return `gt.${k(t)}`;case "$gte":return `gte.${k(t)}`;case "$lt":return `lt.${k(t)}`;case "$lte":return `lte.${k(t)}`;case "$in":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $in operand must be an array");return `in.${Qe(t)}`;case "$nin":if(!Array.isArray(t))throw new Error("[Directive] predicateToPostgrest: $nin operand must be an array");return `not.in.${Qe(t)}`;case "$exists":return t===true?"not.is.null":"is.null";case "$startsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $startsWith operand must be a string");return `like.${k(`${$e(t)}*`)}`;case "$endsWith":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $endsWith operand must be a string");return `like.${k(`*${$e(t)}`)}`;case "$contains":if(typeof t!="string")throw new Error("[Directive] predicateToPostgrest: $contains expects a string operand (array containment is the cs operator with a different shape \u2014 out of scope for v1)");return `like.${k(`*${$e(t)}*`)}`;case "$matches":if(t instanceof RegExp)return `${t.flags.includes("i")?"imatch":"match"}.${k(t.source)}`;if(typeof t=="string")return `match.${k(t)}`;throw new Error("[Directive] predicateToPostgrest: $matches operand must be a RegExp or string");case "$changed":throw new Error("[Directive] predicateToPostgrest: $changed is an effects-only operator \u2014 no server query equivalent");default:throw new Error(`[Directive] predicateToPostgrest: unknown operator "${e}" \u2014 known: ${[...a$1].join(", ")}`)}}function Xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function bn(e){if(!Xe(e))return false;let t=Object.keys(e);if(t.length===0)return false;for(let n of t)if(!n.startsWith("$"))return false;return true}function we(e,t){return `${e}=${t}`}function G(e,t){return `${e}=(${t.join(",")})`}function be(e,t,n,r){if(t==="$between"){if(!Array.isArray(n)||n.length!==2)throw new Error("[Directive] predicateToPostgrest: $between operand must be a [low, high] tuple");let i=r?we(e,P("$gte",n[0])):`${e}.${P("$gte",n[0])}`,s=r?we(e,P("$lte",n[1])):`${e}.${P("$lte",n[1])}`;return [i,s]}return [r?we(e,P(t,n)):`${e}.${P(t,n)}`]}function U(e,t,n,r){if(r>g)throw new Error(`[Directive] predicateToPostgrest: predicate depth limit (${g}) exceeded \u2014 flatten the predicate or check for a cyclic spec object`);if(e===null||typeof e!="object")throw new Error("[Directive] predicateToPostgrest: predicate must be an object or array");if(Array.isArray(e)){let s=[];for(let o of e){if(!o||typeof o!="object"||!("fact"in o)||!("op"in o))throw new Error("[Directive] predicateToPostgrest: array-form clause must be { fact, op, value }");let u=o;Je(u.fact,t),s.push(...be(u.fact,u.op,u.value,n));}return s}if("$all"in e){me(e,"$all");let s=e.$all;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $all must be an array");if(n){let u=[];for(let a of s)u.push(...U(a,t,true,r+1));return u}let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("and",o)]}if("$any"in e){me(e,"$any");let s=e.$any;if(!Array.isArray(s))throw new Error("[Directive] predicateToPostgrest: $any must be an array");if(s.length===0)return n?["id=is.null","id=not.is.null"]:[G("and",["id.is.null","id.not.is.null"])];let o=[];for(let u of s)o.push(...U(u,t,false,r+1));return [G("or",o)]}if("$not"in e){me(e,"$not");let s=e.$not,o=U(s,t,false,r+1);return [G("not.and",o)]}let i=[];for(let[s,o]of Object.entries(e))if(Je(s,t),bn(o))for(let[u,a]of Object.entries(o)){if(!a$1.has(u))throw new Error(`[Directive] predicateToPostgrest: unknown operator "${u}" on column "${s}" \u2014 known: ${[...a$1].join(", ")}`);i.push(...be(s,u,a,n));}else {if(Xe(o))throw new Error(`[Directive] predicateToPostgrest: nested predicate at "${s}" \u2014 single-table queries only`);i.push(...be(s,"$eq",o,n));}return i}function Sn(e){let t=e.indexOf("=");if(t<0)return encodeURIComponent(e);let n=e.slice(0,t),r=e.slice(t+1);return `${n}=${encodeURIComponent(r)}`}function Tn(e,t={}){let n=t.mode??"querystring",r=U(e,t.allowedKeys,true,0);return r.length===0?"":n==="raw"?r.join("&"):r.map(Sn).join("&")}function V(e=[],t,n,r,i,s,o){return {_type:void 0,_validators:e,_typeName:t,_default:n,_transform:r,_description:i,_refinements:s,_meta:o,validate(u){return V([...e,u],t,n,r,i,s,o)}}}function p(e,t,n,r,i,s,o){return {...V(e,t,n,r,i,s,o),default(a){return p(e,t,a,r,i,s,o)},transform(a){return p([],t,void 0,l=>{let d=r?r(l):l;return a(d)},i,void 0,o)},brand(){return p(e,`Branded<${t}>`,n,r,i,s,o)},describe(a){return p(e,t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return p([...e,a],t,n,r,i,l,o)},nullable(){return p([a=>a===null||e.every(c=>c(a))],`${t} | null`,n,r,i,void 0,o)},optional(){return p([a=>a===void 0||e.every(c=>c(a))],`${t} | undefined`,n,r,i,void 0,o)},meta(a){return p(e,t,n,r,i,s,a)}}}var kn=((...e)=>{if(e.length===0)return p([],"union");let t=e.map(n=>n._typeName??"unknown");return p([n=>e.some(r=>r._validators.every(i=>i(n)))],t.join(" | "))}),vn={string(){let e=(t,n,r,i,s,o)=>({...p(t,"string",n,r,i,s,o),minLength(a){return e([...t,c=>c.length>=a],n,r,i,s,o)},maxLength(a){return e([...t,c=>c.length<=a],n,r,i,s,o)},pattern(a){return e([...t,c=>a.test(c)],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="string"])},number(){let e=(t,n,r,i,s,o)=>({...p(t,"number",n,r,i,s,o),min(a){return e([...t,c=>c>=a],n,r,i,s,o)},max(a){return e([...t,c=>c<=a],n,r,i,s,o)},default(a){return e(t,a,r,i,s,o)},describe(a){return e(t,n,r,a,s,o)},refine(a,c){let l=[...s??[],{predicate:a,message:c}];return e([...t,a],n,r,i,l,o)},meta(a){return e(t,n,r,i,s,a)}});return e([t=>typeof t=="number"])},boolean(){return p([e=>typeof e=="boolean"],"boolean")},array(){let e=(t,n,r,i,s,o)=>{let u=p(t,"array",r,void 0,i,void 0,o),a=s??{value:-1};return {...u,get _lastFailedIndex(){return a.value},set _lastFailedIndex(l){a.value=l;},of(l){let d={value:-1};return e([...t,g=>{for(let y=0;y<g.length;y++)if(!l._validators.every($=>$(g[y])))return d.value=y,false;return true}],l,r,i,d,o)},nonEmpty(){return e([...t,l=>l.length>0],n,r,i,a,o)},maxLength(l){return e([...t,d=>d.length<=l],n,r,i,a,o)},minLength(l){return e([...t,d=>d.length>=l],n,r,i,a,o)},default(l){return e(t,n,l,i,a,o)},describe(l){return e(t,n,r,l,a,o)},meta(l){return e(t,n,r,i,a,l)}}};return e([t=>Array.isArray(t)])},object(){let e=(t,n,r,i)=>({...p(t,"object",n,void 0,r,void 0,i),shape(o){return e([...t,u=>{for(let[a,c]of Object.entries(o)){let l=u[a],d=c;if(d&&!d._validators.every(g=>g(l)))return false}return true}],n,r,i)},nonNull(){return e([...t,o=>o!=null],n,r,i)},hasKeys(...o){return e([...t,u=>o.every(a=>a in u)],n,r,i)},default(o){return e(t,o,r,i)},describe(o){return e(t,n,o,i)},meta(o){return e(t,n,r,o)}});return e([t=>typeof t=="object"&&t!==null&&!Array.isArray(t)])},enum(...e){a&&e.length===0&&console.warn("[Directive] t.enum() called with no values - this will reject all strings");let t=new Set(e);return p([n=>typeof n=="string"&&t.has(n)],`enum(${e.join("|")})`)},literal(e){return p([t=>t===e],`literal(${String(e)})`)},nullable(e){let t=e._typeName??"unknown";return V([n=>n===null?true:e._validators.every(r=>r(n))],`${t} | null`)},optional(e){let t=e._typeName??"unknown";return V([n=>n===void 0?true:e._validators.every(r=>r(n))],`${t} | undefined`)},union:kn,record(e){let t=e._typeName??"unknown";return p([n=>typeof n!="object"||n===null||Array.isArray(n)?false:Object.values(n).every(r=>e._validators.every(i=>i(r)))],`Record<string, ${t}>`)},tuple(...e){a&&e.length===0&&console.warn("[Directive] t.tuple() called with no types - this will only accept empty arrays");let t=e.map(n=>n._typeName??"unknown");return p([n=>!Array.isArray(n)||n.length!==e.length?false:e.every((r,i)=>r._validators.every(s=>s(n[i])))],`[${t.join(", ")}]`)},date(){return p([e=>e instanceof Date&&!Number.isNaN(e.getTime())],"Date")},uuid(){let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return p([t=>typeof t=="string"&&e.test(t)],"uuid")},email(){let e=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return p([t=>typeof t=="string"&&e.test(t)],"email")},url(){return p([e=>{if(typeof e!="string")return false;try{return new URL(e),!0}catch{return false}}],"url")},bigint(){return p([e=>typeof e=="bigint"],"bigint")},any(){return p([],"any")},unknown(){return p([],"unknown")}};function Mn(e){if(!e||typeof e!="string"){console.warn("[Directive] Module ID must be a non-empty string");return}/^(__[a-z][a-z0-9_-]*|[a-z][a-z0-9-]*)$/i.test(e)||console.warn(`[Directive] Module ID "${e}" should follow kebab-case convention (e.g., "my-module")`);}function Ze(e,t,n,r,i){for(let s of e)t.has(s)||console.warn(`[Directive] ${n} "${s}" not declared in ${r}`);for(let s of t)e.has(s)||console.warn(`[Directive] ${r}["${s}"] ${i}`);}function Dn(e,t){e.length===0&&console.warn("[Directive] history.snapshotEvents is an empty array \u2014 no events will create history snapshots. Omit history.snapshotEvents entirely to snapshot all events, or list specific events.");let n=new Set(Object.keys(t));for(let r of e)n.has(r)||console.warn(`[Directive] history.snapshotEvents entry "${r}" not declared in schema.events. Available events: ${[...n].join(", ")||"(none)"}`);}function Rn(e,t){let n=new Set(Object.keys(t));for(let[r,i]of Object.entries(e)){let s=i;typeof s.requirement=="string"&&!n.has(s.requirement)&&console.warn(`[Directive] Resolver "${r}" references unknown requirement type "${s.requirement}". Available types: ${[...n].join(", ")||"(none)"}`);}}function Cn(e,t){let n=t.schema?.facts??{},r=Object.keys(n);if(r.length===0)return;let i=new Set(["self","prev","current"]),s="crossModuleDeps"in t&&t.crossModuleDeps?Object.keys(t.crossModuleDeps):[];for(let o of s)i.add(o);for(let o of r)if(i.has(o))throw new Error(`[Directive] module '${e}': fact key '${o}' conflicts with a reserved namespace pivot or evaluation alias (self / prev / current / a crossModuleDep namespace). Three fixes: | ||
| 1. Rename the fact (e.g. ${o}_) | ||
@@ -3,0 +3,0 @@ 2. Remove '${o}' from this module's crossModuleDeps if it's not actually needed |
@@ -1,2 +0,2 @@ | ||
| 'use strict';var chunkLC5SSD5D_cjs=require('./chunk-LC5SSD5D.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');Object.defineProperty(exports,"createConstraintFactory",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.c}});Object.defineProperty(exports,"createConstraintsManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.p}});Object.defineProperty(exports,"createDerivationsManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.q}});Object.defineProperty(exports,"createDisabledHistory",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.j}});Object.defineProperty(exports,"createEffectsManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.r}});Object.defineProperty(exports,"createEngine",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.A}});Object.defineProperty(exports,"createErrorBoundaryManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.t}});Object.defineProperty(exports,"createFacts",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.w}});Object.defineProperty(exports,"createFactsProxy",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.v}});Object.defineProperty(exports,"createFactsStore",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.u}});Object.defineProperty(exports,"createHistoryManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.i}});Object.defineProperty(exports,"createPluginManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.x}});Object.defineProperty(exports,"createResolverFactory",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.d}});Object.defineProperty(exports,"createResolversManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.y}});Object.defineProperty(exports,"createRetryLaterManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.s}});Object.defineProperty(exports,"createSourcesManager",{enumerable:true,get:function(){return chunkLC5SSD5D_cjs.z}});Object.defineProperty(exports,"dangerousRegex",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.m}});Object.defineProperty(exports,"getCurrentDeps",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.f}});Object.defineProperty(exports,"isTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.g}});Object.defineProperty(exports,"trackAccess",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.j}});Object.defineProperty(exports,"withTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.h}});Object.defineProperty(exports,"withoutTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.i}});Object.defineProperty(exports,"hashObject",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.h}});Object.defineProperty(exports,"isPrototypeSafe",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.f}});Object.defineProperty(exports,"safeStringify",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.o}});Object.defineProperty(exports,"stableStringify",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.e}});//# sourceMappingURL=internals.cjs.map | ||
| 'use strict';var chunkAG2FPVZN_cjs=require('./chunk-AG2FPVZN.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');Object.defineProperty(exports,"createConstraintFactory",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.c}});Object.defineProperty(exports,"createConstraintsManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.p}});Object.defineProperty(exports,"createDerivationsManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.q}});Object.defineProperty(exports,"createDisabledHistory",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.j}});Object.defineProperty(exports,"createEffectsManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.r}});Object.defineProperty(exports,"createEngine",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.A}});Object.defineProperty(exports,"createErrorBoundaryManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.t}});Object.defineProperty(exports,"createFacts",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.w}});Object.defineProperty(exports,"createFactsProxy",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.v}});Object.defineProperty(exports,"createFactsStore",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.u}});Object.defineProperty(exports,"createHistoryManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.i}});Object.defineProperty(exports,"createPluginManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.x}});Object.defineProperty(exports,"createResolverFactory",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.d}});Object.defineProperty(exports,"createResolversManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.y}});Object.defineProperty(exports,"createRetryLaterManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.s}});Object.defineProperty(exports,"createSourcesManager",{enumerable:true,get:function(){return chunkAG2FPVZN_cjs.z}});Object.defineProperty(exports,"dangerousRegex",{enumerable:true,get:function(){return chunkRWFKUNF7_cjs.m}});Object.defineProperty(exports,"getCurrentDeps",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.f}});Object.defineProperty(exports,"isTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.g}});Object.defineProperty(exports,"trackAccess",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.j}});Object.defineProperty(exports,"withTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.h}});Object.defineProperty(exports,"withoutTracking",{enumerable:true,get:function(){return chunkJGPPJV5P_cjs.i}});Object.defineProperty(exports,"hashObject",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.h}});Object.defineProperty(exports,"isPrototypeSafe",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.f}});Object.defineProperty(exports,"safeStringify",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.o}});Object.defineProperty(exports,"stableStringify",{enumerable:true,get:function(){return chunk4MNQDXH7_cjs.e}});//# sourceMappingURL=internals.cjs.map | ||
| //# sourceMappingURL=internals.cjs.map |
@@ -1,2 +0,2 @@ | ||
| export{c as createConstraintFactory,p as createConstraintsManager,q as createDerivationsManager,j as createDisabledHistory,r as createEffectsManager,A as createEngine,t as createErrorBoundaryManager,w as createFacts,v as createFactsProxy,u as createFactsStore,i as createHistoryManager,x as createPluginManager,d as createResolverFactory,y as createResolversManager,s as createRetryLaterManager,z as createSourcesManager}from'./chunk-NEKZLX66.js';export{m as dangerousRegex}from'./chunk-O4GQEV4G.js';export{f as getCurrentDeps,g as isTracking,j as trackAccess,h as withTracking,i as withoutTracking}from'./chunk-3ETCZLAY.js';export{h as hashObject,f as isPrototypeSafe,o as safeStringify,e as stableStringify}from'./chunk-PXRV64PA.js';//# sourceMappingURL=internals.js.map | ||
| export{c as createConstraintFactory,p as createConstraintsManager,q as createDerivationsManager,j as createDisabledHistory,r as createEffectsManager,A as createEngine,t as createErrorBoundaryManager,w as createFacts,v as createFactsProxy,u as createFactsStore,i as createHistoryManager,x as createPluginManager,d as createResolverFactory,y as createResolversManager,s as createRetryLaterManager,z as createSourcesManager}from'./chunk-Y3A5ABR4.js';export{m as dangerousRegex}from'./chunk-O4GQEV4G.js';export{f as getCurrentDeps,g as isTracking,j as trackAccess,h as withTracking,i as withoutTracking}from'./chunk-3ETCZLAY.js';export{h as hashObject,f as isPrototypeSafe,o as safeStringify,e as stableStringify}from'./chunk-PXRV64PA.js';//# sourceMappingURL=internals.js.map | ||
| //# sourceMappingURL=internals.js.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| 'use strict';var chunkOSXI7JFB_cjs=require('./chunk-OSXI7JFB.cjs');require('./chunk-LC5SSD5D.cjs'),require('./chunk-RWFKUNF7.cjs'),require('./chunk-JGPPJV5P.cjs'),require('./chunk-4MNQDXH7.cjs');async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=chunkOSXI7JFB_cjs.a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=chunkOSXI7JFB_cjs.a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}exports.assertDynamic=O;exports.assertNotDynamic=$;exports.createCoverageTracker=F;exports.createFakeTimers=C;exports.createMockResolver=b;exports.createTestObserver=I;exports.createTestSystem=P;exports.flushAsync=T;exports.flushMicrotasks=R;exports.mockResolver=E;exports.settleWithFakeTimers=D;//# sourceMappingURL=testing.cjs.map | ||
| 'use strict';var chunk7ALP4OLB_cjs=require('./chunk-7ALP4OLB.cjs');require('./chunk-AG2FPVZN.cjs'),require('./chunk-RWFKUNF7.cjs'),require('./chunk-JGPPJV5P.cjs'),require('./chunk-4MNQDXH7.cjs');async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=chunk7ALP4OLB_cjs.a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=chunk7ALP4OLB_cjs.a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}exports.assertDynamic=O;exports.assertNotDynamic=$;exports.createCoverageTracker=F;exports.createFakeTimers=C;exports.createMockResolver=b;exports.createTestObserver=I;exports.createTestSystem=P;exports.flushAsync=T;exports.flushMicrotasks=R;exports.mockResolver=E;exports.settleWithFakeTimers=D;//# sourceMappingURL=testing.cjs.map | ||
| //# sourceMappingURL=testing.cjs.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import {a}from'./chunk-43YXBRQC.js';import'./chunk-NEKZLX66.js';import'./chunk-O4GQEV4G.js';import'./chunk-3ETCZLAY.js';import'./chunk-PXRV64PA.js';async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}export{O as assertDynamic,$ as assertNotDynamic,F as createCoverageTracker,C as createFakeTimers,b as createMockResolver,I as createTestObserver,P as createTestSystem,T as flushAsync,R as flushMicrotasks,E as mockResolver,D as settleWithFakeTimers};//# sourceMappingURL=testing.js.map | ||
| import {a}from'./chunk-NKECJWNH.js';import'./chunk-Y3A5ABR4.js';import'./chunk-O4GQEV4G.js';import'./chunk-3ETCZLAY.js';import'./chunk-PXRV64PA.js';async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}export{O as assertDynamic,$ as assertNotDynamic,F as createCoverageTracker,C as createFakeTimers,b as createMockResolver,I as createTestObserver,P as createTestSystem,T as flushAsync,R as flushMicrotasks,E as mockResolver,D as settleWithFakeTimers};//# sourceMappingURL=testing.js.map | ||
| //# sourceMappingURL=testing.js.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| 'use strict';function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-SLMLXFKK.cjs'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}exports.createWorkerClient=H;exports.getWorkerModuleRegistry=b;exports.handleWorkerMessages=U;exports.registerWorkerModule=L;//# sourceMappingURL=worker.cjs.map | ||
| 'use strict';function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-ADZRD4N2.cjs'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}exports.createWorkerClient=H;exports.getWorkerModuleRegistry=b;exports.handleWorkerMessages=U;exports.registerWorkerModule=L;//# sourceMappingURL=worker.cjs.map | ||
| //# sourceMappingURL=worker.cjs.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-U63MK6X4.js'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}export{H as createWorkerClient,b as getWorkerModuleRegistry,U as handleWorkerMessages,L as registerWorkerModule};//# sourceMappingURL=worker.js.map | ||
| function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-XJ5J2J5K.js'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}export{H as createWorkerClient,b as getWorkerModuleRegistry,U as handleWorkerMessages,L as registerWorkerModule};//# sourceMappingURL=worker.js.map | ||
| //# sourceMappingURL=worker.js.map |
+1
-1
| { | ||
| "name": "@directive-run/core", | ||
| "version": "1.19.0", | ||
| "version": "1.19.1", | ||
| "imports": { | ||
@@ -5,0 +5,0 @@ "#is-development": { |
| import {A as A$1,a as a$1}from'./chunk-NEKZLX66.js';import {k as k$1,h,q,s,v}from'./chunk-O4GQEV4G.js';import {k,l,m as m$1}from'./chunk-3ETCZLAY.js';import {a,f,b as b$1}from'./chunk-PXRV64PA.js';var m="::",he=Symbol.for("nodejs.util.inspect.custom");function we(e){if(!e.ownKeys)return {};let n={};for(let t of e.ownKeys())n[t]=e.get(t);return n}function $(e){return new Proxy({},{get(n,t){if(typeof t=="symbol")return t===he?()=>we(e):void 0;if(!k.has(t))return e.get(t)},set(n,t,i){return typeof t=="symbol"||k.has(t)?false:e.set?e.set(t,i):false},has(n,t){return typeof t=="symbol"||k.has(t)?false:e.has?e.has(t):false},deleteProperty(n,t){return typeof t=="symbol"||k.has(t)?false:e.delete?e.delete(t):false},ownKeys(){return e.ownKeys?e.ownKeys():[]},getOwnPropertyDescriptor(n,t){if(typeof t!="symbol"&&e.has&&typeof t=="string"&&e.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var Z=new WeakMap,Q=new WeakMap,X=new WeakMap,ee=new WeakMap,ne=new WeakMap,te=new WeakMap;function P(e,n){let t=Z.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,Z.set(e,t);let i=$({get:r=>r==="$store"||r==="$snapshot"?e[r]:e[`${n}${m}${r}`],set:(r,u)=>{if(a){let s=l(u);s&&m$1(`${n}.${r}`,s);}return e[`${n}${m}${r}`]=u,true},has:r=>`${n}${m}${r}`in e,delete:r=>(delete e[`${n}${m}${r}`],true)});return t.set(n,i),i}function re(e,n,t){let i=Q.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return P(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return Q.set(e,r),r}function oe(e,n,t){let i=`${n}|${t.join(",")}`,r=ne.get(e);if(r){let o=r.get(i);if(o)return o}else r=new Map,ne.set(e,r);let u=new Set(t),s=["self",...t],c=$({get:o=>{if(o==="self")return P(e,n);if(u.has(o))return P(e,o);a&&console.warn(`[Directive] Module "${n}" accessed undeclared cross-module property "${o}". Add it to crossModuleDeps or use "facts.self.${o}" for own module facts.`);},has:o=>o==="self"||u.has(o),ownKeys:()=>s});return r.set(i,c),c}function K(e,n){let t=ee.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,ee.set(e,t);let i=$({get:r=>e[`${n}${m}${r}`],has:r=>`${n}${m}${r}`in e});return t.set(n,i),i}function se(e,n,t){let i=X.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return K(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return X.set(e,r),r}function ie(e,n,t){let i=te.get(e);return i||(i=new Map,te.set(e,i)),$({get:r=>{if(!Object.hasOwn(n,r))return;let u=i.get(r);if(u)return u;let s=$({get:c=>o=>{e.dispatch({type:`${r}${m}${c}`,...o});}});return i.set(r,s),s},has:r=>Object.hasOwn(n,r),ownKeys:()=>t()})}function S(e){if(e.includes(".")){let[n,...t]=e.split(".");return `${n}${m}${t.join(m)}`}return e}function B(e){let n={};for(let[t,i]of Object.entries(e)){let r=t.indexOf(m);if(r>0){let u=t.slice(0,r),s=t.slice(r+m.length);n[u]||(n[u]={}),n[u][s]=i;}else n._root||(n._root={}),n._root[t]=i;}return n}function A(e,n,t,i){return t?oe(e,n,i):P(e,n)}function b(e,n){return `${e}${m}${n}`}function ae(e){return e.includes(m)}function E(e,n,t){if(Array.isArray(e)){let s=e.map(c=>{if(c&&typeof c=="object"&&typeof c.fact=="string"){let o=c.fact;return ae(o)?c:{...c,fact:b(n,o)}}return c});return b$1(s),s}if(!e||typeof e!="object")return e;let i=e;if("$all"in i||"$any"in i){let s="$all"in i?"$all":"$any",c=i[s],o={[s]:c.map(f=>E(f,n,t))};return b$1(o),o}if("$not"in i){let s={$not:E(i.$not,n,t)};return b$1(s),s}function r(s,c){return E(s,c,ce)}let u={};for(let s of Object.keys(i)){if(s.startsWith("$")||ae(s)){u[s]=i[s];continue}if(s==="self"){let c=i[s];if(c&&typeof c=="object"){let o=r(c,n);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}if(t.has(s)){let c=i[s];if(c&&typeof c=="object"){let o=r(c,s);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}u[b(n,s)]=i[s];}return b$1(u),u}var ce=new Set;function me(e,n){let t=e.crossModuleDeps?new Set(Object.keys(e.crossModuleDeps)):ce,i=e.constraints;if(i){let c=false,o={};for(let[f,l]of Object.entries(i)){let d=l;if(d.when!==void 0&&typeof d.when!="function"){o[f]={...d,when:E(d.when,n,t)},c=true;continue}o[f]=l;}c&&(i=o);}let r=e.derive;if(r){let c=false,o={};for(let[f,l]of Object.entries(r)){let d=l&&typeof l=="object"&&Object.hasOwn(l,"compute")?l:null;if(!d){o[f]=l;continue}let h$1=d.compute;if(typeof h$1=="function"){o[f]=l;continue}if(k$1(h$1)){b$1(h$1);let k=g=>s(h$1,g);o[f]=d.meta?{compute:k,meta:d.meta}:k,c=true;continue}if(h(h$1)){b$1(h$1);let k=q(h$1),g=j=>k(j);o[f]=d.meta?{compute:g,meta:d.meta}:g,c=true;continue}o[f]=l;}c&&(r=o);}let u=e.events;if(u){let c=false,o={};for(let[f,l]of Object.entries(u)){if(l&&typeof l=="object"){let d=Object.hasOwn(l,"handler"),h=Object.hasOwn(l,"patch");if(d&&h&&a&&console.warn(`[Directive] event "${f}": both \`handler\` and \`patch\` provided \u2014 using \`handler\` (patch is ignored).`),h&&!d){let k=l;b$1(k.patch);let g=(j,x)=>v(k.patch,j,x??{});o[f]=k.meta?{handler:g,meta:k.meta}:g,c=true;continue}}o[f]=l;}c&&(u=o);}let s$1=e.effects;if(s$1){let c=false,o={};for(let[f,l]of Object.entries(s$1)){let d=l;if(d.on!==void 0&&h(d.on)){o[f]={...d,on:E(d.on,n,t)},c=true;continue}o[f]=l;}c&&(s$1=o);}return i===e.constraints&&r===e.derive&&u===e.events&&s$1===e.effects?e:{...e,constraints:i,derive:r,events:u,effects:s$1}}function C(e){return Object.keys(e).length>0?e:void 0}function ke(e,n){let t={};for(let[i,r]of Object.entries(e.schema.facts))t[b(n,i)]=r;return t}function pe(e,n){if(e.init)return t=>{let i=P(t,n);e.init(i);}}function ve(e,n,t,i){if(!e.derive)return;let r={};for(let[u,s]of Object.entries(e.derive)){let c=a$1(s),o=c?s.compute:s,f=c?s.meta:void 0,l=(d,h)=>{let k=A(d,n,t,i),g=K(h,n);return o(k,g)};r[b(n,u)]=f?{compute:l,meta:f}:l;}return C(r)}function be(e,n){if(!e.events)return;let t={};for(let[i,r]of Object.entries(e.events)){let u=typeof r=="object"&&r!==null&&Object.hasOwn(r,"handler"),s=u?r.handler:r,c=u?r.meta:void 0,o=(f,l)=>{let d=P(f,n);s(d,l);};t[b(n,i)]=c?{handler:o,meta:c}:o;}return C(t)}function Me(e,n,t,i){if(!e.constraints)return;let r={};for(let[u,s]of Object.entries(e.constraints)){let c=s,o=typeof c.when=="function";r[b(n,u)]={...c,deps:c.deps?.map(f=>b(n,f)),after:c.after?.map(f=>f.includes(m)?f:b(n,f)),owns:c.owns?.map(f=>f.includes(m)?f:b(n,f)),when:o?f=>{let l=A(f,n,t,i);return c.when(l)}:c.when,require:typeof c.require=="function"?f=>{let l=A(f,n,t,i);return c.require(l)}:c.require};}return C(r)}function Re(e,n,t,i){if(!e.resolvers)return;let r={};for(let[s,c]of Object.entries(e.resolvers)){let f=function(l){return {facts:A(l.facts,n,t,i),signal:l.signal}};let o=c;r[b(n,s)]={...o,...o.resolve&&{resolve:async(l,d)=>{await o.resolve(l,f(d));}},...o.resolveBatch&&{resolveBatch:async(l,d)=>{await o.resolveBatch(l,f(d));}},...o.resolveBatchWithResults&&{resolveBatchWithResults:async(l,d)=>o.resolveBatchWithResults(l,f(d))}};}return C(r)}function Se(e,n,t,i){if(!e.effects)return;let r={};for(let[u,s]of Object.entries(e.effects)){let c=s;r[b(n,u)]={...c,run:(o,f)=>{let l=A(o,n,t,i),d=f?A(f,n,t,i):void 0;return c.run(l,d)},deps:c.deps?.map(o=>b(n,o))};}return C(r)}function Oe(e,n,t){return {snapshotEvents:t&&!t.has(n)?[]:e.history?.snapshotEvents?.map(i=>b(n,i))}}function H(e){let{mod:n,namespace:t,snapshotModulesSet:i}=e,r=me(n,t),u=!!(r.crossModuleDeps&&Object.keys(r.crossModuleDeps).length>0),s=u?Object.keys(r.crossModuleDeps):[];return {id:r.id,schema:ke(r,t),requirements:r.schema.requirements??{},init:pe(r,t),derive:ve(r,t,u,s),events:be(r,t),effects:Se(r,t,u,s),sources:r.sources,constraints:Me(r,t,u,s),resolvers:Re(r,t,u,s),hooks:r.hooks,meta:r.meta,history:Oe(r,t,i)}}function xe(e){let n=Object.keys(e),t=new Set(n),i=new Set,r=new Set,u=[],s=[];function c(o){if(i.has(o))return;if(r.has(o)){let l=s.indexOf(o),d=[...s.slice(l),o].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(o),s.push(o);let f=e[o];if(f?.crossModuleDeps)for(let l of Object.keys(f.crossModuleDeps))t.has(l)&&c(l);s.pop(),r.delete(o),i.add(o),u.push(o);}for(let o of n)c(o);return u}function ue(e,n){let t=[];for(let i of Object.keys(n.schema.facts))t.push(`${e}${m}${i}`);if(n.schema.derivations)for(let i of Object.keys(n.schema.derivations))t.push(`${e}${m}${i}`);return t}function ze(e){if("module"in e){if(!e.module)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof e.module}`);return $e(e)}let n=e;if(Array.isArray(n.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array. | ||
| Instead of: | ||
| createSystem({ modules: [authModule, dataModule] }) | ||
| Use: | ||
| createSystem({ modules: { auth: authModule, data: dataModule } }) | ||
| Or for a single module: | ||
| createSystem({ module: counterModule })`);let t=n.modules;if(t&&typeof t=="object"&&"id"in t&&"schema"in t)throw new Error(`[Directive] A single module was passed to \`modules:\`. For a single module, use \`module:\` instead: | ||
| createSystem({ module: myModule }) | ||
| For multiple modules, wrap in an object: | ||
| createSystem({ modules: { myName: myModule } })`);return De(n)}function De(e){let n=e.modules,t=new Set(Object.keys(n)),i=typeof e.history=="object"?e.history:null,r=i?.snapshotModules?new Set(i.snapshotModules):null;if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(a){for(let[a,y]of Object.entries(n))if(y.crossModuleDeps)for(let w of Object.keys(y.crossModuleDeps))w===a?console.warn(`[Directive] Module "${a}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(w)||console.warn(`[Directive] Module "${a}" declares crossModuleDeps.${w}, but no module with namespace "${w}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(a&&i?.snapshotModules)for(let a of i.snapshotModules)t.has(a)||console.warn(`[Directive] history.snapshotModules entry "${a}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let u,s=e.initOrder??"auto";if(Array.isArray(s)){let a=s,y=Object.keys(n).filter(w=>!a.includes(w));if(y.length>0)throw new Error(`[Directive] initOrder is missing modules: ${y.join(", ")}. All modules must be included in the explicit order.`);u=a;}else s==="declaration"?u=Object.keys(n):u=xe(n);let{history:c,trace:o,errorBoundary:f$1}=de(e);for(let a of Object.keys(n)){if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}". Module names cannot contain "${m}".`);let y=n[a];if(y){for(let w of Object.keys(y.schema.facts))if(w.includes(m))throw new Error(`[Directive] Schema key "${w}" in module "${a}" contains the reserved separator "${m}". Schema keys cannot contain "${m}".`)}}let l={names:null};function d(){return l.names===null&&(l.names=Object.keys(n)),l.names}let h=u.map(a=>{let y=n[a];return y?H({mod:y,namespace:a,snapshotModulesSet:r}):null}).filter(a=>a!==null);a&&e.tickMs&&e.tickMs>0&&(h.some(y=>y.events&&Object.keys(y.events).some(w=>w.endsWith(`${m}tick`)))||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but no module defines a "tick" event handler.`));let k$1=null,g=null;function j(a$1){for(let[y,w]of Object.entries(a$1)){if(k.has(y)){a&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${y}". Skipping.`);continue}if(!t.has(y)){a&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${y}". Available modules: ${[...t].join(", ")}`);continue}if(w&&typeof w=="object"&&!f(w))throw new Error(`[Directive] initialFacts/hydrate for namespace "${y}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[M,D]of Object.entries(w))k.has(M)||(g.facts[`${y}${m}${M}`]=D);}}g=A$1({modules:h,plugins:e.plugins,history:c,trace:o,errorBoundary:f$1,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{e.initialFacts&&j(e.initialFacts),k$1&&(j(k$1),k$1=null);}});let x=new Map;for(let a of Object.keys(n)){let y=n[a];y&&x.set(a,ue(a,y));}let q=re(g.facts,n,d),ye=se(g.derive,n,d),ge=ie(g,n,d),R=null,F=e.tickMs,_={_mode:"namespaced",facts:q,history:g.history,derive:ye,events:ge,constraints:g.constraints,effects:g.effects,resolvers:g.resolvers,async hydrate(a){if(g.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let y=await a();y&&typeof y=="object"&&(k$1=y);},initialize(){g.initialize();},start(){if(g.start(),F&&F>0){let a;for(let y of h)if(y?.events&&(a=Object.keys(y.events).find(w=>w.endsWith(`${m}tick`)),a))break;if(a){let y=a;R=setInterval(()=>{g.dispatch({type:y});},F);}}},stop(){R&&(clearInterval(R),R=null),g.stop();},async stopAsync(){R&&(clearInterval(R),R=null),await g.stopAsync();},destroy(){this.stop(),g.destroy();},async destroyAsync(){await this.stopAsync(),await g.destroyAsync();},async evict(a){R&&(clearInterval(R),R=null),await g.evict(a);},dispatch(a){g.dispatch(a);},read(a){return g.read(S(a))},subscribe(a$1,y){let w=[];for(let M of a$1)if(M.endsWith(".*")){let D=M.slice(0,-2),W=x.get(D);W?w.push(...W):a&&console.warn(`[Directive] subscribe wildcard "${M}" \u2014 namespace "${D}" not found.`);}else w.push(S(M));return g.subscribe(w,y)},subscribeModule(a$1,y){let w=x.get(a$1);return !w||w.length===0?(a&&console.warn(`[Directive] subscribeModule("${a$1}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):g.subscribe(w,y)},watch(a,y,w){return g.watch(S(a),y,w)},when(a,y){return g.when(()=>a(q),y)},getDistributableSnapshot(a){let y={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)},w=g.getDistributableSnapshot(y);return {...w,data:B(w.data)}},watchDistributableSnapshot(a,y){let w={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)};return g.watchDistributableSnapshot(w,M=>{y({...M,data:B(M.data)});})},registerModule(a,y){if(t.has(a))throw new Error(`[Directive] Module namespace "${a}" already exists. Cannot register a duplicate namespace.`);if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}".`);if(k.has(a))throw new Error(`[Directive] Module name "${a}" is a blocked property.`);for(let D of Object.keys(y.schema.facts))if(D.includes(m))throw new Error(`[Directive] Schema key "${D}" in module "${a}" contains the reserved separator "${m}".`);let w=y,M=H({mod:w,namespace:a,snapshotModulesSet:r});t.add(a),n[a]=w,l.names=null,x.set(a,ue(a,w)),g.registerModule(M);}};return le(_,g),fe(_),_}function de(e){let n=e.history,t=e.trace,i=e.errorBoundary;return e.zeroConfig&&(n=n??a,i={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...e.errorBoundary}),{history:n,trace:t,errorBoundary:i}}function le(e,n){Object.defineProperties(e,{trace:{get(){return n.trace},enumerable:true,configurable:true},meta:{value:n.meta,enumerable:true,configurable:true},isRunning:{get(){return n.isRunning},enumerable:true,configurable:true},isSettled:{get(){return n.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return n.isInitialized},enumerable:true,configurable:true},isReady:{get(){return n.isReady},enumerable:true,configurable:true}}),e.whenReady=n.whenReady.bind(n),e.batch=n.batch.bind(n),e.onSettledChange=n.onSettledChange.bind(n),e.onHistoryChange=n.onHistoryChange.bind(n),e.inspect=n.inspect.bind(n),e.settle=n.settle.bind(n),e.explain=n.explain.bind(n),e.getSnapshot=n.getSnapshot.bind(n),e.restore=n.restore.bind(n),e.observe=n.observe.bind(n);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let i of t)i in e||(e[i]=n[i].bind(n));}function fe(e){a&&(typeof process>"u"||process.env?.NODE_ENV!=="test")&&setTimeout(()=>{!e.isRunning&&!e.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 $e(e){let n=e.module;if(!n)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof n}`);if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(e.initialFacts&&!f(e.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");a&&(n.crossModuleDeps&&Object.keys(n.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),e.tickMs&&e.tickMs>0&&(n.events&&"tick"in n.events||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but module has no "tick" event handler.`)),(typeof e.history=="object"?e.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:i,errorBoundary:r}=de(e),u=null,s=null;s=A$1({modules:[{id:n.id,schema:n.schema.facts,requirements:n.schema.requirements,init:n.init,derive:n.derive,events:n.events,effects:n.effects,sources:n.sources,constraints:n.constraints,resolvers:n.resolvers,hooks:n.hooks,meta:n.meta,history:n.history}],plugins:e.plugins,history:t,trace:i,errorBoundary:r,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{if(e.initialFacts)for(let[d,h]of Object.entries(e.initialFacts))k.has(d)||(s.facts[d]=h);if(u){if(!f(u))a&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,h]of Object.entries(u))k.has(d)||(s.facts[d]=h);u=null;}}});let c=new Proxy({},{get(d,h){if(typeof h!="symbol"&&!k.has(h))return k=>{s.dispatch({type:h,...k});}},has(d,h){return typeof h=="symbol"||k.has(h)?false:n.events?h in n.events:false},ownKeys(){return n.events?Object.keys(n.events):[]},getOwnPropertyDescriptor(d,h){if(typeof h!="symbol"&&!k.has(h)&&n.events&&h in n.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),o=null,f$1=e.tickMs,l={_mode:"single",facts:s.facts,history:s.history,derive:s.derive,events:c,constraints:s.constraints,effects:s.effects,resolvers:s.resolvers,async hydrate(d){if(s.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let h=await d();h&&typeof h=="object"&&(u=h);},initialize(){s.initialize();},start(){s.start(),f$1&&f$1>0&&n.events&&"tick"in n.events&&(o=setInterval(()=>{s.dispatch({type:"tick"});},f$1));},stop(){o&&(clearInterval(o),o=null),s.stop();},async stopAsync(){o&&(clearInterval(o),o=null),await s.stopAsync();},destroy(){this.stop(),s.destroy();},async destroyAsync(){await this.stopAsync(),await s.destroyAsync();},async evict(d){o&&(clearInterval(o),o=null),await s.evict(d);},registerModule(d){s.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,sources:d.sources,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return le(l,s),fe(l),l}export{ze as a};//# sourceMappingURL=chunk-43YXBRQC.js.map | ||
| //# sourceMappingURL=chunk-43YXBRQC.js.map |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
| 'use strict';var chunkLC5SSD5D_cjs=require('./chunk-LC5SSD5D.cjs'),chunkRWFKUNF7_cjs=require('./chunk-RWFKUNF7.cjs'),chunkJGPPJV5P_cjs=require('./chunk-JGPPJV5P.cjs'),chunk4MNQDXH7_cjs=require('./chunk-4MNQDXH7.cjs');var m="::",he=Symbol.for("nodejs.util.inspect.custom");function we(e){if(!e.ownKeys)return {};let n={};for(let t of e.ownKeys())n[t]=e.get(t);return n}function $(e){return new Proxy({},{get(n,t){if(typeof t=="symbol")return t===he?()=>we(e):void 0;if(!chunkJGPPJV5P_cjs.k.has(t))return e.get(t)},set(n,t,i){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.set?e.set(t,i):false},has(n,t){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.has?e.has(t):false},deleteProperty(n,t){return typeof t=="symbol"||chunkJGPPJV5P_cjs.k.has(t)?false:e.delete?e.delete(t):false},ownKeys(){return e.ownKeys?e.ownKeys():[]},getOwnPropertyDescriptor(n,t){if(typeof t!="symbol"&&e.has&&typeof t=="string"&&e.has(t))return {configurable:true,enumerable:true}},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}})}var Z=new WeakMap,Q=new WeakMap,X=new WeakMap,ee=new WeakMap,ne=new WeakMap,te=new WeakMap;function P(e,n){let t=Z.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,Z.set(e,t);let i=$({get:r=>r==="$store"||r==="$snapshot"?e[r]:e[`${n}${m}${r}`],set:(r,u)=>{if(chunk4MNQDXH7_cjs.a){let s=chunkJGPPJV5P_cjs.l(u);s&&chunkJGPPJV5P_cjs.m(`${n}.${r}`,s);}return e[`${n}${m}${r}`]=u,true},has:r=>`${n}${m}${r}`in e,delete:r=>(delete e[`${n}${m}${r}`],true)});return t.set(n,i),i}function re(e,n,t){let i=Q.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return P(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return Q.set(e,r),r}function oe(e,n,t){let i=`${n}|${t.join(",")}`,r=ne.get(e);if(r){let o=r.get(i);if(o)return o}else r=new Map,ne.set(e,r);let u=new Set(t),s=["self",...t],c=$({get:o=>{if(o==="self")return P(e,n);if(u.has(o))return P(e,o);chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] Module "${n}" accessed undeclared cross-module property "${o}". Add it to crossModuleDeps or use "facts.self.${o}" for own module facts.`);},has:o=>o==="self"||u.has(o),ownKeys:()=>s});return r.set(i,c),c}function K(e,n){let t=ee.get(e);if(t){let r=t.get(n);if(r)return r}else t=new Map,ee.set(e,t);let i=$({get:r=>e[`${n}${m}${r}`],has:r=>`${n}${m}${r}`in e});return t.set(n,i),i}function se(e,n,t){let i=X.get(e);if(i)return i;let r=$({get:u=>{if(Object.hasOwn(n,u))return K(e,u)},has:u=>Object.hasOwn(n,u),ownKeys:()=>t()});return X.set(e,r),r}function ie(e,n,t){let i=te.get(e);return i||(i=new Map,te.set(e,i)),$({get:r=>{if(!Object.hasOwn(n,r))return;let u=i.get(r);if(u)return u;let s=$({get:c=>o=>{e.dispatch({type:`${r}${m}${c}`,...o});}});return i.set(r,s),s},has:r=>Object.hasOwn(n,r),ownKeys:()=>t()})}function S(e){if(e.includes(".")){let[n,...t]=e.split(".");return `${n}${m}${t.join(m)}`}return e}function B(e){let n={};for(let[t,i]of Object.entries(e)){let r=t.indexOf(m);if(r>0){let u=t.slice(0,r),s=t.slice(r+m.length);n[u]||(n[u]={}),n[u][s]=i;}else n._root||(n._root={}),n._root[t]=i;}return n}function A(e,n,t,i){return t?oe(e,n,i):P(e,n)}function b(e,n){return `${e}${m}${n}`}function ae(e){return e.includes(m)}function E(e,n,t){if(Array.isArray(e)){let s=e.map(c=>{if(c&&typeof c=="object"&&typeof c.fact=="string"){let o=c.fact;return ae(o)?c:{...c,fact:b(n,o)}}return c});return chunk4MNQDXH7_cjs.b(s),s}if(!e||typeof e!="object")return e;let i=e;if("$all"in i||"$any"in i){let s="$all"in i?"$all":"$any",c=i[s],o={[s]:c.map(f=>E(f,n,t))};return chunk4MNQDXH7_cjs.b(o),o}if("$not"in i){let s={$not:E(i.$not,n,t)};return chunk4MNQDXH7_cjs.b(s),s}function r(s,c){return E(s,c,ce)}let u={};for(let s of Object.keys(i)){if(s.startsWith("$")||ae(s)){u[s]=i[s];continue}if(s==="self"){let c=i[s];if(c&&typeof c=="object"){let o=r(c,n);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}if(t.has(s)){let c=i[s];if(c&&typeof c=="object"){let o=r(c,s);if(o&&typeof o=="object"&&!Array.isArray(o)){for(let[f,l]of Object.entries(o))u[f]=l;continue}}}u[b(n,s)]=i[s];}return chunk4MNQDXH7_cjs.b(u),u}var ce=new Set;function me(e,n){let t=e.crossModuleDeps?new Set(Object.keys(e.crossModuleDeps)):ce,i=e.constraints;if(i){let c=false,o={};for(let[f,l]of Object.entries(i)){let d=l;if(d.when!==void 0&&typeof d.when!="function"){o[f]={...d,when:E(d.when,n,t)},c=true;continue}o[f]=l;}c&&(i=o);}let r=e.derive;if(r){let c=false,o={};for(let[f,l]of Object.entries(r)){let d=l&&typeof l=="object"&&Object.hasOwn(l,"compute")?l:null;if(!d){o[f]=l;continue}let h=d.compute;if(typeof h=="function"){o[f]=l;continue}if(chunkRWFKUNF7_cjs.k(h)){chunk4MNQDXH7_cjs.b(h);let k=g=>chunkRWFKUNF7_cjs.s(h,g);o[f]=d.meta?{compute:k,meta:d.meta}:k,c=true;continue}if(chunkRWFKUNF7_cjs.h(h)){chunk4MNQDXH7_cjs.b(h);let k=chunkRWFKUNF7_cjs.q(h),g=j=>k(j);o[f]=d.meta?{compute:g,meta:d.meta}:g,c=true;continue}o[f]=l;}c&&(r=o);}let u=e.events;if(u){let c=false,o={};for(let[f,l]of Object.entries(u)){if(l&&typeof l=="object"){let d=Object.hasOwn(l,"handler"),h=Object.hasOwn(l,"patch");if(d&&h&&chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] event "${f}": both \`handler\` and \`patch\` provided \u2014 using \`handler\` (patch is ignored).`),h&&!d){let k=l;chunk4MNQDXH7_cjs.b(k.patch);let g=(j,x)=>chunkRWFKUNF7_cjs.v(k.patch,j,x??{});o[f]=k.meta?{handler:g,meta:k.meta}:g,c=true;continue}}o[f]=l;}c&&(u=o);}let s=e.effects;if(s){let c=false,o={};for(let[f,l]of Object.entries(s)){let d=l;if(d.on!==void 0&&chunkRWFKUNF7_cjs.h(d.on)){o[f]={...d,on:E(d.on,n,t)},c=true;continue}o[f]=l;}c&&(s=o);}return i===e.constraints&&r===e.derive&&u===e.events&&s===e.effects?e:{...e,constraints:i,derive:r,events:u,effects:s}}function C(e){return Object.keys(e).length>0?e:void 0}function ke(e,n){let t={};for(let[i,r]of Object.entries(e.schema.facts))t[b(n,i)]=r;return t}function pe(e,n){if(e.init)return t=>{let i=P(t,n);e.init(i);}}function ve(e,n,t,i){if(!e.derive)return;let r={};for(let[u,s]of Object.entries(e.derive)){let c=chunkLC5SSD5D_cjs.a(s),o=c?s.compute:s,f=c?s.meta:void 0,l=(d,h)=>{let k=A(d,n,t,i),g=K(h,n);return o(k,g)};r[b(n,u)]=f?{compute:l,meta:f}:l;}return C(r)}function be(e,n){if(!e.events)return;let t={};for(let[i,r]of Object.entries(e.events)){let u=typeof r=="object"&&r!==null&&Object.hasOwn(r,"handler"),s=u?r.handler:r,c=u?r.meta:void 0,o=(f,l)=>{let d=P(f,n);s(d,l);};t[b(n,i)]=c?{handler:o,meta:c}:o;}return C(t)}function Me(e,n,t,i){if(!e.constraints)return;let r={};for(let[u,s]of Object.entries(e.constraints)){let c=s,o=typeof c.when=="function";r[b(n,u)]={...c,deps:c.deps?.map(f=>b(n,f)),after:c.after?.map(f=>f.includes(m)?f:b(n,f)),owns:c.owns?.map(f=>f.includes(m)?f:b(n,f)),when:o?f=>{let l=A(f,n,t,i);return c.when(l)}:c.when,require:typeof c.require=="function"?f=>{let l=A(f,n,t,i);return c.require(l)}:c.require};}return C(r)}function Re(e,n,t,i){if(!e.resolvers)return;let r={};for(let[s,c]of Object.entries(e.resolvers)){let f=function(l){return {facts:A(l.facts,n,t,i),signal:l.signal}};let o=c;r[b(n,s)]={...o,...o.resolve&&{resolve:async(l,d)=>{await o.resolve(l,f(d));}},...o.resolveBatch&&{resolveBatch:async(l,d)=>{await o.resolveBatch(l,f(d));}},...o.resolveBatchWithResults&&{resolveBatchWithResults:async(l,d)=>o.resolveBatchWithResults(l,f(d))}};}return C(r)}function Se(e,n,t,i){if(!e.effects)return;let r={};for(let[u,s]of Object.entries(e.effects)){let c=s;r[b(n,u)]={...c,run:(o,f)=>{let l=A(o,n,t,i),d=f?A(f,n,t,i):void 0;return c.run(l,d)},deps:c.deps?.map(o=>b(n,o))};}return C(r)}function Oe(e,n,t){return {snapshotEvents:t&&!t.has(n)?[]:e.history?.snapshotEvents?.map(i=>b(n,i))}}function H(e){let{mod:n,namespace:t,snapshotModulesSet:i}=e,r=me(n,t),u=!!(r.crossModuleDeps&&Object.keys(r.crossModuleDeps).length>0),s=u?Object.keys(r.crossModuleDeps):[];return {id:r.id,schema:ke(r,t),requirements:r.schema.requirements??{},init:pe(r,t),derive:ve(r,t,u,s),events:be(r,t),effects:Se(r,t,u,s),sources:r.sources,constraints:Me(r,t,u,s),resolvers:Re(r,t,u,s),hooks:r.hooks,meta:r.meta,history:Oe(r,t,i)}}function xe(e){let n=Object.keys(e),t=new Set(n),i=new Set,r=new Set,u=[],s=[];function c(o){if(i.has(o))return;if(r.has(o)){let l=s.indexOf(o),d=[...s.slice(l),o].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(o),s.push(o);let f=e[o];if(f?.crossModuleDeps)for(let l of Object.keys(f.crossModuleDeps))t.has(l)&&c(l);s.pop(),r.delete(o),i.add(o),u.push(o);}for(let o of n)c(o);return u}function ue(e,n){let t=[];for(let i of Object.keys(n.schema.facts))t.push(`${e}${m}${i}`);if(n.schema.derivations)for(let i of Object.keys(n.schema.derivations))t.push(`${e}${m}${i}`);return t}function ze(e){if("module"in e){if(!e.module)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof e.module}`);return $e(e)}let n=e;if(Array.isArray(n.modules))throw new Error(`[Directive] createSystem expects modules as an object, not an array. | ||
| Instead of: | ||
| createSystem({ modules: [authModule, dataModule] }) | ||
| Use: | ||
| createSystem({ modules: { auth: authModule, data: dataModule } }) | ||
| Or for a single module: | ||
| createSystem({ module: counterModule })`);let t=n.modules;if(t&&typeof t=="object"&&"id"in t&&"schema"in t)throw new Error(`[Directive] A single module was passed to \`modules:\`. For a single module, use \`module:\` instead: | ||
| createSystem({ module: myModule }) | ||
| For multiple modules, wrap in an object: | ||
| createSystem({ modules: { myName: myModule } })`);return De(n)}function De(e){let n=e.modules,t=new Set(Object.keys(n)),i=typeof e.history=="object"?e.history:null,r=i?.snapshotModules?new Set(i.snapshotModules):null;if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(chunk4MNQDXH7_cjs.a){for(let[a,y]of Object.entries(n))if(y.crossModuleDeps)for(let w of Object.keys(y.crossModuleDeps))w===a?console.warn(`[Directive] Module "${a}" references itself in crossModuleDeps. Use "facts.self" to access own module's facts instead.`):t.has(w)||console.warn(`[Directive] Module "${a}" declares crossModuleDeps.${w}, but no module with namespace "${w}" exists in the system. Available modules: ${[...t].join(", ")}`);}if(chunk4MNQDXH7_cjs.a&&i?.snapshotModules)for(let a of i.snapshotModules)t.has(a)||console.warn(`[Directive] history.snapshotModules entry "${a}" doesn't match any module. Available modules: ${[...t].join(", ")}`);let u,s=e.initOrder??"auto";if(Array.isArray(s)){let a=s,y=Object.keys(n).filter(w=>!a.includes(w));if(y.length>0)throw new Error(`[Directive] initOrder is missing modules: ${y.join(", ")}. All modules must be included in the explicit order.`);u=a;}else s==="declaration"?u=Object.keys(n):u=xe(n);let{history:c,trace:o,errorBoundary:f}=de(e);for(let a of Object.keys(n)){if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}". Module names cannot contain "${m}".`);let y=n[a];if(y){for(let w of Object.keys(y.schema.facts))if(w.includes(m))throw new Error(`[Directive] Schema key "${w}" in module "${a}" contains the reserved separator "${m}". Schema keys cannot contain "${m}".`)}}let l={names:null};function d(){return l.names===null&&(l.names=Object.keys(n)),l.names}let h=u.map(a=>{let y=n[a];return y?H({mod:y,namespace:a,snapshotModulesSet:r}):null}).filter(a=>a!==null);chunk4MNQDXH7_cjs.a&&e.tickMs&&e.tickMs>0&&(h.some(y=>y.events&&Object.keys(y.events).some(w=>w.endsWith(`${m}tick`)))||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but no module defines a "tick" event handler.`));let k=null,g=null;function j(a){for(let[y,w]of Object.entries(a)){if(chunkJGPPJV5P_cjs.k.has(y)){chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] initialFacts/hydrate contains blocked namespace "${y}". Skipping.`);continue}if(!t.has(y)){chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] initialFacts/hydrate contains unknown namespace "${y}". Available modules: ${[...t].join(", ")}`);continue}if(w&&typeof w=="object"&&!chunk4MNQDXH7_cjs.f(w))throw new Error(`[Directive] initialFacts/hydrate for namespace "${y}" contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.`);for(let[M,D]of Object.entries(w))chunkJGPPJV5P_cjs.k.has(M)||(g.facts[`${y}${m}${M}`]=D);}}g=chunkLC5SSD5D_cjs.A({modules:h,plugins:e.plugins,history:c,trace:o,errorBoundary:f,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{e.initialFacts&&j(e.initialFacts),k&&(j(k),k=null);}});let x=new Map;for(let a of Object.keys(n)){let y=n[a];y&&x.set(a,ue(a,y));}let q=re(g.facts,n,d),ye=se(g.derive,n,d),ge=ie(g,n,d),R=null,F=e.tickMs,_={_mode:"namespaced",facts:q,history:g.history,derive:ye,events:ge,constraints:g.constraints,effects:g.effects,resolvers:g.resolvers,async hydrate(a){if(g.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let y=await a();y&&typeof y=="object"&&(k=y);},initialize(){g.initialize();},start(){if(g.start(),F&&F>0){let a;for(let y of h)if(y?.events&&(a=Object.keys(y.events).find(w=>w.endsWith(`${m}tick`)),a))break;if(a){let y=a;R=setInterval(()=>{g.dispatch({type:y});},F);}}},stop(){R&&(clearInterval(R),R=null),g.stop();},async stopAsync(){R&&(clearInterval(R),R=null),await g.stopAsync();},destroy(){this.stop(),g.destroy();},async destroyAsync(){await this.stopAsync(),await g.destroyAsync();},async evict(a){R&&(clearInterval(R),R=null),await g.evict(a);},dispatch(a){g.dispatch(a);},read(a){return g.read(S(a))},subscribe(a,y){let w=[];for(let M of a)if(M.endsWith(".*")){let D=M.slice(0,-2),W=x.get(D);W?w.push(...W):chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] subscribe wildcard "${M}" \u2014 namespace "${D}" not found.`);}else w.push(S(M));return g.subscribe(w,y)},subscribeModule(a,y){let w=x.get(a);return !w||w.length===0?(chunk4MNQDXH7_cjs.a&&console.warn(`[Directive] subscribeModule("${a}") \u2014 namespace not found. Available: ${[...x.keys()].join(", ")}`),()=>{}):g.subscribe(w,y)},watch(a,y,w){return g.watch(S(a),y,w)},when(a,y){return g.when(()=>a(q),y)},getDistributableSnapshot(a){let y={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)},w=g.getDistributableSnapshot(y);return {...w,data:B(w.data)}},watchDistributableSnapshot(a,y){let w={...a,includeDerivations:a?.includeDerivations?.map(S),excludeDerivations:a?.excludeDerivations?.map(S),includeFacts:a?.includeFacts?.map(S)};return g.watchDistributableSnapshot(w,M=>{y({...M,data:B(M.data)});})},registerModule(a,y){if(t.has(a))throw new Error(`[Directive] Module namespace "${a}" already exists. Cannot register a duplicate namespace.`);if(a.includes(m))throw new Error(`[Directive] Module name "${a}" contains the reserved separator "${m}".`);if(chunkJGPPJV5P_cjs.k.has(a))throw new Error(`[Directive] Module name "${a}" is a blocked property.`);for(let D of Object.keys(y.schema.facts))if(D.includes(m))throw new Error(`[Directive] Schema key "${D}" in module "${a}" contains the reserved separator "${m}".`);let w=y,M=H({mod:w,namespace:a,snapshotModulesSet:r});t.add(a),n[a]=w,l.names=null,x.set(a,ue(a,w)),g.registerModule(M);}};return le(_,g),fe(_),_}function de(e){let n=e.history,t=e.trace,i=e.errorBoundary;return e.zeroConfig&&(n=n??chunk4MNQDXH7_cjs.a,i={onConstraintError:"skip",onResolverError:"skip",onEffectError:"skip",onDerivationError:"skip",...e.errorBoundary}),{history:n,trace:t,errorBoundary:i}}function le(e,n){Object.defineProperties(e,{trace:{get(){return n.trace},enumerable:true,configurable:true},meta:{value:n.meta,enumerable:true,configurable:true},isRunning:{get(){return n.isRunning},enumerable:true,configurable:true},isSettled:{get(){return n.isSettled},enumerable:true,configurable:true},isInitialized:{get(){return n.isInitialized},enumerable:true,configurable:true},isReady:{get(){return n.isReady},enumerable:true,configurable:true}}),e.whenReady=n.whenReady.bind(n),e.batch=n.batch.bind(n),e.onSettledChange=n.onSettledChange.bind(n),e.onHistoryChange=n.onHistoryChange.bind(n),e.inspect=n.inspect.bind(n),e.settle=n.settle.bind(n),e.explain=n.explain.bind(n),e.getSnapshot=n.getSnapshot.bind(n),e.restore=n.restore.bind(n),e.observe=n.observe.bind(n);let t=["dispatch","read","subscribe","watch","when","getDistributableSnapshot","watchDistributableSnapshot"];for(let i of t)i in e||(e[i]=n[i].bind(n));}function fe(e){chunk4MNQDXH7_cjs.a&&(typeof process>"u"||process.env?.NODE_ENV!=="test")&&setTimeout(()=>{!e.isRunning&&!e.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 $e(e){let n=e.module;if(!n)throw new Error(`[Directive] createSystem requires a module. Got: ${typeof n}`);if(e.tickMs!==void 0&&e.tickMs<=0)throw new Error("[Directive] tickMs must be a positive number");if(e.initialFacts&&!chunk4MNQDXH7_cjs.f(e.initialFacts))throw new Error("[Directive] initialFacts contains potentially dangerous keys (__proto__, constructor, or prototype). This may indicate a prototype pollution attack.");chunk4MNQDXH7_cjs.a&&(n.crossModuleDeps&&Object.keys(n.crossModuleDeps).length>0&&console.warn("[Directive] Single module mode ignores crossModuleDeps. Use multiple modules if cross-module access is needed: createSystem({ modules: { ... } })"),e.tickMs&&e.tickMs>0&&(n.events&&"tick"in n.events||console.warn(`[Directive] tickMs is set to ${e.tickMs}ms but module has no "tick" event handler.`)),(typeof e.history=="object"?e.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:i,errorBoundary:r}=de(e),u=null,s=null;s=chunkLC5SSD5D_cjs.A({modules:[{id:n.id,schema:n.schema.facts,requirements:n.schema.requirements,init:n.init,derive:n.derive,events:n.events,effects:n.effects,sources:n.sources,constraints:n.constraints,resolvers:n.resolvers,hooks:n.hooks,meta:n.meta,history:n.history}],plugins:e.plugins,history:t,trace:i,errorBoundary:r,tickMs:e.tickMs,cloud:e.cloud,onAfterModuleInit:()=>{if(e.initialFacts)for(let[d,h]of Object.entries(e.initialFacts))chunkJGPPJV5P_cjs.k.has(d)||(s.facts[d]=h);if(u){if(!chunk4MNQDXH7_cjs.f(u))chunk4MNQDXH7_cjs.a&&console.warn("[Directive] hydrate() data contains potentially dangerous keys. Skipping.");else for(let[d,h]of Object.entries(u))chunkJGPPJV5P_cjs.k.has(d)||(s.facts[d]=h);u=null;}}});let c=new Proxy({},{get(d,h){if(typeof h!="symbol"&&!chunkJGPPJV5P_cjs.k.has(h))return k=>{s.dispatch({type:h,...k});}},has(d,h){return typeof h=="symbol"||chunkJGPPJV5P_cjs.k.has(h)?false:n.events?h in n.events:false},ownKeys(){return n.events?Object.keys(n.events):[]},getOwnPropertyDescriptor(d,h){if(typeof h!="symbol"&&!chunkJGPPJV5P_cjs.k.has(h)&&n.events&&h in n.events)return {configurable:true,enumerable:true}},set(){return false},deleteProperty(){return false},defineProperty(){return false},getPrototypeOf(){return null},setPrototypeOf(){return false}}),o=null,f=e.tickMs,l={_mode:"single",facts:s.facts,history:s.history,derive:s.derive,events:c,constraints:s.constraints,effects:s.effects,resolvers:s.resolvers,async hydrate(d){if(s.isRunning)throw new Error("[Directive] hydrate() must be called before start(). The system is already running.");let h=await d();h&&typeof h=="object"&&(u=h);},initialize(){s.initialize();},start(){s.start(),f&&f>0&&n.events&&"tick"in n.events&&(o=setInterval(()=>{s.dispatch({type:"tick"});},f));},stop(){o&&(clearInterval(o),o=null),s.stop();},async stopAsync(){o&&(clearInterval(o),o=null),await s.stopAsync();},destroy(){this.stop(),s.destroy();},async destroyAsync(){await this.stopAsync(),await s.destroyAsync();},async evict(d){o&&(clearInterval(o),o=null),await s.evict(d);},registerModule(d){s.registerModule({id:d.id,schema:d.schema.facts,requirements:d.schema.requirements,init:d.init,derive:d.derive,events:d.events,effects:d.effects,sources:d.sources,constraints:d.constraints,resolvers:d.resolvers,hooks:d.hooks,history:d.history});}};return le(l,s),fe(l),l}exports.a=ze;//# sourceMappingURL=chunk-OSXI7JFB.cjs.map | ||
| //# sourceMappingURL=chunk-OSXI7JFB.cjs.map |
Sorry, the diff of this file is too big to display
| 'use strict';var chunkOSXI7JFB_cjs=require('./chunk-OSXI7JFB.cjs');require('./chunk-LC5SSD5D.cjs'),require('./chunk-RWFKUNF7.cjs'),require('./chunk-JGPPJV5P.cjs'),require('./chunk-4MNQDXH7.cjs');Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunkOSXI7JFB_cjs.a}});//# sourceMappingURL=system-SLMLXFKK.cjs.map | ||
| //# sourceMappingURL=system-SLMLXFKK.cjs.map |
| {"version":3,"sources":[],"names":[],"mappings":"","file":"system-SLMLXFKK.cjs"} |
| export{a as createSystem}from'./chunk-43YXBRQC.js';import'./chunk-NEKZLX66.js';import'./chunk-O4GQEV4G.js';import'./chunk-3ETCZLAY.js';import'./chunk-PXRV64PA.js';//# sourceMappingURL=system-U63MK6X4.js.map | ||
| //# sourceMappingURL=system-U63MK6X4.js.map |
| {"version":3,"sources":[],"names":[],"mappings":"","file":"system-U63MK6X4.js"} |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
4997628
0.01%