@apollo/client 3.12.0-rc.0 → 3.12.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.changeset/brown-readers-smash.md +5 -0
  2. package/.changeset/gorgeous-zebras-confess.md +5 -0
  3. package/.changeset/itchy-penguins-worry.md +5 -0
  4. package/.changeset/long-zoos-ring.md +5 -0
  5. package/.changeset/mean-bottles-travel.md +5 -0
  6. package/.changeset/nice-countries-share.md +5 -0
  7. package/.changeset/pre.json +10 -1
  8. package/.changeset/slimy-points-end.md +5 -0
  9. package/.changeset/small-bears-confess.md +5 -0
  10. package/.changeset/wicked-pans-appear.md +5 -0
  11. package/CHANGELOG.md +28 -0
  12. package/apollo-client.cjs +128 -138
  13. package/apollo-client.cjs.map +1 -1
  14. package/apollo-client.min.cjs +1 -1
  15. package/cache/cache.cjs +98 -119
  16. package/cache/cache.cjs.map +1 -1
  17. package/cache/cache.cjs.native.js +98 -119
  18. package/core/core.cjs +103 -127
  19. package/core/core.cjs.map +1 -1
  20. package/core/core.cjs.native.js +103 -127
  21. package/core/masking.js +112 -136
  22. package/core/masking.js.map +1 -1
  23. package/dev/dev.cjs +1 -1
  24. package/dev/dev.cjs.map +1 -1
  25. package/dev/dev.cjs.native.js +1 -1
  26. package/masking/internal/types.d.ts +2 -2
  27. package/masking/internal/types.js.map +1 -1
  28. package/package.json +1 -1
  29. package/react/hooks/hooks.cjs +25 -11
  30. package/react/hooks/hooks.cjs.map +1 -1
  31. package/react/hooks/hooks.cjs.native.js +25 -11
  32. package/react/hooks/useFragment.d.ts +1 -1
  33. package/react/hooks/useFragment.js +33 -19
  34. package/react/hooks/useFragment.js.map +1 -1
  35. package/react/internal/internal.cjs +1 -1
  36. package/react/internal/internal.cjs.map +1 -1
  37. package/react/internal/internal.cjs.native.js +1 -1
  38. package/utilities/globals/globals.cjs +1 -1
  39. package/utilities/globals/globals.cjs.map +1 -1
  40. package/utilities/globals/globals.cjs.native.js +1 -1
  41. package/version.js +1 -1
@@ -126,6 +126,8 @@ function directiveIsNonreactive(dir) {
126
126
  return dir.name.value === "nonreactive";
127
127
  }
128
128
 
129
+ var MapImpl = utilities.canUseWeakMap ? WeakMap : Map;
130
+ var SetImpl = utilities.canUseWeakSet ? WeakSet : Set;
129
131
  var disableWarningsSlot = new optimism.Slot();
