UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 1.97 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.omit=exports.pick=exports.fromEntries=exports.isSimpleObject=exports.isObject=exports.deepClone=exports.cleanObjectStrict=exports.cleanObject=void 0;const filter_1=require("@reactivex/ix-es2015-cjs/iterable/operators/filter"),Iterable_1=require("../Iterable");function cleanObject(e){return fromEntries((0,Iterable_1.entries)(e).pipe((0,filter_1.filter)(([e])=>void 0!==e)))}function cleanObjectStrict(e){return Array.isArray(e)?e.map(e=>t(e)?e:void 0):fromEntries((0,Iterable_1.entries)(e).pipe((0,filter_1.filter)(([,e])=>t(e))));function t(e){return null!=e&&("string"==typeof e?""!==e:"object"!=typeof e||Object.keys(e).length>0)}}function deepClone(e){return function e(t,r){if(isObject(t)){if(r.has(t))return r.get(t);if(Array.isArray(t)){const n=t.map(t=>e(t,r));return r.set(t,n),n}{const o="function"==typeof t?{[(n=t).name]:(...e)=>n(...e)}[n.name]:Object.create(Object.getPrototypeOf(t)),i=Object.getOwnPropertyDescriptors(t),c=Object.getOwnPropertySymbols(t);for(const[t,n]of Object.entries(i))n.get||n.set||(n.value=e(n.value,r)),Object.defineProperty(o,t,n);for(const t of c){const n=i[t];n.get||n.set||(n.value=e(n.value,r)),Object.defineProperty(o,t,n)}return r.set(t,o),o}}return t;var n}(e,new Map)}function isObject(e){return!!e&&("object"==typeof e||"function"==typeof e)}function fromEntries(e){const t={};for(const[r,n]of e)t[r]=n;return t}function pick(e,t){let r;if("function"==typeof t)r=t;else{const e=t instanceof Set?t:new Set(t);r=t=>e.has(t)}return fromEntries(Object.entries(e).filter(([e])=>r(e)))}function omit(e,t){let r;if("function"==typeof t)r=e=>!t(e);else{const e=t instanceof Set?t:new Set(t);r=t=>!e.has(t)}return pick(e,r)}exports.cleanObject=cleanObject,exports.cleanObjectStrict=cleanObjectStrict,exports.deepClone=deepClone,exports.isObject=isObject,exports.isSimpleObject=isObject,exports.fromEntries=fromEntries,exports.pick=pick,exports.omit=omit;