react-relay 2.0.0-rc.2 → 5.0.0

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 (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;