@fastify/type-provider-json-schema-to-ts
Version:
A Type Provider for json-schema-to-ts over Fastify
24 lines (23 loc) • 2.6 kB
TypeScript
import { FastifyBaseLogger, FastifyPluginAsync, FastifyPluginCallback, FastifyPluginOptions, FastifyTypeProvider, RawServerBase, RawServerDefault } from 'fastify';
import { FromSchema, FromSchemaDefaultOptions, FromSchemaOptions, JSONSchema } from 'json-schema-to-ts';
export interface JsonSchemaToTsProviderOptions {
ValidatorSchemaOptions?: FromSchemaOptions;
SerializerSchemaOptions?: FromSchemaOptions;
}
export interface JsonSchemaToTsProvider<Options extends JsonSchemaToTsProviderOptions = {}> extends FastifyTypeProvider {
validator: this['schema'] extends JSONSchema ? FromSchema<this['schema'], Options['ValidatorSchemaOptions'] extends FromSchemaOptions ? Options['ValidatorSchemaOptions'] : FromSchemaDefaultOptions> : unknown;
serializer: this['schema'] extends JSONSchema ? FromSchema<this['schema'], Options['SerializerSchemaOptions'] extends FromSchemaOptions ? Options['SerializerSchemaOptions'] : FromSchemaDefaultOptions> : unknown;
}
export interface FastifyPluginJsonSchemaToTsOptions extends JsonSchemaToTsProviderOptions {
Options?: FastifyPluginOptions;
Server?: RawServerBase;
Logger?: FastifyBaseLogger;
}
export type FastifyPluginCallbackJsonSchemaToTs<Options extends FastifyPluginJsonSchemaToTsOptions = {}> = FastifyPluginCallback<Options['Options'] extends FastifyPluginOptions ? Options['Options'] : Record<never, never>, Options['Server'] extends RawServerBase ? Options['Server'] : RawServerDefault, JsonSchemaToTsProvider<{
ValidatorSchemaOptions: Options['ValidatorSchemaOptions'] extends FromSchemaOptions ? Options['ValidatorSchemaOptions'] : FromSchemaDefaultOptions;
SerializerSchemaOptions: Options['SerializerSchemaOptions'] extends FromSchemaOptions ? Options['SerializerSchemaOptions'] : FromSchemaDefaultOptions;
}>, Options['Logger'] extends FastifyBaseLogger ? Options['Logger'] : FastifyBaseLogger>;
export type FastifyPluginAsyncJsonSchemaToTs<Options extends FastifyPluginJsonSchemaToTsOptions = {}> = FastifyPluginAsync<Options['Options'] extends FastifyPluginOptions ? Options['Options'] : Record<never, never>, Options['Server'] extends RawServerBase ? Options['Server'] : RawServerDefault, JsonSchemaToTsProvider<{
ValidatorSchemaOptions: Options['ValidatorSchemaOptions'] extends FromSchemaOptions ? Options['ValidatorSchemaOptions'] : FromSchemaDefaultOptions;
SerializerSchemaOptions: Options['SerializerSchemaOptions'] extends FromSchemaOptions ? Options['SerializerSchemaOptions'] : FromSchemaDefaultOptions;
}>, Options['Logger'] extends FastifyBaseLogger ? Options['Logger'] : FastifyBaseLogger>;