Logout API and implementation
This commit is contained in:
@@ -4,7 +4,7 @@ import type { Method } from "./Method";
|
||||
import type { MimeTypePredicate } from "./MimeType";
|
||||
import { QueryEmpty, type Query } from "./Query";
|
||||
import { RequestBodyFile, RequestBodyJson, RequestBodyMultipart, RequestBodyNone, RequestBodyText, RequestBodyUrlEncoded, type RequestBody } from "./RequestBody";
|
||||
import { ResponseBodyFile, ResponseBodyJson, ResponseBodyText, ResponseEmpty, type ResponseBody } from "./ResponseBody";
|
||||
import { ResponseBodyFile, ResponseBodyJson, ResponseBodyNone, ResponseBodyText, ResponseEmpty, type ResponseBody } from "./ResponseBody";
|
||||
import { Route, RouteLiteral, RouteParam } from "./Route";
|
||||
|
||||
export interface Api<Props extends Api.PropsAny> {
|
||||
@@ -109,6 +109,14 @@ export const requestBodyFile = <const MimeType extends string>(mimeType: MimeTyp
|
||||
readonly query: T["props"]["query"],
|
||||
}> => Api(method, { ...props, request: RequestBodyFile(mimeType) });
|
||||
|
||||
export const responseBodyNone = <const Status extends number>(status: Status) =>
|
||||
<const T extends Api.Any>({ method, props: { response, ...props } }: T): Api<{
|
||||
readonly route: T["props"]["route"],
|
||||
readonly request: T["props"]["request"],
|
||||
readonly response: { readonly [K in keyof T["props"]["response"] | Status]: K extends Status ? ResponseBodyNone : T["props"]["response"][K] },
|
||||
readonly query: T["props"]["query"],
|
||||
}> => Api(method, { ...props, response: Object.freeze<any>({ ...response, [status]: ResponseBodyNone }) });
|
||||
|
||||
export const responseBodyText = <const Status extends number, const Schema extends S.Schema<any, string>>(status: Status, schema: Schema) =>
|
||||
<const T extends Api.Any>({ method, props: { response, ...props } }: T): Api<{
|
||||
readonly route: T["props"]["route"],
|
||||
|
||||
Reference in New Issue
Block a user