next-rest-framework
Version:
Next REST Framework - write type-safe, self-documenting REST APIs in Next.js
25 lines (24 loc) • 4.19 kB
TypeScript
import { type OpenAPIV3_1 } from 'openapi-types';
import { type ValidMethod } from '../constants';
import { type BaseObjectSchemaType, type BaseSchemaType } from './schemas';
import { type ApiRouteMethodHandler, type MethodHandler, type OutputObject } from './method-handlers';
export interface DefineRouteParams<GetBodySchema extends BaseSchemaType = BaseSchemaType, GetQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, GetOutput extends OutputObject = OutputObject, PutBodySchema extends BaseSchemaType = BaseSchemaType, PutQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PutOutput extends OutputObject = OutputObject, PostBodySchema extends BaseSchemaType = BaseSchemaType, PostQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PostOutput extends OutputObject = OutputObject, DeleteBodySchema extends BaseSchemaType = BaseSchemaType, DeleteQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, DeleteOutput extends OutputObject = OutputObject, OptionsBodySchema extends BaseSchemaType = BaseSchemaType, OptionsQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, OptionsOutput extends OutputObject = OutputObject, HeadBodySchema extends BaseSchemaType = BaseSchemaType, HeadQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, HeadOutput extends OutputObject = OutputObject, PatchBodySchema extends BaseSchemaType = BaseSchemaType, PatchQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PatchOutput extends OutputObject = OutputObject> {
[ValidMethod.GET]?: MethodHandler<GetBodySchema, GetQuerySchema, GetOutput>;
[ValidMethod.PUT]?: MethodHandler<PutBodySchema, PutQuerySchema, PutOutput>;
[ValidMethod.POST]?: MethodHandler<PostBodySchema, PostQuerySchema, PostOutput>;
[ValidMethod.DELETE]?: MethodHandler<DeleteBodySchema, DeleteQuerySchema, DeleteOutput>;
[ValidMethod.OPTIONS]?: MethodHandler<OptionsBodySchema, OptionsQuerySchema, OptionsOutput>;
[ValidMethod.HEAD]?: MethodHandler<HeadBodySchema, HeadQuerySchema, HeadOutput>;
[ValidMethod.PATCH]?: MethodHandler<PatchBodySchema, PatchQuerySchema, PatchOutput>;
openApiSpecOverrides?: OpenAPIV3_1.PathItemObject;
}
export interface DefineApiRouteParams<GetBodySchema extends BaseSchemaType = BaseSchemaType, GetQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, GetOutput extends OutputObject = OutputObject, PutBodySchema extends BaseSchemaType = BaseSchemaType, PutQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PutOutput extends OutputObject = OutputObject, PostBodySchema extends BaseSchemaType = BaseSchemaType, PostQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PostOutput extends OutputObject = OutputObject, DeleteBodySchema extends BaseSchemaType = BaseSchemaType, DeleteQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, DeleteOutput extends OutputObject = OutputObject, OptionsBodySchema extends BaseSchemaType = BaseSchemaType, OptionsQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, OptionsOutput extends OutputObject = OutputObject, HeadBodySchema extends BaseSchemaType = BaseSchemaType, HeadQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, HeadOutput extends OutputObject = OutputObject, PatchBodySchema extends BaseSchemaType = BaseSchemaType, PatchQuerySchema extends BaseObjectSchemaType = BaseObjectSchemaType, PatchOutput extends OutputObject = OutputObject> {
[ValidMethod.GET]?: ApiRouteMethodHandler<GetBodySchema, GetQuerySchema, GetOutput>;
[ValidMethod.PUT]?: ApiRouteMethodHandler<PutBodySchema, PutQuerySchema, PutOutput>;
[ValidMethod.POST]?: ApiRouteMethodHandler<PostBodySchema, PostQuerySchema, PostOutput>;
[ValidMethod.DELETE]?: ApiRouteMethodHandler<DeleteBodySchema, DeleteQuerySchema, DeleteOutput>;
[ValidMethod.OPTIONS]?: ApiRouteMethodHandler<OptionsBodySchema, OptionsQuerySchema, OptionsOutput>;
[ValidMethod.HEAD]?: ApiRouteMethodHandler<HeadBodySchema, HeadQuerySchema, HeadOutput>;
[ValidMethod.PATCH]?: ApiRouteMethodHandler<PatchBodySchema, PatchQuerySchema, PatchOutput>;
openApiSpecOverrides?: OpenAPIV3_1.PathItemObject;
}