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,141 +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
- /**
13
- * Asynchronous change emitter for nodes stored in the Relay cache.
14
- *
15
- * Changes are produced by `RelayStoreData` after writing query and mutation
16
- * payloads into the store and consumed by `GraphQLStoreQueryResolver`, which
17
- * subscribes to all records that are part of an active query result set.
18
- *
19
- * @internal
20
- */
21
- var GraphQLStoreChangeEmitter =
22
- /*#__PURE__*/
23
- function () {
24
- // Should be GraphQLStoreRangeUtils
25
- function GraphQLStoreChangeEmitter(rangeData) {
26
- this._batchUpdate = function (callback) {
27
- return callback();
28
- };
29
-
30
- this._executingIDs = {};
31
- this._rangeData = rangeData;
32
- this._scheduledIDs = null;
33
- this._subscribers = [];
34
- }
35
-
36
- var _proto = GraphQLStoreChangeEmitter.prototype;
37
-
38
- _proto.addListenerForIDs = function addListenerForIDs(ids, callback) {
39
- var _this = this;
40
-
41
- var subscribedIDs = ids.map(function (id) {
42
- return _this._getBroadcastID(id);
43
- });
44
- var index = this._subscribers.length;
45
-
46
- this._subscribers.push({
47
- subscribedIDs: subscribedIDs,
48
- callback: callback
49
- });
50
-
51
- return {
52
- remove: function remove() {
53
- delete _this._subscribers[index];
54
- }
55
- };
56
- };
57
-
58
- _proto.broadcastChangeForID = function broadcastChangeForID(id) {
59
- var _this2 = this;
60
-
61
- var scheduledIDs = this._scheduledIDs;
62
-
63
- if (scheduledIDs == null) {
64
- require("fbjs/lib/resolveImmediate")(function () {
65
- return _this2._processBroadcasts();
66
- });
67
-
68
- scheduledIDs = this._scheduledIDs = {};
69
- } // Record index of the last subscriber so we do not later unintentionally
70
- // invoke callbacks that were subscribed after this broadcast.
71
-
72
-
73
- scheduledIDs[this._getBroadcastID(id)] = this._subscribers.length - 1;
74
- };
75
-
76
- _proto.injectBatchingStrategy = function injectBatchingStrategy(batchStrategy) {
77
- this._batchUpdate = batchStrategy;
78
- };
79
-
80
- _proto._processBroadcasts = function _processBroadcasts() {
81
- var _this3 = this;
82
-
83
- if (this._scheduledIDs) {
84
- this._executingIDs = this._scheduledIDs;
85
- this._scheduledIDs = null;
86
-
87
- this._batchUpdate(function () {
88
- return _this3._processSubscribers();
89
- });
90
- }
91
- };
92
- /**
93
- * Exposed for profiling reasons.
94
- * @private
95
- */
96
-
97
-
98
- _proto._processSubscribers = function _processSubscribers() {
99
- var _this4 = this;
100
-
101
- this._subscribers.forEach(function (subscriber, subscriberIndex) {
102
- return _this4._processSubscriber(subscriber, subscriberIndex);
103
- });
104
- };
105
-
106
- _proto._processSubscriber = function _processSubscriber(_ref, subscriberIndex) {
107
- var subscribedIDs = _ref.subscribedIDs,
108
- callback = _ref.callback;
109
-
110
- for (var broadcastID in this._executingIDs) {
111
- if (this._executingIDs.hasOwnProperty(broadcastID)) {
112
- var broadcastIndex = this._executingIDs[broadcastID];
113
-
114
- if (broadcastIndex < subscriberIndex) {
115
- // Callback was subscribed after this particular broadcast.
116
- break;
117
- }
118
-
119
- if (subscribedIDs.indexOf(broadcastID) >= 0) {
120
- require("fbjs/lib/ErrorUtils").applyWithGuard(callback, null, null, null, 'GraphQLStoreChangeEmitter');
121
-
122
- break;
123
- }
124
- }
125
- }
126
- };
127
- /**
128
- * Ranges publish events for the entire range, not the specific view of that
129
- * range. For example, if "client:1" is a range, the event is on "client:1",
130
- * not "client:1_first(5)".
131
- */
132
-
133
-
134
- _proto._getBroadcastID = function _getBroadcastID(id) {
135
- return this._rangeData.getCanonicalClientID(id);
136
- };
137
-
138
- return GraphQLStoreChangeEmitter;
139
- }();
140
-
141
- module.exports = GraphQLStoreChangeEmitter;
@@ -1,288 +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
- /**
13
- * @internal
14
- *
15
- * Resolves data from fragment pointers.
16
- *
17
- * The supplied `callback` will be invoked whenever data returned by the last
18
- * invocation to `resolve` has changed.
19
- */
20
- var GraphQLStoreQueryResolver =
21
- /*#__PURE__*/
22
- function () {
23
- function GraphQLStoreQueryResolver(storeData, fragment, callback) {
24
- this.dispose();
25
- this._callback = callback;
26
- this._fragment = fragment;
27
- this._resolver = null;
28
- this._storeData = storeData;
29
- }
30
- /**
31
- * disposes the resolver's internal state such that future `resolve()` results
32
- * will not be `===` to previous results, and unsubscribes any subscriptions.
33
- */
34
-
35
-
36
- var _proto = GraphQLStoreQueryResolver.prototype;
37
-
38
- _proto.dispose = function dispose() {
39
- if (this._resolver) {
40
- this._resolver.dispose();
41
- }
42
- };
43
-
44
- _proto.resolve = function resolve(fragment, dataIDs) {
45
- // Warn but don't crash if resolved with the wrong fragment.
46
- if (this._fragment.getConcreteFragmentID() !== fragment.getConcreteFragmentID()) {
47
- process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(false, 'GraphQLStoreQueryResolver: Expected `resolve` to be called with the ' + 'same concrete fragment as the constructor. The resolver was created ' + 'with fragment `%s` but resolved with fragment `%s`.', this._fragment.getDebugName(), fragment.getDebugName()) : void 0;
48
- } // Rather than crash on mismatched plurality of fragment/ids just warn
49
- // and resolve as if the fragment's pluarity matched the format of the ids.
50
- // Note that the inverse - attempt to resolve based on fragment plurarity -
51
- // doesn't work because there's no way convert plural ids to singular w/o
52
- // losing data.
53
-
54
-
55
- if (Array.isArray(dataIDs)) {
56
- // Fragment should be plural if data is pluaral.
57
- process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(fragment.isPlural(), 'GraphQLStoreQueryResolver: Expected id/fragment plurality to be ' + 'consistent: got plural ids for singular fragment `%s`.', fragment.getDebugName()) : void 0;
58
- var resolver = this._resolver;
59
-
60
- if (resolver instanceof GraphQLStoreSingleQueryResolver) {
61
- resolver.dispose();
62
- resolver = null;
63
- }
64
-
65
- if (!resolver) {
66
- resolver = new GraphQLStorePluralQueryResolver(this._storeData, this._callback);
67
- }
68
-
69
- this._resolver = resolver;
70
- return resolver.resolve(fragment, dataIDs);
71
- } else {
72
- // Fragment should be singular if data is singular.
73
- process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(!fragment.isPlural(), 'GraphQLStoreQueryResolver: Expected id/fragment plurality to be ' + 'consistent: got a singular id for plural fragment `%s`.', fragment.getDebugName()) : void 0;
74
- var _resolver = this._resolver;
75
-
76
- if (_resolver instanceof GraphQLStorePluralQueryResolver) {
77
- _resolver.dispose();
78
-
79
- _resolver = null;
80
- }
81
-
82
- if (!_resolver) {
83
- _resolver = new GraphQLStoreSingleQueryResolver(this._storeData, this._callback);
84
- }
85
-
86
- this._resolver = _resolver;
87
- return _resolver.resolve(fragment, dataIDs);
88
- }
89
- };
90
-
91
- return GraphQLStoreQueryResolver;
92
- }();
93
- /**
94
- * Resolves plural fragments.
95
- */
96
-
97
-
98
- var GraphQLStorePluralQueryResolver =
99
- /*#__PURE__*/
100
- function () {
101
- function GraphQLStorePluralQueryResolver(storeData, callback) {
102
- this.dispose();
103
- this._callback = callback;
104
- this._storeData = storeData;
105
- }
106
-
107
- var _proto2 = GraphQLStorePluralQueryResolver.prototype;
108
-
109
- _proto2.dispose = function dispose() {
110
- if (this._resolvers) {
111
- this._resolvers.forEach(function (resolver) {
112
- return resolver.dispose();
113
- });
114
- }
115
-
116
- this._resolvers = [];
117
- this._results = [];
118
- };
119
- /**
120
- * Resolves a plural fragment pointer into an array of records.
121
- *
122
- * If the data, order, and number of resolved records has not changed since
123
- * the last call to `resolve`, the same array will be returned. Otherwise, a
124
- * new array will be returned.
125
- */
126
-
127
-
128
- _proto2.resolve = function resolve(fragment, nextIDs) {
129
- var prevResults = this._results;
130
- var nextResults;
131
- var prevLength = prevResults.length;
132
- var nextLength = nextIDs.length;
133
- var resolvers = this._resolvers; // Ensure that we have exactly `nextLength` resolvers.
134
-
135
- while (resolvers.length < nextLength) {
136
- resolvers.push(new GraphQLStoreSingleQueryResolver(this._storeData, this._callback));
137
- }
138
-
139
- while (resolvers.length > nextLength) {
140
- resolvers.pop().dispose();
141
- } // Allocate `nextResults` if and only if results have changed.
142
-
143
-
144
- if (prevLength !== nextLength) {
145
- nextResults = [];
146
- }
147
-
148
- for (var ii = 0; ii < nextLength; ii++) {
149
- var nextResult = resolvers[ii].resolve(fragment, nextIDs[ii]);
150
-
151
- if (nextResults || ii >= prevLength || nextResult !== prevResults[ii]) {
152
- nextResults = nextResults || prevResults.slice(0, ii);
153
- nextResults.push(nextResult);
154
- }
155
- }
156
-
157
- if (nextResults) {
158
- this._results = nextResults;
159
- }
160
-
161
- return this._results;
162
- };
163
-
164
- return GraphQLStorePluralQueryResolver;
165
- }();
166
- /**
167
- * Resolves non-plural fragments.
168
- */
169
-
170
-
171
- var GraphQLStoreSingleQueryResolver =
172
- /*#__PURE__*/
173
- function () {
174
- function GraphQLStoreSingleQueryResolver(storeData, callback) {
175
- this.dispose();
176
- this._callback = callback;
177
- this._storeData = storeData;
178
- this._subscribedIDs = {};
179
- }
180
-
181
- var _proto3 = GraphQLStoreSingleQueryResolver.prototype;
182
-
183
- _proto3.dispose = function dispose() {
184
- if (this._subscription) {
185
- this._subscription.remove();
186
- }
187
-
188
- this._hasDataChanged = false;
189
- this._fragment = null;
190
- this._result = null;
191
- this._resultID = null;
192
- this._subscription = null;
193
- this._subscribedIDs = {};
194
- };
195
- /**
196
- * Resolves data for a single fragment pointer.
197
- */
198
-
199
-
200
- _proto3.resolve = function resolve(nextFragment, nextID) {
201
- var prevFragment = this._fragment;
202
- var prevID = this._resultID;
203
- var nextResult;
204
- var prevResult = this._result;
205
- var subscribedIDs;
206
-
207
- if (prevFragment != null && prevID != null && this._getCanonicalID(prevID) === this._getCanonicalID(nextID)) {
208
- if (prevID !== nextID || this._hasDataChanged || !nextFragment.isEquivalent(prevFragment)) {
209
- // same canonical ID,
210
- // but the data, call(s), route, and/or variables have changed
211
- var _this$_resolveFragmen = this._resolveFragment(nextFragment, nextID);
212
-
213
- nextResult = _this$_resolveFragmen[0];
214
- subscribedIDs = _this$_resolveFragmen[1];
215
- nextResult = require("relay-runtime").recycleNodesInto(prevResult, nextResult);
216
- } else {
217
- // same id, route, variables, and data
218
- nextResult = prevResult;
219
- }
220
- } else {
221
- // Pointer has a different ID or is/was fake data.
222
- var _this$_resolveFragmen2 = this._resolveFragment(nextFragment, nextID);
223
-
224
- nextResult = _this$_resolveFragmen2[0];
225
- subscribedIDs = _this$_resolveFragmen2[1];
226
- } // update subscriptions whenever results change
227
-
228
-
229
- if (prevResult !== nextResult) {
230
- if (this._subscription) {
231
- this._subscription.remove();
232
-
233
- this._subscription = null;
234
- }
235
-
236
- if (subscribedIDs) {
237
- // always subscribe to the root ID
238
- subscribedIDs[nextID] = true;
239
-
240
- var changeEmitter = this._storeData.getChangeEmitter();
241
-
242
- this._subscription = changeEmitter.addListenerForIDs(Object.keys(subscribedIDs), this._handleChange.bind(this));
243
- this._subscribedIDs = subscribedIDs;
244
- }
245
-
246
- this._resultID = nextID;
247
- this._result = nextResult;
248
- }
249
-
250
- this._hasDataChanged = false;
251
- this._fragment = nextFragment;
252
- return this._result;
253
- };
254
- /**
255
- * Ranges publish events for the entire range, not the specific view of that
256
- * range. For example, if "client:1" is a range, the event is on "client:1",
257
- * not "client:1_first(5)".
258
- */
259
-
260
-
261
- _proto3._getCanonicalID = function _getCanonicalID(id) {
262
- return this._storeData.getRangeData().getCanonicalClientID(id);
263
- };
264
-
265
- _proto3._handleChange = function _handleChange() {
266
- if (!this._hasDataChanged) {
267
- this._hasDataChanged = true;
268
-
269
- this._callback();
270
- }
271
- };
272
-
273
- _proto3._resolveFragment = function _resolveFragment(fragment, dataID) {
274
- var _readRelayQueryData = require("./readRelayQueryData")(this._storeData, fragment, dataID),
275
- data = _readRelayQueryData.data,
276
- dataIDs = _readRelayQueryData.dataIDs;
277
-
278
- return [data, dataIDs];
279
- };
280
-
281
- return GraphQLStoreSingleQueryResolver;
282
- }();
283
-
284
- require("relay-runtime").RelayProfiler.instrumentMethods(GraphQLStoreQueryResolver.prototype, {
285
- resolve: 'GraphQLStoreQueryResolver.resolve'
286
- });
287
-
288
- module.exports = GraphQLStoreQueryResolver;
@@ -1,126 +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
- * @format
8
- */
9
- 'use strict';
10
-
11
- /**
12
- * Utilities used by GraphQLStore for storing ranges
13
- *
14
- * GraphQLStore stores all of the parts of a range in a single GraphQLRange
15
- * object. For example, `node(4808495){friends.first(5){id,name}}` might be
16
- * stored similar to this (pseudo-code):
17
- *
18
- * "4808495": {
19
- * "friends": { __dataID__: "client:1" }
20
- * },
21
- * "client:1": {
22
- * "nodes": new GraphQLRange(...) // all friends, not just the first 5
23
- * }
24
- *
25
- * and when that query is run, the store would return a result pointing at
26
- * a specific part of the range, encoded into the data ID:
27
- *
28
- * {
29
- * "4808495": {
30
- * "friends": { __dataID__: "client:1_first(5)" }
31
- * }
32
- * }
33
- *
34
- * That "client:1_first(5)" ID can then be used to query for the first 5
35
- * friends.
36
- *
37
- * @internal
38
- */
39
- var GraphQLStoreRangeUtils =
40
- /*#__PURE__*/
41
- function () {
42
- function GraphQLStoreRangeUtils() {
43
- this._rangeData = {};
44
- this._rangeDataKeyMap = {};
45
- }
46
- /**
47
- * Returns a token that can be parsed using parseRangeClientID to recover
48
- * the attributes needed to retrieve the corresponding items from a
49
- * GraphQLRange.
50
- *
51
- * @param {array<*>} calls
52
- * @param {object} callValues
53
- * @param {string} dataID
54
- * @return {string}
55
- */
56
-
57
-
58
- var _proto = GraphQLStoreRangeUtils.prototype;
59
-
60
- _proto.getClientIDForRangeWithID = function getClientIDForRangeWithID(calls, callValues, dataID) {
61
- var callsAsString = require("./callsFromGraphQL")(calls, callValues).map(function (call) {
62
- return require("./serializeRelayQueryCall")(call).substring(1);
63
- }).join(',');
64
-
65
- var key = dataID + '_' + callsAsString;
66
- var edge = this._rangeData[key];
67
-
68
- if (!edge) {
69
- this._rangeData[key] = {
70
- dataID: dataID,
71
- calls: calls,
72
- callValues: callValues
73
- };
74
- var rangeDataKeys = this._rangeDataKeyMap[dataID];
75
-
76
- if (!rangeDataKeys) {
77
- this._rangeDataKeyMap[dataID] = rangeDataKeys = [];
78
- }
79
-
80
- rangeDataKeys.push(key);
81
- }
82
-
83
- return key;
84
- };
85
- /**
86
- * Parses an ID back into its data ID and calls
87
- *
88
- * @param {string} rangeSpecificClientID
89
- * @return {?object}
90
- */
91
-
92
-
93
- _proto.parseRangeClientID = function parseRangeClientID(rangeSpecificClientID) {
94
- return this._rangeData[rangeSpecificClientID] || null;
95
- };
96
- /**
97
- * If given the client id for a range view, returns the canonical client id
98
- * for the entire range. e.g. converts "client:1_first(5)" to "client:1".
99
- * Otherwise returns the input.
100
- *
101
- * @param {string} dataID
102
- * @return {string}
103
- */
104
-
105
-
106
- _proto.getCanonicalClientID = function getCanonicalClientID(dataID) {
107
- return this._rangeData[dataID] ? this._rangeData[dataID].dataID : dataID;
108
- };
109
-
110
- _proto.removeRecord = function removeRecord(dataID) {
111
- var _this = this;
112
-
113
- var rangeDataKeys = this._rangeDataKeyMap[dataID];
114
-
115
- if (rangeDataKeys) {
116
- rangeDataKeys.forEach(function (key) {
117
- delete _this._rangeData[key];
118
- });
119
- delete this._rangeDataKeyMap[dataID];
120
- }
121
- };
122
-
123
- return GraphQLStoreRangeUtils;
124
- }();
125
-
126
- module.exports = GraphQLStoreRangeUtils;