angularjs-rails-resource 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A resource factory inspired by $resource from AngularJS
3
+ * @version v2.3.1 - 2018-02-11
4
+ * @link https://github.com/FineLinePrototyping/angularjs-rails-resource.git
5
+ * @author
6
+ */
7
+
8
+ angular.module("rails",["ng"]),angular.module("rails").factory("RailsInflector",function(){return{camelize:function(t){return angular.isString(t)?t.replace(/_[\w\d]/g,function(t,e,r){return 0===e?t:r.charAt(e+1).toUpperCase()}):t},underscore:function(t){return angular.isString(t)?t.replace(/[A-Z]/g,function(t,e){return 0===e?t:"_"+t.toLowerCase()}):t},pluralize:function(t){return t+"s"}}}),function(t){angular.module("rails").factory("RailsResourceInjector",["$injector",function(e){function r(r){return r?angular.isString(r)?e.get(r):r:t}function n(n){return n?e.instantiate(r(n)):t}return{createService:n,getService:function(e){return angular.isObject(e)?e:e?n(e):t},getDependency:r}}])}(),angular.module("rails").factory("railsUrlBuilder",["$interpolate",function(t){return function(e){var r,n=e.url,i=e.idAttribute;return angular.isFunction(n)||angular.isUndefined(n)?n:(e.singular||-1!==n.indexOf(t.startSymbol())||(n=n+"/"+t.startSymbol()+i+t.endSymbol()),r=t(n),function(t){return"/"===(n=r(t)).charAt(n.length-1)&&(n=n.substr(0,n.length-1)),n})}}]),function(t){angular.module("rails").provider("railsSerializer",function(){var e={underscore:t,camelize:t,pluralize:t,exclusionMatchers:[]};this.underscore=function(t){return e.underscore=t,this},this.camelize=function(t){return e.camelize=t,this},this.pluralize=function(t){return e.pluralize=t,this},this.exclusionMatchers=function(t){return e.exclusionMatchers=t,this},this.$get=["$injector","RailsInflector","RailsResourceInjector",function(r,n,i){function s(r,n){function s(){angular.isFunction(r)&&(n=r,r={}),this.exclusions={},this.inclusions={},this.serializeMappings={},this.deserializeMappings={},this.customSerializedAttributes={},this.preservedAttributes={},this.customSerializers={},this.nestedResources={},this.polymorphics={},this.options=angular.extend({excludeByDefault:!1},e,r||{}),n&&n.call(this,this)}return s.prototype.exclude=function(){var t=this.exclusions;return angular.forEach(arguments,function(e){t[e]=!1}),this},s.prototype.only=function(){var t=this.inclusions;return this.options.excludeByDefault=!0,angular.forEach(arguments,function(e){t[e]=!0}),this},s.prototype.nestedAttribute=function(){var t=this;return angular.forEach(arguments,function(e){t.rename(e,e+"_attributes")}),this},s.prototype.resource=function(t,e,r){return this.nestedResources[t]=e,r&&this.serializeWith(t,r),this},s.prototype.polymorphic=function(){var t=this.polymorphics;return angular.forEach(arguments,function(e){t[e]=!0}),this},s.prototype.rename=function(e,r,n){return this.serializeMappings[e]=r,(n||n===t)&&(this.deserializeMappings[r]=e),this},s.prototype.add=function(t,e){return this.customSerializedAttributes[t]=e,this},s.prototype.preserve=function(t){return this.preservedAttributes[t]=!0,this},s.prototype.serializeWith=function(t,e){return this.customSerializers[t]=e,this},s.prototype.isExcludedFromSerialization=function(e){if(this.options.excludeByDefault&&!this.inclusions.hasOwnProperty(e)||this.exclusions.hasOwnProperty(e))return!0;if(this.options.exclusionMatchers){var r=!1;return angular.forEach(this.options.exclusionMatchers,function(n){angular.isString(n)?r=r||0===e.indexOf(n):angular.isFunction(n)?r=r||n.call(t,e):n instanceof RegExp&&(r=r||n.test(e))}),r}return!1},s.prototype.getSerializedAttributeName=function(e){var r=this.serializeMappings[e]||e,n=this.isExcludedFromSerialization(r),i=this.isExcludedFromSerialization(e);if(this.options.excludeByDefault){if(n&&i)return t}else if(n||i)return t;return this.underscore(r)},s.prototype.isExcludedFromDeserialization=function(t){return!1},s.prototype.getDeserializedAttributeName=function(e){var r=this.camelize(e);return r=this.deserializeMappings[e]||this.deserializeMappings[r]||r,this.isExcludedFromDeserialization(e)||this.isExcludedFromDeserialization(r)?t:r},s.prototype.getNestedResource=function(t,e){var r;return r=this.polymorphics[t]?e[t+"_type"]:this.nestedResources[t],i.getDependency(r)},s.prototype.getAttributeSerializer=function(e,r){var n=this.getNestedResource(e,r),s=this.customSerializers[e];return s?i.createService(s):n?n.config.serializer:t},s.prototype.serializeData=function(t){var e=t,r=this;if(angular.isArray(t))e=[],angular.forEach(t,function(t){e.push(r.serializeData(t))});else if(angular.isObject(t)){if(angular.isDate(t))return t;e={},this.serializeObject(e,t)}return e},s.prototype.serializeObject=function(t,e){var r=this;return angular.forEach(e,function(n,i){angular.isFunction(n)||r.serializeAttribute(t,i,n,e)}),e},s.prototype.serializeAttribute=function(e,r,n,i){var s=this.getAttributeSerializer(r,i),o=this.getSerializedAttributeName(r);o!==t&&(e[o]=s?s.serialize(n):this.serializeData(n))},s.prototype.serialize=function(t){var e=angular.copy(t),r=this;return angular.isObject(e)&&angular.forEach(this.customSerializedAttributes,function(n,i){angular.isArray(e)?angular.forEach(e,function(e,s){var o=n;angular.isFunction(n)&&(o=o.call(e,e)),r.serializeAttribute(e,i,o,t)}):(angular.isFunction(n)&&(n=n.call(t,t)),r.serializeAttribute(e,i,n,t))}),e=this.serializeData(e)},s.prototype.deserializeData=function(t,e,r){var n=t,i=this;if(angular.isArray(t))n=[],angular.forEach(t,function(t){n.push(i.deserializeData(t,e,r))});else if(angular.isObject(t)){if(angular.isDate(t))return t;n={},e&&(n=new e.config.resourceConstructor),this.deserializeObject(n,t,r)}return n},s.prototype.deserializeObject=function(t,e,r){var n=this;return angular.forEach(e,function(r,i){n.deserializeAttribute(t,i,r,e)}),r&&t.constructor.runInterceptorPhase&&t.constructor.runInterceptorPhase("afterDeserialize",t),e},s.prototype.deserializeAttribute=function(e,r,n,i){var s,o,u=this.getDeserializedAttributeName(r);u!==t&&(s=this.getAttributeSerializer(u,i),o=this.getNestedResource(u,i),this.preservedAttributes[u]?e[u]=n:e[u]=s?s.deserialize(n,o,!0):this.deserializeData(n,o,!0))},s.prototype.deserialize=function(t,e,r){return this.deserializeData(t,e,r)},s.prototype.pluralize=function(t){return this.options.pluralize?this.options.pluralize(t):t},s.prototype.underscore=function(t){return this.options.underscore?this.options.underscore(t):t},s.prototype.camelize=function(t){return this.options.camelize?this.options.camelize(t):t},s}return e.underscore=e.underscore||n.underscore,e.camelize=e.camelize||n.camelize,e.pluralize=e.pluralize||n.pluralize,s.defaultOptions=e,s}]})}(),angular.module("rails").factory("railsRootWrapper",function(){return{wrap:function(t,e){var r={};return r[angular.isArray(t)?e.config.pluralName:e.config.name]=t,r},unwrap:function(t,e,r){return t.data&&t.data.hasOwnProperty(e.config.name)?t.data=t.data[e.config.name]:t.data&&t.data.hasOwnProperty(e.config.pluralName)&&!r&&(t.data=t.data[e.config.pluralName]),t}}}),angular.module("rails").provider("RailsResource",function(){var t={rootWrapping:!0,updateMethod:"put",httpConfig:{},defaultParams:void 0,underscoreParams:!0,fullResponse:!1,singular:!1,extensions:[]};this.rootWrapping=function(e){return t.rootWrapping=e,this},this.updateMethod=function(e){return t.updateMethod=e,this},this.httpConfig=function(e){return t.httpConfig=e,this},this.defaultParams=function(e){return t.defaultParams=e,this},this.underscoreParams=function(e){return t.underscoreParams=e,this},this.fullResponse=function(e){return t.fullResponse=e,this},this.extensions=function(){return t.extensions=[],angular.forEach(arguments,function(e){t.extensions=t.extensions.concat(e)}),this},this.$get=["$http","$q","$timeout","railsUrlBuilder","railsSerializer","railsRootWrapper","RailsResourceInjector",function(e,r,n,i,s,o,u){function a(t){if(t){var e=this.constructor.deserialize({data:t});this.constructor.config.rootWrapping&&(e=o.unwrap(e,this.constructor,!0)),angular.extend(this,e.data),this.constructor.runInterceptorPhase("afterDeserialize",this)}}return a.extendTo=function(t){function e(){this.constructor=t}return angular.forEach(this,function(e,r){t[r]=e}),angular.isArray(this.$modules)&&(t.$modules=this.$modules.slice(0)),e.prototype=this.prototype,t.prototype=new e,t.__super__=this.prototype,t},a.extend=function(){return angular.forEach(arguments,function(t){p(this,this,t,function(t,e){angular.isFunction(e.extended)&&e.extended(t)})},this),this},a.include=function(){return angular.forEach(arguments,function(t){p(this,this.prototype,t,function(t,e){angular.isFunction(e.included)&&e.included(t)})},this),this},a.configure=function(e){var r,n;return e=e||{},this.config&&(e=angular.extend({},this.config,e)),this.config={},this.config.idAttribute=e.idAttribute||"id",this.config.url=e.url,this.config.rootWrapping=h(e.rootWrapping,t.rootWrapping),this.config.httpConfig=e.httpConfig||t.httpConfig,this.config.httpConfig.headers=angular.extend({Accept:"application/json","Content-Type":"application/json"},this.config.httpConfig.headers||{}),this.config.defaultParams=e.defaultParams||t.defaultParams,this.config.underscoreParams=h(e.underscoreParams,t.underscoreParams),this.config.updateMethod=(e.updateMethod||t.updateMethod).toLowerCase(),this.config.fullResponse=h(e.fullResponse,t.fullResponse),this.config.singular=e.singular||t.singular,this.config.requestTransformers=e.requestTransformers?e.requestTransformers.slice(0):[],this.config.responseInterceptors=e.responseInterceptors?e.responseInterceptors.slice(0):[],this.config.afterResponseInterceptors=e.afterResponseInterceptors?e.afterResponseInterceptors.slice(0):[],this.config.interceptors=e.interceptors?e.interceptors.slice(0):[],this.config.serializer=u.getService(e.serializer||s()),this.config.name=this.config.serializer.underscore(e.name),this.config.name&&(this.config.pluralName=this.config.serializer.underscore(e.pluralName||this.config.serializer.pluralize(this.config.name))),this.config.urlBuilder=i(this.config),this.config.resourceConstructor=this,this.extend.apply(this,(r=(e.extensions||[]).concat(t.extensions),n=[],angular.forEach(r,function(t){t="RailsResource"+t.charAt(0).toUpperCase()+t.slice(1)+"Mixin",n.push(u.getDependency(t))}),n)),angular.forEach(this.$mixins,function(t){angular.isFunction(t.configure)&&t.configure(this.config,e)},this),this.config},a.setUrl=function(t){this.configure({url:t})},a.buildUrl=function(t){return this.config.urlBuilder(t)},a.addInterceptor=function(t){this.config.interceptors.push(t)},a.intercept=function(t,e){var r={};e=u.getDependency(e),r[t]=function(t,r,n){return e(t,r,n)||t},this.addInterceptor(r)},a.interceptBeforeRequest=function(t){this.intercept("beforeRequest",t)},a.interceptBeforeRequestWrapping=function(t){this.intercept("beforeRequestWrapping",t)},a.interceptRequest=function(t){this.intercept("request",t)},a.interceptBeforeResponse=function(t){this.intercept("beforeResponse",t)},a.interceptBeforeResponseDeserialize=function(t){this.intercept("beforeResponseDeserialize",t)},a.interceptResponse=function(t){this.intercept("response",t)},a.interceptAfterResponse=function(t){this.intercept("afterResponse",t)},a.interceptAfterDeserialize=function(t){this.intercept("afterDeserialize",t)},a.beforeResponse=function(t){t=u.getDependency(t),this.interceptResponse(function(e,r,n){return t(e.data,r.config.resourceConstructor,n),e})},a.afterResponse=function(t){t=u.getDependency(t),this.interceptAfterResponse(function(e,r,n){return t(e,r.config.resourceConstructor,n),e})},a.beforeRequest=function(t){t=u.getDependency(t),this.interceptBeforeRequestWrapping(function(e,r){return e.data=t(e.data,r.config.resourceConstructor)||e.data,e})},a.serialize=function(t){return t.data&&(t.data=this.config.serializer.serialize(t.data)),t},a.deserialize=function(t){return t.data=this.config.serializer.deserialize(t.data,this.config.resourceConstructor),t},a.callResponseInterceptors=function(t,e){var r=this.config;return l(r.responseInterceptors,function(n){t.resource=r.resourceConstructor,t.context=e,t=n(t)}),t},a.callAfterResponseInterceptors=function(t){var e=this.config;return l(e.afterResponseInterceptors,function(r){t.resource=e.resourceConstructor,t=r(t)}),t},a.runInterceptorPhase=function(t,e,n){n=n||r.resolve(e);var i=this.config,s=[];for(l(i.interceptors,function(e){(e[t]||e[t+"Error"])&&s.push(e[t],e[t+"Error"])});s.length;){var o=s.shift(),u=s.shift();n=n.then(f(o,i.resourceConstructor,e),g(u,i.resourceConstructor,e))}return n},a.$http=function(t,i,s){var u,a,c=angular.extend(angular.copy(this.config),s||{}),p=c.resourceConstructor,h=r.defer();return t&&t.timeout&&(t.timeout>0?u=n(h.resolve,t.timeout):angular.isFunction(t.timeout.then)&&t.timeout.then(h.resolve)),t=angular.extend({},t,{timeout:h.promise}),a=r.when(t),c.skipRequestProcessing?a=e(t):(a=this.runInterceptorPhase("beforeRequest",i,a).then(function(t){return t=p.serialize(t),l(c.requestTransformers,function(e){t.data=e(t.data,c.resourceConstructor)}),t}),a=this.runInterceptorPhase("beforeRequestWrapping",i,a),c.rootWrapping&&(a=a.then(function(t){return t.data=o.wrap(t.data,c.resourceConstructor),t})),a=this.runInterceptorPhase("request",i,a).then(function(t){return e(t)})),u&&(a=a.then(function(t){return n.cancel(u),t},function(t){return n.cancel(u),r.reject(t)})),a=this.runInterceptorPhase("beforeResponse",i,a).then(function(t){return t.originalData=t.data,t}),c.rootWrapping&&(a=a.then(function(t){return o.unwrap(t,c.resourceConstructor,!1)})),a=this.runInterceptorPhase("beforeResponseDeserialize",i,a).then(function(t){return p.deserialize(t)}),a=this.callResponseInterceptors(a,i),a=this.runInterceptorPhase("response",i,a).then(function(t){return i&&t.hasOwnProperty("data")&&angular.isObject(t.data)&&angular.extend(i,t.data),c.fullResponse?t:i||t.data}),a=this.callAfterResponseInterceptors(a,i),a=this.runInterceptorPhase("afterResponse",i,a),function t(e,r){var n=e.then;return e.then=function(e,i,s){var o=n.apply(this,arguments);return t(o,r)},angular.extend(e,r),e}(a=this.runInterceptorPhase("afterDeserialize",i,a),{resource:c.resourceConstructor,context:i,abort:function(){h.resolve()}})},a.processParameters=function(t){var e={};return angular.isObject(t)&&this.config.underscoreParams?(angular.forEach(t,function(t,r){e[this.config.serializer.underscore(r)]=t},this),e):t},a.getParameters=function(t){var e;return this.config.defaultParams&&(e=angular.copy(this.config.defaultParams)),angular.isObject(t)&&(e=angular.extend(e||{},t)),this.processParameters(e)},a.getHttpConfig=function(t){var e=this.getParameters(t);return e?angular.extend({params:e},this.config.httpConfig):angular.copy(this.config.httpConfig)},a.$url=a.resourceUrl=function(t,e){var r=t;return angular.isObject(t)||((r={})[this.config.idAttribute]=t),c(this.buildUrl(r||{}),e)},a.$get=function(t,e){return this.$http(angular.extend({method:"get",url:t},this.getHttpConfig(e)))},a.query=function(t,e){return this.$get(this.resourceUrl(e),t)},a.get=function(t,e){return this.$get(this.resourceUrl(t),e)},a.prototype.$url=function(t){return c(this.constructor.resourceUrl(this),t)},a.prototype.$http=function(t,e){return this.constructor.$http(t,this,e)},angular.forEach(["post","put","patch"],function(t){a["$"+t]=function(e,r,n,i){return r=angular.copy(r),this.$http(angular.extend({method:t,url:e,data:r},this.getHttpConfig(i)),null,n)},a.prototype["$"+t]=function(e,r,n){var i=angular.copy(this,{});return this.constructor.$http(angular.extend({method:t,url:e,data:i},this.constructor.getHttpConfig(n)),this)}}),a.prototype.create=function(){return this.$post(this.$url(),this)},a.prototype.update=function(){return this["$"+this.constructor.config.updateMethod](this.$url(),this)},a.prototype.get=function(){return this.constructor.$http(angular.extend({method:"GET",url:this.$url()},this.constructor.getHttpConfig()),this)},a.prototype.isNew=function(){var t=this.constructor.config.idAttribute;return angular.isUndefined(this[t])||null===this[t]},a.prototype.save=function(){return this.isNew()?this.create():this.update()},a.$delete=function(t,e){return this.$http(angular.extend({method:"delete",url:t},this.getHttpConfig(e)))},a.prototype.$delete=function(t,e){return this.constructor.$http(angular.extend({method:"delete",url:t},this.constructor.getHttpConfig(e)),this)},a.prototype.remove=a.prototype.delete=function(){return this.$delete(this.$url())},a;function c(t,e){return e&&("/"!==e[0]&&(t+="/"),t+=e),t}function l(t,e){for(var r,n=0,i=t.length;n<i;n++)r=t[n],angular.isString(r)&&(r=t[n]=u.getDependency(r)),e(r)}function p(t,e,r,n){var i=["included","extended,","configure"];t.$mixins||(t.$mixins=[]),angular.isString(r)&&(r=u.getDependency(r)),r&&-1===t.$mixins.indexOf(r)&&(angular.forEach(r,function(t,r){-1===i.indexOf(r)&&(e[r]=t)}),t.$mixins.push(r),angular.isFunction(n)&&n(t,r))}function h(t,e){return angular.isUndefined(t)?e:t}function f(t,e,r){return function(n){return(t||angular.identity)(n,e,r)}}function g(t,e,n){return function(i){return t?t(i,e,n):r.reject(i)}}}]}),angular.module("rails").factory("railsResourceFactory",["RailsResource",function(t){return function(e){function r(){r.__super__.constructor.apply(this,arguments)}return t.extendTo(r),r.configure(e),r}}]);
@@ -0,0 +1,148 @@
1
+ (function (undefined) {
2
+ angular.module('rails').factory('RailsResourceSnapshotsMixin', ['RailsResourceInjector', function (RailsResourceInjector) {
3
+ function RailsResourceSnapshotsMixin() {
4
+ }
5
+
6
+ RailsResourceSnapshotsMixin.configure = function (resourceConfig, newConfig) {
7
+ resourceConfig.snapshotSerializer = RailsResourceInjector.getService(newConfig.snapshotSerializer);
8
+ };
9
+
10
+ RailsResourceSnapshotsMixin.extended = function (Resource) {
11
+ Resource.intercept('afterResponse', function (result, resource, context) {
12
+ if (context && context.hasOwnProperty('$$snapshots') && angular.isArray(context.$$snapshots)) {
13
+ context.$$snapshots.length = 0;
14
+ }
15
+ });
16
+
17
+ Resource.include({
18
+ snapshot: snapshot,
19
+ rollback: rollback,
20
+ rollbackTo: rollbackTo,
21
+ unsnappedChanges: unsnappedChanges,
22
+ _prepSnapshot: _prepSnapshot
23
+ });
24
+ };
25
+
26
+ return RailsResourceSnapshotsMixin;
27
+
28
+ /**
29
+ * Prepares a copy of the resource to be stored as a snapshot
30
+ * @returns {Resource} the copied resource, sans $$snapshots
31
+ */
32
+ function _prepSnapshot() {
33
+ var config = this.constructor.config,
34
+ copy = (config.snapshotSerializer || config.serializer).serialize(this);
35
+
36
+ // we don't want to store our snapshots in the snapshots because that would make the rollback kind of funny
37
+ // not to mention using more memory for each snapshot.
38
+ delete copy.$$snapshots;
39
+
40
+ return copy
41
+ }
42
+
43
+ /**
44
+ * Stores a copy of this resource in the $$snapshots array to allow undoing changes.
45
+ * @param {function} rollbackCallback Optional callback function to be executed after the rollback.
46
+ * @returns {Number} The version of the snapshot created (0-based index)
47
+ */
48
+ function snapshot(rollbackCallback) {
49
+ var copy = this._prepSnapshot();
50
+
51
+ copy.$rollbackCallback = rollbackCallback;
52
+
53
+ if (!this.$$snapshots) {
54
+ this.$$snapshots = [];
55
+ }
56
+
57
+ this.$$snapshots.push(copy);
58
+ return this.$$snapshots.length - 1;
59
+ }
60
+
61
+ /**
62
+ * Rolls back the resource to a specific snapshot version (0-based index).
63
+ * All versions after the specified version are removed from the snapshots list.
64
+ *
65
+ * If the version specified is greater than the number of versions then the last snapshot version
66
+ * will be used. If the version is less than 0 then the resource will be rolled back to the first version.
67
+ *
68
+ * If no snapshots are available then the operation will return false.
69
+ *
70
+ * If a rollback callback function was defined then it will be called after the rollback has been completed
71
+ * with "this" assigned to the resource instance.
72
+ *
73
+ * @param {Number|undefined} version The version to roll back to.
74
+ * @returns {Boolean} true if rollback was successful, false otherwise
75
+ */
76
+ function rollbackTo(version) {
77
+ var versions, rollbackCallback,
78
+ config = this.constructor.config,
79
+ snapshots = this.$$snapshots,
80
+ snapshotsLength = this.$$snapshots ? this.$$snapshots.length : 0;
81
+
82
+ // if an invalid snapshot version was specified then don't attempt to do anything
83
+ if (!angular.isArray(snapshots) || snapshotsLength === 0 || !angular.isNumber(version)) {
84
+ return false;
85
+ }
86
+
87
+ versions = snapshots.splice(Math.max(0, Math.min(version, snapshotsLength - 1)));
88
+
89
+ if (!angular.isArray(versions) || versions.length === 0) {
90
+ return false;
91
+ }
92
+
93
+ rollbackCallback = versions[0].$rollbackCallback;
94
+ angular.extend(this, (config.snapshotSerializer || config.serializer).deserialize(versions[0]));
95
+
96
+ // restore special variables
97
+ this.$$snapshots = snapshots;
98
+ delete this.$rollbackCallback;
99
+
100
+ if (angular.isFunction(rollbackCallback)) {
101
+ rollbackCallback.call(this);
102
+ }
103
+
104
+ return true;
105
+ }
106
+
107
+ /**
108
+ * Rolls back the resource to a previous snapshot.
109
+ *
110
+ * When numVersions is undefined or 0 then a single version is rolled back.
111
+ * When numVersions exceeds the stored number of snapshots then the resource is rolled back to the first snapshot version.
112
+ * When numVersions is less than 0 then the resource is rolled back to the first snapshot version.
113
+ *
114
+ * @param {Number|undefined} numVersions The number of versions to roll back to. If undefined then
115
+ * @returns {Boolean} true if rollback was successful, false otherwise
116
+ */
117
+ function rollback(numVersions) {
118
+ var snapshotsLength = this.$$snapshots ? this.$$snapshots.length : 0;
119
+ numVersions = Math.min(numVersions || 1, snapshotsLength);
120
+
121
+ if (numVersions < 0) {
122
+ numVersions = snapshotsLength;
123
+ }
124
+
125
+ if (snapshotsLength) {
126
+ this.rollbackTo(this.$$snapshots.length - numVersions);
127
+ }
128
+
129
+ return true;
130
+ }
131
+
132
+ /**
133
+ * Checks if resource is changed from the most recent snapshot.
134
+ * @returns {Boolean} true if the latest snapshot differs from resource as-is
135
+ */
136
+ function unsnappedChanges() {
137
+ if (!this.$$snapshots) {
138
+ return true
139
+ }
140
+
141
+ var copy = this._prepSnapshot(),
142
+ latestSnap = this.$$snapshots[this.$$snapshots.length - 1]
143
+
144
+ return !angular.equals(copy, latestSnap)
145
+ }
146
+
147
+ }]);
148
+ }());
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A resource factory inspired by $resource from AngularJS
3
+ * @version v2.3.1 - 2018-02-11
4
+ * @link https://github.com/FineLinePrototyping/angularjs-rails-resource.git
5
+ * @author
6
+ */
7
+
8
+ angular.module("rails").factory("RailsResourceSnapshotsMixin",["RailsResourceInjector",function(s){function t(){}return t.configure=function(t,n){t.snapshotSerializer=s.getService(n.snapshotSerializer)},t.extended=function(s){s.intercept("afterResponse",function(s,t,n){n&&n.hasOwnProperty("$$snapshots")&&angular.isArray(n.$$snapshots)&&(n.$$snapshots.length=0)}),s.include({snapshot:a,rollback:i,rollbackTo:r,unsnappedChanges:e,_prepSnapshot:n})},t;function n(){var s=this.constructor.config,t=(s.snapshotSerializer||s.serializer).serialize(this);return delete t.$$snapshots,t}function a(s){var t=this._prepSnapshot();return t.$rollbackCallback=s,this.$$snapshots||(this.$$snapshots=[]),this.$$snapshots.push(t),this.$$snapshots.length-1}function r(s){var t,n,a=this.constructor.config,r=this.$$snapshots,i=this.$$snapshots?this.$$snapshots.length:0;return!(!angular.isArray(r)||0===i||!angular.isNumber(s)||(t=r.splice(Math.max(0,Math.min(s,i-1))),!angular.isArray(t)||0===t.length||(n=t[0].$rollbackCallback,angular.extend(this,(a.snapshotSerializer||a.serializer).deserialize(t[0])),this.$$snapshots=r,delete this.$rollbackCallback,angular.isFunction(n)&&n.call(this),0)))}function i(s){var t=this.$$snapshots?this.$$snapshots.length:0;return(s=Math.min(s||1,t))<0&&(s=t),t&&this.rollbackTo(this.$$snapshots.length-s),!0}function e(){if(!this.$$snapshots)return!0;var s=this._prepSnapshot(),t=this.$$snapshots[this.$$snapshots.length-1];return!angular.equals(s,t)}}]);
@@ -1,7 +1,7 @@
1
1
  module Angularjs
