const THROTTLE_THRESHOLD_MS = 5000

let lastMessage: string | undefined
let lastCalledAt = 0

/**
 * Logs a warning. If the message is identical the immediate previous logged message and that
 * message was logged within 5 seconds of the current call, the log is ignored. This throttle
 * behavior prevents identical messages from flooding the console.
 *
 * @param message - A message to log.
 * @param config - Configuration for the log.
 */
export const throttledWarn = (message: string): void => {
	if (message === lastMessage && Date.now() - lastCalledAt < THROTTLE_THRESHOLD_MS) {
		lastCalledAt = Date.now()

		return
	}

	lastCalledAt = Date.now()
	lastMessage = message

	console.warn(message)
}
