From 5b0b36df7e6a3ba11838e55db0aec275f88cfa4f Mon Sep 17 00:00:00 2001 From: David Slone Date: Mon, 21 Aug 2017 16:17:38 -0700 Subject: [PATCH 1/2] Unfreeze object to allow reassignment --- packages/relay-runtime/util/recycleNodesInto.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relay-runtime/util/recycleNodesInto.js b/packages/relay-runtime/util/recycleNodesInto.js index 274ae57e6ebd1..8c0d792be402e 100644 --- a/packages/relay-runtime/util/recycleNodesInto.js +++ b/packages/relay-runtime/util/recycleNodesInto.js @@ -44,7 +44,7 @@ function recycleNodesInto(prevData: T, nextData: T): T { } else if (!prevArray && !nextArray) { // Assign local variables to preserve Flow type refinement. const prevObject = prevData; - const nextObject = nextData; + const nextObject = Object.assign({}, nextData); const prevKeys = Object.keys(prevObject); const nextKeys = Object.keys(nextObject); canRecycle = From f1c37b64de5eb3e1874af112668dcc14d7bab16f Mon Sep 17 00:00:00 2001 From: David Slone Date: Tue, 22 Aug 2017 14:02:01 -0700 Subject: [PATCH 2/2] Unfreeze array to allow assignment --- packages/relay-runtime/util/recycleNodesInto.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relay-runtime/util/recycleNodesInto.js b/packages/relay-runtime/util/recycleNodesInto.js index 8c0d792be402e..b14af020bddd4 100644 --- a/packages/relay-runtime/util/recycleNodesInto.js +++ b/packages/relay-runtime/util/recycleNodesInto.js @@ -30,7 +30,7 @@ function recycleNodesInto(prevData: T, nextData: T): T { // Assign local variables to preserve Flow type refinement. const prevArray = Array.isArray(prevData) ? prevData : null; - const nextArray = Array.isArray(nextData) ? nextData : null; + const nextArray = Array.isArray(nextData) ? [].concat(nextData) : null; if (prevArray && nextArray) { canRecycle = nextArray.reduce((wasEqual, nextItem, ii) => {