Skip to main content

merge-deep

$merge-deep

Recursively deep-merges the argument object into the input object, returning a new object. Nested plain objects are merged rather than replaced; arrays and primitive values are overwritten. The input is not mutated.

Use $merge for shallow (one-level) merging.

Parameters

  • Object of fields to deep-merge (object, required): Key/value pairs to apply over the input.

Example

// Deep-merge default nested config into the user-supplied object
new Schema('object').transformer({
'$merge-deep': {
logging: {level: 'info', format: 'json'},
server: {port: 3000},
}
})
// {logging: {level: 'debug'}, server: {host: 'localhost'}}
// → {logging: {level: 'debug', format: 'json'}, server: {host: 'localhost', port: 3000}}

// Inject a nested metadata field without overwriting sibling keys
new Schema('object').transformer({'$merge-deep': {meta: {version: 1}}})
// {meta: {author: 'rg'}} → {meta: {author: 'rg', version: 1}}