{"version":3,"file":"ngx-restangular.mjs","sources":["../../../projects/ngx-restangular/src/lib/ngx-restangular.config.ts","../../../projects/ngx-restangular/src/lib/ngx-restangular-helper.ts","../../../projects/ngx-restangular/src/lib/ngx-restangular-http.ts","../../../projects/ngx-restangular/src/lib/ngx-restangular-config.factory.ts","../../../projects/ngx-restangular/src/lib/ngx-restangular.ts","../../../projects/ngx-restangular/src/lib/ngx-restangular.module.ts","../../../projects/ngx-restangular/src/public_api.ts","../../../projects/ngx-restangular/src/ngx-restangular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { isArray } from 'lodash';\n\n\nexport const RESTANGULAR = new InjectionToken<string>('restangularWithConfig');\n\nexport function RestangularFactory([callbackOrServices, callback]) {\n  let arrServices = [];\n  let fn = callbackOrServices;\n\n  if (isArray(callbackOrServices)) {\n    arrServices = callbackOrServices;\n    fn = callback;\n  }\n\n  return {fn, arrServices};\n}\n","import { HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http';\n\nexport class RestangularHelper {\n\n  static createRequest(options) {\n    const requestQueryParams = RestangularHelper.createRequestQueryParams(options.params);\n    const requestHeaders = RestangularHelper.createRequestHeaders(options.headers);\n    const methodName = options.method.toUpperCase();\n    const withCredentials = options.withCredentials || false;\n\n    let request = new HttpRequest(\n      methodName,\n      options.url,\n      options.data,\n      {\n        headers: requestHeaders,\n        params: requestQueryParams,\n        responseType: options.responseType,\n        withCredentials\n      }\n    );\n\n    if (['GET', 'DELETE', 'HEAD', 'JSONP', 'OPTIONS'].indexOf(methodName) >= 0) {\n      request = new HttpRequest(\n        methodName,\n        options.url,\n        {\n          headers: requestHeaders,\n          params: requestQueryParams,\n          responseType: options.responseType,\n          withCredentials\n        }\n      );\n    }\n    return request;\n  }\n\n  static createRequestQueryParams(queryParams) {\n    const requestQueryParams = Object.assign({}, queryParams);\n    let search: HttpParams = new HttpParams();\n\n    for (const key in requestQueryParams) {\n      let value: any = requestQueryParams[key];\n\n      if (Array.isArray(value)) {\n        value.forEach(function (val) {\n          search = search.append(key, val);\n        });\n      } else {\n        if (typeof value === 'object') {\n          value = JSON.stringify(value);\n        }\n        search = search.append(key, value);\n      }\n    }\n\n    return search;\n  }\n\n  static createRequestHeaders(headers) {\n    for (const key in headers) {\n      const value: any = headers[key];\n      if (typeof value === 'undefined') {\n        delete headers[key];\n      }\n    }\n\n    return new HttpHeaders(Object.assign({}, headers));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpBackend, HttpErrorResponse, HttpEvent, HttpRequest, HttpResponse } from '@angular/common/http';\n\nimport { throwError, Observable } from 'rxjs';\n\nimport { RestangularHelper } from './ngx-restangular-helper';\nimport { catchError, filter, map } from 'rxjs/operators';\n\n@Injectable()\nexport class RestangularHttp {\n\n  constructor(public http: HttpBackend) {\n  }\n\n  createRequest(options): Observable<HttpEvent<any>> {\n    const request = RestangularHelper.createRequest(options);\n\n    return this.request(request);\n  }\n\n  request(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n    return this.http.handle(request)\n    .pipe(\n      filter(event => event instanceof HttpResponse),\n      map((response: any) => {\n        if (!response.ok) {\n          return throwError(new HttpErrorResponse(response));\n        }\n        return response;\n      }),\n      map(response => {\n        response.config = {params: request};\n        return response;\n      }),\n      catchError(err => {\n        err.request = request;\n        err.data = err.error;\n        err.repeatRequest = (newRequest?) => {\n          return this.request(newRequest || request);\n        };\n\n        return throwError(err);\n      })\n    );\n  }\n}\n\n","import {\n  includes,\n  isUndefined,\n  isNull,\n  isArray,\n  isObject,\n  isBoolean,\n  defaults,\n  each,\n  extend,\n  find,\n  has,\n  initial,\n  last,\n  clone,\n  reduce,\n  keys,\n  isEmpty,\n  forEach,\n} from 'lodash';\n\nexport function RestangularConfigurer(object, configuration) {\n  object.configuration = configuration;\n\n  /**\n   * Those are HTTP safe methods for which there is no need to pass any data with the request.\n   */\n  const safeMethods = ['get', 'head', 'options', 'trace', 'getlist'];\n  configuration.isSafe = function (operation) {\n    return includes(safeMethods, operation.toLowerCase());\n  };\n\n  const absolutePattern = /^https?:\\/\\//i;\n  configuration.isAbsoluteUrl = function (string) {\n    return isUndefined(configuration.absoluteUrl) || isNull(configuration.absoluteUrl) ?\n      string && absolutePattern.test(string) :\n      configuration.absoluteUrl;\n  };\n\n  configuration.absoluteUrl = isUndefined(configuration.absoluteUrl) ? true : configuration.absoluteUrl;\n  object.setSelfLinkAbsoluteUrl = function (value) {\n    configuration.absoluteUrl = value;\n  };\n  /**\n   * This is the BaseURL to be used with Restangular\n   */\n  configuration.baseUrl = isUndefined(configuration.baseUrl) ? '' : configuration.baseUrl;\n  object.setBaseUrl = function (newBaseUrl) {\n    configuration.baseUrl = /\\/$/.test(newBaseUrl) ?\n      newBaseUrl.substring(0, newBaseUrl.length - 1) :\n      newBaseUrl;\n    return this;\n  };\n\n  /**\n   * Sets the extra fields to keep from the parents\n   */\n  configuration.extraFields = configuration.extraFields || [];\n  object.setExtraFields = function (newExtraFields) {\n    configuration.extraFields = newExtraFields;\n    return this;\n  };\n\n  /**\n   * Some default $http parameter to be used in EVERY call\n   **/\n  configuration.defaultHttpFields = configuration.defaultHttpFields || {};\n  object.setDefaultHttpFields = function (values) {\n    configuration.defaultHttpFields = values;\n    return this;\n  };\n\n  /**\n   * Always return plain data, no restangularized object\n   **/\n  configuration.plainByDefault = configuration.plainByDefault || false;\n  object.setPlainByDefault = function (value) {\n    configuration.plainByDefault = value === true ? true : false;\n    return this;\n  };\n\n  configuration.withHttpValues = function (httpLocalConfig, obj) {\n    return defaults(obj, httpLocalConfig, configuration.defaultHttpFields);\n  };\n\n  configuration.encodeIds = isUndefined(configuration.encodeIds) ? true : configuration.encodeIds;\n  object.setEncodeIds = function (encode) {\n    configuration.encodeIds = encode;\n  };\n\n  configuration.defaultRequestParams = configuration.defaultRequestParams || {\n    get: {},\n    post: {},\n    put: {},\n    remove: {},\n    common: {}\n  };\n\n  object.setDefaultRequestParams = function (param1, param2) {\n    let methods = [];\n    const params = param2 || param1;\n    if (!isUndefined(param2)) {\n      if (isArray(param1)) {\n        methods = param1;\n      } else {\n        methods.push(param1);\n      }\n    } else {\n      methods.push('common');\n    }\n\n    each(methods, function (method) {\n      configuration.defaultRequestParams[method] = params;\n    });\n    return this;\n  };\n\n  object.requestParams = configuration.defaultRequestParams;\n\n  configuration.defaultHeaders = configuration.defaultHeaders || {};\n  object.setDefaultHeaders = function (headers) {\n    configuration.defaultHeaders = headers;\n    object.defaultHeaders = configuration.defaultHeaders;\n    return this;\n  };\n\n  object.defaultHeaders = configuration.defaultHeaders;\n\n\n  /**\n   * Method overriders response Method\n   **/\n  configuration.defaultResponseMethod = configuration.defaultResponseMethod || 'promise';\n  object.setDefaultResponseMethod = function (method) {\n    configuration.defaultResponseMethod = method;\n    object.defaultResponseMethod = configuration.defaultResponseMethod;\n    return this;\n  };\n  object.defaultResponseMethod = configuration.defaultResponseMethod;\n\n  /**\n   * Method overriders will set which methods are sent via POST with an X-HTTP-Method-Override\n   **/\n  configuration.methodOverriders = configuration.methodOverriders || [];\n  object.setMethodOverriders = function (values) {\n    const overriders = extend([], values);\n    if (configuration.isOverridenMethod('delete', overriders)) {\n      overriders.push('remove');\n    }\n    configuration.methodOverriders = overriders;\n    return this;\n  };\n\n  configuration.jsonp = isUndefined(configuration.jsonp) ? false : configuration.jsonp;\n  object.setJsonp = function (active) {\n    configuration.jsonp = active;\n  };\n\n  configuration.isOverridenMethod = function (method, values) {\n    const search = values || configuration.methodOverriders;\n    return !isUndefined(find(search, function (one: string) {\n      return one.toLowerCase() === method.toLowerCase();\n    }));\n  };\n\n  /**\n   * Sets the URL creator type. For now, only Path is created. In the future we'll have queryParams\n   **/\n  configuration.urlCreator = configuration.urlCreator || 'path';\n  object.setUrlCreator = function (name) {\n    if (!has(configuration.urlCreatorFactory, name)) {\n      throw new Error('URL Path selected isn\\'t valid');\n    }\n\n    configuration.urlCreator = name;\n    return this;\n  };\n\n  /**\n   * You can set the restangular fields here. The 3 required fields for Restangular are:\n   *\n   * id: Id of the element\n   * route: name of the route of this element\n   * parentResource: the reference to the parent resource\n   *\n   *  All of this fields except for id, are handled (and created) by Restangular. By default,\n   *  the field values will be id, route and parentResource respectively\n   */\n  configuration.restangularFields = configuration.restangularFields || {\n    id: 'id',\n    route: 'route',\n    parentResource: 'parentResource',\n    restangularCollection: 'restangularCollection',\n    cannonicalId: '__cannonicalId',\n    etag: 'restangularEtag',\n    selfLink: 'href',\n    get: 'get',\n    getList: 'getList',\n    put: 'put',\n    post: 'post',\n    remove: 'remove',\n    head: 'head',\n    trace: 'trace',\n    options: 'options',\n    patch: 'patch',\n    getRestangularUrl: 'getRestangularUrl',\n    getRequestedUrl: 'getRequestedUrl',\n    putElement: 'putElement',\n    addRestangularMethod: 'addRestangularMethod',\n    getParentList: 'getParentList',\n    clone: 'clone',\n    ids: 'ids',\n    httpConfig: '_$httpConfig',\n    reqParams: 'reqParams',\n    one: 'one',\n    all: 'all',\n    several: 'several',\n    oneUrl: 'oneUrl',\n    allUrl: 'allUrl',\n    customPUT: 'customPUT',\n    customPATCH: 'customPATCH',\n    customPOST: 'customPOST',\n    customDELETE: 'customDELETE',\n    customGET: 'customGET',\n    customGETLIST: 'customGETLIST',\n    customOperation: 'customOperation',\n    doPUT: 'doPUT',\n    doPATCH: 'doPATCH',\n    doPOST: 'doPOST',\n    doDELETE: 'doDELETE',\n    doGET: 'doGET',\n    doGETLIST: 'doGETLIST',\n    fromServer: 'fromServer',\n    withConfig: 'withConfig',\n    withHttpConfig: 'withHttpConfig',\n    singleOne: 'singleOne',\n    plain: 'plain',\n    save: 'save',\n    restangularized: 'restangularized'\n  };\n  object.setRestangularFields = function (resFields) {\n    configuration.restangularFields =\n      extend({}, configuration.restangularFields, resFields);\n    return this;\n  };\n\n  configuration.isRestangularized = function (obj) {\n    return !!obj[configuration.restangularFields.restangularized];\n  };\n\n  configuration.setFieldToElem = function (field, elem, value) {\n    const properties = field.split('.');\n    let idValue = elem;\n    each(initial(properties), function (prop: any) {\n      idValue[prop] = {};\n      idValue = idValue[prop];\n    });\n    const index: any = last(properties);\n    idValue[index] = value;\n    return this;\n  };\n\n  configuration.getFieldFromElem = function (field, elem) {\n    const properties = field.split('.');\n    let idValue: any = elem;\n    each(properties, function (prop) {\n      if (idValue) {\n        idValue = idValue[prop];\n      }\n    });\n    return clone(idValue);\n  };\n\n  configuration.setIdToElem = function (elem, id /*, route */) {\n    configuration.setFieldToElem(configuration.restangularFields.id, elem, id);\n    return this;\n  };\n\n  configuration.getIdFromElem = function (elem) {\n    return configuration.getFieldFromElem(configuration.restangularFields.id, elem);\n  };\n\n  configuration.isValidId = function (elemId) {\n    return '' !== elemId && !isUndefined(elemId) && !isNull(elemId);\n  };\n\n  configuration.setUrlToElem = function (elem, url /*, route */) {\n    configuration.setFieldToElem(configuration.restangularFields.selfLink, elem, url);\n    return this;\n  };\n\n  configuration.getUrlFromElem = function (elem) {\n    return configuration.getFieldFromElem(configuration.restangularFields.selfLink, elem);\n  };\n\n  configuration.useCannonicalId = isUndefined(configuration.useCannonicalId) ? false : configuration.useCannonicalId;\n  object.setUseCannonicalId = function (value) {\n    configuration.useCannonicalId = value;\n    return this;\n  };\n\n  configuration.getCannonicalIdFromElem = function (elem) {\n    const cannonicalId = elem[configuration.restangularFields.cannonicalId];\n    const actualId = configuration.isValidId(cannonicalId) ? cannonicalId : configuration.getIdFromElem(elem);\n    return actualId;\n  };\n\n  /**\n   * Sets the Response parser. This is used in case your response isn't directly the data.\n   * For example if you have a response like {meta: {'meta'}, data: {name: 'Gonto'}}\n   * you can extract this data which is the one that needs wrapping\n   *\n   * The ResponseExtractor is a function that receives the response and the method executed.\n   */\n\n  configuration.responseInterceptors = configuration.responseInterceptors ? [...configuration.responseInterceptors] : [];\n\n  configuration.defaultResponseInterceptor = function (data /*, operation, what, url, response, subject */) {\n    return data || {};\n  };\n\n  configuration.responseExtractor = function (data, operation, what, url, response, subject) {\n    const interceptors = clone(configuration.responseInterceptors);\n    interceptors.push(configuration.defaultResponseInterceptor);\n    let theData = data;\n    each(interceptors, function (interceptor: any) {\n      theData = interceptor(theData, operation,\n        what, url, response, subject);\n    });\n    return theData;\n  };\n\n  object.addResponseInterceptor = function (extractor) {\n    configuration.responseInterceptors.push(extractor);\n    return this;\n  };\n\n  configuration.errorInterceptors = configuration.errorInterceptors ? [...configuration.errorInterceptors] : [];\n  object.addErrorInterceptor = function (interceptor) {\n    configuration.errorInterceptors = [interceptor, ...configuration.errorInterceptors];\n    return this;\n  };\n\n  object.setResponseInterceptor = object.addResponseInterceptor;\n  object.setResponseExtractor = object.addResponseInterceptor;\n  object.setErrorInterceptor = object.addErrorInterceptor;\n\n  /**\n   * Response interceptor is called just before resolving promises.\n   */\n\n\n  /**\n   * Request interceptor is called before sending an object to the server.\n   */\n  configuration.requestInterceptors = configuration.requestInterceptors ? [...configuration.requestInterceptors] : [];\n\n  configuration.defaultInterceptor = function (element, operation, path, url, headers, params, httpConfig) {\n    return {\n      element: element,\n      headers: headers,\n      params: params,\n      httpConfig: httpConfig\n    };\n  };\n\n  configuration.fullRequestInterceptor = function (element, operation, path, url, headers, params, httpConfig) {\n    const interceptors = clone(configuration.requestInterceptors);\n    const defaultRequest = configuration.defaultInterceptor(element, operation, path, url, headers, params, httpConfig);\n    return reduce(interceptors, function (request: any, interceptor: any) {\n\n      const returnInterceptor: any = interceptor(\n        request.element,\n        operation,\n        path,\n        url,\n        request.headers,\n        request.params,\n        request.httpConfig\n      );\n      return extend(request, returnInterceptor);\n    }, defaultRequest);\n  };\n\n  object.addRequestInterceptor = function (interceptor) {\n    configuration.requestInterceptors.push(function (elem, operation, path, url, headers, params, httpConfig) {\n      return {\n        headers: headers,\n        params: params,\n        element: interceptor(elem, operation, path, url),\n        httpConfig: httpConfig\n      };\n    });\n    return this;\n  };\n\n  object.setRequestInterceptor = object.addRequestInterceptor;\n\n  object.addFullRequestInterceptor = function (interceptor) {\n    configuration.requestInterceptors.push(interceptor);\n    return this;\n  };\n\n  object.setFullRequestInterceptor = object.addFullRequestInterceptor;\n\n  configuration.onBeforeElemRestangularized = configuration.onBeforeElemRestangularized || function (elem) {\n    return elem;\n  };\n  object.setOnBeforeElemRestangularized = function (post) {\n    configuration.onBeforeElemRestangularized = post;\n    return this;\n  };\n\n  object.setRestangularizePromiseInterceptor = function (interceptor) {\n    configuration.restangularizePromiseInterceptor = interceptor;\n    return this;\n  };\n\n  /**\n   * This method is called after an element has been \"Restangularized\".\n   *\n   * It receives the element, a boolean indicating if it's an element or a collection\n   * and the name of the model\n   *\n   */\n  configuration.onElemRestangularized = configuration.onElemRestangularized || function (elem) {\n    return elem;\n  };\n  object.setOnElemRestangularized = function (post) {\n    configuration.onElemRestangularized = post;\n    return this;\n  };\n\n  configuration.shouldSaveParent = configuration.shouldSaveParent || function () {\n    return true;\n  };\n  object.setParentless = function (values) {\n    if (isArray(values)) {\n      configuration.shouldSaveParent = function (route) {\n        return !includes(values, route);\n      };\n    } else if (isBoolean(values)) {\n      configuration.shouldSaveParent = function () {\n        return !values;\n      };\n    }\n    return this;\n  };\n\n  /**\n   * This lets you set a suffix to every request.\n   *\n   * For example, if your api requires that for JSon requests you do /users/123.json, you can set that\n   * in here.\n   *\n   *\n   * By default, the suffix is null\n   */\n  configuration.suffix = isUndefined(configuration.suffix) ? null : configuration.suffix;\n  object.setRequestSuffix = function (newSuffix) {\n    configuration.suffix = newSuffix;\n    return this;\n  };\n\n  /**\n   * Add element transformers for certain routes.\n   */\n  configuration.transformers = configuration.transformers || {};\n  object.addElementTransformer = function (type, secondArg, thirdArg) {\n    let isCollection = null;\n    let transformer = null;\n    if (arguments.length === 2) {\n      transformer = secondArg;\n    } else {\n      transformer = thirdArg;\n      isCollection = secondArg;\n    }\n\n    let typeTransformers = configuration.transformers[type];\n    if (!typeTransformers) {\n      typeTransformers = configuration.transformers[type] = [];\n    }\n\n    typeTransformers.push(function (coll, elem) {\n      if (isNull(isCollection) || (coll === isCollection)) {\n        return transformer(elem);\n      }\n      return elem;\n    });\n\n    return object;\n  };\n\n  object.extendCollection = function (route, fn) {\n    return object.addElementTransformer(route, true, fn);\n  };\n\n  object.extendModel = function (route, fn) {\n    return object.addElementTransformer(route, false, fn);\n  };\n\n  configuration.transformElem = function (elem, isCollection, route, Restangular, force) {\n    if (!force && !configuration.transformLocalElements && !elem[configuration.restangularFields.fromServer]) {\n      return elem;\n    }\n    const typeTransformers = configuration.transformers[route];\n    let changedElem = elem;\n    if (typeTransformers) {\n      each(typeTransformers, function (transformer: (isCollection: boolean, changedElem: any) => any) {\n        changedElem = transformer(isCollection, changedElem);\n      });\n    }\n    return configuration.onElemRestangularized(changedElem, isCollection, route, Restangular);\n  };\n\n  configuration.transformLocalElements = isUndefined(configuration.transformLocalElements) ?\n    false :\n    configuration.transformLocalElements;\n\n  object.setTransformOnlyServerElements = function (active) {\n    configuration.transformLocalElements = !active;\n  };\n\n  configuration.fullResponse = isUndefined(configuration.fullResponse) ? false : configuration.fullResponse;\n  object.setFullResponse = function (full) {\n    configuration.fullResponse = full;\n    return this;\n  };\n\n\n  // Internal values and functions\n  configuration.urlCreatorFactory = {};\n\n  /**\n   * Base URL Creator. Base prototype for everything related to it\n   **/\n\n  const BaseCreator = function () {\n  };\n\n  BaseCreator.prototype.setConfig = function (config) {\n    this.config = config;\n    return this;\n  };\n\n  BaseCreator.prototype.parentsArray = function (current) {\n    const parents = [];\n    while (current) {\n      parents.push(current);\n      current = current[this.config.restangularFields.parentResource];\n    }\n    return parents.reverse();\n  };\n\n  function RestangularResource(config, $http, url, configurer) {\n    const resource = {};\n    each(keys(configurer), function (key) {\n      const value = configurer[key];\n\n      // Add default parameters\n      value.params = extend({}, value.params, config.defaultRequestParams[value.method.toLowerCase()]);\n      // We don't want the ? if no params are there\n      if (isEmpty(value.params)) {\n        delete value.params;\n      }\n\n      if (config.isSafe(value.method)) {\n\n        resource[key] = function () {\n          const resultConfig = extend(value, {\n            url: url\n          });\n          return $http.createRequest(resultConfig);\n        };\n\n      } else {\n\n        resource[key] = function (data) {\n          const resultConfig = extend(value, {\n            url: url,\n            data: data\n          });\n          return $http.createRequest(resultConfig);\n        };\n\n      }\n    });\n\n    return resource;\n  }\n\n  BaseCreator.prototype.resource = function (current, $http, localHttpConfig, callHeaders, callParams, what, etag, operation) {\n    const params = defaults(callParams || {}, this.config.defaultRequestParams.common);\n    const headers = defaults(callHeaders || {}, this.config.defaultHeaders);\n\n    if (etag) {\n      if (!configuration.isSafe(operation)) {\n        headers['If-Match'] = etag;\n      } else {\n        headers['If-None-Match'] = etag;\n      }\n    }\n\n    let url = this.base(current);\n\n    if (what) {\n      let add = '';\n      if (!/\\/$/.test(url)) {\n        add += '/';\n      }\n      add += what;\n      url += add;\n    }\n\n    if (this.config.suffix &&\n      url.indexOf(this.config.suffix, url.length - this.config.suffix.length) === -1 && !this.config.getUrlFromElem(current)) {\n      url += this.config.suffix;\n    }\n\n    current[this.config.restangularFields.httpConfig] = undefined;\n\n    return RestangularResource(this.config, $http, url, {\n      getList: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'GET',\n          params: params,\n          headers: headers\n        }),\n\n      get: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'GET',\n          params: params,\n          headers: headers\n        }),\n\n      jsonp: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'jsonp',\n          params: params,\n          headers: headers\n        }),\n\n      put: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'PUT',\n          params: params,\n          headers: headers\n        }),\n\n      post: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'POST',\n          params: params,\n          headers: headers\n        }),\n\n      remove: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'DELETE',\n          params: params,\n          headers: headers\n        }),\n\n      head: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'HEAD',\n          params: params,\n          headers: headers\n        }),\n\n      trace: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'TRACE',\n          params: params,\n          headers: headers\n        }),\n\n      options: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'OPTIONS',\n          params: params,\n          headers: headers\n        }),\n\n      patch: this.config.withHttpValues(localHttpConfig,\n        {\n          method: 'PATCH',\n          params: params,\n          headers: headers\n        })\n    });\n  };\n\n  /**\n   * This is the Path URL creator. It uses Path to show Hierarchy in the Rest API.\n   * This means that if you have an Account that then has a set of Buildings, a URL to a building\n   * would be /accounts/123/buildings/456\n   **/\n  const Path = function () {\n  };\n\n  Path.prototype = new BaseCreator();\n\n  Path.prototype.normalizeUrl = function (url) {\n    const parts = /((?:http[s]?:)?\\/\\/)?(.*)?/.exec(url);\n    parts[2] = parts[2].replace(/[\\\\\\/]+/g, '/');\n    return (typeof parts[1] !== 'undefined') ? parts[1] + parts[2] : parts[2];\n  };\n\n  Path.prototype.base = function (current) {\n    const __this = this;\n    return reduce(this.parentsArray(current), function (acum: any, elem: any) {\n      let elemUrl;\n      const elemSelfLink = __this.config.getUrlFromElem(elem);\n      if (elemSelfLink) {\n        if (__this.config.isAbsoluteUrl(elemSelfLink)) {\n          return elemSelfLink;\n        } else {\n          elemUrl = elemSelfLink;\n        }\n      } else {\n        elemUrl = elem[__this.config.restangularFields.route];\n\n        if (elem[__this.config.restangularFields.restangularCollection]) {\n          const ids = elem[__this.config.restangularFields.ids];\n          if (ids) {\n            elemUrl += '/' + ids.join(',');\n          }\n        } else {\n          let elemId: any;\n          if (__this.config.useCannonicalId) {\n            elemId = __this.config.getCannonicalIdFromElem(elem);\n          } else {\n            elemId = __this.config.getIdFromElem(elem);\n          }\n\n          if (configuration.isValidId(elemId) && !elem.singleOne) {\n            elemUrl += '/' + (__this.config.encodeIds ? encodeURIComponent(elemId) : elemId);\n          }\n        }\n      }\n      acum = acum.replace(/\\/$/, '') + '/' + elemUrl;\n      return __this.normalizeUrl(acum);\n\n    }, this.config.baseUrl);\n  };\n\n\n  Path.prototype.fetchUrl = function (current, what) {\n    let baseUrl = this.base(current);\n    if (what) {\n      baseUrl += '/' + what;\n    }\n    return baseUrl;\n  };\n\n  Path.prototype.fetchRequestedUrl = function (current, what) {\n    const url = this.fetchUrl(current, what);\n    const params = current[configuration.restangularFields.reqParams];\n\n    // From here on and until the end of fetchRequestedUrl,\n    // the code has been kindly borrowed from angular.js\n    // The reason for such code bloating is coherence:\n    //   If the user were to use this for cache management, the\n    //   serialization of parameters would need to be identical\n    //   to the one done by angular for cache keys to match.\n    function sortedKeys(obj) {\n      const resultKeys = [];\n      for (const key in obj) {\n        if (obj.hasOwnProperty(key)) {\n          resultKeys.push(key);\n        }\n      }\n      return resultKeys.sort();\n    }\n\n    function forEachSorted(obj, iterator?, context?) {\n      const sortedKeysArray = sortedKeys(obj);\n      for (let i = 0; i < sortedKeysArray.length; i++) {\n        iterator.call(context, obj[sortedKeysArray[i]], sortedKeysArray[i]);\n      }\n      return sortedKeysArray;\n    }\n\n    function encodeUriQuery(val, pctEncodeSpaces?) {\n      return encodeURIComponent(val)\n      .replace(/%40/gi, '@')\n      .replace(/%3A/gi, ':')\n      .replace(/%24/g, '$')\n      .replace(/%2C/gi, ',')\n      .replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n    }\n\n    if (!params) {\n      return url + (this.config.suffix || '');\n    }\n\n    const parts = [];\n    forEachSorted(params, function (value, key) {\n      if (value === null || value === undefined) {\n        return;\n      }\n      if (!isArray(value)) {\n        value = [value];\n      }\n\n      forEach(value, function (v) {\n        if (isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(v));\n      });\n    });\n\n    return url + (this.config.suffix || '') + ((url.indexOf('?') === -1) ? '?' : '&') + parts.join('&');\n  };\n\n  configuration.urlCreatorFactory.path = Path;\n}\n","import { Injectable, Inject, Injector, Optional, Type } from '@angular/core';\nimport {\n  map,\n  bind,\n  union,\n  values,\n  pick,\n  isEmpty,\n  isFunction,\n  isNumber,\n  isUndefined,\n  isArray,\n  isObject,\n  extend,\n  each,\n  every,\n  omit,\n  get,\n  defaults,\n  clone,\n  includes\n} from 'lodash';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { RESTANGULAR } from './ngx-restangular.config';\nimport { RestangularHttp } from './ngx-restangular-http';\nimport { RestangularConfigurer } from './ngx-restangular-config.factory';\n\n@Injectable()\nexport class Restangular {\n  provider: {\n    setBaseUrl: any,\n    setDefaultHeaders: any,\n    configuration: any,\n    setSelfLinkAbsoluteUrl: any,\n    setExtraFields: any,\n    setDefaultHttpFields: any,\n    setPlainByDefault: any,\n    setEncodeIds: any,\n    setDefaultRequestParams: any,\n    requestParams: any,\n    defaultHeaders: any,\n    setDefaultResponseMethod: any,\n    defaultResponseMethod: any,\n    setMethodOverriders: any,\n    setJsonp: any,\n    setUrlCreator: any,\n    setRestangularFields: any,\n    setUseCannonicalId: any,\n    addResponseInterceptor: any,\n    addErrorInterceptor: any,\n    setResponseInterceptor: any,\n    setResponseExtractor: any,\n    setErrorInterceptor: any,\n    addRequestInterceptor: any,\n    setRequestInterceptor: any,\n    setFullRequestInterceptor: any,\n    addFullRequestInterceptor: any,\n    setOnBeforeElemRestangularized: any,\n    setRestangularizePromiseInterceptor: any,\n    setOnElemRestangularized: any,\n    setParentless: any,\n    setRequestSuffix: any,\n    addElementTransformer: any,\n    extendCollection: any,\n    extendModel: any,\n    setTransformOnlyServerElements: any,\n    setFullResponse: any,\n    $get: any\n  };\n  addElementTransformer: any;\n  extendCollection: any;\n  extendModel: any;\n  copy;\n  configuration;\n  service;\n  id;\n  route;\n  parentResource;\n  restangularCollection;\n  cannonicalId;\n  etag;\n  selfLink;\n  get;\n  getList;\n  put;\n  post;\n  remove;\n  head;\n  trace;\n  options;\n  patch;\n  getRestangularUrl;\n  getRequestedUrl;\n  putElement;\n  addRestangularMethod;\n  getParentList;\n  clone;\n  ids;\n  httpConfig;\n  reqParams;\n  one;\n  all;\n  several;\n  oneUrl;\n  allUrl;\n  customPUT;\n  customPATCH;\n  customPOST;\n  customDELETE;\n  customGET;\n  customGETLIST;\n  customOperation;\n  doPUT;\n  doPATCH;\n  doPOST;\n  doDELETE;\n  doGET;\n  doGETLIST;\n  fromServer;\n  withConfig;\n  withHttpConfig;\n  singleOne;\n  plain;\n  save;\n  restangularized;\n  restangularizeElement;\n  restangularizeCollection;\n\n  constructor(\n    @Optional() @Inject(RESTANGULAR) public configObj,\n    private injector: Injector,\n    private http: RestangularHttp\n  ) {\n    this.provider = new providerConfig(this.http);\n    const element = this.provider.$get();\n    Object.assign(this, element);\n\n    this.setDefaultConfig();\n  }\n\n  setDefaultConfig() {\n    if (!this.configObj || !isFunction(this.configObj.fn)) {\n      return;\n    }\n\n    const arrDI = map(this.configObj.arrServices, (services: Type<any>) => {\n      return this.injector.get(services);\n    });\n\n    this.configObj.fn(...[this.provider, ...arrDI]);\n  }\n}\n\nfunction providerConfig($http) {\n  const globalConfiguration = {};\n\n  RestangularConfigurer(this, globalConfiguration);\n\n  this.$get = $get;\n\n  function $get() {\n\n    function createServiceForConfiguration(config) {\n      const service: any = {};\n\n      const urlHandler = new config.urlCreatorFactory[config.urlCreator]();\n      urlHandler.setConfig(config);\n\n      function restangularizeBase(parent, elem, route, reqParams, fromServer) {\n        elem[config.restangularFields.route] = route;\n        elem[config.restangularFields.getRestangularUrl] = bind(urlHandler.fetchUrl, urlHandler, elem);\n        elem[config.restangularFields.getRequestedUrl] = bind(urlHandler.fetchRequestedUrl, urlHandler, elem);\n        elem[config.restangularFields.addRestangularMethod] = bind(addRestangularMethodFunction, elem);\n        elem[config.restangularFields.clone] = bind(copyRestangularizedElement, elem);\n        elem[config.restangularFields.reqParams] = isEmpty(reqParams) ? null : reqParams;\n        elem[config.restangularFields.withHttpConfig] = bind(withHttpConfig, elem);\n        elem[config.restangularFields.plain] = bind(stripRestangular, elem, elem);\n\n        // Tag element as restangularized\n        elem[config.restangularFields.restangularized] = true;\n\n        // RequestLess connection\n        elem[config.restangularFields.one] = bind(one, elem, elem);\n        elem[config.restangularFields.all] = bind(all, elem, elem);\n        elem[config.restangularFields.several] = bind(several, elem, elem);\n        elem[config.restangularFields.oneUrl] = bind(oneUrl, elem, elem);\n        elem[config.restangularFields.allUrl] = bind(allUrl, elem, elem);\n\n        elem[config.restangularFields.fromServer] = !!fromServer;\n\n        if (parent && config.shouldSaveParent(route)) {\n          const parentId = config.getIdFromElem(parent);\n          const parentUrl = config.getUrlFromElem(parent);\n\n          const restangularFieldsForParent = union(\n            values(pick(config.restangularFields, ['route', 'singleOne', 'parentResource'])),\n            config.extraFields\n          );\n          const parentResource = pick(parent, restangularFieldsForParent);\n\n          if (config.isValidId(parentId)) {\n            config.setIdToElem(parentResource, parentId, route);\n          }\n          if (config.isValidId(parentUrl)) {\n            config.setUrlToElem(parentResource, parentUrl, route);\n          }\n\n          elem[config.restangularFields.parentResource] = parentResource;\n        } else {\n          elem[config.restangularFields.parentResource] = null;\n        }\n        return elem;\n      }\n\n      function one(parent, route, id, singleOne) {\n        let error;\n        if (isNumber(route) || isNumber(parent)) {\n          error = 'You\\'re creating a Restangular entity with the number ';\n          error += 'instead of the route or the parent. For example, you can\\'t call .one(12).';\n          throw new Error(error);\n        }\n        if (isUndefined(route)) {\n          error = 'You\\'re creating a Restangular entity either without the path. ';\n          error += 'For example you can\\'t call .one(). Please check if your arguments are valid.';\n          throw new Error(error);\n        }\n        const elem = {};\n        config.setIdToElem(elem, id, route);\n        config.setFieldToElem(config.restangularFields.singleOne, elem, singleOne);\n        return restangularizeElem(parent, elem, route, false);\n      }\n\n      function all(parent, route) {\n        return restangularizeCollection(parent, [], route, false);\n      }\n\n      function several(parent, route /*, ids */) {\n        const collection = [];\n        collection[config.restangularFields.ids] = Array.prototype.splice.call(arguments, 2);\n        return restangularizeCollection(parent, collection, route, false);\n      }\n\n      function oneUrl(parent, route, url) {\n        if (!route) {\n          throw new Error('Route is mandatory when creating new Restangular objects.');\n        }\n        const elem = {};\n        config.setUrlToElem(elem, url, route);\n        return restangularizeElem(parent, elem, route, false);\n      }\n\n      function allUrl(parent, route, url) {\n        if (!route) {\n          throw new Error('Route is mandatory when creating new Restangular objects.');\n        }\n        const elem = {};\n        config.setUrlToElem(elem, url, route);\n        return restangularizeCollection(parent, elem, route, false);\n      }\n\n      // Promises\n      function restangularizeResponse(subject, isCollection, valueToFill) {\n        return subject.pipe(filter(res => !!res));\n      }\n\n      function resolvePromise(subject, response, data, filledValue) {\n        extend(filledValue, data);\n\n        // Trigger the full response interceptor.\n        if (config.fullResponse) {\n          subject.next(extend(response, {\n            data: data\n          }));\n        } else {\n          subject.next(data);\n        }\n\n        subject.complete();\n      }\n\n      // Elements\n      function stripRestangular(elem) {\n        if (isArray(elem)) {\n          const array = [];\n          each(elem, function (value) {\n            array.push(config.isRestangularized(value) ? stripRestangular(value) : value);\n          });\n          return array;\n        } else {\n          return omit(elem, values(omit(config.restangularFields, 'id')));\n        }\n      }\n\n      function addCustomOperation(elem) {\n        elem[config.restangularFields.customOperation] = bind(customFunction, elem);\n        const requestMethods = {get: customFunction, delete: customFunction};\n        each(['put', 'patch', 'post'], function (name) {\n          requestMethods[name] = function (operation, element, path, params, headers) {\n            return bind(customFunction, this)(operation, path, params, headers, element);\n          };\n        });\n        each(requestMethods, function (requestFunc, name) {\n          const callOperation = name === 'delete' ? 'remove' : name;\n          each(['do', 'custom'], function (alias) {\n            elem[alias + name.toUpperCase()] = bind(requestFunc, elem, callOperation);\n          });\n        });\n        elem[config.restangularFields.customGETLIST] = bind(fetchFunction, elem);\n        elem[config.restangularFields.doGETLIST] = elem[config.restangularFields.customGETLIST];\n      }\n\n      function copyRestangularizedElement(fromElement, toElement = {}) {\n        const copiedElement = Object.assign(toElement, fromElement);\n        return restangularizeElem(copiedElement[config.restangularFields.parentResource],\n          copiedElement, copiedElement[config.restangularFields.route], true);\n      }\n\n      function restangularizeElem(parent, element, route, fromServer?, collection?, reqParams?) {\n        const elem = config.onBeforeElemRestangularized(element, false, route);\n\n        const localElem = restangularizeBase(parent, elem, route, reqParams, fromServer);\n\n        if (config.useCannonicalId) {\n          localElem[config.restangularFields.cannonicalId] = config.getIdFromElem(localElem);\n        }\n\n        if (collection) {\n          localElem[config.restangularFields.getParentList] = function () {\n            return collection;\n          };\n        }\n\n        localElem[config.restangularFields.restangularCollection] = false;\n        localElem[config.restangularFields.get] = bind(getFunction, localElem);\n        localElem[config.restangularFields.getList] = bind(fetchFunction, localElem);\n        localElem[config.restangularFields.put] = bind(putFunction, localElem);\n        localElem[config.restangularFields.post] = bind(postFunction, localElem);\n        localElem[config.restangularFields.remove] = bind(deleteFunction, localElem);\n        localElem[config.restangularFields.head] = bind(headFunction, localElem);\n        localElem[config.restangularFields.trace] = bind(traceFunction, localElem);\n        localElem[config.restangularFields.options] = bind(optionsFunction, localElem);\n        localElem[config.restangularFields.patch] = bind(patchFunction, localElem);\n        localElem[config.restangularFields.save] = bind(save, localElem);\n\n        addCustomOperation(localElem);\n        return config.transformElem(localElem, false, route, service, true);\n      }\n\n      function restangularizeCollection(parent, element, route, fromServer?, reqParams?) {\n        const elem = config.onBeforeElemRestangularized(element, true, route);\n\n        const localElem = restangularizeBase(parent, elem, route, reqParams, fromServer);\n        localElem[config.restangularFields.restangularCollection] = true;\n        localElem[config.restangularFields.post] = bind(postFunction, localElem, null);\n        localElem[config.restangularFields.remove] = bind(deleteFunction, localElem);\n        localElem[config.restangularFields.head] = bind(headFunction, localElem);\n        localElem[config.restangularFields.trace] = bind(traceFunction, localElem);\n        localElem[config.restangularFields.putElement] = bind(putElementFunction, localElem);\n        localElem[config.restangularFields.options] = bind(optionsFunction, localElem);\n        localElem[config.restangularFields.patch] = bind(patchFunction, localElem);\n        localElem[config.restangularFields.get] = bind(getById, localElem);\n        localElem[config.restangularFields.getList] = bind(fetchFunction, localElem, null);\n\n        addCustomOperation(localElem);\n        return config.transformElem(localElem, true, route, service, true);\n      }\n\n      function restangularizeCollectionAndElements(parent, element, route) {\n        const collection = restangularizeCollection(parent, element, route, false);\n        each(collection, function (elem) {\n          if (elem) {\n            restangularizeElem(parent, elem, route, false);\n          }\n        });\n        return collection;\n      }\n\n      function getById(id, reqParams, headers) {\n        return this.customGET(id.toString(), reqParams, headers);\n      }\n\n      function putElementFunction(idx, params, headers) {\n        const __this = this;\n        const elemToPut = this[idx];\n        const subject = new BehaviorSubject(null);\n        let filledArray = [];\n        filledArray = config.transformElem(filledArray, true, elemToPut[config.restangularFields.route], service);\n\n        elemToPut.put(params, headers)\n        .subscribe(function (serverElem) {\n          const newArray = copyRestangularizedElement(__this);\n          newArray[idx] = serverElem;\n          filledArray = newArray;\n          subject.next(newArray);\n        }, function (response) {\n          subject.error(response);\n        }, function () {\n          subject.complete();\n        });\n\n        return restangularizeResponse(subject, true, filledArray);\n      }\n\n      function parseResponse(resData, operation, route, fetchUrl, response, subject) {\n        const data = config.responseExtractor(resData, operation, route, fetchUrl, response, subject);\n        const etag = response.headers.get('ETag');\n        if (data && etag) {\n          data[config.restangularFields.etag] = etag;\n        }\n        return data;\n      }\n\n      function fetchFunction(what, reqParams, headers) {\n        const __this = this;\n        const subject = new BehaviorSubject(null);\n        const operation = 'getList';\n        const url = urlHandler.fetchUrl(this, what);\n        const whatFetched = what || __this[config.restangularFields.route];\n\n        const request = config.fullRequestInterceptor(null, operation,\n          whatFetched, url, headers || {}, reqParams || {}, this[config.restangularFields.httpConfig] || {});\n\n        let filledArray = [];\n        filledArray = config.transformElem(filledArray, true, whatFetched, service);\n\n        let method = 'getList';\n\n        if (config.jsonp) {\n          method = 'jsonp';\n        }\n\n        const okCallback = function (response) {\n          const resData = response.body;\n          const fullParams = response.config.params;\n          let data = parseResponse(resData, operation, whatFetched, url, response, subject);\n\n          // support empty response for getList() calls (some APIs respond with 204 and empty body)\n          if (isUndefined(data) || '' === data) {\n            data = [];\n          }\n          if (!isArray(data)) {\n            throw new Error('Response for getList SHOULD be an array and not an object or something else');\n          }\n\n          if (true === config.plainByDefault) {\n            return resolvePromise(subject, response, data, filledArray);\n          }\n\n          let processedData = map(data, function (elem) {\n            if (!__this[config.restangularFields.restangularCollection]) {\n              return restangularizeElem(__this, elem, what, true, data);\n            } else {\n              return restangularizeElem(__this[config.restangularFields.parentResource],\n                elem, __this[config.restangularFields.route], true, data);\n            }\n          });\n\n          processedData = extend(data, processedData);\n\n          if (!__this[config.restangularFields.restangularCollection]) {\n            resolvePromise(\n              subject,\n              response,\n              restangularizeCollection(\n                __this,\n                processedData,\n                what,\n                true,\n                fullParams\n              ),\n              filledArray\n            );\n          } else {\n            resolvePromise(\n              subject,\n              response,\n              restangularizeCollection(\n                __this[config.restangularFields.parentResource],\n                processedData,\n                __this[config.restangularFields.route],\n                true,\n                fullParams\n              ),\n              filledArray\n            );\n          }\n        };\n\n        urlHandler.resource(this, $http, request.httpConfig, request.headers, request.params, what,\n          this[config.restangularFields.etag], operation)[method]()\n        .subscribe(okCallback, function error(response) {\n          if (response.status === 304 && __this[config.restangularFields.restangularCollection]) {\n            resolvePromise(subject, response, __this, filledArray);\n          } else if (every(config.errorInterceptors, function (cb: any) {\n\n            return cb(response, subject, okCallback) !== false;\n          })) {\n            // triggered if no callback returns false\n            subject.error(response);\n          }\n        });\n\n        return restangularizeResponse(subject, true, filledArray);\n      }\n\n      function withHttpConfig(httpConfig) {\n        this[config.restangularFields.httpConfig] = httpConfig;\n        return this;\n      }\n\n      function save(params, headers) {\n        if (this[config.restangularFields.fromServer]) {\n          return this[config.restangularFields.put](params, headers);\n        } else {\n          return bind(elemFunction, this)('post', undefined, params, undefined, headers);\n        }\n      }\n\n      function elemFunction(operation, what, params, obj, headers) {\n        const __this = this;\n        const subject = new BehaviorSubject(null);\n        const resParams = params || {};\n        const route = what || this[config.restangularFields.route];\n        const fetchUrl = urlHandler.fetchUrl(this, what);\n\n        let callObj = obj || this;\n        // fallback to etag on restangular object (since for custom methods we probably don't explicitly specify the etag field)\n        const etag = callObj[config.restangularFields.etag] || (operation !== 'post' ? this[config.restangularFields.etag] : null);\n\n        if (isObject(callObj) && config.isRestangularized(callObj)) {\n          callObj = stripRestangular(callObj);\n        }\n        const request = config.fullRequestInterceptor(\n          callObj,\n          operation,\n          route,\n          fetchUrl,\n          headers || {},\n          resParams || {},\n          this[config.restangularFields.httpConfig] || {}\n        );\n\n        let filledObject = {};\n        filledObject = config.transformElem(filledObject, false, route, service);\n\n        const okCallback = function (response) {\n          const resData = get(response, 'body');\n          const fullParams = get(response, 'config.params');\n\n          const elem = parseResponse(resData, operation, route, fetchUrl, response, subject);\n\n          if (elem) {\n            let data;\n            if (true === config.plainByDefault) {\n              return resolvePromise(subject, response, elem, filledObject);\n            }\n\n            if (operation === 'post' && !__this[config.restangularFields.restangularCollection]) {\n              data = restangularizeElem(\n                __this[config.restangularFields.parentResource],\n                elem,\n                route,\n                true,\n                null,\n                fullParams\n              );\n              resolvePromise(subject, response, data, filledObject);\n            } else {\n              data = restangularizeElem(\n                __this[config.restangularFields.parentResource],\n                elem,\n                __this[config.restangularFields.route],\n                true,\n                null,\n                fullParams\n              );\n\n              data[config.restangularFields.singleOne] = __this[config.restangularFields.singleOne];\n              resolvePromise(subject, response, data, filledObject);\n            }\n\n          } else {\n            resolvePromise(subject, response, undefined, filledObject);\n          }\n        };\n\n        const errorCallback = function (response) {\n          if (response.status === 304 && config.isSafe(operation)) {\n            resolvePromise(subject, response, __this, filledObject);\n          } else if (every(config.errorInterceptors, function (cb: any) {\n            return cb(response, subject, okCallback) !== false;\n          })) {\n            // triggered if no callback returns false\n            subject.error(response);\n          }\n        };\n        // Overriding HTTP Method\n        let callOperation = operation;\n        let callHeaders = extend({}, request.headers);\n        const isOverrideOperation = config.isOverridenMethod(operation);\n        if (isOverrideOperation) {\n          callOperation = 'post';\n          callHeaders = extend(callHeaders, {'X-HTTP-Method-Override': operation === 'remove' ? 'DELETE' : operation.toUpperCase()});\n        } else if (config.jsonp && callOperation === 'get') {\n          callOperation = 'jsonp';\n        }\n\n        if (config.isSafe(operation)) {\n          if (isOverrideOperation) {\n            urlHandler.resource(this, $http, request.httpConfig, callHeaders, request.params,\n              what, etag, callOperation)[callOperation]({}).subscribe(okCallback, errorCallback);\n          } else {\n            urlHandler.resource(this, $http, request.httpConfig, callHeaders, request.params,\n              what, etag, callOperation)[callOperation]().subscribe(okCallback, errorCallback);\n          }\n        } else {\n          urlHandler.resource(this, $http, request.httpConfig, callHeaders, request.params,\n            what, etag, callOperation)[callOperation](request.element).subscribe(okCallback, errorCallback);\n        }\n\n        return restangularizeResponse(subject, false, filledObject);\n      }\n\n      function getFunction(params, headers) {\n        return bind(elemFunction, this)('get', undefined, params, undefined, headers);\n      }\n\n      function deleteFunction(params, headers) {\n        return bind(elemFunction, this)('remove', undefined, params, undefined, headers);\n      }\n\n      function putFunction(params, headers) {\n        return bind(elemFunction, this)('put', undefined, params, undefined, headers);\n      }\n\n      function postFunction(what, elem, params, headers) {\n        return bind(elemFunction, this)('post', what, params, elem, headers);\n      }\n\n      function headFunction(params, headers) {\n        return bind(elemFunction, this)('head', undefined, params, undefined, headers);\n      }\n\n      function traceFunction(params, headers) {\n        return bind(elemFunction, this)('trace', undefined, params, undefined, headers);\n      }\n\n      function optionsFunction(params, headers) {\n        return bind(elemFunction, this)('options', undefined, params, undefined, headers);\n      }\n\n      function patchFunction(elem, params, headers) {\n        return bind(elemFunction, this)('patch', undefined, params, elem, headers);\n      }\n\n      function customFunction(operation, path, params, headers, elem) {\n        return bind(elemFunction, this)(operation, path, params, elem, headers);\n      }\n\n      function addRestangularMethodFunction(name, operation, path, defaultParams, defaultHeaders, defaultElem) {\n        let bindedFunction;\n        if (operation === 'getList') {\n          bindedFunction = bind(fetchFunction, this, path);\n        } else {\n          bindedFunction = bind(customFunction, this, operation, path);\n        }\n\n        const createdFunction = function (params, headers, elem) {\n          const callParams = defaults({\n            params: params,\n            headers: headers,\n            elem: elem\n          }, {\n            params: defaultParams,\n            headers: defaultHeaders,\n            elem: defaultElem\n          });\n          return bindedFunction(callParams.params, callParams.headers, callParams.elem);\n        };\n\n        if (config.isSafe(operation)) {\n          this[name] = createdFunction;\n        } else {\n          this[name] = function (elem, params, headers) {\n            return createdFunction(params, headers, elem);\n          };\n        }\n      }\n\n      function withConfigurationFunction(configurer) {\n        const newConfig = clone(omit(config, 'configuration'));\n        RestangularConfigurer(newConfig, newConfig);\n        configurer(newConfig);\n        return createServiceForConfiguration(newConfig);\n      }\n\n      function toService(route, parent) {\n        const knownCollectionMethods = values(config.restangularFields);\n        const serv: any = {};\n        const collection = (parent || service).all(route);\n        serv.one = bind(one, (parent || service), parent, route);\n        serv.all = bind(collection.all, collection);\n        serv.post = bind(collection.post, collection);\n        serv.getList = bind(collection.getList, collection);\n        serv.withHttpConfig = bind(collection.withHttpConfig, collection);\n        serv.get = bind(collection.get, collection);\n\n        for (const prop in collection) {\n          if (collection.hasOwnProperty(prop) && isFunction(collection[prop]) && !includes(knownCollectionMethods, prop)) {\n            serv[prop] = bind(collection[prop], collection);\n          }\n        }\n\n        return serv;\n      }\n\n      RestangularConfigurer(service, config);\n\n      service.copy = bind(copyRestangularizedElement, service);\n\n      service.service = bind(toService, service);\n\n      service.withConfig = bind(withConfigurationFunction, service);\n\n      service.one = bind(one, service, null);\n\n      service.all = bind(all, service, null);\n\n      service.several = bind(several, service, null);\n\n      service.oneUrl = bind(oneUrl, service, null);\n\n      service.allUrl = bind(allUrl, service, null);\n\n      service.stripRestangular = bind(stripRestangular, service);\n\n      service.restangularizeElement = bind(restangularizeElem, service);\n\n      service.restangularizeCollection = bind(restangularizeCollectionAndElements, service);\n\n      return service;\n    }\n\n    return createServiceForConfiguration(globalConfiguration);\n  }\n\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf, InjectionToken } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { RESTANGULAR, RestangularFactory } from './ngx-restangular.config';\nimport { Restangular } from './ngx-restangular';\nimport { RestangularHttp } from './ngx-restangular-http';\n\nexport const CONFIG_OBJ = new InjectionToken<string>('configObj');\n\n@NgModule({\n  imports: [HttpClientModule],\n  providers: [RestangularHttp, Restangular]\n})\nexport class RestangularModule {\n\n  constructor(@Optional() @SkipSelf() parentModule: RestangularModule) {\n    if (parentModule) {\n      throw new Error(\n        'RestangularModule is already loaded. Import it in the AppModule only');\n    }\n  }\n\n  static forRoot(configFunction?: (provider: any, ...arg: any[]) => void): ModuleWithProviders<RestangularModule>;\n  static forRoot(providers?: any[], configFunction?: (provider: any, ...arg: any[]) => void): ModuleWithProviders<RestangularModule>;\n  static forRoot(config1?, config2?): ModuleWithProviders<RestangularModule> {\n    return {\n      ngModule: RestangularModule,\n      providers: [\n        {provide: CONFIG_OBJ, useValue: [config1, config2]},\n        {provide: RESTANGULAR, useFactory: RestangularFactory, deps: [CONFIG_OBJ]},\n      ]\n    };\n  }\n\n}\n","/*\n * Public API Surface of ngx-restangular\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","i1.RestangularHttp"],"mappings":"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"}