2
2
// -- bootstrap
3
3
4
4
import { createServer , IncomingMessage , Server , ServerResponse } from 'http' ;
5
- import { contentHandlerType , ctxType , wsHandlerType , serverSettingsType , ctxWsType } from './server.type' ;
5
+ import { contentHandlerType , ctxType , wsHandlerType , serverSettingsType , ctxWsType , ctxReqType } from './server.type' ;
6
6
import { ctxCtor } from './ctx' ;
7
7
import { gauthContinueCtor , gauthInitCtor , gauthOnUserData } from './gauth' ;
8
8
import { sessionInfoCtor , sessionInitCtor , sessionSetCtor } from './session' ;
@@ -22,7 +22,7 @@ export function server(
22
22
wsOnConnectHandler ?: ( ctxWs : ctxWsType ) => Promise < serializableType > ,
23
23
wsOnCloseHandler ?: ( ctxWs : ctxWsType ) => Promise < serializableType > ,
24
24
onUserData ?: gauthOnUserData ,
25
- ) : { server : Server , ws : wsType } {
25
+ ) : { server : Server , ws ? : wsType } {
26
26
if ( ! wsHandlerRegistry ) {
27
27
wsHandlerRegistry = readonlyRegistryCtor < wsHandlerType > ( [ ] ) ;
28
28
}
@@ -50,14 +50,21 @@ export function server(
50
50
res . end ( `500 Server Error:\n${ e } ` ) ;
51
51
}
52
52
53
- const sessionInit = sessionInitCtor ( settings ) ;
54
- const sessionSet = sessionSetCtor ( settings ) ;
55
- const sessionInfo = sessionInfoCtor ( settings ) ;
53
+ let sessionInit : contentHandlerType | undefined = undefined ;
54
+ let sessionSet : contentHandlerType | undefined = undefined ;
55
+ let sessionInfo : contentHandlerType | undefined = undefined ;
56
+
57
+ if ( settings . mode ) {
58
+ sessionInit = sessionInitCtor ( settings ) ;
59
+ sessionSet = sessionSetCtor ( settings ) ;
60
+ sessionInfo = sessionInfoCtor ( settings ) ;
61
+ }
56
62
57
63
let gauthInit : ( ctx : ctxType ) => Promise < void > ;
58
64
let gauthContinue : ( ctx : ctxType ) => Promise < void > ;
59
65
60
- if ( settings . google && onUserData ) {
66
+ // you must set mode to use gauth
67
+ if ( settings . google && onUserData && settings . mode ) {
61
68
gauthInit = gauthInitCtor ( {
62
69
google : settings . google ,
63
70
} ,
@@ -72,9 +79,16 @@ export function server(
72
79
onUserData ,
73
80
axios . post ,
74
81
) ;
75
- ha = [ sessionInit , sessionSet , gauthInit , gauthContinue , sessionInfo , ...handlerArray ] ;
82
+ // istanbul ignore next: these must be defined by the logic above, but the compiler is not that smart.
83
+ if ( sessionInit && sessionSet && sessionInfo ) {
84
+ ha = [ sessionInit , sessionSet , gauthInit , gauthContinue , sessionInfo , ...handlerArray ] ;
85
+ }
76
86
} else {
77
- ha = [ sessionInit , sessionSet , sessionInfo , ...handlerArray ] ;
87
+ if ( sessionInit && sessionSet && sessionInfo ) {
88
+ ha = [ sessionInit , sessionSet , sessionInfo , ...handlerArray ] ;
89
+ } else {
90
+ ha = handlerArray ;
91
+ }
78
92
}
79
93
80
94
const dbProvider = dbProviderCtor ( settings . dbConnectionString ) ;
@@ -113,7 +127,12 @@ export function server(
113
127
114
128
server . listen ( + settings . port , settings . host ) ;
115
129
116
- const ws = wsInit ( wsHandlerRegistry , server , settings , sessionInit , dbProvider , wsOnConnectHandler , wsOnCloseHandler ) ;
117
-
130
+ let ws : wsType | undefined ;
131
+ if ( settings . mode ) {
132
+ // istanbul ignore next: these must be defined by the logic above, but the compiler is not that smart.
133
+ if ( sessionInit ) {
134
+ ws = wsInit ( wsHandlerRegistry , server , settings , sessionInit , dbProvider , wsOnConnectHandler , wsOnCloseHandler ) ;
135
+ }
136
+ }
118
137
return { server, ws} ;
119
138
}
0 commit comments