stroid 0.1.1 → 0.1.2

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 (180) hide show
  1. package/CHANGELOG.md +210 -119
  2. package/README.md +104 -431
  3. package/dist/async.d.ts +42 -9
  4. package/dist/async.js +26 -26
  5. package/dist/async.js.map +1 -1
  6. package/dist/cache.d.ts +12 -0
  7. package/dist/computed.d.ts +40 -7
  8. package/dist/computed.js +11 -11
  9. package/dist/computed.js.map +1 -1
  10. package/dist/core.d.ts +5 -15
  11. package/dist/core.js +14 -15
  12. package/dist/core.js.map +1 -1
  13. package/dist/devtools.d.ts +30 -5
  14. package/dist/devtools.js +1 -1
  15. package/dist/devtools.js.map +1 -1
  16. package/dist/feature.d.ts +92 -14
  17. package/dist/feature.js +1 -1
  18. package/dist/feature.js.map +1 -1
  19. package/dist/helpers.d.ts +37 -3
  20. package/dist/helpers.js +14 -15
  21. package/dist/helpers.js.map +1 -1
  22. package/dist/index-internal.d.ts +44 -0
  23. package/dist/index.d.cts +169 -33
  24. package/dist/index.d.ts +169 -33
  25. package/dist/index.js +24 -23
  26. package/dist/index.js.map +1 -1
  27. package/dist/install.d.ts +6 -4
  28. package/dist/install.js +1 -1
  29. package/dist/install.js.map +1 -1
  30. package/dist/options.d.ts +295 -0
  31. package/dist/persist.d.ts +1 -1
  32. package/dist/persist.js +1 -1
  33. package/dist/persist.js.map +1 -1
  34. package/dist/react/index.d.ts +70 -0
  35. package/dist/react/index.js +38 -0
  36. package/dist/react/index.js.map +1 -0
  37. package/dist/registry.d.ts +117 -0
  38. package/dist/runtime-admin.d.ts +4 -2
  39. package/dist/runtime-admin.js +1 -1
  40. package/dist/runtime-admin.js.map +1 -1
  41. package/dist/runtime-tools.d.ts +66 -9
  42. package/dist/runtime-tools.js +2 -2
  43. package/dist/runtime-tools.js.map +1 -1
  44. package/dist/selectors.d.ts +4 -2
  45. package/dist/selectors.js +1 -1
  46. package/dist/selectors.js.map +1 -1
  47. package/dist/server.d.ts +30 -2
  48. package/dist/server.js +11 -10
  49. package/dist/server.js.map +1 -1
  50. package/dist/store-registry.d.ts +80 -0
  51. package/dist/sync.d.ts +1 -1
  52. package/dist/sync.js +1 -1
  53. package/dist/sync.js.map +1 -1
  54. package/dist/testing.d.ts +16 -4
  55. package/dist/testing.js +14 -15
  56. package/dist/testing.js.map +1 -1
  57. package/dist/tsdoc-metadata.json +11 -0
  58. package/dist/types/adapters/options.d.ts +335 -0
  59. package/dist/types/async/cache.d.ts +39 -0
  60. package/dist/types/async/clone.d.ts +10 -0
  61. package/dist/types/async/errors.d.ts +3 -0
  62. package/dist/types/async/fetch.d.ts +37 -0
  63. package/dist/types/async/inflight.d.ts +13 -0
  64. package/dist/types/async/rate.d.ts +5 -0
  65. package/dist/types/async/registry.d.ts +116 -0
  66. package/dist/types/async/request.d.ts +11 -0
  67. package/dist/types/async/retry.d.ts +10 -0
  68. package/dist/types/async.d.ts +10 -0
  69. package/dist/types/computed/computed-graph.d.ts +29 -0
  70. package/dist/types/computed/index.d.ts +16 -0
  71. package/dist/types/config.d.ts +10 -0
  72. package/dist/types/core/index.d.ts +11 -0
  73. package/dist/types/core/lifecycle-hooks.d.ts +16 -0
  74. package/dist/types/core/store-admin-impl.d.ts +9 -0
  75. package/dist/types/core/store-admin.d.ts +9 -0
  76. package/dist/types/core/store-core.d.ts +13 -0
  77. package/dist/types/core/store-create.d.ts +16 -0
  78. package/dist/types/core/store-hydrate-impl.d.ts +35 -0
  79. package/dist/types/core/store-hydrate.d.ts +9 -0
  80. package/dist/types/core/store-lifecycle/hooks.d.ts +19 -0
  81. package/dist/types/core/store-lifecycle/identity.d.ts +23 -0
  82. package/dist/types/core/store-lifecycle/registry.d.ts +53 -0
  83. package/dist/types/core/store-lifecycle/types.d.ts +67 -0
  84. package/dist/types/core/store-lifecycle/validation.d.ts +53 -0
  85. package/dist/types/core/store-name.d.ts +28 -0
  86. package/dist/types/core/store-notify.d.ts +12 -0
  87. package/dist/types/core/store-read.d.ts +18 -0
  88. package/dist/types/core/store-registry.d.ts +108 -0
  89. package/dist/types/core/store-replace-impl.d.ts +11 -0
  90. package/dist/types/core/store-replace.d.ts +9 -0
  91. package/dist/types/core/store-set-impl.d.ts +13 -0
  92. package/dist/types/core/store-set.d.ts +9 -0
  93. package/dist/types/core/store-shared/core.d.ts +13 -0
  94. package/dist/types/core/store-shared/notify.d.ts +12 -0
  95. package/dist/types/core/store-transaction.d.ts +26 -0
  96. package/dist/types/core/store-write-shared.d.ts +19 -0
  97. package/dist/types/core/store-write.d.ts +13 -0
  98. package/dist/types/features/feature-registry.d.ts +91 -0
  99. package/dist/types/features/lifecycle.d.ts +40 -0
  100. package/dist/types/index.d.ts +17 -0
  101. package/dist/types/integrations/query.d.ts +8 -0
  102. package/dist/types/internals/computed-order.d.ts +3 -0
  103. package/dist/types/internals/config.d.ts +116 -0
  104. package/dist/types/internals/diagnostics.d.ts +21 -0
  105. package/dist/types/internals/reporting.d.ts +9 -0
  106. package/dist/types/internals/store-admin.d.ts +7 -0
  107. package/dist/types/internals/store-ops.d.ts +13 -0
  108. package/dist/types/internals/test-reset.d.ts +2 -0
  109. package/dist/types/internals/write-context.d.ts +15 -0
  110. package/dist/types/notification/delivery.d.ts +3 -0
  111. package/dist/types/notification/index.d.ts +10 -0
  112. package/dist/types/notification/metrics.d.ts +12 -0
  113. package/dist/types/notification/priority.d.ts +9 -0
  114. package/dist/types/notification/scheduler.d.ts +11 -0
  115. package/dist/types/notification/snapshot.d.ts +8 -0
  116. package/dist/types/runtime-admin/index.d.ts +2 -0
  117. package/dist/types/runtime-tools/index.d.ts +58 -0
  118. package/dist/types/store.d.ts +16 -0
  119. package/dist/types/types/utility.d.ts +17 -0
  120. package/dist/types/utils/clone.d.ts +4 -0
  121. package/dist/types/utils/devfreeze.d.ts +2 -0
  122. package/dist/types/utils/hash.d.ts +8 -0
  123. package/dist/types/utils/path.d.ts +5 -0
  124. package/dist/types/utils/validation.d.ts +14 -0
  125. package/dist/types/utils.d.ts +13 -0
  126. package/dist/types.d.ts +65 -0
  127. package/dist/utility.d.ts +15 -0
  128. package/package.json +26 -11
  129. package/dist/_tsup-dts-rollup.d.cts +0 -2411
  130. package/dist/_tsup-dts-rollup.d.ts +0 -2411
  131. package/dist/async.cjs +0 -34
  132. package/dist/async.cjs.map +0 -1
  133. package/dist/async.d.cts +0 -9
  134. package/dist/computed.cjs +0 -13
  135. package/dist/computed.cjs.map +0 -1
  136. package/dist/computed.d.cts +0 -7
  137. package/dist/core.cjs +0 -24
  138. package/dist/core.cjs.map +0 -1
  139. package/dist/core.d.cts +0 -15
  140. package/dist/devtools.cjs +0 -2
  141. package/dist/devtools.cjs.map +0 -1
  142. package/dist/devtools.d.cts +0 -5
  143. package/dist/feature.cjs +0 -2
  144. package/dist/feature.cjs.map +0 -1
  145. package/dist/feature.d.cts +0 -14
  146. package/dist/helpers.cjs +0 -24
  147. package/dist/helpers.cjs.map +0 -1
  148. package/dist/helpers.d.cts +0 -3
  149. package/dist/index.cjs +0 -35
  150. package/dist/index.cjs.map +0 -1
  151. package/dist/install.cjs +0 -2
  152. package/dist/install.cjs.map +0 -1
  153. package/dist/install.d.cts +0 -4
  154. package/dist/persist.cjs +0 -2
  155. package/dist/persist.cjs.map +0 -1
  156. package/dist/persist.d.cts +0 -1
  157. package/dist/react.cjs +0 -36
  158. package/dist/react.cjs.map +0 -1
  159. package/dist/react.d.cts +0 -7
  160. package/dist/react.d.ts +0 -7
  161. package/dist/react.js +0 -36
  162. package/dist/react.js.map +0 -1
  163. package/dist/runtime-admin.cjs +0 -2
  164. package/dist/runtime-admin.cjs.map +0 -1
  165. package/dist/runtime-admin.d.cts +0 -2
  166. package/dist/runtime-tools.cjs +0 -4
  167. package/dist/runtime-tools.cjs.map +0 -1
  168. package/dist/runtime-tools.d.cts +0 -9
  169. package/dist/selectors.cjs +0 -2
  170. package/dist/selectors.cjs.map +0 -1
  171. package/dist/selectors.d.cts +0 -2
  172. package/dist/server.cjs +0 -12
  173. package/dist/server.cjs.map +0 -1
  174. package/dist/server.d.cts +0 -2
  175. package/dist/sync.cjs +0 -2
  176. package/dist/sync.cjs.map +0 -1
  177. package/dist/sync.d.cts +0 -1
  178. package/dist/testing.cjs +0 -24
  179. package/dist/testing.cjs.map +0 -1
  180. package/dist/testing.d.cts +0 -4
