Rules Hub
Code Ruleset
Rule priority, scope & exceptions
Use this to align rules with the senior-level structure (P0/P1/P2, scope, exceptions/tradeoffs).
Track intentional SSE closure separately from connection failure
Distinguish intentional SSE closure with owned lifecycle state; CLOSED alone is not evidence of successful completion.
Bad example
| 1 | source.onerror = () => { |
| 2 | if (source.readyState !== EventSource.CLOSED) showFailure(); |
| 3 | }; |
Explanation (EN)
readyState alone cannot distinguish an intentional shutdown from a terminal connection failure.
Objašnjenje (HR)
Sam readyState ne razlikuje namjerno gašenje od konačnog kvara veze.
Good example
| 1 | let disposed = false; |
| 2 | source.onerror = () => { |
| 3 | if (!disposed && source.readyState === EventSource.CLOSED) reportTerminalFailure(); |
| 4 | }; |
| 5 | function dispose() { |
| 6 | disposed = true; |
| 7 | source.close(); |
| 8 | if (streamRef.current === source) streamRef.current = null; |
| 9 | } |
Explanation (EN)
This policy leaves transient CONNECTING retries to native EventSource and reports terminal closure only while the owner remains active.
Objašnjenje (HR)
Ova politika prepušta prolazne CONNECTING pokušaje nativnom EventSourceu i prijavljuje konačno zatvaranje samo dok je vlasnik aktivan.
Notes (EN)
Track intentional lifecycle closure separately from EventSource readyState, and decide whether native reconnection or an application fallback owns recovery.
Bilješke (HR)
Namjerno zatvaranje prati odvojeno od EventSource readyStatea. Odredi je li za oporavak odgovorno nativno ponovno spajanje ili aplikacijski fallback.
Exceptions / Tradeoffs (EN)
CLOSED can mean terminal failure, not just intentional completion. Ordinary stream EOF can trigger native reconnection. Closing on every error disables that recovery; only clear a ref if it still points to the same source.
Iznimke / Tradeoffi (HR)
CLOSED može označavati konačni kvar, a ne samo namjerni završetak. Običan kraj streama može pokrenuti nativno ponovno spajanje. Zatvaranje pri svakoj pogrešci to onemogućuje; ref očisti samo ako još pokazuje na isti izvor.