react-relay 2.0.0-rc.2 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. package/index.js +2 -2
  2. package/lib/ReactRelayContext.js +6 -3
  3. package/lib/ReactRelayFragmentContainer.js +48 -46
  4. package/lib/ReactRelayFragmentMockRenderer.js +5 -1
  5. package/lib/ReactRelayPaginationContainer.js +102 -68
  6. package/lib/ReactRelayQueryFetcher.js +54 -28
  7. package/lib/ReactRelayQueryRenderer.js +28 -20
  8. package/lib/ReactRelayRefetchContainer.js +70 -58
  9. package/lib/ReactRelayTestMocker.js +56 -43
  10. package/lib/ReactRelayTypes.js +1 -1
  11. package/lib/RelayContext.js +8 -2
  12. package/lib/assertFragmentMap.js +9 -7
  13. package/lib/buildReactRelayContainer.js +32 -23
  14. package/lib/index.js +41 -0
  15. package/lib/isRelayEnvironment.js +1 -1
  16. package/lib/isRelayVariables.js +1 -1
  17. package/lib/readContext.js +7 -4
  18. package/package.json +4 -4
  19. package/react-relay.js +2 -2
  20. package/react-relay.min.js +2 -2
  21. package/classic.js +0 -10
  22. package/compat.js +0 -10
  23. package/lib/ConcreteQuery.js +0 -10
  24. package/lib/GraphQLQueryRunner.js +0 -264
  25. package/lib/GraphQLRange.js +0 -1124
  26. package/lib/GraphQLSegment.js +0 -743
  27. package/lib/GraphQLStoreChangeEmitter.js +0 -141
  28. package/lib/GraphQLStoreQueryResolver.js +0 -288
  29. package/lib/GraphQLStoreRangeUtils.js +0 -126
  30. package/lib/QueryBuilder.js +0 -228
  31. package/lib/ReactRelayClassicExports.js +0 -29
  32. package/lib/ReactRelayCompatContainerBuilder.js +0 -175
  33. package/lib/ReactRelayCompatPublic.js +0 -28
  34. package/lib/ReactRelayContainerProfiler.js +0 -30
  35. package/lib/ReactRelayFragmentContainer-flowtest.js +0 -201
  36. package/lib/ReactRelayPaginationContainer-flowtest.js +0 -213
  37. package/lib/ReactRelayPublic.js +0 -29
  38. package/lib/ReactRelayRefetchContainer-flowtest.js +0 -191
  39. package/lib/RelayCacheProcessor.js +0 -196
  40. package/lib/RelayChangeTracker.js +0 -83
  41. package/lib/RelayClassicContainerUtils.js +0 -49
  42. package/lib/RelayClassicCore.js +0 -34
  43. package/lib/RelayClassicRecordState.js +0 -31
  44. package/lib/RelayCompatContainer.js +0 -25
  45. package/lib/RelayCompatEnvironment.js +0 -27
  46. package/lib/RelayCompatMutations.js +0 -133
  47. package/lib/RelayCompatPaginationContainer.js +0 -27
  48. package/lib/RelayCompatRefetchContainer.js +0 -27
  49. package/lib/RelayCompatTypes.js +0 -10
  50. package/lib/RelayContainer.js +0 -889
  51. package/lib/RelayContainerComparators.js +0 -75
  52. package/lib/RelayContainerProxy.js +0 -21
  53. package/lib/RelayDefaultNetworkLayer.js +0 -192
  54. package/lib/RelayEnvironment.js +0 -449
  55. package/lib/RelayEnvironmentTypes.js +0 -10
  56. package/lib/RelayFetchMode.js +0 -17
  57. package/lib/RelayFragmentPointer.js +0 -161
  58. package/lib/RelayFragmentReference.js +0 -249
  59. package/lib/RelayFragmentSpecResolver.js +0 -305
  60. package/lib/RelayGraphQLMutation.js +0 -288
  61. package/lib/RelayGraphQLTag.js +0 -42
  62. package/lib/RelayInternalTypes.js +0 -15
  63. package/lib/RelayInternals.js +0 -24
  64. package/lib/RelayMetaRoute.js +0 -35
  65. package/lib/RelayMockRenderer.js +0 -71
  66. package/lib/RelayModern-flowtest.js +0 -342
  67. package/lib/RelayModernFlowtest_badref.graphql.js +0 -10
  68. package/lib/RelayModernFlowtest_notref.graphql.js +0 -10
  69. package/lib/RelayModernFlowtest_user.graphql.js +0 -10
  70. package/lib/RelayModernFlowtest_users.graphql.js +0 -10
  71. package/lib/RelayMutation.js +0 -322
  72. package/lib/RelayMutationDebugPrinter.js +0 -47
  73. package/lib/RelayMutationQuery.js +0 -558
  74. package/lib/RelayMutationQueue.js +0 -530
  75. package/lib/RelayMutationRequest.js +0 -103
  76. package/lib/RelayMutationTracker.js +0 -113
  77. package/lib/RelayMutationTransaction.js +0 -92
  78. package/lib/RelayMutationTransactionStatus.js +0 -55
  79. package/lib/RelayNetworkDebug.js +0 -131
  80. package/lib/RelayNetworkLayer.js +0 -185
  81. package/lib/RelayNodeInterface.js +0 -104
  82. package/lib/RelayOperationDescriptor.js +0 -40
  83. package/lib/RelayOptimisticMutationUtils.js +0 -208
  84. package/lib/RelayPendingQueryTracker.js +0 -166
  85. package/lib/RelayPropTypes.js +0 -57
  86. package/lib/RelayPublic.js +0 -44
  87. package/lib/RelayQL.js +0 -128
  88. package/lib/RelayQuery.js +0 -1584
  89. package/lib/RelayQueryCaching.js +0 -33
  90. package/lib/RelayQueryConfig.js +0 -58
  91. package/lib/RelayQueryPath.js +0 -204
  92. package/lib/RelayQueryRequest.js +0 -103
  93. package/lib/RelayQueryTracker.js +0 -86
  94. package/lib/RelayQueryTransform.js +0 -91
  95. package/lib/RelayQueryVisitor.js +0 -93
  96. package/lib/RelayQueryWriter.js +0 -573
  97. package/lib/RelayReadyState.js +0 -83
  98. package/lib/RelayReadyStateRenderer.js +0 -145
  99. package/lib/RelayRecord.js +0 -75
  100. package/lib/RelayRecordStatusMap.js +0 -57
  101. package/lib/RelayRecordStore.js +0 -433
  102. package/lib/RelayRecordWriter.js +0 -601
  103. package/lib/RelayRefQueryDescriptor.js +0 -27
  104. package/lib/RelayRenderer.js +0 -268
  105. package/lib/RelayRootContainer.js +0 -125
  106. package/lib/RelayRoute.js +0 -92
  107. package/lib/RelayRouteFragment.js +0 -44
  108. package/lib/RelaySelector.js +0 -201
  109. package/lib/RelayShallowMock.js +0 -69
  110. package/lib/RelayStaticContainer.js +0 -38
  111. package/lib/RelayStore.js +0 -12
  112. package/lib/RelayStoreConstants.js +0 -20
  113. package/lib/RelayStoreData.js +0 -660
  114. package/lib/RelayTaskQueue.js +0 -189
  115. package/lib/RelayTypes.js +0 -13
  116. package/lib/RelayVariable.js +0 -32
  117. package/lib/RelayVariables.js +0 -92
  118. package/lib/buildRQL.js +0 -160
  119. package/lib/callsFromGraphQL.js +0 -74
  120. package/lib/callsToGraphQL.js +0 -34
  121. package/lib/checkRelayQueryData.js +0 -250
  122. package/lib/createRelayQuery.js +0 -17
  123. package/lib/dedent.js +0 -49
  124. package/lib/diffRelayQuery.js +0 -757
  125. package/lib/directivesToGraphQL.js +0 -39
  126. package/lib/filterRelayQuery.js +0 -29
  127. package/lib/findRelayQueryLeaves.js +0 -293
  128. package/lib/flattenRelayQuery.js +0 -121
  129. package/lib/flattenSplitRelayQueries.js +0 -44
  130. package/lib/forEachRootCallArg.js +0 -40
  131. package/lib/fromGraphQL.js +0 -48
  132. package/lib/generateClientEdgeID.js +0 -22
  133. package/lib/generateClientID.js +0 -27
  134. package/lib/generateConcreteFragmentID.js +0 -30
  135. package/lib/generateForceIndex.js +0 -24
  136. package/lib/generateRQLFieldAlias.js +0 -39
  137. package/lib/getRangeBehavior.js +0 -58
  138. package/lib/getRelayQueries.js +0 -83
  139. package/lib/intersectRelayQuery.js +0 -149
  140. package/lib/isClassicRelayContext.js +0 -20
  141. package/lib/isClassicRelayEnvironment.js +0 -20
  142. package/lib/isCompatibleRelayFragmentType.js +0 -27
  143. package/lib/isRelayContainer.js +0 -16
  144. package/lib/makeLegacyStringishComponentRef.js +0 -52
  145. package/lib/printRelayOSSQuery.js +0 -329
  146. package/lib/printRelayQuery.js +0 -26
  147. package/lib/rangeOperationToMetadataKey.js +0 -25
  148. package/lib/readRelayQueryData.js +0 -551
  149. package/lib/relayUnstableBatchedUpdates.js +0 -12
  150. package/lib/relayUnstableBatchedUpdates.native.js +0 -11
  151. package/lib/restoreRelayCacheData.js +0 -188
  152. package/lib/serializeRelayQueryCall.js +0 -42
  153. package/lib/splitDeferredRelayQueries.js +0 -298
  154. package/lib/stableStringify.js +0 -85
  155. package/lib/testEditDistance.js +0 -112
  156. package/lib/throwFailedPromise.js +0 -26
  157. package/lib/toGraphQL.js +0 -94
  158. package/lib/transformRelayQueryPayload.js +0 -145
  159. package/lib/validateMutationConfig.js +0 -117
  160. package/lib/validateRelayReadQuery.js +0 -112
  161. package/lib/writeRelayQueryPayload.js +0 -44
  162. package/lib/writeRelayUpdatePayload.js +0 -513
  163. package/react-relay-classic.js +0 -4
  164. package/react-relay-classic.min.js +0 -9
  165. package/react-relay-compat.js +0 -4
  166. package/react-relay-compat.min.js +0 -9
