@augment-vir/common
Advanced tools
Comparing version 22.0.0 to 22.0.1
@@ -6,3 +6,2 @@ "use strict"; | ||
const tuple_1 = require("../tuple"); | ||
const object_1 = require("./object"); | ||
/** | ||
@@ -26,38 +25,28 @@ * Accepts multiple objects and merges their key-value pairs recursively. Any values set to | ||
inputs.forEach((individualInput) => { | ||
try { | ||
if (!(0, object_1.isObject)(individualInput)) { | ||
/** If not an object, we can't merge. So overwrite instead. */ | ||
result = individualInput; | ||
return; | ||
} | ||
Object.entries(individualInput).forEach(([key, value,]) => { | ||
if (!mergeProps[key]) { | ||
mergeProps[key] = []; | ||
} | ||
mergeProps[key].push(value); | ||
}); | ||
if (!result) { | ||
if ((0, run_time_assertions_1.isRunTimeType)(individualInput, 'array')) { | ||
result = [...individualInput]; | ||
} | ||
else { | ||
result = { ...individualInput }; | ||
} | ||
} | ||
if (!(0, run_time_assertions_1.isRunTimeType)(individualInput, 'object')) { | ||
/** If not an object, we can't merge. So overwrite instead. */ | ||
result = individualInput; | ||
return; | ||
} | ||
catch (error) { | ||
/** Ignore errors, such as individualInput not actually being an object. */ | ||
else if (!(0, run_time_assertions_1.isRunTimeType)(result, 'object')) { | ||
/** If result isn't an object then we need to make it into one. */ | ||
result = { ...individualInput }; | ||
} | ||
Object.entries(individualInput).forEach(([key, value,]) => { | ||
if (!mergeProps[key]) { | ||
mergeProps[key] = []; | ||
} | ||
mergeProps[key].push(value); | ||
}); | ||
}); | ||
Object.entries(mergeProps).forEach(([key, mergeValues,]) => { | ||
const newValue = mergeDeep(...mergeValues); | ||
if (newValue === undefined && key in result) { | ||
delete result[key]; | ||
} | ||
else if (newValue !== undefined) { | ||
result[key] = newValue; | ||
} | ||
}); | ||
if ((0, run_time_assertions_1.isRunTimeType)(result, 'array')) { | ||
result = result.filter((entry) => entry !== undefined); | ||
if ((0, run_time_assertions_1.isRunTimeType)(result, 'object')) { | ||
Object.entries(mergeProps).forEach(([key, mergeValues,]) => { | ||
const newValue = mergeDeep(...mergeValues); | ||
if (newValue === undefined && key in result) { | ||
delete result[key]; | ||
} | ||
else if (newValue !== undefined) { | ||
result[key] = newValue; | ||
} | ||
}); | ||
} | ||
@@ -64,0 +53,0 @@ return result; |
import { isRunTimeType } from 'run-time-assertions'; | ||
import { isLengthAtLeast } from '../tuple'; | ||
import { isObject } from './object'; | ||
/** | ||
@@ -22,40 +21,30 @@ * Accepts multiple objects and merges their key-value pairs recursively. Any values set to | ||
inputs.forEach((individualInput) => { | ||
try { | ||
if (!isObject(individualInput)) { | ||
/** If not an object, we can't merge. So overwrite instead. */ | ||
result = individualInput; | ||
return; | ||
} | ||
Object.entries(individualInput).forEach(([key, value,]) => { | ||
if (!mergeProps[key]) { | ||
mergeProps[key] = []; | ||
} | ||
mergeProps[key].push(value); | ||
}); | ||
if (!result) { | ||
if (isRunTimeType(individualInput, 'array')) { | ||
result = [...individualInput]; | ||
} | ||
else { | ||
result = { ...individualInput }; | ||
} | ||
} | ||
if (!isRunTimeType(individualInput, 'object')) { | ||
/** If not an object, we can't merge. So overwrite instead. */ | ||
result = individualInput; | ||
return; | ||
} | ||
catch (error) { | ||
/** Ignore errors, such as individualInput not actually being an object. */ | ||
else if (!isRunTimeType(result, 'object')) { | ||
/** If result isn't an object then we need to make it into one. */ | ||
result = { ...individualInput }; | ||
} | ||
Object.entries(individualInput).forEach(([key, value,]) => { | ||
if (!mergeProps[key]) { | ||
mergeProps[key] = []; | ||
} | ||
mergeProps[key].push(value); | ||
}); | ||
}); | ||
Object.entries(mergeProps).forEach(([key, mergeValues,]) => { | ||
const newValue = mergeDeep(...mergeValues); | ||
if (newValue === undefined && key in result) { | ||
delete result[key]; | ||
} | ||
else if (newValue !== undefined) { | ||
result[key] = newValue; | ||
} | ||
}); | ||
if (isRunTimeType(result, 'array')) { | ||
result = result.filter((entry) => entry !== undefined); | ||
if (isRunTimeType(result, 'object')) { | ||
Object.entries(mergeProps).forEach(([key, mergeValues,]) => { | ||
const newValue = mergeDeep(...mergeValues); | ||
if (newValue === undefined && key in result) { | ||
delete result[key]; | ||
} | ||
else if (newValue !== undefined) { | ||
result[key] = newValue; | ||
} | ||
}); | ||
} | ||
return result; | ||
} |
{ | ||
"name": "@augment-vir/common", | ||
"version": "22.0.0", | ||
"version": "22.0.1", | ||
"homepage": "https://github.com/electrovir/augment-vir/tree/main/packages/common", | ||
@@ -28,7 +28,7 @@ "bugs": { | ||
"browser-or-node": "^2.1.1", | ||
"run-time-assertions": "^0.2.0", | ||
"type-fest": "^4.8.1" | ||
"run-time-assertions": "^0.2.1", | ||
"type-fest": "^4.8.2" | ||
}, | ||
"devDependencies": { | ||
"typescript": "^5.2.2" | ||
"typescript": "5.2.2" | ||
}, | ||
@@ -35,0 +35,0 @@ "publishConfig": { |
172067
4162
Updatedrun-time-assertions@^0.2.1
Updatedtype-fest@^4.8.2