@novice1/routing 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/router.d.ts CHANGED
@@ -1,433 +1,433 @@
1
- import * as e from 'express';
2
- import * as core from 'express-serve-static-core';
3
- import { ParsedQs } from 'qs'
4
-
5
- declare namespace routing {
6
-
7
- //--- META
8
-
9
- export interface BaseMeta<ResType> {
10
- name?: string;
11
- description?: string;
12
- tags?: string | string[];
13
- auth?: boolean;
14
- parameters?: Record<string, any>;
15
- responses?: ResType;
16
- }
17
-
18
- export interface RouteMeta extends BaseMeta<any> {
19
- path: string | RegExp;
20
- methods: Record<string, any>;
21
- }
22
-
23
- export interface RequestMeta<ResType = any> extends BaseMeta<ResType> {
24
- method: string;
25
- }
26
-
27
- //--- REQUEST
28
-
29
- export interface Request<
30
- P = core.ParamsDictionary,
31
- ResBody = any,
32
- ReqBody = any,
33
- ReqQuery = ParsedQs,
34
- Locals extends Record<string, any> = Record<string, any>,
35
- MetaResType = any
36
- > extends core.Request<P, ResBody, ReqBody, ReqQuery, Locals> {
37
- meta: RequestMeta<MetaResType>;
38
- }
39
-
40
- export interface RequestHandler<
41
- P = core.ParamsDictionary,
42
- ResBody = any,
43
- ReqBody = any,
44
- ReqQuery = ParsedQs,
45
- Locals extends Record<string, any> = Record<string, any>,
46
- MetaResType = any
47
- > {
48
- // tslint:disable-next-line callable-types (This is extended from and can't extend from a type alias in ts<2.2)
49
- (
50
- req: Request<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
51
- res: core.Response<ResBody, Locals>,
52
- next: core.NextFunction,
53
- ): void;
54
- }
55
-
56
- export type ErrorRequestHandler<
57
- P = core.ParamsDictionary,
58
- ResBody = any,
59
- ReqBody = any,
60
- ReqQuery = ParsedQs,
61
- Locals extends Record<string, any> = Record<string, any>,
62
- MetaResType = any
63
- > = ((
64
- err: any,
65
- req: Request<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
66
- res: core.Response<ResBody, Locals>,
67
- next: core.NextFunction,
68
- ) => void);
69
-
70
- export type RequestHandlerParams<
71
- P = core.ParamsDictionary,
72
- ResBody = any,
73
- ReqBody = any,
74
- ReqQuery = ParsedQs,
75
- Locals extends Record<string, any> = Record<string, any>,
76
- MetaResType = any
77
- > =
78
- | RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
79
- | ErrorRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>
80
- | Array<RequestHandler<P> | ErrorRequestHandler<P>>;
81
-
82
- //--- ROUTE SETTINGS
83
-
84
- export interface RouteSettings
85
- <
86
- Path = string,
87
- P = core.ParamsDictionary,
88
- ResBody = any,
89
- ReqBody = any,
90
- ReqQuery = ParsedQs,
91
- Locals extends Record<string, any> = Record<string, any>,
92
- MetaResType = any
93
- > extends BaseMeta<MetaResType> {
94
- path: Path;
95
- preValidators?:
96
- RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
97
- | RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>[];
98
- }
99
-
100
- export interface RouteSettingsParams
101
- <
102
- Path = string,
103
- P = core.ParamsDictionary,
104
- ResBody = any,
105
- ReqBody = any,
106
- ReqQuery = ParsedQs,
107
- Locals extends Record<string, any> = Record<string, any>,
108
- MetaResType = any
109
- > extends BaseMeta<MetaResType> {
110
- path: Path;
111
- preValidators?:
112
- RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
113
- | RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>[];
114
- }
115
-
116
- //--- ROUTER MATCHER
117
-
118
- export interface IRouterMatcher<
119
- T,
120
- Method extends 'all' | 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head' = any
121
- > {
122
- <
123
- Route extends string,
124
- P = core.RouteParameters<Route>,
125
- ResBody = any,
126
- ReqBody = any,
127
- ReqQuery = ParsedQs,
128
- Locals extends Record<string, any> = Record<string, any>,
129
- MetaResType = any
130
- >(
131
- // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
132
- path: RouteSettings<Route, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
133
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
134
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
135
- ): T;
136
- <
137
- Path extends string,
138
- P = core.RouteParameters<Path>,
139
- ResBody = any,
140
- ReqBody = any,
141
- ReqQuery = ParsedQs,
142
- Locals extends Record<string, any> = Record<string, any>,
143
- MetaResType = any
144
- >(
145
- // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
146
- path: RouteSettingsParams<Path, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
147
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
148
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
149
- ): T;
150
- <
151
- P = core.ParamsDictionary,
152
- ResBody = any,
153
- ReqBody = any,
154
- ReqQuery = ParsedQs,
155
- Locals extends Record<string, any> = Record<string, any>,
156
- MetaResType = any
157
- >(
158
- path: RouteSettings<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
159
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
160
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
161
- ): T;
162
- <
163
- P = core.ParamsDictionary,
164
- ResBody = any,
165
- ReqBody = any,
166
- ReqQuery = ParsedQs,
167
- Locals extends Record<string, any> = Record<string, any>,
168
- MetaResType = any
169
- >(
170
- path: RouteSettingsParams<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
171
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
172
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
173
- ): T;
174
- <
175
- Route extends string,
176
- P = core.RouteParameters<Route>,
177
- ResBody = any,
178
- ReqBody = any,
179
- ReqQuery = ParsedQs,
180
- Locals extends Record<string, any> = Record<string, any>
181
- >(
182
- // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
183
- path: Route,
184
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
185
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>>
186
- ): T;
187
- <
188
- Path extends string,
189
- P = core.RouteParameters<Path>,
190
- ResBody = any,
191
- ReqBody = any,
192
- ReqQuery = ParsedQs,
193
- Locals extends Record<string, any> = Record<string, any>
194
- >(
195
- // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
196
- path: Path,
197
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
198
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals>>
199
- ): T;
200
- <
201
- P = core.ParamsDictionary,
202
- ResBody = any,
203
- ReqBody = any,
204
- ReqQuery = ParsedQs,
205
- Locals extends Record<string, any> = Record<string, any>
206
- >(
207
- path: core.PathParams,
208
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
209
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>>
210
- ): T;
211
- <
212
- P = core.ParamsDictionary,
213
- ResBody = any,
214
- ReqBody = any,
215
- ReqQuery = ParsedQs,
216
- Locals extends Record<string, any> = Record<string, any>
217
- >(
218
- path: core.PathParams,
219
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
220
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals>>
221
- ): T;
222
- (path: core.PathParams, subApplication: core.Application): T;
223
- }
224
-
225
- //--- ROUTER MIDDLEWARE EDITOR
226
-
227
- export interface IRouterMiddlewareEditor<
228
- T
229
- > {
230
- <
231
- P = core.ParamsDictionary,
232
- ResBody = any,
233
- ReqBody = any,
234
- ReqQuery = ParsedQs,
235
- Locals extends Record<string, any> = Record<string, any>,
236
- MetaResType = any
237
- >(
238
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
239
- ): T;
240
- <
241
- P = core.ParamsDictionary,
242
- ResBody = any,
243
- ReqBody = any,
244
- ReqQuery = ParsedQs,
245
- Locals extends Record<string, any> = Record<string, any>,
246
- MetaResType = any
247
- >(
248
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
249
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
250
- ): T;
251
- }
252
-
253
- //--- ROUTER HANDLER
254
-
255
- export interface IRouterHandler<T, Route extends string = string, MetaResType = any> {
256
- (...handlers: Array<RequestHandler<
257
- core.RouteParameters<Route>,
258
- any, any, ParsedQs, Record<string, any>, MetaResType
259
- >>): T;
260
- (...handlers: Array<RequestHandlerParams<
261
- core.RouteParameters<Route>,
262
- any, any, ParsedQs, Record<string, any>, MetaResType
263
- >>): T;
264
- <
265
- P = core.RouteParameters<Route>,
266
- ResBody = any,
267
- ReqBody = any,
268
- ReqQuery = ParsedQs,
269
- Locals extends Record<string, any> = Record<string, any>
270
- >(
271
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
272
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
273
- ): T;
274
- <
275
- P = core.RouteParameters<Route>,
276
- ResBody = any,
277
- ReqBody = any,
278
- ReqQuery = ParsedQs,
279
- Locals extends Record<string, any> = Record<string, any>
280
- >(
281
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
282
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
283
- ): T;
284
- <
285
- P = core.ParamsDictionary,
286
- ResBody = any,
287
- ReqBody = any,
288
- ReqQuery = ParsedQs,
289
- Locals extends Record<string, any> = Record<string, any>
290
- >(
291
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
292
- ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
293
- ): T;
294
- <
295
- P = core.ParamsDictionary,
296
- ResBody = any,
297
- ReqBody = any,
298
- ReqQuery = ParsedQs,
299
- Locals extends Record<string, any> = Record<string, any>
300
- >(
301
- // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
302
- ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
303
- ): T;
304
- }
305
-
306
- //--- ROUTE
307
-
308
- export interface IRoute<Route extends string = string, MetaResType = any> {
309
- path: string;
310
- stack: any;
311
- all: IRouterHandler<this, Route, MetaResType>;
312
- get: IRouterHandler<this, Route, MetaResType>;
313
- post: IRouterHandler<this, Route, MetaResType>;
314
- put: IRouterHandler<this, Route, MetaResType>;
315
- delete: IRouterHandler<this, Route, MetaResType>;
316
- patch: IRouterHandler<this, Route, MetaResType>;
317
- options: IRouterHandler<this, Route, MetaResType>;
318
- head: IRouterHandler<this, Route, MetaResType>;
319
-
320
- checkout: IRouterHandler<this, Route, MetaResType>;
321
- copy: IRouterHandler<this, Route, MetaResType>;
322
- lock: IRouterHandler<this, Route, MetaResType>;
323
- merge: IRouterHandler<this, Route, MetaResType>;
324
- mkactivity: IRouterHandler<this, Route, MetaResType>;
325
- mkcol: IRouterHandler<this, Route, MetaResType>;
326
- move: IRouterHandler<this, Route, MetaResType>;
327
- 'm-search': IRouterHandler<this, Route, MetaResType>;
328
- notify: IRouterHandler<this, Route, MetaResType>;
329
- purge: IRouterHandler<this, Route, MetaResType>;
330
- report: IRouterHandler<this, Route, MetaResType>;
331
- search: IRouterHandler<this, Route, MetaResType>;
332
- subscribe: IRouterHandler<this, Route, MetaResType>;
333
- trace: IRouterHandler<this, Route, MetaResType>;
334
- unlock: IRouterHandler<this, Route, MetaResType>;
335
- unsubscribe: IRouterHandler<this, Route, MetaResType>;
336
- }
337
-
338
- //--- ROUTE METHOD
339
-
340
- export interface IRouteMethod {
341
- <T extends string>(prefix: T): IRoute<T>;
342
- (prefix: core.PathParams): IRoute;
343
- <
344
- Route extends string,
345
- P = core.RouteParameters<Route>,
346
- ResBody = any,
347
- ReqBody = any,
348
- ReqQuery = ParsedQs,
349
- Locals extends Record<string, any> = Record<string, any>,
350
- MetaResType = any
351
- >(
352
- prefix: RouteSettings<Route, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
353
- ): IRoute<Route, MetaResType>;
354
- <
355
- Path extends string,
356
- P = core.RouteParameters<Path>,
357
- ResBody = any,
358
- ReqBody = any,
359
- ReqQuery = ParsedQs,
360
- Locals extends Record<string, any> = Record<string, any>,
361
- MetaResType = any
362
- >(
363
- prefix: RouteSettingsParams<Path, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
364
- ): IRoute<Path, MetaResType>;
365
- <
366
- P = core.ParamsDictionary,
367
- ResBody = any,
368
- ReqBody = any,
369
- ReqQuery = ParsedQs,
370
- Locals extends Record<string, any> = Record<string, any>,
371
- MetaResType = any
372
- >(
373
- prefix: RouteSettings<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
374
- ): IRoute<string, MetaResType>;
375
- <
376
- P = core.ParamsDictionary,
377
- ResBody = any,
378
- ReqBody = any,
379
- ReqQuery = ParsedQs,
380
- Locals extends Record<string, any> = Record<string, any>,
381
- MetaResType = any
382
- >(
383
- prefix: RouteSettingsParams<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
384
- ): IRoute<string, MetaResType>;
385
- }
386
-
387
- //--- ROUTER
388
-
389
- export interface IRouter extends e.IRouter {
390
- all: IRouterMatcher<this, 'all'>;
391
- get: IRouterMatcher<this, 'get'>;
392
- post: IRouterMatcher<this, 'post'>;
393
- put: IRouterMatcher<this, 'put'>;
394
- delete: IRouterMatcher<this, 'delete'>;
395
- patch: IRouterMatcher<this, 'patch'>;
396
- options: IRouterMatcher<this, 'options'>;
397
- head: IRouterMatcher<this, 'head'>;
398
- checkout: IRouterMatcher<this>;
399
- connect: IRouterMatcher<this>;
400
- copy: IRouterMatcher<this>;
401
- lock: IRouterMatcher<this>;
402
- merge: IRouterMatcher<this>;
403
- mkactivity: IRouterMatcher<this>;
404
- mkcol: IRouterMatcher<this>;
405
- move: IRouterMatcher<this>;
406
- 'm-search': IRouterMatcher<this>;
407
- notify: IRouterMatcher<this>;
408
- propfind: IRouterMatcher<this>;
409
- proppatch: IRouterMatcher<this>;
410
- purge: IRouterMatcher<this>;
411
- report: IRouterMatcher<this>;
412
- search: IRouterMatcher<this>;
413
- subscribe: IRouterMatcher<this>;
414
- trace: IRouterMatcher<this>;
415
- unlock: IRouterMatcher<this>;
416
- unsubscribe: IRouterMatcher<this>;
417
-
418
- route: IRouteMethod;
419
-
420
- //--- ROUTER DEV METHODS
421
-
422
- getMeta(): RouteMeta[];
423
-
424
- setAuthHandlers: IRouterMiddlewareEditor<this>;
425
- setAuthHandlersIfNone: IRouterMiddlewareEditor<this>;
426
- setValidators: IRouterMiddlewareEditor<this>;
427
- setValidatorsIfNone: IRouterMiddlewareEditor<this>;
428
- }
429
- }
430
-
431
- declare function routing(options?: e.RouterOptions): routing.IRouter;
432
-
1
+ import * as e from 'express';
2
+ import * as core from 'express-serve-static-core';
3
+ import { ParsedQs } from 'qs'
4
+
5
+ declare namespace routing {
6
+
7
+ //--- META
8
+
9
+ export interface BaseMeta<ResType> {
10
+ name?: string;
11
+ description?: string;
12
+ tags?: string | string[];
13
+ auth?: boolean;
14
+ parameters?: Record<string, any>;
15
+ responses?: ResType;
16
+ }
17
+
18
+ export interface RouteMeta extends BaseMeta<any> {
19
+ path: string | RegExp;
20
+ methods: Record<string, any>;
21
+ }
22
+
23
+ export interface RequestMeta<ResType = any> extends BaseMeta<ResType> {
24
+ method: string;
25
+ }
26
+
27
+ //--- REQUEST
28
+
29
+ export interface Request<
30
+ P = core.ParamsDictionary,
31
+ ResBody = any,
32
+ ReqBody = any,
33
+ ReqQuery = ParsedQs,
34
+ Locals extends Record<string, any> = Record<string, any>,
35
+ MetaResType = any
36
+ > extends core.Request<P, ResBody, ReqBody, ReqQuery, Locals> {
37
+ meta: RequestMeta<MetaResType>;
38
+ }
39
+
40
+ export interface RequestHandler<
41
+ P = core.ParamsDictionary,
42
+ ResBody = any,
43
+ ReqBody = any,
44
+ ReqQuery = ParsedQs,
45
+ Locals extends Record<string, any> = Record<string, any>,
46
+ MetaResType = any
47
+ > {
48
+ // tslint:disable-next-line callable-types (This is extended from and can't extend from a type alias in ts<2.2)
49
+ (
50
+ req: Request<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
51
+ res: core.Response<ResBody, Locals>,
52
+ next: core.NextFunction,
53
+ ): void;
54
+ }
55
+
56
+ export type ErrorRequestHandler<
57
+ P = core.ParamsDictionary,
58
+ ResBody = any,
59
+ ReqBody = any,
60
+ ReqQuery = ParsedQs,
61
+ Locals extends Record<string, any> = Record<string, any>,
62
+ MetaResType = any
63
+ > = ((
64
+ err: any,
65
+ req: Request<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
66
+ res: core.Response<ResBody, Locals>,
67
+ next: core.NextFunction,
68
+ ) => void);
69
+
70
+ export type RequestHandlerParams<
71
+ P = core.ParamsDictionary,
72
+ ResBody = any,
73
+ ReqBody = any,
74
+ ReqQuery = ParsedQs,
75
+ Locals extends Record<string, any> = Record<string, any>,
76
+ MetaResType = any
77
+ > =
78
+ | RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
79
+ | ErrorRequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>
80
+ | Array<RequestHandler<P> | ErrorRequestHandler<P>>;
81
+
82
+ //--- ROUTE SETTINGS
83
+
84
+ export interface RouteSettings
85
+ <
86
+ Path = string,
87
+ P = core.ParamsDictionary,
88
+ ResBody = any,
89
+ ReqBody = any,
90
+ ReqQuery = ParsedQs,
91
+ Locals extends Record<string, any> = Record<string, any>,
92
+ MetaResType = any
93
+ > extends BaseMeta<MetaResType> {
94
+ path: Path;
95
+ preValidators?:
96
+ RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
97
+ | RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>[];
98
+ }
99
+
100
+ export interface RouteSettingsParams
101
+ <
102
+ Path = string,
103
+ P = core.ParamsDictionary,
104
+ ResBody = any,
105
+ ReqBody = any,
106
+ ReqQuery = ParsedQs,
107
+ Locals extends Record<string, any> = Record<string, any>,
108
+ MetaResType = any
109
+ > extends BaseMeta<MetaResType> {
110
+ path: Path;
111
+ preValidators?:
112
+ RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
113
+ | RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>[];
114
+ }
115
+
116
+ //--- ROUTER MATCHER
117
+
118
+ export interface IRouterMatcher<
119
+ T,
120
+ Method extends 'all' | 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head' = any
121
+ > {
122
+ <
123
+ Route extends string,
124
+ P = core.RouteParameters<Route>,
125
+ ResBody = any,
126
+ ReqBody = any,
127
+ ReqQuery = ParsedQs,
128
+ Locals extends Record<string, any> = Record<string, any>,
129
+ MetaResType = any
130
+ >(
131
+ // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
132
+ path: RouteSettings<Route, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
133
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
134
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
135
+ ): T;
136
+ <
137
+ Path extends string,
138
+ P = core.RouteParameters<Path>,
139
+ ResBody = any,
140
+ ReqBody = any,
141
+ ReqQuery = ParsedQs,
142
+ Locals extends Record<string, any> = Record<string, any>,
143
+ MetaResType = any
144
+ >(
145
+ // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
146
+ path: RouteSettingsParams<Path, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
147
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
148
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
149
+ ): T;
150
+ <
151
+ P = core.ParamsDictionary,
152
+ ResBody = any,
153
+ ReqBody = any,
154
+ ReqQuery = ParsedQs,
155
+ Locals extends Record<string, any> = Record<string, any>,
156
+ MetaResType = any
157
+ >(
158
+ path: RouteSettings<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
159
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
160
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
161
+ ): T;
162
+ <
163
+ P = core.ParamsDictionary,
164
+ ResBody = any,
165
+ ReqBody = any,
166
+ ReqQuery = ParsedQs,
167
+ Locals extends Record<string, any> = Record<string, any>,
168
+ MetaResType = any
169
+ >(
170
+ path: RouteSettingsParams<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>,
171
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
172
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
173
+ ): T;
174
+ <
175
+ Route extends string,
176
+ P = core.RouteParameters<Route>,
177
+ ResBody = any,
178
+ ReqBody = any,
179
+ ReqQuery = ParsedQs,
180
+ Locals extends Record<string, any> = Record<string, any>
181
+ >(
182
+ // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
183
+ path: Route,
184
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
185
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>>
186
+ ): T;
187
+ <
188
+ Path extends string,
189
+ P = core.RouteParameters<Path>,
190
+ ResBody = any,
191
+ ReqBody = any,
192
+ ReqQuery = ParsedQs,
193
+ Locals extends Record<string, any> = Record<string, any>
194
+ >(
195
+ // tslint:disable-next-line no-unnecessary-generics (it's used as the default type parameter for P)
196
+ path: Path,
197
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
198
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals>>
199
+ ): T;
200
+ <
201
+ P = core.ParamsDictionary,
202
+ ResBody = any,
203
+ ReqBody = any,
204
+ ReqQuery = ParsedQs,
205
+ Locals extends Record<string, any> = Record<string, any>
206
+ >(
207
+ path: core.PathParams,
208
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
209
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals>>
210
+ ): T;
211
+ <
212
+ P = core.ParamsDictionary,
213
+ ResBody = any,
214
+ ReqBody = any,
215
+ ReqQuery = ParsedQs,
216
+ Locals extends Record<string, any> = Record<string, any>
217
+ >(
218
+ path: core.PathParams,
219
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
220
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals>>
221
+ ): T;
222
+ (path: core.PathParams, subApplication: core.Application): T;
223
+ }
224
+
225
+ //--- ROUTER MIDDLEWARE EDITOR
226
+
227
+ export interface IRouterMiddlewareEditor<
228
+ T
229
+ > {
230
+ <
231
+ P = core.ParamsDictionary,
232
+ ResBody = any,
233
+ ReqBody = any,
234
+ ReqQuery = ParsedQs,
235
+ Locals extends Record<string, any> = Record<string, any>,
236
+ MetaResType = any
237
+ >(
238
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
239
+ ): T;
240
+ <
241
+ P = core.ParamsDictionary,
242
+ ResBody = any,
243
+ ReqBody = any,
244
+ ReqQuery = ParsedQs,
245
+ Locals extends Record<string, any> = Record<string, any>,
246
+ MetaResType = any
247
+ >(
248
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
249
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
250
+ ): T;
251
+ }
252
+
253
+ //--- ROUTER HANDLER
254
+
255
+ export interface IRouterHandler<T, Route extends string = string, MetaResType = any> {
256
+ (...handlers: Array<RequestHandler<
257
+ core.RouteParameters<Route>,
258
+ any, any, ParsedQs, Record<string, any>, MetaResType
259
+ >>): T;
260
+ (...handlers: Array<RequestHandlerParams<
261
+ core.RouteParameters<Route>,
262
+ any, any, ParsedQs, Record<string, any>, MetaResType
263
+ >>): T;
264
+ <
265
+ P = core.RouteParameters<Route>,
266
+ ResBody = any,
267
+ ReqBody = any,
268
+ ReqQuery = ParsedQs,
269
+ Locals extends Record<string, any> = Record<string, any>
270
+ >(
271
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
272
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
273
+ ): T;
274
+ <
275
+ P = core.RouteParameters<Route>,
276
+ ResBody = any,
277
+ ReqBody = any,
278
+ ReqQuery = ParsedQs,
279
+ Locals extends Record<string, any> = Record<string, any>
280
+ >(
281
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
282
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
283
+ ): T;
284
+ <
285
+ P = core.ParamsDictionary,
286
+ ResBody = any,
287
+ ReqBody = any,
288
+ ReqQuery = ParsedQs,
289
+ Locals extends Record<string, any> = Record<string, any>
290
+ >(
291
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
292
+ ...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
293
+ ): T;
294
+ <
295
+ P = core.ParamsDictionary,
296
+ ResBody = any,
297
+ ReqBody = any,
298
+ ReqQuery = ParsedQs,
299
+ Locals extends Record<string, any> = Record<string, any>
300
+ >(
301
+ // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
302
+ ...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>>
303
+ ): T;
304
+ }
305
+
306
+ //--- ROUTE
307
+
308
+ export interface IRoute<Route extends string = string, MetaResType = any> {
309
+ path: string;
310
+ stack: any;
311
+ all: IRouterHandler<this, Route, MetaResType>;
312
+ get: IRouterHandler<this, Route, MetaResType>;
313
+ post: IRouterHandler<this, Route, MetaResType>;
314
+ put: IRouterHandler<this, Route, MetaResType>;
315
+ delete: IRouterHandler<this, Route, MetaResType>;
316
+ patch: IRouterHandler<this, Route, MetaResType>;
317
+ options: IRouterHandler<this, Route, MetaResType>;
318
+ head: IRouterHandler<this, Route, MetaResType>;
319
+
320
+ checkout: IRouterHandler<this, Route, MetaResType>;
321
+ copy: IRouterHandler<this, Route, MetaResType>;
322
+ lock: IRouterHandler<this, Route, MetaResType>;
323
+ merge: IRouterHandler<this, Route, MetaResType>;
324
+ mkactivity: IRouterHandler<this, Route, MetaResType>;
325
+ mkcol: IRouterHandler<this, Route, MetaResType>;
326
+ move: IRouterHandler<this, Route, MetaResType>;
327
+ 'm-search': IRouterHandler<this, Route, MetaResType>;
328
+ notify: IRouterHandler<this, Route, MetaResType>;
329
+ purge: IRouterHandler<this, Route, MetaResType>;
330
+ report: IRouterHandler<this, Route, MetaResType>;
331
+ search: IRouterHandler<this, Route, MetaResType>;
332
+ subscribe: IRouterHandler<this, Route, MetaResType>;
333
+ trace: IRouterHandler<this, Route, MetaResType>;
334
+ unlock: IRouterHandler<this, Route, MetaResType>;
335
+ unsubscribe: IRouterHandler<this, Route, MetaResType>;
336
+ }
337
+
338
+ //--- ROUTE METHOD
339
+
340
+ export interface IRouteMethod {
341
+ <T extends string>(prefix: T): IRoute<T>;
342
+ (prefix: core.PathParams): IRoute;
343
+ <
344
+ Route extends string,
345
+ P = core.RouteParameters<Route>,
346
+ ResBody = any,
347
+ ReqBody = any,
348
+ ReqQuery = ParsedQs,
349
+ Locals extends Record<string, any> = Record<string, any>,
350
+ MetaResType = any
351
+ >(
352
+ prefix: RouteSettings<Route, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
353
+ ): IRoute<Route, MetaResType>;
354
+ <
355
+ Path extends string,
356
+ P = core.RouteParameters<Path>,
357
+ ResBody = any,
358
+ ReqBody = any,
359
+ ReqQuery = ParsedQs,
360
+ Locals extends Record<string, any> = Record<string, any>,
361
+ MetaResType = any
362
+ >(
363
+ prefix: RouteSettingsParams<Path, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
364
+ ): IRoute<Path, MetaResType>;
365
+ <
366
+ P = core.ParamsDictionary,
367
+ ResBody = any,
368
+ ReqBody = any,
369
+ ReqQuery = ParsedQs,
370
+ Locals extends Record<string, any> = Record<string, any>,
371
+ MetaResType = any
372
+ >(
373
+ prefix: RouteSettings<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
374
+ ): IRoute<string, MetaResType>;
375
+ <
376
+ P = core.ParamsDictionary,
377
+ ResBody = any,
378
+ ReqBody = any,
379
+ ReqQuery = ParsedQs,
380
+ Locals extends Record<string, any> = Record<string, any>,
381
+ MetaResType = any
382
+ >(
383
+ prefix: RouteSettingsParams<core.PathParams, P, ResBody, ReqBody, ReqQuery, Locals, MetaResType>
384
+ ): IRoute<string, MetaResType>;
385
+ }
386
+
387
+ //--- ROUTER
388
+
389
+ export interface IRouter extends e.IRouter {
390
+ all: IRouterMatcher<this, 'all'>;
391
+ get: IRouterMatcher<this, 'get'>;
392
+ post: IRouterMatcher<this, 'post'>;
393
+ put: IRouterMatcher<this, 'put'>;
394
+ delete: IRouterMatcher<this, 'delete'>;
395
+ patch: IRouterMatcher<this, 'patch'>;
396
+ options: IRouterMatcher<this, 'options'>;
397
+ head: IRouterMatcher<this, 'head'>;
398
+ checkout: IRouterMatcher<this>;
399
+ connect: IRouterMatcher<this>;
400
+ copy: IRouterMatcher<this>;
401
+ lock: IRouterMatcher<this>;
402
+ merge: IRouterMatcher<this>;
403
+ mkactivity: IRouterMatcher<this>;
404
+ mkcol: IRouterMatcher<this>;
405
+ move: IRouterMatcher<this>;
406
+ 'm-search': IRouterMatcher<this>;
407
+ notify: IRouterMatcher<this>;
408
+ propfind: IRouterMatcher<this>;
409
+ proppatch: IRouterMatcher<this>;
410
+ purge: IRouterMatcher<this>;
411
+ report: IRouterMatcher<this>;
412
+ search: IRouterMatcher<this>;
413
+ subscribe: IRouterMatcher<this>;
414
+ trace: IRouterMatcher<this>;
415
+ unlock: IRouterMatcher<this>;
416
+ unsubscribe: IRouterMatcher<this>;
417
+
418
+ route: IRouteMethod;
419
+
420
+ //--- ROUTER DEV METHODS
421
+
422
+ getMeta(): RouteMeta[];
423
+
424
+ setAuthHandlers: IRouterMiddlewareEditor<this>;
425
+ setAuthHandlersIfNone: IRouterMiddlewareEditor<this>;
426
+ setValidators: IRouterMiddlewareEditor<this>;
427
+ setValidatorsIfNone: IRouterMiddlewareEditor<this>;
428
+ }
429
+ }
430
+
431
+ declare function routing(options?: e.RouterOptions): routing.IRouter;
432
+
433
433
  export = routing;