from-schema
Version:
Infer TypeScript types from JSON schemas
39 lines (37 loc) • 949 B
TypeScript
import { JsonSchema } from './json';
type Unauthed = {
authenticated: false;
throws?: string[];
};
type Authed = {
authenticated: true;
throws?: [400, 401, 500, ...string[]];
};
type HandlerBase = {
response?: JsonSchema;
} & (Unauthed | Authed);
type GetHandlerModel = HandlerBase & {
method: 'GET';
};
type PostHandlerModel = HandlerBase & {
method?: 'POST';
request?: JsonSchema;
};
type PutHandlerModel = HandlerBase & {
method: 'PUT';
request?: JsonSchema;
};
type DeleteHandlerModel = HandlerBase & {
method: 'DELETE';
request?: JsonSchema;
};
type PatchHandlerModel = HandlerBase & {
method: 'PATCH';
request?: JsonSchema;
};
type WebsocketHandlerModel = HandlerBase & {
stream: true;
request?: JsonSchema;
};
export type HandlerModel = Readonly<GetHandlerModel | PostHandlerModel | PutHandlerModel | DeleteHandlerModel | PatchHandlerModel | WebsocketHandlerModel>;
export {};