interface DeepMergeOptions {
    arrays?: "ignore" | "replace" | "merge";
    objects?: "ignore" | "replace" | "merge";
    properties?: "ignore" | "replace";
    undefined?: "ignore" | "replace";
}

Properties

arrays?: "ignore" | "replace" | "merge"

when an array is encountered that is already present in the target object, should we replace the value in the target object with the value from the source object, merge the arrays together or ignore it?

'replace'
objects?: "ignore" | "replace" | "merge"

when an object is encountered that is already present in the target object, should we replace the value in the target object with the value from the source object, merge the objects together or ignore it?

'merge'
properties?: "ignore" | "replace"

when a property is encountered that is already present in the target object, should we replace the value in the target object with the value from the source object or ignore it?

'replace'
undefined?: "ignore" | "replace"

when undefined value is encountered, should we replace the value in the target object with undefined or ignore it?

'ignore'