UNPKG

115 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-restangular.umd.js.map","sources":[null,"ng://ngx-restangular/lib/ngx-restangular.config.ts","ng://ngx-restangular/lib/ngx-restangular-helper.ts","ng://ngx-restangular/lib/ngx-restangular-http.ts","ng://ngx-restangular/lib/ngx-restangular-config.factory.ts","ng://ngx-restangular/lib/ngx-restangular.ts","ng://ngx-restangular/lib/ngx-restangular.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","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\nimport { assign } from 'core-js/fn/object';\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 = 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(assign({}, headers));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpBackend, HttpErrorResponse, 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';\nimport { HttpEvent } from '@angular/common/http/src/response';\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 { assign } from 'core-js/fn/object';\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(http);\n const element = this.provider.$get();\n 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 = 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;\n static forRoot(providers?: any[], configFunction?: (provider: any, ...arg: any[]) => void): ModuleWithProviders;\n static forRoot(config1?, config2?): ModuleWithProviders {\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"],"names":["InjectionToken","isArray","HttpRequest","assign","HttpParams","HttpHeaders","http","filter","HttpResponse","map","throwError","HttpErrorResponse","catchError","Injectable","HttpBackend","object","includes","isUndefined","isNull","defaults","each","extend","find","has","initial","last","clone","reduce","isBoolean","keys","isEmpty","forEach","isObject","isFunction","Optional","Inject","Injector","bind","union","values","pick","isNumber","omit","BehaviorSubject","every","get","NgModule","HttpClientModule","SkipSelf"],"mappings":"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"}