121
}
122
123
>
function compare(from: IStringDictionary<any>, to: IStringDictionary<any>): { added: Set<string>; removed: Set<string>; updated: Set<string> } {
globalStateMerge.ts
124
>
const fromKeys = Object.keys(from);
125
>
const toKeys = Object.keys(to);
126
>
const added = toKeys.filter(key => !fromKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, new Set<string>());
127
>
const removed = fromKeys.filter(key => !toKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, new Set<string>());
128
>
const updated: Set<string> = new Set<string>();
129
>
130
>
for (const key of fromKeys) {
131
>
if (removed.has(key)) {
132
continue;
133
}
135
>
const value2 = to[key];
136
>
if (!objects.equals(value1, value2)) {
137
updated.add(key);
138
}
140
>
141
>
return { added, removed, updated };
142
>
}