MCPcopy
hub / github.com/webpack/webpack / removeOperations

Function removeOperations

lib/util/cleverMerge.js:609–648  ·  view source on GitHub ↗
(obj, keysToKeepOriginalValue = [])

Source from the content-addressed store, hash-verified

607 * @returns {T} the object without operations like "..." or DELETE
608 */
609const removeOperations = (obj, keysToKeepOriginalValue = []) => {
610 const newObj = /** @type {T} */ ({});
611 for (const _key of Object.keys(obj)) {
612 const key = /** @type {keyof T} */ (_key);
613 const value = obj[key];
614 const type = getValueType(value);
615 if (type === VALUE_TYPE_OBJECT && keysToKeepOriginalValue.includes(key)) {
616 newObj[key] = value;
617 continue;
618 }
619 switch (type) {
620 case VALUE_TYPE_UNDEFINED:
621 case VALUE_TYPE_DELETE:
622 break;
623 case VALUE_TYPE_OBJECT:
624 newObj[key] =
625 /** @type {T[keyof T]} */
626 (
627 removeOperations(
628 /** @type {T} */
629 (value),
630 keysToKeepOriginalValue
631 )
632 );
633 break;
634 case VALUE_TYPE_ARRAY_EXTEND:
635 newObj[key] =
636 /** @type {T[keyof T]} */
637 (
638 /** @type {EXPECTED_ANY[]} */
639 (value).filter((i) => i !== "...")
640 );
641 break;
642 default:
643 newObj[key] = value;
644 break;
645 }
646 }
647 return newObj;
648};
649
650/**
651 * Resolves by property.

Callers 2

convertToResolveOptionsFunction · 0.85

Calls 2

getValueTypeFunction · 0.85
keysMethod · 0.65

Tested by

no test coverage detected