True iff the recorder implements at least one data-flow event method.
Used by executor.attachCombinedRecorder to decide whether to hook into
the scope data-flow channel.
Detection rule
Accepts both object-literal recorders (own-property handlers) AND class
instances (handlers declared on the class prototype). Rejects handlers
inherited from Object.prototype — that's always accidental or
malicious pollution, never a legitimate recorder.
Lifecycle exclusions
clear and toSnapshot are NOT counted as event methods — a recorder
that only implements those has nothing to observe and would be a no-op
on either channel.
Return type
Returns plain boolean (not a type predicate). The full ScopeRecorder
interface has payload types that diverge from CombinedRecorder's union
variants for shared methods, so a narrowing predicate would be unsound.
Callers that need to treat the recorder as a ScopeRecorder do so explicitly
at the attach site — the cast is the contract that each channel passes
its own payload variant.
True iff the recorder implements at least one data-flow event method. Used by
executor.attachCombinedRecorderto decide whether to hook into the scope data-flow channel.Detection rule
Accepts both object-literal recorders (own-property handlers) AND class instances (handlers declared on the class prototype). Rejects handlers inherited from
Object.prototype— that's always accidental or malicious pollution, never a legitimate recorder.Lifecycle exclusions
clearandtoSnapshotare NOT counted as event methods — a recorder that only implements those has nothing to observe and would be a no-op on either channel.Return type
Returns plain
boolean(not a type predicate). The fullScopeRecorderinterface has payload types that diverge fromCombinedRecorder's union variants for shared methods, so a narrowing predicate would be unsound. Callers that need to treat the recorder as aScopeRecorderdo so explicitly at the attach site — the cast is the contract that each channel passes its own payload variant.