# @profiscience/knockout-contrib-utils-merge

> Handy Utilities for Knockout JS

Latest version **1.0.0-alpha.14** (published 2018-05-23) · WTFPL license · 0 weekly downloads

## Install

```sh
npm install @profiscience/knockout-contrib-utils-merge
pnpm add @profiscience/knockout-contrib-utils-merge
yarn add @profiscience/knockout-contrib-utils-merge
bun add @profiscience/knockout-contrib-utils-merge
```

## Health

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

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0-alpha.14 |
| Published | 2018-05-23 |
| First published | 2017-11-04 |
| Weekly downloads | 0 |
| License | WTFPL |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 16 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 41 |
| Author | Casey Webb |
| Maintainers | barsh, caseywebb |
| Keywords | knockout, knockoutjs, utils, helpers, utilities |

## Links

- npm: https://www.npmjs.com/package/@profiscience/knockout-contrib-utils-merge
- Repository: https://github.com/Profiscience/knockout-contrib
- Homepage: https://github.com/Profiscience/knockout-contrib/tree/master/packages/utils.merge
- Issues: https://github.com/Profiscience/knockout-contrib/issues
- npm.io page: https://npm.io/package/@profiscience/knockout-contrib-utils-merge

## Dependencies (1)

- [@profiscience/knockout-contrib-utils-from-js](https://npm.io/package/@profiscience/knockout-contrib-utils-from-js.md) ^1.0.0-alpha.10

## Alternatives

- [pagerjs](https://npm.io/package/pagerjs.md) — 60 weekly downloads
- [whistle.savefor-mock](https://npm.io/package/whistle.savefor-mock.md) — 4 weekly downloads
- [kubepace](https://npm.io/package/kubepace.md) — 0 weekly downloads
- [@crvouga/mockingbird-service-google](https://npm.io/package/@crvouga/mockingbird-service-google.md) — 0 weekly downloads
- [@crvouga/mockingbird-service-apple](https://npm.io/package/@crvouga/mockingbird-service-apple.md) — 0 weekly downloads

## Recent versions

- 1.0.0-alpha.14 (latest) — 2018-05-23
- 1.0.0-alpha.13 — 2018-05-08
- 1.0.0-alpha.12 — 2018-04-13
- 1.0.0-alpha.11 — 2018-04-05
- 1.0.0-alpha.10 — 2018-02-13
- 1.0.0-alpha.9 — 2018-02-13
- 1.0.0-alpha.8 — 2018-02-13
- 1.0.0-alpha.7 — 2018-02-13
- 1.0.0-alpha.6 — 2018-02-13
- 1.0.0-alpha.5 — 2018-02-02
- 1.0.0-alpha.4 — 2018-01-29
- 1.0.0-alpha.3 — 2018-01-22
- 1.0.0-alpha.2 — 2018-01-09
- 1.0.0-alpha.1 — 2017-12-18
- 1.0.0-alpha.0 — 2017-11-04

## README

# @profiscience/knockout-contrib-utils-merge

[![Version][npm-version-shield]][npm]
[![Dependency Status][david-dm-shield]][david-dm]
[![Peer Dependency Status][david-dm-peer-shield]][david-dm-peer]
[![Dev Dependency Status][david-dm-dev-shield]][david-dm-dev]
[![Downloads][npm-stats-shield]][npm-stats]

[david-dm]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/utils.merge
[david-dm-shield]: https://david-dm.org/Profiscience/knockout-contrib/status.svg?path=packages/utils.merge

[david-dm-peer]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/utils.merge&type=peer
[david-dm-peer-shield]: https://david-dm.org/Profiscience/knockout-contrib/peer-status.svg?path=packages/utils.merge

[david-dm-dev]: https://david-dm.org/Profiscience/knockout-contrib?path=packages/utils.merge&type=dev
[david-dm-dev-shield]: https://david-dm.org/Profiscience/knockout-contrib/dev-status.svg?path=packages/utils.merge

[npm]: https://www.npmjs.com/package/@profiscience/knockout-contrib-utils-merge
[npm-version-shield]: https://img.shields.io/npm/v/@profiscience/knockout-contrib-utils-merge.svg

[npm-stats]: http://npm-stat.com/charts.html?package=@profiscience/knockout-contrib-utils-merge&author=&from=&to=
[npm-stats-shield]: https://img.shields.io/npm/dt/@profiscience/knockout-contrib-utils-merge.svg?maxAge=2592000

**NOTE:** It is recommended to use the [@profiscience/knockout-contrib-utils metapackage](../utils)

## Usage
> merge(dest, src[, mapArrays = false])

For each enumerable property of src,
  a) creates an observable when undefined on dest
  b) updates when existing observable on dest
  c) sets when existing non-observable on dest.

If `mapArrays` is true, array elements will be created as mapped observables, else bare objects/primitives.
__NOTE__: Merging new arrays onto existing ones that have been mapped deep will create new observable elements,
__not__ update the existing ones. No attempts are made to key elements, nor will they. If you need more, you
probably want [ko.mapping](http://knockoutjs.com/documentation/plugins-mapping.html) which is much more powerful,
but far slower.

```javascript
import { merge } from '@profiscience/knockout-contrib-utils'

const foos = {
  foo: ko.observable('foo'),
  bar: 'bar'
}

merge(foos, {
  foo: 'new foo',
  bar: 'new bar',
  baz: 'baz'
})

foos()
// {
//   foo: ko.observable('new foo'),
//   bar: 'new bar',
//   baz: ko.observable('baz')
// }
```

---
_Source: https://npm.io/package/@profiscience/knockout-contrib-utils-merge · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
