1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| interface InterfaceParam {
| field?: string;
| relationField?: unknown;
| sourceType?: number;
| [key: string]: unknown;
| }
|
| /** Build parameters for a new interface while retaining mappings for fields shared with the previous interface. */
| export function mergeInterfaceParams(nextParams: InterfaceParam[], previousParams: InterfaceParam[] = []): InterfaceParam[] {
| const previousByField = new Map(previousParams.filter((item) => item.field).map((item) => [item.field, item]));
|
| return nextParams.map((item) => {
| const previous = item.field ? previousByField.get(item.field) : undefined;
| return {
| ...item,
| relationField: previous?.relationField ?? '',
| sourceType: previous?.sourceType ?? 1,
| };
| });
| }
|
|