From 28f50e978865511b88bc85d3abbad07505199a87 Mon Sep 17 00:00:00 2001 From: Martin Gontovnikas Date: Mon, 9 Dec 2013 18:22:57 -0300 Subject: [PATCH] 1.2.0 --- bower.json | 2 +- dist/restangular.js | 107 +++++++++++++++++++++++++++++----------- dist/restangular.min.js | 4 +- dist/restangular.zip | Bin 62549 -> 65578 bytes package.json | 2 +- 5 files changed, 83 insertions(+), 32 deletions(-) diff --git a/bower.json b/bower.json index 1090b6f0..d219de87 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "restangular", - "version": "1.1.9", + "version": "1.2.0", "main": "./dist/restangular.min.js", "description": "Restful Resources service for AngularJS apps", "repository": { diff --git a/dist/restangular.js b/dist/restangular.js index 2f5f5a6d..958f5401 100644 --- a/dist/restangular.js +++ b/dist/restangular.js @@ -1,6 +1,6 @@ /** * Restful Resources service for AngularJS apps - * @version v1.1.9 - 2013-12-09 + * @version v1.2.0 - 2013-12-09 * @link https://github.com/mgonto/restangular * @author Martin Gontovnikas * @license MIT License, http://www.opensource.org/licenses/MIT @@ -26,7 +26,14 @@ module.provider('Restangular', function() { var absolutePattern = /^https?:\/\//i; config.isAbsoluteUrl = function(string) { - return string && absolutePattern.test(string); + return _.isUndefined(config.absoluteUrl) || _.isNull(config.absoluteUrl) ? + string && absolutePattern.test(string) : + config.absoluteUrl; + } + + config.absoluteUrl = _.isUndefined(config.absoluteUrl) ? false : true; + object.setSelfLinkAbsoluteUrl = function(value) { + config.absoluteUrl = value; } /** * This is the BaseURL to be used with Restangular @@ -173,7 +180,21 @@ module.provider('Restangular', function() { clone: "clone", ids: "ids", httpConfig: '_$httpConfig', - reqParams: 'reqParams' + reqParams: 'reqParams', + one: 'one', + all: 'all', + several: 'several', + oneUrl: 'oneUrl', + allUrl: 'allUrl', + customPUT: 'customPUT', + customPOST: 'customPOST', + customDELETE: 'customDELETE', + customGET: 'customGET', + doPUT: 'doPUT', + doPOST: 'doPOST', + doDELETE: 'doDELETE', + doGET: 'doGET' + }; object.setRestangularFields = function(resFields) { config.restangularFields = @@ -181,6 +202,10 @@ module.provider('Restangular', function() { return this; }; + config.isRestangularized = function(obj) { + return !!obj[config.restangularFields.one] || !!obj[config.restangularFields.all]; + } + config.setFieldToElem = function(field, elem, value) { var properties = field.split('.'); var idValue = elem; @@ -501,8 +526,8 @@ module.provider('Restangular', function() { } if (this.config.suffix - && url.indexOf(this.config.suffix, url.length - this.config.suffix.length) === -1) { - + && url.indexOf(this.config.suffix, url.length - this.config.suffix.length) === -1 + && !this.config.getUrlFromElem(current)) { url += this.config.suffix; } @@ -700,11 +725,11 @@ module.provider('Restangular', function() { elem.withHttpConfig = _.bind(withHttpConfig, elem); // RequestLess connection - elem.one = _.bind(one, elem, elem); - elem.all = _.bind(all, elem, elem); - elem.several = _.bind(several, elem, elem); - elem.oneUrl = _.bind(oneUrl, elem, elem); - elem.allUrl = _.bind(allUrl, elem, elem); + elem[config.restangularFields.one] = _.bind(one, elem, elem); + elem[config.restangularFields.all] = _.bind(all, elem, elem); + elem[config.restangularFields.several] = _.bind(several, elem, elem); + elem[config.restangularFields.oneUrl] = _.bind(oneUrl, elem, elem); + elem[config.restangularFields.allUrl] = _.bind(allUrl, elem, elem); if (parent && config.shouldSaveParent(route)) { var parentId = config.getIdFromElem(parent); @@ -763,38 +788,45 @@ module.provider('Restangular', function() { return restangularizeCollection(parent, elem , route, true); } // Promises - function restangularizePromise(promise, isCollection) { + function restangularizePromise(promise, isCollection, valueToFill) { promise.call = _.bind(promiseCall, promise); promise.get = _.bind(promiseGet, promise); promise[config.restangularFields.restangularCollection] = isCollection; if (isCollection) { promise.push = _.bind(promiseCall, promise, "push"); } + promise.$object = valueToFill; return promise; } function promiseCall(method) { var deferred = $q.defer(); var callArgs = arguments; + var filledValue = {}; this.then(function(val) { var params = Array.prototype.slice.call(callArgs, 1); var func = val[method]; func.apply(val, params); + filledValue = val; deferred.resolve(val); }); - return restangularizePromise(deferred.promise, this[config.restangularFields.restangularCollection]); + return restangularizePromise(deferred.promise, this[config.restangularFields.restangularCollection], filledValue); } function promiseGet(what) { var deferred = $q.defer(); + var filledValue = {}; this.then(function(val) { - deferred.resolve(val[what]); + filledValue = val[what]; + deferred.resolve(filledValue); }); - return restangularizePromise(deferred.promise, this[config.restangularFields.restangularCollection]); + return restangularizePromise(deferred.promise, this[config.restangularFields.restangularCollection], filledValue); } - function resolvePromise(deferred, response, data) { + function resolvePromise(deferred, response, data, filledValue) { + _.extend(filledValue, data); + // Trigger the full response interceptor. if (config.fullResponse) { return deferred.resolve(_.extend(response, { @@ -809,9 +841,17 @@ module.provider('Restangular', function() { // Elements function stripRestangular(elem) { - if (_.isArray(elem)) - return _.without(elem, _.values(_.omit(config.restangularFields, 'id'))); - else return _.omit(elem, _.values(_.omit(config.restangularFields, 'id'))); + if (_.isArray(elem)) { + var array = []; + _.each(elem, function(value) { + array.push(stripRestangular(value)); + }); + return array; + } else { + return _.omit(elem, _.values(_.omit(config.restangularFields, 'id'))); + } + + } function addCustomOperation(elem) { @@ -878,6 +918,7 @@ module.provider('Restangular', function() { var localElem = restangularizeBase(parent, elem, route, reqParams); localElem[config.restangularFields.restangularCollection] = true; localElem[config.restangularFields.post] = _.bind(postFunction, localElem, null); + localElem[config.restangularFields.remove] = _.bind(deleteFunction, localElem); localElem[config.restangularFields.head] = _.bind(headFunction, localElem); localElem[config.restangularFields.trace] = _.bind(traceFunction, localElem); localElem[config.restangularFields.putElement] = _.bind(putElementFunction, localElem); @@ -898,15 +939,17 @@ module.provider('Restangular', function() { var __this = this; var elemToPut = this[idx]; var deferred = $q.defer(); + var filledArray = []; elemToPut.put(params, headers).then(function(serverElem) { var newArray = copyRestangularizedElement(__this); newArray[idx] = serverElem; + filledArray = newArray; deferred.resolve(newArray); }, function(response) { deferred.reject(response); }); - return restangularizePromise(deferred.promise, true) + return restangularizePromise(deferred.promise, true, filledArray); } function parseResponse(resData, operation, route, fetchUrl, response, deferred) { @@ -929,6 +972,8 @@ module.provider('Restangular', function() { var request = config.fullRequestInterceptor(null, operation, whatFetched, url, headers || {}, reqParams || {}, this[config.restangularFields.httpConfig] || {}); + var filledArray = []; + urlHandler.resource(this, $http, request.httpConfig, request.headers, request.params, what, this[config.restangularFields.etag], operation).getList().then(function(response) { var resData = response.data; @@ -945,10 +990,11 @@ module.provider('Restangular', function() { }); processedData = _.extend(data, processedData); + if (!__this[config.restangularFields.restangularCollection]) { - resolvePromise(deferred, response, restangularizeCollection(__this, processedData, what, fullParams)); + resolvePromise(deferred, response, restangularizeCollection(__this, processedData, what, fullParams), filledArray); } else { - resolvePromise(deferred, response, restangularizeCollection(__this[config.restangularFields.parentResource], processedData, __this[config.restangularFields.route], fullParams)); + resolvePromise(deferred, response, restangularizeCollection(__this[config.restangularFields.parentResource], processedData, __this[config.restangularFields.route], fullParams), filledArray); } }, function error(response) { if ( config.errorInterceptor(response) !== false ) { @@ -956,7 +1002,7 @@ module.provider('Restangular', function() { } }); - return restangularizePromise(deferred.promise, true); + return restangularizePromise(deferred.promise, true, filledArray); } function withHttpConfig(httpConfig) { @@ -973,12 +1019,15 @@ module.provider('Restangular', function() { var callObj = obj || this; var etag = callObj[config.restangularFields.etag]; - if (_.isObject(callObj)) { + + if (_.isObject(callObj) && config.isRestangularized(callObj)) { callObj = stripRestangular(callObj); } var request = config.fullRequestInterceptor(callObj, operation, route, fetchUrl, headers || {}, resParams || {}, this[config.restangularFields.httpConfig] || {}); + var filledObject = {}; + var okCallback = function(response) { var resData = response.data; var fullParams = response.config.params; @@ -986,13 +1035,13 @@ module.provider('Restangular', function() { if (elem) { if (operation === "post" && !__this[config.restangularFields.restangularCollection]) { - resolvePromise(deferred, response, restangularizeElem(__this, elem, what, fullParams)); + resolvePromise(deferred, response, restangularizeElem(__this, elem, what, fullParams), filledObject); } else { - resolvePromise(deferred, response, restangularizeElem(__this[config.restangularFields.parentResource], elem, __this[config.restangularFields.route], fullParams)); + resolvePromise(deferred, response, restangularizeElem(__this[config.restangularFields.parentResource], elem, __this[config.restangularFields.route], fullParams), filledObject); } } else { - resolvePromise(deferred, response, undefined); + resolvePromise(deferred, response, undefined, filledObject); } }; @@ -1023,7 +1072,7 @@ module.provider('Restangular', function() { what, etag, callOperation)[callOperation](request.element).then(okCallback, errorCallback); } - return restangularizePromise(deferred.promise); + return restangularizePromise(deferred.promise, false, filledObject); } function getFunction(params, headers) { @@ -1094,7 +1143,7 @@ module.provider('Restangular', function() { } function withConfigurationFunction(configurer) { - var newConfig = angular.copy(globalConfiguration); + var newConfig = angular.copy(config); Configurer.init(newConfig, newConfig); configurer(newConfig); return createServiceForConfiguration(newConfig); @@ -1117,6 +1166,8 @@ module.provider('Restangular', function() { service.allUrl = _.bind(allUrl, service, null); + service.stripRestangular = _.bind(stripRestangular, service); + service.restangularizeElement = _.bind(restangularizeElem, service); service.restangularizeCollection = _.bind(restangularizeCollection, service); diff --git a/dist/restangular.min.js b/dist/restangular.min.js index 2030263a..8fa00772 100644 --- a/dist/restangular.min.js +++ b/dist/restangular.min.js @@ -1,8 +1,8 @@ /** * Restful Resources service for AngularJS apps - * @version v1.1.9 - 2013-12-09 + * @version v1.2.0 - 2013-12-09 * @link https://github.com/mgonto/restangular * @author Martin Gontovnikas * @license MIT License, http://www.opensource.org/licenses/MIT */ -!function(){var a=angular.module("restangular",[]);a.provider("Restangular",function(){var a={};a.init=function(a,b){function c(a,b,c,d){var e={};return _.each(_.keys(d),function(f){var g=d[f];g.params=_.extend({},g.params,a.defaultRequestParams[g.method.toLowerCase()]),_.isEmpty(g.params)&&delete g.params,e[f]=a.isSafe(g.method)?function(){return b(_.extend(g,{url:c}))}:function(a){return b(_.extend(g,{url:c,data:a}))}}),e}a.configuration=b;var d=["get","head","options","trace","getlist"];b.isSafe=function(a){return _.contains(d,a.toLowerCase())};var e=/^https?:\/\//i;b.isAbsoluteUrl=function(a){return a&&e.test(a)},b.baseUrl=_.isUndefined(b.baseUrl)?"":b.baseUrl,a.setBaseUrl=function(a){return b.baseUrl=/\/$/.test(a)?a.substring(0,a.length-1):a,this},b.extraFields=b.extraFields||[],a.setExtraFields=function(a){return b.extraFields=a,this},b.defaultHttpFields=b.defaultHttpFields||{},a.setDefaultHttpFields=function(a){return b.defaultHttpFields=a,this},b.withHttpValues=function(a,c){return _.defaults(c,a,b.defaultHttpFields)},b.encodeIds=_.isUndefined(b.encodeIds)?!0:b.encodeIds,a.setEncodeIds=function(a){b.encodeIds=a},b.defaultRequestParams=b.defaultRequestParams||{get:{},post:{},put:{},remove:{},common:{}},a.setDefaultRequestParams=function(a,c){var d=[],e=c||a;return _.isUndefined(c)?d.push("common"):_.isArray(a)?d=a:d.push(a),_.each(d,function(a){b.defaultRequestParams[a]=e}),this},a.requestParams=b.defaultRequestParams,b.defaultHeaders=b.defaultHeaders||{},a.setDefaultHeaders=function(c){return b.defaultHeaders=c,a.defaultHeaders=b.defaultHeaders,this},a.defaultHeaders=b.defaultHeaders,b.methodOverriders=b.methodOverriders||[],a.setMethodOverriders=function(a){var c=_.extend([],a);return b.isOverridenMethod("delete",c)&&c.push("remove"),b.methodOverriders=c,this},b.isOverridenMethod=function(a,c){var d=c||b.methodOverriders;return!_.isUndefined(_.find(d,function(b){return b.toLowerCase()===a.toLowerCase()}))},b.urlCreator=b.urlCreator||"path",a.setUrlCreator=function(a){if(!_.has(b.urlCreatorFactory,a))throw new Error("URL Path selected isn't valid");return b.urlCreator=a,this},b.restangularFields=b.restangularFields||{id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",cannonicalId:"__cannonicalId",etag:"restangularEtag",selfLink:"href",get:"get",getList:"getList",put:"put",post:"post",remove:"remove",head:"head",trace:"trace",options:"options",patch:"patch",getRestangularUrl:"getRestangularUrl",getRequestedUrl:"getRequestedUrl",putElement:"putElement",addRestangularMethod:"addRestangularMethod",getParentList:"getParentList",clone:"clone",ids:"ids",httpConfig:"_$httpConfig",reqParams:"reqParams"},a.setRestangularFields=function(a){return b.restangularFields=_.extend(b.restangularFields,a),this},b.setFieldToElem=function(a,b,c){var d=a.split("."),e=b;return _.each(_.initial(d),function(a){e[a]={},e=e[a]}),e[_.last(d)]=c,this},b.getFieldFromElem=function(a,b){var c=a.split("."),d=angular.copy(b);return _.each(c,function(a){d&&(d=d[a])}),d},b.setIdToElem=function(a,c){return b.setFieldToElem(b.restangularFields.id,a,c),this},b.getIdFromElem=function(a){return b.getFieldFromElem(b.restangularFields.id,a)},b.isValidId=function(a){return""!==a&&!_.isUndefined(a)&&!_.isNull(a)},b.setUrlToElem=function(a,c){return b.setFieldToElem(b.restangularFields.selfLink,a,c),this},b.getUrlFromElem=function(a){return b.getFieldFromElem(b.restangularFields.selfLink,a)},b.useCannonicalId=_.isUndefined(b.useCannonicalId)?!1:b.useCannonicalId,a.setUseCannonicalId=function(a){return b.useCannonicalId=a,this},b.getCannonicalIdFromElem=function(a){var c=a[b.restangularFields.cannonicalId],d=b.isValidId(c)?c:b.getIdFromElem(a);return d},b.responseExtractor=b.responseExtractor||function(a){return a},a.setResponseExtractor=function(a){return b.responseExtractor=a,this},a.setResponseInterceptor=a.setResponseExtractor,b.fullRequestInterceptor=b.fullRequestInterceptor||function(a,b,c,d,e,f,g){return{element:a,headers:e,params:f,httpConfig:g}},a.setRequestInterceptor=function(a){return b.fullRequestInterceptor=function(b,c,d,e,f,g,h){return{headers:f,params:g,element:a(b,c,d,e),httpConfig:h}},this},a.setFullRequestInterceptor=function(a){return b.fullRequestInterceptor=a,this},b.errorInterceptor=b.errorInterceptor||function(){},a.setErrorInterceptor=function(a){return b.errorInterceptor=a,this},b.onBeforeElemRestangularized=b.onBeforeElemRestangularized||function(a){return a},a.setOnBeforeElemRestangularized=function(a){return b.onBeforeElemRestangularized=a,this},b.onElemRestangularized=b.onElemRestangularized||function(a){return a},a.setOnElemRestangularized=function(a){return b.onElemRestangularized=a,this},a.setListTypeIsArray=function(){},b.shouldSaveParent=b.shouldSaveParent||function(){return!0},a.setParentless=function(a){return _.isArray(a)?b.shouldSaveParent=function(b){return!_.contains(a,b)}:_.isBoolean(a)&&(b.shouldSaveParent=function(){return!a}),this},b.suffix=_.isUndefined(b.suffix)?null:b.suffix,a.setRequestSuffix=function(a){return b.suffix=a,this},b.transformers=b.transformers||{},a.addElementTransformer=function(a,c,d){var e=null,f=null;2===arguments.length?f=c:(f=d,e=c);var g=b.transformers[a];g||(g=b.transformers[a]=[]),g.push(function(a,b){return _.isNull(e)||a==e?f(b):b})},a.extendCollection=function(b,c){return a.addElementTransformer(b,!0,c)},a.extendModel=function(b,c){return a.addElementTransformer(b,!1,c)},b.transformElem=function(a,c,d,e){var f=b.transformers[d],g=a;return f&&_.each(f,function(a){g=a(c,g)}),b.onElemRestangularized(g,c,d,e)},b.fullResponse=_.isUndefined(b.fullResponse)?!1:b.fullResponse,a.setFullResponse=function(a){return b.fullResponse=a,this},b.urlCreatorFactory={};var f=function(){};f.prototype.setConfig=function(a){return this.config=a,this},f.prototype.parentsArray=function(a){for(var b=[];a;)b.push(a),a=a[this.config.restangularFields.parentResource];return b.reverse()},f.prototype.resource=function(a,d,e,f,g,h,i,j){var k=_.defaults(g||{},this.config.defaultRequestParams.common),l=_.defaults(f||{},this.config.defaultHeaders);i&&(b.isSafe(j)?l["If-None-Match"]=i:l["If-Match"]=i);var m=this.base(a);if(h){var n="";/\/$/.test(m)||(n+="/"),n+=h,m+=n}return this.config.suffix&&-1===m.indexOf(this.config.suffix,m.length-this.config.suffix.length)&&(m+=this.config.suffix),a[this.config.restangularFields.httpConfig]=void 0,c(this.config,d,m,{getList:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),get:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),put:this.config.withHttpValues(e,{method:"PUT",params:k,headers:l}),post:this.config.withHttpValues(e,{method:"POST",params:k,headers:l}),remove:this.config.withHttpValues(e,{method:"DELETE",params:k,headers:l}),head:this.config.withHttpValues(e,{method:"HEAD",params:k,headers:l}),trace:this.config.withHttpValues(e,{method:"TRACE",params:k,headers:l}),options:this.config.withHttpValues(e,{method:"OPTIONS",params:k,headers:l}),patch:this.config.withHttpValues(e,{method:"PATCH",params:k,headers:l})})};var g=function(){};g.prototype=new f,g.prototype.base=function(a){var c=this;return _.reduce(this.parentsArray(a),function(a,d){var e,f=c.config.getUrlFromElem(d);if(f){if(c.config.isAbsoluteUrl(f))return f;e=f}else if(e=d[c.config.restangularFields.route],d[c.config.restangularFields.restangularCollection]){var g=d[c.config.restangularFields.ids];g&&(e+="/"+g.join(","))}else{var h;h=c.config.useCannonicalId?c.config.getCannonicalIdFromElem(d):c.config.getIdFromElem(d),b.isValidId(h)&&(e+="/"+(c.config.encodeIds?encodeURIComponent(h):h))}return a+"/"+e},this.config.baseUrl)},g.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&(c+="/"+b),c},g.prototype.fetchRequestedUrl=function(a,c){function d(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function e(a,b,c){for(var e=d(a),f=0;fi(r%eHKYB&gYii)<%Nrj@#t4H!%?Z<3kR@xW?#C9RQH@@i%L zQk<3_Nt2KSPA6$dhLD-GKbn>fQE19c8-}!*Hq*%rnKYS%v_Kv}1`=$S{^(;S>ACyR zu8i}eQ~y}sd(OG%o_o%@-#NQ__p{QUKUh}1V@qk-q7wRd{>b5K|KjsUezd-H#M=X} zm6X71hr{=m-X82YdGx7Lc<8rFV4J_9osVWx$*d;bqb6D3uL4CTa%07#M-9(BV`90rpO}SoWGPJg?y{_I(+@z=|3 z-|Y~@Ns;7~ad<<`hMvBjJv{}j#DZQ!3){EnLYxW56;u$AS0e=0f%XC-e9#$|x!u0?4n zPbLR26}#89z*ox_<*Qqcu7#be>lU`P`TSZ!&IF-d_EZX4Rh1MCc7D4#f2Q|0%i&ne zTSj%kMErJrf{-DLkqj#+@B}7#>*zzDy--%WnBPy&i|Wp|Afyg4f_|qz?9V zS5U=^Y!P_jkoQQm7HXd_gW3`PmhE=Uq5NQ7gJ*A08r394WNbAO@xg@yjZpjj`uv9@ zV=n0ZWi6ZwmBEwGmM!X5Rep?-lF|?j4%%JrrW7=;U$?3&Tvm-bc_E<-5jf#r0ls_P zex8a2)7ead$!Mya-X&!;UWsRuyvpeDfVW4Rpf*|$5ALmimH*`FO4l4V-Mrx$X#srNRcCs?uGNRv#6*8NUAERebS?6(Dbq27d9^99NA=~*z_?!OdVU{$tt20lNCv{ zlGv7h@SdjpzT>?W4alOkqew!dd7gjgXIhm@fI}}g=arXFEm%D_1u#&1gHajta4rW< zo@#;ADNnxh)Jm6LHDCJS8?QvVN=hPKApCkCEt`jrp2|km1=-5idsyQL zDS|*03g9C^5Q0Jhd<2M9&jRKkK&5DDqJsEem(}M6Yz0W67=;3bVS!44-Xi1JqEmPu z#G+%e479hH6xB@z4gexT7d$V9=#%jkU-bx2oLSv255bK2Q3BF zZw9ag@cmJky|1nc4>d43S(umMp$77a*U!~d*nsci^LL(`axaUr6S1r!XmU#N#TcFl zL?jYBA;%a2wY~kmw_GH23vnZ=fi*v&?Y6c!H_ar=yfDRB22T+H-nFq24S zlj3fEMB2gA+RBJ5J2Aqmz8Dt`#wBgDxKT|F^&qh0eIQ9L3U8fX>x#mE&UfIGeAs$- z6pxKnPZl?0wP1CfblIMizDOZ47VnKMlC(t7;RTtb5gY2^@U}0b%TZ>tZs;XxUaEfzaiZ*pEOmEb{DHpQnQE% zJO9?`9U>SDo`%Ot2Sul#iNhCIiNm~XYh!r5tXdMdh6HGx4X|{r+0t+#;cfTO80*0o zI5CL0E~yMlB#u|(*&)o042f|QInyC<9NV9(l?y};E@WE1Cy`E;#JOlcKM=-ukaRjZ z#zbilFpr23R3&_A8IhPMo5L((gkT!8O2(Q%n>)kowU{ZkDa!n&6m7o-Ln-N7I(Cr0 zeup4}hP^||a3}>5Gam{~j~=rqbY1jM31mX#H9jQfST=+%wGM(O8%fEc&zU)CYBPco z1p>WQz`5m5JCV#bh$mJG(^cpY+5%Ax)P5mnngkavHsd|}=f#z-VOVx)nQJqIFTIG* zOP5yQv+Sd8*C=fKh+U;pE%e?BoY_7Fg;aVBsa67Kbg(q8Q*Ak>2)h04_nVhHTtY95 zj;$naC`)kA{^l|dgSpsAgDGjs+An-HF--5_|#2gL&E<^3$%aYc8^*F+^0UB)e4g99SqoeupAyh z=?yj!-#ZSL*IHL#oz19&uFEy<9w%Yj!xf-hcDpw^iDxd?x;Hrq*Df!v>ZOEX1|Lz_ z_i6oYBI$EDk=|ajK+$-_br<@m3p=O_6S@oIdIhsWlPGwjgU~T`r+J#14d`wPeYjHR z%so=VVpvCV5bPs4h$kMdg6Hs@Bg8>8&gmfFIo-XM1V+w|PS&RC(Ya%^VBs)>8lpi> z<&{hZ;07WJ)9k z7q6~rvD*cP!V-nl{Tx3z8Ar$aKl7FjVfEX|HZEsqJcvy8lR*-joSeuJNq?GHMx&QL zR|Shduh^(KD#%tHJhG}F8R`Wx6ijGZdcFSLhE612l++B4(!9zKp#c^=p1j%wGoQ7> zZJ!4^W848oGas4vd}>Y zNC-V)s?B=$Bbarjg6c?$p)HB#P*aaSM89Crh{A>ne3C?6IxS~ggy%lct3uKTD$0LDsDx(Gb9L+=%HfbRor|IpW8C45qa%9xDOb^fEFPMABIG&8#DS-BCR$j8C8}VJvY{&0zsw_&%R!K{w zL`R9~MsJOAhQUrPQf7CFgtN1?@=t@!vdLcdILFz*@ZP+86nDOHH&6$>}yKxJnyvJaArfH=RF}E1i)#BD6 zld#z!pfIeNZFPyzJKNDG5fh+7F+!aXiX&W@Fq2?JD_o+LFGSRR#pc5LwWO$SWq<&G zm<_tNz|GmP(1$%G*~;NZ7hg1(Rg>#giAT`hs6+QyzmryI#<$XD-@r|5DY2cE6A0{!o$z!oYK*HA6xC9K?CWxd_isOX6-FJ6uulJ6< zJ=^Dx7}O|HlvWr9A~gs~1WMAXO+v4*d8-pp_2&E8M8=e>I&w`fy)Zr-dM_M6zUt7u{I#Fpn)e|LX)^Yx=S zIoFTwYJNPoQCNB8#TRnn`Mi4gV?#~qo&0@%&n!4as$uKQSzs*qOX~7n`?+l=EBL>8lht70j9Wn`+R5_S)9iQhG(UYj{Lwg zW9CdKSzZoXpYp=CkWjXc=& zSRT9#Z(C0NY|mR5g&j}xsaN*?J~y@Rhu3q#zrP$-HRr=?`;Wn&M0uP*z-_OUH2UrZ@H0t4q8<`%A1HEq&cA zgh03){`$R=)bTfu&Pbg&e!s_}!|69YMP4x{$1B3rZ?`f&?0WHNYW_)iMv+usPX&|4 zO-|xdji;-8(0C@2nmlu6cIu=5tol`A3RM{wms3}K~3}hn-@@bjR{^752-fgDa61Xx|rU~sBFNGVbA2xpA z^R>I04AgtP^IYq3bi^@w%!zG>&l%8)0hXguk8q!*oYD%0ZI@*t^axbQ$k8chM zYWz`2Q0X6=!vWlJZNC)pxlR|Er|mI>Rr*)i^i6X*T8ESL8E9GE;`I2IgD z=RacS-*#OQhew+YY9c$u?Y{-)7v1M3j zWU;Fo?fa|+WXq{iIQWq;#x#*~(-m1fkec7%T4uZ7;G6c}t9SB*d4PMH?g6GQYkQI) zXHiNgm{y5p+GR)7LaYiZgEuaecOaeX>p4k?CE^iR2-Qd(1L}BG&qPv3mRR%&ii&{U zff^i7WKlB0i9Tdk94>!c{R9@N&9GL(kdi{oh?-F|8KXj6Q)Ozo$H}A-2_h<8Qa4gb zip8`fr!dk41%t+;T0i9!ev~JDT#y;)Q{$AF5jCFn+h3cNyy(}s#avm8X~`Irak2kw zvnI=C%uS5TH2D5M7cL2sVMQ{fCV7(TYK?tj{&_G7kDArYsmC0&o|D$;Ddg3M8!3fW#iyXKCjq9T7>A=amFK3fP^{#9C_U~ZWrYoSO& zFD}U*&yCNAomYImZxhvi&vYKzl@Fs6K3~!WcZ`>nCd_V^tPf`4@b*NJZ;cBu>z_;% z`&PREYvz@gXZzM>1MhuO>}$&g8peIlf?ll4fR%0TYU>$jaCiv`*d6tFC~DXZRJ8&} zIeV^7oTke{T+0fWg*ak`m|6#$o4ZJMR2m3-#Qm~;&0d4qUE)~b28X-|BUPyop^`$4 zI9Ipk5h+}kW^AOsUPY3+0b6w_A3CnhDZpyM#83!cTU?!)7dX~pSbyvlrIC@am5Hic z4GZJcwMFyj$jI<030haD7coB7{=Kk`Vd*6|T3sPw$ketc6HSPuM*{X>yNY))$&mVR zMYp#xd(6ebPix>?9~X4UVo+fHhA4O=TO)<5L&ZVtqAKYnY&^g;urZ=figA><$0nCK z^z6N`TJw8bOpZNfwFhUXizwfO@6eotHIEx&CUFL!IDb=uw9B$m)Dq*^43n5{OLJtZ z7hy+BOArk$Dm*`$aShLr5S;j;dSwKo)k9@A1zP<+^7TX*VolF!#nXac1Uo;UThQv{ z^X1QLOYA&pB4#RmWK`X)i?`<)r?{vXwuOixMxB~kb;t`#t{0X?ab)45;x;bI^UbV! z;}#Dp^6>;E8tk}UhTYmBK!HU7l7N%ftKjgb^XkHw9fipe9jm*CZw|NA#iDVuZlTDi zm1%u`7RVlyF`Y)rW+Cj^VW&M-JwUBUIwFW8ZPSQ*=8%3dopdL%Twp+yNHUW_(Td*OZS?pKrdm9P7HYhO$*saS7Y zyVI6%^g*Y!r1mfHQl-&{i8%GNZ;?NyclkD;s0Ow>5ijWW&AvA;pE*7^~{4$#oLE z@3cl9_t=W#VS^C+>Yo1H)nUJg>SI|SUY*V%+ByB(D+Ay0`IUKf`xjW|js5q7>ybt> zZ`jBOr;nEuyDv@4D+o+2^d{`vwyD63i7lW`HQx3o3cNbCEWrL($$UuX2 Ozl6yt-uuio2K*bq5@ovp diff --git a/package.json b/package.json index 6ee55dbf..3252f356 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "restangular", "description": "Restful Resources service for AngularJS apps", - "version": "1.1.9", + "version": "1.2.0", "filename": "restangular.min.js", "main": "./dist/restangular.min.js", "homepage": "https://github.com/mgonto/restangular",