@riddance/service
Version:
Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.
20 lines • 4.56 kB
JavaScript
import { handle } from '@riddance/host/event';
import { getHandlers } from '@riddance/host/registry';
import { createMockContext, getTestContext, jsonRoundtrip } from './setup.js';
export * from './context.js';
export async function emit(topic, type, subject, data, messageId) {
const timestamp = getTestContext().now();
const matching = getHandlers('event').filter(h => h.topic === topic && h.type === type);
const serialized = jsonRoundtrip(data);
const result = await Promise.allSettled(matching.map(async (handler) => {
const { log, context, success, flush } = createMockContext({}, handler.config, handler.meta);
log.trace('Found handler', undefined, {
handler: { topic, type },
});
const succeeded = await handle(log, context, handler, { subject, event: serialized, timestamp, messageId }, success);
await flush();
return succeeded;
}));
return result.every(r => r.status === 'fulfilled' && r.value);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTdFLGNBQWMsY0FBYyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUN0QixLQUFhLEVBQ2IsSUFBWSxFQUNaLE9BQWUsRUFDZixJQUFnQyxFQUNoQyxTQUFrQjtJQUVsQixNQUFNLFNBQVMsR0FBRyxjQUFjLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUN4QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQTtJQUN2RixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUNuQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsRUFBRTtRQUN6QixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsaUJBQWlCLENBQ3RELEVBQUUsRUFDRixPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxJQUFJLENBQ2YsQ0FBQTtRQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRTtZQUNsQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1NBQzNCLENBQUMsQ0FBQTtRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUMxQixHQUFHLEVBQ0gsT0FBTyxFQUNQLE9BQU8sRUFDUCxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDcEQsT0FBTyxDQUNWLENBQUE7UUFDRCxNQUFNLEtBQUssRUFBRSxDQUFBO1FBQ2IsT0FBTyxTQUFTLENBQUE7SUFDcEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFuZGxlIH0gZnJvbSAnQHJpZGRhbmNlL2hvc3QvZXZlbnQnXG5pbXBvcnQgeyBnZXRIYW5kbGVycyB9IGZyb20gJ0ByaWRkYW5jZS9ob3N0L3JlZ2lzdHJ5J1xuaW1wb3J0IHR5cGUgeyBKc29uU2FmZU9iamVjdCB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBjcmVhdGVNb2NrQ29udGV4dCwgZ2V0VGVzdENvbnRleHQsIGpzb25Sb3VuZHRyaXAgfSBmcm9tICcuL3NldHVwLmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbWl0KFxuICAgIHRvcGljOiBzdHJpbmcsXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICBkYXRhOiBKc29uU2FmZU9iamVjdCB8IHVuZGVmaW5lZCxcbiAgICBtZXNzYWdlSWQ/OiBzdHJpbmcsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBnZXRUZXN0Q29udGV4dCgpLm5vdygpXG4gICAgY29uc3QgbWF0Y2hpbmcgPSBnZXRIYW5kbGVycygnZXZlbnQnKS5maWx0ZXIoaCA9PiBoLnRvcGljID09PSB0b3BpYyAmJiBoLnR5cGUgPT09IHR5cGUpXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGpzb25Sb3VuZHRyaXAoZGF0YSlcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgIG1hdGNoaW5nLm1hcChhc3luYyBoYW5kbGVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbG9nLCBjb250ZXh0LCBzdWNjZXNzLCBmbHVzaCB9ID0gY3JlYXRlTW9ja0NvbnRleHQoXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgaGFuZGxlci5jb25maWcsXG4gICAgICAgICAgICAgICAgaGFuZGxlci5tZXRhLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbG9nLnRyYWNlKCdGb3VuZCBoYW5kbGVyJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcjogeyB0b3BpYywgdHlwZSB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IHN1Y2NlZWRlZCA9IGF3YWl0IGhhbmRsZShcbiAgICAgICAgICAgICAgICBsb2csXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBoYW5kbGVyLFxuICAgICAgICAgICAgICAgIHsgc3ViamVjdCwgZXZlbnQ6IHNlcmlhbGl6ZWQsIHRpbWVzdGFtcCwgbWVzc2FnZUlkIH0sXG4gICAgICAgICAgICAgICAgc3VjY2VzcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGF3YWl0IGZsdXNoKClcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkZWRcbiAgICAgICAgfSksXG4gICAgKVxuICAgIHJldHVybiByZXN1bHQuZXZlcnkociA9PiByLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgJiYgci52YWx1ZSlcbn1cbiJdfQ==