@augment-vir/common 22.0.0 → 22.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeDeep = void 0;
4
4
  const run_time_assertions_1 = require("run-time-assertions");
5
5
  const tuple_1 = require("../tuple");
6
- const object_1 = require("./object");
7
6
  /**
8
7
  * Accepts multiple objects and merges their key-value pairs recursively. Any values set to
9
8
  * undefined will be removed.
@@ -22,42 +21,32 @@ function mergeDeep(...inputs) {
22
21
  let result = undefined;
23
22
  const mergeProps = {};
24
23
  inputs.forEach((individualInput) => {
25
- try {
26
- if (!(0, object_1.isObject)(individualInput)) {
27
- /** If not an object, we can't merge. So overwrite instead. */
28
- result = individualInput;
29
- return;
30
- }
31
- Object.entries(individualInput).forEach(([key, value,]) => {
32
- if (!mergeProps[key]) {
33
- mergeProps[key] = [];
34
- }
35
- mergeProps[key].push(value);
36
- });
37
- if (!result) {
38
- if ((0, run_time_assertions_1.isRunTimeType)(individualInput, 'array')) {
39
- result = [...individualInput];
40
- }
41
- else {
42
- result = { ...individualInput };
43
- }
44
- }
45
- }
46
- catch (error) {
47
- /** Ignore errors, such as individualInput not actually being an object. */
48
- }
49
- });
50
- Object.entries(mergeProps).forEach(([key, mergeValues,]) => {
51
- const newValue = mergeDeep(...mergeValues);
52
- if (newValue === undefined && key in result) {
53
- delete result[key];
24
+ if (!(0, run_time_assertions_1.isRunTimeType)(individualInput, 'object')) {
25
+ /** If not an object, we can't merge. So overwrite instead. */
26
+ result = individualInput;
27
+ return;
54
28
  }
55
- else if (newValue !== undefined) {
56
- result[key] = newValue;
29
+ else if (!(0, run_time_assertions_1.isRunTimeType)(result, 'object')) {
30
+ /** If result isn't an object then we need to make it into one. */
31
+ result = { ...individualInput };
57
32
  }
33
+ Object.entries(individualInput).forEach(([key, value,]) => {
34
+ if (!mergeProps[key]) {
35
+ mergeProps[key] = [];
36
+ }
37
+ mergeProps[key].push(value);
38
+ });
58
39
  });
59
- if ((0, run_time_assertions_1.isRunTimeType)(result, 'array')) {
60
- result = result.filter((entry) => entry !== undefined);
40
+ if ((0, run_time_assertions_1.isRunTimeType)(result, 'object')) {
41
+ Object.entries(mergeProps).forEach(([key, mergeValues,]) => {
42
+ const newValue = mergeDeep(...mergeValues);
43
+ if (newValue === undefined && key in result) {
44
+ delete result[key];
45
+ }
46
+ else if (newValue !== undefined) {
47
+ result[key] = newValue;
48
+ }
49
+ });
61
50
  }
62
51
  return result;
63
52
  }
@@ -1,6 +1,5 @@
1
1
  import { isRunTimeType } from 'run-time-assertions';
2
2
  import { isLengthAtLeast } from '../tuple';
3
- import { isObject } from './object';
4
3
  /**
5
4
  * Accepts multiple objects and merges their key-value pairs recursively. Any values set to
6
5
  * undefined will be removed.
@@ -19,42 +18,32 @@ export function mergeDeep(...inputs) {
19
18
  let result = undefined;
20
19
  const mergeProps = {};
21
20
  inputs.forEach((individualInput) => {
22
- try {
23
- if (!isObject(individualInput)) {
24
- /** If not an object, we can't merge. So overwrite instead. */
25
- result = individualInput;
26
- return;
27
- }
28
- Object.entries(individualInput).forEach(([key, value,]) => {
29
- if (!mergeProps[key]) {
30
- mergeProps[key] = [];
31
- }
32
- mergeProps[key].push(value);
33
- });
34
- if (!result) {
35
- if (isRunTimeType(individualInput, 'array')) {
36
- result = [...individualInput];
37
- }
38
- else {
39
- result = { ...individualInput };
40
- }
41
- }
42
- }
43
- catch (error) {
44
- /** Ignore errors, such as individualInput not actually being an object. */
45
- }
46
- });
47
- Object.entries(mergeProps).forEach(([key, mergeValues,]) => {
48
- const newValue = mergeDeep(...mergeValues);
49
- if (newValue === undefined && key in result) {
50
- delete result[key];
21
+ if (!isRunTimeType(individualInput, 'object')) {
22
+ /** If not an object, we can't merge. So overwrite instead. */
23
+ result = individualInput;
24
+ return;
51
25
  }
52
- else if (newValue !== undefined) {
53
- result[key] = newValue;
26
+ else if (!isRunTimeType(result, 'object')) {
27
+ /** If result isn't an object then we need to make it into one. */
28
+ result = { ...individualInput };
54
29
  }
30
+ Object.entries(individualInput).forEach(([key, value,]) => {
31
+ if (!mergeProps[key]) {
32
+ mergeProps[key] = [];
33
+ }
34
+ mergeProps[key].push(value);
35
+ });
55
36
  });
56
- if (isRunTimeType(result, 'array')) {
57
- result = result.filter((entry) => entry !== undefined);
37
+ if (isRunTimeType(result, 'object')) {
38
+ Object.entries(mergeProps).forEach(([key, mergeValues,]) => {
39
+ const newValue = mergeDeep(...mergeValues);
40
+ if (newValue === undefined && key in result) {
41
+ delete result[key];
42
+ }
43
+ else if (newValue !== undefined) {
44
+ result[key] = newValue;
45
+ }
46
+ });
58
47
  }
59
48
  return result;
60
49
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@augment-vir/common",
3
- "version": "22.0.0",
3
+ "version": "22.0.1",
4
4
  "homepage": "https://github.com/electrovir/augment-vir/tree/main/packages/common",
5
5
  "bugs": {
6
6
  "url": "https://github.com/electrovir/augment-vir/issues"
@@ -25,11 +25,11 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "browser-or-node": "^2.1.1",
28
- "run-time-assertions": "^0.2.0",
29
- "type-fest": "^4.8.1"
28
+ "run-time-assertions": "^0.2.1",
29
+ "type-fest": "^4.8.2"
30
30
  },
31
31
  "devDependencies": {
32
- "typescript": "^5.2.2"
32
+ "typescript": "5.2.2"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"