130
132
  function maskFragment(data, document, cache, fragmentName) {
131
133
  if (!cache.fragmentMatches) {
@@ -149,158 +151,135 @@ function maskFragment(data, document, cache, fragmentName) {
149
151
  if (equal.equal(data, {})) {
150
152
  return data;
151
153
  }
152
- var context = {
154
+ return maskDefinition(data, fragment.selectionSet, {
153
155
  operationType: "fragment",
154
156
  operationName: fragment.name.value,
155
157
  fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(document)),
156
158
  cache: cache,
157
- };
158
- var _a = maskSelectionSet(data, fragment.selectionSet, context), masked = _a[0], changed = _a[1];
159
- if (Object.isFrozen(data)) {
160
- disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
159
+ mutableTargets: new MapImpl(),
160
+ knownChanged: new SetImpl(),
161
+ });
162
+ }
163
+ function maskDefinition(data, selectionSet, context) {
164
+ return disableWarningsSlot.withValue(true, function () {
165
+ var masked = maskSelectionSet(data, selectionSet, context, false);
166
+ if (Object.isFrozen(data)) {
167
+ utilities.maybeDeepFreeze(masked);
168
+ }
169
+ return masked;
170
+ });
171
+ }
172
+ function getMutableTarget(data, mutableTargets) {
173
+ if (mutableTargets.has(data)) {
174
+ return mutableTargets.get(data);
161
175
  }
162
- return changed ? masked : data;
176
+ var mutableTarget = Array.isArray(data) ? [] : Object.create(null);
177
+ mutableTargets.set(data, mutableTarget);
178
+ return mutableTarget;
163
179
  }
164
- function maskSelectionSet(data, selectionSet, context, path) {
180
+ function maskSelectionSet(data, selectionSet, context, migration, path) {
181
+ var _a;
182
+ var knownChanged = context.knownChanged;
165
183
  if (Array.isArray(data)) {
166
- var changed_1 = false;
167
- var masked = data.map(function (item, index) {
184
+ var target = getMutableTarget(data, context.mutableTargets);
185
+ for (var _i = 0, _b = Array.from(data.entries()); _i < _b.length; _i++) {
186
+ var _c = _b[_i], index = _c[0], item = _c[1];
168
187
  if (item === null) {
169
- return null;
188
+ target[index] = null;
189
+ continue;
170
190
  }
171
- var _a = maskSelectionSet(item, selectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0), masked = _a[0], itemChanged = _a[1];
172
- changed_1 || (changed_1 = itemChanged);
173
- return itemChanged ? masked : item;
174
- });
175
- return [changed_1 ? masked : data, changed_1];
176
- }
177
- var result = selectionSet.selections.reduce(function (_a, selection) {
178
- var memo = _a[0], changed = _a[1];
179
- switch (selection.kind) {
180
- case graphql.Kind.FIELD: {
181
- var keyName = utilities.resultKeyNameFromField(selection);
182
- var childSelectionSet = selection.selectionSet;
183
- memo[keyName] = data[keyName];
184
- if (memo[keyName] === void 0) {
185
- delete memo[keyName];
186
- }
187
- if (keyName in memo && childSelectionSet && data[keyName] !== null) {
188
- var _b = maskSelectionSet(data[keyName], childSelectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0), masked = _b[0], childChanged = _b[1];
189
- if (childChanged ||
190
- Object.keys(masked).length !== Object.keys(data[keyName]).length) {
191
- memo[keyName] = masked;
192
- changed = true;
193
- }
194
- }
195
- return [memo, changed];
196
- }
197
- case graphql.Kind.INLINE_FRAGMENT: {
198
- if (selection.typeCondition &&
199
- !context.cache.fragmentMatches(selection, data.__typename)) {
200
- return [memo, changed];
201
- }
202
- var _c = maskSelectionSet(data, selection.selectionSet, context, path), fragmentData = _c[0], childChanged = _c[1];
203
- return [
204
- tslib.__assign(tslib.__assign({}, memo), fragmentData),
205
- changed || childChanged,
206
- ];
207
- }
208
- case graphql.Kind.FRAGMENT_SPREAD: {
209
- var fragmentName = selection.name.value;
210
- var fragment = context.fragmentMap[fragmentName] ||
211
- (context.fragmentMap[fragmentName] =
212
- context.cache.lookupFragment(fragmentName));
213
- globals.invariant(fragment, 41, fragmentName);
214
- var mode = utilities.getFragmentMaskMode(selection);
215
- if (mode === "mask") {
216
- return [memo, true];
217
- }
218
- if (globalThis.__DEV__ !== false) {
219
- if (mode === "migrate") {
220
- return [
221
- addFieldAccessorWarnings(memo, data, fragment.selectionSet, path || "", context),
222
- true,
223
- ];
224
- }
225
- }
226
- var _d = maskSelectionSet(data, fragment.selectionSet, context, path), fragmentData = _d[0], changed_2 = _d[1];
227
- return [tslib.__assign(tslib.__assign({}, memo), fragmentData), changed_2];
191
+ var masked = maskSelectionSet(item, selectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0);
192
+ if (knownChanged.has(masked)) {
193
+ knownChanged.add(target);
228
194
  }
195
+ target[index] = masked;
229
196
  }
230
- }, [Object.create(null), false]);
231
- if (data && "__typename" in data && !("__typename" in result[0])) {
232
- result[0].__typename = data.__typename;
197
+ return knownChanged.has(target) ? target : data;
233
198
  }
234
- return result;
235
- }
236
- function addFieldAccessorWarnings(memo, data, selectionSetNode, path, context) {
237
- if (Array.isArray(data)) {
238
- return data.map(function (item, index) {
239
- return addFieldAccessorWarnings(memo[index] || Object.create(null), item, selectionSetNode, "".concat(path, "[").concat(index, "]"), context);
240
- });
241
- }
242
- return selectionSetNode.selections.reduce(function (memo, selection) {
243
- switch (selection.kind) {
244
- case graphql.Kind.FIELD: {
245
- var keyName = utilities.resultKeyNameFromField(selection);
246
- var childSelectionSet = selection.selectionSet;
247
- if (keyName in memo) {
248
- return memo;
249
- }
250
- var value = data[keyName];
251
- if (childSelectionSet) {
252
- value = addFieldAccessorWarnings(memo[keyName] || Object.create(null), data[keyName], childSelectionSet, "".concat(path, ".").concat(keyName), context);
253
- }
254
- if (globalThis.__DEV__ !== false) {
255
- addAccessorWarning(memo, value, keyName, path, context);
256
- }
257
- if (!(globalThis.__DEV__ !== false)) {
258
- memo[keyName] = data[keyName];
199
+ var memo = getMutableTarget(data, context.mutableTargets);
200
+ for (var _d = 0, _e = selectionSet.selections; _d < _e.length; _d++) {
201
+ var selection = _e[_d];
202
+ var value = void 0;
203
+ if (migration) {
204
+ knownChanged.add(memo);
205
+ }
206
+ if (selection.kind === graphql.Kind.FIELD) {
207
+ var keyName = utilities.resultKeyNameFromField(selection);
208
+ var childSelectionSet = selection.selectionSet;
209
+ value = memo[keyName] || data[keyName];
210
+ if (value === void 0) {
211
+ continue;
212
+ }
213
+ if (childSelectionSet && value !== null) {
214
+ var masked = maskSelectionSet(data[keyName], childSelectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0);
215
+ if (knownChanged.has(masked)) {
216
+ value = masked;
259
217
  }
260
- return memo;
261
218
  }
262
- case graphql.Kind.INLINE_FRAGMENT: {
263
- return addFieldAccessorWarnings(memo, data, selection.selectionSet, path, context);
219
+ if (!(globalThis.__DEV__ !== false)) {
220
+ memo[keyName] = value;
264
221
  }
265
- case graphql.Kind.FRAGMENT_SPREAD: {
266
- var fragment = context.fragmentMap[selection.name.value];
267
- var mode = utilities.getFragmentMaskMode(selection);
268
- if (mode === "mask") {
269
- return memo;
222
+ if (globalThis.__DEV__ !== false) {
223
+ if (migration &&
224
+ keyName !== "__typename" &&
225
+ !((_a = Object.getOwnPropertyDescriptor(memo, keyName)) === null || _a === void 0 ? void 0 : _a.value)) {
226
+ Object.defineProperty(memo, keyName, getAccessorWarningDescriptor(keyName, value, path || "", context.operationName, context.operationType));
270
227
  }
271
- if (mode === "unmask") {
272
- var fragmentData = maskSelectionSet(data, fragment.selectionSet, context, path)[0];
273
- return Object.assign(memo, fragmentData);
228
+ else {
229
+ delete memo[keyName];
230
+ memo[keyName] = value;
274
231
  }
275
- return addFieldAccessorWarnings(memo, data, fragment.selectionSet, path, context);
276
232
  }
277
233
  }
278
- }, memo);
279
- }
280
- function addAccessorWarning(data, value, fieldName, path, context) {
281
- if (value === void 0) {
282
- return;
234
+ if (selection.kind === graphql.Kind.INLINE_FRAGMENT &&
235
+ (!selection.typeCondition ||
236
+ context.cache.fragmentMatches(selection, data.__typename))) {
237
+ value = maskSelectionSet(data, selection.selectionSet, context, migration, path);
238
+ }
239
+ if (selection.kind === graphql.Kind.FRAGMENT_SPREAD) {
240
+ var fragmentName = selection.name.value;
241
+ var fragment = context.fragmentMap[fragmentName] ||
242
+ (context.fragmentMap[fragmentName] =
243
+ context.cache.lookupFragment(fragmentName));
244
+ globals.invariant(fragment, 41, fragmentName);
245
+ var mode = utilities.getFragmentMaskMode(selection);
246
+ if (mode !== "mask") {
247
+ value = maskSelectionSet(data, fragment.selectionSet, context, mode === "migrate", path);
248
+ }
249
+ }
250
+ if (knownChanged.has(value)) {
251
+ knownChanged.add(memo);
252
+ }
253
+ }
254
+ if ("__typename" in data && !("__typename" in memo)) {
255
+ memo.__typename = data.__typename;
283
256
  }
257
+ if (Object.keys(memo).length !== Object.keys(data).length) {
258
+ knownChanged.add(memo);
259
+ }
260
+ return knownChanged.has(memo) ? memo : data;
261
+ }
262
+ function getAccessorWarningDescriptor(fieldName, value, path, operationName, operationType) {
284
263
  var getValue = function () {
285
264
  if (disableWarningsSlot.getValue()) {
286
265
  return value;
287
266
  }
288
- globalThis.__DEV__ !== false && globals.invariant.warn(42, context.operationName ?
289
- "".concat(context.operationType, " '").concat(context.operationName, "'")
290
- : "anonymous ".concat(context.operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
267
+ globalThis.__DEV__ !== false && globals.invariant.warn(42, operationName ?
268
+ "".concat(operationType, " '").concat(operationName, "'")
269
+ : "anonymous ".concat(operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
291
270
  getValue = function () { return value; };
292
271
  return value;
293
272
  };
294
- Object.defineProperty(data, fieldName, {
273
+ return {
295
274
  get: function () {
296
275
  return getValue();
297
276
  },
298
- set: function (value) {
299
- getValue = function () { return value; };
277
+ set: function (newValue) {
278
+ getValue = function () { return newValue; };
300
279
  },
301
280
  enumerable: true,
302
281
  configurable: true,
303
- });
282
+ };
304
283
  }
305
284
  var issuedWarning = false;
306
285
  function warnOnImproperCacheImplementation() {
package/core/core.cjs CHANGED
@@ -21,7 +21,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
21
21
 
22
22
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
23
23
 
24
- var version = "3.12.0-rc.0";
24
+ var version = "3.12.0-rc.2";
25
25
 
26
26
  function isNonNullObject(obj) {
27
27
  return obj !== null && typeof obj === "object";
@@ -1074,6 +1074,8 @@ function shouldWriteResult(result, errorPolicy) {
1074
1074
  return writeWithErrors;
1075
1075
  }
1076
1076
 
1077
+ var MapImpl = utilities.canUseWeakMap ? WeakMap : Map;
1078
+ var SetImpl = utilities.canUseWeakSet ? WeakSet : Set;
1077
1079
  var disableWarningsSlot = new optimism.Slot();
1078
1080
  function maskOperation(data, document, cache) {
1079
1081
  var _a;
@@ -1088,17 +1090,14 @@ function maskOperation(data, document, cache) {
1088
1090
  if (data == null) {
1089
1091
  return data;
1090
1092
  }
1091
- var context = {
1093
+ return maskDefinition(data, definition.selectionSet, {
1092
1094
  operationType: definition.operation,
1093
1095
  operationName: (_a = definition.name) === null || _a === void 0 ? void 0 : _a.value,
1094
1096
  fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(document)),
1095
1097
  cache: cache,
1096
- };
1097
- var _b = maskSelectionSet(data, definition.selectionSet, context), masked = _b[0], changed = _b[1];
1098
- if (Object.isFrozen(data)) {
1099
- disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
1100
- }
1101
- return changed ? masked : data;
1098
+ mutableTargets: new MapImpl(),
1099
+ knownChanged: new SetImpl(),
1100
+ });
1102
1101
  }
1103
1102
  function maskFragment(data, document, cache, fragmentName) {
1104
1103
  if (!cache.fragmentMatches) {
@@ -1122,158 +1121,135 @@ function maskFragment(data, document, cache, fragmentName) {
1122
1121
  if (equal.equal(data, {})) {
1123
1122
  return data;
1124
1123
  }
1125
- var context = {
1124
+ return maskDefinition(data, fragment.selectionSet, {
1126
1125
  operationType: "fragment",
1127
1126
  operationName: fragment.name.value,
1128
1127
  fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(document)),
1129
1128
  cache: cache,
1130
- };
1131
- var _a = maskSelectionSet(data, fragment.selectionSet, context), masked = _a[0], changed = _a[1];
1132
- if (Object.isFrozen(data)) {
1133
- disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
1129
+ mutableTargets: new MapImpl(),
1130
+ knownChanged: new SetImpl(),
1131
+ });
1132
+ }
1133
+ function maskDefinition(data, selectionSet, context) {
1134
+ return disableWarningsSlot.withValue(true, function () {
1135
+ var masked = maskSelectionSet(data, selectionSet, context, false);
1136
+ if (Object.isFrozen(data)) {
1137
+ utilities.maybeDeepFreeze(masked);
1138
+ }
1139
+ return masked;
1140
+ });
1141
+ }
1142
+ function getMutableTarget(data, mutableTargets) {
1143
+ if (mutableTargets.has(data)) {
1144
+ return mutableTargets.get(data);
1134
1145
  }
1135
- return changed ? masked : data;
1146
+ var mutableTarget = Array.isArray(data) ? [] : Object.create(null);
1147
+ mutableTargets.set(data, mutableTarget);
1148
+ return mutableTarget;
1136
1149
  }
1137
- function maskSelectionSet(data, selectionSet, context, path) {
1150
+ function maskSelectionSet(data, selectionSet, context, migration, path) {
1151
+ var _a;
1152
+ var knownChanged = context.knownChanged;
1138
1153
  if (Array.isArray(data)) {
1139
- var changed_1 = false;
1140
- var masked = data.map(function (item, index) {
1154
+ var target = getMutableTarget(data, context.mutableTargets);
1155
+ for (var _i = 0, _b = Array.from(data.entries()); _i < _b.length; _i++) {
1156
+ var _c = _b[_i], index = _c[0], item = _c[1];
1141
1157
  if (item === null) {
1142
- return null;
1158
+ target[index] = null;
1159
+ continue;
1143
1160
  }
1144
- var _a = maskSelectionSet(item, selectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0), masked = _a[0], itemChanged = _a[1];
1145
- changed_1 || (changed_1 = itemChanged);
1146
- return itemChanged ? masked : item;
1147
- });
1148
- return [changed_1 ? masked : data, changed_1];
1149
- }
1150
- var result = selectionSet.selections.reduce(function (_a, selection) {
1151
- var memo = _a[0], changed = _a[1];
1152
- switch (selection.kind) {
1153
- case graphql.Kind.FIELD: {
1154
- var keyName = utilities.resultKeyNameFromField(selection);
1155
- var childSelectionSet = selection.selectionSet;
1156
- memo[keyName] = data[keyName];
1157
- if (memo[keyName] === void 0) {
1158
- delete memo[keyName];
1159
- }
1160
- if (keyName in memo && childSelectionSet && data[keyName] !== null) {
1161
- var _b = maskSelectionSet(data[keyName], childSelectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0), masked = _b[0], childChanged = _b[1];
1162
- if (childChanged ||
1163
- Object.keys(masked).length !== Object.keys(data[keyName]).length) {
1164
- memo[keyName] = masked;
1165
- changed = true;
1166
- }
1167
- }
1168
- return [memo, changed];
1169
- }
1170
- case graphql.Kind.INLINE_FRAGMENT: {
1171
- if (selection.typeCondition &&
1172
- !context.cache.fragmentMatches(selection, data.__typename)) {
1173
- return [memo, changed];
1174
- }
1175
- var _c = maskSelectionSet(data, selection.selectionSet, context, path), fragmentData = _c[0], childChanged = _c[1];
1176
- return [
1177
- tslib.__assign(tslib.__assign({}, memo), fragmentData),
1178
- changed || childChanged,
1179
- ];
1180
- }
1181
- case graphql.Kind.FRAGMENT_SPREAD: {
1182
- var fragmentName = selection.name.value;
1183
- var fragment = context.fragmentMap[fragmentName] ||
1184
- (context.fragmentMap[fragmentName] =
1185
- context.cache.lookupFragment(fragmentName));
1186
- globals.invariant(fragment, 41, fragmentName);
1187
- var mode = utilities.getFragmentMaskMode(selection);
1188
- if (mode === "mask") {
1189
- return [memo, true];
1190
- }
1191
- if (globalThis.__DEV__ !== false) {
1192
- if (mode === "migrate") {
1193
- return [
1194
- addFieldAccessorWarnings(memo, data, fragment.selectionSet, path || "", context),
1195
- true,
1196
- ];
1197
- }
1198
- }
1199
- var _d = maskSelectionSet(data, fragment.selectionSet, context, path), fragmentData = _d[0], changed_2 = _d[1];
1200
- return [tslib.__assign(tslib.__assign({}, memo), fragmentData), changed_2];
1161
+ var masked = maskSelectionSet(item, selectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0);
1162
+ if (knownChanged.has(masked)) {
1163
+ knownChanged.add(target);
1201
1164
  }
1165
+ target[index] = masked;
1202
1166
  }
1203
- }, [Object.create(null), false]);
1204
- if (data && "__typename" in data && !("__typename" in result[0])) {
1205
- result[0].__typename = data.__typename;
1167
+ return knownChanged.has(target) ? target : data;
1206
1168
  }
1207
- return result;
1208
- }
1209
- function addFieldAccessorWarnings(memo, data, selectionSetNode, path, context) {
1210
- if (Array.isArray(data)) {
1211
- return data.map(function (item, index) {
1212
- return addFieldAccessorWarnings(memo[index] || Object.create(null), item, selectionSetNode, "".concat(path, "[").concat(index, "]"), context);
1213
- });
1214
- }
1215
- return selectionSetNode.selections.reduce(function (memo, selection) {
1216
- switch (selection.kind) {
1217
- case graphql.Kind.FIELD: {
1218
- var keyName = utilities.resultKeyNameFromField(selection);
1219
- var childSelectionSet = selection.selectionSet;
1220
- if (keyName in memo) {
1221
- return memo;
1222
- }
1223
- var value = data[keyName];
1224
- if (childSelectionSet) {
1225
- value = addFieldAccessorWarnings(memo[keyName] || Object.create(null), data[keyName], childSelectionSet, "".concat(path, ".").concat(keyName), context);
1226
- }
1227
- if (globalThis.__DEV__ !== false) {
1228
- addAccessorWarning(memo, value, keyName, path, context);
1229
- }
1230
- if (!(globalThis.__DEV__ !== false)) {
1231
- memo[keyName] = data[keyName];
1169
+ var memo = getMutableTarget(data, context.mutableTargets);
1170
+ for (var _d = 0, _e = selectionSet.selections; _d < _e.length; _d++) {
1171
+ var selection = _e[_d];
1172
+ var value = void 0;
1173
+ if (migration) {
1174
+ knownChanged.add(memo);
1175
+ }
1176
+ if (selection.kind === graphql.Kind.FIELD) {
1177
+ var keyName = utilities.resultKeyNameFromField(selection);
1178
+ var childSelectionSet = selection.selectionSet;
1179
+ value = memo[keyName] || data[keyName];
1180
+ if (value === void 0) {
1181
+ continue;
1182
+ }
1183
+ if (childSelectionSet && value !== null) {
1184
+ var masked = maskSelectionSet(data[keyName], childSelectionSet, context, migration, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0);
1185
+ if (knownChanged.has(masked)) {
1186
+ value = masked;
1232
1187
  }
1233
- return memo;
1234
1188
  }
1235
- case graphql.Kind.INLINE_FRAGMENT: {
1236
- return addFieldAccessorWarnings(memo, data, selection.selectionSet, path, context);
1189
+ if (!(globalThis.__DEV__ !== false)) {
1190
+ memo[keyName] = value;
1237
1191
  }
1238
- case graphql.Kind.FRAGMENT_SPREAD: {
1239
- var fragment = context.fragmentMap[selection.name.value];
1240
- var mode = utilities.getFragmentMaskMode(selection);
1241
- if (mode === "mask") {
1242
- return memo;
1192
+ if (globalThis.__DEV__ !== false) {
1193
+ if (migration &&
1194
+ keyName !== "__typename" &&
1195
+ !((_a = Object.getOwnPropertyDescriptor(memo, keyName)) === null || _a === void 0 ? void 0 : _a.value)) {
1196
+ Object.defineProperty(memo, keyName, getAccessorWarningDescriptor(keyName, value, path || "", context.operationName, context.operationType));
1243
1197
  }
1244
- if (mode === "unmask") {
1245
- var fragmentData = maskSelectionSet(data, fragment.selectionSet, context, path)[0];
1246
- return Object.assign(memo, fragmentData);
1198
+ else {
1199
+ delete memo[keyName];
1200
+ memo[keyName] = value;
1247
1201
  }
1248
- return addFieldAccessorWarnings(memo, data, fragment.selectionSet, path, context);
1249
1202
  }
1250
1203
  }
1251
- }, memo);
1252
- }
1253
- function addAccessorWarning(data, value, fieldName, path, context) {
1254
- if (value === void 0) {
1255
- return;
1204
+ if (selection.kind === graphql.Kind.INLINE_FRAGMENT &&
1205
+ (!selection.typeCondition ||
1206
+ context.cache.fragmentMatches(selection, data.__typename))) {
1207
+ value = maskSelectionSet(data, selection.selectionSet, context, migration, path);
1208
+ }
1209
+ if (selection.kind === graphql.Kind.FRAGMENT_SPREAD) {
1210
+ var fragmentName = selection.name.value;
1211
+ var fragment = context.fragmentMap[fragmentName] ||
1212
+ (context.fragmentMap[fragmentName] =
1213
+ context.cache.lookupFragment(fragmentName));
1214
+ globals.invariant(fragment, 41, fragmentName);
1215
+ var mode = utilities.getFragmentMaskMode(selection);
1216
+ if (mode !== "mask") {
1217
+ value = maskSelectionSet(data, fragment.selectionSet, context, mode === "migrate", path);
1218
+ }
1219
+ }
1220
+ if (knownChanged.has(value)) {
1221
+ knownChanged.add(memo);
1222
+ }
1223
+ }
1224
+ if ("__typename" in data && !("__typename" in memo)) {
1225
+ memo.__typename = data.__typename;
1256
1226
  }
1227
+ if (Object.keys(memo).length !== Object.keys(data).length) {
1228
+ knownChanged.add(memo);
1229
+ }
1230
+ return knownChanged.has(memo) ? memo : data;
1231
+ }
1232
+ function getAccessorWarningDescriptor(fieldName, value, path, operationName, operationType) {
1257
1233
  var getValue = function () {
1258
1234
  if (disableWarningsSlot.getValue()) {
1259
1235
  return value;
1260
1236
  }
1261
- globalThis.__DEV__ !== false && globals.invariant.warn(42, context.operationName ?
1262
- "".concat(context.operationType, " '").concat(context.operationName, "'")
1263
- : "anonymous ".concat(context.operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
1237
+ globalThis.__DEV__ !== false && globals.invariant.warn(42, operationName ?
1238
+ "".concat(operationType, " '").concat(operationName, "'")
1239
+ : "anonymous ".concat(operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
1264
1240
  getValue = function () { return value; };
1265
1241
  return value;
1266
1242
  };
1267
- Object.defineProperty(data, fieldName, {
1243
+ return {
1268
1244
  get: function () {
1269
1245
  return getValue();
1270
1246
  },
1271
- set: function (value) {
1272
- getValue = function () { return value; };
1247
+ set: function (newValue) {
1248
+ getValue = function () { return newValue; };
1273
1249
  },
1274
1250
  enumerable: true,
1275
1251
  configurable: true,
1276
- });
1252
+ };
1277
1253
  }
1278
1254
  var issuedWarning = false;
1279
1255
  function warnOnImproperCacheImplementation() {