UNPKG

101 kBSource Map (JSON)View Raw
1{"version":3,"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"],"names":["__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","RESTANGULAR","InjectionToken","RestangularFactory","_a","_b","callbackOrServices","callback","arrServices","fn","isArray","RestangularHelper","createRequest","options","requestQueryParams","createRequestQueryParams","params","requestHeaders","createRequestHeaders","headers","methodName","method","toUpperCase","withCredentials","request","HttpRequest","url","data","responseType","indexOf","queryParams","assign","search","HttpParams","key","Array","forEach","val","append","JSON","stringify","HttpHeaders","RestangularHttp","http","this","prototype","_this","handle","pipe","filter","event","HttpResponse","map","response","ok","throwError","HttpErrorResponse","config","catchError","err","repeatRequest","newRequest","Injectable","HttpBackend","RestangularConfigurer","object","configuration","safeMethods","isSafe","operation","includes","toLowerCase","absolutePattern","isAbsoluteUrl","string","isUndefined","absoluteUrl","isNull","test","setSelfLinkAbsoluteUrl","baseUrl","setBaseUrl","newBaseUrl","substring","extraFields","setExtraFields","newExtraFields","defaultHttpFields","setDefaultHttpFields","values","plainByDefault","setPlainByDefault","withHttpValues","httpLocalConfig","obj","defaults","encodeIds","setEncodeIds","encode","defaultRequestParams","get","post","put","remove","common","setDefaultRequestParams","param1","param2","methods","each","requestParams","defaultHeaders","setDefaultHeaders","defaultResponseMethod","setDefaultResponseMethod","methodOverriders","setMethodOverriders","overriders","extend","isOverridenMethod","jsonp","setJsonp","active","find","one","urlCreator","setUrlCreator","name","has","urlCreatorFactory","Error","restangularFields","id","route","parentResource","restangularCollection","cannonicalId","etag","selfLink","getList","head","trace","patch","getRestangularUrl","getRequestedUrl","putElement","addRestangularMethod","getParentList","clone","ids","httpConfig","reqParams","all","several","oneUrl","allUrl","customPUT","customPATCH","customPOST","customDELETE","customGET","customGETLIST","customOperation","doPUT","doPATCH","doPOST","doDELETE","doGET","doGETLIST","fromServer","withConfig","withHttpConfig","singleOne","plain","save","restangularized","setRestangularFields","resFields","isRestangularized","setFieldToElem","field","elem","properties","split","idValue","initial","prop","index","last","getFieldFromElem","setIdToElem","getIdFromElem","isValidId","elemId","setUrlToElem","getUrlFromElem","useCannonicalId","setUseCannonicalId","getCannonicalIdFromElem","responseInterceptors","defaultResponseInterceptor","responseExtractor","what","subject","interceptors","theData","interceptor","addResponseInterceptor","extractor","errorInterceptors","addErrorInterceptor","setResponseInterceptor","setResponseExtractor","setErrorInterceptor","requestInterceptors","defaultInterceptor","element","path","fullRequestInterceptor","defaultRequest","reduce","returnInterceptor","addRequestInterceptor","setRequestInterceptor","addFullRequestInterceptor","setFullRequestInterceptor","onBeforeElemRestangularized","setOnBeforeElemRestangularized","setRestangularizePromiseInterceptor","restangularizePromiseInterceptor","onElemRestangularized","setOnElemRestangularized","shouldSaveParent","setParentless","isBoolean","suffix","setRequestSuffix","newSuffix","transformers","addElementTransformer","type","secondArg","thirdArg","isCollection","transformer","typeTransformers","coll","extendCollection","extendModel","transformElem","Restangular","force","transformLocalElements","changedElem","setTransformOnlyServerElements","fullResponse","setFullResponse","full","BaseCreator","setConfig","parentsArray","current","parents","reverse","resource","$http","localHttpConfig","callHeaders","callParams","base","add","undefined","RestangularResource","configurer","keys","isEmpty","resultConfig","Path","normalizeUrl","parts","exec","replace","__this","acum","elemUrl","elemSelfLink","join","encodeURIComponent","fetchUrl","fetchRequestedUrl","encodeUriQuery","pctEncodeSpaces","forEachSorted","context","sortedKeysArray","sortedKeys","resultKeys","hasOwnProperty","sort","v","isObject","configObj","injector","provider","providerConfig","$get","setDefaultConfig","isFunction","arrDI","services","apply","Optional","Inject","args","Injector","globalConfiguration","createServiceForConfiguration","service","urlHandler","restangularizeBase","parent","bind","addRestangularMethodFunction","copyRestangularizedElement","stripRestangular","parentId","parentUrl","restangularFieldsForParent","union","pick","isNumber","restangularizeElem","restangularizeCollection","collection","splice","restangularizeResponse","valueToFill","res","resolvePromise","filledValue","complete","array_1","omit","addCustomOperation","customFunction","requestMethods","delete","requestFunc","callOperation","alias","fetchFunction","fromElement","toElement","copiedElement","localElem","getFunction","putFunction","postFunction","deleteFunction","headFunction","traceFunction","optionsFunction","patchFunction","putElementFunction","getById","restangularizeCollectionAndElements","toString","idx","elemToPut","BehaviorSubject","filledArray","subscribe","serverElem","newArray","parseResponse","resData","whatFetched","okCallback","body","fullParams","processedData","status","every","cb","elemFunction","resParams","callObj","filledObject","errorCallback","isOverrideOperation","X-HTTP-Method-Override","defaultParams","defaultElem","bindedFunction","createdFunction","withConfigurationFunction","newConfig","toService","knownCollectionMethods","serv","copy","restangularizeElement","CONFIG_OBJ","RestangularModule","parentModule","forRoot","config1","config2","ngModule","providers","provide","useValue","useFactory","deps","NgModule","imports","HttpClientModule","decorators","SkipSelf"],"mappings":"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","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"]}
\No newline at end of file