stroid 0.1.2 → 0.1.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +57 -10
  2. package/README.md +12 -10
  3. package/dist/async.d.ts +1 -1
  4. package/dist/async.js +22 -22
  5. package/dist/computed-types.d.ts +42 -0
  6. package/dist/computed-types.js +2 -0
  7. package/dist/computed.d.ts +15 -2
  8. package/dist/computed.js +11 -11
  9. package/dist/core.js +14 -14
  10. package/dist/devtools.d.ts +1 -1
  11. package/dist/devtools.js +1 -1
  12. package/dist/helpers.js +13 -13
  13. package/dist/index-internal.d.ts +1 -1
  14. package/dist/index.d.cts +4 -1
  15. package/dist/index.d.ts +4 -1
  16. package/dist/index.js +24 -24
  17. package/dist/install.js +1 -1
  18. package/dist/persist.js +1 -1
  19. package/dist/psr.d.ts +38 -0
  20. package/dist/psr.js +19 -0
  21. package/dist/react/index.d.ts +3 -1
  22. package/dist/react/index.js +25 -25
  23. package/dist/runtime-admin.js +1 -1
  24. package/dist/runtime-patch.d.ts +29 -0
  25. package/dist/runtime-tools.d.ts +6 -1
  26. package/dist/runtime-tools.js +2 -2
  27. package/dist/selectors.js +1 -1
  28. package/dist/server.d.ts +3 -1
  29. package/dist/server.js +11 -11
  30. package/dist/store-registry.d.ts +5 -0
  31. package/dist/sync.js +1 -1
  32. package/dist/testing.js +17 -17
  33. package/dist/types.d.ts +1 -1
  34. package/package.json +40 -39
  35. package/dist/async.js.map +0 -1
  36. package/dist/computed.js.map +0 -1
  37. package/dist/core.js.map +0 -1
  38. package/dist/devtools.js.map +0 -1
  39. package/dist/feature.js.map +0 -1
  40. package/dist/helpers.js.map +0 -1
  41. package/dist/index.js.map +0 -1
  42. package/dist/install.js.map +0 -1
  43. package/dist/persist.js.map +0 -1
  44. package/dist/react/index.js.map +0 -1
  45. package/dist/runtime-admin.js.map +0 -1
  46. package/dist/runtime-tools.js.map +0 -1
  47. package/dist/selectors.js.map +0 -1
  48. package/dist/server.js.map +0 -1
  49. package/dist/sync.js.map +0 -1
  50. package/dist/testing.js.map +0 -1
  51. package/dist/types/adapters/options.d.ts +0 -335
  52. package/dist/types/async/cache.d.ts +0 -39
  53. package/dist/types/async/clone.d.ts +0 -10
  54. package/dist/types/async/errors.d.ts +0 -3
  55. package/dist/types/async/fetch.d.ts +0 -37
  56. package/dist/types/async/inflight.d.ts +0 -13
  57. package/dist/types/async/rate.d.ts +0 -5
  58. package/dist/types/async/registry.d.ts +0 -116
  59. package/dist/types/async/request.d.ts +0 -11
  60. package/dist/types/async/retry.d.ts +0 -10
  61. package/dist/types/async.d.ts +0 -10
  62. package/dist/types/computed/computed-graph.d.ts +0 -29
  63. package/dist/types/computed/index.d.ts +0 -16
  64. package/dist/types/config.d.ts +0 -10
  65. package/dist/types/core/index.d.ts +0 -11
  66. package/dist/types/core/lifecycle-hooks.d.ts +0 -16
  67. package/dist/types/core/store-admin-impl.d.ts +0 -9
  68. package/dist/types/core/store-admin.d.ts +0 -9
  69. package/dist/types/core/store-core.d.ts +0 -13
  70. package/dist/types/core/store-create.d.ts +0 -16
  71. package/dist/types/core/store-hydrate-impl.d.ts +0 -35
  72. package/dist/types/core/store-hydrate.d.ts +0 -9
  73. package/dist/types/core/store-lifecycle/hooks.d.ts +0 -19
  74. package/dist/types/core/store-lifecycle/identity.d.ts +0 -23
  75. package/dist/types/core/store-lifecycle/registry.d.ts +0 -53
  76. package/dist/types/core/store-lifecycle/types.d.ts +0 -67
  77. package/dist/types/core/store-lifecycle/validation.d.ts +0 -53
  78. package/dist/types/core/store-name.d.ts +0 -28
  79. package/dist/types/core/store-notify.d.ts +0 -12
  80. package/dist/types/core/store-read.d.ts +0 -18
  81. package/dist/types/core/store-registry.d.ts +0 -108
  82. package/dist/types/core/store-replace-impl.d.ts +0 -11
  83. package/dist/types/core/store-replace.d.ts +0 -9
  84. package/dist/types/core/store-set-impl.d.ts +0 -13
  85. package/dist/types/core/store-set.d.ts +0 -9
  86. package/dist/types/core/store-shared/core.d.ts +0 -13
  87. package/dist/types/core/store-shared/notify.d.ts +0 -12
  88. package/dist/types/core/store-transaction.d.ts +0 -26
  89. package/dist/types/core/store-write-shared.d.ts +0 -19
  90. package/dist/types/core/store-write.d.ts +0 -13
  91. package/dist/types/features/feature-registry.d.ts +0 -91
  92. package/dist/types/features/lifecycle.d.ts +0 -40
  93. package/dist/types/index.d.ts +0 -17
  94. package/dist/types/integrations/query.d.ts +0 -8
  95. package/dist/types/internals/computed-order.d.ts +0 -3
  96. package/dist/types/internals/config.d.ts +0 -116
  97. package/dist/types/internals/diagnostics.d.ts +0 -21
  98. package/dist/types/internals/reporting.d.ts +0 -9
  99. package/dist/types/internals/store-admin.d.ts +0 -7
  100. package/dist/types/internals/store-ops.d.ts +0 -13
  101. package/dist/types/internals/test-reset.d.ts +0 -2
  102. package/dist/types/internals/write-context.d.ts +0 -15
  103. package/dist/types/notification/delivery.d.ts +0 -3
  104. package/dist/types/notification/index.d.ts +0 -10
  105. package/dist/types/notification/metrics.d.ts +0 -12
  106. package/dist/types/notification/priority.d.ts +0 -9
  107. package/dist/types/notification/scheduler.d.ts +0 -11
  108. package/dist/types/notification/snapshot.d.ts +0 -8
  109. package/dist/types/runtime-admin/index.d.ts +0 -2
  110. package/dist/types/runtime-tools/index.d.ts +0 -58
  111. package/dist/types/store.d.ts +0 -16
  112. package/dist/types/types/utility.d.ts +0 -17
  113. package/dist/types/utils/clone.d.ts +0 -4
  114. package/dist/types/utils/devfreeze.d.ts +0 -2
  115. package/dist/types/utils/hash.d.ts +0 -8
  116. package/dist/types/utils/path.d.ts +0 -5
  117. package/dist/types/utils/validation.d.ts +0 -14
  118. package/dist/types/utils.d.ts +0 -13
