# deap

> extend and merge objects, deep or shallow

Latest version **1.0.1** (published 2018-03-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install deap
pnpm add deap
yarn add deap
bun add deap
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2018-03-05 |
| First published | 2013-05-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 29.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 13 |
| Author | Brad Harris |
| Maintainers | bmharris, prestaul |
| Keywords | extend, merge, mixin, deep, shallow, clone |

## Links

- npm: https://www.npmjs.com/package/deap
- Repository: https://github.com/selfcontained/deap
- Homepage: https://github.com/selfcontained/deap#readme
- Issues: https://github.com/selfcontained/deap/issues
- npm.io page: https://npm.io/package/deap

## Recent versions

- 1.0.1 (latest) — 2018-03-05
- 1.0.0 — 2014-06-18
- 0.2.2 — 2014-03-21
- 0.2.1 — 2014-03-21
- 0.2.0 — 2013-07-25
- 0.1.2 — 2013-05-10
- 0.1.1 — 2013-05-08
- 0.1.0 — 2013-05-08

## README

[![Build Status](https://travis-ci.org/selfcontained/deap.svg?branch=master)](https://travis-ci.org/selfcontained/deap)
[![Coverage Status](https://img.shields.io/coveralls/selfcontained/deap.svg)](https://coveralls.io/r/selfcontained/deap?branch=master)

===

[![browser support](https://ci.testling.com/selfcontained/deap.png)](http://ci.testling.com/selfcontained/deap)

deap
====

extend and merge objects, deep or shallow, in javascript


### installation

```bash
npm install deap
```

```javascript
var deap = require('deap');
```

### browser usage

**deap** assumes es5, so we recommend using an es5 shim for older browsers.  [Browserify](https://github.com/substack/node-browserify) is also recommended as a means to use this module client-side, but other module loaders for browsers will work with **deap** as well if you shim it.

### available functions

+ deap() and deap.extend() - **deep extend**
+ deap.merge() - **deep merge**
+ deap.update() - **deep update**
+ deap.extendShallow() - **shallow extend**
+ deap.mergeShallow() - **shallow merge**
+ deap.updateShallow() - **shallow update**
+ deap.clone() - **deep clone**

---

### deap() and deap.extend()

Deep extend.  Copy all the properties from one object onto another, cloning objects deeply.

Takes *n* number of arguments, modifies the first argument and returns it.

```javascript
var a = { name: 'Joe' };

deap.extend(a, { age: 26 }); // returns: a => { name: 'Joe', age: 26 }
deap.extend({}, someObj); // clone someObj
```

### deap.merge()

Deep merge.  Copy properties from one object to another, not replacing existing properties.

Takes *n* number of arguments, modifies the first argument and returns it.

```javascript
var a = { name: 'Joe', address: { number: 1234 };
deap.merge(a, { name: 'Jack', age: 26, phone: '555-555-5555', address: { number: 4321, street: 'University Blvd' });
// returns: a => { name: 'Joe', age: 26, phone: '555-555-5555', address: { number: 1234, street: 'University Blvd' }}
```

### deap.update()

Deep update.  Fill an object's existing properties from another object.  For nested objects, a deep update will only update existing properties.  Shallow updates will replace nested objects entirely.

Takes *n* number of arguments, modifies the first argument and returns it.

```javascript
var a = { name: 'Joe', phone: '' };
deap.update(a, { age: 26, phone: '555-555-5555' }); // returns: a => { name: 'Joe', phone: '555-555-5555' }
```

---

## shallow only

If you prefer a shallow-only instance of **deap** you can require it specifically

```javascript
var deap = require('deap/shallow');

deap() && deap.extend(); // shallow extend
deap.merge(); //shallow merge
deap.update(); //shallow update
deap.clone(); // deep clone
```

... the end

---
_Source: https://npm.io/package/deap · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
