How the library's two unsolicited diagnostics (a throwing lifecycle hook
with no RequestOptions.onHookError observer, and the one-time
stateOwner keying warning) are emitted.
"warn" (default): route through onHookError when configured, falling
back to a console.warn carrying a structured AniLinkDiagnostic.
"hook": route through onHookError only; the console is never touched,
so environments that capture console.warn get zero noise.
"silent": suppress both diagnostics entirely.
The modes gate only unsolicited fallback output. A diagnostic carrying a
real failure (a throwing hook, a failed MAL refresh grant) always reaches
a configured observer in every mode. The consumer asked to observe
failures, so the mode never silences the observer itself.
How the library's two unsolicited diagnostics (a throwing lifecycle hook with no RequestOptions.onHookError observer, and the one-time
stateOwnerkeying warning) are emitted."warn"(default): route throughonHookErrorwhen configured, falling back to aconsole.warncarrying a structured AniLinkDiagnostic."hook": route throughonHookErroronly; the console is never touched, so environments that captureconsole.warnget zero noise."silent": suppress both diagnostics entirely.The modes gate only unsolicited fallback output. A diagnostic carrying a real failure (a throwing hook, a failed MAL refresh grant) always reaches a configured observer in every mode. The consumer asked to observe failures, so the mode never silences the observer itself.