2
2
  module Rails
3
3
  module Resource
4
- VERSION = '2.3.0'
4
+ VERSION = '2.3.1'
5
5
  end
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angularjs-rails-resource",
3
- "version": "2.2.2",
3
+ "version": "2.3.1",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -79,12 +79,6 @@
79
79
  "json-schema-traverse": "0.3.1"
80
80
  }
81
81
  },
82
- "amdefine": {
83
- "version": "1.0.1",
84
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
85
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
86
- "dev": true
87
- },
88
82
  "amqplib": {
89
83
  "version": "0.5.2",
90
84
  "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.2.tgz",
@@ -135,8 +129,7 @@
135
129
  "version": "2.2.1",
136
130
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
137
131
  "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
138
- "dev": true,
139
- "optional": true
132
+ "dev": true
140
133
  },
141
134
  "anymatch": {
142
135
  "version": "1.3.2",
@@ -197,6 +190,12 @@
197
190
  "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
198
191
  "dev": true
199
192
  },
193
+ "array-find-index": {
194
+ "version": "1.0.2",
195
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
196
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
197
+ "dev": true
198
+ },
200
199
  "array-map": {
201
200
  "version": "0.0.0",
202
201
  "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
@@ -776,6 +775,12 @@
776
775
  "punycode": "1.4.1"
777
776
  }
