MCPcopy
hub / github.com/immutable-js/immutable-js / updateMap

Function updateMap

src/Map.js:696–731  ·  view source on GitHub ↗
(map, k, v)

Source from the content-addressed store, hash-verified

694}
695
696function updateMap(map, k, v) {
697 let newRoot;
698 let newSize;
699 if (!map._root) {
700 if (v === NOT_SET) {
701 return map;
702 }
703 newSize = 1;
704 newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);
705 } else {
706 const didChangeSize = MakeRef();
707 const didAlter = MakeRef();
708 newRoot = updateNode(
709 map._root,
710 map.__ownerID,
711 0,
712 undefined,
713 k,
714 v,
715 didChangeSize,
716 didAlter
717 );
718 if (!didAlter.value) {
719 return map;
720 }
721 newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);
722 }
723 if (map.__ownerID) {
724 map.size = newSize;
725 map._root = newRoot;
726 map.__hash = undefined;
727 map.__altered = true;
728 return map;
729 }
730 return newRoot ? makeMap(newSize, newRoot) : emptyMap();
731}
732
733function updateNode(
734 node,

Callers 2

setMethod · 0.85
removeMethod · 0.85

Calls 4

MakeRefFunction · 0.90
updateNodeFunction · 0.85
makeMapFunction · 0.85
emptyMapFunction · 0.85

Tested by

no test coverage detected