@@ -1,2 +1,2 @@
1
- var rt=new Map;var ge=e=>rt.get(e),J=()=>Array.from(rt.keys());var ot=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),st=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:ot(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),ye=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),ot().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var Xt=new Map,M=(e,t,r=0)=>{!e||typeof t!="function"||Xt.set(e,{name:e,order:r,fn:t});};var xe=new Map,it=new WeakSet,Me=e=>{it.has(e)||(it.add(e),J().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=ge(t);r&&e.featureRuntimes.set(t,r());}}));},Jt=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,at,Ee=e=>(at||Jt||e).replace(/\.ts(\?|$)/,".js$1"),Q=Ee(new URL("../../store.js",import.meta.url).href);var Qt=()=>{at=void 0,xe.clear();};M("registry.scope-override",Qt,110);var Zt=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),er=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},tr=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,failed:false,error:void 0}),rr=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,transaction:tr(),async:st(),notify:Zt(),lifecycleListener:null};return Me(t),t},Z=e=>{let t=Ee(e),r=xe.get(t);if(r)return r;let n=rr();return xe.set(t,n),n},ue=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var ct=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.failed=false,e.transaction.error=void 0,er(e.notify),ye(e.async),e.lifecycleListener=null;};var Te=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var H=[],lt={run:(e,t)=>{H.push(e);try{return t()}finally{H.pop();}},get:()=>H.length>0?H[H.length-1]:null,enterWith:e=>{if(H.length>0){H[H.length-1]=e;return}H.push(e);}};var L=e=>(lt).get()||e||Z(Q);var or={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},ft={logSink:or,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},Ae=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),je=new WeakMap,pt=Ae(ft),sr=e=>{let t=je.get(e);return t||(t=Ae(pt),je.set(e,t)),t};var A=()=>sr(L());var ur=()=>{je=new WeakMap,pt=Ae(ft);};M("config.reset",ur,90);var lr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,dr=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,gt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,fr="production",pr=lr??dr??fr,he=typeof gt=="boolean"?gt:pr!=="production",v=()=>he,yt=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},gr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},yr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},Oe=(e,t)=>{if((A().logSink.critical??gr)(e,t),A().assertRuntime)throw new Error(e)},d=(e,t)=>{if(!he)return;if((A().logSink.warn??yt)(e,t),A().assertRuntime)throw new Error(e)},ee=(e,t)=>{if((A().logSink.warn??yt)(e,t),A().assertRuntime)throw new Error(e)};var le=(e,t)=>{if(!he)return;(A().logSink.log??yr)(e,t);};var ht=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",St=()=>"Map detected; converting to plain object.",mt=()=>"Set detected; converting to array.";var te=new Set(["__proto__","constructor","prototype"]);var bt=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,Sr=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var de=(e,t)=>{let r=Sr(e);if(r)throw new Error(`${r} values are not supported`);let n=bt(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return v()&&d(ht()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),v()&&d(St());let o={};for(let[c,f]of e){if(typeof c!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(c)]=de(f,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),v()&&d(mt()),Array.from(e,o=>de(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},c=Object.getOwnPropertyDescriptors(e);for(let[f,g]of Object.entries(c))if(g.enumerable&&!te.has(f)){if("get"in g||"set"in g)throw new Error(`Accessor properties are not supported during sanitize ("${f}")`);o[f]=de(g.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>de(o,t))}return e},De=e=>de(e,new WeakSet);var Ve=null,mr=()=>{if(Ve)return Ve;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return Ve=t,t},Rt=e=>{let t=mr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},br=2166136261,wr=2654435761,Rr=1e5,B=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},G=(e,t)=>{B(e,t.length);for(let r=0;r<t.length;r++)B(e,t.charCodeAt(r));},w=(e,t)=>{G(e,t);},wt=(e,t)=>{if(Number.isNaN(t)){w(e,"NaN");return}if(!Number.isFinite(t)){w(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){w(e,"-0");return}let r=t|0;if(t===r){w(e,"int"),B(e,r);return}w(e,"num"),G(e,String(t));},re=(e,t)=>{if(e.nodes++>Rr){w(e,"[max]");return}if(t===null){w(e,"null");return}let r=typeof t;if(r==="string"){w(e,"string"),G(e,t);return}if(r==="number"){w(e,"number"),wt(e,t);return}if(r==="boolean"){w(e,t?"true":"false");return}if(r==="undefined"){w(e,"undefined");return}if(r==="bigint"){w(e,"bigint"),G(e,t.toString());return}if(r==="symbol"){w(e,"symbol");let l=t;G(e,Symbol.keyFor(l)??l.description??String(l));return}if(r==="function"){w(e,"function"),G(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){w(e,"ref"),B(e,o);return}let c=e.nextId++;if(e.seen.set(n,c),Array.isArray(n)){w(e,"array"),B(e,n.length);for(let l=0;l<n.length;l++)Object.prototype.hasOwnProperty.call(n,l)?re(e,n[l]):w(e,"hole");return}if(n instanceof Date){w(e,"date"),wt(e,n.getTime());return}if(n instanceof Map){w(e,"map"),B(e,n.size),n.forEach((l,m)=>{re(e,m),re(e,l);});return}if(n instanceof Set){w(e,"set"),B(e,n.size),n.forEach(l=>{re(e,l);});return}w(e,"object");let f=Object.getOwnPropertyDescriptors(n),g=[];Object.entries(f).forEach(([l,m])=>{m?.enumerable&&(te.has(l)||"get"in m||"set"in m||g.push([l,m]));}),B(e,g.length);for(let[l,m]of g)G(e,l),re(e,m.value);},Ne=e=>{if(typeof e=="string")return Rt(JSON.stringify(e));let t={h1:br,h2:wr,seen:new WeakMap,nextId:1,nodes:0};re(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var kr=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",Pe=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Cr=e=>Pe(e)===null,vr=e=>{let t=Pe(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},Y=(e,t=new WeakMap)=>{if(vr(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((c,f)=>{o.set(Y(f,t),Y(c,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(c=>{o.add(Y(c,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((c,f)=>{o[f]=Y(c,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,c])=>{!c.enumerable||te.has(o)||"get"in c||"set"in c||(r[o]=Y(c.value,t));}),r},K=e=>{if(kr)try{return structuredClone(e)}catch(t){if(!Cr(e)){let r=Pe(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return d(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),Y(e)}return Y(e)};var kt=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(c){let f=`${t} for "${e}" failed: ${c?.message??c}`;o(f,"always");}};var xr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;ee(`${t} callback threw: ${String(o)}`);}},Se=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(xr(o,"onError",e),r==="critical"){n==="dev"&&d(e),Oe(e);return}if(n==="always"){ee(e);return}d(e);};M("computed.order-resolver",()=>{},105);var xt=()=>L(Z(Q)),Mt=()=>xt().computedEntries;var Et=e=>Object.prototype.hasOwnProperty.call(Mt(),e);var Tt=new WeakMap,Ft=new WeakMap;var be=e=>{let t=Tt.get(e);return t||(t=new Map,Tt.set(e,t)),t},jt=e=>{let t=Ft.get(e);return t||(t=new Map,Ft.set(e,t)),t};new Proxy(new Map,{get:(e,t)=>{let r=be(P());if(t==="size")return r.size;if(t===Symbol.iterator)return r[Symbol.iterator].bind(r);let n=r[t];return typeof n=="function"?n.bind(r):n},set:(e,t,r)=>(be(P())[t]=r,true)});var we=()=>{let e=P();be(e).clear(),jt(e).clear();};M("validation.path-cache",we,50);var _t=new Map;var pe=(e,t,r)=>{let n=_t.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(c){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,c);}});};var Or=()=>{let e=P().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0;};M("notify.reset",Or,40);var Dr=()=>P().computedCleanups;var Ht=e=>{let t=Dr(),r=t.get(e);if(!r){v()&&d(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var Wt=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,c=e.metaEntries,f=e.snapshotCache,g=e.featureRuntimes,l=e.deletingStores,m=(i,k)=>{Se(k,{onError:c[i]?.options?.onError,severity:"warn",visibility:"dev"});},y=({name:i,prev:k,options:h,initialState:T,getMeta:F,getStoreValue:_,hasStore:j})=>({name:i,options:h,prev:k,getMeta:F,getStoreValue:_,getAllStores:()=>t,getInitialState:()=>T,hasStore:j,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:C=>{Se(C,{onError:h.onError,severity:"warn",visibility:"dev"});},warn:d,warnAlways:ee,log:le,hashState:Ne,deepClone:K,sanitize:De,validate:()=>({ok:true,value:k}),isDev:v}),S=({name:i,prev:k,options:h,initialState:T,phase:F})=>{let _=y({name:i,prev:k,options:h,initialState:T,getMeta:()=>c[i],getStoreValue:()=>t[i],hasStore:()=>ue(e,i)}),j=y({name:i,prev:k,options:h,initialState:T,getMeta:()=>{},getStoreValue:()=>k,hasStore:()=>false});J().forEach(C=>{let N=g.get(C);F==="before"?N?.beforeStoreDelete?.(_):N?.afterStoreDelete?.(j);});},p=i=>{if(!ue(e,i))return;let k=t[i],h=c[i].options,T=n[i],F=r[i];l.add(i);try{F?.forEach(C=>{try{C(null);}catch(N){d(`Subscriber for "${i}" threw during delete: ${N?.message??N}`);}}),kt({name:i,label:"onDelete",fn:h.onDelete,args:[k],reportIssue:(C,N)=>{Se(C,{onError:h.onError,severity:"warn",visibility:N});}}),S({name:i,prev:k,options:h,initialState:T,phase:"before"}),delete t[i],delete r[i],delete n[i],delete o[i],delete c[i],delete f[i],Et(i)&&Ht(i);let j=e.computedDependents[i];if(j)for(let C of j)d(`[stroid] source store "${i}" was deleted. Computed store "${C}" depends on it and will return stale data. Call deleteComputed("${C}") to clean up.`);S({name:i,prev:k,options:h,initialState:T,phase:"after"}),pe("afterStoreDelete",i,{type:"afterStoreDelete",prev:k}),Te(e,{type:"deleted",name:i}),le(`Store "${i}" deleted`);}finally{l.delete(i);}};return {deleteExistingStore:p,clearAllStores:()=>{let i=[],h=0,T=Number.POSITIVE_INFINITY;for(;h<20;){let _=Object.keys(t);if(_.length===0)break;_.forEach(C=>{ue(e,C)&&(p(C),i.push(C));}),h+=1;let j=Object.keys(t).length;if(j===0||j>=T)break;T=j;}let F=Object.keys(t).length;return F>0?d(`clearAllStores stopped after ${h} pass${h===1?"":"es"}; ${F} store(s) still registered (likely recreated during deletion).`):d(`All stores cleared (${i.length} stores removed)`),i},clearStores:i=>{let k=Object.keys(t).filter(h=>i?i.endsWith("*")?h.startsWith(i.slice(0,-1)):h===i:true);return k.forEach(h=>p(h)),k},reportStoreError:m}};var Ge=Q,Bt=Z(Ge),V=()=>{let e=L(Bt);return Me(e),e};var P=()=>V();var oe=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),Nr=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),Ir=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});oe(()=>V().stores);oe(()=>V().subscribers);oe(()=>V().initialStates);oe(()=>V().initialFactories);oe(()=>V().metaEntries);oe(()=>V().snapshotCache);var ne=Nr(()=>V().featureRuntimes),Lt=new WeakMap,Kt=e=>{let t=Lt.get(e);return t||(t=Wt(e),Lt.set(e,t)),t};Ir(()=>Kt(V()));var Ye=()=>Kt(V()),Pr=e=>{let t=ne.get(e);if(t)return t;let r=ge(e);if(!r)return;let n=r();return ne.set(e,n),n},_r=()=>{J().forEach(e=>{Pr(e);});};_r();var $r=()=>{ct(V());},zr=()=>{ne.forEach(e=>{try{e.resetAll?.();}catch{}}),ne.clear();};M("features.reset",zr,10);M("registries.clear",$r,20);M("registry.default",()=>{Ge=Q,Bt=Z(Ge);},115);var Ut=()=>L().async;var qt=()=>{ye(Ut());};var us=()=>{Ye().clearAllStores(),qt(),we();},ls=e=>{Ye().clearStores(e),we();};export{us as clearAllStores,ls as clearStores};//# sourceMappingURL=runtime-admin.js.map
1
+ var ot=new Map;var ye=e=>ot.get(e),J=()=>Array.from(ot.keys());var it=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),at=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:it(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),he=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),it().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var Zt=new Map,x=(e,t,r=0)=>{!e||typeof t!="function"||Zt.set(e,{name:e,order:r,fn:t});};var Me=new Map,ct=new WeakSet,Ee=e=>{ct.has(e)||(ct.add(e),J().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=ye(t);r&&e.featureRuntimes.set(t,r());}}));},er=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,ut,Te=e=>(ut||er||e).replace(/\.ts(\?|$)/,".js$1"),Q=Te("stroid:default-registry");var tr=()=>{ut=void 0,Me.clear();};x("registry.scope-override",tr,110);var rr=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),nr=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},or=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,runtimePatches:[],failed:false,error:void 0}),sr=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,lastRuntimePatches:[],transaction:or(),async:at(),notify:rr(),lifecycleListener:null};return Ee(t),t},Z=e=>{let t=Te(e),r=Me.get(t);if(r)return r;let n=sr();return Me.set(t,n),n},ee=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var lt=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.runtimePatches.length=0,e.transaction.failed=false,e.transaction.error=void 0,e.lastRuntimePatches.length=0,nr(e.notify),he(e.async),e.lifecycleListener=null;};var Fe=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var z=[],pt={run:(e,t)=>{z.push(e);try{return t()}finally{z.pop();}},get:()=>z.length>0?z[z.length-1]:null,enterWith:e=>{if(z.length>0){z[z.length-1]=e;return}z.push(e);}};var L=e=>(pt).get()||e||Z(Q);var ar={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},gt={logSink:ar,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},Oe=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),je=new WeakMap,yt=Oe(gt),cr=e=>{let t=je.get(e);return t||(t=Oe(yt),je.set(e,t)),t};var j=()=>cr(L());var pr=()=>{je=new WeakMap,yt=Oe(gt);};x("config.reset",pr,90);var fr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,gr=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,ht=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,yr="production",hr=fr??gr??yr,me=typeof ht=="boolean"?ht:hr!=="production",M=()=>me,mt=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},mr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},Sr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},De=(e,t)=>{if((j().logSink.critical??mr)(e,t),j().assertRuntime)throw new Error(e)},p=(e,t)=>{if(!me)return;if((j().logSink.warn??mt)(e,t),j().assertRuntime)throw new Error(e)},te=(e,t)=>{if((j().logSink.warn??mt)(e,t),j().assertRuntime)throw new Error(e)};var re=(e,t)=>{if(!me)return;(j().logSink.log??Sr)(e,t);};var St=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",bt=()=>"Map detected; converting to plain object.",Rt=()=>"Set detected; converting to array.";var ne=new Set(["__proto__","constructor","prototype"]);var wt=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,Rr=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var pe=(e,t)=>{let r=Rr(e);if(r)throw new Error(`${r} values are not supported`);let n=wt(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return M()&&p(St()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),M()&&p(bt());let o={};for(let[c,d]of e){if(typeof c!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(c)]=pe(d,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),M()&&p(Rt()),Array.from(e,o=>pe(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},c=Object.getOwnPropertyDescriptors(e);for(let[d,g]of Object.entries(c))if(g.enumerable&&!ne.has(d)){if("get"in g||"set"in g)throw new Error(`Accessor properties are not supported during sanitize ("${d}")`);o[d]=pe(g.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>pe(o,t))}return e},Ne=e=>pe(e,new WeakSet);var Ve=null,wr=()=>{if(Ve)return Ve;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return Ve=t,t},kt=e=>{let t=wr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},Cr=2166136261,kr=2654435761,vr=1e5,B=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},G=(e,t)=>{B(e,t.length);for(let r=0;r<t.length;r++)B(e,t.charCodeAt(r));},w=(e,t)=>{G(e,t);},Ct=(e,t)=>{if(Number.isNaN(t)){w(e,"NaN");return}if(!Number.isFinite(t)){w(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){w(e,"-0");return}let r=t|0;if(t===r){w(e,"int"),B(e,r);return}w(e,"num"),G(e,String(t));},oe=(e,t)=>{if(e.nodes++>vr){w(e,"[max]");return}if(t===null){w(e,"null");return}let r=typeof t;if(r==="string"){w(e,"string"),G(e,t);return}if(r==="number"){w(e,"number"),Ct(e,t);return}if(r==="boolean"){w(e,t?"true":"false");return}if(r==="undefined"){w(e,"undefined");return}if(r==="bigint"){w(e,"bigint"),G(e,t.toString());return}if(r==="symbol"){w(e,"symbol");let u=t;G(e,Symbol.keyFor(u)??u.description??String(u));return}if(r==="function"){w(e,"function"),G(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){w(e,"ref"),B(e,o);return}let c=e.nextId++;if(e.seen.set(n,c),Array.isArray(n)){w(e,"array"),B(e,n.length);for(let u=0;u<n.length;u++)Object.prototype.hasOwnProperty.call(n,u)?oe(e,n[u]):w(e,"hole");return}if(n instanceof Date){w(e,"date"),Ct(e,n.getTime());return}if(n instanceof Map){w(e,"map"),B(e,n.size),n.forEach((u,S)=>{oe(e,S),oe(e,u);});return}if(n instanceof Set){w(e,"set"),B(e,n.size),n.forEach(u=>{oe(e,u);});return}w(e,"object");let d=Object.getOwnPropertyDescriptors(n),g=[];Object.entries(d).forEach(([u,S])=>{S?.enumerable&&(ne.has(u)||"get"in S||"set"in S||g.push([u,S]));}),B(e,g.length);for(let[u,S]of g)G(e,u),oe(e,S.value);},Pe=e=>{if(typeof e=="string")return kt(JSON.stringify(e));let t={h1:Cr,h2:kr,seen:new WeakMap,nextId:1,nodes:0};oe(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var xr=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",$e=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Mr=e=>$e(e)===null,Er=e=>{let t=$e(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},Y=(e,t=new WeakMap)=>{if(Er(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((c,d)=>{o.set(Y(d,t),Y(c,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(c=>{o.add(Y(c,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((c,d)=>{o[d]=Y(c,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,c])=>{!c.enumerable||ne.has(o)||"get"in c||"set"in c||(r[o]=Y(c.value,t));}),r},q=e=>{if(xr)try{return structuredClone(e)}catch(t){if(!Mr(e)){let r=$e(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return p(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),Y(e)}return Y(e)};var vt=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(c){let d=`${t} for "${e}" failed: ${c?.message??c}`;o(d,"always");}};var Tr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;te(`${t} callback threw: ${String(o)}`);}},Se=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(Tr(o,"onError",e),r==="critical"){n==="dev"&&p(e),De(e);return}if(n==="always"){te(e);return}p(e);};x("computed.order-resolver",()=>{},105);var Et=()=>L(Z(Q));var _e=()=>Et().computedEntries,Tt=()=>Et().computedDependents;var Ft=e=>Object.prototype.hasOwnProperty.call(_e(),e);var We=e=>{let t=_e()[e];if(!t)return null;let r=Tt()[e];return {deps:[...t.deps],dependents:r?[...r]:[]}};var At=new WeakMap,jt=new WeakMap;var Re=e=>{let t=At.get(e);return t||(t=new Map,At.set(e,t)),t},Ot=e=>{let t=jt.get(e);return t||(t=new Map,jt.set(e,t)),t};new Proxy(new Map,{get:(e,t)=>{let r=Re(N());if(t==="size")return r.size;if(t===Symbol.iterator)return r[Symbol.iterator].bind(r);let n=r[t];return typeof n=="function"?n.bind(r):n},set:(e,t,r)=>(Re(N())[t]=r,true)});var we=()=>{let e=N();Re(e).clear(),Ot(e).clear();};x("validation.path-cache",we,50);var Wt=new Map;var ge=(e,t,r)=>{let n=Wt.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(c){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,c);}});};var Or=()=>{};x("write-context.runner",Or,121);var Vr=()=>{let e=N().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.notifyScheduled=false,e.batchDepth=0;};x("notify.reset",Vr,40);var Pr=()=>N().computedCleanups,Lt=new WeakMap;var Ir=e=>{let t=Lt.get(e);return t||(t=new Map,Lt.set(e,t)),t};var Bt=e=>{let t=Pr(),r=t.get(e);if(!r){M()&&p(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var qt=(e,t=N())=>Ir(t).get(e)?.autoDispose===true;var Kt=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,c=e.metaEntries,d=e.snapshotCache,g=e.featureRuntimes,u=e.deletingStores,S=(i,b)=>{Se(b,{onError:c[i]?.options?.onError,severity:"warn",visibility:"dev"});},y=({name:i,prev:b,options:m,initialState:E,getMeta:P,getStoreValue:$,hasStore:F})=>({name:i,options:m,prev:b,getMeta:P,getStoreValue:$,getAllStores:()=>t,getInitialState:()=>E,hasStore:F,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:k=>{Se(k,{onError:m.onError,severity:"warn",visibility:"dev"});},warn:p,warnAlways:te,log:re,hashState:Pe,deepClone:q,sanitize:Ne,validate:()=>({ok:true,value:b}),isDev:M}),C=({name:i,prev:b,options:m,initialState:E,phase:P})=>{let $=y({name:i,prev:b,options:m,initialState:E,getMeta:()=>c[i],getStoreValue:()=>t[i],hasStore:()=>ee(e,i)}),F=y({name:i,prev:b,options:m,initialState:E,getMeta:()=>{},getStoreValue:()=>b,hasStore:()=>false});J().forEach(k=>{let A=g.get(k);P==="before"?A?.beforeStoreDelete?.($):A?.afterStoreDelete?.(F);});},l=i=>{if(!ee(e,i))return;let b=t[i],m=c[i].options,E=n[i],P=r[i];u.add(i);try{P?.forEach(k=>{try{k(null);}catch(A){p(`Subscriber for "${i}" threw during delete: ${A?.message??A}`);}}),vt({name:i,label:"onDelete",fn:m.onDelete,args:[b],reportIssue:(k,A)=>{Se(k,{onError:m.onError,severity:"warn",visibility:A});}}),C({name:i,prev:b,options:m,initialState:E,phase:"before"}),delete t[i],delete r[i],delete n[i],delete o[i],delete c[i],delete d[i],Ft(i)&&Bt(i);let F=e.computedDependents[i];if(F)for(let k of [...F]){let A=We(k);if(A&&qt(k,e)&&A.deps.every(ae=>!ee(e,ae))){l(k);continue}p(`[stroid] source store "${i}" was deleted. Computed store "${k}" depends on it and will return stale data. Call deleteComputed("${k}") to clean up.`);}C({name:i,prev:b,options:m,initialState:E,phase:"after"}),ge("afterStoreDelete",i,{type:"afterStoreDelete",prev:b}),Fe(e,{type:"deleted",name:i}),re(`Store "${i}" deleted`);}finally{u.delete(i);}};return {deleteExistingStore:l,clearAllStores:()=>{let i=[],m=0,E=Number.POSITIVE_INFINITY;for(;m<20;){let $=Object.keys(t);if($.length===0)break;$.forEach(k=>{ee(e,k)&&(l(k),i.push(k));}),m+=1;let F=Object.keys(t).length;if(F===0||F>=E)break;E=F;}let P=Object.keys(t).length;return P>0?p(`clearAllStores stopped after ${m} pass${m===1?"":"es"}; ${P} store(s) still registered (likely recreated during deletion).`):re(`All stores cleared (${i.length} stores removed)`),i},clearStores:i=>{let b=Object.keys(t).filter(m=>i?i.endsWith("*")?m.startsWith(i.slice(0,-1)):m===i:true);return b.forEach(m=>l(m)),b},reportStoreError:S}};var Je=Q,Gt=Z(Je),V=()=>{let e=L(Gt);return Ee(e),e};var N=()=>V();var ie=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),_r=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),Wr=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});ie(()=>V().stores);ie(()=>V().subscribers);ie(()=>V().initialStates);ie(()=>V().initialFactories);ie(()=>V().metaEntries);ie(()=>V().snapshotCache);var se=_r(()=>V().featureRuntimes),Ut=new WeakMap,Yt=e=>{let t=Ut.get(e);return t||(t=Kt(e),Ut.set(e,t)),t};Wr(()=>Yt(V()));var Qe=()=>Yt(V()),zr=e=>{let t=se.get(e);if(t)return t;let r=ye(e);if(!r)return;let n=r();return se.set(e,n),n},Hr=()=>{J().forEach(e=>{zr(e);});};Hr();var Lr=()=>{lt(V());},Br=()=>{se.forEach(e=>{try{e.resetAll?.();}catch{}}),se.clear();};x("features.reset",Br,10);x("registries.clear",Lr,20);x("registry.default",()=>{Je=Q,Gt=Z(Je);},115);var Xt=()=>L().async;var Jt=()=>{he(Xt());};var Rs=()=>{Qe().clearAllStores(),Jt(),we();},ws=e=>{Qe().clearStores(e),we();};export{Rs as clearAllStores,ws as clearStores};//# sourceMappingURL=runtime-admin.js.map
2
2
  //# sourceMappingURL=runtime-admin.js.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @module runtime-patch
3
+ *
4
+ * LAYER: Store runtime
5
+ * OWNS: Canonical serializable patch model and write-lowering helpers.
6
+ *
7
+ * Consumers: store-set-impl, store-replace-impl, store-admin-impl, store-hydrate-impl.
8
+ */
9
+
10
+ type RuntimePatchOp = "set" | "merge" | "delete" | "insert";
11
+ type RuntimePatchSource = "setStore" | "replaceStore" | "resetStore" | "hydrateStores";
12
+ type RuntimePatchPath = readonly (string | number)[];
13
+ interface RuntimePatchMeta {
14
+ timestamp: number;
15
+ source: RuntimePatchSource;
16
+ causedBy?: readonly string[];
17
+ isUnsafe?: boolean;
18
+ asyncBoundary?: boolean;
19
+ }
20
+ interface RuntimePatch {
21
+ id: string;
22
+ store: string;
23
+ path: RuntimePatchPath;
24
+ op: RuntimePatchOp;
25
+ value?: unknown;
26
+ meta: RuntimePatchMeta;
27
+ }
28
+
29
+ export type { RuntimePatch as R, RuntimePatchMeta as a, RuntimePatchOp as b };
@@ -1,5 +1,7 @@
1
1
  import { StoreFeatureMeta } from './feature.js';
2
2
  import { getAsyncMetrics } from './async.js';
3
+ import { RuntimeNodeId, ComputedDescriptor, RuntimeGraph } from './computed-types.js';
4
+ export { ComputedClassification, RuntimeEdgeType, RuntimeGraphEdge, RuntimeGraphGranularity, RuntimeGraphNode, RuntimeNodeType } from './computed-types.js';
3
5
  import './options.js';
4
6
  import './utility.js';
5
7
  import './cache.js';
@@ -58,9 +60,12 @@ declare const getComputedGraph: () => {
58
60
  dependencies: Record<string, string[]>;
59
61
  dependents: Record<string, string[]>;
60
62
  };
63
+ declare const getRuntimeGraph: () => RuntimeGraph;
61
64
  declare const getComputedDeps: (name: string) => {
62
65
  deps: string[];
63
66
  dependents: string[];
64
67
  } | null;
68
+ declare const getComputedDescriptor: (nodeId: RuntimeNodeId) => ComputedDescriptor | null;
69
+ declare const evaluateComputed: (nodeId: RuntimeNodeId, snapshot: Record<string, unknown>) => unknown;
65
70
 
66
- export { type ColdStoreReport, type StoreHealthEntry, type StoreHealthReport, findColdStores, getAsyncInflightCount, getComputedDeps, getComputedGraph, getInitialState, getMetrics, getPersistQueueDepth, getStoreHealth, getStoreMeta, getSubscriberCount, listStores };
71
+ export { type ColdStoreReport, ComputedDescriptor, RuntimeGraph, RuntimeNodeId, type StoreHealthEntry, type StoreHealthReport, evaluateComputed, findColdStores, getAsyncInflightCount, getComputedDeps, getComputedDescriptor, getComputedGraph, getInitialState, getMetrics, getPersistQueueDepth, getRuntimeGraph, getStoreHealth, getStoreMeta, getSubscriberCount, listStores };
@@ -1,4 +1,4 @@
1
- var Zt=new Map,M=(e,t,r=0)=>{!e||typeof t!="function"||Zt.set(e,{name:e,order:r,fn:t});};var at=new Map;var Se=e=>at.get(e),te=()=>Array.from(at.keys());var ut=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),lt=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:ut(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),dt=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),ut().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var Fe=new Map,ft=new WeakSet,Ee=e=>{ft.has(e)||(ft.add(e),te().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=Se(t);r&&e.featureRuntimes.set(t,r());}}));},tr=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,pt,Te=e=>(pt||tr||e).replace(/\.ts(\?|$)/,".js$1"),q=Te(new URL("../../store.js",import.meta.url).href);var rr=()=>{pt=void 0,Fe.clear();};M("registry.scope-override",rr,110);var nr=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),or=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},sr=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,failed:false,error:void 0}),ir=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,transaction:sr(),async:lt(),notify:nr(),lifecycleListener:null};return Ee(t),t},K=e=>{let t=Te(e),r=Fe.get(t);if(r)return r;let n=ir();return Fe.set(t,n),n},Q=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var gt=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.failed=false,e.transaction.error=void 0,or(e.notify),dt(e.async),e.lifecycleListener=null;};var Ae=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var L=[],mt={run:(e,t)=>{L.push(e);try{return t()}finally{L.pop();}},get:()=>L.length>0?L[L.length-1]:null,enterWith:e=>{if(L.length>0){L[L.length-1]=e;return}L.push(e);}};var _=e=>(mt).get()||e||K(q);var cr={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},St={logSink:cr,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},je=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),Oe=new WeakMap,bt=je(St),ur=e=>{let t=Oe.get(e);return t||(t=je(bt),Oe.set(e,t)),t};var F=()=>ur(_());var pr=()=>{Oe=new WeakMap,bt=je(St);};M("config.reset",pr,90);var gr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,yr=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,wt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,mr="production",hr=gr??yr??mr,de=typeof wt=="boolean"?wt:hr!=="production",v=()=>de,Ne=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},Sr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},br=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},be=(e,t)=>{if((F().logSink.critical??Sr)(e,t),F().assertRuntime)throw new Error(e)},f=(e,t)=>{if(!de)return;if((F().logSink.warn??Ne)(e,t),F().assertRuntime)throw new Error(e)},re=(e,t)=>{if((F().logSink.warn??Ne)(e,t),F().assertRuntime)throw new Error(e)},Ie=(e,t)=>{if(de&&(F().logSink.warn??Ne)(e,t),be(e,t),F().assertRuntime)throw new Error(e)},fe=(e,t)=>{if(!de)return;(F().logSink.log??br)(e,t);};var Rt=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",Ct=()=>"Map detected; converting to plain object.",xt=()=>"Set detected; converting to array.";var wr=128,Rr=(e,t)=>Math.abs(e.length-t.length)>2?false:Math.max(e.length,t.length)<=wr,Cr=(e,t)=>{if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;let r=Array.from({length:e.length+1},(o,s)=>s),n=new Array(e.length+1);for(let o=1;o<=t.length;o++){n[0]=o;for(let s=1;s<=e.length;s++)n[s]=t[o-1]===e[s-1]?r[s-1]:Math.min(r[s-1],n[s-1],r[s])+1;[r,n]=[n,r];}return r[e.length]},$e=(e,t)=>{let r=t.find(n=>{let o=n.toLowerCase(),s=e.toLowerCase();return o.includes(s)||s.includes(o)||Rr(o,s)&&Cr(o,s)<=2});if(r){f(`Store "${e}" not found. Did you mean "${r}"?`);return}Ie(`Store "${e}" not found.
1
+ var dr=new Map,k=(e,t,r=0)=>{!e||typeof t!="function"||dr.set(e,{name:e,order:r,fn:t});};var ft=new Map;var we=e=>ft.get(e),re=()=>Array.from(ft.keys());var yt=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),mt=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:yt(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),ht=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),yt().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var Fe=new Map,St=new WeakSet,Ae=e=>{St.has(e)||(St.add(e),re().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=we(t);r&&e.featureRuntimes.set(t,r());}}));},fr=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,bt,De=e=>(bt||fr||e).replace(/\.ts(\?|$)/,".js$1"),G=De("stroid:default-registry");var gr=()=>{bt=void 0,Fe.clear();};k("registry.scope-override",gr,110);var yr=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),mr=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},hr=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,runtimePatches:[],failed:false,error:void 0}),Sr=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,lastRuntimePatches:[],transaction:hr(),async:mt(),notify:yr(),lifecycleListener:null};return Ae(t),t},K=e=>{let t=De(e),r=Fe.get(t);if(r)return r;let n=Sr();return Fe.set(t,n),n},U=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var Rt=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.runtimePatches.length=0,e.transaction.failed=false,e.transaction.error=void 0,e.lastRuntimePatches.length=0,mr(e.notify),ht(e.async),e.lifecycleListener=null;};var Oe=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var B=[],Ct={run:(e,t)=>{B.push(e);try{return t()}finally{B.pop();}},get:()=>B.length>0?B[B.length-1]:null,enterWith:e=>{if(B.length>0){B[B.length-1]=e;return}B.push(e);}};var _=e=>(Ct).get()||e||K(G);var Rr={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},vt={logSink:Rr,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},Ie=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),je=new WeakMap,kt=Ie(vt),wr=e=>{let t=je.get(e);return t||(t=Ie(kt),je.set(e,t)),t};var F=()=>wr(_());var kr=()=>{je=new WeakMap,kt=Ie(vt);};k("config.reset",kr,90);var Mr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,Er=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,Mt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,Tr="production",Fr=Mr??Er??Tr,ye=typeof Mt=="boolean"?Mt:Fr!=="production",M=()=>ye,Pe=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},Ar=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},Dr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},Ce=(e,t)=>{if((F().logSink.critical??Ar)(e,t),F().assertRuntime)throw new Error(e)},g=(e,t)=>{if(!ye)return;if((F().logSink.warn??Pe)(e,t),F().assertRuntime)throw new Error(e)},ne=(e,t)=>{if((F().logSink.warn??Pe)(e,t),F().assertRuntime)throw new Error(e)},$e=(e,t)=>{if(ye&&(F().logSink.warn??Pe)(e,t),Ce(e,t),F().assertRuntime)throw new Error(e)},oe=(e,t)=>{if(!ye)return;(F().logSink.log??Dr)(e,t);};var Et=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",Tt=()=>"Map detected; converting to plain object.",Ft=()=>"Set detected; converting to array.";var Or=128,Nr=(e,t)=>Math.abs(e.length-t.length)>2?false:Math.max(e.length,t.length)<=Or,jr=(e,t)=>{if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;let r=Array.from({length:e.length+1},(o,s)=>s),n=new Array(e.length+1);for(let o=1;o<=t.length;o++){n[0]=o;for(let s=1;s<=e.length;s++)n[s]=t[o-1]===e[s-1]?r[s-1]:Math.min(r[s-1],n[s-1],r[s])+1;[r,n]=[n,r];}return r[e.length]},_e=(e,t)=>{let r=t.find(n=>{let o=n.toLowerCase(),s=e.toLowerCase();return o.includes(s)||s.includes(o)||Nr(o,s)&&jr(o,s)<=2});if(r){g(`Store "${e}" not found. Did you mean "${r}"?`);return}$e(`Store "${e}" not found.
2
2
  Available stores: [${t.join(", ")}]