778
777
  },
778
+ "builtin-modules": {
779
+ "version": "1.1.1",
780
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
781
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
782
+ "dev": true
783
+ },
779
784
  "builtin-status-codes": {
780
785
  "version": "3.0.0",
781
786
  "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
@@ -801,11 +806,21 @@
801
806
  "dev": true
802
807
  },
803
808
  "camelcase": {
804
- "version": "1.2.1",
805
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
806
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
809
+ "version": "2.1.1",
810
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
811
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
807
812
  "dev": true
808
813
  },
814
+ "camelcase-keys": {
815
+ "version": "2.1.0",
816
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
817
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
818
+ "dev": true,
819
+ "requires": {
820
+ "camelcase": "2.1.1",
821
+ "map-obj": "1.0.1"
822
+ }
823
+ },
809
824
  "caseless": {
810
825
  "version": "0.12.0",
811
826
  "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -818,7 +833,6 @@
818
833
  "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
819
834
  "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
820
835
  "dev": true,
821
- "optional": true,
822
836
  "requires": {
823
837
  "ansi-styles": "2.2.1",
824
838
  "escape-string-regexp": "1.0.5",
@@ -946,8 +960,7 @@
946
960
  "version": "2.13.0",
947
961
  "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
948
962
  "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
949
- "dev": true,
950
- "optional": true
963
+ "dev": true
951
964
  },
952
965
  "component-bind": {
953
966
  "version": "1.0.0",
@@ -1148,6 +1161,15 @@
1148
1161
  "randomfill": "1.0.3"
1149
1162
  }
1150
1163
  },
