@mtdt.temp/browser-core
Version:
Datadog browser core utilities.
41 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SKIPPED = exports.DISCARDED = void 0;
exports.abstractHooks = abstractHooks;
const mergeInto_1 = require("./mergeInto");
// Discards the event from being sent
exports.DISCARDED = 'DISCARDED';
// Skips from the assembly of the event
exports.SKIPPED = 'SKIPPED';
function abstractHooks() {
const callbacks = {};
return {
register(hookName, callback) {
if (!callbacks[hookName]) {
callbacks[hookName] = [];
}
callbacks[hookName].push(callback);
return {
unregister: () => {
callbacks[hookName] = callbacks[hookName].filter((cb) => cb !== callback);
},
};
},
triggerHook(hookName, param) {
const hookCallbacks = callbacks[hookName] || [];
const results = [];
for (const callback of hookCallbacks) {
const result = callback(param);
if (result === exports.DISCARDED) {
return exports.DISCARDED;
}
if (result === exports.SKIPPED) {
continue;
}
results.push(result);
}
return (0, mergeInto_1.combine)(...results);
},
};
}
//# sourceMappingURL=abstractHooks.js.map