-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathimmu.min.js
1 lines (1 loc) · 2.92 KB
/
immu.min.js
1
"use strict";function _toConsumableArray(r){if(Array.isArray(r)){for(var n=0,e=Array(r.length);n<r.length;n++)e[n]=r[n];return e}return Array.from(r)}function immu(r){return void 0!==IMMUTABLE_TYPES[typeof r]||null===r?r:"function"==typeof r.toJS?r:Object.freeze(Array.isArray(r)?immutableArray(r):immutableObject(r))}function immutableObject(r){var n=defineDefaultProps(r);return Object.keys(r).forEach(function(e){var t=r[e];n[e]={enumerable:!0,set:function(r){throw new Error('Cannot change value "'+e+'" to "'+r+'" of an immutable property')},get:function(){return t=immu(t)}}}),Object.create(Object.getPrototypeOf(r),n)}function immutableArray(r){var n=r.slice(0).map(immu),e=["forEach","map","filter","some","every"],t=["reduce","reduceRight"],u=["concat","join","slice","indexOf","lastIndexOf","reverse"],o=_extends({},defineDefaultProps(r),{push:defineProp("push",function(){return function(){for(var r=arguments.length,e=Array(r),t=0;t<r;t++)e[t]=arguments[t];return immu(n.concat(e))}}),unshift:defineProp("unshift",function(){return function(){for(var r=arguments.length,e=Array(r),t=0;t<r;t++)e[t]=arguments[t];return immu(e.concat(n))}}),sort:defineProp("sort",function(){return function(n){return immu(n?r.sort(function(r,e){return n(immu(r),immu(e))}):r.sort())}}),splice:defineProp("splice",function(){return function(){for(var r=arguments.length,e=Array(r),t=0;t<r;t++)e[t]=arguments[t];var u=e[0],o=e[1],i=e.slice(2)||[],a=n.slice(0,u),f=n.slice(u+o);return a.concat(i,f)}})});return e.forEach(function(n){return o[n]=defineProp(n,function(){return iterators(r,n)})}),u.forEach(function(n){return o[n]=defineProp(n,function(){return immutators(r,n)})}),t.forEach(function(n){o[n]=defineProp(n,function(){return function(e,t){return immu(r[n](function(){for(var r=arguments.length,n=Array(r),t=0;t<r;t++)n[t]=arguments[t];return e.apply(void 0,_toConsumableArray(n.map(immu)))},immu(t)))}})}),Object.defineProperties(n,o)}function iterators(r,n){return function(e){return immu(r[n](function(){for(var r=arguments.length,n=Array(r),t=0;t<r;t++)n[t]=arguments[t];return e.apply(void 0,_toConsumableArray(n.map(immu)))}))}}function immutators(r,n){return function(){return immu(r[n].apply(r,arguments))}}function defineDefaultProps(r){return{toJS:{value:function(){return r}},toJSON:{value:function(){return r}},valueOf:{value:function(){return r.valueOf()}},toString:{value:function(){return r.toString()}},toLocaleString:{value:function(){return r.toLocaleString()}}}}function defineProp(r,n){return{set:function(n){throw new Error('Cannot change value "'+r+'" to "'+n+'" of an immutable property')},get:n}}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r};exports.default=immu;var IMMUTABLE_TYPES={function:!0,string:!0,boolean:!0,number:!0,undefined:!0,symbol:!0};module.exports=exports.default;