1164
+ "currently-unhandled": {
1165
+ "version": "0.4.1",
1166
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
1167
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
1168
+ "dev": true,
1169
+ "requires": {
1170
+ "array-find-index": "1.0.2"
1171
+ }
1172
+ },
1151
1173
  "custom-event": {
1152
1174
  "version": "1.0.1",
1153
1175
  "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
@@ -1196,12 +1218,6 @@
1196
1218
  "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
1197
1219
  "dev": true
1198
1220
  },
1199
- "debug": {
1200
- "version": "0.7.4",
1201
- "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
1202
- "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
1203
- "dev": true
1204
- },
1205
1221
  "decamelize": {
1206
1222
  "version": "1.2.0",
1207
1223
  "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -1489,6 +1505,15 @@
1489
1505
  "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
1490
1506
  "dev": true
1491
1507
  },
1508
+ "error-ex": {
1509
+ "version": "1.3.1",
1510
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
1511
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
1512
+ "dev": true,
1513
+ "requires": {
1514
+ "is-arrayish": "0.2.1"
1515
+ }
1516
+ },
1492
1517
  "es6-promise": {
1493
1518
  "version": "4.2.4",
1494
1519
  "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
@@ -1505,8 +1530,7 @@
1505
1530
  "version": "1.0.5",
1506
1531
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1507
1532
  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1508
- "dev": true,
1509
- "optional": true
1533
+ "dev": true
1510
1534
  },
