Repository navigation
Conversation
Co-Authored-By: Shotaro Nakamura <syoutarou1103@outlook.jp>
Contributor
|
Website preview: https://pr-131-eclipsa.xiarenda61.workers.dev Commit: 8757e5b |
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the standalone
effect/signalincore/reactive/core.ts(exported viaeclipsa/client), which had a broken lifecycle:signal.get()added the effect tosignal.effectsbut never added the signal toeffect.signals, so theFinalizationRegistrycleanup that iterateseffect.signalswas a permanent no-op → effects were never unsubscribed.effect()setcurrentEffectwithouttry/finally: a throwing body left tracking dangling (next unrelatedget()subscribed the dead effect), and successful runs reset tonullinstead of the previous effect, breaking nestedeffect()inside an outer effect.fn, but the held value (newEffect) referencesfn, sofncould never be collected and cleanup could never fire.Changes:
effectnow returns adisposefunction for explicit unsubscription; GC-based cleanup runs when the caller drops the handle.Adds unit tests for dispose/unsubscribe, throwing bodies, and nested effects.
Link to Devin session: https://app.devin.ai/sessions/50e38e97b4534695ba2c96c67ba6c585
Open in Devin Desktop: https://app.devin.ai/desktop/session/50e38e97b4534695ba2c96c67ba6c585?variant=devin
Requested by: @nakasyou