@@ -1,601 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- *
8
- * @format
9
- */
10
- 'use strict';
11
-
12
- var EMPTY = '';
13
-
14
- var APPEND = require("relay-runtime").RangeOperations.APPEND,
15
- PREPEND = require("relay-runtime").RangeOperations.PREPEND,
16
- REMOVE = require("relay-runtime").RangeOperations.REMOVE;
17
-
18
- var FILTER_CALLS = require("./RelayRecord").MetadataKey.FILTER_CALLS,
19
- FORCE_INDEX = require("./RelayRecord").MetadataKey.FORCE_INDEX,
20
- MUTATION_IDS = require("./RelayRecord").MetadataKey.MUTATION_IDS,
21
- PATH = require("./RelayRecord").MetadataKey.PATH,
22
- RANGE = require("./RelayRecord").MetadataKey.RANGE,
23
- RESOLVED_FRAGMENT_MAP = require("./RelayRecord").MetadataKey.RESOLVED_FRAGMENT_MAP,
24
- RESOLVED_FRAGMENT_MAP_GENERATION = require("./RelayRecord").MetadataKey.RESOLVED_FRAGMENT_MAP_GENERATION,
25
- STATUS = require("./RelayRecord").MetadataKey.STATUS;
26
- /**
27
- * @internal
28
- *
29
- * `RelayRecordWriter` is the helper module to write data into RelayRecordStore.
30
- */
31
-
32
-
33
- var RelayRecordWriter =
34
- /*#__PURE__*/
35
- function () {
36
- function RelayRecordWriter(records, rootCallMap, isOptimistic, nodeConnectionMap, cacheWriter, clientMutationID) {
37
- this._cacheWriter = cacheWriter;
38
- this._clientMutationID = clientMutationID;
39
- this._isOptimisticWrite = isOptimistic;
40
- this._nodeConnectionMap = nodeConnectionMap || {};
41
- this._records = records;
42
- this._rootCallMap = rootCallMap;
43
- }
44
- /**
45
- * Get the data ID associated with a storage key (and optionally an
46
- * identifying argument value) for a root query.
47
- */
48
-
49
-
50
- var _proto = RelayRecordWriter.prototype;
51
-
52
- _proto.getDataID = function getDataID(storageKey, identifyingArgValue) {
53
- if (require("./RelayNodeInterface").isNodeRootCall(storageKey)) {
54
- !(identifyingArgValue != null) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.getDataID(): Argument to `%s()` ' + 'cannot be null or undefined.', storageKey) : require("fbjs/lib/invariant")(false) : void 0;
55
- return identifyingArgValue;
56
- }
57
-
58
- if (identifyingArgValue == null) {
59
- identifyingArgValue = EMPTY;
60
- }
61
-
62
- if (this._rootCallMap.hasOwnProperty(storageKey) && this._rootCallMap[storageKey].hasOwnProperty(identifyingArgValue)) {
63
- return this._rootCallMap[storageKey][identifyingArgValue];
64
- }
65
- };
66
- /**
67
- * Associate a data ID with a storage key (and optionally an identifying
68
- * argument value) for a root query.
69
- */
70
-
71
-
72
- _proto.putDataID = function putDataID(storageKey, identifyingArgValue, dataID) {
73
- if (require("./RelayNodeInterface").isNodeRootCall(storageKey)) {
74
- !(identifyingArgValue != null) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putDataID(): Argument to `%s()` ' + 'cannot be null or undefined.', storageKey) : require("fbjs/lib/invariant")(false) : void 0;
75
- return;
76
- }
77
-
78
- if (identifyingArgValue == null) {
79
- identifyingArgValue = EMPTY;
80
- }
81
-
82
- this._rootCallMap[storageKey] = this._rootCallMap[storageKey] || {};
83
- this._rootCallMap[storageKey][identifyingArgValue] = dataID;
84
-
85
- if (this._cacheWriter) {
86
- this._cacheWriter.writeRootCall(storageKey, identifyingArgValue, dataID);
87
- }
88
- };
89
- /**
90
- * Returns the status of the record stored at `dataID`.
91
- */
92
-
93
-
94
- _proto.getRecordState = function getRecordState(dataID) {
95
- var record = this._records[dataID];
96
-
97
- if (record === null) {
98
- return 'NONEXISTENT';
99
- } else if (record === undefined) {
100
- return 'UNKNOWN';
101
- }
102
-
103
- return 'EXISTENT';
104
- };
105
- /**
106
- * Create an empty record at `dataID` if a record does not already exist.
107
- */
108
-
109
-
110
- _proto.putRecord = function putRecord(dataID, typeName, path) {
111
- var prevRecord = this._getRecordForWrite(dataID);
112
-
113
- if (prevRecord) {
114
- return;
115
- }
116
-
117
- var nextRecord = require("./RelayRecord").createWithFields(dataID, {
118
- __typename: typeName
119
- });
120
-
121
- if (this._isOptimisticWrite) {
122
- this._setClientMutationID(nextRecord);
123
- }
124
-
125
- if (require("./RelayRecord").isClientID(dataID) && path) {
126
- nextRecord[PATH] = path;
127
- }
128
-
129
- this._records[dataID] = nextRecord;
130
- var cacheWriter = this._cacheWriter;
131
-
132
- if (!this._isOptimisticWrite && cacheWriter) {
133
- cacheWriter.writeField(dataID, '__dataID__', dataID, typeName);
134
- }
135
- };
136
- /**
137
- * Returns the path to a non-refetchable record.
138
- */
139
-
140
-
141
- _proto.getPathToRecord = function getPathToRecord(dataID) {
142
- return this._getField(dataID, PATH);
143
- };
144
- /**
145
- * Check whether a given record has received data for a deferred fragment.
146
- */
147
-
148
-
149
- _proto.hasFragmentData = function hasFragmentData(dataID, fragmentID) {
150
- var resolvedFragmentMap = this._getField(dataID, RESOLVED_FRAGMENT_MAP);
151
-
152
- !(typeof resolvedFragmentMap === 'object' || resolvedFragmentMap == null) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.hasFragmentData(): Expected the map of ' + 'resolved deferred fragments associated with record `%s` to be null or ' + 'an object. Found a(n) `%s`.', dataID, typeof resolvedFragmentMap) : require("fbjs/lib/invariant")(false) : void 0;
153
- return !!(resolvedFragmentMap && resolvedFragmentMap[fragmentID]);
154
- };
155
- /**
156
- * Mark a given record as having received data for a deferred fragment.
157
- */
158
-
159
-
160
- _proto.setHasDeferredFragmentData = function setHasDeferredFragmentData(dataID, fragmentID) {
161
- this._setHasFragmentData(dataID, fragmentID, true);
162
- };
163
- /**
164
- * Mark a given record as having received data for a fragment.
165
- */
166
-
167
-
168
- _proto.setHasFragmentData = function setHasFragmentData(dataID, fragmentID) {
169
- this._setHasFragmentData(dataID, fragmentID, false);
170
- };
171
-
172
- _proto._setHasFragmentData = function _setHasFragmentData(dataID, fragmentID, updateFragmentGeneration) {
173
- var record = this._getRecordForWrite(dataID);
174
-
175
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.setHasFragmentData(): Expected record `%s` ' + 'to exist before marking it as having received data for the deferred ' + 'fragment with id `%s`.', dataID, fragmentID) : require("fbjs/lib/invariant")(false) : void 0;
176
- var resolvedFragmentMap = record[RESOLVED_FRAGMENT_MAP];
177
-
178
- if (typeof resolvedFragmentMap !== 'object' || !resolvedFragmentMap) {
179
- resolvedFragmentMap = {};
180
- }
181
-
182
- resolvedFragmentMap[fragmentID] = true;
183
- record[RESOLVED_FRAGMENT_MAP] = resolvedFragmentMap;
184
-
185
- if (updateFragmentGeneration) {
186
- if (typeof record[RESOLVED_FRAGMENT_MAP_GENERATION] === 'number') {
187
- record[RESOLVED_FRAGMENT_MAP_GENERATION]++;
188
- } else {
189
- record[RESOLVED_FRAGMENT_MAP_GENERATION] = 0;
190
- }
191
- }
192
- };
193
- /**
194
- * Delete the record at `dataID`, setting its value to `null`.
195
- */
196
-
197
-
198
- _proto.deleteRecord = function deleteRecord(dataID) {
199
- this._records[dataID] = null; // Remove any links for this record
200
-
201
- if (!this._isOptimisticWrite) {
202
- delete this._nodeConnectionMap[dataID];
203
-
204
- if (this._cacheWriter) {
205
- this._cacheWriter.writeNode(dataID, null);
206
- }
207
- }
208
- };
209
-
210
- _proto.getType = function getType(dataID) {
211
- // `__typename` property is typed as `string`
212
- return this._getField(dataID, '__typename');
213
- };
214
- /**
215
- * Returns the value of the field for the given dataID.
216
- */
217
-
218
-
219
- _proto.getField = function getField(dataID, storageKey) {
220
- return this._getField(dataID, storageKey);
221
- };
222
- /**
223
- * Sets the value of a scalar field.
224
- */
225
-
226
-
227
- _proto.putField = function putField(dataID, storageKey, value) {
228
- var record = this._getRecordForWrite(dataID);
229
-
230
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putField(): Expected record `%s` to exist before ' + 'writing field `%s`.', dataID, storageKey) : require("fbjs/lib/invariant")(false) : void 0;
231
- record[storageKey] = value;
232
-
233
- if (!this._isOptimisticWrite && this._cacheWriter) {
234
- var typeName = record.__typename;
235
-
236
- this._cacheWriter.writeField(dataID, storageKey, value, typeName);
237
- }
238
- };
239
- /**
240
- * Clears the value of a field by setting it to null/undefined.
241
- */
242
-
243
-
244
- _proto.deleteField = function deleteField(dataID, storageKey) {
245
- var record = this._getRecordForWrite(dataID);
246
-
247
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.deleteField(): Expected record `%s` to exist before ' + 'deleting field `%s`.', dataID, storageKey) : require("fbjs/lib/invariant")(false) : void 0;
248
- record[storageKey] = null;
249
-
250
- if (!this._isOptimisticWrite && this._cacheWriter) {
251
- this._cacheWriter.writeField(dataID, storageKey, null);
252
- }
253
- };
254
- /**
255
- * Returns the Data ID of a linked record (eg the ID of the `address` record
256
- * in `actor{address}`).
257
- */
258
-
259
-
260
- _proto.getLinkedRecordID = function getLinkedRecordID(dataID, storageKey) {
261
- var field = this._getField(dataID, storageKey);
262
-
263
- if (field == null) {
264
- return field;
265
- }
266
-
267
- var record = require("./RelayRecord").getRecord(field);
268
-
269
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.getLinkedRecordID(): Expected field `%s` for record ' + '`%s` to have a linked record.', storageKey, dataID) : require("fbjs/lib/invariant")(false) : void 0;
270
- return require("./RelayRecord").getDataID(record);
271
- };
272
- /**
273
- * Creates/updates a link between two records via the given field.
274
- */
275
-
276
-
277
- _proto.putLinkedRecordID = function putLinkedRecordID(parentID, storageKey, recordID) {
278
- var parent = this._getRecordForWrite(parentID);
279
-
280
- !parent ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putLinkedRecordID(): Expected record `%s` to exist ' + 'before linking to record `%s`.', parentID, recordID) : require("fbjs/lib/invariant")(false) : void 0;
281
-
282
- var fieldValue = require("./RelayRecord").create(recordID);
283
-
284
- parent[storageKey] = fieldValue;
285
-
286
- if (!this._isOptimisticWrite && this._cacheWriter) {
287
- this._cacheWriter.writeField(parentID, storageKey, fieldValue);
288
- }
289
- };
290
- /**
291
- * Returns an array of Data ID for a plural linked field (eg the actor IDs of
292
- * the `likers` in `story{likers}`).
293
- */
294
-
295
-
296
- _proto.getLinkedRecordIDs = function getLinkedRecordIDs(dataID, storageKey) {
297
- var field = this._getField(dataID, storageKey);
298
-
299
- if (field == null) {
300
- return field;
301
- }
302
-
303
- !Array.isArray(field) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.getLinkedRecordIDs(): Expected field `%s` for ' + 'record `%s` to have an array of linked records.', storageKey, dataID) : require("fbjs/lib/invariant")(false) : void 0;
304
- return field.map(function (element, ii) {
305
- var record = require("./RelayRecord").getRecord(element);
306
-
307
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.getLinkedRecordIDs(): Expected element at index ' + '%s in field `%s` for record `%s` to be a linked record.', ii, storageKey, dataID) : require("fbjs/lib/invariant")(false) : void 0;
308
- return require("./RelayRecord").getDataID(record);
309
- });
310
- };
311
- /**
312
- * Creates/updates a one-to-many link between records via the given field.
313
- */
314
-
315
-
316
- _proto.putLinkedRecordIDs = function putLinkedRecordIDs(parentID, storageKey, recordIDs) {
317
- var parent = this._getRecordForWrite(parentID);
318
-
319
- !parent ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putLinkedRecordIDs(): Expected record `%s` to exist ' + 'before linking records.', parentID) : require("fbjs/lib/invariant")(false) : void 0;
320
- var records = recordIDs.map(function (recordID) {
321
- return require("./RelayRecord").create(recordID);
322
- });
323
- parent[storageKey] = records;
324
-
325
- if (!this._isOptimisticWrite && this._cacheWriter) {
326
- this._cacheWriter.writeField(parentID, storageKey, records);
327
- }
328
- };
329
- /**
330
- * Get the force index associated with the range at `connectionID`.
331
- */
332
-
333
-
334
- _proto.getRangeForceIndex = function getRangeForceIndex(connectionID) {
335
- var forceIndex = this._getField(connectionID, FORCE_INDEX);
336
-
337
- if (forceIndex === null) {
338
- return -1;
339
- }
340
-
341
- return forceIndex || 0;
342
- };
343
- /**
344
- * Get the condition calls that were used to fetch the given connection.
345
- * Ex: for a field `photos.orderby(recent)`, this would be
346
- * [{name: 'orderby', value: 'recent'}]
347
- */
348
-
349
-
350
- _proto.getRangeFilterCalls = function getRangeFilterCalls(connectionID) {
351
- return this._getField(connectionID, FILTER_CALLS);
352
- };
353
- /**
354
- * Creates a range at `dataID` with an optional `forceIndex`.
355
- */
356
-
357
-
358
- _proto.putRange = function putRange(connectionID, calls, forceIndex) {
359
- !!this._isOptimisticWrite ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putRange(): Cannot create a queued range.') : require("fbjs/lib/invariant")(false) : void 0;
360
-
361
- var record = this._getRecordForWrite(connectionID);
362
-
363
- !record ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putRange(): Expected record `%s` to exist before ' + 'adding a range.', connectionID) : require("fbjs/lib/invariant")(false) : void 0;
364
- var range = new (require("./GraphQLRange"))();
365
- var filterCalls = getFilterCalls(calls);
366
- forceIndex = forceIndex || 0;
367
- record[FILTER_CALLS] = filterCalls;
368
- record[FORCE_INDEX] = forceIndex;
369
- record[RANGE] = range;
370
- var cacheWriter = this._cacheWriter;
371
-
372
- if (!this._isOptimisticWrite && cacheWriter) {
373
- cacheWriter.writeField(connectionID, FILTER_CALLS, filterCalls);
374
- cacheWriter.writeField(connectionID, FORCE_INDEX, forceIndex);
375
- cacheWriter.writeField(connectionID, RANGE, range);
376
- }
377
- };
378
- /**
379
- * Returns whether there is a range at `connectionID`.
380
- */
381
-
382
-
383
- _proto.hasRange = function hasRange(connectionID) {
384
- return !!this._getField(connectionID, RANGE);
385
- };
386
- /**
387
- * Adds newly fetched edges to a range.
388
- */
389
-
390
-
391
- _proto.putRangeEdges = function putRangeEdges(connectionID, calls, pageInfo, edges) {
392
- var _this = this;
393
-
394
- var range = this._getField(connectionID, RANGE);
395
-
396
- !range ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter.putRangeEdges(): Expected record `%s` to exist and ' + 'have a range.', connectionID) : require("fbjs/lib/invariant")(false) : void 0;
397
- var edgeRecords = [];
398
- edges.forEach(function (edgeID) {
399
- var edgeRecord = _this._getRangeEdgeRecord(edgeID);
400
-
401
- edgeRecords.push(edgeRecord);
402
-
403
- var nodeID = require("./RelayRecord").getDataID(edgeRecord.node);
404
-
405
- _this._addConnectionForNode(connectionID, nodeID);
406
- });
407
- range.addItems(calls, edgeRecords, pageInfo);
408
-
409
- if (!this._isOptimisticWrite && this._cacheWriter) {
410
- this._cacheWriter.writeField(connectionID, RANGE, range);
411
- }
412
- };
413
- /**
414
- * Prepend, append, or delete edges to/from a range.
415
- */
416
-
417
-
418
- _proto.applyRangeUpdate = function applyRangeUpdate(connectionID, edgeID, operation) {
419
- if (this._isOptimisticWrite) {
420
- this._applyOptimisticRangeUpdate(connectionID, edgeID, operation);
421
- } else {
422
- this._applyServerRangeUpdate(connectionID, edgeID, operation);
423
- }
424
- };
425
- /**
426
- * Get edge data in a format compatibile with `GraphQLRange`.
427
- * TODO: change `GraphQLRange` to accept `(edgeID, cursor, nodeID)` tuple
428
- */
429
-
430
-
431
- _proto._getRangeEdgeRecord = function _getRangeEdgeRecord(edgeID) {
432
- var _ConnectionInterface$ = require("relay-runtime").ConnectionInterface.get(),
433
- CURSOR = _ConnectionInterface$.CURSOR,
434
- NODE = _ConnectionInterface$.NODE;
435
-
436
- var nodeID = this.getLinkedRecordID(edgeID, NODE);
437
- !nodeID ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter: Expected edge `%s` to have a `node` record.', edgeID) : require("fbjs/lib/invariant")(false) : void 0;
438
- return require("./RelayRecord").createWithFields(edgeID, {
439
- cursor: this.getField(edgeID, CURSOR),
440
- node: require("./RelayRecord").create(nodeID)
441
- });
442
- };
443
-
444
- _proto._applyOptimisticRangeUpdate = function _applyOptimisticRangeUpdate(connectionID, edgeID, operation) {
445
- var record = this._getRecordForWrite(connectionID);
446
-
447
- if (!record) {
448
- record = require("./RelayRecord").create(connectionID);
449
- this._records[connectionID] = record;
450
- }
451
-
452
- this._setClientMutationID(record);
453
-
454
- var key = require("./rangeOperationToMetadataKey")[operation];
455
-
456
- var queue = record[key];
457
-
458
- if (!queue) {
459
- queue = [];
460
- record[key] = queue;
461
- }
462
-
463
- if (operation === PREPEND) {
464
- queue.unshift(edgeID);
465
- } else {
466
- queue.push(edgeID);
467
- }
468
- };
469
-
470
- _proto._applyServerRangeUpdate = function _applyServerRangeUpdate(connectionID, edgeID, operation) {
471
- var range = this._getField(connectionID, RANGE);
472
-
473
- !range ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter: Cannot apply `%s` update to non-existent record ' + '`%s`.', operation, connectionID) : require("fbjs/lib/invariant")(false) : void 0;
474
-
475
- if (operation === REMOVE) {
476
- range.removeEdgeWithID(edgeID);
477
- var nodeID = this.getLinkedRecordID(edgeID, 'node');
478
-
479
- if (nodeID) {
480
- this._removeConnectionForNode(connectionID, nodeID);
481
- }
482
- } else {
483
- var edgeRecord = this._getRangeEdgeRecord(edgeID);
484
-
485
- var _nodeID = require("./RelayRecord").getDataID(edgeRecord.node);
486
-
487
- this._addConnectionForNode(connectionID, _nodeID);
488
-
489
- if (operation === APPEND) {
490
- range.appendEdge(this._getRangeEdgeRecord(edgeID));
491
- } else {
492
- range.prependEdge(this._getRangeEdgeRecord(edgeID));
493
- }
494
- }
495
-
496
- if (this._cacheWriter) {
497
- this._cacheWriter.writeField(connectionID, RANGE, range);
498
- }
499
- };
500
- /**
501
- * Record that the node is contained in the connection.
502
- */
503
-
504
-
505
- _proto._addConnectionForNode = function _addConnectionForNode(connectionID, nodeID) {
506
- var connectionMap = this._nodeConnectionMap[nodeID];
507
-
508
- if (!connectionMap) {
509
- connectionMap = {};
510
- this._nodeConnectionMap[nodeID] = connectionMap;
511
- }
512
-
513
- connectionMap[connectionID] = true;
514
- };
515
- /**
516
- * Record that the given node is no longer part of the connection.
517
- */
518
-
519
-
520
- _proto._removeConnectionForNode = function _removeConnectionForNode(connectionID, nodeID) {
521
- var connectionMap = this._nodeConnectionMap[nodeID];
522
-
523
- if (connectionMap) {
524
- delete connectionMap[connectionID];
525
-
526
- if (Object.keys(connectionMap).length === 0) {
527
- delete this._nodeConnectionMap[nodeID];
528
- }
529
- }
530
- };
531
- /**
532
- * If the record is in the store, gets a version of the record
533
- * in the store being used for writes.
534
- */
535
-
536
-
537
- _proto._getRecordForWrite = function _getRecordForWrite(dataID) {
538
- var record = this._records[dataID];
539
-
540
- if (!record) {
541
- return record;
542
- }
543
-
544
- if (this._isOptimisticWrite) {
545
- this._setClientMutationID(record);
546
- }
547
-
548
- return record;
549
- };
550
- /**
551
- * Get the value of the field from the first version of the record for which
552
- * the field is defined, returning `null` if the record has been deleted or
553
- * `undefined` if the record has not been fetched.
554
- */
555
-
556
-
557
- _proto._getField = function _getField(dataID, storageKey) {
558
- var record = this._records[dataID];
559
-
560
- if (record === null) {
561
- return null;
562
- } else if (record && record.hasOwnProperty(storageKey)) {
563
- return record[storageKey];
564
- } else {
565
- return undefined;
566
- }
567
- };
568
- /**
569
- * Injects the client mutation id associated with the record store instance
570
- * into the given record.
571
- */
572
-
573
-
574
- _proto._setClientMutationID = function _setClientMutationID(record) {
575
- var clientMutationID = this._clientMutationID;
576
- !clientMutationID ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordWriter: _clientMutationID cannot be null/undefined.') : require("fbjs/lib/invariant")(false) : void 0;
577
- var mutationIDs = record[MUTATION_IDS] || [];
578
-
579
- if (mutationIDs.indexOf(clientMutationID) === -1) {
580
- mutationIDs.push(clientMutationID);
581
- record[MUTATION_IDS] = mutationIDs;
582
- }
583
-
584
- record[STATUS] = require("./RelayRecordStatusMap").setOptimisticStatus(0, true);
585
- };
586
-
587
- return RelayRecordWriter;
588
- }();
589
- /**
590
- * Filter calls to only those that specify conditions on the returned results
591
- * (ex: `orderby(TOP_STORIES)`), removing generic calls (ex: `first`, `find`).
592
- */
593
-
594
-
595
- function getFilterCalls(calls) {
596
- return calls.filter(function (call) {
597
- return !require("relay-runtime").ConnectionInterface.isConnectionCall(call);
598
- });
599
- }
600
-
601
- module.exports = RelayRecordWriter;
@@ -1,27 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * strict-local
8
- * @format
9
- */
10
- 'use strict';
11
-
12
- /**
13
- * @internal
14
- *
15
- * Represents a node that will eventually become a "ref query".
16
- *
17
- * Includes the `nodePath` (ancestor nodes) that can be used to construct an
18
- * appropriate the JSONPath for the query.
19
- *
20
- * @see splitDeferredRelayQueries
21
- */
22
- var RelayRefQueryDescriptor = function RelayRefQueryDescriptor(node, nodePath) {
23
- this.node = node;
24
- this.nodePath = nodePath;
25
- };
26
-
27
- module.exports = RelayRefQueryDescriptor;