diff --git a/.changeset/orange-carrots-listen.md b/.changeset/orange-carrots-listen.md new file mode 100644 index 0000000..20f3f92 --- /dev/null +++ b/.changeset/orange-carrots-listen.md @@ -0,0 +1,5 @@ +--- +'@tanstack/store': patch +--- + +refactor(store): replace array with set in \_\_depsThatHaveWrittenThisTick diff --git a/docs/reference/variables/depsThatHaveWrittenThisTick.md b/docs/reference/variables/depsThatHaveWrittenThisTick.md index c48d0df..f5c6d57 100644 --- a/docs/reference/variables/depsThatHaveWrittenThisTick.md +++ b/docs/reference/variables/depsThatHaveWrittenThisTick.md @@ -18,5 +18,5 @@ Defined in: [scheduler.ts:28](https://github.com/TanStack/store/blob/main/packag ```ts current: ( | Derived - | Store unknown>)[]; + | Set unknown>)[]; ``` diff --git a/packages/store/src/scheduler.ts b/packages/store/src/scheduler.ts index da36dda..89f6ebb 100644 --- a/packages/store/src/scheduler.ts +++ b/packages/store/src/scheduler.ts @@ -26,7 +26,7 @@ export const __derivedToStore = new WeakMap< >() export const __depsThatHaveWrittenThisTick = { - current: [] as Array | Store>, + current: new Set | Store>(), } let __isFlushing = false @@ -37,11 +37,11 @@ const __initialBatchValues = new Map, unknown>() function __flush_internals(relatedVals: ReadonlyArray>) { for (const derived of relatedVals) { - if (__depsThatHaveWrittenThisTick.current.includes(derived)) { + if (__depsThatHaveWrittenThisTick.current.has(derived)) { continue } - __depsThatHaveWrittenThisTick.current.push(derived) + __depsThatHaveWrittenThisTick.current.add(derived) derived.recompute() const stores = __derivedToStore.get(derived) @@ -109,7 +109,7 @@ export function __flush(store: Store) { const derivedVals = __storeToDerived.get(store) if (!derivedVals) continue - __depsThatHaveWrittenThisTick.current.push(store) + __depsThatHaveWrittenThisTick.current.add(store) __flush_internals(derivedVals) } @@ -125,7 +125,7 @@ export function __flush(store: Store) { } } finally { __isFlushing = false - __depsThatHaveWrittenThisTick.current = [] + __depsThatHaveWrittenThisTick.current.clear() __initialBatchValues.clear() } }