import type { ThirdPartyTracker } from "./analytics-configuration"; class Tracker { static get instance() { return (this.#instance ??= new this()); } static #instance: Tracker | undefined; #trackers: Promise[] = []; private constructor() {} track(eventName: string, payload?: Record) { for (const tracker of this.#trackers) { tracker.then((t) => t?.track(eventName, payload)); } } registerTracker(tracker: ThirdPartyTracker | Promise | undefined) { if (tracker) { this.#trackers.push(Promise.resolve(tracker)); } } } export const AnalyticsTracker = Tracker.instance;