type-provider.d.ts — fastify Source File
Architecture documentation for type-provider.d.ts, a typescript file in the fastify codebase. 3 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 7d09979d_7619_9f51_4440_c6b16489e111["type-provider.d.ts"] 6a6fa08e_3d60_0520_25ea_dea35398fc8f["./route"] 7d09979d_7619_9f51_4440_c6b16489e111 --> 6a6fa08e_3d60_0520_25ea_dea35398fc8f 79072a34_3222_2b87_85da_7f07094af121["./schema"] 7d09979d_7619_9f51_4440_c6b16489e111 --> 79072a34_3222_2b87_85da_7f07094af121 36d8862b_caf4_88a2_ba4d_4f7ed0738291["./utils"] 7d09979d_7619_9f51_4440_c6b16489e111 --> 36d8862b_caf4_88a2_ba4d_4f7ed0738291 style 7d09979d_7619_9f51_4440_c6b16489e111 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { RouteGenericInterface } from './route'
import { FastifySchema } from './schema'
import { HttpKeys, RecordKeysToLowercase } from './utils'
// -----------------------------------------------------------------------------------------------
// TypeProvider
// -----------------------------------------------------------------------------------------------
export interface FastifyTypeProvider {
readonly schema: unknown,
readonly validator: unknown,
readonly serializer: unknown,
}
export interface FastifyTypeProviderDefault extends FastifyTypeProvider {}
export type CallValidatorTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['validator']
export type CallSerializerTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['serializer']
// -----------------------------------------------------------------------------------------------
// FastifyRequestType
// -----------------------------------------------------------------------------------------------
// Used to map undefined SchemaCompiler properties to unknown
// Without brackets, UndefinedToUnknown<undefined | null> => unknown
type UndefinedToUnknown<T> = [T] extends [undefined] ? unknown : T
// union-aware keyof operator
// keyof ({ a: number} | { b: number}) => never
// KeysOf<{a: number} | {b: number}> => "a" | "b"
// this exists to allow users to override faulty type-provider logic.
type KeysOf<T> = T extends any ? keyof T : never
// Resolves Request types either from generic argument or Type Provider.
type ResolveRequestParams<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
UndefinedToUnknown<KeysOf<RouteGeneric['Params']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['params']> : RouteGeneric['Params']>
type ResolveRequestQuerystring<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
UndefinedToUnknown<KeysOf<RouteGeneric['Querystring']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['querystring']> : RouteGeneric['Querystring']>
type ResolveRequestHeaders<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
UndefinedToUnknown<KeysOf<RouteGeneric['Headers']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['headers']> : RouteGeneric['Headers']>
type ResolveRequestBody<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
UndefinedToUnknown<KeysOf<RouteGeneric['Body']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['body']> : RouteGeneric['Body']>
// The target request type. This type is inferenced on fastify 'requests' via generic argument assignment
export interface FastifyRequestType<Params = unknown, Querystring = unknown, Headers = unknown, Body = unknown> {
params: Params,
query: Querystring,
headers: Headers,
body: Body
}
// Resolves the FastifyRequest generic parameters
export interface ResolveFastifyRequestType<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> extends FastifyRequestType {
params: ResolveRequestParams<TypeProvider, SchemaCompiler, RouteGeneric>,
query: ResolveRequestQuerystring<TypeProvider, SchemaCompiler, RouteGeneric>,
headers: RecordKeysToLowercase<ResolveRequestHeaders<TypeProvider, SchemaCompiler, RouteGeneric>>,
body: ResolveRequestBody<TypeProvider, SchemaCompiler, RouteGeneric>
}
// -----------------------------------------------------------------------------------------------
// ... (71 more lines)
Domain
Types
- CallSerializerTypeProvider
- CallValidatorTypeProvider
- FastifyReplyType
- FastifyRequestType
- FastifyTypeProvider
- FastifyTypeProviderDefault
- KeysOf
- ResolveFastifyReplyReturnType
- ResolveFastifyReplyType
- ResolveFastifyRequestType
- ResolveReplyFromSchemaCompiler
- ResolveReplyReturnTypeFromRouteGeneric
- ResolveRequestBody
- ResolveRequestHeaders
- ResolveRequestParams
- ResolveRequestQuerystring
- SafePromiseLike
- SendArgs
- UndefinedToUnknown
Dependencies
- ./route
- ./schema
- ./utils
Source
Frequently Asked Questions
What does type-provider.d.ts do?
type-provider.d.ts is a source file in the fastify codebase, written in typescript. It belongs to the CoreKernel domain.
What does type-provider.d.ts depend on?
type-provider.d.ts imports 3 module(s): ./route, ./schema, ./utils.
Where is type-provider.d.ts in the architecture?
type-provider.d.ts is located at types/type-provider.d.ts (domain: CoreKernel, directory: types).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free