73 lines
2.4 KiB
Plaintext
73 lines
2.4 KiB
Plaintext
import { HttpLibrary } from "./http/http{{extensionForDeno}}";
|
|
import { Middleware, PromiseMiddleware, PromiseMiddlewareWrapper } from "./middleware{{extensionForDeno}}";
|
|
{{#frameworks}}
|
|
{{#fetch-api}}
|
|
import { IsomorphicFetchHttpLibrary as DefaultHttpLibrary } from "./http/isomorphic-fetch{{extensionForDeno}}";
|
|
{{/fetch-api}}
|
|
{{#jquery}}
|
|
import { JQueryHttpLibrary as DefaultHttpLibrary } from "./http/jquery";
|
|
{{/jquery}}
|
|
{{/frameworks}}
|
|
import { BaseServerConfiguration, server1 } from "./servers{{extensionForDeno}}";
|
|
import { configureAuthMethods, AuthMethods, AuthMethodsConfiguration } from "./auth/auth{{extensionForDeno}}";
|
|
|
|
export interface Configuration {
|
|
readonly baseServer: BaseServerConfiguration;
|
|
readonly httpApi: HttpLibrary;
|
|
readonly middleware: Middleware[];
|
|
readonly authMethods: AuthMethods;
|
|
}
|
|
|
|
|
|
/**
|
|
* Interface with which a configuration object can be configured.
|
|
*/
|
|
export interface ConfigurationParameters {
|
|
/**
|
|
* Default server to use
|
|
*/
|
|
baseServer?: BaseServerConfiguration;
|
|
/**
|
|
* HTTP library to use e.g. IsomorphicFetch
|
|
*/
|
|
httpApi?: HttpLibrary;
|
|
/**
|
|
* The middlewares which will be applied to requests and responses
|
|
*/
|
|
middleware?: Middleware[];
|
|
/**
|
|
* Configures all middlewares using the promise api instead of observables (which Middleware uses)
|
|
*/
|
|
promiseMiddleware?: PromiseMiddleware[];
|
|
/**
|
|
* Configuration for the available authentication methods
|
|
*/
|
|
authMethods?: AuthMethodsConfiguration
|
|
}
|
|
|
|
/**
|
|
* Configuration factory function
|
|
*
|
|
* If a property is not included in conf, a default is used:
|
|
* - baseServer: server1
|
|
* - httpApi: IsomorphicFetchHttpLibrary
|
|
* - middleware: []
|
|
* - promiseMiddleware: []
|
|
* - authMethods: {}
|
|
*
|
|
* @param conf partial configuration
|
|
*/
|
|
export function createConfiguration(conf: ConfigurationParameters = {}): Configuration {
|
|
const configuration: Configuration = {
|
|
baseServer: conf.baseServer !== undefined ? conf.baseServer : server1,
|
|
httpApi: conf.httpApi || new DefaultHttpLibrary(),
|
|
middleware: conf.middleware || [],
|
|
authMethods: configureAuthMethods(conf.authMethods)
|
|
};
|
|
if (conf.promiseMiddleware) {
|
|
conf.promiseMiddleware.forEach(
|
|
m => configuration.middleware.push(new PromiseMiddlewareWrapper(m))
|
|
);
|
|
}
|
|
return configuration;
|
|
} |