11/* eslint-disable */
2- // Ported from https://github.com/stackblitz/alien-signals/blob/v1.0.0 /src/system.ts
2+ // Ported from https://github.com/stackblitz/alien-signals/blob/v1.0.4 /src/system.ts
33import type { ComputedRefImpl as Computed } from './computed.js'
44import type { ReactiveEffect as Effect } from './effect.js'
55
@@ -35,7 +35,6 @@ export const enum SubscriberFlags {
3535let batchDepth = 0
3636let queuedEffects : Effect | undefined
3737let queuedEffectsTail : Effect | undefined
38- let linkPool : Link | undefined
3938
4039export function startBatch ( ) : void {
4140 ++ batchDepth
@@ -195,24 +194,18 @@ export function processComputedUpdate(
195194 computed : Computed ,
196195 flags : SubscriberFlags ,
197196) : void {
198- if ( flags & SubscriberFlags . Dirty ) {
197+ if (
198+ flags & SubscriberFlags . Dirty ||
199+ ( checkDirty ( computed . deps ! )
200+ ? true
201+ : ( ( computed . flags = flags & ~ SubscriberFlags . PendingComputed ) , false ) )
202+ ) {
199203 if ( computed . update ( ) ) {
200204 const subs = computed . subs
201205 if ( subs !== undefined ) {
202206 shallowPropagate ( subs )
203207 }
204208 }
205- } else if ( flags & SubscriberFlags . PendingComputed ) {
206- if ( checkDirty ( computed . deps ! ) ) {
207- if ( computed . update ( ) ) {
208- const subs = computed . subs
209- if ( subs !== undefined ) {
210- shallowPropagate ( subs )
211- }
212- }
213- } else {
214- computed . flags = flags & ~ SubscriberFlags . PendingComputed
215- }
216209 }
217210}
218211
@@ -238,22 +231,12 @@ function linkNewDep(
238231 nextDep : Link | undefined ,
239232 depsTail : Link | undefined ,
240233) : Link {
241- let newLink : Link
242-
243- if ( linkPool !== undefined ) {
244- newLink = linkPool
245- linkPool = newLink . nextDep
246- newLink . nextDep = nextDep
247- newLink . dep = dep
248- newLink . sub = sub
249- } else {
250- newLink = {
251- dep,
252- sub,
253- nextDep,
254- prevSub : undefined ,
255- nextSub : undefined ,
256- }
234+ const newLink : Link = {
235+ dep,
236+ sub,
237+ nextDep,
238+ prevSub : undefined ,
239+ nextSub : undefined ,
257240 }
258241
259242 if ( depsTail === undefined ) {
@@ -327,7 +310,7 @@ function checkDirty(link: Link): boolean {
327310 if ( sub . update ( ) ) {
328311 if ( ( link = subSubs . prevSub ! ) !== undefined ) {
329312 subSubs . prevSub = undefined
330- shallowPropagate ( sub . subs ! )
313+ shallowPropagate ( subSubs )
331314 sub = link . sub as Computed
332315 } else {
333316 sub = subSubs . sub as Computed
@@ -400,25 +383,16 @@ function clearTracking(link: Link): void {
400383
401384 if ( nextSub !== undefined ) {
402385 nextSub . prevSub = prevSub
403- link . nextSub = undefined
404386 } else {
405387 dep . subsTail = prevSub
406388 }
407389
408390 if ( prevSub !== undefined ) {
409391 prevSub . nextSub = nextSub
410- link . prevSub = undefined
411392 } else {
412393 dep . subs = nextSub
413394 }
414395
415- // @ts -expect-error
416- link . dep = undefined
417- // @ts -expect-error
418- link . sub = undefined
419- link . nextDep = linkPool
420- linkPool = link
421-
422396 if ( dep . subs === undefined && 'deps' in dep ) {
423397 const depFlags = dep . flags
424398 if ( ! ( depFlags & SubscriberFlags . Dirty ) ) {
0 commit comments