mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 20:40:20 +00:00
split Spec into Config & Spec (#34922)
This commit is contained in:
committed by
Pranav Senthilnathan
parent
17d81d04a9
commit
f1871a347c
Vendored
+21
-18
@@ -29,30 +29,33 @@ declare namespace createRouter {
|
||||
interface NestedHandler extends ReadonlyArray<Handler> {}
|
||||
type Handler = FullHandler | NestedHandler;
|
||||
|
||||
type Method = (path: string|RegExp, handlerOrConfig: Handler | object, ...handlers: Handler[]) => Router;
|
||||
type Method = (path: string|RegExp, handlerOrConfig: Handler | Config, ...handlers: Handler[]) => Router;
|
||||
|
||||
type OutputValidation = { body: Joi.SchemaLike } | { headers: Joi.SchemaLike };
|
||||
|
||||
interface Spec {
|
||||
interface Config {
|
||||
pre?: Handler;
|
||||
validate?: {
|
||||
header?: Joi.SchemaLike;
|
||||
query?: Joi.SchemaLike;
|
||||
params?: Joi.SchemaLike;
|
||||
body?: Joi.SchemaLike;
|
||||
maxBody?: number;
|
||||
failure?: number;
|
||||
type?: 'form'|'json'|'multipart';
|
||||
formOptions?: CoBody.Options;
|
||||
jsonOptions?: CoBody.Options;
|
||||
multipartOptions?: CoBody.Options;
|
||||
output?: {[status: string]: OutputValidation};
|
||||
continueOnError?: boolean;
|
||||
};
|
||||
meta?: any;
|
||||
}
|
||||
|
||||
interface Spec extends Config {
|
||||
method: string|string[];
|
||||
path: string|RegExp;
|
||||
handler: Handler;
|
||||
pre?: Handler;
|
||||
validate?: {
|
||||
header?: Joi.SchemaLike;
|
||||
query?: Joi.SchemaLike;
|
||||
params?: Joi.SchemaLike;
|
||||
body?: Joi.SchemaLike;
|
||||
maxBody?: number;
|
||||
failure?: number;
|
||||
type?: 'form'|'json'|'multipart';
|
||||
formOptions?: CoBody.Options;
|
||||
jsonOptions?: CoBody.Options;
|
||||
multipartOptions?: CoBody.Options;
|
||||
output?: {[status: string]: OutputValidation};
|
||||
continueOnError?: boolean;
|
||||
};
|
||||
meta?: any;
|
||||
}
|
||||
|
||||
interface Router {
|
||||
|
||||
@@ -132,6 +132,34 @@ router().get('/', handler1);
|
||||
|
||||
router().get('/', {meta: {desc: 'desc'}}, handler1);
|
||||
|
||||
router().get('/user', {
|
||||
validate: {
|
||||
query: {
|
||||
id: Joi.number(),
|
||||
name: Joi.string(),
|
||||
}
|
||||
}
|
||||
}, (ctx: koa.Context) => {
|
||||
ctx.status = 201;
|
||||
ctx.body = ctx.request.params;
|
||||
});
|
||||
|
||||
const spec9: router.Config = {
|
||||
validate: {
|
||||
body: {
|
||||
name: Joi.string(),
|
||||
},
|
||||
type: 'json'
|
||||
}
|
||||
};
|
||||
|
||||
const spec9Handler = (ctx: koa.Context) => {
|
||||
ctx.status = 201;
|
||||
ctx.body = ctx.request.params;
|
||||
};
|
||||
|
||||
router().get('/user', spec9, spec9Handler);
|
||||
|
||||
const middleware1 = async (ctx: koa.Context, next: () => Promise<any>) => {
|
||||
console.log('middleware1');
|
||||
await next();
|
||||
|
||||
Reference in New Issue
Block a user