@grafana/faro-core
Version:
Core package of Faro.
43 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initializeMetas = initializeMetas;
const utils_1 = require("../utils");
function initializeMetas(_unpatchedConsole, internalLogger, _config) {
let items = [];
let listeners = [];
const getValue = () => items.reduce((acc, item) => Object.assign(acc, (0, utils_1.isFunction)(item) ? item() : item), {});
const notifyListeners = () => {
if (listeners.length) {
const value = getValue();
listeners.forEach((listener) => listener(value));
}
};
const add = (...newItems) => {
internalLogger.debug('Adding metas\n', newItems);
items.push(...newItems);
notifyListeners();
};
const remove = (...itemsToRemove) => {
internalLogger.debug('Removing metas\n', itemsToRemove);
items = items.filter((currentItem) => !itemsToRemove.includes(currentItem));
notifyListeners();
};
const addListener = (listener) => {
internalLogger.debug('Adding metas listener\n', listener);
listeners.push(listener);
};
const removeListener = (listener) => {
internalLogger.debug('Removing metas listener\n', listener);
listeners = listeners.filter((currentListener) => currentListener !== listener);
};
return {
add,
remove,
addListener,
removeListener,
get value() {
return getValue();
},
};
}
//# sourceMappingURL=initialize.js.map