1
1
/* 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
3
3
import type { ComputedRefImpl as Computed } from './computed.js'
4
4
import type { ReactiveEffect as Effect } from './effect.js'
5
5
@@ -35,7 +35,6 @@ export const enum SubscriberFlags {
35
35
let batchDepth = 0
36
36
let queuedEffects : Effect | undefined
37
37
let queuedEffectsTail : Effect | undefined
38
- let linkPool : Link | undefined
39
38
40
39
export function startBatch ( ) : void {
41
40
++ batchDepth
@@ -195,24 +194,18 @@ export function processComputedUpdate(
195
194
computed : Computed ,
196
195
flags : SubscriberFlags ,
197
196
) : 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
+ ) {
199
203
if ( computed . update ( ) ) {
200
204
const subs = computed . subs
201
205
if ( subs !== undefined ) {
202
206
shallowPropagate ( subs )
203
207
}
204
208
}
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
- }
216
209
}
217
210
}
218
211
@@ -238,22 +231,12 @@ function linkNewDep(
238
231
nextDep : Link | undefined ,
239
232
depsTail : Link | undefined ,
240
233
) : 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 ,
257
240
}
258
241
259
242
if ( depsTail === undefined ) {
@@ -327,7 +310,7 @@ function checkDirty(link: Link): boolean {
327
310
if ( sub . update ( ) ) {
328
311
if ( ( link = subSubs . prevSub ! ) !== undefined ) {
329
312
subSubs . prevSub = undefined
330
- shallowPropagate ( sub . subs ! )
313
+ shallowPropagate ( subSubs )
331
314
sub = link . sub as Computed
332
315
} else {
333
316
sub = subSubs . sub as Computed
@@ -400,25 +383,16 @@ function clearTracking(link: Link): void {
400
383
401
384
if ( nextSub !== undefined ) {
402
385
nextSub . prevSub = prevSub
403
- link . nextSub = undefined
404
386
} else {
405
387
dep . subsTail = prevSub
406
388
}
407
389
408
390
if ( prevSub !== undefined ) {
409
391
prevSub . nextSub = nextSub
410
- link . prevSub = undefined
411
392
} else {
412
393
dep . subs = nextSub
413
394
}
414
395
415
- // @ts -expect-error
416
- link . dep = undefined
417
- // @ts -expect-error
418
- link . sub = undefined
419
- link . nextDep = linkPool
420
- linkPool = link
421
-
422
396
if ( dep . subs === undefined && 'deps' in dep ) {
423
397
const depFlags = dep . flags
424
398
if ( ! ( depFlags & SubscriberFlags . Dirty ) ) {
0 commit comments