@@ -113,18 +113,31 @@ export function mergeConfiguration(conf: Configuration, options?: Configuration)
113113{ {/useInversify} }
114114{ {^useInversify} }
115115export function mergeConfiguration(conf: Configuration, options?: ConfigurationOptions): Configuration {
116- let allMiddleware: Middleware[] = conf.middleware;
117- if (options && options.middleware) {
118- const middlewareMergeStrategy = options.middlewareMergeStrategy || " replace" // default to replace behavior
116+ let allMiddleware: Middleware[] = mergeMiddleware(conf.middleware, options?.middleware, options?.middlewareMergeStrategy);
117+ if (options) {
118+ conf = {
119+ baseServer: options.baseServer || conf.baseServer,
120+ httpApi: options.httpApi || conf.httpApi,
121+ authMethods: options.authMethods || conf.authMethods,
122+ middleware: allMiddleware,
123+ } ;
124+ }
125+ return conf;
126+ }
127+
128+ function mergeMiddleware(staticMiddleware: Middleware[], calltimeMiddleware?: Middleware[], strategy?: "append" | "prepend" | "replace") {
129+ let allMiddleware: Middleware[] = staticMiddleware;
130+ if (calltimeMiddleware) {
131+ const middlewareMergeStrategy = strategy || " replace" // default to replace behavior
119132 // call-time middleware provided
120- const calltimeMiddleware: Middleware[] = options.middleware ;
133+ const calltimeMiddleware: Middleware[] = calltimeMiddleware ;
121134
122135 switch (middlewareMergeStrategy) {
123136 case " append" :
124- allMiddleware = conf.middleware .concat(calltimeMiddleware);
137+ allMiddleware = staticMiddleware .concat(calltimeMiddleware);
125138 break ;
126139 case " prepend" :
127- allMiddleware = calltimeMiddleware.concat(conf.middleware )
140+ allMiddleware = calltimeMiddleware.concat(staticMiddleware )
128141 break ;
129142 case " replace" :
130143 allMiddleware = calltimeMiddleware
@@ -133,15 +146,7 @@ export function mergeConfiguration(conf: Configuration, options?: ConfigurationO
133146 throw new Error(`unrecognized middleware merge strategy ' ${middlewareMergeStrategy}' `);
134147 }
135148 }
136- if (options) {
137- conf = {
138- baseServer: options.baseServer || conf.baseServer,
139- httpApi: options.httpApi || conf.httpApi,
140- authMethods: options.authMethods || conf.authMethods,
141- middleware: allMiddleware,
142- } ;
143- }
144- return conf;
149+ return allMiddleware;
145150}
146151{ {/useInversify} }
147152
0 commit comments