3
- Call createStore("${e}", data) first.`);};var ne=new Set(["__proto__","constructor","prototype"]);var vt=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,xr=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var pe=(e,t)=>{let r=xr(e);if(r)throw new Error(`${r} values are not supported`);let n=vt(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return v()&&f(Rt()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),v()&&f(Ct());let o={};for(let[s,d]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(s)]=pe(d,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),v()&&f(xt()),Array.from(e,o=>pe(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},s=Object.getOwnPropertyDescriptors(e);for(let[d,p]of Object.entries(s))if(p.enumerable&&!ne.has(d)){if("get"in p||"set"in p)throw new Error(`Accessor properties are not supported during sanitize ("${d}")`);o[d]=pe(p.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>pe(o,t))}return e},_e=e=>pe(e,new WeakSet);var Pe=null,vr=()=>{if(Pe)return Pe;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return Pe=t,t},Mt=e=>{let t=vr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},kr=2166136261,Mr=2654435761,Fr=1e5,U=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},J=(e,t)=>{U(e,t.length);for(let r=0;r<t.length;r++)U(e,t.charCodeAt(r));},w=(e,t)=>{J(e,t);},kt=(e,t)=>{if(Number.isNaN(t)){w(e,"NaN");return}if(!Number.isFinite(t)){w(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){w(e,"-0");return}let r=t|0;if(t===r){w(e,"int"),U(e,r);return}w(e,"num"),J(e,String(t));},oe=(e,t)=>{if(e.nodes++>Fr){w(e,"[max]");return}if(t===null){w(e,"null");return}let r=typeof t;if(r==="string"){w(e,"string"),J(e,t);return}if(r==="number"){w(e,"number"),kt(e,t);return}if(r==="boolean"){w(e,t?"true":"false");return}if(r==="undefined"){w(e,"undefined");return}if(r==="bigint"){w(e,"bigint"),J(e,t.toString());return}if(r==="symbol"){w(e,"symbol");let u=t;J(e,Symbol.keyFor(u)??u.description??String(u));return}if(r==="function"){w(e,"function"),J(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){w(e,"ref"),U(e,o);return}let s=e.nextId++;if(e.seen.set(n,s),Array.isArray(n)){w(e,"array"),U(e,n.length);for(let u=0;u<n.length;u++)Object.prototype.hasOwnProperty.call(n,u)?oe(e,n[u]):w(e,"hole");return}if(n instanceof Date){w(e,"date"),kt(e,n.getTime());return}if(n instanceof Map){w(e,"map"),U(e,n.size),n.forEach((u,S)=>{oe(e,S),oe(e,u);});return}if(n instanceof Set){w(e,"set"),U(e,n.size),n.forEach(u=>{oe(e,u);});return}w(e,"object");let d=Object.getOwnPropertyDescriptors(n),p=[];Object.entries(d).forEach(([u,S])=>{S?.enumerable&&(ne.has(u)||"get"in S||"set"in S||p.push([u,S]));}),U(e,p.length);for(let[u,S]of p)J(e,u),oe(e,S.value);},Ve=e=>{if(typeof e=="string")return Mt(JSON.stringify(e));let t={h1:kr,h2:Mr,seen:new WeakMap,nextId:1,nodes:0};oe(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var Er=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",N=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Array.isArray(e))return e.slice();let t={},r=Object.getOwnPropertyDescriptors(e);return Object.entries(r).forEach(([n,o])=>{o.enumerable&&(ne.has(n)||"get"in o||"set"in o||(t[n]=o.value));}),t},We=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Tr=e=>We(e)===null,Ar=e=>{let t=We(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},Z=(e,t=new WeakMap)=>{if(Ar(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((s,d)=>{o.set(Z(d,t),Z(s,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(s=>{o.add(Z(s,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((s,d)=>{o[d]=Z(s,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,s])=>{!s.enumerable||ne.has(o)||"get"in s||"set"in s||(r[o]=Z(s.value,t));}),r},P=e=>{if(Er)try{return structuredClone(e)}catch(t){if(!Tr(e)){let r=We(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return f(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),Z(e)}return Z(e)};var Ft=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(s){let d=`${t} for "${e}" failed: ${s?.message??s}`;o(d,"always");}};var Dr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;re(`${t} callback threw: ${String(o)}`);}},we=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(Dr(o,"onError",e),r==="critical"){n==="dev"&&f(e),be(e);return}if(n==="always"){re(e);return}f(e);};M("computed.order-resolver",()=>{},105);var At=()=>_(K(q)),Ce=()=>At().computedEntries,He=()=>At().computedDependents;var Dt=e=>Object.prototype.hasOwnProperty.call(Ce(),e);var Ot=()=>{let e=Ce(),t=He(),r=Object.keys(e),n=[];for(let[o,s]of Object.entries(e))for(let d of s.deps)n.push({from:d,to:o});return {nodes:r,edges:n,dependencies:Object.fromEntries(Object.entries(e).map(([o,s])=>[o,[...s.deps]])),dependents:Object.fromEntries(Object.entries(t).map(([o,s])=>[o,[...s]]))}},jt=e=>{let t=Ce()[e];if(!t)return null;let r=He()[e];return {deps:[...t.deps],dependents:r?[...r]:[]}};var jr=new Set;var Nr=()=>{jr.clear();};M("ssr.warnings",Nr,60);var Nt=e=>G.get(e)?.api;var Ht=new Map;var ye=(e,t,r)=>{let n=Ht.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(s){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,s);}});};var Wr=()=>{let e=me().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0;};M("notify.reset",Wr,40);var Hr=()=>me().computedCleanups;var Bt=e=>{let t=Hr(),r=t.get(e);if(!r){v()&&f(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var qt=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,s=e.metaEntries,d=e.snapshotCache,p=e.featureRuntimes,u=e.deletingStores,S=(a,C)=>{we(C,{onError:s[a]?.options?.onError,severity:"warn",visibility:"dev"});},y=({name:a,prev:C,options:m,initialState:T,getMeta:A,getStoreValue:W,hasStore:D})=>({name:a,options:m,prev:C,getMeta:A,getStoreValue:W,getAllStores:()=>t,getInitialState:()=>T,hasStore:D,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:x=>{we(x,{onError:m.onError,severity:"warn",visibility:"dev"});},warn:f,warnAlways:re,log:fe,hashState:Ve,deepClone:P,sanitize:_e,validate:()=>({ok:true,value:C}),isDev:v}),h=({name:a,prev:C,options:m,initialState:T,phase:A})=>{let W=y({name:a,prev:C,options:m,initialState:T,getMeta:()=>s[a],getStoreValue:()=>t[a],hasStore:()=>Q(e,a)}),D=y({name:a,prev:C,options:m,initialState:T,getMeta:()=>{},getStoreValue:()=>C,hasStore:()=>false});te().forEach(x=>{let I=p.get(x);A==="before"?I?.beforeStoreDelete?.(W):I?.afterStoreDelete?.(D);});},g=a=>{if(!Q(e,a))return;let C=t[a],m=s[a].options,T=n[a],A=r[a];u.add(a);try{A?.forEach(x=>{try{x(null);}catch(I){f(`Subscriber for "${a}" threw during delete: ${I?.message??I}`);}}),Ft({name:a,label:"onDelete",fn:m.onDelete,args:[C],reportIssue:(x,I)=>{we(x,{onError:m.onError,severity:"warn",visibility:I});}}),h({name:a,prev:C,options:m,initialState:T,phase:"before"}),delete t[a],delete r[a],delete n[a],delete o[a],delete s[a],delete d[a],Dt(a)&&Bt(a);let D=e.computedDependents[a];if(D)for(let x of D)f(`[stroid] source store "${a}" was deleted. Computed store "${x}" depends on it and will return stale data. Call deleteComputed("${x}") to clean up.`);h({name:a,prev:C,options:m,initialState:T,phase:"after"}),ye("afterStoreDelete",a,{type:"afterStoreDelete",prev:C}),Ae(e,{type:"deleted",name:a}),fe(`Store "${a}" deleted`);}finally{u.delete(a);}};return {deleteExistingStore:g,clearAllStores:()=>{let a=[],m=0,T=Number.POSITIVE_INFINITY;for(;m<20;){let W=Object.keys(t);if(W.length===0)break;W.forEach(x=>{Q(e,x)&&(g(x),a.push(x));}),m+=1;let D=Object.keys(t).length;if(D===0||D>=T)break;T=D;}let A=Object.keys(t).length;return A>0?f(`clearAllStores stopped after ${m} pass${m===1?"":"es"}; ${A} store(s) still registered (likely recreated during deletion).`):f(`All stores cleared (${a.length} stores removed)`),a},clearStores:a=>{let C=Object.keys(t).filter(m=>a?a.endsWith("*")?m.startsWith(a.slice(0,-1)):m===a:true);return C.forEach(m=>g(m)),C},reportStoreError:S}};var Je=q,Ut=K(Je);var V=()=>{let e=_(Ut);return Ee(e),e};var me=()=>V();var se=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),zr=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),Lr=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});se(()=>V().stores);var Gt=se(()=>V().subscribers);se(()=>V().initialStates);se(()=>V().initialFactories);se(()=>V().metaEntries);se(()=>V().snapshotCache);var G=zr(()=>V().featureRuntimes),Kt=new WeakMap,Br=e=>{let t=Kt.get(e);return t||(t=qt(e),Kt.set(e,t)),t};Lr(()=>Br(V()));var qr=e=>{let t=G.get(e);if(t)return t;let r=Se(e);if(!r)return;let n=r();return G.set(e,n),n},Kr=()=>{te().forEach(e=>{qr(e);});};Kr();var Ur=()=>{gt(V());},Gr=()=>{G.forEach(e=>{try{e.resetAll?.();}catch{}}),G.clear();};M("features.reset",Gr,10);M("registries.clear",Ur,20);M("registry.default",()=>{Je=q,Ut=K(Je);},115);var Ze=()=>_().async;var Yr=()=>Ze().inflight;var Yt=()=>Ze().asyncMetrics;var et=e=>{let t=`${e}:`,r=Yr(),n=0;return Object.keys(r).forEach(o=>{(o===e||o.startsWith(t))&&(n+=1);}),n};var Xt=()=>({...Yt()});var ie=()=>_(K(q)),he=e=>{let t=ie();return Q(t,e)?true:($e(e,Object.keys(t.stores)),false)},Xr=(e,t)=>{if(!t)return true;if(t.endsWith("*")){let r=t.slice(0,-1);return e.startsWith(r)}return e===t},Qt=e=>{let t=ie();return Object.keys(t.stores).filter(r=>Xr(r,e))},Qr=e=>{if(!he(e))return null;let t=ie().metaEntries[e],r=N(t);r.metrics=N(t.metrics);let n=N(t.options),o=n;return o.persist&&typeof o.persist=="object"&&(o.persist=N(o.persist)),o.sync&&typeof o.sync=="object"&&(o.sync=N(o.sync)),o.devtools&&typeof o.devtools=="object"&&(o.devtools=N(o.devtools)),o.lifecycle&&typeof o.lifecycle=="object"&&(o.lifecycle=N(o.lifecycle)),r.options=n,r},Is=()=>P(ie().initialStates),Jr=e=>{let t=ie().metaEntries[e];return t?.metrics?{...t.metrics}:null},Zr=e=>he(e)?Gt[e]?.size??0:0,en=e=>he(e)?et(e):0,tn=(e={})=>{let t=e.unreadThresholdMs??6e4,r=Date.now();return Qt().map(n=>{let o=ie().metaEntries[n],s=o?.createdAt?new Date(o.createdAt).getTime():r,d=o?.lastReadAtMs??null,p=Math.max(0,r-s),u;return (o?.readCount??0)===0&&(o?.updateCount??0)===0?u="cold":(o?.readCount??0)===0?u="write-only":d&&r-d>t?u="stale":u="active",{name:n,createdAt:o?.createdAt??new Date(s).toISOString(),lastReadAt:o?.lastReadAt??null,updateCount:o?.updateCount??0,readCount:o?.readCount??0,subscriberCount:Zr(n),ageMs:p,verdict:u}}).filter(n=>n.verdict==="cold"||n.verdict==="stale"||e.includeWriteOnly&&n.verdict==="write-only")},rn=e=>{if(e){if(!he(e))return null;let r=Qr(e);return {name:e,meta:r,metrics:Jr(e),async:{inflight:en(e),lastCorrelationId:r?.lastCorrelationId??null,traceContext:r?.lastTraceContext??null},persist:{queueDepth:nn(e)}}}let t=Qt().map(r=>rn(r));return {stores:t,async:Xt(),registry:{totalStores:t.length,coldStores:tn({})}}},nn=e=>{if(!he(e))return 0;let t=Nt("persist");return t?.getPersistQueueDepth?t.getPersistQueueDepth(e)??0:0},$s=()=>Ot(),_s=e=>jt(e);export{tn as findColdStores,en as getAsyncInflightCount,_s as getComputedDeps,$s as getComputedGraph,Is as getInitialState,Jr as getMetrics,nn as getPersistQueueDepth,rn as getStoreHealth,Qr as getStoreMeta,Zr as getSubscriberCount,Qt as listStores};//# sourceMappingURL=runtime-tools.js.map
3
+ Call createStore("${e}", data) first.`);};var se=new Set(["__proto__","constructor","prototype"]);var At=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,Ir=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var me=(e,t)=>{let r=Ir(e);if(r)throw new Error(`${r} values are not supported`);let n=At(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return M()&&g(Et()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),M()&&g(Tt());let o={};for(let[s,c]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(s)]=me(c,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),M()&&g(Ft()),Array.from(e,o=>me(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},s=Object.getOwnPropertyDescriptors(e);for(let[c,d]of Object.entries(s))if(d.enumerable&&!se.has(c)){if("get"in d||"set"in d)throw new Error(`Accessor properties are not supported during sanitize ("${c}")`);o[c]=me(d.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>me(o,t))}return e},Ve=e=>me(e,new WeakSet);var We=null,Pr=()=>{if(We)return We;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return We=t,t},Ot=e=>{let t=Pr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},$r=2166136261,_r=2654435761,Vr=1e5,Y=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},Z=(e,t)=>{Y(e,t.length);for(let r=0;r<t.length;r++)Y(e,t.charCodeAt(r));},C=(e,t)=>{Z(e,t);},Dt=(e,t)=>{if(Number.isNaN(t)){C(e,"NaN");return}if(!Number.isFinite(t)){C(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){C(e,"-0");return}let r=t|0;if(t===r){C(e,"int"),Y(e,r);return}C(e,"num"),Z(e,String(t));},ie=(e,t)=>{if(e.nodes++>Vr){C(e,"[max]");return}if(t===null){C(e,"null");return}let r=typeof t;if(r==="string"){C(e,"string"),Z(e,t);return}if(r==="number"){C(e,"number"),Dt(e,t);return}if(r==="boolean"){C(e,t?"true":"false");return}if(r==="undefined"){C(e,"undefined");return}if(r==="bigint"){C(e,"bigint"),Z(e,t.toString());return}if(r==="symbol"){C(e,"symbol");let l=t;Z(e,Symbol.keyFor(l)??l.description??String(l));return}if(r==="function"){C(e,"function"),Z(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){C(e,"ref"),Y(e,o);return}let s=e.nextId++;if(e.seen.set(n,s),Array.isArray(n)){C(e,"array"),Y(e,n.length);for(let l=0;l<n.length;l++)Object.prototype.hasOwnProperty.call(n,l)?ie(e,n[l]):C(e,"hole");return}if(n instanceof Date){C(e,"date"),Dt(e,n.getTime());return}if(n instanceof Map){C(e,"map"),Y(e,n.size),n.forEach((l,h)=>{ie(e,h),ie(e,l);});return}if(n instanceof Set){C(e,"set"),Y(e,n.size),n.forEach(l=>{ie(e,l);});return}C(e,"object");let c=Object.getOwnPropertyDescriptors(n),d=[];Object.entries(c).forEach(([l,h])=>{h?.enumerable&&(se.has(l)||"get"in h||"set"in h||d.push([l,h]));}),Y(e,d.length);for(let[l,h]of d)Z(e,l),ie(e,h.value);},He=e=>{if(typeof e=="string")return Ot(JSON.stringify(e));let t={h1:$r,h2:_r,seen:new WeakMap,nextId:1,nodes:0};ie(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var Wr=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",j=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Array.isArray(e))return e.slice();let t={},r=Object.getOwnPropertyDescriptors(e);return Object.entries(r).forEach(([n,o])=>{o.enumerable&&(se.has(n)||"get"in o||"set"in o||(t[n]=o.value));}),t},ze=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Hr=e=>ze(e)===null,zr=e=>{let t=ze(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},ee=(e,t=new WeakMap)=>{if(zr(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((s,c)=>{o.set(ee(c,t),ee(s,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(s=>{o.add(ee(s,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((s,c)=>{o[c]=ee(s,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,s])=>{!s.enumerable||se.has(o)||"get"in s||"set"in s||(r[o]=ee(s.value,t));}),r},V=e=>{if(Wr)try{return structuredClone(e)}catch(t){if(!Hr(e)){let r=ze(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return g(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),ee(e)}return ee(e)};var Nt=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(s){let c=`${t} for "${e}" failed: ${s?.message??s}`;o(c,"always");}};var Lr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;ne(`${t} callback threw: ${String(o)}`);}},xe=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(Lr(o,"onError",e),r==="critical"){n==="dev"&&g(e),Ce(e);return}if(n==="always"){ne(e);return}g(e);};k("computed.order-resolver",()=>{},105);var _t=()=>_(K(G));var I=()=>_t().computedEntries,Le=()=>_t().computedDependents;var Vt=e=>Object.prototype.hasOwnProperty.call(I(),e);var Be=e=>e==="asyncBoundary"?"async-boundary":"computed",Wt=(e,t,r=[])=>JSON.stringify([e,t,[...r]]),Br=e=>e==="leaf"||e==="computed"||e==="async-boundary",qr=e=>{try{let t=JSON.parse(e);if(!Array.isArray(t)||t.length!==3)return null;let[r,n,o]=t;return !Br(r)||typeof n!="string"||!Array.isArray(o)||o.some(s=>typeof s!="string"&&typeof s!="number")?null:{type:r,storeId:n,path:[...o]}}catch{return null}},Pt=(e,t)=>({id:Wt(e,t),storeId:t,path:[],type:e}),Ht=e=>{let t=I()[e];return Pt(t?Be(t.classification):"leaf",e)},zt=e=>{let t=I();if(t[e])return e;let r=qr(e);if(!r||r.path.length!==0||r.type!=="computed"&&r.type!=="async-boundary")return null;let n=t[r.storeId];return n&&Be(n.classification)===r.type?r.storeId:null},Lt=(e,t)=>{let r=Be(t.classification);return {id:Wt(r,e),storeId:e,path:[],dependencies:t.deps.map(n=>Ht(n).id),nodeType:r,classification:t.classification,...t.classification==="asyncBoundary"?{asyncBoundary:true}:{}}},qe=e=>{let t=zt(e);if(!t)return null;let r=I()[t];return r?Lt(t,r):null};var Ge=()=>{let e=I(),t=Le(),r=Object.keys(e),n=[];for(let[o,s]of Object.entries(e))for(let c of s.deps)n.push({from:c,to:o});return {nodes:r,edges:n,dependencies:Object.fromEntries(Object.entries(e).map(([o,s])=>[o,[...s.deps]])),dependents:Object.fromEntries(Object.entries(t).map(([o,s])=>[o,[...s]]))}},he=e=>{let t=I()[e];if(!t)return null;let r=Le()[e];return {deps:[...t.deps],dependents:r?[...r]:[]}},Ke=()=>{let e=I(),t=new Map,r=new Map;for(let[s,c]of Object.entries(e)){let d=Lt(s,c);t.set(d.id,{id:d.id,storeId:d.storeId,path:d.path,type:d.nodeType}),c.deps.forEach((l,h)=>{let p=Ht(l),b=I()[l]?"computed-input":"leaf-input";t.set(p.id,p),r.set(`${p.id}|${d.id}|${h}`,{from:p.id,to:d.id,type:b});});}let n=Array.from(t.values()).sort((s,c)=>s.id.localeCompare(c.id)),o=Array.from(r.values()).sort((s,c)=>{let d=s.from.localeCompare(c.from);if(d!==0)return d;let l=s.to.localeCompare(c.to);return l!==0?l:s.type.localeCompare(c.type)});return {granularity:"store",nodes:n,edges:o}},Kr=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),$t=(e,t)=>Kr(e,t)?e[t]:null,Bt=(e,t,r)=>{if(r.memo.has(e))return r.memo.get(e);if(r.stack.has(e))throw new Error(`evaluateComputed("${e}") detected a computed cycle`);let n=I()[e];if(!n)throw new Error(`evaluateComputed("${e}") could not find a computed descriptor`);if(n.classification!=="deterministic")throw new Error(`evaluateComputed("${e}") only supports deterministic computed nodes`);r.stack.add(e);try{let o=n.deps.map(c=>{let d=I()[c];if(!d)return $t(t,c);if(d.classification!=="deterministic")throw new Error(`evaluateComputed("${e}") cannot cross non-deterministic dependency "${c}"`);return Bt(c,t,r)}),s;try{s=n.compute(...o);}catch{s=$t(t,e);}return r.memo.set(e,s),s}finally{r.stack.delete(e);}},Ue=(e,t)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`evaluateComputed("${e}") requires a snapshot record`);let r=zt(e);if(!r)throw new Error(`evaluateComputed("${e}") could not find a computed descriptor`);return Bt(r,t,{memo:new Map,stack:new Set})};var Ur=new Set;var Yr=()=>{Ur.clear();};k("ssr.warnings",Yr,60);var qt=e=>X.get(e)?.api;var Jt=new Map;var be=(e,t,r)=>{let n=Jt.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(s){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,s);}});};var Zr=()=>{};k("write-context.runner",Zr,121);var rn=()=>{let e=ae().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.notifyScheduled=false,e.batchDepth=0;};k("notify.reset",rn,40);var nn=()=>ae().computedCleanups,tr=new WeakMap;var on=e=>{let t=tr.get(e);return t||(t=new Map,tr.set(e,t)),t};var rr=e=>{let t=nn(),r=t.get(e);if(!r){M()&&g(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var nr=(e,t=ae())=>on(t).get(e)?.autoDispose===true;var or=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,s=e.metaEntries,c=e.snapshotCache,d=e.featureRuntimes,l=e.deletingStores,h=(a,R)=>{xe(R,{onError:s[a]?.options?.onError,severity:"warn",visibility:"dev"});},p=({name:a,prev:R,options:S,initialState:E,getMeta:P,getStoreValue:H,hasStore:A})=>({name:a,options:S,prev:R,getMeta:P,getStoreValue:H,getAllStores:()=>t,getInitialState:()=>E,hasStore:A,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:x=>{xe(x,{onError:S.onError,severity:"warn",visibility:"dev"});},warn:g,warnAlways:ne,log:oe,hashState:He,deepClone:V,sanitize:Ve,validate:()=>({ok:true,value:R}),isDev:M}),b=({name:a,prev:R,options:S,initialState:E,phase:P})=>{let H=p({name:a,prev:R,options:S,initialState:E,getMeta:()=>s[a],getStoreValue:()=>t[a],hasStore:()=>U(e,a)}),A=p({name:a,prev:R,options:S,initialState:E,getMeta:()=>{},getStoreValue:()=>R,hasStore:()=>false});re().forEach(x=>{let D=d.get(x);P==="before"?D?.beforeStoreDelete?.(H):D?.afterStoreDelete?.(A);});},f=a=>{if(!U(e,a))return;let R=t[a],S=s[a].options,E=n[a],P=r[a];l.add(a);try{P?.forEach(x=>{try{x(null);}catch(D){g(`Subscriber for "${a}" threw during delete: ${D?.message??D}`);}}),Nt({name:a,label:"onDelete",fn:S.onDelete,args:[R],reportIssue:(x,D)=>{xe(x,{onError:S.onError,severity:"warn",visibility:D});}}),b({name:a,prev:R,options:S,initialState:E,phase:"before"}),delete t[a],delete r[a],delete n[a],delete o[a],delete s[a],delete c[a],Vt(a)&&rr(a);let A=e.computedDependents[a];if(A)for(let x of [...A]){let D=he(x);if(D&&nr(x,e)&&D.deps.every(le=>!U(e,le))){f(x);continue}g(`[stroid] source store "${a}" was deleted. Computed store "${x}" depends on it and will return stale data. Call deleteComputed("${x}") to clean up.`);}b({name:a,prev:R,options:S,initialState:E,phase:"after"}),be("afterStoreDelete",a,{type:"afterStoreDelete",prev:R}),Oe(e,{type:"deleted",name:a}),oe(`Store "${a}" deleted`);}finally{l.delete(a);}};return {deleteExistingStore:f,clearAllStores:()=>{let a=[],S=0,E=Number.POSITIVE_INFINITY;for(;S<20;){let H=Object.keys(t);if(H.length===0)break;H.forEach(x=>{U(e,x)&&(f(x),a.push(x));}),S+=1;let A=Object.keys(t).length;if(A===0||A>=E)break;E=A;}let P=Object.keys(t).length;return P>0?g(`clearAllStores stopped after ${S} pass${S===1?"":"es"}; ${P} store(s) still registered (likely recreated during deletion).`):oe(`All stores cleared (${a.length} stores removed)`),a},clearStores:a=>{let R=Object.keys(t).filter(S=>a?a.endsWith("*")?S.startsWith(a.slice(0,-1)):S===a:true);return R.forEach(S=>f(S)),R},reportStoreError:h}};var st=G,ir=K(st);var W=()=>{let e=_(ir);return Ae(e),e};var ae=()=>W();var ce=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),sn=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),an=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});ce(()=>W().stores);var ar=ce(()=>W().subscribers);ce(()=>W().initialStates);ce(()=>W().initialFactories);ce(()=>W().metaEntries);ce(()=>W().snapshotCache);var X=sn(()=>W().featureRuntimes),sr=new WeakMap,cn=e=>{let t=sr.get(e);return t||(t=or(e),sr.set(e,t)),t};an(()=>cn(W()));var un=e=>{let t=X.get(e);if(t)return t;let r=we(e);if(!r)return;let n=r();return X.set(e,n),n},ln=()=>{re().forEach(e=>{un(e);});};ln();var dn=()=>{Rt(W());},pn=()=>{X.forEach(e=>{try{e.resetAll?.();}catch{}}),X.clear();};k("features.reset",pn,10);k("registries.clear",dn,20);k("registry.default",()=>{st=G,ir=K(st);},115);var it=()=>_().async;var fn=()=>it().inflight;var cr=()=>it().asyncMetrics;var at=e=>{let t=`${e}:`,r=fn(),n=0;return Object.keys(r).forEach(o=>{(o===e||o.startsWith(t))&&(n+=1);}),n};var ur=()=>({...cr()});var ue=()=>_(K(G)),Re=e=>{let t=ue();return U(t,e)?true:(_e(e,Object.keys(t.stores)),false)},gn=(e,t)=>{if(!t)return true;if(t.endsWith("*")){let r=t.slice(0,-1);return e.startsWith(r)}return e===t},lr=e=>{let t=ue();return Object.keys(t.stores).filter(r=>gn(r,e))},yn=e=>{if(!Re(e))return null;let t=ue().metaEntries[e],r=j(t);r.metrics=j(t.metrics);let n=j(t.options),o=n;return o.persist&&typeof o.persist=="object"&&(o.persist=j(o.persist)),o.sync&&typeof o.sync=="object"&&(o.sync=j(o.sync)),o.devtools&&typeof o.devtools=="object"&&(o.devtools=j(o.devtools)),o.lifecycle&&typeof o.lifecycle=="object"&&(o.lifecycle=j(o.lifecycle)),r.options=n,r},ti=()=>V(ue().initialStates),mn=e=>{let t=ue().metaEntries[e];return t?.metrics?{...t.metrics}:null},hn=e=>Re(e)?ar[e]?.size??0:0,Sn=e=>Re(e)?at(e):0,bn=(e={})=>{let t=e.unreadThresholdMs??6e4,r=Date.now();return lr().map(n=>{let o=ue().metaEntries[n],s=o?.createdAt?new Date(o.createdAt).getTime():r,c=o?.lastReadAtMs??null,d=Math.max(0,r-s),l;return (o?.readCount??0)===0&&(o?.updateCount??0)===0?l="cold":(o?.readCount??0)===0?l="write-only":c&&r-c>t?l="stale":l="active",{name:n,createdAt:o?.createdAt??new Date(s).toISOString(),lastReadAt:o?.lastReadAt??null,updateCount:o?.updateCount??0,readCount:o?.readCount??0,subscriberCount:hn(n),ageMs:d,verdict:l}}).filter(n=>n.verdict==="cold"||n.verdict==="stale"||e.includeWriteOnly&&n.verdict==="write-only")},Rn=e=>{if(e){if(!Re(e))return null;let r=yn(e);return {name:e,meta:r,metrics:mn(e),async:{inflight:Sn(e),lastCorrelationId:r?.lastCorrelationId??null,traceContext:r?.lastTraceContext??null},persist:{queueDepth:wn(e)}}}let t=lr().map(r=>Rn(r));return {stores:t,async:ur(),registry:{totalStores:t.length,coldStores:bn({})}}},wn=e=>{if(!Re(e))return 0;let t=qt("persist");return t?.getPersistQueueDepth?t.getPersistQueueDepth(e)??0:0},ri=()=>Ge(),ni=()=>Ke(),oi=e=>he(e),si=e=>qe(e),ii=(e,t)=>Ue(e,t);export{ii as evaluateComputed,bn as findColdStores,Sn as getAsyncInflightCount,oi as getComputedDeps,si as getComputedDescriptor,ri as getComputedGraph,ti as getInitialState,mn as getMetrics,wn as getPersistQueueDepth,ni as getRuntimeGraph,Rn as getStoreHealth,yn as getStoreMeta,hn as getSubscriberCount,lr as listStores};//# sourceMappingURL=runtime-tools.js.map
4
4
  //# sourceMappingURL=runtime-tools.js.map
package/dist/selectors.js CHANGED
@@ -1,2 +1,2 @@
1
- var at=new Map;var he=e=>at.get(e),X=()=>Array.from(at.keys());var ut=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),lt=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:ut(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),dt=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),ut().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var sr=new Map,E=(e,t,r=0)=>{!e||typeof t!="function"||sr.set(e,{name:e,order:r,fn:t});};var Ae=new Map,ft=new WeakSet,Ne=e=>{ft.has(e)||(ft.add(e),X().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=he(t);r&&e.featureRuntimes.set(t,r());}}));},ir=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,pt,Ve=e=>(pt||ir||e).replace(/\.ts(\?|$)/,".js$1"),Q=Ve(new URL("../../store.js",import.meta.url).href);var ar=()=>{pt=void 0,Ae.clear();};E("registry.scope-override",ar,110);var cr=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),ur=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},gt=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,failed:false,error:void 0}),lr=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,transaction:gt(),async:lt(),notify:cr(),lifecycleListener:null};return Ne(t),t},Z=e=>{let t=Ve(e),r=Ae.get(t);if(r)return r;let n=lr();return Ae.set(t,n),n},ee=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var yt=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.failed=false,e.transaction.error=void 0,ur(e.notify),dt(e.async),e.lifecycleListener=null;};var Ie=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var me=()=>null,W=[],ht={run:(e,t)=>{W.push(e);try{return t()}finally{W.pop();}},get:()=>W.length>0?W[W.length-1]:null,enterWith:e=>{if(W.length>0){W[W.length-1]=e;return}W.push(e);}};var B=e=>(ht).get()||e||Z(Q);var fr={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},mt={logSink:fr,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},$e=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),Pe=new WeakMap,bt=$e(mt),pr=e=>{let t=Pe.get(e);return t||(t=$e(bt),Pe.set(e,t)),t};var M=()=>pr(B());var hr=()=>{Pe=new WeakMap,bt=$e(mt);};E("config.reset",hr,90);var mr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,br=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,wt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,wr="production",Rr=mr??br??wr,be=typeof wt=="boolean"?wt:Rr!=="production",v=()=>be,Rt=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},kr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},Cr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},we=(e,t)=>{if((M().logSink.critical??kr)(e,t),M().assertRuntime)throw new Error(e)},h=(e,t)=>{if(!be)return;if((M().logSink.warn??Rt)(e,t),M().assertRuntime)throw new Error(e)},te=(e,t)=>{if((M().logSink.warn??Rt)(e,t),M().assertRuntime)throw new Error(e)};var de=(e,t)=>{if(!be)return;(M().logSink.log??Cr)(e,t);};var kt=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",Ct=()=>"Map detected; converting to plain object.",xt=()=>"Set detected; converting to array.";var Mt=(e,t)=>`Path "${e.join(".")}" not found - reached null at "${t}"`,vt=e=>`Cannot go deeper at "${e}" - value is not an object`;var re=new Set(["__proto__","constructor","prototype"]);var Et=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,xr=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var fe=(e,t)=>{let r=xr(e);if(r)throw new Error(`${r} values are not supported`);let n=Et(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return v()&&h(kt()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),v()&&h(Ct());let o={};for(let[s,g]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(s)]=fe(g,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),v()&&h(xt()),Array.from(e,o=>fe(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},s=Object.getOwnPropertyDescriptors(e);for(let[g,u]of Object.entries(s))if(u.enumerable&&!re.has(g)){if("get"in u||"set"in u)throw new Error(`Accessor properties are not supported during sanitize ("${g}")`);o[g]=fe(u.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>fe(o,t))}return e},ze=e=>fe(e,new WeakSet);var He=null,Mr=()=>{if(He)return He;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return He=t,t},jt=e=>{let t=Mr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},vr=2166136261,Tr=2654435761,Er=1e5,U=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},Y=(e,t)=>{U(e,t.length);for(let r=0;r<t.length;r++)U(e,t.charCodeAt(r));},w=(e,t)=>{Y(e,t);},Ft=(e,t)=>{if(Number.isNaN(t)){w(e,"NaN");return}if(!Number.isFinite(t)){w(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){w(e,"-0");return}let r=t|0;if(t===r){w(e,"int"),U(e,r);return}w(e,"num"),Y(e,String(t));},ne=(e,t)=>{if(e.nodes++>Er){w(e,"[max]");return}if(t===null){w(e,"null");return}let r=typeof t;if(r==="string"){w(e,"string"),Y(e,t);return}if(r==="number"){w(e,"number"),Ft(e,t);return}if(r==="boolean"){w(e,t?"true":"false");return}if(r==="undefined"){w(e,"undefined");return}if(r==="bigint"){w(e,"bigint"),Y(e,t.toString());return}if(r==="symbol"){w(e,"symbol");let d=t;Y(e,Symbol.keyFor(d)??d.description??String(d));return}if(r==="function"){w(e,"function"),Y(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){w(e,"ref"),U(e,o);return}let s=e.nextId++;if(e.seen.set(n,s),Array.isArray(n)){w(e,"array"),U(e,n.length);for(let d=0;d<n.length;d++)Object.prototype.hasOwnProperty.call(n,d)?ne(e,n[d]):w(e,"hole");return}if(n instanceof Date){w(e,"date"),Ft(e,n.getTime());return}if(n instanceof Map){w(e,"map"),U(e,n.size),n.forEach((d,f)=>{ne(e,f),ne(e,d);});return}if(n instanceof Set){w(e,"set"),U(e,n.size),n.forEach(d=>{ne(e,d);});return}w(e,"object");let g=Object.getOwnPropertyDescriptors(n),u=[];Object.entries(g).forEach(([d,f])=>{f?.enumerable&&(re.has(d)||"get"in f||"set"in f||u.push([d,f]));}),U(e,u.length);for(let[d,f]of u)Y(e,d),ne(e,f.value);},We=e=>{if(typeof e=="string")return jt(JSON.stringify(e));let t={h1:vr,h2:Tr,seen:new WeakMap,nextId:1,nodes:0};ne(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var Fr=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",pe=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Array.isArray(e))return e.slice();let t={},r=Object.getOwnPropertyDescriptors(e);return Object.entries(r).forEach(([n,o])=>{o.enumerable&&(re.has(n)||"get"in o||"set"in o||(t[n]=o.value));}),t},Le=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},jr=e=>Le(e)===null,Dr=e=>{let t=Le(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},G=(e,t=new WeakMap)=>{if(Dr(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((s,g)=>{o.set(G(g,t),G(s,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(s=>{o.add(G(s,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((s,g)=>{o[g]=G(s,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,s])=>{!s.enumerable||re.has(o)||"get"in s||"set"in s||(r[o]=G(s.value,t));}),r},V=e=>{if(Fr)try{return structuredClone(e)}catch(t){if(!jr(e)){let r=Le(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return h(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),G(e)}return G(e)};var Or=e=>{let t=[],r="",n=false;for(let o of e){if(n){r+=o,n=false;continue}if(o==="\\"){n=true;continue}if(o==="."){t.push(r),r="";continue}r+=o;}return n&&(r+="\\"),t.push(r),t},Dt=e=>Array.isArray(e)?[...e]:typeof e=="string"&&!e.includes(".")?[e]:typeof e=="string"?Or(e):[String(e)];var Re=(e,t)=>{let r=Dt(t),n=e;for(let o of r){if(n==null){h(Mt(r,o));return}if(typeof n!="object"){h(vt(o));return}n=n[o];}return n};var Ot=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(s){let g=`${t} for "${e}" failed: ${s?.message??s}`;o(g,"always");}};var Ar=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;te(`${t} callback threw: ${String(o)}`);}},ke=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(Ar(o,"onError",e),r==="critical"){n==="dev"&&h(e),we(e);return}if(n==="always"){te(e);return}h(e);};E("computed.order-resolver",()=>{},105);var Vt=()=>B(Z(Q)),It=()=>Vt().computedEntries;var _t=e=>Object.prototype.hasOwnProperty.call(It(),e);var xe=null;var Ir=()=>{xe=null;};E("transaction.runner",Ir,120);var Pt=e=>{let t=xe?.get();return t||(e??B()).transaction};var Me=()=>xe?(xe.get()?.depth??0)>0:Pt().depth>0;var $t=e=>{let t=Pt();return t.stagedValues.has(e)?{has:true,value:t.stagedValues.get(e)}:{has:false,value:void 0}};var Ht=e=>{if(typeof e!="object"||e===null)return false;let t=e;if(t.$$typeof||typeof window<"u"&&e instanceof Element)return false;let r=t.constructor?.name;return !(r&&r!=="Object"&&r!=="Array")},ge=e=>(Ht(e)&&(Object.isFrozen(e)||Object.freeze(e)),e),ve=e=>{if(!Ht(e))return e;let t=[e],r=new WeakSet;for(;t.length>0;){let n=t.pop();if(!r.has(n)){r.add(n),Object.isFrozen(n)||Object.freeze(n);for(let o of Object.keys(n)){let s=n[o];typeof s=="object"&&s!==null&&!r.has(s)&&t.push(s);}}}return e};var Te=(e,t)=>{let r=e?.options?.snapshot??t;return r==="shallow"||r==="ref"?r:"deep"},oe=(e,t)=>{if(t==="ref"){if(!v())return e;try{return ge(e)}catch{return e}}if(t==="shallow"){let n=pe(e);if(!v())return n;try{return ge(n)}catch{return n}}let r=V(e);if(!v())return r;try{return ve(r)}catch{return r}};var Bt=new Map;var Se=(e,t,r)=>{let n=Bt.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(s){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,s);}});};var Ee=(e,t)=>{if(!(!e||typeof e!="object")){if(t==="ref"||t==="shallow"){ge(e);return}t==="deep"&&ve(e);}};var Kt=e=>{if(!Yt(e))return null;let t=P();Gt(e,t);let r=Te(t.metaEntries[e],M().defaultSnapshotMode);if(Me()){let u=t.transaction.snapshotCache,d=Qe(e);if(d===void 0)return null;let f=u.get(e);if(f&&f.source===d&&f.mode===r){let S=f.snapshot;return Ee(S,r),S}let l=oe(d,r);return u.set(e,{source:d,snapshot:l,mode:r}),Ee(l,r),l}let n=t.notify.flushId,o=Qe(e,t),s=t.snapshotCache[e];if(s&&s.source===o&&s.mode===r){let u=s.snapshot;return Ee(u,r),u}let g=oe(o,r);return Ee(g,r),t.snapshotCache[e]={version:n,snapshot:g,source:o,mode:r},g};var $r=()=>{let e=P().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0;};E("notify.reset",$r,40);var zr=()=>P().computedCleanups;var Jt=e=>{let t=zr(),r=t.get(e);if(!r){v()&&h(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var Xt=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,s=e.metaEntries,g=e.snapshotCache,u=e.featureRuntimes,d=e.deletingStores,f=(a,k)=>{ke(k,{onError:s[a]?.options?.onError,severity:"warn",visibility:"dev"});},l=({name:a,prev:k,options:m,initialState:F,getMeta:j,getStoreValue:$,hasStore:O})=>({name:a,options:m,prev:k,getMeta:j,getStoreValue:$,getAllStores:()=>t,getInitialState:()=>F,hasStore:O,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:C=>{ke(C,{onError:m.onError,severity:"warn",visibility:"dev"});},warn:h,warnAlways:te,log:de,hashState:We,deepClone:V,sanitize:ze,validate:()=>({ok:true,value:k}),isDev:v}),S=({name:a,prev:k,options:m,initialState:F,phase:j})=>{let $=l({name:a,prev:k,options:m,initialState:F,getMeta:()=>s[a],getStoreValue:()=>t[a],hasStore:()=>ee(e,a)}),O=l({name:a,prev:k,options:m,initialState:F,getMeta:()=>{},getStoreValue:()=>k,hasStore:()=>false});X().forEach(C=>{let I=u.get(C);j==="before"?I?.beforeStoreDelete?.($):I?.afterStoreDelete?.(O);});},y=a=>{if(!ee(e,a))return;let k=t[a],m=s[a].options,F=n[a],j=r[a];d.add(a);try{j?.forEach(C=>{try{C(null);}catch(I){h(`Subscriber for "${a}" threw during delete: ${I?.message??I}`);}}),Ot({name:a,label:"onDelete",fn:m.onDelete,args:[k],reportIssue:(C,I)=>{ke(C,{onError:m.onError,severity:"warn",visibility:I});}}),S({name:a,prev:k,options:m,initialState:F,phase:"before"}),delete t[a],delete r[a],delete n[a],delete o[a],delete s[a],delete g[a],_t(a)&&Jt(a);let O=e.computedDependents[a];if(O)for(let C of O)h(`[stroid] source store "${a}" was deleted. Computed store "${C}" depends on it and will return stale data. Call deleteComputed("${C}") to clean up.`);S({name:a,prev:k,options:m,initialState:F,phase:"after"}),Se("afterStoreDelete",a,{type:"afterStoreDelete",prev:k}),Ie(e,{type:"deleted",name:a}),de(`Store "${a}" deleted`);}finally{d.delete(a);}};return {deleteExistingStore:y,clearAllStores:()=>{let a=[],m=0,F=Number.POSITIVE_INFINITY;for(;m<20;){let $=Object.keys(t);if($.length===0)break;$.forEach(C=>{ee(e,C)&&(y(C),a.push(C));}),m+=1;let O=Object.keys(t).length;if(O===0||O>=F)break;F=O;}let j=Object.keys(t).length;return j>0?h(`clearAllStores stopped after ${m} pass${m===1?"":"es"}; ${j} store(s) still registered (likely recreated during deletion).`):h(`All stores cleared (${a.length} stores removed)`),a},clearStores:a=>{let k=Object.keys(t).filter(m=>a?a.endsWith("*")?m.startsWith(a.slice(0,-1)):m===a:true);return k.forEach(m=>y(m)),k},reportStoreError:f}};var Ze=Q,Zt=Z(Ze);var D=()=>{let e=B(Zt);return Ne(e),e};var P=()=>D();var ie=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),Hr=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),Wr=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});ie(()=>D().stores);ie(()=>D().subscribers);ie(()=>D().initialStates);ie(()=>D().initialFactories);var er=ie(()=>D().metaEntries);ie(()=>D().snapshotCache);var se=Hr(()=>D().featureRuntimes),Qt=new WeakMap,Lr=e=>{let t=Qt.get(e);return t||(t=Xt(e),Qt.set(e,t)),t};Wr(()=>Lr(D()));var Br=e=>{let t=se.get(e);if(t)return t;let r=he(e);if(!r)return;let n=r();return se.set(e,n),n},Ur=()=>{X().forEach(e=>{Br(e);});};Ur();var Yt=(e,t)=>ee(D(),e),Qe=(e,t=D())=>{if(Me()){let n=$t(e);if(n.has)return n.value}let r=me();return r&&Object.prototype.hasOwnProperty.call(r,e)?r[e]:t.stores[e]};var Gt=(e,t=D())=>{let r=t.metaEntries[e];if(!r)return;r.readCount=(r.readCount??0)+1;let n=Date.now();r.lastReadAtMs=n,r.lastReadAt=new Date(n).toISOString();},qr=()=>{yt(D());},Kr=()=>{se.forEach(e=>{try{e.resetAll?.();}catch{}}),se.clear();};E("features.reset",Kr,10);E("registries.clear",qr,20);E("registry.default",()=>{Ze=Q,Zt=Z(Ze);},115);var et=e=>{let t=P();return Object.prototype.hasOwnProperty.call(t.stores,e)},tr=e=>P().stores[e],rr=(e,t)=>{let n=P().subscribers;return n[e]||(n[e]=new Set),n[e].add(t),()=>{n[e]?.delete(t),n[e]?.size===0&&delete n[e];}};var Yr=(e,t)=>{let r=new WeakMap,n=new Set,o="\0",s=(u,d)=>{if(!u||typeof u!="object")return u;let f=r.get(u);if(f)return f;let l=new Proxy(u,{get(S,y,x){if(typeof y!="string")return Reflect.get(S,y,x);let p=[...d,y],a=Reflect.get(S,y,x);return (!a||typeof a!="object")&&n.add(p.join(o)),s(a,p)}});return r.set(u,l),l};return {result:t(s(e,[])),deps:Array.from(n,u=>u.split(o))}},Gr=(e,t,r)=>r.some(n=>!Object.is(Re(e,n),Re(t,n))),Rs=(e,t)=>{let r,n,o=[];return ()=>{let s=tr(e);if(s===void 0)return null;if(s===r)return n??null;if(r!==void 0&&o.length>0&&!Gr(r,s,o))return r=s,n??null;let g=M().selectorCloneFrozen,u=s&&typeof s=="object"&&Object.isFrozen(s)&&g?V(s):s,d=Yr(u,t);return r=s,o=d.deps,n=d.result,n??null}},ks=(e,t,r=Object.is,n)=>{if(typeof t!="function"||typeof n!="function")return h(`subscribeWithSelector("${e}") requires selector and listener functions.`),()=>{};let o=false,s,g=()=>{let f=er[e]?.options?.snapshot;return f==="shallow"||f==="ref"?f:"deep"},u=f=>{let l=f!==void 0?f:Kt(e);if(l===null||typeof l!="object")return l;let S=g();return S==="ref"?l:S==="shallow"?pe(l):V(l)};return et(e)&&(s=t(u()),o=true),rr(e,f=>{if(f===null||!et(e)){o=false,s=void 0;return}let l=t(u(f));if(!o){let y=s;o=true,s=l,n(l,y);return}if(!r(l,s)){let y=s;s=l,n(l,y);}})};export{Rs as createSelector,ks as subscribeWithSelector};//# sourceMappingURL=selectors.js.map
1
+ var lt=new Map;var Se=e=>lt.get(e),Q=()=>Array.from(lt.keys());var ft=()=>new Map([["noSignal",new Set],["shape",new Set],["autoCreate",new Set],["mutableResult",new Set]]),pt=()=>({fetchRegistry:Object.create(null),inflight:Object.create(null),requestVersion:Object.create(null),cacheMeta:Object.create(null),rateWindowStart:Object.create(null),rateCount:Object.create(null),ratePruneState:{lastAt:0},ratePruneTimer:null,warnedOnce:ft(),storeCleanups:Object.create(null),revalidateKeys:new Set,revalidateHandlers:Object.create(null),asyncMetrics:{cacheHits:0,cacheMisses:0,dedupes:0,requests:0,failures:0,avgMs:0,lastMs:0}}),gt=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(n=>{try{n();}catch{}});});}),Object.keys(e.fetchRegistry).forEach(t=>delete e.fetchRegistry[t]),Object.keys(e.inflight).forEach(t=>delete e.inflight[t]),Object.keys(e.requestVersion).forEach(t=>delete e.requestVersion[t]),Object.keys(e.cacheMeta).forEach(t=>delete e.cacheMeta[t]),Object.keys(e.rateWindowStart).forEach(t=>delete e.rateWindowStart[t]),Object.keys(e.rateCount).forEach(t=>delete e.rateCount[t]),Object.keys(e.storeCleanups).forEach(t=>delete e.storeCleanups[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.warnedOnce.forEach(t=>t.clear()),e.warnedOnce.clear(),ft().forEach((t,r)=>{e.warnedOnce.set(r,t);}),e.ratePruneState.lastAt=0,e.ratePruneTimer&&(clearTimeout(e.ratePruneTimer),e.ratePruneTimer=null),e.asyncMetrics.cacheHits=0,e.asyncMetrics.cacheMisses=0,e.asyncMetrics.dedupes=0,e.asyncMetrics.requests=0,e.asyncMetrics.failures=0,e.asyncMetrics.avgMs=0,e.asyncMetrics.lastMs=0;};var ur=new Map,M=(e,t,r=0)=>{!e||typeof t!="function"||ur.set(e,{name:e,order:r,fn:t});};var Ae=new Map,yt=new WeakSet,Ie=e=>{yt.has(e)||(yt.add(e),Q().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=Se(t);r&&e.featureRuntimes.set(t,r());}}));},lr=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,mt,Pe=e=>(mt||lr||e).replace(/\.ts(\?|$)/,".js$1"),Z=Pe("stroid:default-registry");var dr=()=>{mt=void 0,Ae.clear();};M("registry.scope-override",dr,110);var fr=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),pr=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.subscriberBuffer.length=0,e.notifyScheduled=false,e.batchDepth=0,e.flushId=0,e.isFlushing=false;},ht=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,runtimePatches:[],failed:false,error:void 0}),gr=(e="default")=>{let t={scope:e,stores:Object.create(null),subscribers:Object.create(null),initialStates:Object.create(null),initialFactories:Object.create(null),metaEntries:Object.create(null),snapshotCache:Object.create(null),featureRuntimes:new Map,deletingStores:new Set,computedEntries:Object.create(null),computedDependents:Object.create(null),computedCleanups:new Map,lastRuntimePatches:[],transaction:ht(),async:pt(),notify:fr(),lifecycleListener:null};return Ie(t),t},ee=e=>{let t=Pe(e),r=Ae.get(t);if(r)return r;let n=gr();return Ae.set(t,n),n},K=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var St=e=>{e.computedCleanups.forEach(t=>{try{t();}catch{}}),e.computedCleanups.clear(),[e.stores,e.subscribers,e.initialStates,e.initialFactories,e.metaEntries,e.snapshotCache,e.computedEntries,e.computedDependents].forEach(t=>{Object.keys(t).forEach(r=>{delete t[r];});}),e.deletingStores.clear(),e.transaction.depth=0,e.transaction.pending=[],e.transaction.stagedValues.clear(),e.transaction.snapshotCache.clear(),e.transaction.runtimePatches.length=0,e.transaction.failed=false,e.transaction.error=void 0,e.lastRuntimePatches.length=0,pr(e.notify),gt(e.async),e.lifecycleListener=null;};var Ve=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var be=()=>null,H=[],Rt={run:(e,t)=>{H.push(e);try{return t()}finally{H.pop();}},get:()=>H.length>0?H[H.length-1]:null,enterWith:e=>{if(H.length>0){H[H.length-1]=e;return}H.push(e);}};var B=e=>(Rt).get()||e||ee(Z);var mr={log:(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},warn:(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},critical:(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));}},wt={logSink:mr,flush:{chunkSize:Number.POSITIVE_INFINITY,chunkDelayMs:0,priorityStores:[]},revalidateOnFocus:{debounceMs:0,maxConcurrent:3,staggerMs:100},namespace:"",strictMissingFeatures:true,assertRuntime:false,strictMutatorReturns:true,asyncAutoCreate:false,asyncCloneResult:"none",autoCorrelationIds:false,acknowledgeLooseTypes:false,pathCacheSize:500,defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0,selectorCloneFrozen:true},We=e=>({logSink:{...e.logSink},flush:{...e.flush},revalidateOnFocus:{...e.revalidateOnFocus},namespace:e.namespace,strictMissingFeatures:e.strictMissingFeatures,assertRuntime:e.assertRuntime,strictMutatorReturns:e.strictMutatorReturns,asyncAutoCreate:e.asyncAutoCreate,asyncCloneResult:e.asyncCloneResult,autoCorrelationIds:e.autoCorrelationIds,acknowledgeLooseTypes:e.acknowledgeLooseTypes,pathCacheSize:e.pathCacheSize,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce,selectorCloneFrozen:e.selectorCloneFrozen}),$e=new WeakMap,Ct=We(wt),hr=e=>{let t=$e.get(e);return t||(t=We(Ct),$e.set(e,t)),t};var T=()=>hr(B());var wr=()=>{$e=new WeakMap,Ct=We(wt);};M("config.reset",wr,90);var Cr=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,kr=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,kt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,xr="production",Mr=Cr??kr??xr,Re=typeof kt=="boolean"?kt:Mr!=="production",v=()=>Re,xt=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},Tr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},vr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},we=(e,t)=>{if((T().logSink.critical??Tr)(e,t),T().assertRuntime)throw new Error(e)},m=(e,t)=>{if(!Re)return;if((T().logSink.warn??xt)(e,t),T().assertRuntime)throw new Error(e)},te=(e,t)=>{if((T().logSink.warn??xt)(e,t),T().assertRuntime)throw new Error(e)};var re=(e,t)=>{if(!Re)return;(T().logSink.log??vr)(e,t);};var Mt=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",Tt=()=>"Map detected; converting to plain object.",vt=()=>"Set detected; converting to array.";var Et=(e,t)=>`Path "${e.join(".")}" not found - reached null at "${t}"`,Ft=e=>`Cannot go deeper at "${e}" - value is not an object`;var ne=new Set(["__proto__","constructor","prototype"]);var Ot=e=>e===null?"null":Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":e instanceof Date?"date":typeof e=="function"?"function":typeof e,Er=e=>{if(!e||typeof e!="object")return null;let t=globalThis?.WeakRef;return t&&e instanceof t?"WeakRef":typeof WeakMap<"u"&&e instanceof WeakMap?"WeakMap":typeof WeakSet<"u"&&e instanceof WeakSet?"WeakSet":typeof EventTarget<"u"&&e instanceof EventTarget?"EventTarget":typeof ReadableStream<"u"&&e instanceof ReadableStream?"ReadableStream":typeof WritableStream<"u"&&e instanceof WritableStream?"WritableStream":typeof Request<"u"&&e instanceof Request?"Request":typeof Response<"u"&&e instanceof Response?"Response":typeof Headers<"u"&&e instanceof Headers?"Headers":typeof FormData<"u"&&e instanceof FormData?"FormData":null};var pe=(e,t)=>{let r=Er(e);if(r)throw new Error(`${r} values are not supported`);let n=Ot(e);if(n==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(n==="bigint")throw new Error("BigInt values are not supported");if(n==="symbol")throw new Error("Symbol values are not supported");if(n==="date")return v()&&m(Mt()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),v()&&m(Tt());let o={};for(let[s,p]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(s)]=pe(p,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),v()&&m(vt()),Array.from(e,o=>pe(o,t))}if(n==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let o={},s=Object.getOwnPropertyDescriptors(e);for(let[p,g]of Object.entries(s))if(g.enumerable&&!ne.has(p)){if("get"in g||"set"in g)throw new Error(`Accessor properties are not supported during sanitize ("${p}")`);o[p]=pe(g.value,t);}return o}if(n==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(o=>pe(o,t))}return e},ze=e=>pe(e,new WeakSet);var He=null,Fr=()=>{if(He)return He;let e,t=[];for(let r=0;r<256;r++){e=r;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return He=t,t},Nt=e=>{let t=Fr(),r=-1;for(let n=0;n<e.length;n++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(n))&255];return (r^-1)>>>0},jr=2166136261,Or=2654435761,Dr=1e5,q=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},Y=(e,t)=>{q(e,t.length);for(let r=0;r<t.length;r++)q(e,t.charCodeAt(r));},C=(e,t)=>{Y(e,t);},Dt=(e,t)=>{if(Number.isNaN(t)){C(e,"NaN");return}if(!Number.isFinite(t)){C(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){C(e,"-0");return}let r=t|0;if(t===r){C(e,"int"),q(e,r);return}C(e,"num"),Y(e,String(t));},oe=(e,t)=>{if(e.nodes++>Dr){C(e,"[max]");return}if(t===null){C(e,"null");return}let r=typeof t;if(r==="string"){C(e,"string"),Y(e,t);return}if(r==="number"){C(e,"number"),Dt(e,t);return}if(r==="boolean"){C(e,t?"true":"false");return}if(r==="undefined"){C(e,"undefined");return}if(r==="bigint"){C(e,"bigint"),Y(e,t.toString());return}if(r==="symbol"){C(e,"symbol");let l=t;Y(e,Symbol.keyFor(l)??l.description??String(l));return}if(r==="function"){C(e,"function"),Y(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){C(e,"ref"),q(e,o);return}let s=e.nextId++;if(e.seen.set(n,s),Array.isArray(n)){C(e,"array"),q(e,n.length);for(let l=0;l<n.length;l++)Object.prototype.hasOwnProperty.call(n,l)?oe(e,n[l]):C(e,"hole");return}if(n instanceof Date){C(e,"date"),Dt(e,n.getTime());return}if(n instanceof Map){C(e,"map"),q(e,n.size),n.forEach((l,a)=>{oe(e,a),oe(e,l);});return}if(n instanceof Set){C(e,"set"),q(e,n.size),n.forEach(l=>{oe(e,l);});return}C(e,"object");let p=Object.getOwnPropertyDescriptors(n),g=[];Object.entries(p).forEach(([l,a])=>{a?.enumerable&&(ne.has(l)||"get"in a||"set"in a||g.push([l,a]));}),q(e,g.length);for(let[l,a]of g)Y(e,l),oe(e,a.value);},Le=e=>{if(typeof e=="string")return Nt(JSON.stringify(e));let t={h1:jr,h2:Or,seen:new WeakMap,nextId:1,nodes:0};oe(t,e);let r=t.h1>>>0,n=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,n^=n>>>16,n=Math.imul(n,668265261),n^=n>>>15,n=Math.imul(n,374761393),n^=n>>>16,(r&2097151)*4294967296+(n>>>0)};var Nr=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function",ge=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Array.isArray(e))return e.slice();let t={},r=Object.getOwnPropertyDescriptors(e);return Object.entries(r).forEach(([n,o])=>{o.enumerable&&(ne.has(n)||"get"in o||"set"in o||(t[n]=o.value));}),t},Be=e=>{if(typeof e=="function")return "function";if(typeof e=="symbol")return "symbol";if(e===null||typeof e!="object")return null;let t=[["WeakMap",globalThis.WeakMap],["WeakSet",globalThis.WeakSet],["WeakRef",globalThis.WeakRef],["Promise",globalThis.Promise],["ReadableStream",globalThis.ReadableStream],["WritableStream",globalThis.WritableStream],["TransformStream",globalThis.TransformStream],["EventTarget",globalThis.EventTarget]];for(let[n,o]of t)if(typeof o=="function"&&e instanceof o)return n;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Ar=e=>Be(e)===null,Ir=e=>{let t=Be(e);if(t)throw new Error(`deepClone failed: value is not structured-cloneable (${t}). Avoid storing this type in stroid state.`)},J=(e,t=new WeakMap)=>{if(Ir(e),e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){let o=new Map;return t.set(e,o),e.forEach((s,p)=>{o.set(J(p,t),J(s,t));}),o}if(e instanceof Set){let o=new Set;return t.set(e,o),e.forEach(s=>{o.add(J(s,t));}),o}if(Array.isArray(e)){let o=[];return t.set(e,o),e.forEach((s,p)=>{o[p]=J(s,t);}),o}let r={};t.set(e,r);let n;try{n=Object.getOwnPropertyDescriptors(e);}catch(o){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${o?.message??o}`)}return Object.entries(n).forEach(([o,s])=>{!s.enumerable||ne.has(o)||"get"in s||"set"in s||(r[o]=J(s.value,t));}),r},I=e=>{if(Nr)try{return structuredClone(e)}catch(t){if(!Ar(e)){let r=Be(e)??"unknown";throw new Error(`deepClone failed: value is not structured-cloneable (${r}). Avoid storing this type in stroid state.`)}return m(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),J(e)}return J(e)};var Pr=e=>{let t=[],r="",n=false;for(let o of e){if(n){r+=o,n=false;continue}if(o==="\\"){n=true;continue}if(o==="."){t.push(r),r="";continue}r+=o;}return n&&(r+="\\"),t.push(r),t},At=e=>Array.isArray(e)?[...e]:typeof e=="string"&&!e.includes(".")?[e]:typeof e=="string"?Pr(e):[String(e)];var Ce=(e,t)=>{let r=At(t),n=e;for(let o of r){if(n==null){m(Et(r,o));return}if(typeof n!="object"){m(Ft(o));return}n=n[o];}return n};var It=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(s){let p=`${t} for "${e}" failed: ${s?.message??s}`;o(p,"always");}};var Vr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(n){let o=n?.message??n;te(`${t} callback threw: ${String(o)}`);}},ke=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(Vr(o,"onError",e),r==="critical"){n==="dev"&&m(e),we(e);return}if(n==="always"){te(e);return}m(e);};M("computed.order-resolver",()=>{},105);var _t=()=>B(ee(Z));var qe=()=>_t().computedEntries,$t=()=>_t().computedDependents;var Wt=e=>Object.prototype.hasOwnProperty.call(qe(),e);var Ue=e=>{let t=qe()[e];if(!t)return null;let r=$t()[e];return {deps:[...t.deps],dependents:r?[...r]:[]}};var Me=null;var $r=()=>{Me=null;};M("transaction.runner",$r,120);var zt=e=>{let t=Me?.get();return t||(e??B()).transaction};var Te=()=>Me?(Me.get()?.depth??0)>0:zt().depth>0;var Ht=e=>{let t=zt();return t.stagedValues.has(e)?{has:true,value:t.stagedValues.get(e)}:{has:false,value:void 0}};var Bt=e=>{if(typeof e!="object"||e===null)return false;let t=e;if(t.$$typeof||typeof window<"u"&&e instanceof Element)return false;let r=t.constructor?.name;return !(r&&r!=="Object"&&r!=="Array")},ye=e=>(Bt(e)&&(Object.isFrozen(e)||Object.freeze(e)),e),ve=e=>{if(!Bt(e))return e;let t=[e],r=new WeakSet;for(;t.length>0;){let n=t.pop();if(!r.has(n)){r.add(n),Object.isFrozen(n)||Object.freeze(n);for(let o of Object.keys(n)){let s=n[o];typeof s=="object"&&s!==null&&!r.has(s)&&t.push(s);}}}return e};var Ee=(e,t)=>{let r=e?.options?.snapshot??t;return r==="shallow"||r==="ref"?r:"deep"},se=(e,t)=>{if(t==="ref"){if(!v())return e;try{return ye(e)}catch{return e}}if(t==="shallow"){let n=ge(e);if(!v())return n;try{return ye(n)}catch{return n}}let r=I(e);if(!v())return r;try{return ve(r)}catch{return r}};var Gt=new Map;var he=(e,t,r)=>{let n=Gt.get(e);!n||n.size===0||n.forEach(o=>{try{o(t,r);}catch(s){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,s);}});};var Wr=()=>{};M("write-context.runner",Wr,121);var je=(e,t)=>{if(!(!e||typeof e!="object")){if(t==="ref"||t==="shallow"){ye(e);return}t==="deep"&&ve(e);}};var Lr=(e,t)=>{if(!Xt(e))return null;let r=P();Qt(e,r);let n=Ee(r.metaEntries[e],T().defaultSnapshotMode);if(Te()){let l=r.transaction.snapshotCache,a=tt(e);if(a===void 0)return null;let u=l.get(e);if(u&&u.source===a&&u.mode===n){let f=u.snapshot;return je(f,n),f}let y=se(a,n);return l.set(e,{source:a,snapshot:y,mode:n}),je(y,n),y}let o=r.notify.flushId,s=tt(e,r),p=r.snapshotCache[e];if(p&&p.source===s&&p.mode===n){let l=p.snapshot;return je(l,n),l}let g=se(s,n);return je(g,n),r.snapshotCache[e]={version:o,snapshot:g,source:s,mode:n},g},Jt=e=>Lr(e);var Br=()=>{let e=P().notify;e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.notifyScheduled=false,e.batchDepth=0;};M("notify.reset",Br,40);var qr=()=>P().computedCleanups,Zt=new WeakMap;var Ur=e=>{let t=Zt.get(e);return t||(t=new Map,Zt.set(e,t)),t};var er=e=>{let t=qr(),r=t.get(e);if(!r){v()&&m(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var tr=(e,t=P())=>Ur(t).get(e)?.autoDispose===true;var rr=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,s=e.metaEntries,p=e.snapshotCache,g=e.featureRuntimes,l=e.deletingStores,a=(c,R)=>{ke(R,{onError:s[c]?.options?.onError,severity:"warn",visibility:"dev"});},u=({name:c,prev:R,options:b,initialState:E,getMeta:V,getStoreValue:$,hasStore:O})=>({name:c,options:b,prev:R,getMeta:V,getStoreValue:$,getAllStores:()=>t,getInitialState:()=>E,hasStore:O,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:k=>{ke(k,{onError:b.onError,severity:"warn",visibility:"dev"});},warn:m,warnAlways:te,log:re,hashState:Le,deepClone:I,sanitize:ze,validate:()=>({ok:true,value:R}),isDev:v}),y=({name:c,prev:R,options:b,initialState:E,phase:V})=>{let $=u({name:c,prev:R,options:b,initialState:E,getMeta:()=>s[c],getStoreValue:()=>t[c],hasStore:()=>K(e,c)}),O=u({name:c,prev:R,options:b,initialState:E,getMeta:()=>{},getStoreValue:()=>R,hasStore:()=>false});Q().forEach(k=>{let D=g.get(k);V==="before"?D?.beforeStoreDelete?.($):D?.afterStoreDelete?.(O);});},f=c=>{if(!K(e,c))return;let R=t[c],b=s[c].options,E=n[c],V=r[c];l.add(c);try{V?.forEach(k=>{try{k(null);}catch(D){m(`Subscriber for "${c}" threw during delete: ${D?.message??D}`);}}),It({name:c,label:"onDelete",fn:b.onDelete,args:[R],reportIssue:(k,D)=>{ke(k,{onError:b.onError,severity:"warn",visibility:D});}}),y({name:c,prev:R,options:b,initialState:E,phase:"before"}),delete t[c],delete r[c],delete n[c],delete o[c],delete s[c],delete p[c],Wt(c)&&er(c);let O=e.computedDependents[c];if(O)for(let k of [...O]){let D=Ue(k);if(D&&tr(k,e)&&D.deps.every(ce=>!K(e,ce))){f(k);continue}m(`[stroid] source store "${c}" was deleted. Computed store "${k}" depends on it and will return stale data. Call deleteComputed("${k}") to clean up.`);}y({name:c,prev:R,options:b,initialState:E,phase:"after"}),he("afterStoreDelete",c,{type:"afterStoreDelete",prev:R}),Ve(e,{type:"deleted",name:c}),re(`Store "${c}" deleted`);}finally{l.delete(c);}};return {deleteExistingStore:f,clearAllStores:()=>{let c=[],b=0,E=Number.POSITIVE_INFINITY;for(;b<20;){let $=Object.keys(t);if($.length===0)break;$.forEach(k=>{K(e,k)&&(f(k),c.push(k));}),b+=1;let O=Object.keys(t).length;if(O===0||O>=E)break;E=O;}let V=Object.keys(t).length;return V>0?m(`clearAllStores stopped after ${b} pass${b===1?"":"es"}; ${V} store(s) still registered (likely recreated during deletion).`):re(`All stores cleared (${c.length} stores removed)`),c},clearStores:c=>{let R=Object.keys(t).filter(b=>c?c.endsWith("*")?b.startsWith(c.slice(0,-1)):b===c:true);return R.forEach(b=>f(b)),R},reportStoreError:a}};var nt=Z,or=ee(nt);var j=()=>{let e=B(or);return Ie(e),e};var P=()=>j();var ae=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,n)=>(e()[r]=n,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let n=Object.getOwnPropertyDescriptor(e(),r);if(n)return {...n,configurable:true}}}),Gr=e=>new Proxy(new Map,{get:(t,r)=>{let n=e();if(r==="size")return n.size;if(r===Symbol.iterator)return n[Symbol.iterator].bind(n);let o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)}),Kr=e=>new Proxy({},{get:(t,r)=>{let n=e(),o=n[r];return typeof o=="function"?o.bind(n):o},set:(t,r,n)=>(e()[r]=n,true)});ae(()=>j().stores);ae(()=>j().subscribers);ae(()=>j().initialStates);ae(()=>j().initialFactories);var sr=ae(()=>j().metaEntries);ae(()=>j().snapshotCache);var ie=Gr(()=>j().featureRuntimes),nr=new WeakMap,Yr=e=>{let t=nr.get(e);return t||(t=rr(e),nr.set(e,t)),t};Kr(()=>Yr(j()));var Jr=e=>{let t=ie.get(e);if(t)return t;let r=Se(e);if(!r)return;let n=r();return ie.set(e,n),n},Xr=()=>{Q().forEach(e=>{Jr(e);});};Xr();var Xt=(e,t)=>K(j(),e),tt=(e,t=j())=>{if(Te()){let r=Ht(e);if(r.has)return r.value}return rt(e,t)},rt=(e,t=j())=>{let r=be();return r&&Object.prototype.hasOwnProperty.call(r,e)?r[e]:t.stores[e]};var Qt=(e,t=j())=>{let r=t.metaEntries[e];if(!r)return;r.readCount=(r.readCount??0)+1;let n=Date.now();r.lastReadAtMs=n,r.lastReadAt=new Date(n).toISOString();},Qr=()=>{St(j());},Zr=()=>{ie.forEach(e=>{try{e.resetAll?.();}catch{}}),ie.clear();};M("features.reset",Zr,10);M("registries.clear",Qr,20);M("registry.default",()=>{nt=Z,or=ee(nt);},115);var ot=e=>{let t=P();return Object.prototype.hasOwnProperty.call(t.stores,e)},ir=e=>P().stores[e],ar=(e,t)=>{let n=P().subscribers;return n[e]||(n[e]=new Set),n[e].add(t),()=>{n[e]?.delete(t),n[e]?.size===0&&delete n[e];}};var en=(e,t)=>{let r=new WeakMap,n=new WeakMap,o=new Set,s="\0",p=(a,u)=>{if(!a||typeof a!="object")return a;let y=r.get(a);if(y)return y;let f=new Proxy(a,{get(S,h,c){if(typeof h!="string")return Reflect.get(S,h,c);let R=[...u,h],b=Reflect.get(S,h,c);return (!b||typeof b!="object")&&o.add(R.join(s)),p(b,R)}});return n.set(f,u.join(s)),r.set(a,f),f},g=t(p(e,[])),l=(a,u)=>{if(!a||typeof a!="object"||u.has(a))return;u.add(a);let y=n.get(a);if(y){y&&o.add(y);return}for(let f of Object.values(a))l(f,u);};return l(g,new WeakSet),{result:g,deps:Array.from(o,a=>a.split(s))}},tn=(e,t,r)=>r.some(n=>!Object.is(Ce(e,n),Ce(t,n))),Ns=(e,t)=>{let r,n,o=[];return ()=>{let s=ir(e);if(s===void 0)return null;if(s===r)return n??null;if(r!==void 0&&o.length>0&&!tn(r,s,o))return r=s,n??null;let p=T().selectorCloneFrozen,g=s&&typeof s=="object"&&Object.isFrozen(s)&&p?I(s):s,l=en(g,t);return r=s,o=l.deps,n=l.result,n??null}},As=(e,t,r=Object.is,n)=>{if(typeof t!="function"||typeof n!="function")return m(`subscribeWithSelector("${e}") requires selector and listener functions.`),()=>{};let o=false,s,p=()=>{let a=sr[e]?.options?.snapshot;return a==="shallow"||a==="ref"?a:"deep"},g=a=>{let u=a!==void 0?a:Jt(e);if(u===null||typeof u!="object")return u;let y=p();return y==="ref"?u:y==="shallow"?ge(u):I(u)};return ot(e)&&(s=t(g()),o=true),ar(e,a=>{if(a===null||!ot(e)){o=false,s=void 0;return}let u=t(g(a));if(!o){let f=s;o=true,s=u,n(u,f);return}if(!r(u,s)){let f=s;s=u,n(u,f);}})};export{Ns as createSelector,As as subscribeWithSelector};//# sourceMappingURL=selectors.js.map
2
2
  //# sourceMappingURL=selectors.js.map
package/dist/server.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { S as StoreOptions } from './options.js';
2
- import { S as StoreStateMap } from './types.js';
2
+ import { c as StoreStateMap } from './types.js';
3
3
  import { S as StoreRegistry } from './store-registry.js';
4
4
  import './utility.js';
5
5
  import './feature.js';
6
+ import './runtime-patch.js';
6
7
  import './registry.js';
8
+ import './computed-types.js';
7
9
 
8
10
  type RequestStoreName<StateMap> = keyof StateMap extends never ? string : keyof StateMap & string;
9
11
  type RequestStoreValue<StateMap, Name extends RequestStoreName<StateMap>> = Name extends keyof StateMap ? StateMap[Name] : unknown;