UNPKG

fastify

Version:

Fast and low overhead web framework, for Node.js

201 lines (170 loc) 6.76 kB
import fastify, { RouteOptions, FastifyReply, FastifyRequest } from '../../fastify' import { expectType, expectError, expectAssignable } from 'tsd' import { FastifyInstance } from '../../types/instance' import { FastifyError } from 'fastify-error' import { RequestPayload } from '../../types/hooks' const server = fastify() // Test payload generic pass through for preSerialization and onSend type TestPayloadType = { foo: string; bar: number; } // Synchronous Tests server.addHook('onRequest', function (request, reply, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('preParsing', function (request, reply, payload, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<RequestPayload>(payload) expectAssignable<(err?: FastifyError | null, res?: RequestPayload) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('preValidation', function (request, reply, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('preHandler', function (request, reply, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook<TestPayloadType>('preSerialization', function (request, reply, payload, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<TestPayloadType>(payload) // we expect this to be unknown when not specified like in the previous test expectType<void>(done(new Error())) expectType<void>(done(null, 'foobar')) expectType<void>(done()) expectError<void>(done(new Error(), 'foobar')) }) server.addHook<TestPayloadType>('onSend', function (request, reply, payload, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<TestPayloadType>(payload) expectType<void>(done(new Error())) expectType<void>(done(null, 'foobar')) expectType<void>(done()) expectError<void>(done(new Error(), 'foobar')) }) server.addHook('onResponse', function (request, reply, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('onTimeout', function (request, reply, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('onError', function (request, reply, error, done) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<FastifyError>(error) expectType<() => void>(done) expectType<void>(done()) }) server.addHook('onRoute', function (opts) { expectType<FastifyInstance>(this) expectType<RouteOptions & { routePath: string; path: string; prefix: string}>(opts) }) server.addHook('onRegister', (instance, done) => { expectType<FastifyInstance>(instance) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('onReady', function (done) { expectType<FastifyInstance>(this) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) server.addHook('onClose', (instance, done) => { expectType<FastifyInstance>(instance) expectAssignable<(err?: FastifyError) => void>(done) expectAssignable<(err?: NodeJS.ErrnoException) => void>(done) expectType<void>(done(new Error())) }) // Asynchronous server.addHook('onRequest', async function (request, reply) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) }) server.addHook('preParsing', async function (request, reply, payload) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<RequestPayload>(payload) }) server.addHook('preValidation', async function (request, reply) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) }) server.addHook('preHandler', async function (request, reply) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) }) server.addHook<TestPayloadType>('preSerialization', async function (request, reply, payload) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<TestPayloadType>(payload) // we expect this to be unknown when not specified like in the previous test }) server.addHook<TestPayloadType>('onSend', async function (request, reply, payload) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<TestPayloadType>(payload) }) server.addHook('onResponse', async function (request, reply) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) }) server.addHook('onTimeout', async function (request, reply) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) }) server.addHook('onError', async function (request, reply, error) { expectType<FastifyInstance>(this) expectType<FastifyRequest>(request) expectType<FastifyReply>(reply) expectType<FastifyError>(error) }) server.addHook('onRegister', async (instance) => { expectType<FastifyInstance>(instance) }) server.addHook('onReady', async function () { expectType<FastifyInstance>(this) }) server.addHook('onClose', async (instance) => { expectType<FastifyInstance>(instance) })