UNPKG

rubico

Version:

[a]synchronous functional programming

8 lines (7 loc) 995 B
/** * rubico v2.6.2 * https://github.com/a-synchronous/rubico * (c) 2019-2024 Richard Tong * rubico may be freely distributed under the MIT license. */ const isArray=Array.isArray,arrayDefaultsDeepFromArray=function(r,e){const t=e.length,c=r.slice();let o=-1;for(;++o<t;){const t=r[o],a=e[o];isArray(t)&&isArray(a)?c[o]=arrayDefaultsDeepFromArray(t,a):null==t?c[o]=a:null==a?c[o]=t:t.constructor==Object&&a.constructor==Object?c[o]=objectDefaultsDeepFromObject(t,a):c[o]=t}return c},objectDefaultsDeepFromObject=function(r,e){const t={...r};for(const c in e){const o=r[c],a=e[c];isArray(o)&&isArray(a)?t[c]=arrayDefaultsDeepFromArray(o,a):null==o?t[c]=a:null==a?t[c]=o:o.constructor==Object&&a.constructor==Object?t[c]=objectDefaultsDeepFromObject(o,a):t[c]=o}return t},defaultsDeep=r=>function(e){return isArray(e)&&isArray(r)?arrayDefaultsDeepFromArray(e,r):null==e||null==r?e:e.constructor==Object&&r.constructor==Object?objectDefaultsDeepFromObject(e,r):e};export default defaultsDeep;