UNPKG

rubico

Version:

[a]synchronous functional programming

8 lines (7 loc) 1.38 kB
/** * rubico v2.7.7 * https://github.com/a-synchronous/rubico * (c) 2019-2025 Richard Tong * rubico may be freely distributed under the MIT license. */ const isArray=Array.isArray,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(t){return r(t,e)},curry2ResolveArg1=(r,e)=>function(t){return r(e,t)},curry2=function(r,e,t){return e==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,e)};function arrayDefaultsDeepFromArray(r,e){const t=e.length,o=r.slice();let u=-1;for(;++u<t;){const t=r[u],n=e[u];isArray(t)&&isArray(n)?o[u]=arrayDefaultsDeepFromArray(t,n):null==t?o[u]=n:null==n?o[u]=t:t.constructor==Object&&n.constructor==Object?o[u]=objectDefaultsDeepFromObject(t,n):o[u]=t}return o}function objectDefaultsDeepFromObject(r,e){const t={...r};for(const o in e){const u=r[o],n=e[o];isArray(u)&&isArray(n)?t[o]=arrayDefaultsDeepFromArray(u,n):null==u?t[o]=n:null==n?t[o]=u:u.constructor==Object&&n.constructor==Object?t[o]=objectDefaultsDeepFromObject(u,n):t[o]=u}return t}function _defaultsDeep(r,e){return isArray(r)&&isArray(e)?arrayDefaultsDeepFromArray(r,e):null==r||null==e?r:r.constructor==Object&&e.constructor==Object?objectDefaultsDeepFromObject(r,e):r}function defaultsDeep(...r){if(1==r.length)return curry2(_defaultsDeep,__,r[0]);if(2==r.length)return _defaultsDeep(...r);throw new TypeError("Invalid number of arguments")}export default defaultsDeep;