import type { FastifyPluginAsync } from 'fastify' import type { Type } from 'typebox' import type { UserSchema } from '../schemas/auth.ts' import type { ChatMessageSchema } from '../schemas/chat.ts' import { EventEmitter } from 'node:events' import fp from 'fastify-plugin' declare module 'fastify' { interface FastifyInstance { bus: EventEmitter } } interface EventMap { 'chat:new-message': [Type.Static] 'user:profile-updated': [Type.Static] } const plugin: FastifyPluginAsync = fp(async (fastify) => { const bus = new EventEmitter() fastify.decorate('bus', bus) }, { name: 'event-bus', }) export default plugin