1511
1535
  "escodegen": {
1512
1536
  "version": "1.9.0",
@@ -1694,12 +1718,6 @@
1694
1718
  "dev": true,
1695
1719
  "optional": true
1696
1720
  },
1697
- "faye-websocket": {
1698
- "version": "0.4.4",
1699
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz",
1700
- "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=",
1701
- "dev": true
1702
- },
1703
1721
  "fd-slicer": {
1704
1722
  "version": "1.0.1",
1705
1723
  "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
@@ -1709,6 +1727,16 @@
1709
1727
  "pend": "1.2.0"
1710
1728
  }
1711
1729
  },
1730
+ "figures": {
1731
+ "version": "1.7.0",
1732
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
1733
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
1734
+ "dev": true,
1735
+ "requires": {
1736
+ "escape-string-regexp": "1.0.5",
1737
+ "object-assign": "4.1.1"
1738
+ }
1739
+ },
1712
1740
  "file-uri-to-path": {
1713
1741
  "version": "1.0.0",
1714
1742
  "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -1767,6 +1795,16 @@
1767
1795
  }
1768
1796
  }
1769
1797
  },
1798
+ "find-up": {
1799
+ "version": "1.1.2",
1800
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
1801
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
1802
+ "dev": true,
1803
+ "requires": {
1804
+ "path-exists": "2.1.0",
1805
+ "pinkie-promise": "2.0.1"
1806
+ }
1807
+ },
1770
1808
  "findup-sync": {
1771
1809
  "version": "0.1.3",
1772
1810
  "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
@@ -2811,15 +2849,6 @@
2811
2849
  "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
2812
2850
  "dev": true
2813
2851
  },
2814
- "gaze": {
2815
- "version": "0.4.3",
2816
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.4.3.tgz",
2817
- "integrity": "sha1-5Tj0/15P5kj0c6l+HrslPS3hJ7U=",
2818
- "dev": true,
2819
- "requires": {
2820
- "globule": "0.1.0"
2821
- }
2822
- },
2823
2852
  "generate-function": {
2824
2853
  "version": "2.0.0",
2825
2854
  "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
@@ -2837,6 +2866,12 @@
2837
2866
  "is-property": "1.0.2"
2838
2867
  }
2839
2868
  },
2869
+ "get-stdin": {
2870
+ "version": "4.0.1",
2871
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
2872
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
2873
+ "dev": true
2874
+ },
2840
2875
  "get-uri": {
2841
2876
  "version": "2.0.1",
2842
2877
  "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.1.tgz",
@@ -2958,25 +2993,6 @@
2958
2993
  "is-glob": "2.0.1"
2959
2994
  }
2960
2995
  },
2961
- "globule": {
2962
- "version": "0.1.0",
2963
- "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
2964
- "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
2965
- "dev": true,
2966
- "requires": {
2967
- "glob": "3.1.21",
2968
- "lodash": "1.0.2",
2969
- "minimatch": "0.2.14"
2970
- },
2971
- "dependencies": {
2972
- "lodash": {
2973
- "version": "1.0.2",
2974
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
2975
- "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
2976
- "dev": true
2977
- }
2978
- }
2979
- },
2980
2996
  "graceful-fs": {
2981
2997
  "version": "1.2.3",
2982
2998
  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
@@ -3012,12 +3028,12 @@
3012
3028
  }
3013
3029
  },
3014
3030
  "grunt-bump": {
3015
- "version": "0.0.17",
3016
- "resolved": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.0.17.tgz",
3017
- "integrity": "sha1-CPaiqDQIMGjCqb0ryN+UI9mKkKc=",
3031
+ "version": "0.8.0",
3032
+ "resolved": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.8.0.tgz",
3033
+ "integrity": "sha1-0//gzzzws44JYHt4U49CpTHq/lU=",
3018
3034
  "dev": true,
3019
3035
  "requires": {
3020
- "semver": "2.3.2"
3036
+ "semver": "5.5.0"
3021
3037
  }
3022
3038
  },
3023
3039
  "grunt-contrib-clean": {
@@ -3062,23 +3078,15 @@
3062
3078
  }
3063
3079
  },
