eteveniet
Version:
Options-defaults design pattern implementation for reliable configuration. It merges objects deeply, overrides arrays and classes (different than Object) and the result remains strongly typed.
2 lines (1 loc) • 466 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});const e=["__proto__","constructor","prototype"],t=(o,...r)=>(r.forEach((r=>{r&&"object"==typeof r&&Object.entries(r).forEach((([r,c])=>{if(e.includes(r))return;const s="object"==typeof c,n=s&&"Object"!==(null==c?void 0:c.constructor.name);null===c||!s||Array.isArray(c)||n?o[r]=c:(o[r]||(o[r]={}),t(o[r],c))}))})),o);exports.defaults=(e,o,r,c,s,n,u,...p)=>t({},e,o,r,c,s,n,u,...p),exports.merge=t;