Add Logging singleton to manually control Mediabunny's console output (fixes #415)

This commit is contained in:
Vanilagy
2026-06-18 19:32:18 +02:00
parent 92a384f418
commit cdc2ef63dd
28 changed files with 324 additions and 65 deletions
+5 -2
View File
@@ -7,6 +7,7 @@
*/
import { Bitstream } from '../shared/bitstream';
import { Logging } from './logging';
export function assert(x: unknown): asserts x {
if (!x) {
@@ -577,7 +578,7 @@ export const retriedFetch = async (
throw error;
}
console.error('Retrying failed fetch. Error:', error);
Logging._error('Retrying failed fetch. Error:', error);
if (!Number.isFinite(retryDelayInSeconds) || retryDelayInSeconds < 0) {
throw new TypeError('Retry delay must be a non-negative finite number.');
@@ -1215,7 +1216,7 @@ export class EventEmitter<TEvents extends Record<string, unknown>> {
/** @internal */
_listeners = new Map<keyof TEvents, Set<{ fn: (data: never) => unknown; once: boolean }>>();
/** Registers a listener for the given event. */
/** Registers a listener for the given event. Returns a function that, when called, removes the listener again. */
on<K extends keyof TEvents>(
event: K,
listener: (data: TEvents[K]) => unknown,
@@ -1246,6 +1247,8 @@ export class EventEmitter<TEvents extends Record<string, unknown>> {
try {
(entry.fn as (data: unknown) => void)(data);
} catch (error) {
// Deliberately not routed through Logging here: Logging emits via an EventEmitter, so a throwing
// log listener would recurse straight back into this handler.
console.error(error);
}