UNPKG

@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
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==