in src/devtools/store.js [190:226]
mergeOptimisticRecords(id: number, newRecords: ?StoreRecords) {
if (newRecords == null) {
return;
}
const oldRecords = this._environmentStoreOptimisticData.get(id);
if (oldRecords == null) {
this._environmentStoreOptimisticData.set(id, newRecords);
return;
}
const dataIDs = Object.keys(newRecords);
for (let ii = 0; ii < dataIDs.length; ii++) {
const dataID = dataIDs[ii];
const oldRecord = oldRecords[dataID];
const newRecord = newRecords[dataID];
if (oldRecord && newRecord) {
let updated: Record | null = null;
const keys = Object.keys(newRecord);
for (let iii = 0; iii < keys.length; iii++) {
const key = keys[iii];
if (updated || oldRecord[key] !== newRecord[key]) {
updated = updated !== null ? updated : { ...oldRecord };
updated[key] = newRecord[key];
}
}
updated = updated !== null ? updated : oldRecord;
if (updated !== newRecord) {
oldRecords[dataID] = updated;
}
} else if (oldRecord == null) {
oldRecords[dataID] = newRecord;
} else if (newRecord == null) {
delete oldRecords[dataID];
}
}
this._environmentStoreOptimisticData.set(id, oldRecords);
}