-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.min.js
1 lines (1 loc) · 1.79 KB
/
index.min.js
1
'use strict';function _defineProperty(c,d,e){return d in c?Object.defineProperty(c,d,{value:e,enumerable:!0,configurable:!0,writable:!0}):c[d]=e,c}var cloneDeep=require('lodash.clonedeep'),kindOf=require('kind-of');module.exports=function(d,e,f,g){return _validateAttrs.call(this,d,e,f,g),_set.call(this,d,e,f,g)};function _validateAttrs(c,d,e,f){if('object'!==kindOf(c))throw new Error('First argument must be an object');if('array'!==kindOf(d))throw new Error('Second argument must be an array');else if(!d.length)throw new Error('Path must not be empty');if(!e)throw new Error('Value must be specified');if('undefined'!==kindOf(f)&&'object'!==kindOf(f))throw new Error('Options must be an object')}function _set(c,d,e,f){for(var g=_getRootObj(c,f),h=g,j=0;j<d.length;j++)if(_manageCreateEntity(h,d[j],f),'string'===kindOf(d[j])){if(!h.hasOwnProperty(d[j]))return;if(j+1===d.length)return h[d[j]]=e,g;h=h[d[j]]}else if('array'===kindOf(d[j])){var k=d[j][0],l=d[j][1],m=d[j][2],n=d[j][3];if(!h.hasOwnProperty(k)||'array'!==kindOf(h[k]))return;var o=_findIndex(h[k],l,m,n);if('number'!==kindOf(o))return;if(j+1===d.length)return h[k][o]=e,g;h=h[k][o]}}function _findIndex(c,d,e,f){if('undefined'!==kindOf(f)&&'function'!==kindOf(f))throw new Error('Comparator mast be a function');for(var g=0;g<c.length;g++)if('object'===kindOf(c[g])&&c[g].hasOwnProperty(d)){var h=c[g][d],j=f?f(e,h):_isEqual(e,h);if(j)return g}}function _isEqual(c,d){return c===d}function _getRootObj(c,d){return d&&d.immutable?cloneDeep(c):c}function _manageCreateEntity(c,d,e){if(!(e&&e.create))return c;else if('string'===kindOf(d))c.hasOwnProperty(d)||(c[d]={});else if('array'===kindOf(d)){var f=d[0],g=d[1],h=d[2];c.hasOwnProperty(f)&&'array'===kindOf(c[f])||(c[f]=[]);var j=_findIndex(c[f],g,h);'number'!==kindOf(j)&&c[f].push(_defineProperty({},g,h))}}