merge-anything
Advanced tools
Comparing version 3.0.1 to 3.0.2
{ | ||
"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'>; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
218
166840
842
Updatedts-toolbelt@^6.3.0