11import { isRunningWithinPortals , getClientUrl } from "./Utility" ;
22import { ErrorHelper } from "../helpers/ErrorHelper" ;
3- import { ApiConfig , Config } from "../dynamics-web-api" ;
3+ import { ApiConfig , Config , SearchApiOptions } from "../dynamics-web-api" ;
4+ import { LIBRARY_NAME } from "../requests/constants" ;
45
56type ApiType = "dataApi" | "searchApi" ;
67
8+ const FUNCTION_NAME = `${ LIBRARY_NAME } .setConfig` ;
9+
710export interface InternalApiConfig extends ApiConfig {
811 url : string ;
12+ escapeSpecialCharacters ?: boolean ;
913}
1014
1115export interface InternalConfig extends Config {
@@ -26,65 +30,78 @@ const mergeApiConfigs = (apiConfig: ApiConfig | undefined, apiType: ApiType, int
2630 const internalApiConfig = internalConfig [ apiType ] as InternalApiConfig ;
2731
2832 if ( apiConfig ?. version ) {
29- ErrorHelper . stringParameterCheck ( apiConfig . version , "DynamicsWebApi.setConfig" , `config.${ apiType } .version` ) ;
33+ ErrorHelper . stringParameterCheck ( apiConfig . version , FUNCTION_NAME , `config.${ apiType } .version` ) ;
3034 internalApiConfig . version = apiConfig . version ;
3135 }
3236
3337 if ( apiConfig ?. path ) {
34- ErrorHelper . stringParameterCheck ( apiConfig . path , "DynamicsWebApi.setConfig" , `config.${ apiType } .path` ) ;
38+ ErrorHelper . stringParameterCheck ( apiConfig . path , FUNCTION_NAME , `config.${ apiType } .path` ) ;
3539 internalApiConfig . path = apiConfig . path ;
3640 }
3741
42+ if ( apiType === "searchApi" ) {
43+ mergeSearchApiOptions ( apiConfig ?. options , internalApiConfig ) ;
44+ }
45+
3846 internalApiConfig . url = getApiUrl ( internalConfig . serverUrl , internalApiConfig ) ;
3947} ;
4048
49+ const mergeSearchApiOptions = ( options : SearchApiOptions | undefined , internalApiConfig : InternalApiConfig ) : void => {
50+ if ( ! options ) return ;
51+
52+ if ( internalApiConfig . escapeSpecialCharacters != null ) {
53+ ErrorHelper . boolParameterCheck ( options . escapeSpecialCharacters , FUNCTION_NAME , `config.searchApi.options.escapeSpecialCharacters` ) ;
54+ internalApiConfig . escapeSpecialCharacters = options . escapeSpecialCharacters ;
55+ }
56+ }
57+
4158export class ConfigurationUtility {
4259 static mergeApiConfigs = mergeApiConfigs ;
4360
4461 static merge ( internalConfig : InternalConfig , config ?: Config ) : void {
4562 if ( config ?. serverUrl ) {
46- ErrorHelper . stringParameterCheck ( config . serverUrl , "DynamicsWebApi.setConfig" , "config.serverUrl" ) ;
63+ ErrorHelper . stringParameterCheck ( config . serverUrl , FUNCTION_NAME , "config.serverUrl" ) ;
4764 internalConfig . serverUrl = config . serverUrl ;
4865 }
4966
5067 mergeApiConfigs ( config ?. dataApi , "dataApi" , internalConfig ) ;
5168 mergeApiConfigs ( config ?. searchApi , "searchApi" , internalConfig ) ;
5269
5370 if ( config ?. impersonate ) {
54- internalConfig . impersonate = ErrorHelper . guidParameterCheck ( config . impersonate , "DynamicsWebApi.setConfig" , "config.impersonate" ) ;
71+ internalConfig . impersonate = ErrorHelper . guidParameterCheck ( config . impersonate , FUNCTION_NAME , "config.impersonate" ) ;
5572 }
5673
5774 if ( config ?. impersonateAAD ) {
58- internalConfig . impersonateAAD = ErrorHelper . guidParameterCheck ( config . impersonateAAD , "DynamicsWebApi.setConfig" , "config.impersonateAAD" ) ;
75+ internalConfig . impersonateAAD = ErrorHelper . guidParameterCheck ( config . impersonateAAD , FUNCTION_NAME , "config.impersonateAAD" ) ;
5976 }
6077
6178 if ( config ?. onTokenRefresh ) {
62- ErrorHelper . callbackParameterCheck ( config . onTokenRefresh , "DynamicsWebApi.setConfig" , "config.onTokenRefresh" ) ;
79+ ErrorHelper . callbackParameterCheck ( config . onTokenRefresh , FUNCTION_NAME , "config.onTokenRefresh" ) ;
6380 internalConfig . onTokenRefresh = config . onTokenRefresh ;
6481 }
6582
6683 if ( config ?. includeAnnotations ) {
67- ErrorHelper . stringParameterCheck ( config . includeAnnotations , "DynamicsWebApi.setConfig" , "config.includeAnnotations" ) ;
84+ ErrorHelper . stringParameterCheck ( config . includeAnnotations , FUNCTION_NAME , "config.includeAnnotations" ) ;
6885 internalConfig . includeAnnotations = config . includeAnnotations ;
6986 }
7087
7188 if ( config ?. timeout ) {
72- ErrorHelper . numberParameterCheck ( config . timeout , "DynamicsWebApi.setConfig" , "config.timeout" ) ;
89+ ErrorHelper . numberParameterCheck ( config . timeout , FUNCTION_NAME , "config.timeout" ) ;
7390 internalConfig . timeout = config . timeout ;
7491 }
7592
7693 if ( config ?. maxPageSize ) {
77- ErrorHelper . numberParameterCheck ( config . maxPageSize , "DynamicsWebApi.setConfig" , "config.maxPageSize" ) ;
94+ ErrorHelper . numberParameterCheck ( config . maxPageSize , FUNCTION_NAME , "config.maxPageSize" ) ;
7895 internalConfig . maxPageSize = config . maxPageSize ;
7996 }
8097
8198 if ( config ?. returnRepresentation ) {
82- ErrorHelper . boolParameterCheck ( config . returnRepresentation , "DynamicsWebApi.setConfig" , "config.returnRepresentation" ) ;
99+ ErrorHelper . boolParameterCheck ( config . returnRepresentation , FUNCTION_NAME , "config.returnRepresentation" ) ;
83100 internalConfig . returnRepresentation = config . returnRepresentation ;
84101 }
85102
86103 if ( config ?. useEntityNames ) {
87- ErrorHelper . boolParameterCheck ( config . useEntityNames , "DynamicsWebApi.setConfig" , "config.useEntityNames" ) ;
104+ ErrorHelper . boolParameterCheck ( config . useEntityNames , FUNCTION_NAME , "config.useEntityNames" ) ;
88105 internalConfig . useEntityNames = config . useEntityNames ;
89106 }
90107
@@ -93,15 +110,15 @@ export class ConfigurationUtility {
93110 }
94111
95112 if ( ! global . DWA_BROWSER && config ?. proxy ) {
96- ErrorHelper . parameterCheck ( config . proxy , "DynamicsWebApi.setConfig" , "config.proxy" ) ;
113+ ErrorHelper . parameterCheck ( config . proxy , FUNCTION_NAME , "config.proxy" ) ;
97114
98115 if ( config . proxy . url ) {
99- ErrorHelper . stringParameterCheck ( config . proxy . url , "DynamicsWebApi.setConfig" , "config.proxy.url" ) ;
116+ ErrorHelper . stringParameterCheck ( config . proxy . url , FUNCTION_NAME , "config.proxy.url" ) ;
100117
101118 if ( config . proxy . auth ) {
102- ErrorHelper . parameterCheck ( config . proxy . auth , "DynamicsWebApi.setConfig" , "config.proxy.auth" ) ;
103- ErrorHelper . stringParameterCheck ( config . proxy . auth . username , "DynamicsWebApi.setConfig" , "config.proxy.auth.username" ) ;
104- ErrorHelper . stringParameterCheck ( config . proxy . auth . password , "DynamicsWebApi.setConfig" , "config.proxy.auth.password" ) ;
119+ ErrorHelper . parameterCheck ( config . proxy . auth , FUNCTION_NAME , "config.proxy.auth" ) ;
120+ ErrorHelper . stringParameterCheck ( config . proxy . auth . username , FUNCTION_NAME , "config.proxy.auth.username" ) ;
121+ ErrorHelper . stringParameterCheck ( config . proxy . auth . password , FUNCTION_NAME , "config.proxy.auth.password" ) ;
105122 }
106123 }
107124
0 commit comments