3064
3080
  "grunt-contrib-uglify": {
3065
- "version": "0.2.7",
3066
- "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.2.7.tgz",
3067
- "integrity": "sha1-5r2lHgxAoUWfbOrUI8Ze/XJaG/c=",
3081
+ "version": "3.3.0",
3082
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.3.0.tgz",
3083
+ "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==",
3068
3084
  "dev": true,
3069
3085
  "requires": {
3070
- "grunt-lib-contrib": "0.6.1",
3071
- "uglify-js": "2.4.24"
3072
- }
3073
- },
3074
- "grunt-contrib-watch": {
3075
- "version": "0.5.3",
3076
- "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.5.3.tgz",
3077
- "integrity": "sha1-fZ61Rl1Qb6FPqspH5uh5CoLBye4=",
3078
- "dev": true,
3079
- "requires": {
3080
- "gaze": "0.4.3",
3081
- "tiny-lr": "0.0.4"
3086
+ "chalk": "1.1.3",
3087
+ "maxmin": "1.1.0",
3088
+ "uglify-js": "3.3.9",
3089
+ "uri-path": "1.0.0"
3082
3090
  }
3083
3091
  },
3084
3092
  "grunt-legacy-log": {
@@ -3148,13 +3156,31 @@
3148
3156
  "which": "1.0.9"
3149
3157
  }
3150
3158
  },
3151
- "grunt-lib-contrib": {
3152
- "version": "0.6.1",
3153
- "resolved": "https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.6.1.tgz",
3154
- "integrity": "sha1-P1att9oG6BR5XuJBWw6+X7iQPrs=",
3159
+ "gzip-size": {
3160
+ "version": "1.0.0",
3161
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
3162
+ "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=",
3155
3163
  "dev": true,
3156
3164
  "requires": {
3157
- "zlib-browserify": "0.0.1"
3165
+ "browserify-zlib": "0.1.4",
3166
+ "concat-stream": "1.5.2"
3167
+ },
3168
+ "dependencies": {
3169
+ "browserify-zlib": {
3170
+ "version": "0.1.4",
3171
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
3172
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
3173
+ "dev": true,
3174
+ "requires": {
3175
+ "pako": "0.2.9"
3176
+ }
3177
+ },
3178
+ "pako": {
3179
+ "version": "0.2.9",
3180
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
3181
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
3182
+ "dev": true
3183
+ }
3158
3184
  }
3159
3185
  },
3160
3186
  "har-schema": {
@@ -3188,7 +3214,6 @@
3188
3214
  "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
3189
3215
  "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
3190
3216
  "dev": true,
3191
- "optional": true,
3192
3217
  "requires": {
3193
3218
  "ansi-regex": "2.1.1"
3194
3219
  }
@@ -3301,6 +3326,12 @@
3301
3326
  "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
3302
3327
  "dev": true
3303
3328
  },
3329
+ "hosted-git-info": {
3330
+ "version": "2.5.0",
3331
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
3332
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
3333
+ "dev": true
3334
+ },
3304
3335
  "htmlescape": {
3305
3336
  "version": "1.1.1",
3306
3337
  "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
@@ -3427,6 +3458,15 @@
3427
3458
  "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
3428
3459
  "dev": true
3429
3460
  },
3461
+ "indent-string": {
3462
+ "version": "2.1.0",
3463
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
3464
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
3465
+ "dev": true,
3466
+ "requires": {
3467
+ "repeating": "2.0.1"
3468
+ }
3469
+ },
3430
3470
  "indexof": {
3431
3471
  "version": "0.0.1",
3432
3472
  "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
@@ -3516,6 +3556,12 @@
3516
3556
  "dev": true,
3517
3557
  "optional": true
3518
3558
  },
3559
+ "is-arrayish": {
3560
+ "version": "0.2.1",
3561
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
3562
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
3563
+ "dev": true
3564
+ },
3519
3565
  "is-binary-path": {
3520
3566
  "version": "1.0.1",
3521
3567
  "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -3531,6 +3577,15 @@
3531
3577
  "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
3532
3578
  "dev": true
3533
3579
  },
3580
+ "is-builtin-module": {
3581
+ "version": "1.0.0",
3582
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
3583
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
3584
+ "dev": true,
3585
+ "requires": {
3586
+ "builtin-modules": "1.1.1"
3587
+ }
3588
+ },
3534
3589
  "is-dotfile": {
3535
3590
  "version": "1.0.3",
3536
3591
  "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
@@ -3558,6 +3613,15 @@
3558
3613
  "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
3559
3614
  "dev": true
3560
3615
  },
3616
+ "is-finite": {
3617
+ "version": "1.0.2",
3618
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
3619
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
3620
+ "dev": true,
3621
+ "requires": {
3622
+ "number-is-nan": "1.0.1"
3623
+ }
3624
+ },
3561
3625
  "is-glob": {
3562
3626
  "version": "2.0.1",
3563
3627
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
@@ -3620,6 +3684,12 @@
3620
3684
  "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3621
3685
  "dev": true
3622
3686
  },
3687
+ "is-utf8": {
3688
+ "version": "0.2.1",
3689
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
3690
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
3691
+ "dev": true
3692
+ },
3623
3693
  "isarray": {
3624
3694
  "version": "0.0.1",
3625
3695
  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -4042,6 +4112,27 @@
4042
4112
  "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=",
4043
4113
  "dev": true
4044
4114
  },
4115
+ "load-json-file": {
4116
+ "version": "1.1.0",
4117
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
4118
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
4119
+ "dev": true,
4120
+ "requires": {
4121
+ "graceful-fs": "4.1.11",
4122
+ "parse-json": "2.2.0",
4123
+ "pify": "2.3.0",
4124
+ "pinkie-promise": "2.0.1",
4125
+ "strip-bom": "2.0.0"
4126
+ },
4127
+ "dependencies": {
4128
+ "graceful-fs": {
4129
+ "version": "4.1.11",
4130
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
4131
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
4132
+ "dev": true
4133
+ }
4134
+ }
4135
+ },
4045
4136
  "lodash": {
4046
4137
  "version": "0.9.2",
4047
4138
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
@@ -4263,6 +4354,16 @@
4263
4354
  }
4264
4355
  }
4265
4356
  },
4357
+ "loud-rejection": {
4358
+ "version": "1.6.0",
4359
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
4360
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
4361
+ "dev": true,
4362
+ "requires": {
4363
+ "currently-unhandled": "0.4.1",
4364
+ "signal-exit": "3.0.2"
4365
+ }
4366
+ },
4266
4367
  "lru-cache": {
4267
4368
  "version": "2.7.3",
4268
4369
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
@@ -4353,6 +4454,24 @@
4353
4454
  }
4354
4455
  }
4355
4456
  },
4457
+ "map-obj": {
4458
+ "version": "1.0.1",
4459
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
4460
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
4461
+ "dev": true
4462
+ },
4463
+ "maxmin": {
4464
+ "version": "1.1.0",
4465
+ "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
4466
+ "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=",
4467
+ "dev": true,
4468
+ "requires": {
4469
+ "chalk": "1.1.3",
4470
+ "figures": "1.7.0",
4471
+ "gzip-size": "1.0.0",
4472
+ "pretty-bytes": "1.0.4"
4473
+ }
4474
+ },
4356
4475
  "md5.js": {
4357
4476
  "version": "1.3.4",
4358
4477
  "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
@@ -4381,6 +4500,24 @@
4381
4500
  "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
4382
4501
  "dev": true
4383
4502
  },
