fork of hey-api/openapi-ts because I need some additional things
1import type { AnyObject } from '@hey-api/types';
2
3function isPlainObject(value: unknown): value is AnyObject {
4 return typeof value === 'object' && value !== null && !Array.isArray(value);
5}
6
7export function mergeConfigs<T extends AnyObject>(
8 configA: T | undefined,
9 configB: T | undefined,
10): T {
11 const a = (configA || {}) as AnyObject;
12 const b = (configB || {}) as AnyObject;
13
14 const result: AnyObject = { ...a };
15
16 for (const key of Object.keys(b)) {
17 const valueA = a[key];
18 const valueB = b[key];
19
20 if (isPlainObject(valueA) && isPlainObject(valueB)) {
21 result[key] = mergeConfigs(valueA, valueB);
22 } else {
23 result[key] = valueB;
24 }
25 }
26
27 return result as T;
28}