@@ -1,5 +1,30 @@
1
- export { getHistory_alias_1 as getHistory } from './_tsup-dts-rollup.js';
2
- export { clearHistory_alias_1 as clearHistory } from './_tsup-dts-rollup.js';
3
- export { HistoryEntry } from './_tsup-dts-rollup.js';
4
- export { HistoryDiff } from './_tsup-dts-rollup.js';
5
- export { installDevtools } from './_tsup-dts-rollup.js';
1
+ export { installDevtools } from './install.js';
2
+ import { a as StoreValue } from './options.js';
3
+ import './utility.js';
4
+
5
+ /**
6
+ * @module features/devtools
7
+ *
8
+ * LAYER: Feature runtime
9
+ * OWNS: Module-level behavior and exports for features/devtools.
10
+ *
11
+ * Consumers: Internal imports and public API.
12
+ */
13
+
14
+ type HistoryDiff = {
15
+ added: string[];
16
+ removed: string[];
17
+ changed: string[];
18
+ } | null;
19
+ type HistoryEntry = {
20
+ ts: number;
21
+ action: string;
22
+ prev: StoreValue;
23
+ next: StoreValue;
24
+ diff: HistoryDiff;
25
+ };
26
+
27
+ declare const getHistory: (name: string, limit?: number) => HistoryEntry[];
28
+ declare const clearHistory: (name?: string) => void;
29
+
30
+ export { type HistoryDiff, type HistoryEntry, clearHistory, getHistory };
package/dist/devtools.js CHANGED
@@ -1,2 +1,2 @@
1
- var X=new Map,ie=null,ae=(e,t)=>{X.set(e,t),ie?.(e,t);};var J=e=>X.get(e),I=()=>Array.from(X.keys()),ce=e=>{ie=e;};var We=new Map,b=(e,t,r=0)=>{!e||typeof t!="function"||We.set(e,{name:e,order:r,fn:t});};var ue=()=>({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,noSignalWarned:new Set,shapeWarned:new Set,autoCreateWarned:new Set,mutableResultWarned:new Set,cleanupSubs:Object.create(null),storeCleanupFns: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}}),le=e=>{Object.values(e.revalidateHandlers).forEach(t=>{try{t();}catch{}}),Object.values(e.cleanupSubs).forEach(t=>{try{t();}catch{}}),Object.values(e.storeCleanupFns).forEach(t=>{t.forEach(r=>{try{r();}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.cleanupSubs).forEach(t=>delete e.cleanupSubs[t]),Object.keys(e.storeCleanupFns).forEach(t=>delete e.storeCleanupFns[t]),Object.keys(e.revalidateHandlers).forEach(t=>delete e.revalidateHandlers[t]),e.revalidateKeys.clear(),e.noSignalWarned.clear(),e.shapeWarned.clear(),e.autoCreateWarned.clear(),e.mutableResultWarned.clear(),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 G=new Map,He=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,de,Q=e=>(de||He||e).replace(/\.ts(\?|$)/,".js$1"),P=Q(new URL("./store.js",import.meta.url).href);var ze=()=>{de=void 0,G.clear();};b("registry.scope-override",ze,110);var Be=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],notifyScheduled:false,batchDepth:0}),Ue=e=>{e.pendingNotifications.clear(),e.pendingBuffer.length=0,e.orderedNames.length=0,e.notifyScheduled=false,e.batchDepth=0;},qe=()=>({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:{depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,failed:false,error:void 0},async:ue(),notify:Be()}),$=e=>{let t=Q(e),r=G.get(t);if(r)return r;let n=qe();return G.set(t,n),n},W=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var pe=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,Ue(e.notify),le(e.async);};var j=e=>e||$(P);var Ke={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}`));}},fe={logSink:Ke,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",defaultSnapshotMode:"deep",strictAsyncUsageErrors:false,middleware:[],allowUntrustedHydration:false,mutatorProduce:void 0},ee=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,defaultSnapshotMode:e.defaultSnapshotMode,strictAsyncUsageErrors:e.strictAsyncUsageErrors,middleware:[...e.middleware],allowUntrustedHydration:e.allowUntrustedHydration,mutatorProduce:e.mutatorProduce}),Z=new WeakMap,ge=ee(fe),Ye=e=>{let t=Z.get(e);return t||(t=ee(ge),Z.set(e,t)),t};var E=()=>Ye(j());var Ge=()=>{Z=new WeakMap,ge=ee(fe);};b("config.reset",Ge,90);var Qe=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,Ze=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,ye=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,et="production",tt=Qe??Ze??et,q=typeof ye=="boolean"?ye:tt!=="production",v=()=>q,Se=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},rt=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},nt=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},te=(e,t)=>{if((E().logSink.critical??rt)(e,t),E().assertRuntime)throw new Error(e)},S=(e,t)=>{if(!q)return;if((E().logSink.warn??Se)(e,t),E().assertRuntime)throw new Error(e)},_=(e,t)=>{if((E().logSink.warn??Se)(e,t),E().assertRuntime)throw new Error(e)};var H=(e,t)=>{if(!q)return;(E().logSink.log??nt)(e,t);};var me=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",he=()=>"Map detected; converting to plain object.",be=()=>"Set detected; converting to array.";var B=new Set(["__proto__","constructor","prototype"]);var Re=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,st=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 z=(e,t)=>{let r=st(e);if(r)throw new Error(`${r} values are not supported`);let n=Re(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()&&S(me()),e.toISOString();if(n==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),v()&&S(he());let o={};for(let[s,a]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");o[String(s)]=z(a,t);}return o}if(n==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),v()&&S(be()),Array.from(e,o=>z(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[a,u]of Object.entries(s))if(u.enumerable&&!B.has(a)){if("get"in u||"set"in u)throw new Error(`Accessor properties are not supported during sanitize ("${a}")`);o[a]=z(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=>z(o,t))}return e},re=e=>z(e,new WeakSet);var ne=null,it=()=>{if(ne)return ne;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 ne=t,t},ke=e=>{let t=it(),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},at=2166136261,ct=2654435761,ut=1e5,F=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},O=(e,t)=>{F(e,t.length);for(let r=0;r<t.length;r++)F(e,t.charCodeAt(r));},p=(e,t)=>{O(e,t);},we=(e,t)=>{if(Number.isNaN(t)){p(e,"NaN");return}if(!Number.isFinite(t)){p(e,t>0?"Infinity":"-Infinity");return}if(Object.is(t,-0)){p(e,"-0");return}let r=t|0;if(t===r){p(e,"int"),F(e,r);return}p(e,"num"),O(e,String(t));},A=(e,t)=>{if(e.nodes++>ut){p(e,"[max]");return}if(t===null){p(e,"null");return}let r=typeof t;if(r==="string"){p(e,"string"),O(e,t);return}if(r==="number"){p(e,"number"),we(e,t);return}if(r==="boolean"){p(e,t?"true":"false");return}if(r==="undefined"){p(e,"undefined");return}if(r==="bigint"){p(e,"bigint"),O(e,t.toString());return}if(r==="symbol"){p(e,"symbol");let c=t;O(e,Symbol.keyFor(c)??c.description??String(c));return}if(r==="function"){p(e,"function"),O(e,t.name||"anonymous");return}let n=t,o=e.seen.get(n);if(o!==void 0){p(e,"ref"),F(e,o);return}let s=e.nextId++;if(e.seen.set(n,s),Array.isArray(n)){p(e,"array"),F(e,n.length);for(let c=0;c<n.length;c++)Object.prototype.hasOwnProperty.call(n,c)?A(e,n[c]):p(e,"hole");return}if(n instanceof Date){p(e,"date"),we(e,n.getTime());return}if(n instanceof Map){p(e,"map"),F(e,n.size),n.forEach((c,l)=>{A(e,l),A(e,c);});return}if(n instanceof Set){p(e,"set"),F(e,n.size),n.forEach(c=>{A(e,c);});return}p(e,"object");let a=Object.getOwnPropertyDescriptors(n),u=[];Object.entries(a).forEach(([c,l])=>{l?.enumerable&&(B.has(c)||"get"in l||"set"in l||u.push([c,l]));}),F(e,u.length);for(let[c,l]of u)O(e,c),A(e,l.value);},oe=e=>{if(typeof e=="string")return ke(JSON.stringify(e));let t={h1:at,h2:ct,seen:new WeakMap,nextId:1,nodes:0};A(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 lt=typeof globalThis<"u"&&typeof globalThis.structuredClone=="function";var V=(e,t=new WeakMap)=>{if(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 s=new Map;return t.set(e,s),e.forEach((a,u)=>{s.set(V(u,t),V(a,t));}),s}if(e instanceof Set){let s=new Set;return t.set(e,s),e.forEach(a=>{s.add(V(a,t));}),s}if(Array.isArray(e)){let s=[];return t.set(e,s),e.forEach((a,u)=>{s[u]=V(a,t);}),s}let r=globalThis?.WeakRef;if(r&&e instanceof r)return _("WeakRef values cannot be deep-cloned. Returning the original reference."),e;let n={};t.set(e,n);let o;try{o=Object.getOwnPropertyDescriptors(e);}catch{return _("deepClone failed to read object descriptors (possible Proxy or host object). Returning the original reference."),e}return Object.entries(o).forEach(([s,a])=>{!a.enumerable||B.has(s)||"get"in a||"set"in a||(n[s]=V(a.value,t));}),n},se=e=>{try{if(lt)return structuredClone(e)}catch{}return V(e)};var ve=false,xe=e=>{try{return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return e}},dt=({name:e,useDevtools:t,existingDevtools:r,stores:n,warn:o})=>{if(!t||typeof window>"u")return r;let s=window.__REDUX_DEVTOOLS_EXTENSION__||window.__REDUX_DEVTOOLS_EXTENSION__;if(!s||typeof s.connect!="function")return o(`DevTools requested for "${e}" but Redux DevTools extension not found.`),r;if(r)return r;let a=s.connect({name:"stroid"});return a.init(n),a},L=({data:e,redactor:t,deepClone:r})=>{if(typeof t=="function")try{return t(r(e))}catch{return e}return e},pt=(e,t)=>{if(typeof e!="object"||typeof t!="object"||e===null||t===null)return null;let r=e,n=t,o=[],s=[],a=[],u=new Set(Object.keys(r)),c=new Set(Object.keys(n));return c.forEach(l=>{u.has(l)?Object.is(r[l],n[l])||a.push(l):o.push(l);}),u.forEach(l=>{c.has(l)||s.push(l);}),{added:o,removed:s,changed:a}},Ce=({name:e,action:t,prev:r,next:n,history:o,historyLimit:s,applyRedactor:a,deepClone:u})=>{if(s===0)return;o[e]||(o[e]=[]);let c={ts:Date.now(),action:t,prev:u(a(r)),next:u(a(n)),diff:pt(r,n)};o[e].push(c),o[e].length>s&&o[e].splice(0,o[e].length-s);},Ee=({name:e,action:t,force:r=false,devtools:n,enabled:o,stores:s,applyRedactor:a})=>{if(!(!n||!r&&!o))try{let u={...s,[e]:a(s[e])};n.send({type:`${e}/${t}`},u);}catch{}},ft=()=>{let e=Object.create(null),t;return {onStoreCreate(r){t=dt({name:r.name,useDevtools:!!r.options.devtools,existingDevtools:t,stores:r.getAllStores(),warn:r.warn}),Ce({name:r.name,action:"create",prev:null,next:r.getStoreValue(),history:e,historyLimit:r.options.historyLimit??50,applyRedactor:n=>L({data:n,redactor:r.options.redactor,deepClone:r.deepClone}),deepClone:r.deepClone});},onStoreWrite(r){Ce({name:r.name,action:r.action,prev:r.prev,next:r.next,history:e,historyLimit:r.options.historyLimit??50,applyRedactor:n=>L({data:n,redactor:r.options.redactor,deepClone:r.deepClone}),deepClone:r.deepClone}),Ee({name:r.name,action:r.action,devtools:t,enabled:!!r.options.devtools,stores:r.getAllStores(),applyRedactor:n=>L({data:n,redactor:r.options.redactor,deepClone:r.deepClone})});},afterStoreDelete(r){r.options.devtools&&Ee({name:r.name,action:"delete",force:true,devtools:t,enabled:true,stores:r.getAllStores(),applyRedactor:n=>L({data:n,redactor:r.options.redactor,deepClone:r.deepClone})}),delete e[r.name];},resetAll(){Object.keys(e).forEach(r=>{delete e[r];}),t=void 0;},api:{getHistory(r,n){if(!e[r])return [];let o=e[r];return n&&n>0?xe(o.slice(-n)):xe(o)},clearHistory(r){if(r){delete e[r];return}Object.keys(e).forEach(n=>{delete e[n];});}}}},Fe=()=>{ve||(ve=true,ae("devtools",ft));};var Me=()=>{Fe();};var Te=({name:e,label:t,fn:r,args:n,reportIssue:o})=>{if(typeof r=="function")try{r(...n);}catch(s){let a=`${t} for "${e}" failed: ${s?.message??s}`;o(a,"always");}};var K=(e,t={})=>{let{severity:r="warn",visibility:n="dev",onError:o}=t;if(o?.(e),r==="critical"){n==="dev"&&S(e),te(e);return}if(n==="always"){_(e);return}S(e);};b("computed.order-resolver",()=>{},105);var je=()=>j($(P)),_e=()=>je().computedEntries;var Ae=e=>Object.prototype.hasOwnProperty.call(_e(),e);var St=new Set;var mt=()=>{St.clear();};b("ssr.warnings",mt,60);var U=e=>M.get(e)?.api;var wt=()=>Ne().computedCleanups;var Ve=e=>{let t=wt(),r=t.get(e);if(!r){v()&&S(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var Ie=e=>{let t=e.stores,r=e.subscribers,n=e.initialStates,o=e.initialFactories,s=e.metaEntries,a=e.snapshotCache,u=e.featureRuntimes,c=e.deletingStores,l=(i,y)=>{K(y,{onError:s[i]?.options?.onError,severity:"warn",visibility:"dev"});},g=({name:i,prev:y,options:f,initialState:R,getMeta:C,getStoreValue:T,hasStore:w})=>({name:i,options:f,prev:y,getMeta:C,getStoreValue:T,getAllStores:()=>t,getInitialState:()=>R,hasStore:w,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:h=>{K(h,{onError:f.onError,severity:"warn",visibility:"dev"});},warn:S,log:H,hashState:oe,deepClone:se,sanitize:re,validate:()=>({ok:true,value:y}),isDev:v}),m=({name:i,prev:y,options:f,initialState:R,phase:C})=>{let T=g({name:i,prev:y,options:f,initialState:R,getMeta:()=>s[i],getStoreValue:()=>t[i],hasStore:()=>W(e,i)}),w=g({name:i,prev:y,options:f,initialState:R,getMeta:()=>{},getStoreValue:()=>y,hasStore:()=>false});I().forEach(h=>{let D=u.get(h);C==="before"?D?.beforeStoreDelete?.(T):D?.afterStoreDelete?.(w);});},d=i=>{if(!W(e,i))return;let y=t[i],f=s[i].options,R=n[i],C=r[i];c.add(i);try{C?.forEach(h=>{try{h(null);}catch(D){S(`Subscriber for "${i}" threw during delete: ${D?.message??D}`);}}),Te({name:i,label:"onDelete",fn:f.onDelete,args:[y],reportIssue:(h,D)=>{K(h,{onError:f.onError,severity:"warn",visibility:D});}}),m({name:i,prev:y,options:f,initialState:R,phase:"before"}),delete t[i],delete r[i],delete n[i],delete o[i],delete s[i],delete a[i],Ae(i)&&Ve(i);let w=e.computedDependents[i];if(w)for(let h of w)S(`[stroid] source store "${i}" was deleted. Computed store "${h}" depends on it and will return stale data. Call deleteComputed("${h}") to clean up.`);m({name:i,prev:y,options:f,initialState:R,phase:"after"}),H(`Store "${i}" deleted`);}finally{c.delete(i);}};return {deleteExistingStore:d,clearAllStores:()=>{let i=[],f=0,R=Number.POSITIVE_INFINITY;for(;f<20;){let T=Object.keys(t);if(T.length===0)break;T.forEach(h=>{W(e,h)&&(d(h),i.push(h));}),f+=1;let w=Object.keys(t).length;if(w===0||w>=R)break;R=w;}let C=Object.keys(t).length;return C>0?S(`clearAllStores stopped after ${f} pass${f===1?"":"es"}; ${C} store(s) still registered (likely recreated during deletion).`):S(`All stores cleared (${i.length} stores removed)`),i},clearStores:i=>{let y=Object.keys(t).filter(f=>i?i.endsWith("*")?f.startsWith(i.slice(0,-1)):f===i:true);return y.forEach(f=>d(f)),y},reportStoreError:l}};var kt=P,vt=$(kt);var Pe=new WeakSet,xt=e=>{Pe.has(e)||(Pe.add(e),I().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=J(t);r&&e.featureRuntimes.set(t,r());}}));},k=()=>{let e=j(vt);return xt(e),e};var Ne=()=>k();var N=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}}}),Ct=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)}),Et=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)});N(()=>k().stores);N(()=>k().subscribers);N(()=>k().initialStates);N(()=>k().initialFactories);N(()=>k().metaEntries);N(()=>k().snapshotCache);var M=Ct(()=>k().featureRuntimes),$e=new WeakMap,Ft=e=>{let t=$e.get(e);return t||(t=Ie(e),$e.set(e,t)),t};Et(()=>Ft(k()));var Mt=e=>{let t=M.get(e);if(t)return t;let r=J(e);if(!r)return;let n=r();return M.set(e,n),n},Tt=()=>{I().forEach(e=>{Mt(e);});};ce((e,t)=>{M.get(e)||M.set(e,t());});Tt();var Dt=()=>{pe(k());},Ot=()=>{M.forEach(e=>{try{e.resetAll?.();}catch{}}),M.clear();};b("features.reset",Ot,10);b("registries.clear",Dt,20);var jt=(e,t)=>U("devtools")?.getHistory?.(e,t)??[],_t=e=>{U("devtools")?.clearHistory?.(e);};Me();export{_t as clearHistory,jt as getHistory,Me as installDevtools};//# sourceMappingURL=devtools.js.map
1
+ var xe=new Map,tt=null,rt=(e,t)=>{xe.set(e,t),tt?.(e,t);};var ge=e=>xe.get(e),X=()=>Array.from(xe.keys()),ot=e=>{tt=e;};var Gt=new Map,M=(e,t,r=0)=>{!e||typeof t!="function"||Gt.set(e,{name:e,order:r,fn:t});};var nt=()=>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:nt(),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}}),it=e=>{Object.values(e.storeCleanups).forEach(t=>{Object.values(t).forEach(r=>{r?.forEach(o=>{try{o();}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(),nt().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 ve=new Map,at=new WeakSet,Me=e=>{at.has(e)||(at.add(e),X().forEach(t=>{if(!e.featureRuntimes.get(t)){let r=ge(t);r&&e.featureRuntimes.set(t,r());}}));},Xt=typeof __STROID_REGISTRY_ID__<"u"&&__STROID_REGISTRY_ID__||typeof process<"u"&&process.env?.STROID_REGISTRY_ID||void 0,ct,Fe=e=>(ct||Xt||e).replace(/\.ts(\?|$)/,".js$1"),J=Fe(new URL("../../store.js",import.meta.url).href);var Jt=()=>{ct=void 0,ve.clear();};M("registry.scope-override",Jt,110);var Qt=()=>({pendingNotifications:new Set,pendingBuffer:[],orderedNames:[],subscriberBuffer:[],notifyScheduled:false,batchDepth:0,flushId:0,isFlushing:false}),Zt=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;},er=()=>({depth:0,pending:[],stagedValues:new Map,snapshotCache:new Map,failed:false,error:void 0}),tr=(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:er(),async:st(),notify:Qt(),lifecycleListener:null};return Me(t),t},Q=e=>{let t=Fe(e),r=ve.get(t);if(r)return r;let o=tr();return ve.set(t,o),o},ce=(e,t)=>Object.prototype.hasOwnProperty.call(e.stores,t);var ut=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,Zt(e.notify),it(e.async),e.lifecycleListener=null;};var Ee=(e,t)=>{try{e.lifecycleListener?.(t);}catch{}};var $=[],dt={run:(e,t)=>{$.push(e);try{return t()}finally{$.pop();}},get:()=>$.length>0?$[$.length-1]:null,enterWith:e=>{if($.length>0){$[$.length-1]=e;return}$.push(e);}};var Z=e=>(dt).get()||e||Q(J);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}`));}},pt={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},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}),De=new WeakMap,gt=je(pt),nr=e=>{let t=De.get(e);return t||(t=je(gt),De.set(e,t)),t};var j=()=>nr(Z());var cr=()=>{De=new WeakMap,gt=je(pt);};M("config.reset",cr,90);var ur=typeof process<"u"&&typeof process.env?.NODE_ENV=="string"?process.env.NODE_ENV:void 0,lr=typeof import.meta<"u"&&import.meta?.env?.MODE?import.meta.env.MODE:void 0,yt=typeof globalThis<"u"&&typeof globalThis.__STROID_DEV__=="boolean"?globalThis.__STROID_DEV__:void 0,dr="production",fr=ur??lr??dr,ye=typeof yt=="boolean"?yt:fr!=="production",x=()=>ye,St=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&(t?console.warn(`[stroid] ${e}`,t):console.warn(`[stroid] ${e}`));},pr=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&(t?console.error(`[stroid] ${e}`,t):console.error(`[stroid] ${e}`));},gr=(e,t)=>{typeof console<"u"&&typeof console.log=="function"&&(t?console.log(`[stroid] ${e}`,t):console.log(`[stroid] ${e}`));},Oe=(e,t)=>{if((j().logSink.critical??pr)(e,t),j().assertRuntime)throw new Error(e)},g=(e,t)=>{if(!ye)return;if((j().logSink.warn??St)(e,t),j().assertRuntime)throw new Error(e)},ee=(e,t)=>{if((j().logSink.warn??St)(e,t),j().assertRuntime)throw new Error(e)};var ue=(e,t)=>{if(!ye)return;(j().logSink.log??gr)(e,t);};var mt=()=>"Date detected; stored as ISO string. Use new Date(value) when reading.",ht=()=>"Map detected; converting to plain object.",bt=()=>"Set detected; converting to array.";var te=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,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 le=(e,t)=>{let r=Sr(e);if(r)throw new Error(`${r} values are not supported`);let o=wt(e);if(o==="number"){if(!Number.isFinite(e))throw new Error("Non-finite numbers are not supported");return e}if(o==="bigint")throw new Error("BigInt values are not supported");if(o==="symbol")throw new Error("Symbol values are not supported");if(o==="date")return x()&&g(mt()),e.toISOString();if(o==="map"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e),x()&&g(ht());let n={};for(let[s,u]of e){if(typeof s!="string")throw new Error("Map keys must be strings to remain JSON-safe");n[String(s)]=le(u,t);}return n}if(o==="set"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),x()&&g(bt()),Array.from(e,n=>le(n,t))}if(o==="object"){if(t.has(e))throw new Error("Circular reference detected during sanitize");t.add(e);let n={},s=Object.getOwnPropertyDescriptors(e);for(let[u,f]of Object.entries(s))if(f.enumerable&&!te.has(u)){if("get"in f||"set"in f)throw new Error(`Accessor properties are not supported during sanitize ("${u}")`);n[u]=le(f.value,t);}return n}if(o==="array"){if(t.has(e))throw new Error("Circular reference detected during sanitize");return t.add(e),e.map(n=>le(n,t))}return e},Ne=e=>le(e,new WeakSet);var Ae=null,mr=()=>{if(Ae)return Ae;let e,t=[];for(let r=0;r<256;r++){e=r;for(let o=0;o<8;o++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e>>>0;}return Ae=t,t},Ct=e=>{let t=mr(),r=-1;for(let o=0;o<e.length;o++)r=r>>>0,r=r>>>8^t[(r^e.charCodeAt(o))&255];return (r^-1)>>>0},hr=2166136261,br=2654435761,wr=1e5,W=(e,t)=>{let r=t>>>0;e.h1=Math.imul(e.h1^r,2246822507),e.h2=Math.imul(e.h2^r,3266489909);},K=(e,t)=>{W(e,t.length);for(let r=0;r<t.length;r++)W(e,t.charCodeAt(r));},w=(e,t)=>{K(e,t);},Rt=(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"),W(e,r);return}w(e,"num"),K(e,String(t));},re=(e,t)=>{if(e.nodes++>wr){w(e,"[max]");return}if(t===null){w(e,"null");return}let r=typeof t;if(r==="string"){w(e,"string"),K(e,t);return}if(r==="number"){w(e,"number"),Rt(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"),K(e,t.toString());return}if(r==="symbol"){w(e,"symbol");let l=t;K(e,Symbol.keyFor(l)??l.description??String(l));return}if(r==="function"){w(e,"function"),K(e,t.name||"anonymous");return}let o=t,n=e.seen.get(o);if(n!==void 0){w(e,"ref"),W(e,n);return}let s=e.nextId++;if(e.seen.set(o,s),Array.isArray(o)){w(e,"array"),W(e,o.length);for(let l=0;l<o.length;l++)Object.prototype.hasOwnProperty.call(o,l)?re(e,o[l]):w(e,"hole");return}if(o instanceof Date){w(e,"date"),Rt(e,o.getTime());return}if(o instanceof Map){w(e,"map"),W(e,o.size),o.forEach((l,p)=>{re(e,p),re(e,l);});return}if(o instanceof Set){w(e,"set"),W(e,o.size),o.forEach(l=>{re(e,l);});return}w(e,"object");let u=Object.getOwnPropertyDescriptors(o),f=[];Object.entries(u).forEach(([l,p])=>{p?.enumerable&&(te.has(l)||"get"in p||"set"in p||f.push([l,p]));}),W(e,f.length);for(let[l,p]of f)K(e,l),re(e,p.value);},Ve=e=>{if(typeof e=="string")return Ct(JSON.stringify(e));let t={h1:hr,h2:br,seen:new WeakMap,nextId:1,nodes:0};re(t,e);let r=t.h1>>>0,o=t.h2>>>0;return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,o^=o>>>16,o=Math.imul(o,668265261),o^=o>>>15,o=Math.imul(o,374761393),o^=o>>>16,(r&2097151)*4294967296+(o>>>0)};var Rr=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[o,n]of t)if(typeof n=="function"&&e instanceof n)return o;let r=globalThis.Node;return typeof r=="function"&&e instanceof r?"DOM Node":null},Cr=e=>_e(e)===null,kr=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(kr(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 n=new Map;return t.set(e,n),e.forEach((s,u)=>{n.set(Y(u,t),Y(s,t));}),n}if(e instanceof Set){let n=new Set;return t.set(e,n),e.forEach(s=>{n.add(Y(s,t));}),n}if(Array.isArray(e)){let n=[];return t.set(e,n),e.forEach((s,u)=>{n[u]=Y(s,t);}),n}let r={};t.set(e,r);let o;try{o=Object.getOwnPropertyDescriptors(e);}catch(n){throw new Error(`deepClone failed to read object descriptors (possible Proxy or host object): ${n?.message??n}`)}return Object.entries(o).forEach(([n,s])=>{!s.enumerable||te.has(n)||"get"in s||"set"in s||(r[n]=Y(s.value,t));}),r},L=e=>{if(Rr)try{return structuredClone(e)}catch(t){if(!Cr(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 g(`deepClone fell back to manual clone after structuredClone failed: ${t?.message??t}`),Y(e)}return Y(e)};var xr=(e,t,...r)=>{if(typeof e=="function")try{e(...r);}catch(o){let n=o?.message??o;ee(`${t} callback threw: ${String(n)}`);}},Se=(e,t={})=>{let{severity:r="warn",visibility:o="dev",onError:n}=t;if(xr(n,"onError",e),r==="critical"){o==="dev"&&g(e),Oe(e);return}if(o==="always"){ee(e);return}g(e);};var kt=false,xt=e=>{try{return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return e}},vr=({name:e,useDevtools:t,existingDevtools:r,stores:o,warn:n})=>{if(!t||typeof window>"u")return r;let s=window.__REDUX_DEVTOOLS_EXTENSION__||window.__REDUX_DEVTOOLS_EXTENSION__;if(!s||typeof s.connect!="function")return n(`DevTools requested for "${e}" but Redux DevTools extension not found.`),r;if(r)return r;let u=s.connect({name:"stroid"});return u.init(o),u},me=({data:e,redactor:t,deepClone:r})=>{if(typeof t=="function")try{return t(r(e))}catch{return e}return e},Mr=(e,t)=>{if(typeof e!="object"||typeof t!="object"||e===null||t===null)return null;let r=e,o=t,n=[],s=[],u=[],f=new Set(Object.keys(r)),l=new Set(Object.keys(o));return l.forEach(p=>{f.has(p)?Object.is(r[p],o[p])||u.push(p):n.push(p);}),f.forEach(p=>{l.has(p)||s.push(p);}),{added:n,removed:s,changed:u}},vt=({name:e,action:t,prev:r,next:o,history:n,historyLimit:s,applyRedactor:u,deepClone:f})=>{if(s===0)return;n[e]||(n[e]=[]);let l={ts:Date.now(),action:t,prev:f(u(r)),next:f(u(o)),diff:Mr(r,o)};n[e].push(l),n[e].length>s&&n[e].splice(0,n[e].length-s);},Mt=({name:e,action:t,force:r=false,devtools:o,enabled:n,stores:s,applyRedactor:u})=>{if(!(!o||!r&&!n))try{let f={...s,[e]:u(s[e])};o.send({type:`${e}/${t}`},f);}catch{}},Fr=()=>{let e=Object.create(null),t;return {onStoreCreate(r){t=vr({name:r.name,useDevtools:!!r.options.devtools,existingDevtools:t,stores:r.getAllStores(),warn:r.warn}),vt({name:r.name,action:"create",prev:null,next:r.getStoreValue(),history:e,historyLimit:r.options.historyLimit??50,applyRedactor:o=>me({data:o,redactor:r.options.redactor,deepClone:r.deepClone}),deepClone:r.deepClone});},onStoreWrite(r){vt({name:r.name,action:r.action,prev:r.prev,next:r.next,history:e,historyLimit:r.options.historyLimit??50,applyRedactor:o=>me({data:o,redactor:r.options.redactor,deepClone:r.deepClone}),deepClone:r.deepClone}),Mt({name:r.name,action:r.action,devtools:t,enabled:!!r.options.devtools,stores:r.getAllStores(),applyRedactor:o=>me({data:o,redactor:r.options.redactor,deepClone:r.deepClone})});},afterStoreDelete(r){r.options.devtools&&Mt({name:r.name,action:"delete",force:true,devtools:t,enabled:true,stores:r.getAllStores(),applyRedactor:o=>me({data:o,redactor:r.options.redactor,deepClone:r.deepClone})}),delete e[r.name];},resetAll(){Object.keys(e).forEach(r=>{delete e[r];}),t=void 0;},api:{getHistory(r,o){if(!e[r])return [];let n=e[r];return o&&o>0?xt(n.slice(-o)):xt(n)},clearHistory(r){if(r){delete e[r];return}Object.keys(e).forEach(o=>{delete e[o];});}}}},Ft=()=>{kt||(kt=true,rt("devtools",Fr));};var Et=()=>{Ft();};var Tt=({name:e,label:t,fn:r,args:o,reportIssue:n})=>{if(typeof r=="function")try{r(...o);}catch(s){let u=`${t} for "${e}" failed: ${s?.message??s}`;n(u,"always");}};M("computed.order-resolver",()=>{},105);var Ot=()=>Z(Q(J)),Nt=()=>Ot().computedEntries;var At=e=>Object.prototype.hasOwnProperty.call(Nt(),e);var Dr=new Set;var jr=()=>{Dr.clear();};M("ssr.warnings",jr,60);var be=e=>B.get(e)?.api;var zt=new Map;var fe=(e,t,r)=>{let o=zt.get(e);!o||o.size===0||o.forEach(n=>{try{n(t,r);}catch(s){typeof console<"u"&&console.warn&&console.warn(`[stroid] lifecycle hook "${e}" failed:`,s);}});};var _r=()=>{let e=pe().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",_r,40);var Pr=()=>pe().computedCleanups;var Bt=e=>{let t=Pr(),r=t.get(e);if(!r){x()&&g(`deleteComputed("${e}") -- not found`);return}r(),t.delete(e);};var Ut=e=>{let t=e.stores,r=e.subscribers,o=e.initialStates,n=e.initialFactories,s=e.metaEntries,u=e.snapshotCache,f=e.featureRuntimes,l=e.deletingStores,p=(a,C)=>{Se(C,{onError:s[a]?.options?.onError,severity:"warn",visibility:"dev"});},S=({name:a,prev:C,options:m,initialState:E,getMeta:T,getStoreValue:_,hasStore:D})=>({name:a,options:m,prev:C,getMeta:T,getStoreValue:_,getAllStores:()=>t,getInitialState:()=>E,hasStore:D,setStoreValue:()=>{},applyFeatureState:()=>{},notify:()=>{},reportStoreError:k=>{Se(k,{onError:m.onError,severity:"warn",visibility:"dev"});},warn:g,warnAlways:ee,log:ue,hashState:Ve,deepClone:L,sanitize:Ne,validate:()=>({ok:true,value:C}),isDev:x}),h=({name:a,prev:C,options:m,initialState:E,phase:T})=>{let _=S({name:a,prev:C,options:m,initialState:E,getMeta:()=>s[a],getStoreValue:()=>t[a],hasStore:()=>ce(e,a)}),D=S({name:a,prev:C,options:m,initialState:E,getMeta:()=>{},getStoreValue:()=>C,hasStore:()=>false});X().forEach(k=>{let A=f.get(k);T==="before"?A?.beforeStoreDelete?.(_):A?.afterStoreDelete?.(D);});},y=a=>{if(!ce(e,a))return;let C=t[a],m=s[a].options,E=o[a],T=r[a];l.add(a);try{T?.forEach(k=>{try{k(null);}catch(A){g(`Subscriber for "${a}" threw during delete: ${A?.message??A}`);}}),Tt({name:a,label:"onDelete",fn:m.onDelete,args:[C],reportIssue:(k,A)=>{Se(k,{onError:m.onError,severity:"warn",visibility:A});}}),h({name:a,prev:C,options:m,initialState:E,phase:"before"}),delete t[a],delete r[a],delete o[a],delete n[a],delete s[a],delete u[a],At(a)&&Bt(a);let D=e.computedDependents[a];if(D)for(let k of D)g(`[stroid] source store "${a}" was deleted. Computed store "${k}" depends on it and will return stale data. Call deleteComputed("${k}") to clean up.`);h({name:a,prev:C,options:m,initialState:E,phase:"after"}),fe("afterStoreDelete",a,{type:"afterStoreDelete",prev:C}),Ee(e,{type:"deleted",name:a}),ue(`Store "${a}" deleted`);}finally{l.delete(a);}};return {deleteExistingStore:y,clearAllStores:()=>{let a=[],m=0,E=Number.POSITIVE_INFINITY;for(;m<20;){let _=Object.keys(t);if(_.length===0)break;_.forEach(k=>{ce(e,k)&&(y(k),a.push(k));}),m+=1;let D=Object.keys(t).length;if(D===0||D>=E)break;E=D;}let T=Object.keys(t).length;return T>0?g(`clearAllStores stopped after ${m} pass${m===1?"":"es"}; ${T} store(s) still registered (likely recreated during deletion).`):g(`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=>y(m)),C},reportStoreError:p}};var Ye=J,Kt=Q(Ye);var I=()=>{let e=Z(Kt);return Me(e),e};var pe=()=>I();var oe=e=>new Proxy(Object.create(null),{get:(t,r)=>e()[r],set:(t,r,o)=>(e()[r]=o,true),deleteProperty:(t,r)=>(delete e()[r],true),has:(t,r)=>r in e(),ownKeys:()=>Reflect.ownKeys(e()),getOwnPropertyDescriptor:(t,r)=>{let o=Object.getOwnPropertyDescriptor(e(),r);if(o)return {...o,configurable:true}}}),Hr=e=>new Proxy(new Map,{get:(t,r)=>{let o=e();if(r==="size")return o.size;if(r===Symbol.iterator)return o[Symbol.iterator].bind(o);let n=o[r];return typeof n=="function"?n.bind(o):n},set:(t,r,o)=>(e()[r]=o,true)}),$r=e=>new Proxy({},{get:(t,r)=>{let o=e(),n=o[r];return typeof n=="function"?n.bind(o):n},set:(t,r,o)=>(e()[r]=o,true)});oe(()=>I().stores);oe(()=>I().subscribers);oe(()=>I().initialStates);oe(()=>I().initialFactories);oe(()=>I().metaEntries);oe(()=>I().snapshotCache);var B=Hr(()=>I().featureRuntimes),qt=new WeakMap,zr=e=>{let t=qt.get(e);return t||(t=Ut(e),qt.set(e,t)),t};$r(()=>zr(I()));var Wr=e=>{let t=B.get(e);if(t)return t;let r=ge(e);if(!r)return;let o=r();return B.set(e,o),o},Lr=()=>{X().forEach(e=>{Wr(e);});};ot((e,t)=>{B.get(e)||B.set(e,t());});Lr();var Br=()=>{ut(I());},Ur=()=>{B.forEach(e=>{try{e.resetAll?.();}catch{}}),B.clear();};M("features.reset",Ur,10);M("registries.clear",Br,20);M("registry.default",()=>{Ye=J,Kt=Q(Ye);},115);var qr=(e,t)=>be("devtools")?.getHistory?.(e,t)??[],Kr=e=>{be("devtools")?.clearHistory?.(e);};Et();export{Kr as clearHistory,qr as getHistory,Et as installDevtools};//# sourceMappingURL=devtools.js.map
2
2
  //# sourceMappingURL=devtools.js.map