4503
+ "meow": {
4504
+ "version": "3.7.0",
4505
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
4506
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
4507
+ "dev": true,
4508
+ "requires": {
4509
+ "camelcase-keys": "2.1.0",
4510
+ "decamelize": "1.2.0",
4511
+ "loud-rejection": "1.6.0",
4512
+ "map-obj": "1.0.1",
4513
+ "minimist": "1.2.0",
4514
+ "normalize-package-data": "2.4.0",
4515
+ "object-assign": "4.1.1",
4516
+ "read-pkg-up": "1.0.1",
4517
+ "redent": "1.0.0",
4518
+ "trim-newlines": "1.0.0"
4519
+ }
4520
+ },
4384
4521
  "micromatch": {
4385
4522
  "version": "2.3.11",
4386
4523
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
@@ -4666,24 +4803,16 @@
4666
4803
  "abbrev": "1.1.1"
4667
4804
  }
4668
4805
  },
4669
- "noptify": {
4670
- "version": "0.0.3",
4671
- "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz",
4672
- "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=",
4806
+ "normalize-package-data": {
4807
+ "version": "2.4.0",
4808
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
4809
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
4673
4810
  "dev": true,
4674
4811
  "requires": {
4675
- "nopt": "2.0.0"
4676
- },
4677
- "dependencies": {
4678
- "nopt": {
4679
- "version": "2.0.0",
4680
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz",
4681
- "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=",
4682
- "dev": true,
4683
- "requires": {
4684
- "abbrev": "1.1.1"
4685
- }
4686
- }
4812
+ "hosted-git-info": "2.5.0",
4813
+ "is-builtin-module": "1.0.0",
4814
+ "semver": "5.5.0",
4815
+ "validate-npm-package-license": "3.0.1"
4687
4816
  }
4688
4817
  },
4689
4818
  "normalize-path": {
@@ -4701,12 +4830,24 @@
4701
4830
  "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
4702
4831
  "dev": true
4703
4832
  },
4833
+ "number-is-nan": {
4834
+ "version": "1.0.1",
4835
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
4836
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
4837
+ "dev": true
4838
+ },
4704
4839
  "oauth-sign": {
4705
4840
  "version": "0.8.2",
4706
4841
  "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
4707
4842
  "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
4708
4843
  "dev": true
4709
4844
  },
4845
+ "object-assign": {
4846
+ "version": "4.1.1",
4847
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
4848
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
4849
+ "dev": true
4850
+ },
4710
4851
  "object-component": {
4711
4852
  "version": "0.0.3",
4712
4853
  "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
@@ -4888,6 +5029,15 @@
4888
5029
  "is-glob": "2.0.1"
4889
5030
  }
4890
5031
  },
5032
+ "parse-json": {
5033
+ "version": "2.2.0",
5034
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
5035
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
5036
+ "dev": true,
5037
+ "requires": {
5038
+ "error-ex": "1.3.1"
5039
+ }
5040
+ },
4891
5041
  "parseqs": {
4892
5042
  "version": "0.0.5",
4893
5043
  "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
@@ -4918,6 +5068,15 @@
4918
5068
  "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
4919
5069
  "dev": true
4920
5070
  },
5071
+ "path-exists": {
5072
+ "version": "2.1.0",
5073
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
5074
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
5075
+ "dev": true,
5076
+ "requires": {
5077
+ "pinkie-promise": "2.0.1"
5078
+ }
5079
+ },
4921
5080
  "path-is-absolute": {
4922
5081
  "version": "1.0.1",
4923
5082
  "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -4955,6 +5114,25 @@
4955
5114
  }
4956
5115
  }
4957
5116
  },
5117
+ "path-type": {
5118
+ "version": "1.1.0",
5119
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
5120
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
5121
+ "dev": true,
5122
+ "requires": {
5123
+ "graceful-fs": "4.1.11",
5124
+ "pify": "2.3.0",
5125
+ "pinkie-promise": "2.0.1"
5126
+ },
5127
+ "dependencies": {
5128
+ "graceful-fs": {
5129
+ "version": "4.1.11",
5130
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
5131
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
5132
+ "dev": true
5133
+ }
5134
+ }
5135
+ },
4958
5136
  "pbkdf2": {
4959
5137
  "version": "3.0.14",
4960
5138
  "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
@@ -5268,6 +5446,12 @@
5268
5446
  }
5269
5447
  }
5270
5448
  },
5449
+ "pify": {
5450
+ "version": "2.3.0",
5451
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
5452
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
5453
+ "dev": true
5454
+ },
5271
5455
  "pinkie": {
5272
5456
  "version": "2.0.4",
5273
5457
  "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
@@ -5295,6 +5479,16 @@
5295
5479
  "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
5296
5480
  "dev": true
5297
5481
  },
5482
+ "pretty-bytes": {
5483
+ "version": "1.0.4",
5484
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
5485
+ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
5486
+ "dev": true,
5487
+ "requires": {
5488
+ "get-stdin": "4.0.1",
5489
+ "meow": "3.7.0"
5490
+ }
5491
+ },
5298
5492
  "prettysize": {
5299
5493
  "version": "0.0.3",
5300
5494
  "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz",
@@ -5425,12 +5619,6 @@
5425
5619
  }
5426
5620
  }
5427
5621
  },
5428
- "qs": {
5429
- "version": "0.5.6",
5430
- "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz",
5431
- "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=",
5432
- "dev": true
5433
- },
5434
5622
  "querystring": {
5435
5623
  "version": "0.2.0",
5436
5624
  "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -5570,6 +5758,27 @@
5570
5758
  }
5571
5759
  }
5572
5760
  },
5761
+ "read-pkg": {
5762
+ "version": "1.1.0",
5763
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
5764
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
5765
+ "dev": true,
5766
+ "requires": {
5767
+ "load-json-file": "1.1.0",
5768
+ "normalize-package-data": "2.4.0",
5769
+ "path-type": "1.1.0"
5770
+ }
5771
+ },
5772
+ "read-pkg-up": {
5773
+ "version": "1.0.1",
5774
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
5775
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
5776
+ "dev": true,
5777
+ "requires": {
5778
+ "find-up": "1.1.2",
5779
+ "read-pkg": "1.1.0"
5780
+ }
5781
+ },
5573
5782
  "readable-stream": {
5574
5783
  "version": "1.0.34",
5575
5784
  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
@@ -5641,6 +5850,16 @@
5641
5850
  }
5642
5851
  }
5643
5852
  },
5853
+ "redent": {
5854
+ "version": "1.0.0",
5855
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
5856
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
5857
+ "dev": true,
5858
+ "requires": {
5859
+ "indent-string": "2.1.0",
5860
+ "strip-indent": "1.0.1"
5861
+ }
5862
+ },
5644
5863
  "redis": {
5645
5864
  "version": "2.8.0",
5646
5865
  "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
@@ -5694,6 +5913,15 @@
5694
5913
  "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
5695
5914
  "dev": true
5696
5915
  },
5916
+ "repeating": {
5917
+ "version": "2.0.1",
5918
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
5919
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
5920
+ "dev": true,
5921
+ "requires": {
5922
+ "is-finite": "1.0.2"
5923
+ }
5924
+ },
5697
5925
  "request": {
5698
5926
  "version": "2.83.0",
5699
5927
  "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
@@ -5803,9 +6031,9 @@
5803
6031
  "dev": true
5804
6032
  },
5805
6033
  "semver": {
5806
- "version": "2.3.2",
5807
- "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz",
5808
- "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=",
6034
+ "version": "5.5.0",
6035
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
6036
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
5809
6037
  "dev": true
5810
6038
  },
5811
6039
  "set-immediate-shim": {
@@ -5864,6 +6092,12 @@
5864
6092
  "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
5865
6093
  "dev": true
5866
6094
  },
