@@ -10,24 +10,21 @@ import type { RequestModification } from './request-modification';
1010 * @typeParam TMeans - A type of initial request processing means.
1111 */
1212export type RequestProcessor < TMeans > =
13- /**
14- * @param means - Initial request processing means.
15- *
16- * @returns A promise resolved when request processing finishes. Resolves to `true` when request is responded,
17- * or to `false` otherwise.
18- */
19- ( this : void , means : TMeans ) => Promise < boolean > ;
20-
13+ /**
14+ * @param means - Initial request processing means.
15+ *
16+ * @returns A promise resolved when request processing finishes. Resolves to `true` when request is responded,
17+ * or to `false` otherwise.
18+ */
19+ ( this : void , means : TMeans ) => Promise < boolean > ;
2120
2221export namespace RequestProcessor {
23-
2422 /**
2523 * Request processor configuration.
2624 *
2725 * @typeParam TMeans - A type of initial request processing means.
2826 */
2927 export interface Config < TMeans > {
30-
3128 /**
3229 * Initial request processing handler.
3330 *
@@ -47,13 +44,11 @@ export namespace RequestProcessor {
4744 * @returns A promise resolved when request processing finishes. Resolves to `true` when request is responded,
4845 * or to `false` otherwise.
4946 */
50- next < TExt > (
51- handler : RequestHandler < TMeans & TExt > ,
52- context : RequestContext < TMeans & TExt > ,
47+ next < TExt extends object > (
48+ handler : RequestHandler < TMeans & TExt > ,
49+ context : RequestContext < TMeans & TExt > ,
5350 ) : Promise < boolean > ;
54-
5551 }
56-
5752}
5853
5954/**
@@ -65,13 +60,11 @@ export namespace RequestProcessor {
6560 * @returns New request processor.
6661 */
6762export function requestProcessor < TMeans > (
68- config : RequestProcessor . Config < TMeans > ,
63+ config : RequestProcessor . Config < TMeans > ,
6964) : RequestProcessor < TMeans > {
70-
7165 const handler = config . handler . bind ( config ) ;
7266
7367 return means => {
74-
7568 const context = { ...means } as RequestContext < TMeans > ;
7669
7770 context . next = nextHandlerCaller ( config , context ) as RequestContext < TMeans > [ 'next' ] ;
@@ -83,18 +76,17 @@ export function requestProcessor<TMeans>(
8376/**
8477 * @internal
8578 */
86- function nextHandlerCaller < TBase , TMeans extends TBase , TExt > (
87- config : RequestProcessor . Config < TBase > ,
88- means : TMeans ,
79+ function nextHandlerCaller < TBase , TMeans extends TBase , TExt extends object > (
80+ config : RequestProcessor . Config < TBase > ,
81+ means : TMeans ,
8982) : (
90- handler : RequestHandler < TMeans & TExt > ,
91- modification ?: RequestModification < TMeans , TExt > ,
83+ handler : RequestHandler < TMeans & TExt > ,
84+ modification ?: RequestModification < TMeans , TExt > ,
9285) => Promise < boolean > {
9386 return async (
94- handler : RequestHandler < TMeans & TExt > ,
95- modification ?: RequestModification < TMeans , TExt > ,
87+ handler : RequestHandler < TMeans & TExt > ,
88+ modification ?: RequestModification < TMeans , TExt > ,
9689 ) : Promise < boolean > => {
97-
9890 let context : RequestContext < TMeans & TExt > ;
9991
10092 if ( modification ) {
0 commit comments