import * as http from 'node:http' import { expect } from 'tstyche' import fastify, { FastifyServerFactory } from '../../fastify.js' // Custom Server type CustomType = void interface CustomIncomingMessage extends http.IncomingMessage { fakeMethod?: () => CustomType; } interface CustomServerResponse extends http.ServerResponse { fakeMethod?: () => CustomType; } const serverFactory: FastifyServerFactory = (handler, opts) => { const server = http.createServer((req: CustomIncomingMessage, res: CustomServerResponse) => { req.fakeMethod = () => {} res.fakeMethod = () => {} handler(req, res) }) return server } // The request and reply objects should have the fakeMethods available (even though they may be undefined) const customServer = fastify({ serverFactory }) customServer.get('/', function (request, reply) { if (request.raw.fakeMethod) { expect(request.raw.fakeMethod()).type.toBe() } if (reply.raw.fakeMethod) { expect(reply.raw.fakeMethod()).type.toBe() } })