@@ -53,6 +53,48 @@ import {
53
53
import { ServerOptions } from './options' ;
54
54
import { ServerState , ServerStateCookieOptions } from './state' ;
55
55
56
+ type ReservedRequestKeys = (
57
+ 'server' | 'url' | 'query' | 'path' | 'method' |
58
+ 'mime' | 'setUrl' | 'setMethod' | 'headers' | 'id' |
59
+ 'app' | 'plugins' | 'route' | 'auth' | 'pre' |
60
+ 'preResponses' | 'info' | 'isInjected' | 'orig' |
61
+ 'params' | 'paramsArray' | 'payload' | 'state' |
62
+ 'response' | 'raw' | 'domain' | 'log' | 'logs' |
63
+ 'generateResponse' |
64
+
65
+ // Private functions
66
+ '_allowInternals' | '_closed' | '_core' |
67
+ '_entity' | '_eventContext' | '_events' | '_expectContinue' |
68
+ '_isInjected' | '_isPayloadPending' | '_isReplied' |
69
+ '_route' | '_serverTimeoutId' | '_states' | '_url' |
70
+ '_urlError' | '_initializeUrl' | '_setUrl' | '_parseUrl' |
71
+ '_parseQuery'
72
+
73
+ ) ;
74
+
75
+ type ReservedToolkitKeys = (
76
+ 'abandon' | 'authenticated' | 'close' | 'context' | 'continue' |
77
+ 'entity' | 'redirect' | 'realm' | 'request' | 'response' |
78
+ 'state' | 'unauthenticated' | 'unstate'
79
+ ) ;
80
+
81
+ type ReservedServerKeys = (
82
+ // Public functions
83
+ 'app' | 'auth' | 'cache' | 'decorations' | 'events' | 'info' |
84
+ 'listener' | 'load' | 'methods' | 'mime' | 'plugins' | 'registrations' |
85
+ 'settings' | 'states' | 'type' | 'version' | 'realm' | 'control' | 'decoder' |
86
+ 'bind' | 'control' | 'decoder' | 'decorate' | 'dependency' | 'encoder' |
87
+ 'event' | 'expose' | 'ext' | 'inject' | 'log' | 'lookup' | 'match' | 'method' |
88
+ 'path' | 'register' | 'route' | 'rules' | 'state' | 'table' | 'validator' |
89
+ 'start' | 'initialize' | 'stop' |
90
+
91
+ // Private functions
92
+ '_core' | '_initialize' | '_start' | '_stop' | '_cachePolicy' | '_createCache' |
93
+ '_clone' | '_ext' | '_addRoute'
94
+ ) ;
95
+
96
+ type ExceptName < Property , ReservedKeys > = Property extends ReservedKeys ? never : Property ;
97
+
56
98
/**
57
99
* User-extensible type for application specific state (`server.app`).
58
100
*/
@@ -309,21 +351,24 @@ export class Server<A = ServerApplicationState> {
309
351
* @return void;
310
352
* [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-serverdecoratetype-property-method-options)
311
353
*/
312
- decorate ( type : 'handler' , property : DecorateName , method : HandlerDecorationMethod , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
313
- decorate ( type : 'request' , property : DecorateName , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => ( request : Request ) => DecorationMethod < Request > , options : { apply : true , extend : true } ) : void ;
314
- decorate ( type : 'request' , property : DecorateName , method : ( request : Request ) => DecorationMethod < Request > , options : { apply : true , extend ?: boolean | undefined } ) : void ;
315
- decorate ( type : 'request' , property : DecorateName , method : DecorationMethod < Request > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
316
- decorate ( type : 'request' , property : DecorateName , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => ( request : Request ) => any , options : { apply : true , extend : true } ) : void ;
317
- decorate ( type : 'request' , property : DecorateName , value : ( request : Request ) => any , options : { apply : true , extend ?: boolean | undefined } ) : void ;
318
- decorate ( type : 'request' , property : DecorateName , value : any , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
319
- decorate ( type : 'toolkit' , property : DecorateName , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => DecorationMethod < ResponseToolkit > , options : { apply ?: boolean | undefined , extend : true } ) : void ;
320
- decorate ( type : 'toolkit' , property : DecorateName , method : DecorationMethod < ResponseToolkit > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
321
- decorate ( type : 'toolkit' , property : DecorateName , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => any , options : { apply ?: boolean | undefined , extend : true } ) : void ;
322
- decorate ( type : 'toolkit' , property : DecorateName , value : any , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
323
- decorate ( type : 'server' , property : DecorateName , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => DecorationMethod < Server > , options : { apply ?: boolean | undefined , extend : true } ) : void ;
324
- decorate ( type : 'server' , property : DecorateName , method : DecorationMethod < Server > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
325
- decorate ( type : 'server' , property : DecorateName , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => any , options : { apply ?: boolean | undefined , extend : true } ) : void ;
326
- decorate ( type : 'server' , property : DecorateName , value : any , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
354
+ decorate < P extends DecorateName > ( type : 'handler' , property : P , method : HandlerDecorationMethod , options ?: { apply ?: boolean | undefined , extend ?: never } ) : void ;
355
+
356
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => ( request : Request ) => DecorationMethod < Request > , options : { apply : true , extend : true } ) : void ;
357
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , method : ( request : Request ) => DecorationMethod < Request > , options : { apply : true , extend ?: boolean | undefined } ) : void ;
358
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , method : DecorationMethod < Request > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
359
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => ( request : Request ) => any , options : { apply : true , extend : true } ) : void ;
360
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , value : ( request : Request ) => any , options : { apply : true , extend ?: boolean | undefined } ) : void ;
361
+ decorate < P extends DecorateName > ( type : 'request' , property : ExceptName < P , ReservedRequestKeys > , value : object , options ?: never ) : void ;
362
+
363
+ decorate < P extends DecorateName > ( type : 'toolkit' , property : ExceptName < P , ReservedToolkitKeys > , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => DecorationMethod < ResponseToolkit > , options : { apply ?: boolean | undefined , extend : true } ) : void ;
364
+ decorate < P extends DecorateName > ( type : 'toolkit' , property : ExceptName < P , ReservedToolkitKeys > , method : DecorationMethod < ResponseToolkit > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
365
+ decorate < P extends DecorateName > ( type : 'toolkit' , property : ExceptName < P , ReservedToolkitKeys > , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => any , options : { apply ?: boolean | undefined , extend : true } ) : void ;
366
+ decorate < P extends DecorateName > ( type : 'toolkit' , property : ExceptName < P , ReservedToolkitKeys > , value : object , options ?: never ) : void ;
367
+
368
+ decorate < P extends DecorateName > ( type : 'server' , property : ExceptName < P , ReservedServerKeys > , value : object , options ?: never ) : void ;
369
+ decorate < P extends DecorateName > ( type : 'server' , property : ExceptName < P , ReservedServerKeys > , method : ( existing : ( ( ...args : any [ ] ) => any ) ) => DecorationMethod < Server > , options : { apply ?: boolean | undefined , extend : true } ) : void ;
370
+ decorate < P extends DecorateName > ( type : 'server' , property : ExceptName < P , ReservedServerKeys > , method : DecorationMethod < Server > , options ?: { apply ?: boolean | undefined , extend ?: boolean | undefined } ) : void ;
371
+ decorate < P extends DecorateName > ( type : 'server' , property : ExceptName < P , ReservedServerKeys > , value : ( existing : ( ( ...args : any [ ] ) => any ) ) => any , options : { apply ?: boolean | undefined , extend : true } ) : void ;
327
372
328
373
/**
329
374
* Used within a plugin to declare a required dependency on other plugins where:
0 commit comments