@riddance/host
Version:
28 lines • 4.19 kB
JavaScript
import { combineConfig, getMetadata } from './meta.js';
import { addHandler } from './registry.js';
let eventHostRegistry;
function setEventHost(host) {
eventHostRegistry = host;
}
function eventHost(meta, cfg, topic, type, entry) {
addHandler('event', {
meta,
config: combineConfig(meta?.config, cfg),
topic,
type,
entry,
});
}
setEventHost(eventHost);
export function registerEventHandler(topic, type, configOrHandler, fn) {
if (typeof configOrHandler === 'function') {
eventHostRegistry(getMetadata(), undefined, topic, type, configOrHandler);
}
else {
if (!fn) {
throw new Error('Please provide a handler function.');
}
eventHostRegistry(getMetadata(), configOrHandler, topic, type, fn);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBeUMsTUFBTSxXQUFXLENBQUE7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQWtCMUMsSUFBSSxpQkFBNEIsQ0FBQTtBQUVoQyxTQUFTLFlBQVksQ0FBQyxJQUFlO0lBQ2pDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUM1QixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQ2QsSUFBMEIsRUFDMUIsR0FBcUMsRUFDckMsS0FBYSxFQUNiLElBQVksRUFDWixLQUFvQjtJQUVwQixVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ2hCLElBQUk7UUFDSixNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ3hDLEtBQUs7UUFDTCxJQUFJO1FBQ0osS0FBSztLQUNSLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFdkIsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxLQUFhLEVBQ2IsSUFBWSxFQUNaLGVBQXFELEVBQ3JELEVBQWtCO0lBRWxCLElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDN0UsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIYW5kbGVyIGFzIEV2ZW50RnVuY3Rpb24sIHR5cGUgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9ldmVudC5qcydcbmltcG9ydCB7IGNvbWJpbmVDb25maWcsIGdldE1ldGFkYXRhLCB0eXBlIEZ1bGxDb25maWd1cmF0aW9uLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHsgYWRkSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlciA9IHtcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICB0b3BpYzogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gICAgZW50cnk6IEV2ZW50RnVuY3Rpb25cbn1cblxudHlwZSBFdmVudEhvc3QgPSAoXG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgY29uZmlnOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBoYW5kbGVyOiBFdmVudEZ1bmN0aW9uLFxuKSA9PiB2b2lkXG5cbmxldCBldmVudEhvc3RSZWdpc3RyeTogRXZlbnRIb3N0XG5cbmZ1bmN0aW9uIHNldEV2ZW50SG9zdChob3N0OiBFdmVudEhvc3QpIHtcbiAgICBldmVudEhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxuZnVuY3Rpb24gZXZlbnRIb3N0KFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNmZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgdG9waWM6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgZW50cnk6IEV2ZW50RnVuY3Rpb24sXG4pIHtcbiAgICBhZGRIYW5kbGVyKCdldmVudCcsIHtcbiAgICAgICAgbWV0YSxcbiAgICAgICAgY29uZmlnOiBjb21iaW5lQ29uZmlnKG1ldGE/LmNvbmZpZywgY2ZnKSxcbiAgICAgICAgdG9waWMsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGVudHJ5LFxuICAgIH0pXG59XG5cbnNldEV2ZW50SG9zdChldmVudEhvc3QpXG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50SGFuZGxlcihcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgRXZlbnRGdW5jdGlvbixcbiAgICBmbj86IEV2ZW50RnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBldmVudEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIHRvcGljLCB0eXBlLCBjb25maWdPckhhbmRsZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGhhbmRsZXIgZnVuY3Rpb24uJylcbiAgICAgICAgfVxuICAgICAgICBldmVudEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIHRvcGljLCB0eXBlLCBmbilcbiAgICB9XG59XG4iXX0=