Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/js/main/core/src/lib/event/event-emitter/
Upload File :
Current File : /var/www/homesaver/www/bitrix/js/main/core/src/lib/event/event-emitter/warningstore.js

import Type from "../../type";
import Runtime from "../../runtime";

export default class WarningStore
{
	constructor()
	{
		this.warnings = new Map();
		this.printDelayed = Runtime.debounce(this.print.bind(this), 500);
	}

	add(target, eventName, listeners)
	{
		let contextWarnings = this.warnings.get(target);
		if (!contextWarnings)
		{
			contextWarnings = Object.create(null);
			this.warnings.set(target, contextWarnings);
		}

		if (!contextWarnings[eventName])
		{
			contextWarnings[eventName] = {};
		}

		contextWarnings[eventName].size = listeners.size;
		if (!Type.isArray(contextWarnings[eventName].errors))
		{
			contextWarnings[eventName].errors = [];
		}

		contextWarnings[eventName].errors.push(new Error());
	}

	print()
	{
		this.warnings.forEach((warnings) => {
			for (let eventName in warnings)
			{
				console.groupCollapsed(
					'Possible BX.Event.EventEmitter memory leak detected. ' +
					warnings[eventName].size + ' "' + eventName + '" listeners added. ' +
					'Use emitter.setMaxListeners() to increase limit.'
				);
				console.dir(warnings[eventName].errors);
				console.groupEnd();
			}
		});

		this.clear();
	}

	clear()
	{
		this.warnings.clear();
	}

	printDelayed()
	{
	}
}