6095
+ "signal-exit": {
6096
+ "version": "3.0.2",
6097
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
6098
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
6099
+ "dev": true
6100
+ },
5867
6101
  "slack-node": {
5868
6102
  "version": "0.2.0",
5869
6103
  "resolved": "https://registry.npmjs.org/slack-node/-/slack-node-0.2.0.tgz",
@@ -6021,14 +6255,32 @@
6021
6255
  }
6022
6256
  },
6023
6257
  "source-map": {
6024
- "version": "0.1.34",
6025
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
6026
- "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
6258
+ "version": "0.6.1",
6259
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6260
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6261
+ "dev": true
6262
+ },
6263
+ "spdx-correct": {
6264
+ "version": "1.0.2",
6265
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
6266
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
6027
6267
  "dev": true,
6028
6268
  "requires": {
6029
- "amdefine": "1.0.1"
6269
+ "spdx-license-ids": "1.2.2"
6030
6270
  }
6031
6271
  },
6272
+ "spdx-expression-parse": {
6273
+ "version": "1.0.4",
6274
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
6275
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
6276
+ "dev": true
6277
+ },
6278
+ "spdx-license-ids": {
6279
+ "version": "1.2.2",
6280
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
6281
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
6282
+ "dev": true
6283
+ },
6032
6284
  "sshpk": {
6033
6285
  "version": "1.13.1",
6034
6286
  "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
@@ -6300,11 +6552,28 @@
6300
6552
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
6301
6553
  "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
6302
6554
  "dev": true,
6303
- "optional": true,
6304
6555
  "requires": {
6305
6556
  "ansi-regex": "2.1.1"
6306
6557
  }
6307
6558
  },
6559
+ "strip-bom": {
6560
+ "version": "2.0.0",
6561
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
6562
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
6563
+ "dev": true,
6564
+ "requires": {
6565
+ "is-utf8": "0.2.1"
6566
+ }
6567
+ },
6568
+ "strip-indent": {
6569
+ "version": "1.0.1",
6570
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
6571
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
6572
+ "dev": true,
6573
+ "requires": {
6574
+ "get-stdin": "4.0.1"
6575
+ }
6576
+ },
6308
6577
  "subarg": {
6309
6578
  "version": "1.0.0",
6310
6579
  "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
@@ -6318,8 +6587,7 @@
6318
6587
  "version": "2.0.0",
6319
6588
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
6320
6589
  "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
6321
- "dev": true,
6322
- "optional": true
6590
+ "dev": true
6323
6591
  },
6324
6592
  "syntax-error": {
6325
6593
  "version": "1.3.0",
@@ -6407,18 +6675,6 @@
6407
6675
  "dev": true,
6408
6676
  "optional": true
6409
6677
  },
6410
- "tiny-lr": {
6411
- "version": "0.0.4",
6412
- "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.0.4.tgz",
6413
- "integrity": "sha1-gGGFR/Y/aX0Fy0DEwsSwg1Ia77Y=",
6414
- "dev": true,
6415
- "requires": {
6416
- "debug": "0.7.4",
6417
- "faye-websocket": "0.4.4",
6418
- "noptify": "0.0.3",
6419
- "qs": "0.5.6"
6420
- }
6421
- },
6422
6678
  "tmp": {
6423
6679
  "version": "0.0.33",
6424
6680
  "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -6450,6 +6706,12 @@
6450
6706
  "punycode": "1.4.1"
6451
6707
  }
6452
6708
  },
6709
+ "trim-newlines": {
6710
+ "version": "1.0.0",
6711
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
6712
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
6713
+ "dev": true
6714
+ },
6453
6715
  "tsscmp": {
6454
6716
  "version": "1.0.5",
6455
6717
  "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz",
@@ -6506,31 +6768,15 @@
6506
6768
  "dev": true
6507
6769
  },
6508
6770
  "uglify-js": {
6509
- "version": "2.4.24",
6510
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
6511
- "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=",
6771
+ "version": "3.3.9",
6772
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.9.tgz",
6773
+ "integrity": "sha512-J2t8B5tj9JdPTW4+sNZXmiIWHzTvcoITkaqzTiilu/biZF/9crqf/Fi7k5hqbOmVRh9/hVNxAxBYIMF7N6SqMQ==",
6512
6774
  "dev": true,
6513
6775
  "requires": {
6514
- "async": "0.2.10",
6515
- "source-map": "0.1.34",
6516
- "uglify-to-browserify": "1.0.2",
6517
- "yargs": "3.5.4"
6518
- },
6519
- "dependencies": {
6520
- "async": {
6521
- "version": "0.2.10",
6522
- "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
6523
- "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
6524
- "dev": true
6525
- }
6776
+ "commander": "2.13.0",
6777
+ "source-map": "0.6.1"
6526
6778
  }
6527
6779
  },
6528
- "uglify-to-browserify": {
6529
- "version": "1.0.2",
6530
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
6531
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
6532
- "dev": true
6533
- },
6534
6780
  "ultron": {
6535
6781
  "version": "1.1.1",
6536
6782
  "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
@@ -6561,6 +6807,12 @@
6561
6807
  "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
6562
6808
  "dev": true
6563
6809
  },
6810
+ "uri-path": {
6811
+ "version": "1.0.0",
6812
+ "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz",
6813
+ "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=",
6814
+ "dev": true
6815
+ },
6564
6816
  "url": {
6565
6817
  "version": "0.11.0",
6566
6818
  "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
@@ -6646,6 +6898,16 @@
6646
6898
  "dev": true,
6647
6899
  "optional": true
6648
6900
  },
6901
+ "validate-npm-package-license": {
6902
+ "version": "3.0.1",
6903
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
6904
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
6905
+ "dev": true,
6906
+ "requires": {
6907
+ "spdx-correct": "1.0.2",
6908
+ "spdx-expression-parse": "1.0.4"
6909
+ }
6910
+ },
6649
6911
  "verror": {
6650
6912
  "version": "1.10.0",
6651
6913
  "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
@@ -6699,12 +6961,6 @@
6699
6961
  "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
6700
6962
  "dev": true
6701
6963
  },
6702
- "window-size": {
6703
- "version": "0.1.0",
6704
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
6705
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
6706
- "dev": true
6707
- },
6708
6964
  "wordwrap": {
6709
6965
  "version": "0.0.2",
6710
6966
  "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
@@ -6753,18 +7009,6 @@
6753
7009
  "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
6754
7010
  "dev": true
6755
7011
  },
6756
- "yargs": {
6757
- "version": "3.5.4",
6758
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
6759
- "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=",
6760
- "dev": true,
6761
- "requires": {
6762
- "camelcase": "1.2.1",
6763
- "decamelize": "1.2.0",
6764
- "window-size": "0.1.0",
6765
- "wordwrap": "0.0.2"
6766
- }
6767
- },
6768
7012
  "yauzl": {
6769
7013
  "version": "2.4.1",
6770
7014
  "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
@@ -6779,12 +7023,6 @@
6779
7023
  "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
6780
7024
  "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
6781
7025
  "dev": true
6782
- },
6783
- "zlib-browserify": {
6784
- "version": "0.0.1",
6785
- "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.1.tgz",
6786
- "integrity": "sha1-T6akXQDbwV8xikr6HZr8Aljhdsw=",
6787
- "dev": true
6788
7026
  }
6789
7027
  }
6790
7028
  }