{"version":3,"file":"ebenefitsbv-odata-v4-ng.mjs","sources":["../../../projects/odata-v4-ng/src/lib/query-options/operator.ts","../../../projects/odata-v4-ng/src/lib/odata-query/quoted-string.ts","../../../projects/odata-v4-ng/src/lib/utils/utils.ts","../../../projects/odata-v4-ng/src/lib/odata-query/odata-query-abstract.ts","../../../projects/odata-v4-ng/src/lib/odata-query/odata-query-batch.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-string.ts","../../../projects/odata-v4-ng/src/lib/query-options/expand.ts","../../../projects/odata-v4-ng/src/lib/query-options/orderby.ts","../../../projects/odata-v4-ng/src/lib/query-options/query-options.ts","../../../projects/odata-v4-ng/src/lib/odata-query/odata-query.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-annotation.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-entity-container.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-entity-set.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-enum-type.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-function-action.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-navigation-property-binding.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-reference.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-schema.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-singleton.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-structural-property.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-structured-type.ts","../../../projects/odata-v4-ng/src/lib/odata-response/csdl/csdl-type-definition.ts","../../../projects/odata-v4-ng/src/lib/odata-response/entity-collection.ts","../../../projects/odata-v4-ng/src/lib/odata-response/metadata.ts","../../../projects/odata-v4-ng/src/lib/odata-response/odata-response-abstract.ts","../../../projects/odata-v4-ng/src/lib/odata-response/odata-response.ts","../../../projects/odata-v4-ng/src/lib/odata-response/odata-response-batch.ts","../../../projects/odata-v4-ng/src/lib/odata-service/http-options.ts","../../../projects/odata-v4-ng/src/lib/odata-service/odata.service.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-has-property.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-comparison.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-function.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-has-filter.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-lambda.ts","../../../projects/odata-v4-ng/src/lib/query-options/filter/filter-logical.ts","../../../projects/odata-v4-ng/src/lib/query-options/search/search.ts","../../../projects/odata-v4-ng/src/lib/query-options/search/search-logical.ts","../../../projects/odata-v4-ng/src/lib/query-options/search/search-simple.ts","../../../projects/odata-v4-ng/src/lib/query-options/search/search-phrase.ts","../../../projects/odata-v4-ng/src/public-api.ts","../../../projects/odata-v4-ng/src/ebenefitsbv-odata-v4-ng.ts"],"sourcesContent":["export enum OperatorComparison {\n    EQ, NE, GT, GE, LT, LE, HAS\n}\n\nexport enum OperatorLogical {\n    AND, OR, NOT\n}\n\nexport enum OperatorArithmetic {\n    ADD, SUB, MUL, DIV, MOD\n}\n","export class QuotedString {\n    constructor(private value: string) { }\n    toString(): string {\n        return this.value;\n    }\n}\n","import { OperatorLogical } from '../query-options/operator';\n\nimport { QuotedString } from '../odata-query/quoted-string';\n\nexport class Utils {\n    static isNull(value: any): boolean {\n        return value === null;\n    }\n\n    static isUndefined(value: any): boolean {\n        return value === undefined;\n    }\n\n    static isNullOrUndefined(value: any): boolean {\n        return Utils.isNull(value) || Utils.isUndefined(value);\n    }\n\n    static isNotNullNorUndefined(value: any): boolean {\n        return !Utils.isNull(value) && !Utils.isUndefined(value);\n    }\n\n    static isEmpty(value: any): boolean {\n        if (Utils.isNullOrUndefined(value)\n            || typeof (value) === 'string' && !value.length\n            || value instanceof Array && !value.length\n            || typeof (value.isEmpty) === 'function' && value.isEmpty()) {\n            return true;\n        }\n        if (value instanceof Array && value) {\n            for (const v of value) {\n                if (!Utils.isEmpty(v)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        return false;\n    }\n\n    static requireNull(fieldValue: any, fieldName: string) {\n        if (fieldValue !== null) {\n            throw new Error(fieldName + ' must be null');\n        }\n    }\n\n    static requireUndefined(fieldValue: any, fieldName: string) {\n        if (fieldValue !== undefined) {\n            throw new Error(fieldName + ' must be undefined');\n        }\n    }\n\n    static requireNotNull(fieldValue: any, fieldName: string) {\n        if (fieldValue === null) {\n            throw new Error(fieldName + ' cannot be null');\n        }\n    }\n\n    static requireNotUndefined(fieldValue: any, fieldName: string) {\n        if (fieldValue === undefined) {\n            throw new Error(fieldName + ' cannot be undefined');\n        }\n    }\n\n    static requireNotNullNorUndefined(fieldValue: any, fieldName: string) {\n        Utils.requireNotNull(fieldValue, fieldName);\n        Utils.requireNotUndefined(fieldValue, fieldName);\n    }\n\n    static requireNullOrUndefined(fieldValue: any, fieldName: string) {\n        if (!Utils.isNull(fieldValue) && !Utils.isUndefined(fieldValue)) {\n            throw new Error(fieldName + ' must be null or undefined');\n        }\n    }\n\n    static requireNotEmpty(fieldValue: any, fieldName: string) {\n        if (Utils.isEmpty(fieldValue)) {\n            throw new Error(fieldName + ' cannot be empty');\n        }\n    }\n\n    static requireNotNegative(fieldValue: number, fieldName: string) {\n        if (fieldValue < 0) {\n            throw new Error(fieldName + ' cannot be negative');\n        }\n    }\n\n    static appendSegment(path: string, segment: string): string {\n        Utils.requireNotNullNorUndefined(path, 'path');\n        Utils.requireNotNullNorUndefined(segment, 'segment');\n        if (!path.endsWith('/')) {\n            path += '/';\n        }\n        return path + segment;\n    }\n\n    static removeEndingSeparator(value: string): string {\n        Utils.requireNotNullNorUndefined(value, 'value');\n        if (value.endsWith('/')) {\n            if (value.length === 1) {\n                return '';\n            }\n            return value.substring(0, value.length - 1);\n        }\n        return value;\n    }\n\n    static getValueURI(value: boolean | number | string | QuotedString, encodeURI: boolean): any {\n        Utils.requireNotUndefined(value, 'value');\n        Utils.requireNotNullNorUndefined(encodeURI, 'encodeURI');\n\n        let res: any = value;\n\n        if (typeof (res) === 'string') {\n            // encode uri component\n            if (Utils.isNotNullNorUndefined(encodeURI) && encodeURI) {\n                res = encodeURIComponent(res);\n            }\n        } else if (res instanceof QuotedString) {\n            // escape single quote\n            res = res.toString().replace(/'/g, '\\'\\'');\n\n            // encode uri component\n            if (Utils.isNotNullNorUndefined(encodeURI) && encodeURI) {\n                res = encodeURIComponent(res);\n            }\n\n            // add start/ending quotes\n            res = '\\'' + res + '\\'';\n        }\n\n        // boolean, number\n        return res;\n    }\n\n    static toString(items: any[], operator?: OperatorLogical, operatorUppercase: boolean = false): string {\n        let res = '';\n        if (Utils.isNullOrUndefined(items) || !items.length) {\n            return res;\n        }\n\n        for (const item of items) {\n            if (res.length) {\n                if (Utils.isNotNullNorUndefined(operator)) {\n                    const operatorString: string = Utils.getOperatorString(operator, operatorUppercase);\n                    res += ` ${operatorString} `;\n                } else {\n                    res += ',';\n                }\n            }\n            if (Utils.isNotNullNorUndefined(operator) && operator === OperatorLogical.NOT) {\n                const operatorString: string = Utils.getOperatorString(operator, operatorUppercase);\n                res += `${operatorString} `;\n            }\n\n            res += item;\n        }\n\n        if (Utils.isNotNullNorUndefined(operator)) {\n            return `(${res})`;\n        }\n\n        return res;\n    }\n\n    protected static getOperatorString(operator: OperatorLogical, operatorUppercase: boolean): string {\n        let operatorString: string = OperatorLogical[operator].toLowerCase();\n        if (Utils.isNotNullNorUndefined(operatorUppercase) && operatorUppercase) {\n            operatorString = operatorString.toUpperCase();\n        }\n        return operatorString;\n    }\n}\n","import { Utils } from '../utils/utils';\nimport { ODataService } from '../odata-service/odata.service';\n\nexport abstract class ODataQueryAbstract {\n  protected odataService: ODataService;\n  protected serviceRoot: string;\n  protected queryString: string;\n\n  constructor(odataService: ODataService, serviceRoot: string) {\n    Utils.requireNotNullNorUndefined(odataService, 'odataService');\n    Utils.requireNotNullNorUndefined(serviceRoot, 'serviceRoot');\n    Utils.requireNotEmpty(serviceRoot, 'serviceRoot');\n    this.odataService = odataService;\n    this.serviceRoot = serviceRoot;\n    this.queryString = serviceRoot;\n  }\n\n  abstract toString();\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { v4 as UUID } from 'uuid';\nimport { Observable } from 'rxjs';\nimport { ODataResponse } from '../odata-response/odata-response';\nimport { HttpOptionsI } from '../odata-service/http-options';\nimport { ODataService } from '../odata-service/odata.service';\nimport { Utils } from '../utils/utils';\nimport { ODataQuery } from './odata-query';\nimport { ODataQueryAbstract } from './odata-query-abstract';\n\n\nexport enum Method {\n  GET, POST, PUT, PATCH, DELETE\n}\n\nexport class BatchRequest {\n  constructor(\n    public method: Method,\n    public odataQuery: ODataQuery,\n    public body?: any,\n    public httpOptions?: HttpOptionsI) { }\n}\n\nexport class ODataQueryBatch extends ODataQueryAbstract {\n  private static readonly BOUNDARY_PREFIX_SUFFIX = '--';\n  private static readonly BATCH_PREFIX = 'batch_';\n  private static readonly CHANGESET_PREFIX = 'changeset_';\n  private static readonly NEWLINE = '\\r\\n';\n\n  // CONSTANT SEGMENTS\n  private static readonly $BATCH = '$batch';\n\n  // HEADERS\n  private static readonly HTTP11 = 'HTTP/1.1';\n  private static readonly ODATA_VERSION = 'OData-Version';\n  private static readonly CONTENT_TYPE = 'Content-Type';\n  private static readonly ACCEPT = 'Accept';\n  private static readonly CONTENT_TRANSFER_ENCODING = 'Content-Transfer-Encoding';\n  private static readonly CONTENT_ID = 'Content-ID';\n\n  // HEADER VALUES\n  private static readonly VERSION_4_0 = '4.0';\n  private static readonly MULTIPART_MIXED = 'multipart/mixed';\n  private static readonly MULTIPART_MIXED_BOUNDARY = 'multipart/mixed;boundary=';\n  private static readonly APPLICATION_HTTP = 'application/http';\n  private static readonly BINARY = 'binary';\n  private static readonly APPLICATION_JSON = 'application/json';\n\n  // VARIABLES\n  private requests: BatchRequest[];\n  private batchBoundary: string;\n  private changesetBoundary: string;\n  private changesetID: number;\n\n  constructor(odataService: ODataService, serviceRoot: string) {\n    super(odataService, serviceRoot);\n    Utils.requireNotNullNorUndefined(odataService, 'odataService');\n    Utils.requireNotNullNorUndefined(serviceRoot, 'serviceRoot');\n    Utils.requireNotEmpty(serviceRoot, 'serviceRoot');\n    this.queryString = Utils.appendSegment(serviceRoot, ODataQueryBatch.$BATCH);\n    this.requests = [];\n    this.batchBoundary = ODataQueryBatch.BATCH_PREFIX + this.getUUID();\n    this.changesetBoundary = null;\n    this.changesetID = 1;\n  }\n\n  get(odataQuery: ODataQuery, httpOptions?: HttpOptionsI): ODataQueryBatch {\n    Utils.requireNotNullNorUndefined(odataQuery, 'odataQuery');\n    this.requests.push(new BatchRequest(Method.GET, odataQuery, undefined, httpOptions));\n    return this;\n  }\n\n  post(odataQuery: ODataQuery, body: any, httpOptions?: HttpOptionsI): ODataQueryBatch {\n    Utils.requireNotNullNorUndefined(odataQuery, 'odataQuery');\n    this.requests.push(new BatchRequest(Method.POST, odataQuery, body, httpOptions));\n    return this;\n  }\n\n  put(odataQuery: ODataQuery, body: any, httpOptions?: HttpOptionsI): ODataQueryBatch {\n    Utils.requireNotNullNorUndefined(odataQuery, 'odataQuery');\n    this.requests.push(new BatchRequest(Method.PUT, odataQuery, body, httpOptions));\n    return this;\n  }\n\n  patch(odataQuery: ODataQuery, body: any, httpOptions?: HttpOptionsI): ODataQueryBatch {\n    Utils.requireNotNullNorUndefined(odataQuery, 'odataQuery');\n    this.requests.push(new BatchRequest(Method.PATCH, odataQuery, body, httpOptions));\n    return this;\n  }\n\n  delete(odataQuery: ODataQuery, httpOptions?: HttpOptionsI): ODataQueryBatch {\n    Utils.requireNotNullNorUndefined(odataQuery, 'odataQuery');\n    this.requests.push(new BatchRequest(Method.DELETE, odataQuery, undefined, httpOptions));\n    return this;\n  }\n\n  execute(httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    // set headers\n    if (Utils.isNullOrUndefined(httpOptions)) {\n      httpOptions = {};\n    }\n    if (Utils.isNullOrUndefined(httpOptions.headers)) {\n      httpOptions.headers = new HttpHeaders();\n    }\n    httpOptions.headers = httpOptions.headers.set(ODataQueryBatch.ODATA_VERSION, ODataQueryBatch.VERSION_4_0);\n    httpOptions.headers = httpOptions.headers.set(ODataQueryBatch.CONTENT_TYPE, ODataQueryBatch.MULTIPART_MIXED_BOUNDARY + this.batchBoundary);\n    httpOptions.headers = httpOptions.headers.set(ODataQueryBatch.ACCEPT, ODataQueryBatch.MULTIPART_MIXED);\n\n    // send request\n    return this.odataService.post(this, this.getBody(), httpOptions);\n  }\n\n  toString(): string {\n    return this.queryString;\n  }\n\n  getBody(): string {\n    let res = '';\n\n    for (const request of this.requests) {\n      const method: Method = request.method;\n      const odataQuery: ODataQuery = request.odataQuery;\n      const httpOptions: HttpOptionsI = request.httpOptions;\n      const body: any = request.body;\n\n      // if method is GET and there is a changeset boundary open then close it\n      if (method === Method.GET && Utils.isNotNullNorUndefined(this.changesetBoundary)) {\n        res += ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + this.changesetBoundary + ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + ODataQueryBatch.NEWLINE;\n        this.changesetBoundary = null;\n      }\n\n      // if there is no changeset boundary open then open a batch boundary\n      if (Utils.isNullOrUndefined(this.changesetBoundary)) {\n        res += ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + this.batchBoundary + ODataQueryBatch.NEWLINE;\n      }\n\n      // if method is not GET and there is no changeset boundary open then open a changeset boundary\n      if (method !== Method.GET) {\n        if (Utils.isNullOrUndefined(this.changesetBoundary)) {\n          this.changesetBoundary = ODataQueryBatch.CHANGESET_PREFIX + this.getUUID();\n          res += ODataQueryBatch.CONTENT_TYPE + ': ' + ODataQueryBatch.MULTIPART_MIXED_BOUNDARY + this.changesetBoundary + ODataQueryBatch.NEWLINE;\n          res += ODataQueryBatch.NEWLINE;\n        }\n        res += ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + this.changesetBoundary + ODataQueryBatch.NEWLINE;\n      }\n\n      res += ODataQueryBatch.CONTENT_TYPE + ': ' + ODataQueryBatch.APPLICATION_HTTP + ODataQueryBatch.NEWLINE;\n      res += ODataQueryBatch.CONTENT_TRANSFER_ENCODING + ': ' + ODataQueryBatch.BINARY + ODataQueryBatch.NEWLINE;\n\n      if (method !== Method.GET) {\n        res += ODataQueryBatch.CONTENT_ID + ': ' + this.changesetID++ + ODataQueryBatch.NEWLINE;\n      }\n\n      res += ODataQueryBatch.NEWLINE;\n      res += Method[method] + ' ' + odataQuery + ' ' + ODataQueryBatch.HTTP11 + ODataQueryBatch.NEWLINE;\n\n      res += this.getHeaders(method, httpOptions);\n\n      res += ODataQueryBatch.NEWLINE;\n      if (method === Method.GET || method === Method.DELETE) {\n        res += ODataQueryBatch.NEWLINE;\n      } else {\n        res += JSON.stringify(body) + ODataQueryBatch.NEWLINE;\n      }\n    }\n\n    if (res.length) {\n      if (Utils.isNotNullNorUndefined(this.changesetBoundary)) {\n        res += ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + this.changesetBoundary + ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + ODataQueryBatch.NEWLINE;\n        this.changesetBoundary = null;\n      }\n      res += ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX + this.batchBoundary + ODataQueryBatch.BOUNDARY_PREFIX_SUFFIX;\n    }\n\n    return res;\n  }\n\n  protected getHeaders(method: Method, httpOptions: HttpOptionsI): string {\n    let res = '';\n\n    if (method === Method.POST || method === Method.PATCH || method === Method.PUT) {\n      res += ODataQueryBatch.CONTENT_TYPE + ': ' + ODataQueryBatch.APPLICATION_JSON + ODataQueryBatch.NEWLINE;\n    }\n\n    if (Utils.isNullOrUndefined(httpOptions) || Utils.isNullOrUndefined(httpOptions.headers)) {\n      return res;\n    }\n\n    for (const key of httpOptions.headers.keys()) {\n      res += key + ': ' + httpOptions.headers.getAll(key) + ODataQueryBatch.NEWLINE;\n    }\n\n    return res;\n  }\n\n  getUUID(): string {\n    return UUID();\n  }\n\n  getRequests(): BatchRequest[] {\n    return this.requests;\n  }\n\n  setBatchBoundary(batchBoundary: string): void {\n    this.batchBoundary = batchBoundary;\n  }\n}\n","import { Utils } from '../../utils/utils';\nimport { Filter } from './filter';\n\nexport class FilterString implements Filter {\n    private filter: string;\n\n    constructor(filter: string) {\n        Utils.requireNotNullNorUndefined(filter, 'filter');\n        Utils.requireNotEmpty(filter, 'filter');\n        this.filter = filter;\n    }\n\n    toString(): string {\n        return this.filter;\n    }\n\n    isEmpty(): boolean {\n        return Utils.isNullOrUndefined(this.filter) || !this.filter.length;\n    }\n}\n","import { QueryOptions } from './query-options';\nimport { Utils } from '../utils/utils';\nimport { Filter } from './filter/filter';\nimport { Orderby } from './orderby';\nimport { Search } from './search/search';\n\nexport class Expand {\n    static readonly SEPARATOR = ';';\n    private entitySet: string;\n    private queryOptions: QueryOptions;\n\n    constructor(entitySet: string) {\n        Utils.requireNotNullNorUndefined(entitySet, 'entitySet');\n        Utils.requireNotEmpty(entitySet, 'entitySet');\n        this.entitySet = entitySet;\n        this.queryOptions = new QueryOptions(Expand.SEPARATOR);\n    }\n\n    // QUERY OPTIONS\n\n    select(select: string | string[]): Expand {\n        this.queryOptions.select(select);\n        return this;\n    }\n\n    filter(filter: string | Filter): Expand {\n        this.queryOptions.filter(filter);\n        return this;\n    }\n\n    expand(expand: string | Expand | Expand[]): Expand {\n        this.queryOptions.expand(expand);\n        return this;\n    }\n\n    orderby(orderby: string | Orderby[]): Expand {\n        this.queryOptions.orderby(orderby);\n        return this;\n    }\n\n    search(search: string | Search): Expand {\n        this.queryOptions.search(search);\n        return this;\n    }\n\n    skip(skip: number): Expand {\n        this.queryOptions.skip(skip);\n        return this;\n    }\n\n    top(top: number): Expand {\n        this.queryOptions.top(top);\n        return this;\n    }\n\n    customOption(key: string, value: string) {\n        this.queryOptions.customOption(key, value);\n        return this;\n    }\n\n    toString(): string {\n        let res: string = this.entitySet;\n        if (!Utils.isEmpty(this.queryOptions)) {\n            res += '(' + this.queryOptions + ')';\n        }\n        return res;\n    }\n\n    isEmpty(): boolean {\n        return Utils.isEmpty(this.entitySet);\n    }\n}\n","import { Utils } from '../utils/utils';\n\nexport enum Order {\n    ASC, DESC\n}\n\nexport class Orderby {\n    private property: string;\n    private order: Order;\n\n    constructor(property: string, order?: Order) {\n        Utils.requireNotNullNorUndefined(property, 'property');\n        this.property = property;\n        this.order = order;\n    }\n\n    toString() {\n        let res = this.property;\n        if (!Utils.isNullOrUndefined(this.order)) {\n            res += ' ' + Order[this.order].toLowerCase();\n        }\n        return res;\n    }\n}\n","import { FilterString } from './filter/filter-string';\nimport { Filter } from './filter/filter';\nimport { Expand } from './expand';\nimport { Utils } from '../utils/utils';\nimport { Orderby } from './orderby';\nimport { Search } from './search/search';\n\nexport class QueryOptions {\n  private separatorVar: string;\n  private selectVar: string[];\n  private filterVar: Filter;\n  private expandVar: Expand[];\n  private orderbyVar: Orderby[];\n  private searchVar: string | Search;\n  private skipVar: number;\n  private topVar: number;\n  private countVar: boolean;\n  private customOptionsVar: Map<string, string>;\n  private formatVar: string;\n\n  constructor(separator: string) {\n    Utils.requireNotNullNorUndefined(separator, 'separator');\n    Utils.requireNotEmpty(separator, 'separator');\n    this.separatorVar = separator;\n    this.selectVar = null;\n    this.filterVar = null;\n    this.expandVar = null;\n    this.orderbyVar = null;\n    this.searchVar = null;\n    this.skipVar = null;\n    this.topVar = null;\n    this.countVar = null;\n    this.customOptionsVar = null;\n    this.formatVar = null;\n  }\n\n  select(select: string | string[]): QueryOptions {\n    if (Utils.isNullOrUndefined(select) || Utils.isEmpty(select)) {\n      this.selectVar = null;\n    } else {\n      this.selectVar = typeof (select) === 'string' ? [select] : select;\n    }\n    return this;\n  }\n\n  filter(filter: string | Filter): QueryOptions {\n    if (Utils.isNullOrUndefined(filter) || Utils.isEmpty(filter)) {\n      this.filterVar = null;\n    } else {\n      this.filterVar = typeof (filter) === 'string' ? new FilterString(filter) : filter;\n    }\n    return this;\n  }\n\n  expand(expand: string | Expand | Expand[]): QueryOptions {\n    if (Utils.isNullOrUndefined(expand) || Utils.isEmpty(expand)) {\n      this.expandVar = null;\n    } else {\n      this.expandVar = typeof (expand) === 'string' ? [new Expand(expand)] : expand instanceof Expand ? [expand] : expand;\n    }\n    return this;\n  }\n\n  orderby(orderby: string | Orderby[]): QueryOptions {\n    if (Utils.isNullOrUndefined(orderby) || Utils.isEmpty(orderby)) {\n      this.orderbyVar = null;\n    } else {\n      this.orderbyVar = typeof (orderby) === 'string' ? [new Orderby(orderby)] : orderby;\n    }\n    return this;\n  }\n\n  search(search: string | Search): QueryOptions {\n    this.searchVar = search;\n    return this;\n  }\n\n  skip(skip: number): QueryOptions {\n    Utils.requireNotNegative(skip, 'skip');\n    this.skipVar = skip;\n    return this;\n  }\n\n  top(top: number): QueryOptions {\n    Utils.requireNotNegative(top, 'top');\n    this.topVar = top;\n    return this;\n  }\n\n  count(count: boolean): QueryOptions {\n    this.countVar = count;\n    return this;\n  }\n\n  format(format: string): QueryOptions {\n    this.formatVar = format;\n    return this;\n  }\n\n  customOption(key: string, value: string) {\n    Utils.requireNotNullNorUndefined(key, 'key');\n    if (Utils.isNullOrUndefined(this.customOptionsVar)) {\n      this.customOptionsVar = new Map<string, string>();\n    }\n    this.customOptionsVar.set(key, value);\n    return this;\n  }\n\n  toString(): string {\n    // query options\n    let queryOptions = '';\n\n    // add select\n    if (!Utils.isNullOrUndefined(this.selectVar) && !Utils.isEmpty(this.selectVar)) {\n      queryOptions += '$select=';\n      if (typeof (this.selectVar) === 'string') {\n        queryOptions += this.selectVar;\n      } else {\n        queryOptions += Utils.toString(this.selectVar);\n      }\n    }\n\n    // add filter\n    if (!Utils.isNullOrUndefined(this.filterVar) && !Utils.isEmpty(this.filterVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$filter=' + encodeURIComponent(this.filterVar.toString());\n    }\n\n    // add expand\n    if (!Utils.isNullOrUndefined(this.expandVar) && !Utils.isEmpty(this.expandVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$expand=';\n      if (typeof (this.expandVar) === 'string') {\n        queryOptions += this.expandVar;\n      } else {\n        queryOptions += Utils.toString(this.expandVar);\n      }\n    }\n\n    // add orderby\n    if (!Utils.isNullOrUndefined(this.orderbyVar) && !Utils.isEmpty(this.orderbyVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$orderby=';\n      if (typeof (this.orderbyVar) === 'string') {\n        queryOptions += this.orderbyVar;\n      } else {\n        queryOptions += Utils.toString(this.orderbyVar);\n      }\n    }\n\n    // add search\n    if (!Utils.isNullOrUndefined(this.searchVar) && !Utils.isEmpty(this.searchVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$search=' + encodeURIComponent(this.searchVar.toString());\n    }\n\n    // add skip\n    if (!Utils.isNullOrUndefined(this.skipVar) && !Utils.isEmpty(this.skipVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$skip=' + this.skipVar;\n    }\n\n    // add top\n    if (!Utils.isNullOrUndefined(this.topVar) && !Utils.isEmpty(this.topVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$top=' + this.topVar;\n    }\n\n    // add count\n    if (!Utils.isNullOrUndefined(this.countVar) && !Utils.isEmpty(this.countVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$count=' + this.countVar;\n    }\n\n    // add custom query options\n    if (Utils.isNotNullNorUndefined(this.customOptionsVar) && this.customOptionsVar.size > 0) {\n      this.customOptionsVar.forEach((value: string, key: string, map: Map<string, string>) => {\n        if (Utils.isNotNullNorUndefined(key) && !Utils.isEmpty(key)\n          && Utils.isNotNullNorUndefined(value) && !Utils.isEmpty(value)) {\n          if (queryOptions.length) {\n            queryOptions += this.separatorVar;\n          }\n          queryOptions += key + '=' + encodeURIComponent(value);\n        }\n      });\n    }\n\n    // add format\n    if (!Utils.isNullOrUndefined(this.formatVar) && !Utils.isEmpty(this.formatVar)) {\n      if (queryOptions.length) {\n        queryOptions += this.separatorVar;\n      }\n      queryOptions += '$format=' + this.formatVar;\n    }\n\n    return queryOptions;\n  }\n\n  isEmpty(): boolean {\n    for (const key in this) {\n      if (key === 'purposeVar' || key === 'separatorVar') {\n        continue;\n      }\n      if (this.hasOwnProperty(key) && !Utils.isEmpty(this[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n","import { Observable } from 'rxjs';\n\nimport { ODataResponse } from '../odata-response/odata-response';\nimport { HttpOptionsI } from '../odata-service/http-options';\nimport { ODataService } from '../odata-service/odata.service';\nimport { Expand } from '../query-options/expand';\nimport { Filter } from '../query-options/filter/filter';\nimport { Orderby } from '../query-options/orderby';\nimport { QueryOptions } from '../query-options/query-options';\nimport { Search } from '../query-options/search/search';\nimport { Utils } from '../utils/utils';\nimport { ODataQueryAbstract } from './odata-query-abstract';\nimport { ODataQueryBatch } from './odata-query-batch';\n\nexport class ODataQuery extends ODataQueryAbstract {\n  // QUERY OPTIONS SEPARATOR\n  static readonly SEPARATOR = '&';\n\n  // SEGMENT NAMES\n  private static readonly METADATA = 'metadata';\n  private static readonly ENTITY_SET = 'entitySet';\n  private static readonly ENTITY_KEY = 'entityKey';\n  private static readonly SINGLETON = 'singleton';\n  private static readonly TYPE_NAME = 'typeName';\n  private static readonly PROPERTY = 'property';\n  private static readonly NAVIGATION_PROPERTY = 'navigationProperty';\n  private static readonly REF = 'ref';\n  private static readonly VALUE = 'value';\n  private static readonly COUNT = 'count';\n  private static readonly FUNCTION_CALL = 'functionCall';\n  private static readonly ACTION_CALL = 'actionCall';\n\n  // CONSTANT SEGMENTS\n  private static readonly $METADATA = '$metadata';\n  private static readonly $REF = '$ref';\n  private static readonly $VALUE = '$value';\n  private static readonly $COUNT = '$count';\n\n  // VARIABLES\n  private queryOptions: QueryOptions;\n  private segments: string[];\n  private lastSegment: string;\n\n  constructor(odataService: ODataService, serviceRoot: string) {\n    super(odataService, serviceRoot);\n    Utils.requireNotNullNorUndefined(odataService, 'odataService');\n    Utils.requireNotNullNorUndefined(serviceRoot, 'serviceRoot');\n    Utils.requireNotEmpty(serviceRoot, 'serviceRoot');\n    this.queryOptions = new QueryOptions(ODataQuery.SEPARATOR);\n    this.segments = [];\n    this.lastSegment = null;\n  }\n\n  // QUERY SEGMENTS\n\n  metadata(): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.METADATA), ODataQuery.METADATA);\n    if (this.segments.length) {\n      throw new Error('metadata segment cannot be appended to other segments');\n    }\n    this.queryString = Utils.appendSegment(this.queryString, ODataQuery.$METADATA);\n    this.addSegment(ODataQuery.METADATA);\n    return this;\n  }\n\n  entitySet(entitySet: string): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.ENTITY_SET), ODataQuery.ENTITY_SET);\n    Utils.requireNotNullNorUndefined(entitySet, 'entitySet');\n    Utils.requireNotEmpty(entitySet, 'entitySet');\n    this.queryString = Utils.appendSegment(this.queryString, entitySet);\n    this.addSegment(ODataQuery.ENTITY_SET);\n    return this;\n  }\n\n  entityKey(entityKey: any | any[]): ODataQuery {\n    if (this.lastSegment !== ODataQuery.ENTITY_SET && this.lastSegment !== ODataQuery.NAVIGATION_PROPERTY) {\n      throw new Error('entityKey can only be appended to entitySet or navigationProperty');\n    }\n    Utils.requireNotNullNorUndefined(entityKey, 'entityKey');\n    Utils.requireNotEmpty(entityKey, 'entityKey');\n    entityKey = Utils.getValueURI(entityKey, true);\n    this.queryString = Utils.removeEndingSeparator(this.queryString) + '(' + entityKey + ')';\n    this.addSegment(ODataQuery.ENTITY_KEY);\n    return this;\n  }\n\n  singleton(singleton: string) {\n    if (this.segments.length) {\n      throw new Error('singleton segment cannot be appended to other segments');\n    }\n    Utils.requireNotNullNorUndefined(singleton, 'singleton');\n    Utils.requireNotEmpty(singleton, 'singleton');\n    this.queryString = Utils.appendSegment(this.queryString, singleton);\n    this.addSegment(ODataQuery.SINGLETON);\n    return this;\n  }\n\n  typeName(typeName: string) {\n    if (this.lastSegment !== ODataQuery.ENTITY_SET && this.lastSegment !== ODataQuery.NAVIGATION_PROPERTY && this.lastSegment !== ODataQuery.ENTITY_KEY) {\n      throw new Error('typeName can only be appended to entitySet, navigationProperty or entityKey');\n    }\n    Utils.requireNotNullNorUndefined(typeName, 'typeName');\n    Utils.requireNotEmpty(typeName, 'typeName');\n    this.queryString = Utils.appendSegment(this.queryString, typeName);\n    this.addSegment(ODataQuery.TYPE_NAME);\n    return this;\n  }\n\n  property(property: string): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.PROPERTY), ODataQuery.PROPERTY);\n    if (this.lastSegment !== ODataQuery.ENTITY_KEY && this.lastSegment !== ODataQuery.SINGLETON) {\n      throw new Error('property can only be appended to entityKey or singleton');\n    }\n    Utils.requireNotNullNorUndefined(property, 'property');\n    Utils.requireNotEmpty(property, 'property');\n    this.queryString = Utils.appendSegment(this.queryString, property);\n    this.addSegment(ODataQuery.PROPERTY);\n    return this;\n  }\n\n  navigationProperty(navigationProperty: string): ODataQuery {\n    if (this.lastSegment !== ODataQuery.ENTITY_KEY && this.lastSegment !== ODataQuery.SINGLETON && this.lastSegment !== ODataQuery.TYPE_NAME) {\n      throw new Error('navigationProperty can only be appended to entityKey, singleton or typeName');\n    }\n    Utils.requireNotNullNorUndefined(navigationProperty, 'navigationProperty');\n    Utils.requireNotEmpty(navigationProperty, 'navigationProperty');\n    this.queryString = Utils.appendSegment(this.queryString, navigationProperty);\n    this.addSegment(ODataQuery.NAVIGATION_PROPERTY);\n    return this;\n  }\n\n  ref(): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.REF), ODataQuery.REF);\n    if (this.lastSegment !== ODataQuery.NAVIGATION_PROPERTY) {\n      throw new Error('ref can only be appended to navigationProperty');\n    }\n    this.queryString = Utils.appendSegment(this.queryString, ODataQuery.$REF);\n    this.addSegment(ODataQuery.REF);\n    return this;\n  }\n\n  value(): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.VALUE), ODataQuery.VALUE);\n    if (this.lastSegment !== ODataQuery.PROPERTY) {\n      throw new Error('value can only be appended to property');\n    }\n    this.queryString = Utils.appendSegment(this.queryString, ODataQuery.$VALUE);\n    this.addSegment(ODataQuery.VALUE);\n    return this;\n  }\n\n  countSegment(): ODataQuery {\n    Utils.requireNullOrUndefined(this.getSegment(ODataQuery.COUNT), ODataQuery.COUNT);\n    if (this.lastSegment !== ODataQuery.ENTITY_SET && this.lastSegment !== ODataQuery.NAVIGATION_PROPERTY) {\n      throw new Error('count can only be appended to entitySet or navigationProperty');\n    }\n    this.queryString = Utils.appendSegment(this.queryString, ODataQuery.$COUNT);\n    this.addSegment(ODataQuery.COUNT);\n    return this;\n  }\n\n  functionCall(functionCall: string): ODataQuery {\n    Utils.requireNotNullNorUndefined(functionCall, 'functionCall');\n    Utils.requireNotEmpty(functionCall, 'functionCall');\n    this.queryString = Utils.appendSegment(this.queryString, functionCall);\n    this.addSegment(ODataQuery.FUNCTION_CALL);\n    return this;\n  }\n\n  actionCall(actionCall: string): ODataQuery {\n    Utils.requireNotNullNorUndefined(actionCall, 'actionCall');\n    Utils.requireNotEmpty(actionCall, 'actionCall');\n    this.queryString = Utils.appendSegment(this.queryString, actionCall);\n    this.addSegment(ODataQuery.ACTION_CALL);\n    return this;\n  }\n\n  batch(): ODataQueryBatch {\n    return new ODataQueryBatch(this.odataService, this.serviceRoot);\n  }\n\n  // QUERY OPTIONS\n\n  select(select: string | string[]): ODataQuery {\n    this.queryOptions.select(select);\n    return this;\n  }\n\n  filter(filter: string | Filter): ODataQuery {\n    this.queryOptions.filter(filter);\n    return this;\n  }\n\n  expand(expand: string | Expand | Expand[]): ODataQuery {\n    this.queryOptions.expand(expand);\n    return this;\n  }\n\n  orderby(orderby: string | Orderby[]): ODataQuery {\n    this.queryOptions.orderby(orderby);\n    return this;\n  }\n\n  search(search: string | Search): ODataQuery {\n    this.queryOptions.search(search);\n    return this;\n  }\n\n  skip(skip: number): ODataQuery {\n    this.queryOptions.skip(skip);\n    return this;\n  }\n\n  top(top: number): ODataQuery {\n    this.queryOptions.top(top);\n    return this;\n  }\n\n  countOption(count: boolean): ODataQuery {\n    this.queryOptions.count(count);\n    return this;\n  }\n\n  customOption(key: string, value: string) {\n    this.queryOptions.customOption(key, value);\n    return this;\n  }\n\n  format(format: string): ODataQuery {\n    this.queryOptions.format(format);\n    return this;\n  }\n\n  // QUERY EXECUTION\n\n  get(httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    return this.odataService.get(this, httpOptions);\n  }\n\n  post(body: any, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    return this.odataService.post(this, body, httpOptions);\n  }\n\n  patch(body: any, etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    return this.odataService.patch(this, body, etag, httpOptions);\n  }\n\n  put(body: any, etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    return this.odataService.put(this, body, etag, httpOptions);\n  }\n\n  delete(etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\n    return this.odataService.delete(this, etag, httpOptions);\n  }\n\n  toString(): string {\n    let res: string = this.queryString;\n    if (Utils.isNotNullNorUndefined(this.queryOptions) && !this.queryOptions.isEmpty()) {\n      res += '?' + this.queryOptions.toString();\n    }\n    return res;\n  }\n\n  protected getSegment(segment: string): string {\n    Utils.requireNotNull(segment, 'segment');\n    const res: string = this.segments.find((value: string, index: number, segments: string[]) => {\n      return value === segment;\n    });\n    return res;\n  }\n\n  protected addSegment(segment: string): void {\n    Utils.requireNotNull(segment, 'segment');\n    this.segments.push(segment);\n    if (Utils.isNotNullNorUndefined(this.segments) && this.segments.length) {\n      this.lastSegment = this.segments[this.segments.length - 1];\n    }\n  }\n}\n","export class CsdlAnnotable {\n    constructor(public annotationList?: CsdlAnnotation[]) { }\n}\n\nexport class CsdlAnnotations extends CsdlAnnotable {\n    constructor(\n        public target: string,\n        annotationList: CsdlAnnotation[],\n        public qualifier?: string\n    ) {\n        super(annotationList);\n    }\n}\n\nexport class CsdlAnnotation {\n    constructor(\n        public term: string,\n        public qualifier?: string\n    ) { }\n}\n\nexport class CsdlTerm {\n    constructor(\n        public name: string,\n        public type: string,\n        public baseTerm?: string,\n        public defaultValue?: string,\n        public appliesTo?: string,\n        public nullable?: boolean,\n        public maxLength?: number,\n        public precision?: number,\n        public scale?: number,\n        public srid?: string\n    ) { }\n}\n","import { CsdlEntitySet } from './csdl-entity-set';\nimport { CsdlSingleton } from './csdl-singleton';\nimport { CsdlFunctionImport, CsdlActionImport } from './csdl-function-action';\n\nexport class CsdlEntityContainer {\n    constructor(\n        public name: string,\n        public extend?: string,\n        public entitySets?: CsdlEntitySet[],\n        public singletons?: CsdlSingleton[],\n        public functionImports?: CsdlFunctionImport[],\n        public actionImports?: CsdlActionImport[]\n    ) { }\n}\n","import { CsdlNavigationPropertyBinding } from './csdl-navigation-property-binding';\n\nexport class CsdlEntitySet {\n    constructor(\n        public name: string,\n        public entityType: string,\n        public navigationPropertyBinding?: CsdlNavigationPropertyBinding[],\n        public includeInServiceDocument?: boolean\n    ) {\n\n    }\n}\n","export class CsdlEnumType {\n    constructor(\n        public name: string,\n        public members: CsdlEnumMember[],\n        public underlyingType?: string,\n        public isFlags?: boolean\n    ) { }\n}\n\nexport class CsdlEnumMember {\n    constructor(\n        public name: string,\n        public value?: number\n    ) { }\n}\n","export class CsdlFunction {\n    constructor(\n        public name: string,\n        public returnType: CsdlReturnType,\n        public isBound?: boolean,\n        public entitySetPath?: string,\n        public isComposable?: boolean,\n        public parameters?: CsdlParameter[]\n    ) { }\n}\n\nexport class CsdlAction {\n    constructor(\n        public name: string,\n        public returnType?: CsdlReturnType,\n        public isBound?: boolean,\n        public entitySetPath?: string,\n        public parameters?: CsdlParameter[]\n    ) { }\n}\n\nexport class CsdlFunctionImport {\n    constructor(\n        public name: string,\n        public functionName: string,\n        public entitySet?: string,\n        public IncludeInServiceDocument?: boolean\n    ) { }\n}\n\nexport class CsdlActionImport {\n    constructor(\n        public name: string,\n        public action: string,\n        public entitySet?: string\n    ) { }\n}\n\nexport class CsdlParameter {\n    constructor(\n        public name: string,\n        public type: string,\n        public nullable?: boolean,\n        public maxLength?: number,\n        public precision?: number,\n        public scale?: number,\n        public srid?: string\n    ) { }\n}\n\nexport class CsdlReturnType {\n    constructor(\n        public type: string,\n        public nullable?: boolean,\n        public maxLength?: number,\n        public precision?: number,\n        public scale?: number,\n        public srid?: string\n    ) { }\n}\n","export class CsdlNavigationPropertyBinding {\n    constructor(\n        public path: string,\n        public target: string,\n    ) { }\n}\n","import { CsdlAnnotable, CsdlAnnotation } from './csdl-annotation';\n\nexport class CsdlReference extends CsdlAnnotable {\n    constructor(\n        public uri: string,\n        public includes?: CsdlInclude[],\n        public includeAnnotations?: CsdlIncludeAnnotations[],\n        annotationList?: CsdlAnnotation[]\n    ) {\n        super(annotationList);\n    }\n}\n\nexport class CsdlInclude {\n    constructor(\n        public namespace: string,\n        public alias?: string\n    ) { }\n}\n\nexport class CsdlIncludeAnnotations {\n    constructor(\n        public termNamespace: string,\n        public qualifier?: string,\n        public targetNamespace?: string\n    ) { }\n}\n","import { CsdlAnnotation, CsdlAnnotable, CsdlTerm, CsdlAnnotations } from './csdl-annotation';\nimport { CsdlTypeDefinition } from './csdl-type-definition';\nimport { CsdlEnumType } from './csdl-enum-type';\nimport { CsdlEntityType, CsdlComplexType } from './csdl-structured-type';\nimport { CsdlFunction, CsdlAction } from './csdl-function-action';\nimport { CsdlEntityContainer } from './csdl-entity-container';\n\nexport class CsdlSchema extends CsdlAnnotable {\n    constructor(\n        public namespace: string,\n        public alias?: string,\n        public enumTypes?: CsdlEnumType[],\n        public complexTypes?: CsdlComplexType[],\n        public entityTypes?: CsdlEntityType[],\n        public functions?: CsdlFunction[],\n        public actions?: CsdlAction[],\n        public entityContainer?: CsdlEntityContainer,\n        public typeDefinitions?: CsdlTypeDefinition[],\n        public terms?: CsdlTerm[],\n        public annotationsList?: CsdlAnnotations[],\n        annotationList?: CsdlAnnotation[]\n    ) {\n        super(annotationList);\n    }\n}\n","import { CsdlNavigationPropertyBinding } from './csdl-navigation-property-binding';\n\nexport class CsdlSingleton {\n    constructor(\n        public name: string,\n        public type: string,\n        public navigationPropertyBindings?: CsdlNavigationPropertyBinding[]\n    ) { }\n}\n","export abstract class CsdlStructuralProperty {\n    constructor(\n        public name: string,\n        public type: string,\n        public nullable?: boolean\n    ) { }\n}\n\nexport class CsdlProperty extends CsdlStructuralProperty {\n    constructor(\n        name: string,\n        type: string,\n        nullable?: boolean,\n        public maxLength?: number,\n        public precision?: number,\n        public scale?: number,\n        public unicode?: boolean,\n        public srid?: string,\n        public defaultValue?: string\n    ) {\n        super(name, type, nullable);\n    }\n}\n\nexport class CsdlNavigationProperty extends CsdlStructuralProperty {\n    constructor(\n        name: string,\n        type: string,\n        nullable?: boolean,\n        public partner?: string,\n        public containsTarget?: boolean,\n        public referentialConstraints?: CsdlReferentialConstraint[],\n        public onDelete?: CsdlOnDelete,\n    ) {\n        super(name, type, nullable);\n    }\n}\n\nexport class CsdlReferentialConstraint {\n    constructor(\n        public property: string,\n        public referencedProperty: string\n    ) { }\n}\n\nexport class CsdlOnDelete {\n    constructor(\n        public action: string\n    ) { }\n}\n","import { CsdlProperty, CsdlNavigationProperty } from './csdl-structural-property';\n\nexport class CsdlStructuredType {\n    constructor(\n        public name: string,\n        public properties?: CsdlProperty[],\n        public navigationProperties?: CsdlNavigationProperty[],\n        public baseType?: string,\n        public openType?: boolean,\n        public abstract?: boolean\n    ) { }\n}\n\nexport class CsdlComplexType extends CsdlStructuredType {\n    constructor(\n        name: string,\n        properties?: CsdlProperty[],\n        navigationProperties?: CsdlNavigationProperty[],\n        baseType?: string,\n        openType?: boolean,\n        abstract?: boolean\n    ) {\n        super(name, properties, navigationProperties, baseType, openType, abstract);\n    }\n}\n\nexport class CsdlEntityType extends CsdlStructuredType {\n    constructor(\n        name: string,\n        public key?: CsdlKey,\n        properties?: CsdlProperty[],\n        navigationProperties?: CsdlNavigationProperty[],\n        baseType?: string,\n        openType?: boolean,\n        abstract?: boolean,\n        public hasStream?: boolean\n    ) {\n        super(name, properties, navigationProperties, baseType, openType, abstract);\n    }\n}\n\nexport class CsdlKey {\n    constructor(\n        public propertyRefs: CsdlPropertyRef[],\n    ) { }\n}\n\nexport class CsdlPropertyRef {\n    constructor(\n        public name: string,\n        public alias?: string\n    ) { }\n}\n","import { CsdlAnnotable, CsdlAnnotation } from './csdl-annotation';\n\nexport class CsdlTypeDefinition extends CsdlAnnotable {\n    constructor(\n        public name: string,\n        public underlayingType: string,\n        public maxLength?: number,\n        public precision?: number,\n        public scale?: number,\n        public unicode?: boolean,\n        public srid?: string,\n        annotationList?: CsdlAnnotation[]) {\n        super(annotationList);\n    }\n}\n","import { Utils } from '../utils/utils';\nexport class EntitySet<T> {\n    private entities: T[];\n    private count: number;\n\n    constructor(entities: T[], count: number, type: (new () => T)) {\n        Utils.requireNotNullNorUndefined(entities, 'entities');\n        this.entities = [];\n        entities.forEach(entity => {\n            if (Utils.isNullOrUndefined(type)) {\n                this.entities.push(Object.assign({}, entity));\n            } else {\n                this.entities.push(Object.assign(new type(), entity));\n            }\n        });\n        this.count = count;\n    }\n\n    getEntities(): T[] {\n        return this.entities;\n    }\n\n    getCount(): number {\n        return this.count;\n    }\n}\n","import { CsdlTypeDefinition } from './csdl/csdl-type-definition';\nimport { CsdlSchema } from './csdl/csdl-schema';\nimport { Utils } from '../utils/utils';\nimport { CsdlEnumType, CsdlEnumMember } from './csdl/csdl-enum-type';\nimport { CsdlEntityType, CsdlPropertyRef, CsdlKey, CsdlComplexType } from './csdl/csdl-structured-type';\nimport { CsdlFunction, CsdlParameter, CsdlFunctionImport, CsdlActionImport, CsdlReturnType, CsdlAction } from './csdl/csdl-function-action';\nimport { CsdlProperty, CsdlNavigationProperty, CsdlReferentialConstraint, CsdlOnDelete } from './csdl/csdl-structural-property';\nimport { CsdlEntitySet } from './csdl/csdl-entity-set';\nimport { CsdlSingleton } from './csdl/csdl-singleton';\nimport { CsdlEntityContainer } from './csdl/csdl-entity-container';\nimport { CsdlReference, CsdlInclude, CsdlIncludeAnnotations } from './csdl/csdl-reference';\nimport { CsdlAnnotation, CsdlTerm, CsdlAnnotations } from './csdl/csdl-annotation';\nimport { CsdlNavigationPropertyBinding } from './csdl/csdl-navigation-property-binding';\n\nexport enum FieldType {\n    ATTRIBUTE, TAG\n}\nexport class Field {\n    constructor(public name: string, public fieldType: FieldType) { }\n}\n\nexport class Metadata {\n    // TAGS\n    private static readonly TAG_EDMX = 'edmx:Edmx';\n    private static readonly TAG_DATA_SERVICES = 'edmx:DataServices';\n    private static readonly TAG_REFERENCE = 'edmx:Reference';\n    private static readonly TAG_INCLUDE = 'edmx:Include';\n    private static readonly TAG_INCLUDE_ANNOTATIONS = 'edmx:IncludeAnnotations';\n    private static readonly TAG_TERM = 'Term';\n    private static readonly TAG_ANNOTATIONS = 'Annotations';\n    private static readonly TAG_ANNOTATION = 'Annotation';\n    private static readonly TAG_SCHEMA = 'Schema';\n    private static readonly TAG_ENUM_TYPE = 'EnumType';\n    private static readonly TAG_MEMBER = 'Member';\n    private static readonly TAG_COMPLEX_TYPE = 'ComplexType';\n    private static readonly TAG_ENTITY_TYPE = 'EntityType';\n    private static readonly TAG_PROPERTY = 'Property';\n    private static readonly TAG_KEY = 'Key';\n    private static readonly TAG_PROPERTY_REF = 'PropertyRef';\n    private static readonly TAG_NAVIGATION_PROPERTY = 'NavigationProperty';\n    private static readonly TAG_REFERENTIAL_CONSTRAINT = 'ReferentialConstraint';\n    private static readonly TAG_ON_DELETE = 'OnDelete';\n    private static readonly TAG_FUNCTION = 'Function';\n    private static readonly TAG_RETURN_TYPE = 'ReturnType';\n    private static readonly TAG_PARAMETER = 'Parameter';\n    private static readonly TAG_ACTION = 'Action';\n    private static readonly TAG_ENTITY_CONTAINER = 'EntityContainer';\n    private static readonly TAG_ENTITY_SET = 'EntitySet';\n    private static readonly TAG_SINGLETON = 'Singleton';\n    private static readonly TAG_FUNCTION_IMPORT = 'FunctionImport';\n    private static readonly TAG_ACTION_IMPORT = 'ActionImport';\n    private static readonly TAG_NAVIGATION_PROPERTY_BINDING = 'NavigationPropertyBinding';\n    private static readonly TAG_TYPE_DEFINITION = 'TypeDefinition';\n\n    // ATTRIBUTES\n    private static readonly ATTRIBUTE_VERSION = 'Version';\n    private static readonly ATTRIBUTE_URI = 'Uri';\n    private static readonly ATTRIBUTE_ALIAS = 'Alias';\n    private static readonly ATTRIBUTE_NAMESPACE = 'Namespace';\n    private static readonly ATTRIBUTE_TERM_NAMESPACE = 'TermNamespace';\n    private static readonly ATTRIBUTE_QUALIFIER = 'Qualifier';\n    private static readonly ATTRIBUTE_TARGET_NAMESPACE = 'TargetNamespace';\n    private static readonly ATTRIBUTE_TERM = 'Term';\n    private static readonly ATTRIBUTE_NAME = 'Name';\n    private static readonly ATTRIBUTE_VALUE = 'Value';\n    private static readonly ATTRIBUTE_BASE_TYPE = 'BaseType';\n    private static readonly ATTRIBUTE_OPEN_TYPE = 'OpenType';\n    private static readonly ATTRIBUTE_TYPE = 'Type';\n    private static readonly ATTRIBUTE_NULLABLE = 'Nullable';\n    private static readonly ATTRIBUTE_MAX_LENGTH = 'MaxLength';\n    private static readonly ATTRIBUTE_PRECISION = 'Precision';\n    private static readonly ATTRIBUTE_SCALE = 'Scale';\n    private static readonly ATTRIBUTE_UNICODE = 'Unicode';\n    private static readonly ATTRIBUTE_SRID = 'SRID';\n    private static readonly ATTRIBUTE_DEFAULT_VALUE = 'DefaultValue';\n    private static readonly ATTRIBUTE_PARTNER = 'Partner';\n    private static readonly ATTRIBUTE_PROPERTY = 'Property';\n    private static readonly ATTRIBUTE_REFERENCED_PROPERTY = 'ReferencedProperty';\n    private static readonly ATTRIBUTE_HAS_STREAM = 'HasStream';\n    private static readonly ATTRIBUTE_CONTAINS_TARGET = 'ContainsTarget';\n    private static readonly ATTRIBUTE_IS_BOUND = 'IsBound';\n    private static readonly ATTRIBUTE_ENTITY_SET_PATH = 'EntitySetPath';\n    private static readonly ATTRIBUTE_IS_COMPOSABLE = 'IsComposable';\n    private static readonly ATTRIBUTE_ENTITY_TYPE = 'EntityType';\n    private static readonly ATTRIBUTE_PATH = 'Path';\n    private static readonly ATTRIBUTE_TARGET = 'Target';\n    private static readonly ATTRIBUTE_FUNCTION = 'Function';\n    private static readonly ATTRIBUTE_ACTION = 'Action';\n    private static readonly ATTRIBUTE_ENTITY_SET = 'EntitySet';\n    private static readonly ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT = 'IncludeInServiceDocument';\n    private static readonly ATTRIBUTE_ABSTRACT = 'Abstract';\n    private static readonly ATTRIBUTE_UNDERLYING_TYPE = 'UnderlyingType';\n    private static readonly ATTRIBUTE_IS_FLAGS = 'IsFlags';\n    private static readonly ATTRIBUTE_EXTENDS = 'Extends';\n    private static readonly ATTRIBUTE_BASE_TERM = 'BaseTerm';\n    private static readonly ATTRIBUTE_APPLIES_TO = 'AppliesTo';\n\n    public readonly version: string;\n    public readonly references: CsdlReference[];\n    public readonly schemas: CsdlSchema[];\n\n    constructor(xml: string) {\n        try {\n            const parser: DOMParser = new DOMParser();\n            const document: Document = parser.parseFromString(xml, 'text/xml');\n\n            this.checkVersion(document);\n\n            this.version = this.getFieldValueByAttribute(\n                new Field(Metadata.ATTRIBUTE_VERSION, FieldType.ATTRIBUTE),\n                document.documentElement.attributes);\n\n            this.references = this.getObjects(document.documentElement, Metadata.TAG_REFERENCE, [\n                new Field(Metadata.ATTRIBUTE_URI, FieldType.ATTRIBUTE),\n                new Field(Metadata.TAG_INCLUDE, FieldType.TAG),\n                new Field(Metadata.TAG_INCLUDE_ANNOTATIONS, FieldType.TAG),\n                new Field(Metadata.TAG_ANNOTATION, FieldType.TAG)\n            ]);\n\n            const dataServices: Element = document.documentElement.getElementsByTagName(Metadata.TAG_DATA_SERVICES)[0];\n            this.schemas = this.getObjects(dataServices, Metadata.TAG_SCHEMA, [\n                new Field(Metadata.ATTRIBUTE_NAMESPACE, FieldType.ATTRIBUTE),\n                new Field(Metadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE),\n                new Field(Metadata.TAG_ENUM_TYPE, FieldType.TAG),\n                new Field(Metadata.TAG_COMPLEX_TYPE, FieldType.TAG),\n                new Field(Metadata.TAG_ENTITY_TYPE, FieldType.TAG),\n                new Field(Metadata.TAG_FUNCTION, FieldType.TAG),\n                new Field(Metadata.TAG_ACTION, FieldType.TAG),\n                new Field(Metadata.TAG_ENTITY_CONTAINER, FieldType.TAG),\n                new Field(Metadata.TAG_TYPE_DEFINITION, FieldType.TAG),\n                new Field(Metadata.TAG_TERM, FieldType.TAG),\n                new Field(Metadata.TAG_ANNOTATIONS, FieldType.TAG),\n                new Field(Metadata.TAG_ANNOTATION, FieldType.TAG)\n            ]);\n        } catch (error) {\n            throw new Error('Unable to parse metadata, ' + error);\n        }\n    }\n\n    protected checkVersion(document: Document) {\n        // check version\n        const attributes: NamedNodeMap = document.documentElement.attributes;\n        if (Utils.isNullOrUndefined(attributes)) {\n            throw new Error('OData version is not specified in the metadata');\n        }\n        const attr: Attr = attributes.getNamedItem('Version');\n        if (Utils.isNullOrUndefined(attr)) {\n            throw new Error('OData version is not specified in the metadata');\n        }\n        const odataVersion: string = attr.nodeValue;\n        if (odataVersion !== '4.0') {\n            throw new Error('OData version \"' + odataVersion + '\" is not supported');\n        }\n    }\n\n    protected getObjects(parentElement: Element, tag: string, fieldNames: Field[]): any[] {\n        let objects: any[];\n\n        const children: HTMLCollection = parentElement.children;\n        for (let index = 0; index < children.length; index++) {\n            const element: Element = children.item(index);\n\n            if (element.nodeName !== tag) {\n                continue;\n            }\n\n            const attributes: NamedNodeMap = element.attributes;\n            const fieldValues: any[] = this.getFieldValues(fieldNames, attributes, element);\n            if (Utils.isNullOrUndefined(objects)) {\n                objects = [];\n            }\n            switch (tag) {\n                case Metadata.TAG_REFERENCE:\n                    objects.push(new CsdlReference(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3]));\n                    break;\n                case Metadata.TAG_INCLUDE:\n                    objects.push(new CsdlInclude(\n                        fieldValues[0],\n                        fieldValues[1]));\n                    break;\n                case Metadata.TAG_INCLUDE_ANNOTATIONS:\n                    objects.push(new CsdlIncludeAnnotations(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2]));\n                    break;\n                case Metadata.TAG_TERM:\n                    objects.push(new CsdlTerm(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6],\n                        fieldValues[7],\n                        fieldValues[8],\n                        fieldValues[9]\n                    ));\n                    break;\n                case Metadata.TAG_ANNOTATIONS:\n                    objects.push(new CsdlAnnotations(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2]\n                    ));\n                    break;\n                case Metadata.TAG_ANNOTATION:\n                    objects.push(new CsdlAnnotation(\n                        fieldValues[0],\n                        fieldValues[1]\n                    ));\n                    break;\n                case Metadata.TAG_SCHEMA:\n                    objects.push(new CsdlSchema(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6],\n                        fieldValues[7],\n                        fieldValues[8],\n                        fieldValues[9],\n                        fieldValues[10],\n                        fieldValues[11]));\n                    break;\n                case Metadata.TAG_ENUM_TYPE:\n                    objects.push(new CsdlEnumType(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3]));\n                    break;\n                case Metadata.TAG_COMPLEX_TYPE:\n                    objects.push(new CsdlComplexType(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5]));\n                    break;\n                case Metadata.TAG_ENTITY_TYPE:\n                    objects.push(new CsdlEntityType(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6],\n                        fieldValues[7]));\n                    break;\n                case Metadata.TAG_FUNCTION:\n                    objects.push(new CsdlFunction(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5]));\n                    break;\n                case Metadata.TAG_MEMBER:\n                    objects.push(new CsdlEnumMember(\n                        fieldValues[0],\n                        fieldValues[1]));\n                    break;\n                case Metadata.TAG_PROPERTY:\n                    objects.push(new CsdlProperty(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6],\n                        fieldValues[7],\n                        fieldValues[8]));\n                    break;\n                case Metadata.TAG_PROPERTY_REF:\n                    objects.push(new CsdlPropertyRef(\n                        fieldValues[0],\n                        fieldValues[1]));\n                    break;\n                case Metadata.TAG_NAVIGATION_PROPERTY:\n                    objects.push(new CsdlNavigationProperty(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6]));\n                    break;\n                case Metadata.TAG_REFERENTIAL_CONSTRAINT:\n                    objects.push(new CsdlReferentialConstraint(\n                        fieldValues[0],\n                        fieldValues[1]));\n                    break;\n                case Metadata.TAG_PARAMETER:\n                    objects.push(new CsdlParameter(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6]));\n                    break;\n                case Metadata.TAG_ACTION:\n                    objects.push(new CsdlAction(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4]));\n                    break;\n                case Metadata.TAG_ENTITY_SET:\n                    objects.push(new CsdlEntitySet(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3]));\n                    break;\n                case Metadata.TAG_SINGLETON:\n                    objects.push(new CsdlSingleton(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2]));\n                    break;\n                case Metadata.TAG_FUNCTION_IMPORT:\n                    objects.push(new CsdlFunctionImport(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3]));\n                    break;\n                case Metadata.TAG_ACTION_IMPORT:\n                    objects.push(new CsdlActionImport(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2]));\n                    break;\n                case Metadata.TAG_NAVIGATION_PROPERTY_BINDING:\n                    objects.push(new CsdlNavigationPropertyBinding(\n                        fieldValues[0],\n                        fieldValues[1]));\n                    break;\n                case Metadata.TAG_TYPE_DEFINITION:\n                    objects.push(new CsdlTypeDefinition(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5],\n                        fieldValues[6],\n                        fieldValues[7]));\n                    break;\n                default: throw new Error('Unknwon tag:' + tag);\n            }\n        }\n\n        return objects;\n    }\n\n    protected getObject(parentElement: Element, tag: string, fieldNames: Field[]): any {\n        let object: any;\n\n        const children: HTMLCollection = parentElement.children;\n        let element: Element;\n        for (let index = 0; index < children.length; index++) {\n            if (children.item(index).nodeName === tag) {\n                if (Utils.isNotNullNorUndefined(element)) {\n                    throw new Error('Expected one ' + tag);\n                }\n                element = children.item(index);\n            }\n        }\n\n        if (Utils.isNotNullNorUndefined(element)) {\n            const attributes: NamedNodeMap = element.attributes;\n            const fieldValues: any[] = this.getFieldValues(fieldNames, attributes, element);\n            switch (tag) {\n                case Metadata.TAG_KEY:\n                    object = new CsdlKey(fieldValues[0]);\n                    break;\n                case Metadata.TAG_RETURN_TYPE:\n                    object = new CsdlReturnType(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5]);\n                    break;\n                case Metadata.TAG_ENTITY_CONTAINER:\n                    object = new CsdlEntityContainer(\n                        fieldValues[0],\n                        fieldValues[1],\n                        fieldValues[2],\n                        fieldValues[3],\n                        fieldValues[4],\n                        fieldValues[5]);\n                    break;\n                case Metadata.TAG_ON_DELETE:\n                    object = new CsdlOnDelete(\n                        fieldValues[0]);\n                    break;\n                default: throw new Error('Unknwon tag:' + tag);\n            }\n        }\n\n        return object;\n    }\n\n    protected getFieldValues(fields: Field[], attributes: NamedNodeMap, element: Element): any[] {\n        const fieldValues: any[] = [];\n\n        for (const field of fields) {\n            if (field.fieldType === FieldType.TAG) {\n                fieldValues.push(this.getFieldValueByTag(field, element));\n            } else if (field.fieldType === FieldType.ATTRIBUTE) {\n                fieldValues.push(this.getFieldValueByAttribute(field, attributes));\n            } else {\n                throw new Error('Unknown field type: ' + field.fieldType);\n            }\n        }\n\n        return fieldValues;\n    }\n\n    protected getFieldValueByAttribute(field: Field, attributes: NamedNodeMap): any {\n        switch (field.name) {\n            case Metadata.ATTRIBUTE_VERSION:\n            case Metadata.ATTRIBUTE_URI:\n            case Metadata.ATTRIBUTE_NAMESPACE:\n            case Metadata.ATTRIBUTE_ALIAS:\n            case Metadata.ATTRIBUTE_TERM_NAMESPACE:\n            case Metadata.ATTRIBUTE_TERM:\n            case Metadata.ATTRIBUTE_QUALIFIER:\n            case Metadata.ATTRIBUTE_TARGET_NAMESPACE:\n            case Metadata.ATTRIBUTE_NAME:\n            case Metadata.ATTRIBUTE_TYPE:\n            case Metadata.ATTRIBUTE_SRID:\n            case Metadata.ATTRIBUTE_DEFAULT_VALUE:\n            case Metadata.ATTRIBUTE_PARTNER:\n            case Metadata.ATTRIBUTE_PROPERTY:\n            case Metadata.ATTRIBUTE_REFERENCED_PROPERTY:\n            case Metadata.ATTRIBUTE_BASE_TYPE:\n            case Metadata.ATTRIBUTE_ENTITY_SET_PATH:\n            case Metadata.ATTRIBUTE_ENTITY_TYPE:\n            case Metadata.ATTRIBUTE_PATH:\n            case Metadata.ATTRIBUTE_TARGET:\n            case Metadata.ATTRIBUTE_FUNCTION:\n            case Metadata.ATTRIBUTE_ACTION:\n            case Metadata.ATTRIBUTE_ENTITY_SET:\n            case Metadata.ATTRIBUTE_UNDERLYING_TYPE:\n            case Metadata.ATTRIBUTE_EXTENDS:\n            case Metadata.ATTRIBUTE_BASE_TERM:\n            case Metadata.ATTRIBUTE_APPLIES_TO:\n                return this.getAttributeValue(attributes, field.name);\n            case Metadata.ATTRIBUTE_NULLABLE:\n            case Metadata.ATTRIBUTE_UNICODE:\n            case Metadata.ATTRIBUTE_OPEN_TYPE:\n            case Metadata.ATTRIBUTE_HAS_STREAM:\n            case Metadata.ATTRIBUTE_IS_BOUND:\n            case Metadata.ATTRIBUTE_IS_COMPOSABLE:\n            case Metadata.ATTRIBUTE_CONTAINS_TARGET:\n            case Metadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT:\n            case Metadata.ATTRIBUTE_ABSTRACT:\n            case Metadata.ATTRIBUTE_IS_FLAGS:\n                return this.propertyValueToBoolean(this.getAttributeValue(attributes, field.name));\n            case Metadata.ATTRIBUTE_VALUE:\n            case Metadata.ATTRIBUTE_MAX_LENGTH:\n            case Metadata.ATTRIBUTE_PRECISION:\n            case Metadata.ATTRIBUTE_SCALE:\n                return this.propertyValueToNumber(this.getAttributeValue(attributes, field.name));\n            default: throw new Error('Unknwon attribute:' + field.name);\n        }\n    }\n\n    protected getFieldValueByTag(field: Field, element: Element): any[] {\n        switch (field.name) {\n            case Metadata.TAG_INCLUDE:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAMESPACE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_INCLUDE_ANNOTATIONS:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_TERM_NAMESPACE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TARGET_NAMESPACE, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_TERM:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_BASE_TERM, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_DEFAULT_VALUE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_APPLIES_TO, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ANNOTATIONS:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_TARGET, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_ANNOTATION, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ANNOTATION:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_TERM, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ENUM_TYPE:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_MEMBER, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_UNDERLYING_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_IS_FLAGS, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_COMPLEX_TYPE:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_PROPERTY, FieldType.TAG),\n                    new Field(Metadata.TAG_NAVIGATION_PROPERTY, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_BASE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_OPEN_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ABSTRACT, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ENTITY_TYPE:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_KEY, FieldType.TAG),\n                    new Field(Metadata.TAG_PROPERTY, FieldType.TAG),\n                    new Field(Metadata.TAG_NAVIGATION_PROPERTY, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_BASE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_OPEN_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_HAS_STREAM, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ABSTRACT, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_FUNCTION:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_RETURN_TYPE, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_IS_BOUND, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ENTITY_SET_PATH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_IS_COMPOSABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_PARAMETER, FieldType.TAG)\n                ]);\n            case Metadata.TAG_MEMBER:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_VALUE, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_PROPERTY:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_UNICODE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_DEFAULT_VALUE, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_KEY:\n                return this.getObject(element, field.name, [\n                    new Field(Metadata.TAG_PROPERTY_REF, FieldType.TAG)\n                ]);\n            case Metadata.TAG_PROPERTY_REF:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_NAVIGATION_PROPERTY:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PARTNER, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_CONTAINS_TARGET, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_REFERENTIAL_CONSTRAINT, FieldType.TAG),\n                    new Field(Metadata.TAG_ON_DELETE, FieldType.TAG)\n                ]);\n            case Metadata.TAG_REFERENTIAL_CONSTRAINT:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_PROPERTY, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_REFERENCED_PROPERTY, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ON_DELETE:\n                return this.getObject(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_ACTION, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_PARAMETER:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_RETURN_TYPE:\n                return this.getObject(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ACTION:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_RETURN_TYPE, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_IS_BOUND, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ENTITY_SET_PATH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_PARAMETER, FieldType.TAG)\n                ]);\n            case Metadata.TAG_ENTITY_CONTAINER:\n                return this.getObject(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_EXTENDS, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_ENTITY_SET, FieldType.TAG),\n                    new Field(Metadata.TAG_SINGLETON, FieldType.TAG),\n                    new Field(Metadata.TAG_FUNCTION_IMPORT, FieldType.TAG),\n                    new Field(Metadata.TAG_ACTION_IMPORT, FieldType.TAG)\n                ]);\n            case Metadata.TAG_ENTITY_SET:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ENTITY_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_NAVIGATION_PROPERTY_BINDING, FieldType.TAG),\n                    new Field(Metadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_SINGLETON:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_NAVIGATION_PROPERTY_BINDING, FieldType.TAG)\n                ]);\n            case Metadata.TAG_FUNCTION_IMPORT:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_FUNCTION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ENTITY_SET, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_ACTION_IMPORT:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ACTION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_ENTITY_SET, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_NAVIGATION_PROPERTY_BINDING:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_PATH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_TARGET, FieldType.ATTRIBUTE)\n                ]);\n            case Metadata.TAG_TYPE_DEFINITION:\n                return this.getObjects(element, field.name, [\n                    new Field(Metadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_UNDERLYING_TYPE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_UNICODE, FieldType.ATTRIBUTE),\n                    new Field(Metadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n                    new Field(Metadata.TAG_ANNOTATION, FieldType.TAG)\n                ]);\n            default: throw new Error('Unknwon tag:' + field.name);\n        }\n    }\n\n    protected getAttributeValue(attributes: NamedNodeMap, attributeName: string): string {\n        const attribute: Attr = attributes.getNamedItem(attributeName);\n        if (Utils.isNotNullNorUndefined(attribute)) {\n            return attribute.nodeValue;\n        }\n        return undefined;\n    }\n\n    protected propertyValueToNumber(attributeValue: string): number {\n        return Utils.isNotNullNorUndefined(attributeValue) ? Number(attributeValue) : undefined;\n    }\n\n    protected propertyValueToBoolean(attributeValue: string): boolean {\n        return Utils.isNotNullNorUndefined(attributeValue) ? attributeValue === 'true' : undefined;\n    }\n}\n","import { HttpResponse } from '@angular/common/http';\n\nimport { Utils } from '../utils/utils';\n\nexport abstract class ODataResponseAbstract {\n    private httpResponse: HttpResponse<string>;\n\n    constructor(httpResponse: HttpResponse<string>) {\n        this.httpResponse = httpResponse;\n    }\n\n    getHttpResponse() {\n        return this.httpResponse;\n    }\n\n    isOk(): boolean {\n        return this.httpResponse.ok;\n    }\n\n    getBodyAsJson(): any {\n        return null;\n    }\n\n    getBodyAsText(): string {\n        return this.httpResponse.body;\n    }\n\n    toString(): string {\n        let res = `${this.httpResponse.status} ${this.httpResponse.statusText}\\n`;\n\n        const headers = this.httpResponse.headers;\n        for (const key of headers.keys()) {\n            res += key + ': ';\n            let valueString = '';\n            for (const value of headers.getAll(key)) {\n                if (valueString.length) {\n                    valueString += ' ';\n                }\n                valueString += value;\n            }\n            res += valueString + '\\n';\n        }\n\n        const json = this.getBodyAsJson();\n        if (Utils.isNotNullNorUndefined(json)) {\n            res += JSON.stringify(json, null, 4);\n        } else {\n            res += this.getBodyAsText();\n        }\n        return res;\n    }\n}\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\n\nimport { Utils } from '../utils/utils';\nimport { EntitySet } from './entity-collection';\nimport { Metadata } from './metadata';\nimport { ODataResponseAbstract } from './odata-response-abstract';\nimport { ODataResponseBatch } from './odata-response-batch';\n\nexport class ODataResponse extends ODataResponseAbstract {\n    private static readonly VALUE = 'value';\n    private static readonly ODATA_COUNT = '@odata.count';\n    private static readonly CONTENT_TYPE = 'content-type';\n\n    constructor(httpResponse: HttpResponse<string>) {\n        super(httpResponse);\n    }\n\n  getBodyAsJson(): any {\n    const headers: HttpHeaders = this.getHttpResponse().headers;\n    let contentType: string;\n    for (const key of headers.keys()) {\n      if (key.toLowerCase() === ODataResponse.CONTENT_TYPE) {\n        contentType = headers.get(key).toLowerCase();\n        break;\n      }\n    }\n    if (Utils.isNotNullNorUndefined(contentType) && contentType.includes('application/json')) {\n      try {\n        return JSON.parse(this.getBodyAsText());\n      } catch (error) {\n        return null;\n      }\n    }\n    return null;\n  }\n\n    toMetadata(): Metadata {\n        const xml: string = this.getBodyAsText();\n        return new Metadata(xml);\n    }\n\n    toEntitySet<T>(type?: (new () => T)): EntitySet<T> {\n        const json: any = this.getBodyAsJson();\n        if (Utils.isNotNullNorUndefined(json) && json.hasOwnProperty(ODataResponse.VALUE)) {\n            let count: number = null;\n            if (json.hasOwnProperty(ODataResponse.ODATA_COUNT)) {\n                count = json[ODataResponse.ODATA_COUNT];\n            }\n            return new EntitySet<T>(json[ODataResponse.VALUE], count, type);\n        }\n        return null;\n    }\n\n    toComplexCollection<T>(type?: (new () => T)): T[] {\n        const json: any = this.getBodyAsJson();\n\n        if (Utils.isNotNullNorUndefined(json) && json.hasOwnProperty(ODataResponse.VALUE)) {\n            const res: T[] = [];\n            for (const object of json[ODataResponse.VALUE]) {\n                res.push(this.toObject<T>(object, type));\n            }\n            return res;\n        }\n\n        return null;\n    }\n\n    toEntity<T>(type?: (new () => T)): T {\n        const json: any = this.getBodyAsJson();\n        return this.toObject<T>(json, type);\n    }\n\n    toComplexValue<T>(type?: (new () => T)): T {\n        const json: any = this.getBodyAsJson();\n        return this.toObject<T>(json, type);\n    }\n\n    toPropertyValue<T>(): T {\n        const json: any = this.getBodyAsJson();\n        if (Utils.isNotNullNorUndefined(json)) {\n            if (json.hasOwnProperty(ODataResponse.VALUE)) {\n                return json[ODataResponse.VALUE] as T;\n            }\n            return null;\n        } else {\n            return JSON.parse(this.getBodyAsText()) as T;\n        }\n    }\n\n    toCount(): number {\n        return Number(this.getBodyAsText());\n    }\n\n    toODataResponseBatch(): ODataResponseBatch {\n        return new ODataResponseBatch(this.getHttpResponse());\n    }\n\n    protected toObject<T>(object: any, type: (new () => T)): T {\n        if (Utils.isNotNullNorUndefined(object)) {\n            if (Utils.isNullOrUndefined(type)) {\n                return Object.assign({}, object);\n            } else {\n                return Object.assign(new type(), object);\n            }\n        }\n        return null;\n    }\n}\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\n\nimport { Utils } from '../utils/utils';\nimport { ODataResponse } from './odata-response';\nimport { ODataResponseAbstract } from './odata-response-abstract';\n\nexport class ODataResponseBatch extends ODataResponseAbstract {\n    private static readonly CONTENT_TYPE = 'Content-Type';\n    private static readonly CONTENT_ID = 'Content-ID';\n    private static readonly HTTP11 = 'HTTP/1.1';\n    private static readonly BOUNDARY_PREFIX_SUFFIX = '--';\n    private static readonly NEWLINE = '\\r\\n';\n    private static readonly MULTIPART_MIXED = 'multipart/mixed';\n\n    private odataResponses: ODataResponse[];\n\n    constructor(httpResponse: HttpResponse<string>) {\n        super(httpResponse);\n        this.odataResponses = [];\n        this.parseResponses();\n    }\n\n    getODataResponses(): ODataResponse[] {\n        return this.odataResponses;\n    }\n\n    protected parseResponses(): void {\n        const contentType: string = this.getHttpResponse().headers.get(ODataResponseBatch.CONTENT_TYPE);\n        const boundaryDelimiterBatch: string = this.getBoundaryDelimiter(contentType);\n        const boundaryEndBatch: string = this.getBoundaryEnd(boundaryDelimiterBatch);\n\n        const batchBody: string = this.getBodyAsText();\n        const batchBodyLines: string[] = batchBody.split(ODataResponseBatch.NEWLINE);\n\n        let odataResponseCS: ODataResponse[];\n        let contentId: number;\n        let boundaryDelimiterCS;\n        let boundaryEndCS;\n        let batchPartStartIndex;\n        for (let index = 0; index < batchBodyLines.length; index++) {\n            const batchBodyLine: string = batchBodyLines[index];\n\n            if (batchBodyLine.startsWith(ODataResponseBatch.CONTENT_TYPE)) {\n                const contentTypeValue: string = this.getHeaderValue(batchBodyLine);\n                if (contentTypeValue === ODataResponseBatch.MULTIPART_MIXED) {\n                    odataResponseCS = [];\n                    contentId = undefined;\n                    boundaryDelimiterCS = this.getBoundaryDelimiter(batchBodyLine);\n                    boundaryEndCS = this.getBoundaryEnd(boundaryDelimiterCS);\n                    batchPartStartIndex = undefined;\n                }\n                continue;\n            } else if (Utils.isNotNullNorUndefined(odataResponseCS) && batchBodyLine.startsWith(ODataResponseBatch.CONTENT_ID)) {\n                contentId = Number(this.getHeaderValue(batchBodyLine));\n            } else if (batchBodyLine.startsWith(ODataResponseBatch.HTTP11)) {\n                batchPartStartIndex = index;\n            } else if (batchBodyLine === boundaryDelimiterBatch || batchBodyLine === boundaryDelimiterCS\n                || batchBodyLine === boundaryEndBatch || batchBodyLine === boundaryEndCS) {\n                if (!batchPartStartIndex) {\n                    continue;\n                }\n\n                const odataResponse: ODataResponse = this.createODataResponse(batchBodyLines, batchPartStartIndex, index - 1);\n                if (Utils.isNotNullNorUndefined(odataResponseCS)) {\n                    odataResponseCS[contentId] = odataResponse;\n                } else {\n                    this.odataResponses.push(odataResponse);\n                }\n\n                if (batchBodyLine === boundaryDelimiterBatch || batchBodyLine === boundaryDelimiterCS) {\n                    batchPartStartIndex = index + 1;\n                } else if (batchBodyLine === boundaryEndBatch || batchBodyLine === boundaryEndCS) {\n                    if (Utils.isNotNullNorUndefined(odataResponseCS)) {\n                        for (const response of odataResponseCS) {\n                            if (Utils.isNotNullNorUndefined(response)) {\n                                this.odataResponses.push(response);\n                            }\n                        }\n                    }\n                    odataResponseCS = undefined;\n                    boundaryDelimiterCS = undefined;\n                    boundaryEndCS = undefined;\n                    batchPartStartIndex = undefined;\n                }\n            }\n        }\n    }\n\n    protected getHeaderValue(header: string): string {\n        let res: string = header.split(';')[0].trim();\n        res = res.split(':')[1].trim();\n        return res;\n    }\n\n    protected getBoundaryDelimiter(contentType: string): string {\n        const contentTypeParts: string[] = contentType.split(';');\n        if (contentTypeParts.length === 2) {\n            const boundary: string = contentType.split(';')[1].trim();\n            const boundaryDelimiter: string = ODataResponseBatch.BOUNDARY_PREFIX_SUFFIX + boundary.split('=')[1];\n            return boundaryDelimiter;\n        } else {\n            return '';\n        }\n    }\n\n    protected getBoundaryEnd(boundaryDelimiter: string): string {\n        if (!boundaryDelimiter.length) {\n            return '';\n        }\n        const boundaryEnd: string = boundaryDelimiter + ODataResponseBatch.BOUNDARY_PREFIX_SUFFIX;\n        return boundaryEnd;\n    }\n\n    protected createODataResponse(batchBodyLines: string[], batchPartStartIndex: number, batchPartEndIndex: number): ODataResponse {\n        let index: number = batchPartStartIndex;\n        const statusLine: string = batchBodyLines[index];\n        const statusLineParts: string[] = batchBodyLines[index].split(' ');\n        const status: string = statusLineParts[1];\n        const statusTextIndex = statusLine.indexOf(status) + status.length + 1;\n        const statusText: string = statusLine.substring(statusTextIndex);\n\n        let httpHeaders: HttpHeaders = new HttpHeaders();\n        for (++index; index <= batchPartEndIndex; index++) {\n            const batchBodyLine: string = batchBodyLines[index];\n\n            if (batchBodyLine === '') {\n                break;\n            }\n\n            const batchBodyLineParts: string[] = batchBodyLine.split(': ');\n            httpHeaders = httpHeaders.append(batchBodyLineParts[0].trim(), batchBodyLineParts[1].trim());\n        }\n\n        let body = '';\n        for (; index <= batchPartEndIndex; index++) {\n            body += batchBodyLines[index];\n        }\n\n        return new ODataResponse(new HttpResponse({\n            body,\n            headers: httpHeaders,\n            status: Number(status),\n            statusText\n        }));\n    }\n}\n","import {HttpContext, HttpHeaders, HttpParams} from '@angular/common/http';\r\n\r\nexport interface HttpOptionsI {\r\n    headers?: HttpHeaders;\r\n    params?: HttpParams;\r\n    reportProgress?: boolean;\r\n    withCredentials?: boolean;\r\n    context?: HttpContext;\r\n}\r\n\r\nexport class HttpOptions implements HttpOptionsI {\r\n    constructor(\r\n        public headers?: HttpHeaders,\r\n        public observe: 'response' = 'response',\r\n        public params?: HttpParams,\r\n        public context?: HttpContext,\r\n        public reportProgress?: boolean,\r\n        public responseType: 'text' = 'text',\r\n        public withCredentials?: boolean,\r\n    ) { }\r\n}\r\n","\r\nimport {map} from 'rxjs/operators';\r\n\r\n\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ODataQuery } from '../odata-query/odata-query';\r\nimport { ODataQueryAbstract } from '../odata-query/odata-query-abstract';\r\nimport { ODataResponse } from '../odata-response/odata-response';\r\nimport { Utils } from '../utils/utils';\r\nimport { HttpOptions, HttpOptionsI } from './http-options';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ODataService {\r\n  private http = inject(HttpClient);\r\n\r\n  private static readonly IF_MATCH_HEADER = 'If-Match';\r\n\r\n  get(odataQuery: ODataQuery, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\r\n    const url: string = odataQuery.toString();\r\n    const options: HttpOptions = this.createHttpOptions(httpOptions);\r\n    return this.http.get(url, options).pipe(\r\n      map(response => new ODataResponse(response)));\r\n  }\r\n\r\n  post(odataQuery: ODataQueryAbstract, body: any, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\r\n    const url: string = odataQuery.toString();\r\n    const options: HttpOptions = this.createHttpOptions(httpOptions);\r\n    return this.http.post(url, body, options).pipe(\r\n      map(response => new ODataResponse(response)));\r\n  }\r\n\r\n  patch(odataQuery: ODataQuery, body: any, etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\r\n    const url: string = odataQuery.toString();\r\n    let options: HttpOptions = this.createHttpOptions(httpOptions);\r\n    options = this.mergeETag(options, etag);\r\n    return this.http.patch(url, body, options).pipe(\r\n      map(response => new ODataResponse(response)));\r\n  }\r\n\r\n  put(odataQuery: ODataQuery, body: any, etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\r\n    const url: string = odataQuery.toString();\r\n    let options: HttpOptions = this.createHttpOptions(httpOptions);\r\n    options = this.mergeETag(options, etag);\r\n    return this.http.put(url, body, options).pipe(\r\n      map(response => new ODataResponse(response)));\r\n  }\r\n\r\n  delete(odataQuery: ODataQuery, etag?: string, httpOptions?: HttpOptionsI): Observable<ODataResponse> {\r\n    const url: string = odataQuery.toString();\r\n    let options: HttpOptions = this.createHttpOptions(httpOptions);\r\n    options = this.mergeETag(options, etag);\r\n    return this.http.delete(url, options).pipe(\r\n      map(response => new ODataResponse(response)));\r\n  }\r\n\r\n  protected createHttpOptions(httpOptions: HttpOptionsI): HttpOptions {\r\n    if (httpOptions instanceof HttpOptions) {\r\n      return httpOptions;\r\n    }\r\n    return Object.assign(new HttpOptions(), httpOptions);\r\n  }\r\n\r\n  protected mergeETag(httpOptions: HttpOptions, etag: string): HttpOptions {\r\n    if (Utils.isNullOrUndefined(etag)) {\r\n      return httpOptions;\r\n    }\r\n    if (Utils.isNullOrUndefined(httpOptions)) {\r\n      httpOptions = new HttpOptions();\r\n    }\r\n    if (Utils.isNullOrUndefined(httpOptions.headers)) {\r\n      httpOptions.headers = new HttpHeaders();\r\n    }\r\n\r\n    httpOptions.headers[ODataService.IF_MATCH_HEADER] = etag;\r\n\r\n    return httpOptions;\r\n  }\r\n}\r\n","export abstract class Filter {\n    abstract toString(): string;\n    abstract isEmpty(): boolean;\n}\n","import { Utils } from '../../utils/utils';\n\nexport abstract class FilterHasProperty {\n    protected property: string;\n\n    constructor(property: string) {\n        this.setProperty(property);\n    }\n\n    setProperty(property: string): void {\n        Utils.requireNotNullNorUndefined(property, 'property');\n        this.property = property;\n    }\n\n    getProperty(): string {\n        return this.property;\n    }\n}\n","import { Utils } from '../../utils/utils';\nimport { QuotedString } from '../../odata-query/quoted-string';\nimport { OperatorComparison } from '../operator';\nimport { Filter } from './filter';\nimport { FilterHasProperty } from './filter-has-property';\n\nexport class FilterComparison extends FilterHasProperty implements Filter {\n    private operator: OperatorComparison;\n    private value: any;\n\n    constructor(property: string, operator: OperatorComparison, value: boolean | number | string | QuotedString) {\n        super(property);\n        Utils.requireNotNullNorUndefined(property, 'property');\n        Utils.requireNotNullNorUndefined(operator, 'operator');\n        Utils.requireNotUndefined(value, 'value');\n        this.operator = operator;\n        this.value = value;\n    }\n\n    toString(): string {\n        return `${this.property} ${OperatorComparison[this.operator].toLowerCase()} ${Utils.getValueURI(this.value, false)}`;\n    }\n\n    isEmpty(): boolean {\n        return (Utils.isNullOrUndefined(this.property) || !this.property.length)\n            && Utils.isNullOrUndefined(this.operator)\n            && Utils.isNullOrUndefined(this.value) || (this.value instanceof Filter && !this.value.isEmpty() || this.value instanceof Array && !this.value.length);\n    }\n}\n","import { Utils } from '../../utils/utils';\nimport { Filter } from './filter';\nimport { FilterHasProperty } from './filter-has-property';\nimport { QuotedString } from '../../odata-query/quoted-string';\n\nexport class FilterFunction extends FilterHasProperty implements Filter {\n    private functionName: string;\n    private value: boolean | number | string | QuotedString;\n\n    constructor(functionName: string, property: string, value?: boolean | number | string | QuotedString) {\n        super(property);\n        Utils.requireNotNullNorUndefined(functionName, 'functionName');\n        Utils.requireNotEmpty(functionName, 'functionName');\n        Utils.requireNotNullNorUndefined(property, 'property');\n        Utils.requireNotEmpty(property, 'property');\n        this.functionName = functionName;\n        this.property = property;\n        this.value = value;\n    }\n\n    toString(): string {\n        if (Utils.isNotNullNorUndefined(this.property) && Utils.isNotNullNorUndefined(this.value)) {\n            return `${this.functionName}(${this.property},${Utils.getValueURI(this.value, false)})`;\n        } else if (Utils.isNotNullNorUndefined(this.property)) {\n            return `${this.functionName}(${this.property})`;\n        } else if (Utils.isNotNullNorUndefined(this.value)) {\n            return `${this.functionName}(${Utils.getValueURI(this.value, false)})`;\n        } else {\n            return `${this.functionName}()`;\n        }\n    }\n\n    isEmpty(): boolean {\n        if (Utils.isNullOrUndefined(this.property)\n            && Utils.isNullOrUndefined(this.value)) {\n            return true;\n        }\n        if (Utils.isNullOrUndefined(this.property)\n            && Utils.isNotNullNorUndefined(this.value) && Utils.isEmpty(this.value)) {\n            return true;\n        }\n        if (Utils.isNullOrUndefined(this.value)\n            && Utils.isNotNullNorUndefined(this.property) && !this.property.length) {\n            return true;\n        }\n        return false;\n    }\n}\n\nexport class FilterFunctionString extends FilterFunction {\n    constructor(functionName: string, property?: string, value?: number | string | FilterFunctionString) {\n        super(functionName, property, typeof (value) === 'string'\n            ? new QuotedString(value)\n            : value instanceof FilterFunctionString ? value.toString() : value);\n    }\n}\n\nexport class FilterContains extends FilterFunctionString {\n    constructor(property: string, value: string | FilterFunctionString) {\n        super('contains', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n\nexport class FilterEndswith extends FilterFunctionString {\n    constructor(property: string, value: string | FilterFunctionString) {\n        super('endswith', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n\nexport class FilterStartswith extends FilterFunctionString {\n    constructor(property: string, value: string | FilterFunctionString) {\n        super('startswith', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n\nexport class FilterLength extends FilterFunctionString {\n    constructor(property: string) {\n        super('length', property);\n    }\n}\n\nexport class FilterIndexof extends FilterFunctionString {\n    constructor(property: string, value: string | FilterFunctionString) {\n        super('indexof', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n\nexport class FilterSubstring extends FilterFunctionString {\n    constructor(property: string, value: number) {\n        super('substring', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n\nexport class FilterTolower extends FilterFunctionString {\n    constructor(property: string) {\n        super('tolower', property);\n    }\n}\n\nexport class FilterToupper extends FilterFunctionString {\n    constructor(property: string) {\n        super('toupper', property);\n    }\n}\n\nexport class FilterTrim extends FilterFunctionString {\n    constructor(property: string) {\n        super('trim', property);\n    }\n}\n\nexport class FilterConcat extends FilterFunctionString {\n    constructor(property: string, value: string | FilterFunctionString) {\n        super('concat', property, value);\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n}\n","import { Filter } from './filter';\n\nexport abstract class FilterHasFilter {\n    protected filter: Filter | Filter[];\n\n    constructor(filter: Filter | Filter[]) {\n        this.filter = filter;\n    }\n\n    getFilter(): Filter | Filter[] {\n        return this.filter;\n    }\n}\n","import { Utils } from '../../utils/utils';\nimport { Filter } from './filter';\nimport { FilterHasFilter } from './filter-has-filter';\nimport { FilterHasProperty } from './filter-has-property';\n\nexport enum LambdaOperator {\n    ANY, ALL\n}\n\nexport enum LambdaCollection {\n    PROPERTY_COLLECTION, ENTITY_SET\n}\n\nexport class FilterLambda extends FilterHasFilter implements Filter {\n    private lambdaCollection: LambdaCollection;\n    private propertyOrEntitySet: string;\n    private lambdaOperator: LambdaOperator;\n\n    constructor(lambdaCollection: LambdaCollection, propertyOrEntitySet: string, lambdaOperator: LambdaOperator, filter: Filter) {\n        super(filter);\n        Utils.requireNotNullNorUndefined(lambdaCollection, 'lambdaCollection');\n        Utils.requireNotNullNorUndefined(propertyOrEntitySet, 'propertyOrEntitySet');\n        Utils.requireNotNullNorUndefined(lambdaOperator, 'lambdaOperator');\n        Utils.requireNotNullNorUndefined(filter, 'filter');\n        if (lambdaCollection === LambdaCollection.PROPERTY_COLLECTION) {\n            this.checkProperty(propertyOrEntitySet, filter);\n        }\n        this.lambdaCollection = lambdaCollection;\n        this.propertyOrEntitySet = propertyOrEntitySet;\n        this.lambdaOperator = lambdaOperator;\n    }\n\n    toString(): string {\n        switch (this.lambdaCollection) {\n            case LambdaCollection.PROPERTY_COLLECTION:\n                this.replaceProperty(this.filter);\n                return `${this.propertyOrEntitySet}/${LambdaOperator[this.lambdaOperator].toLowerCase()}(x:${this.filter.toString()})`;\n            case LambdaCollection.ENTITY_SET:\n                return `${this.propertyOrEntitySet}/${LambdaOperator[this.lambdaOperator].toLowerCase()}(x:x/${this.filter.toString()})`;\n            default:\n                throw new Error('unknown lambdaCollection: ' + this.lambdaCollection);\n        }\n    }\n\n    isEmpty(): boolean {\n        if (Utils.isNullOrUndefined(this.lambdaCollection)\n            && Utils.isNullOrUndefined(this.propertyOrEntitySet)\n            && Utils.isNullOrUndefined(this.lambdaOperator)\n            && Utils.isNullOrUndefined(this.filter)) {\n            return true;\n        }\n        if (Utils.isNullOrUndefined(this.propertyOrEntitySet)\n            && Utils.isNotNullNorUndefined(this.filter) && Utils.isEmpty(this.filter)) {\n            return true;\n        }\n        if (Utils.isNullOrUndefined(this.filter)\n            && Utils.isNotNullNorUndefined(this.propertyOrEntitySet) && !this.propertyOrEntitySet.length) {\n            return true;\n        }\n        if (Utils.isNotNullNorUndefined(this.propertyOrEntitySet) && !this.propertyOrEntitySet.length\n            && Utils.isNotNullNorUndefined(this.filter) && Utils.isEmpty(this.filter)) {\n            return true;\n        }\n\n        return false;\n    }\n\n    protected checkProperty(propertyOrEntitySet: string, filter: Filter | Filter[]) {\n        if (Utils.isNullOrUndefined(filter)) {\n            return;\n        }\n        if (filter instanceof FilterHasProperty) {\n            if (propertyOrEntitySet !== filter.getProperty()) {\n                throw new Error('lambda property to filter must match inner filters property');\n            }\n        }\n        if (filter instanceof FilterHasFilter) {\n            const filterChild: Filter | Filter[] = filter.getFilter();\n            if (filterChild instanceof Filter) {\n                this.replaceProperty(filterChild);\n            } else {\n                for (const f of filterChild) {\n                    this.replaceProperty(f);\n                }\n            }\n        }\n    }\n\n    protected replaceProperty(filter: Filter | Filter[]) {\n        if (Utils.isNullOrUndefined(filter)) {\n            return;\n        }\n        if (filter instanceof FilterHasProperty) {\n            filter.setProperty('x');\n        }\n        if (filter instanceof FilterHasFilter) {\n            const filterChild: Filter | Filter[] = filter.getFilter();\n            if (filterChild instanceof Filter) {\n                this.replaceProperty(filterChild);\n            } else {\n                for (const f of filterChild) {\n                    this.replaceProperty(f);\n                }\n            }\n        }\n    }\n}\n","import { Utils } from '../../utils/utils';\nimport { OperatorLogical } from '../operator';\nimport { Filter } from './filter';\nimport { FilterHasFilter } from './filter-has-filter';\n\nexport class FilterLogical extends FilterHasFilter implements Filter {\n    private operator: OperatorLogical;\n\n    constructor(filters: Filter[], operator: OperatorLogical) {\n        super(filters);\n        Utils.requireNotNullNorUndefined(filters, 'filters');\n        Utils.requireNotEmpty(filters, 'filters');\n        Utils.requireNotNullNorUndefined(operator, 'operator');\n        this.operator = operator;\n    }\n\n    toString(): string {\n        if (this.filter instanceof Array) {\n            return Utils.toString(this.filter, this.operator);\n        }\n        return this.filter.toString();\n    }\n\n    isEmpty(): boolean {\n        if (Utils.isNullOrUndefined(this.filter)) {\n            return true;\n        }\n        for (const filter of this.filter as Filter[]) {\n            if (filter.isEmpty()) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\n","export abstract class Search {\n    abstract toString(): string;\n    abstract isEmpty(): boolean;\n}\n","import { Utils } from '../../utils/utils';\nimport { OperatorLogical } from '../operator';\nimport { Search } from './search';\n\nexport class SearchLogical extends Search {\n    constructor(private values: Search[], private operator: OperatorLogical) {\n        super();\n        Utils.requireNotNullNorUndefined(values, 'values');\n        Utils.requireNotNullNorUndefined(operator, 'operator');\n        Utils.requireNotEmpty(values, 'values');\n\n        if (operator === OperatorLogical.NOT && values.length !== 1) {\n            throw new Error('operator ' + OperatorLogical[operator] + ' requires a single value');\n        }\n    }\n\n    toString(): string {\n        return Utils.toString(this.values, this.operator, true);\n    }\n\n    isEmpty(): boolean {\n        if (Utils.isNullOrUndefined(this.values)) {\n            return true;\n        }\n        for (const value of this.values) {\n            if (value.isEmpty()) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\n","import { Utils } from '../../utils/utils';\nimport { Search } from './search';\n\nexport class SearchSimple extends Search {\n    constructor(protected value: string) {\n        super();\n        Utils.requireNotNullNorUndefined(value, 'value');\n        Utils.requireNotEmpty(value, 'value');\n    }\n\n    toString(): string {\n        return this.value;\n    }\n\n    isEmpty(): boolean {\n        return Utils.isNullOrUndefined(this.value) || !this.value.length;\n    }\n}\n","import { SearchSimple } from './search-simple';\n\nexport class SearchPhrase extends SearchSimple {\n    toString(): string {\n        return `\"${this.value}\"`;\n    }\n}\n","/*\n * Public API Surface of odata-v4-ng\n */\n\nexport * from './lib/odata-query/odata-query-abstract';\nexport * from './lib/odata-query/odata-query-batch';\nexport * from './lib/odata-query/odata-query';\nexport * from './lib/odata-query/quoted-string';\n\nexport * from './lib/odata-response/csdl/csdl-annotation';\nexport * from './lib/odata-response/csdl/csdl-entity-container';\nexport * from './lib/odata-response/csdl/csdl-entity-set';\nexport * from './lib/odata-response/csdl/csdl-enum-type';\nexport * from './lib/odata-response/csdl/csdl-function-action';\nexport * from './lib/odata-response/csdl/csdl-navigation-property-binding';\nexport * from './lib/odata-response/csdl/csdl-reference';\nexport * from './lib/odata-response/csdl/csdl-schema';\nexport * from './lib/odata-response/csdl/csdl-singleton';\nexport * from './lib/odata-response/csdl/csdl-structural-property';\nexport * from './lib/odata-response/csdl/csdl-structured-type';\nexport * from './lib/odata-response/csdl/csdl-type-definition';\n\nexport * from './lib/odata-response/entity-collection';\nexport * from './lib/odata-response/metadata';\nexport * from './lib/odata-response/odata-response-abstract';\nexport * from './lib/odata-response/odata-response-batch';\nexport * from './lib/odata-response/odata-response';\n\nexport * from './lib/odata-service/http-options';\nexport * from './lib/odata-service/odata.service';\n\nexport * from './lib/query-options/filter/filter-comparison';\nexport * from './lib/query-options/filter/filter-function';\nexport * from './lib/query-options/filter/filter-has-filter';\nexport * from './lib/query-options/filter/filter-has-property';\nexport * from './lib/query-options/filter/filter-lambda';\nexport * from './lib/query-options/filter/filter-logical';\nexport * from './lib/query-options/filter/filter-string';\nexport * from './lib/query-options/filter/filter';\n\nexport * from './lib/query-options/search/search-logical';\nexport * from './lib/query-options/search/search-phrase';\nexport * from './lib/query-options/search/search-simple';\nexport * from './lib/query-options/search/search';\n\nexport * from './lib/query-options/expand';\nexport * from './lib/query-options/operator';\nexport * from './lib/query-options/orderby';\nexport * from './lib/query-options/query-options';\n\nexport * from './lib/utils/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["UUID"],"mappings":"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"}