{"version":3,"file":"mgrcto-angular-odata-v401.mjs","sources":["../../../projects/angular-odata-v401/src/lib/angular-odata-v401.module.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataOperation.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataEnums.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataQuery.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataUtils.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataService.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataConfiguration.ts","../../../projects/angular-odata-v401/src/lib/odata/angularODataServiceFactory.ts","../../../projects/angular-odata-v401/src/public-api.ts","../../../projects/angular-odata-v401/src/mgrcto-angular-odata-v401.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n  ],\r\n  imports: [ CommonModule\r\n  ],\r\n  exports: [\r\n  ]\r\n})\r\nexport class AngularOdataV401Module { \r\n\r\n  public static forRoot(): ModuleWithProviders<AngularOdataV401Module> {\r\n    return {\r\n      ngModule: AngularOdataV401Module\r\n    };\r\n  }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { ODataConfiguration } from './angularODataConfiguration';\r\n\r\nexport abstract class ODataOperation<T> {\r\n    private _expand: string[] = [];\r\n    private _select: string[] = [];\r\n\r\n    constructor(protected typeName: string, protected config: ODataConfiguration, protected http: HttpClient) {\r\n    }\r\n    \r\n    public Expand(expand: string | string[]) {\r\n        if (expand) {\r\n            this._expand = this.toStringArray(expand);\r\n        }\r\n        return this;\r\n    }\r\n    /**\r\n     * Selects Entities. If String is separated by \"/\" the first part will be expanded and the second part will be selected in the expand.\r\n     * @param select \r\n     * @returns ODataOperation<T>\r\n     */ \r\n    public Select(select: string | string[]) {\r\n        if (select) {\r\n            this._select = this.toStringArray(select);\r\n        }\r\n        return this;\r\n    }\r\n    \r\n    protected getParams(aParams? : HttpParams): HttpParams {\r\n        const expandData = new Map<string, Array<string>>();\r\n        const normalSelects: Array<string> = [];\r\n        \r\n\r\n        this._expand.forEach((name) => expandData.set(name, []));\r\n\r\n        this._select.forEach((select: string) => {\r\n            const items: string[] = select.split('/');\r\n\r\n            // Select contains string like: `Boss/Name`\r\n            if (items.length > 1) {\r\n                const expandName = items[0];\r\n                const propertyName = items[1];\r\n\r\n                if (!expandData.has(expandName)) {\r\n                    expandData.set(expandName, []);\r\n                }\r\n                \r\n                expandData.get(expandName)!.push(propertyName);\r\n            }\r\n            else {\r\n                // Select is just a simple string like: `Boss`\r\n                normalSelects.push(select);\r\n            }\r\n        });\r\n\r\n        let params = (aParams && Object.keys(aParams).length>0)?aParams:new HttpParams();\r\n\r\n        const expands: Array<string> = [];\r\n        expandData.forEach((val,key)=>{\r\n            if (val.length) {\r\n                expands.push(`${key}(${this.config.keys.select}=${this.toCommaString(val)})`);\r\n                return;\r\n            }\r\n            expands.push(key);\r\n        });\r\n\r\n        if (expands.length) {\r\n            params = params.append(this.config.keys.expand, this.toCommaString(expands));\r\n        }\r\n\r\n        if (normalSelects.length) {\r\n            params = params.append(this.config.keys.select, this.toCommaString(normalSelects));\r\n        }\r\n\r\n        return params;\r\n    }\r\n\r\n    protected handleResponse(entity: Observable<HttpResponse<T>>): Observable<T> {\r\n        return entity\r\n            .pipe(\r\n                map(this.extractData),\r\n                catchError((err: any, caught: Observable<T>) => {\r\n                    if (this.config.handleError) {\r\n                        this.config.handleError(err, caught);\r\n                    }\r\n                    return throwError(err);\r\n                })\r\n            );\r\n    }\r\n\r\n    protected getDefaultRequestOptions(): {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } {\r\n        const options = Object.assign({}, this.config.defaultRequestOptions);\r\n        options.params = this.getParams(options.params);\r\n\r\n        return options;\r\n    }\r\n\r\n    protected getPostRequestOptions(): {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } {\r\n        const options = Object.assign({}, this.config.postRequestOptions);\r\n        options.params = this.getParams(options.params);\r\n\r\n        return options;\r\n    }\r\n\r\n    protected abstract Exec(): Observable<any>;\r\n\r\n    protected abstract GetUrl(): string;\r\n\r\n    protected GeneratePostUrl(entitiesUri: string): string {\r\n        const params: HttpParams = this.getParams(this.config.postRequestOptions.params);\r\n        if (params.keys().length > 0) {\r\n            return `${entitiesUri}?${params}`;\r\n        }\r\n\r\n        return entitiesUri;\r\n    }\r\n    protected GenerateUrl(entitiesUri: string): string {\r\n        const params: HttpParams = this.getParams( this.config.defaultRequestOptions.params);\r\n        if (params.keys().length > 0) {\r\n            return `${entitiesUri}?${params}`;\r\n        }\r\n\r\n        return entitiesUri;\r\n    }\r\n\r\n    protected toStringArray(input: string | string[]): string[] {\r\n        if (!input) {\r\n            return [];\r\n        }\r\n\r\n        if (input instanceof String || typeof input === 'string') {\r\n            return input.split(',').map(s => s.trim());\r\n        }\r\n\r\n        if (input instanceof Array) {\r\n            return input;\r\n        }\r\n\r\n        return [];\r\n    }\r\n\r\n    protected toCommaString(input: string | string[]): string {\r\n        if (input instanceof String || typeof input === 'string') {\r\n            return input as string;\r\n        }\r\n\r\n        if (input instanceof Array) {\r\n            return input.join();\r\n        }\r\n        \r\n        return \"\";\r\n    }\r\n\r\n    private extractData(res: HttpResponse<T>): T {\r\n        if (res.status < 200 || res.status >= 300) {\r\n            throw new Error('Bad response status: ' + res.status);\r\n        }\r\n\r\n        const body: any = res.body;\r\n        return body || {};\r\n    }\r\n}\r\n\r\nexport abstract class OperationWithKey<T> extends ODataOperation<T> {\r\n    constructor(protected _typeName: string,\r\n        protected override config: ODataConfiguration,\r\n        protected override http: HttpClient,\r\n        protected entityKey: any) {\r\n        super(_typeName, config, http);\r\n    }\r\n\r\n    protected getEntityUri(): string {\r\n        return this.config.getEntityUri(this.entityKey, this.typeName);\r\n    }\r\n\r\n    public GetUrl(): string {\r\n        return this.GenerateUrl(this.getEntityUri());\r\n    }\r\n}\r\n\r\nexport abstract class OperationWithEntity<T> extends ODataOperation<T> {\r\n    constructor(protected _typeName: string,\r\n        protected override config: ODataConfiguration,\r\n        protected override http: HttpClient,\r\n        protected entity: T) {\r\n        super(_typeName, config, http);\r\n    }\r\n\r\n    protected getEntitiesUri(): string {\r\n        return this.config.getEntitiesUri(this._typeName);\r\n    }\r\n\r\n    public GetUrl(): string {\r\n        return this.GenerateUrl(this.getEntitiesUri());\r\n    }\r\n}\r\n\r\nexport abstract class OperationWithKeyAndEntity<T> extends OperationWithKey<T> {\r\n    constructor(protected override _typeName: string,\r\n        protected override config: ODataConfiguration,\r\n        protected override http: HttpClient,\r\n        protected override entityKey: string,\r\n        protected entity: T) {\r\n        super(_typeName, config, http, entityKey);\r\n    }\r\n\r\n    protected override getEntityUri(): string {\r\n        return this.config.getEntityUri(this.entityKey, this._typeName);\r\n    }\r\n}\r\n\r\nexport class GetOperation<T> extends OperationWithKey<T> {\r\n    public Exec(): Observable<T> {\r\n        return super.handleResponse(this.http.get<T>(this.getEntityUri(), this.getDefaultRequestOptions()));\r\n    }\r\n}\r\n\r\nexport class PostOperation<T> extends OperationWithEntity<T> {\r\n    public Exec(): Observable<T> {\r\n        const body = this.entity ? JSON.stringify(this.entity) : null;\r\n\r\n        return super.handleResponse(this.http.post<T>(this.getEntitiesUri(), body, this.getPostRequestOptions()));\r\n    }\r\n    public override GetUrl(): string {\r\n        return this.GeneratePostUrl(this.getEntitiesUri());\r\n    }\r\n}\r\n\r\nexport class PatchOperation<T> extends OperationWithKeyAndEntity<T> {\r\n    public Exec(): Observable<T> {\r\n        const body = this.entity ? JSON.stringify(this.entity) : null;\r\n\r\n        return super.handleResponse(this.http.patch<T>(this.getEntityUri(), body, this.getPostRequestOptions()));\r\n    }\r\n    public override GetUrl(): string {\r\n        return this.GeneratePostUrl(this.getEntityUri());\r\n    }\r\n}\r\n\r\nexport class PutOperation<T> extends OperationWithKeyAndEntity<T> {\r\n    public Exec(): Observable<T> {\r\n        const body = this.entity ? JSON.stringify(this.entity) : null;\r\n\r\n        return super.handleResponse(this.http.put<T>(this.getEntityUri(), body, this.getPostRequestOptions()));\r\n    }\r\n    public override GetUrl(): string {\r\n        return this.GeneratePostUrl(this.getEntityUri());\r\n    }\r\n}\r\n\r\nexport class DeleteOperation<T> extends OperationWithKey<T>{\r\n    public Exec(): Observable<T> {\r\n        return super.handleResponse(this.http.delete<T>(this.getEntityUri(), this.config.defaultRequestOptions));\r\n    }\r\n}\r\n","export enum ODataExecReturnType {\r\n\r\n    // Default\r\n    Array = 0,\r\n\r\n    Count = 1,\r\n\r\n    PagedResult = 2,\r\n\r\n    MetadataResult = 3\r\n}\r\n","import { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\n\r\nimport { ODataConfiguration } from './angularODataConfiguration';\r\nimport { ODataExecReturnType } from './angularODataEnums';\r\nimport { ODataMetadataResult } from './angularODataMetadataResult';\r\nimport { ODataOperation } from './angularODataOperation';\r\nimport { ODataPagedResult } from './angularODataPagedResult';\r\nimport { IODataResponseModel } from './angularODataResponseModel';\r\n\r\nexport interface CustomOption{\r\n    key:string;\r\n    value:any;\r\n}\r\n\r\nexport class ODataQuery<T> extends ODataOperation<T> {\r\n\r\n    private _filter: string = \"\";\r\n    private _top: number  = 0;\r\n    private _skip: number = 0;\r\n    private _search: string = \"\";\r\n    private _orderBy: string[] = [];\r\n    private _apply: string[] = [];\r\n    private _entitiesUri: string;\r\n    private _maxPerPage: number  = 0;\r\n    private _customQueryOptions: CustomOption[] = [];\r\n    private _customQueryHeaders: CustomOption[] = [];\r\n\r\n    constructor(typeName: string, config: ODataConfiguration, http: HttpClient) {\r\n        super(typeName, config, http);\r\n\r\n        this._entitiesUri = config.getEntitiesUri(this.typeName);\r\n    }\r\n\r\n    public Filter(filter: string): ODataQuery<T> {\r\n        if (filter) {\r\n            this._filter = filter;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public Search(search: string): ODataQuery<T> {\r\n        if (search) {\r\n            this._search = search;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public Top(top: number): ODataQuery<T> {\r\n        if (top > -1) {\r\n            this._top = top;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public Skip(skip: number): ODataQuery<T> {\r\n        if (skip > -1) {\r\n            this._skip = skip;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public OrderBy(orderBy: string | string[]): ODataQuery<T> {\r\n        if (orderBy) {\r\n            this._orderBy = this.toStringArray(orderBy);\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public MaxPerPage(maxPerPage: number): ODataQuery<T> {\r\n        if (maxPerPage > -1) {\r\n            this._maxPerPage = maxPerPage;\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public Apply(apply: string | string[]): ODataQuery<T> {\r\n        if (apply) {\r\n            this._apply = this.toStringArray(apply);\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public CustomQueryOptions(customOptions: CustomOption | CustomOption[]): ODataQuery<T> {\r\n        if (customOptions) {\r\n            this._customQueryOptions = Array.isArray(customOptions) ? customOptions : [customOptions];\r\n        }\r\n        return this;\r\n    }\r\n\r\n    public CustomQueryHeaders(customHeaders: CustomOption | CustomOption[]): ODataQuery<T> {\r\n      if (customHeaders) {\r\n          this._customQueryHeaders = Array.isArray(customHeaders) ? customHeaders : [customHeaders];\r\n      }\r\n      return this;\r\n    }\r\n\r\n    public GetUrl(returnType?: ODataExecReturnType): string {\r\n        let url: string = this._entitiesUri;\r\n        if (returnType === ODataExecReturnType.Count) {\r\n            url = `${url}/${this.config.keys.count}`;\r\n        }\r\n        const params: HttpParams = this.getQueryParams(this.config.defaultRequestOptions.params);\r\n        if (params.keys().length > 0) {\r\n            return `${url}?${params}`;\r\n        }\r\n\r\n        return url;\r\n    }\r\n\r\n    public Exec(): Observable<T[]>;\r\n    public Exec(returnType: ODataExecReturnType.Count): Observable<number>;\r\n    public Exec(returnType: ODataExecReturnType.PagedResult): Observable<ODataPagedResult<T>>;\r\n    public Exec(returnType: ODataExecReturnType.MetadataResult): Observable<ODataMetadataResult<T>>;\r\n    public Exec(returnType?: ODataExecReturnType): Observable<T[] | ODataPagedResult<T> | ODataMetadataResult<T> | number> {\r\n        const requestOptions: {\r\n            headers?: HttpHeaders;\r\n            observe: 'response';\r\n            params?: HttpParams;\r\n            reportProgress?: boolean;\r\n            responseType?: 'json';\r\n            withCredentials?: boolean;\r\n        } = this.getQueryRequestOptions(returnType);\r\n        switch (returnType) {\r\n            case ODataExecReturnType.Count:\r\n                return this.execGetCount(requestOptions);\r\n\r\n            case ODataExecReturnType.PagedResult:\r\n                return this.execGetArrayDataWithCount(this._entitiesUri, requestOptions);\r\n\r\n            case ODataExecReturnType.MetadataResult:\r\n                return this.execGetArrayDataWithMetadata(this._entitiesUri, requestOptions);\r\n\r\n            default:\r\n                return this.execGetArrayData(requestOptions);\r\n        }\r\n    }\r\n\r\n    public ExecWithCount(): Observable<ODataPagedResult<T>> {\r\n        return this.Exec(ODataExecReturnType.PagedResult);\r\n    }\r\n\r\n    public NextPage(pagedResult: ODataPagedResult<T>): Observable<ODataPagedResult<T>> {\r\n        const requestOptions: {\r\n            headers?: HttpHeaders;\r\n            observe: 'response';\r\n            params?: HttpParams;\r\n            reportProgress?: boolean;\r\n            responseType?: 'json';\r\n            withCredentials?: boolean;\r\n        } = this.getQueryRequestOptions(ODataExecReturnType.PagedResult);\r\n\r\n        return this.execGetArrayDataWithCount(pagedResult.nextLink, requestOptions);\r\n    }\r\n\r\n    private execGetCount(requestOptions: {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    }): Observable<number> {\r\n        const countUrl = `${this._entitiesUri}/${this.config.keys.count}`;\r\n        return this.http.get<number>(countUrl, requestOptions)\r\n            .pipe(\r\n                map(res => this.extractDataAsNumber(res, this.config)),\r\n                catchError((err: any, caught: Observable<number>) => {\r\n                    if (this.config.handleError) {\r\n                        this.config.handleError(err, caught);\r\n                    }\r\n                    return throwError(err);\r\n                })\r\n            );\r\n    }\r\n\r\n    private execGetArrayDataWithCount(url: string, requestOptions: {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    }): Observable<ODataPagedResult<T>> {\r\n        return this.http.get<IODataResponseModel<T>>(url, requestOptions)\r\n            .pipe(\r\n                map(res => this.extractArrayDataWithCount(res, this.config)),\r\n                catchError((err: any, caught: Observable<ODataPagedResult<T>>) => {\r\n                    if (this.config.handleError) {\r\n                        this.config.handleError(err, caught);\r\n                    }\r\n                    return throwError(err);\r\n                })\r\n            );\r\n    }\r\n\r\n    private execGetArrayDataWithMetadata(url: string, requestOptions: {\r\n      headers?: HttpHeaders;\r\n      observe: 'response';\r\n      params?: HttpParams;\r\n      reportProgress?: boolean;\r\n      responseType?: 'json';\r\n      withCredentials?: boolean;\r\n    }): Observable<ODataMetadataResult<T>> {\r\n      return this.http.get<IODataResponseModel<T>>(url, requestOptions)\r\n          .pipe(\r\n              map(res => this.extractArrayDataWithMetadata(res, this.config)),\r\n              catchError((err: HttpErrorResponse, caught: Observable<ODataMetadataResult<T>>) => {\r\n                  if (this.config.handleError) {\r\n                      this.config.handleError(err, caught);\r\n                  }\r\n                  return throwError(err);\r\n              })\r\n          );\r\n    }\r\n\r\n    private execGetArrayData(requestOptions: {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    }): Observable<T[]> {\r\n        return this.http.get<IODataResponseModel<T>>(this._entitiesUri, requestOptions)\r\n            .pipe(\r\n                map(res => this.extractArrayData(res, this.config)),\r\n                catchError((err: any, caught: Observable<Array<T>>) => {\r\n                    if (this.config.handleError) {\r\n                        this.config.handleError(err, caught);\r\n                    }\r\n                    return throwError(err);\r\n                })\r\n            );\r\n    }\r\n\r\n    private getQueryRequestOptions(returnType? : ODataExecReturnType): {\r\n        headers?: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } {\r\n        const options = Object.assign({}, this.config.defaultRequestOptions);\r\n        options.params = this.getQueryParams(options.params);\r\n        options.headers = this.getQueryHeaders(options.headers, returnType);\r\n        return options;\r\n    }\r\n\r\n    private getQueryHeaders(headers: HttpHeaders, returnType?: ODataExecReturnType): HttpHeaders {\r\n      if (!headers) {\r\n        headers = new HttpHeaders();\r\n      }\r\n      if(this._maxPerPage > 0){\r\n        headers = headers.set('Prefer', `${this.config.keys.maxPerPage}=${this._maxPerPage}`);\r\n      }\r\n      headers = headers.set(`${this.config.keys.metadata}`, `${(returnType && returnType >= ODataExecReturnType.PagedResult)? 'full' : 'none'}`);\r\n      if (this._customQueryHeaders.length > 0) {\r\n        this._customQueryHeaders.forEach(customQueryHeader => {\r\n          headers = headers.set(customQueryHeader.key, customQueryHeader.value);\r\n        });\r\n      }\r\n      return headers;\r\n    }\r\n\r\n    private getQueryParams(aParams?:HttpParams): HttpParams {\r\n        let params = super.getParams(aParams);\r\n\r\n        if (this._filter) {\r\n            params = params.append(this.config.keys.filter, this._filter);\r\n        }\r\n\r\n        if (this._search) {\r\n            params = params.append(this.config.keys.search, this._search);\r\n        }\r\n\r\n        if (this._top > 0) {\r\n            params = params.append(this.config.keys.top, this._top.toString());\r\n        }\r\n\r\n        if (this._skip > 0) {\r\n            params = params.append(this.config.keys.skip, this._skip.toString());\r\n        }\r\n\r\n        if (this._orderBy.length > 0) {\r\n            params = params.append(this.config.keys.orderBy, this.toCommaString(this._orderBy));\r\n        }\r\n\r\n        if (this._apply.length > 0) {\r\n            params = params.append(this.config.keys.apply, this.toCommaString(this._apply));\r\n        }\r\n\r\n        if (this._customQueryOptions.length > 0) {\r\n            this._customQueryOptions.forEach(customQueryOption => (params = params.append(\r\n                this.checkReservedCustomQueryOptionKey(customQueryOption.key), customQueryOption.value)\r\n            ));\r\n        }\r\n\r\n        return params;\r\n    }\r\n\r\n    private extractDataAsNumber(res: HttpResponse<number>, config: ODataConfiguration): number {\r\n        return config.extractQueryResultDataAsNumber(res);\r\n    }\r\n\r\n    private extractArrayData(res: HttpResponse<IODataResponseModel<T>>, config: ODataConfiguration): T[] {\r\n        return config.extractQueryResultData(res);\r\n    }\r\n\r\n    private extractArrayDataWithCount(res: HttpResponse<IODataResponseModel<T>>, config: ODataConfiguration): ODataPagedResult<T> {\r\n        return config.extractQueryResultDataWithCount(res);\r\n    }\r\n\r\n    private extractArrayDataWithMetadata(res: HttpResponse<IODataResponseModel<T>>, config: ODataConfiguration): ODataMetadataResult<T> {\r\n      return config.extractQueryResultDataWithMetadata(res);\r\n    }\r\n\r\n    private checkReservedCustomQueryOptionKey(key: string): string {\r\n        if (key === null || key === undefined){\r\n            throw new Error('Custom query options MUST NOT be null or undefined.');\r\n        }\r\n        if (key.indexOf('$') === 0 || key.indexOf('@') === 0) {\r\n            throw new Error('Custom query options MUST NOT begin with a $ or @ character.');\r\n        }\r\n        return key;\r\n    }\r\n}\r\n","export class ODataUtils {\r\n    public static convertObjectToString(obj: any): string {\r\n        const properties: string[] = [];\r\n\r\n        for (const prop in obj) {\r\n            if (obj.hasOwnProperty(prop) && obj[prop] !== undefined) {\r\n                const value: any = ODataUtils.quoteValue(obj[prop]);\r\n\r\n                properties.push(`${prop}=${value}`);\r\n            }\r\n        }\r\n        return properties.join(', ');\r\n    }\r\n\r\n    public static quoteValue(value: number | string | boolean | any): string {\r\n        // check if GUID (UUID) type\r\n        if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {\r\n            return value;\r\n        }\r\n\r\n        // check if string\r\n        if (typeof value === 'string') {\r\n            const escaped = value.replace(/'/g, '\\'\\'');\r\n            return `'${escaped}'`;\r\n        }\r\n\r\n        // check if boolean or number\r\n        if (typeof value === 'boolean' || typeof value === 'number') {\r\n            return `${value}`;\r\n        }\r\n\r\n        const parts: string[] = [];\r\n        Object.getOwnPropertyNames(value).forEach((propertyName: string) => {\r\n            const propertyValue: any = value[propertyName];\r\n            parts.push(`${propertyName}=${ODataUtils.quoteValue(propertyValue)}`);\r\n        });\r\n\r\n        return parts.length > 0 ? parts.join(', ') : `${value}`;\r\n    }\r\n\r\n    public static tryParseInt(input?: any): { valid: boolean, value: number } {\r\n        if (input !== null && !isNaN(input)) {\r\n            const parsed: number = parseInt(input, 10);\r\n            return {\r\n                valid: !isNaN(parsed),\r\n                value: parsed\r\n            };\r\n        }\r\n\r\n        return {\r\n            valid: false,\r\n            value: NaN\r\n        };\r\n    }\r\n}\r\n","import { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\n\r\nimport { ODataConfiguration } from './angularODataConfiguration';\r\nimport { DeleteOperation, GetOperation, PatchOperation, PostOperation, PutOperation } from './angularODataOperation';\r\nimport { ODataQuery } from './angularODataQuery';\r\nimport { ODataUtils } from './angularODataUtils';\r\n\r\nexport class ODataService<T> {\r\n    private _entitiesUri: string;\r\n\r\n    constructor(private _typeName: string, private _http: HttpClient, private config: ODataConfiguration) {\r\n        this._entitiesUri = config.getEntitiesUri(_typeName);\r\n    }\r\n\r\n    public get TypeName(): string {\r\n        return this._typeName;\r\n    }\r\n\r\n    public Get(key: any): GetOperation<T> {\r\n        return new GetOperation<T>(this._typeName, this.config, this._http, key);\r\n    }\r\n\r\n    public Post<T>(entity: T): PostOperation<T> {\r\n        return new PostOperation<T>(this._typeName, this.config, this._http, entity);\r\n    }\r\n\r\n    public Patch<T>(entity: T, key: any): PatchOperation<T> {\r\n        return new PatchOperation<T>(this._typeName, this.config, this._http, key, entity);\r\n    }\r\n\r\n    public Put<T>(entity: T, key: any): PutOperation<T> {\r\n        return new PutOperation<T>(this._typeName, this.config, this._http, key, entity);\r\n    }\r\n\r\n    public Delete(key: any): DeleteOperation<T> {\r\n        return new DeleteOperation<T>(this._typeName, this.config, this._http, key);\r\n    }\r\n\r\n    public CustomAction(key: any, actionName: string, postdata: any): Observable<any> {\r\n        const body = postdata ? JSON.stringify(postdata) : null;\r\n        return this._http.post(`${this.getEntityUri(key)}/${actionName}`, body, this.config.customRequestOptions).pipe(map(resp => resp));\r\n    }\r\n\r\n    public CustomCollectionAction(actionName: string, postdata: any): Observable<any> {\r\n        const body = postdata ? JSON.stringify(postdata) : null;\r\n        return this._http.post(`${this._entitiesUri}/${actionName}`, body, this.config.customRequestOptions).pipe(map(resp => resp));\r\n    }\r\n\r\n    public CustomFunction(key: any, functionName: string, parameters?: any): Observable<any> {\r\n        if (parameters) {\r\n            const params: string = ODataUtils.convertObjectToString(parameters);\r\n            functionName = `${functionName}(${params})`;\r\n        } else if (!functionName.endsWith(')') && !functionName.endsWith('()')) {\r\n            functionName = `${functionName}()`;\r\n        }\r\n        return this._http.get(`${this.getEntityUri(key)}/${functionName}`, this.config.defaultRequestOptions).pipe(map(resp => resp));\r\n    }\r\n\r\n    public CustomCollectionFunction(functionName: string, parameters?: any): Observable<any> {\r\n        if (parameters) {\r\n            const params: string = ODataUtils.convertObjectToString(parameters);\r\n            functionName = `${functionName}(${params})`;\r\n        } else if (!functionName.endsWith(')') && !functionName.endsWith('()')) {\r\n            functionName = `${functionName}()`;\r\n        }\r\n        return this._http.get(`${this._entitiesUri}/${functionName}`, this.config.defaultRequestOptions).pipe(map(resp => resp));\r\n    }\r\n\r\n    public getNestedEntityService<U>(key:string,typeName:string):ODataService<U>{\r\n        let nestedTypeName = `${this.config.getEntityPath(key,this._typeName)}/${typeName}`;\r\n        return new ODataService<U>(nestedTypeName,this._http,this.config);\r\n    }\r\n\r\n    public ItemProperty<T = any>(key: string, propertyName: string): Observable<T | null> {\r\n        return this._http.get<T>(`${this.getEntityUri(key)}/${propertyName}`, this.config.defaultRequestOptions)\r\n            .pipe(map(r => r.body));\r\n    }\r\n\r\n    public Query(): ODataQuery<T> {\r\n        return new ODataQuery<T>(this.TypeName, this.config, this._http);\r\n    }\r\n\r\n    protected getEntityUri(key: any): string {\r\n        return this.config.getEntityUri(key, this._typeName);\r\n    }\r\n\r\n    protected handleResponse<TResponse>(entity: Observable<HttpResponse<TResponse>>): Observable<TResponse> {\r\n        return entity\r\n            .pipe(\r\n                map(this.extractData),\r\n                catchError((err: any, caught: Observable<TResponse>) => {\r\n                    if (this.config.handleError) {\r\n                        this.config.handleError(err, caught);\r\n                    }\r\n                    return throwError(err);\r\n                })\r\n            );\r\n    }\r\n\r\n    private extractData<TResponse>(res: HttpResponse<TResponse>): TResponse {\r\n        if (res.status < 200 || res.status >= 300) {\r\n            throw new Error('Bad response status: ' + res.status);\r\n        }\r\n        const body: any = res.body;\r\n        return body || {};\r\n    }\r\n}\r\n","import { HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ODataMetadataResult } from './angularODataMetadataResult';\r\nimport { ODataPagedResult } from './angularODataPagedResult';\r\nimport { IODataResponseModel } from './angularODataResponseModel';\r\nimport { ODataUtils } from './angularODataUtils';\r\n\r\nexport class KeyConfigs {\r\n    public filter = '$filter';\r\n    public top = '$top';\r\n    public skip = '$skip';\r\n    public orderBy = '$orderby';\r\n    public select = '$select';\r\n    public search = '$search';\r\n    public expand = '$expand';\r\n    public apply = '$apply';\r\n    public count = '$count';\r\n    public maxPerPage = 'odata.maxpagesize';\r\n    public metadata = 'odata.metadata';\r\n    public responseCount = '@odata.count';\r\n    public responseNextLink = '@odata.nextLink';\r\n}\r\n\r\n@Injectable()\r\nexport class ODataConfiguration {\r\n    private readonly _postHeaders = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\r\n    private _baseUrl = 'http://localhost/odata';\r\n\r\n    public keys: KeyConfigs = new KeyConfigs();\r\n\r\n    public defaultRequestOptions: {\r\n        headers: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } = { headers: new HttpHeaders(), observe: 'response' };\r\n\r\n    public postRequestOptions: {\r\n        headers: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } = { headers: this._postHeaders, observe: 'response' };\r\n\r\n    public customRequestOptions: {\r\n        headers: HttpHeaders;\r\n        observe: 'response';\r\n        params?: HttpParams;\r\n        reportProgress?: boolean;\r\n        responseType?: 'json';\r\n        withCredentials?: boolean;\r\n    } = { headers: new HttpHeaders(), observe: 'response' };\r\n\r\n    set baseUrl(baseUrl: string) {\r\n        this._baseUrl = baseUrl.replace(/\\/+$/, '');\r\n    }\r\n\r\n    get baseUrl(): string {\r\n        return this._baseUrl;\r\n    }\r\n\r\n    public getEntitiesUri(typeName: string): string {\r\n        if (typeName) {\r\n            return `${this.baseUrl}/${this.sanitizeTypeName(typeName)}`;\r\n        }\r\n        return this.baseUrl;\r\n    }\r\n\r\n    public getEntityUri(key: any, typeName: string): string {\r\n        return `${this.getEntitiesUri(typeName)}(${ODataUtils.quoteValue(key)})`;\r\n    }\r\n\r\n    public getEntityPath(key:any, typeName:string):string{\r\n        return `${this.sanitizeTypeName(typeName)}(${ODataUtils.quoteValue(key)})`;\r\n    }\r\n\r\n    public handleError(err: any, caught: any): void {\r\n        console.warn('OData error: ', err, caught);\r\n    }\r\n\r\n    public extractQueryResultDataAsNumber(res: HttpResponse<number>): number {\r\n        if (res.status < 200 || res.status >= 300) {\r\n            throw new Error('Bad response status: ' + res.status);\r\n        }\r\n\r\n        return (res && res.body) as number;\r\n    }\r\n\r\n    public extractQueryResultData<T>(res: HttpResponse<IODataResponseModel<T>>): T[] {\r\n        if (res.status < 200 || res.status >= 300) {\r\n            throw new Error('Bad response status: ' + res.status);\r\n        }\r\n\r\n        return (res && res.body && res.body.value) as T[];\r\n    }\r\n\r\n    public extractQueryResultDataWithCount<T>(res: HttpResponse<IODataResponseModel<T>>): ODataPagedResult<T> {\r\n        let pagedResult: ODataPagedResult<T>;\r\n\r\n        if (res.status < 200 || res.status >= 300) {\r\n            throw new Error('Bad response status: ' + res.status);\r\n        }\r\n\r\n        const body: any = res.body;\r\n        let entities: T[] = body.value;\r\n        delete body.value;\r\n        if(!Array.isArray(entities)){\r\n          entities = [];\r\n        }\r\n        pagedResult = body;\r\n        pagedResult.data = entities;\r\n\r\n        const parseResult = ODataUtils.tryParseInt(body[`${this.keys.responseCount}`]);\r\n        if (parseResult.valid) {\r\n            pagedResult.count = parseResult.value;\r\n        } else {\r\n            console.warn('Cannot determine OData entities count. Falling back to collection length.');\r\n            pagedResult.count = entities.length;\r\n        }\r\n\r\n        if (body[`${this.keys.responseNextLink}`]) {\r\n            pagedResult.nextLink = body[`${this.keys.responseNextLink}`];\r\n        }\r\n\r\n        return pagedResult;\r\n    }\r\n\r\n    public extractQueryResultDataWithMetadata<T>(res: HttpResponse<IODataResponseModel<T>>): ODataMetadataResult<T> {\r\n      let result: ODataMetadataResult<T>; \r\n\r\n      if (res.status < 200 || res.status >= 300) {\r\n          throw new Error('Bad response status: ' + res.status);\r\n      }\r\n\r\n      const body: any = res.body;\r\n      let entities: T[] = body.value;\r\n      delete body.value;\r\n      if(!Array.isArray(entities)){\r\n        entities = [];\r\n      }\r\n      result = body;\r\n      result.data = entities;\r\n\r\n      const parseResult = ODataUtils.tryParseInt(body[`${this.keys.responseCount}`]);\r\n      if (parseResult.valid) {\r\n          result.count = parseResult.value;\r\n      } else {\r\n          console.warn('Cannot determine OData entities count. Falling back to collection length.');\r\n          result.count = entities.length;\r\n      }\r\n\r\n      if (body[`${this.keys.responseNextLink}`]) {\r\n          result.nextLink = body[`${this.keys.responseNextLink}`];\r\n      }\r\n\r\n      return result;\r\n    }\r\n\r\n    private sanitizeTypeName(typeName: string): string {\r\n        return typeName.replace(/\\/+$/, '').replace(/^\\/+/, '');\r\n    }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ODataConfiguration } from './angularODataConfiguration';\r\nimport { ODataService } from './angularODataService';\r\n\r\n@Injectable()\r\nexport class ODataServiceFactory {\r\n\r\n    constructor(private http: HttpClient, private config: ODataConfiguration) {\r\n    }\r\n\r\n    public CreateService<T>(typeName: string, config?: ODataConfiguration): ODataService<T> {\r\n        return new ODataService<T>(typeName, this.http, config ? config : this.config);\r\n    }\r\n}\r\n","/*\r\n * Public API Surface of angular-odata-v401\r\n */\r\n\r\nexport * from './lib/angular-odata-v401.module';\r\nexport * from './lib/odata'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ODataConfiguration"],"mappings":"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"}