Socket
Socket
Sign inDemoInstall

merge-anything

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

merge-anything - npm Package Compare versions

Comparing version 3.0.1 to 3.0.2

4

package.json
{
"name": "merge-anything",
"version": "3.0.1",
"version": "3.0.2",
"sideEffects": false,

@@ -49,3 +49,3 @@ "description": "Merge objects & other types recursively. A simple & small integration.",

"is-what": "^3.6.0",
"ts-toolbelt": "^6.2.0"
"ts-toolbelt": "^6.3.0"
},

@@ -52,0 +52,0 @@ "devDependencies": {

@@ -59,3 +59,3 @@ # Merge anything 🥡

![typescript support](./github/typescript-support.png)
![typescript support](https://raw.githubusercontent.com/mesqueeb/merge-anything/master/.github/typescript-support.png)

@@ -101,7 +101,7 @@ ## Rules

<!-- prettier-ignore-start -->
```js
import { mergeAndConcat } from 'merge-anything'
merge(
{ extensions: [concatArrays] }, // pass your extensions like so
mergeAndConcat(
{ nested: { prop: { array: ['a'] } } },

@@ -112,2 +112,3 @@ { nested: { prop: { array: ['b'] } } }

```
<!-- prettier-ignore-end -->

@@ -114,0 +115,0 @@ ## Compare Function when a value is merged

@@ -81,6 +81,6 @@ import { O } from 'ts-toolbelt'

*/
export function merge<T extends PlainObject, Tn extends PlainObject[]> (
export function merge<T extends object, Tn extends object[]> (
origin: T,
...newComers: Tn
): O.Assign<T, Tn, 'deep'> {
): O.Compact<T, Tn, 'deep'> {
// @ts-ignore

@@ -92,7 +92,7 @@ return newComers.reduce((result, newComer) => {

export function mergeAndCompare<T extends PlainObject, Tn extends PlainObject[]> (
export function mergeAndCompare<T extends object, Tn extends object[]> (
compareFn: (prop1: any, prop2: any, propName: string | symbol) => any,
origin: T,
...newComers: Tn
): O.Assign<T, Tn, 'deep'> {
): O.Compact<T, Tn, 'deep'> {
// @ts-ignore

@@ -104,6 +104,6 @@ return newComers.reduce((result, newComer) => {

export function mergeAndConcat<T extends PlainObject, Tn extends PlainObject[]> (
export function mergeAndConcat<T extends object, Tn extends object[]> (
origin: T,
...newComers: Tn
): O.Assign<T, Tn, 'deep'> {
): O.Compact<T, Tn, 'deep'> {
// @ts-ignore

@@ -110,0 +110,0 @@ return newComers.reduce((result, newComer) => {

@@ -76,2 +76,3 @@ import test from 'ava'

const res = merge(origin, target)
// @ts-ignore
t.deepEqual(res, { body: {}, head: {}, toes: { big: true }, fingers: null })

@@ -83,2 +84,3 @@ })

const res = merge(origin, target)
// @ts-ignore
t.deepEqual(res, { body: {}, head: {}, toes: { big: true }, fingers: null })

@@ -100,2 +102,3 @@ t.deepEqual(origin, { body: '', head: null, toes: { big: true }, fingers: { '12': false } })

target.fingers = 'b'
// @ts-ignore
t.deepEqual(res, { body: {}, head: {}, toes: { big: true }, fingers: null })

@@ -115,19 +118,13 @@ // @ts-ignore

test('overwrites null with empty object', t => {
const origin = {
body: null,
}
const target = {
body: {},
}
const origin = { body: null }
const target = { body: {} }
const res = merge(origin, target)
// @ts-ignore
t.deepEqual(res, { body: {} })
})
test('overwrites null with object with props', t => {
const origin = {
body: null,
}
const target = {
body: { props: true },
}
const origin = { body: null }
const target = { body: { props: true } }
const res = merge(origin, target)
// @ts-ignore
t.deepEqual(res, { body: { props: true } })

@@ -149,7 +146,3 @@ })

newDate,
very: {
deep: {
prop: false,
},
},
very: { deep: { prop: false } },
},

@@ -160,7 +153,3 @@ }

date: 'tomorrow',
very: {
deep: {
prop: true,
},
},
very: { deep: { prop: true } },
},

@@ -175,7 +164,3 @@ }

date: 'tomorrow',
very: {
deep: {
prop: true,
},
},
very: { deep: { prop: true } },
},

@@ -187,5 +172,3 @@ })

newDate,
very: {
deep: { prop: false },
},
very: { deep: { prop: false } },
},

@@ -196,5 +179,3 @@ })

date: 'tomorrow',
very: {
deep: { prop: true },
},
very: { deep: { prop: true } },
},

@@ -209,5 +190,3 @@ })

time: { when: 'now' },
very: {
deep: { prop: false },
},
very: { deep: { prop: false } },
},

@@ -245,3 +224,5 @@ }

t.deepEqual(res, {
// @ts-ignore
body: { head: true },
// @ts-ignore
body2: { head: { eyes: true } },

@@ -260,18 +241,3 @@ tail: {},

})
test('overwrites entire objects when target val is a simple string', t => {
const origin = {
body: 'a',
body2: { head: false },
tail: {},
}
const target = 'a'
const res = merge(origin, target)
// @ts-ignore
t.is(res, 'a')
t.deepEqual(origin, {
body: 'a',
body2: { head: false },
tail: {},
})
})
test('works with unlimited depth', t => {

@@ -285,2 +251,3 @@ const date = new Date()

const res = merge(origin, t1, t2, t3, t4)
// @ts-ignore
t.deepEqual(res, { origin: 'a', t1: date, t2: 'new', t3: {}, t4: 'new' })

@@ -287,0 +254,0 @@ t.deepEqual(origin, { origin: 'a', t2: false, t3: {}, t4: 'false' })

import { O } from 'ts-toolbelt';
declare type PlainObject = {
[key: string | symbol]: any;
};
/**

@@ -17,5 +14,4 @@ * Merge anything recursively.

*/
export declare function merge<T extends PlainObject, Tn extends PlainObject[]>(origin: T, ...newComers: Tn): O.Assign<T, Tn, 'deep'>;
export declare function mergeAndCompare<T extends PlainObject, Tn extends PlainObject[]>(compareFn: (prop1: any, prop2: any, propName: string | symbol) => any, origin: T, ...newComers: Tn): O.Assign<T, Tn, 'deep'>;
export declare function mergeAndConcat<T extends PlainObject, Tn extends PlainObject[]>(origin: T, ...newComers: Tn): O.Assign<T, Tn, 'deep'>;
export {};
export declare function merge<T extends object, Tn extends object[]>(origin: T, ...newComers: Tn): O.Compact<T, Tn, 'deep'>;
export declare function mergeAndCompare<T extends object, Tn extends object[]>(compareFn: (prop1: any, prop2: any, propName: string | symbol) => any, origin: T, ...newComers: Tn): O.Compact<T, Tn, 'deep'>;
export declare function mergeAndConcat<T extends object, Tn extends object[]>(origin: T, ...newComers: Tn): O.Compact<T, Tn, 'deep'>;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc