relay-runtime 8.0.0 → 10.0.1

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 (135) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +41 -0
  2. package/handlers/connection/ConnectionHandler.js.flow +549 -0
  3. package/handlers/connection/ConnectionInterface.js.flow +92 -0
  4. package/handlers/connection/MutationHandlers.js.flow +88 -0
  5. package/index.js +1 -1
  6. package/index.js.flow +320 -0
  7. package/lib/handlers/RelayDefaultHandlerProvider.js +13 -2
  8. package/lib/handlers/connection/{RelayConnectionHandler.js → ConnectionHandler.js} +33 -35
  9. package/lib/handlers/connection/{RelayConnectionInterface.js → ConnectionInterface.js} +2 -2
  10. package/lib/handlers/connection/MutationHandlers.js +86 -0
  11. package/lib/index.js +15 -19
  12. package/lib/mutations/RelayDeclarativeMutationConfig.js +29 -52
  13. package/lib/mutations/RelayRecordProxy.js +1 -3
  14. package/lib/mutations/RelayRecordSourceMutator.js +2 -9
  15. package/lib/mutations/RelayRecordSourceProxy.js +2 -4
  16. package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -13
  17. package/lib/mutations/commitMutation.js +13 -3
  18. package/lib/mutations/validateMutation.js +16 -9
  19. package/lib/network/RelayObservable.js +9 -9
  20. package/lib/network/RelayQueryResponseCache.js +8 -6
  21. package/lib/query/PreloadableQueryRegistry.js +70 -0
  22. package/lib/query/fetchQueryInternal.js +31 -23
  23. package/lib/store/DataChecker.js +122 -110
  24. package/lib/store/RelayConcreteVariables.js +6 -2
  25. package/lib/store/RelayModernEnvironment.js +121 -67
  26. package/lib/store/RelayModernFragmentSpecResolver.js +12 -16
  27. package/lib/store/RelayModernQueryExecutor.js +389 -314
  28. package/lib/store/RelayModernRecord.js +14 -9
  29. package/lib/store/RelayModernSelector.js +7 -3
  30. package/lib/store/RelayModernStore.js +289 -484
  31. package/lib/store/RelayOperationTracker.js +35 -78
  32. package/lib/store/RelayOptimisticRecordSource.js +7 -5
  33. package/lib/store/RelayPublishQueue.js +6 -33
  34. package/lib/store/RelayReader.js +113 -45
  35. package/lib/store/RelayRecordSource.js +2 -9
  36. package/lib/store/RelayRecordSourceMapImpl.js +13 -18
  37. package/lib/store/RelayReferenceMarker.js +40 -60
  38. package/lib/store/RelayResponseNormalizer.js +158 -193
  39. package/lib/store/RelayStoreUtils.js +1 -0
  40. package/lib/store/StoreInspector.js +8 -8
  41. package/lib/store/TypeID.js +28 -0
  42. package/lib/store/cloneRelayScalarHandleSourceField.js +44 -0
  43. package/lib/store/normalizeRelayPayload.js +6 -2
  44. package/lib/store/readInlineData.js +1 -1
  45. package/lib/subscription/requestSubscription.js +5 -3
  46. package/lib/util/RelayConcreteNode.js +9 -6
  47. package/lib/util/RelayError.js +39 -9
  48. package/lib/util/RelayFeatureFlags.js +2 -5
  49. package/lib/util/RelayReplaySubject.js +3 -3
  50. package/lib/util/createPayloadFor3DField.js +7 -2
  51. package/lib/util/getRequestIdentifier.js +2 -2
  52. package/lib/util/recycleNodesInto.js +2 -6
  53. package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
  54. package/mutations/RelayRecordProxy.js.flow +165 -0
  55. package/mutations/RelayRecordSourceMutator.js.flow +238 -0
  56. package/mutations/RelayRecordSourceProxy.js.flow +164 -0
  57. package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
  58. package/mutations/applyOptimisticMutation.js.flow +76 -0
  59. package/mutations/commitLocalUpdate.js.flow +24 -0
  60. package/mutations/commitMutation.js.flow +182 -0
  61. package/mutations/validateMutation.js.flow +213 -0
  62. package/network/ConvertToExecuteFunction.js.flow +49 -0
  63. package/network/RelayNetwork.js.flow +84 -0
  64. package/network/RelayNetworkTypes.js.flow +123 -0
  65. package/network/RelayObservable.js.flow +634 -0
  66. package/network/RelayQueryResponseCache.js.flow +111 -0
  67. package/package.json +1 -1
  68. package/query/GraphQLTag.js.flow +166 -0
  69. package/query/PreloadableQueryRegistry.js.flow +65 -0
  70. package/query/fetchQuery.js.flow +47 -0
  71. package/query/fetchQueryInternal.js.flow +348 -0
  72. package/relay-runtime.js +2 -2
  73. package/relay-runtime.min.js +2 -2
  74. package/store/ClientID.js.flow +43 -0
  75. package/store/DataChecker.js.flow +502 -0
  76. package/store/RelayConcreteVariables.js.flow +96 -0
  77. package/store/RelayModernEnvironment.js.flow +551 -0
  78. package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
  79. package/store/RelayModernOperationDescriptor.js.flow +88 -0
  80. package/store/RelayModernQueryExecutor.js.flow +1321 -0
  81. package/store/RelayModernRecord.js.flow +403 -0
  82. package/store/RelayModernSelector.js.flow +455 -0
  83. package/store/RelayModernStore.js.flow +842 -0
  84. package/store/RelayOperationTracker.js.flow +164 -0
  85. package/store/RelayOptimisticRecordSource.js.flow +119 -0
  86. package/store/RelayPublishQueue.js.flow +401 -0
  87. package/store/RelayReader.js.flow +473 -0
  88. package/store/RelayRecordSource.js.flow +29 -0
  89. package/store/RelayRecordSourceMapImpl.js.flow +87 -0
  90. package/store/RelayRecordState.js.flow +37 -0
  91. package/store/RelayReferenceMarker.js.flow +257 -0
  92. package/store/RelayResponseNormalizer.js.flow +680 -0
  93. package/store/RelayStoreTypes.js.flow +899 -0
  94. package/store/RelayStoreUtils.js.flow +219 -0
  95. package/store/StoreInspector.js.flow +171 -0
  96. package/store/TypeID.js.flow +28 -0
  97. package/store/ViewerPattern.js.flow +26 -0
  98. package/store/cloneRelayHandleSourceField.js.flow +66 -0
  99. package/store/cloneRelayScalarHandleSourceField.js.flow +62 -0
  100. package/store/createFragmentSpecResolver.js.flow +55 -0
  101. package/store/createRelayContext.js.flow +44 -0
  102. package/store/defaultGetDataID.js.flow +27 -0
  103. package/store/hasOverlappingIDs.js.flow +34 -0
  104. package/store/isRelayModernEnvironment.js.flow +27 -0
  105. package/store/normalizeRelayPayload.js.flow +51 -0
  106. package/store/readInlineData.js.flow +75 -0
  107. package/subscription/requestSubscription.js.flow +100 -0
  108. package/util/JSResourceTypes.flow.js.flow +20 -0
  109. package/util/NormalizationNode.js.flow +198 -0
  110. package/util/ReaderNode.js.flow +208 -0
  111. package/util/RelayConcreteNode.js.flow +93 -0
  112. package/util/RelayDefaultHandleKey.js.flow +17 -0
  113. package/util/RelayError.js.flow +62 -0
  114. package/util/RelayFeatureFlags.js.flow +30 -0
  115. package/util/RelayProfiler.js.flow +284 -0
  116. package/util/RelayReplaySubject.js.flow +135 -0
  117. package/util/RelayRuntimeTypes.js.flow +72 -0
  118. package/util/createPayloadFor3DField.js.flow +43 -0
  119. package/util/deepFreeze.js.flow +36 -0
  120. package/util/generateID.js.flow +21 -0
  121. package/util/getFragmentIdentifier.js.flow +52 -0
  122. package/util/getRelayHandleKey.js.flow +41 -0
  123. package/util/getRequestIdentifier.js.flow +42 -0
  124. package/util/isPromise.js.flow +21 -0
  125. package/util/isScalarAndEqual.js.flow +26 -0
  126. package/util/recycleNodesInto.js.flow +76 -0
  127. package/util/resolveImmediate.js.flow +30 -0
  128. package/util/stableCopy.js.flow +35 -0
  129. package/lib/handlers/RelayDefaultMissingFieldHandlers.js +0 -26
  130. package/lib/handlers/getRelayDefaultMissingFieldHandlers.js +0 -36
  131. package/lib/query/RelayModernGraphQLTag.js +0 -104
  132. package/lib/store/RelayConnection.js +0 -37
  133. package/lib/store/RelayConnectionResolver.js +0 -178
  134. package/lib/store/RelayRecordSourceObjectImpl.js +0 -79
  135. package/lib/util/getFragmentSpecIdentifier.js +0 -27
@@ -0,0 +1,88 @@
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
+ * @flow
8
+ * @format
9
+ */
10
+
11
+ // flowlint ambiguous-object-type:error
12
+
13
+ 'use strict';
14
+
15
+ const ConnectionHandler = require('./ConnectionHandler');
16
+
17
+ const invariant = require('invariant');
18
+ const warning = require('warning');
19
+
20
+ import type {
21
+ RecordProxy,
22
+ HandleFieldPayload,
23
+ RecordSourceProxy,
24
+ Handler,
25
+ } from '../../store/RelayStoreTypes';
26
+
27
+ const DeleteRecordHandler = {
28
+ update: (store: RecordSourceProxy, payload: HandleFieldPayload) => {
29
+ const record = store.get(payload.dataID);
30
+ if (record != null) {
31
+ const id = record.getValue(payload.fieldKey);
32
+ if (typeof id === 'string') {
33
+ store.delete(id);
34
+ }
35
+ }
36
+ },
37
+ };
38
+
39
+ const AppendEdgeHandler: Handler = {
40
+ update: edgeUpdater(ConnectionHandler.insertEdgeAfter),
41
+ };
42
+
43
+ const PrependEdgeHandler: Handler = {
44
+ update: edgeUpdater(ConnectionHandler.insertEdgeBefore),
45
+ };
46
+
47
+ function edgeUpdater(
48
+ insertFn: (RecordProxy, RecordProxy, ?string) => void,
49
+ ): (RecordSourceProxy, HandleFieldPayload) => void {
50
+ return (store: RecordSourceProxy, payload: HandleFieldPayload) => {
51
+ const record = store.get(payload.dataID);
52
+ if (record == null) {
53
+ return;
54
+ }
55
+ const {connections} = payload.handleArgs;
56
+ invariant(
57
+ connections != null,
58
+ 'MutationHandlers: Expected connection IDs to be specified.',
59
+ );
60
+ const serverEdge = record.getLinkedRecord(payload.fieldKey, payload.args);
61
+ for (const connectionID of connections) {
62
+ const connection = store.get(connectionID);
63
+ if (connection == null) {
64
+ warning(
65
+ false,
66
+ `[Relay][Mutation] The connection with id '${connectionID}' doesn't exist.`,
67
+ );
68
+ continue;
69
+ }
70
+ const clientEdge = ConnectionHandler.buildConnectionEdge(
71
+ store,
72
+ connection,
73
+ serverEdge,
74
+ );
75
+ invariant(
76
+ clientEdge != null,
77
+ 'MutationHandlers: Failed to build the edge.',
78
+ );
79
+ insertFn(connection, clientEdge);
80
+ }
81
+ };
82
+ }
83
+
84
+ module.exports = {
85
+ AppendEdgeHandler,
86
+ DeleteRecordHandler,
87
+ PrependEdgeHandler,
88
+ };
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v8.0.0
2
+ * Relay v10.0.1
3
3
  *
4
4
  * Copyright (c) Facebook, Inc. and its affiliates.
5
5
  *
package/index.js.flow ADDED
@@ -0,0 +1,320 @@
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
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ // flowlint ambiguous-object-type:error
12
+
13
+ 'use strict';
14
+
15
+ const ConnectionHandler = require('./handlers/connection/ConnectionHandler');
16
+ const ConnectionInterface = require('./handlers/connection/ConnectionInterface');
17
+ const GraphQLTag = require('./query/GraphQLTag');
18
+ const MutationHandlers = require('./handlers/connection/MutationHandlers');
19
+ const PreloadableQueryRegistry = require('./query/PreloadableQueryRegistry');
20
+ const RelayConcreteNode = require('./util/RelayConcreteNode');
21
+ const RelayConcreteVariables = require('./store/RelayConcreteVariables');
22
+ const RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
23
+ const RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
24
+ const RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
25
+ const RelayError = require('./util/RelayError');
26
+ const RelayFeatureFlags = require('./util/RelayFeatureFlags');
27
+ const RelayModernEnvironment = require('./store/RelayModernEnvironment');
28
+ const RelayModernOperationDescriptor = require('./store/RelayModernOperationDescriptor');
29
+ const RelayModernRecord = require('./store/RelayModernRecord');
30
+ const RelayModernSelector = require('./store/RelayModernSelector');
31
+ const RelayModernStore = require('./store/RelayModernStore');
32
+ const RelayNetwork = require('./network/RelayNetwork');
33
+ const RelayObservable = require('./network/RelayObservable');
34
+ const RelayOperationTracker = require('./store/RelayOperationTracker');
35
+ const RelayProfiler = require('./util/RelayProfiler');
36
+ const RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
37
+ const RelayRecordSource = require('./store/RelayRecordSource');
38
+ const RelayReplaySubject = require('./util/RelayReplaySubject');
39
+ const RelayStoreUtils = require('./store/RelayStoreUtils');
40
+ const ViewerPattern = require('./store/ViewerPattern');
41
+
42
+ const applyOptimisticMutation = require('./mutations/applyOptimisticMutation');
43
+ const commitLocalUpdate = require('./mutations/commitLocalUpdate');
44
+ const commitMutation = require('./mutations/commitMutation');
45
+ const createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
46
+ const createPayloadFor3DField = require('./util/createPayloadFor3DField');
47
+ const createRelayContext = require('./store/createRelayContext');
48
+ const deepFreeze = require('./util/deepFreeze');
49
+ const fetchQuery = require('./query/fetchQuery');
50
+ const fetchQueryInternal = require('./query/fetchQueryInternal');
51
+ const getFragmentIdentifier = require('./util/getFragmentIdentifier');
52
+ const getRelayHandleKey = require('./util/getRelayHandleKey');
53
+ const getRequestIdentifier = require('./util/getRequestIdentifier');
54
+ const isPromise = require('./util/isPromise');
55
+ const isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
56
+ const isScalarAndEqual = require('./util/isScalarAndEqual');
57
+ const readInlineData = require('./store/readInlineData');
58
+ const recycleNodesInto = require('./util/recycleNodesInto');
59
+ const requestSubscription = require('./subscription/requestSubscription');
60
+ const stableCopy = require('./util/stableCopy');
61
+
62
+ const {
63
+ generateClientID,
64
+ generateUniqueClientID,
65
+ isClientID,
66
+ } = require('./store/ClientID');
67
+
68
+ export type {ConnectionMetadata} from './handlers/connection/ConnectionHandler';
69
+ export type {
70
+ EdgeRecord,
71
+ PageInfo,
72
+ } from './handlers/connection/ConnectionInterface';
73
+ export type {
74
+ DeclarativeMutationConfig,
75
+ MutationType,
76
+ RangeBehaviors,
77
+ RangeOperation,
78
+ } from './mutations/RelayDeclarativeMutationConfig';
79
+ export type {OptimisticMutationConfig} from './mutations/applyOptimisticMutation';
80
+ export type {
81
+ DEPRECATED_MutationConfig,
82
+ MutationConfig,
83
+ MutationParameters,
84
+ } from './mutations/commitMutation';
85
+ export type {
86
+ ExecuteFunction,
87
+ FetchFunction,
88
+ GraphQLResponse,
89
+ GraphQLResponseWithData,
90
+ GraphQLResponseWithoutData,
91
+ GraphQLSingularResponse,
92
+ INetwork,
93
+ LogRequestInfoFunction,
94
+ PayloadData,
95
+ PayloadError,
96
+ SubscribeFunction,
97
+ Uploadable,
98
+ UploadableMap,
99
+ } from './network/RelayNetworkTypes';
100
+ export type {
101
+ ObservableFromValue,
102
+ Observer,
103
+ Subscribable,
104
+ Subscription,
105
+ } from './network/RelayObservable';
106
+ export type {GraphQLTaggedNode} from './query/GraphQLTag';
107
+ export type {EnvironmentConfig} from './store/RelayModernEnvironment';
108
+ export type {TaskScheduler} from './store/RelayModernQueryExecutor';
109
+ export type {RecordState} from './store/RelayRecordState';
110
+ export type {
111
+ FragmentMap,
112
+ FragmentPointer,
113
+ FragmentReference,
114
+ FragmentSpecResolver,
115
+ HandleFieldPayload,
116
+ IEnvironment,
117
+ InvalidationState,
118
+ LogEvent,
119
+ LogFunction,
120
+ MissingFieldHandler,
121
+ ModuleImportPointer,
122
+ NormalizationSelector,
123
+ OperationAvailability,
124
+ OperationDescriptor,
125
+ OperationLoader,
126
+ OperationTracker,
127
+ OptimisticResponseConfig,
128
+ OptimisticUpdate,
129
+ OptimisticUpdateFunction,
130
+ PluralReaderSelector,
131
+ Props,
132
+ PublishQueue,
133
+ ReaderSelector,
134
+ ReadOnlyRecordProxy,
135
+ RecordProxy,
136
+ RecordSourceProxy,
137
+ RecordSourceSelectorProxy,
138
+ RelayContext,
139
+ RequestDescriptor,
140
+ SelectorData,
141
+ SelectorStoreUpdater,
142
+ SingularReaderSelector,
143
+ Snapshot,
144
+ StoreUpdater,
145
+ } from './store/RelayStoreTypes';
146
+ export type {GraphQLSubscriptionConfig} from './subscription/requestSubscription';
147
+ export type {JSResourceReference} from './util/JSResourceTypes.flow';
148
+ export type {
149
+ NormalizationArgument,
150
+ NormalizationDefer,
151
+ NormalizationField,
152
+ NormalizationLinkedField,
153
+ NormalizationLinkedHandle,
154
+ NormalizationLocalArgumentDefinition,
155
+ NormalizationModuleImport,
156
+ NormalizationScalarField,
157
+ NormalizationSelection,
158
+ NormalizationSplitOperation,
159
+ NormalizationStream,
160
+ NormalizationTypeDiscriminator,
161
+ } from './util/NormalizationNode';
162
+ export type {NormalizationOperation} from './util/NormalizationNode';
163
+ export type {
164
+ ReaderArgument,
165
+ ReaderArgumentDefinition,
166
+ ReaderField,
167
+ ReaderFragment,
168
+ ReaderInlineDataFragment,
169
+ ReaderInlineDataFragmentSpread,
170
+ ReaderLinkedField,
171
+ ReaderModuleImport,
172
+ ReaderPaginationMetadata,
173
+ ReaderRefetchableFragment,
174
+ ReaderRefetchMetadata,
175
+ ReaderScalarField,
176
+ ReaderSelection,
177
+ } from './util/ReaderNode';
178
+ export type {
179
+ ConcreteRequest,
180
+ GeneratedNode,
181
+ RequestParameters,
182
+ } from './util/RelayConcreteNode';
183
+ export type {
184
+ CacheConfig,
185
+ DataID,
186
+ Disposable,
187
+ FetchPolicy,
188
+ FetchQueryFetchPolicy,
189
+ OperationType,
190
+ RenderPolicy,
191
+ Variables,
192
+ VariablesOf,
193
+ } from './util/RelayRuntimeTypes';
194
+ export type {Local3DPayload} from './util/createPayloadFor3DField';
195
+
196
+ // As early as possible, check for the existence of the JavaScript globals which
197
+ // Relay Runtime relies upon, and produce a clear message if they do not exist.
198
+ if (__DEV__) {
199
+ const mapStr = typeof Map !== 'function' ? 'Map' : null;
200
+ const setStr = typeof Set !== 'function' ? 'Set' : null;
201
+ const promiseStr = typeof Promise !== 'function' ? 'Promise' : null;
202
+ const objStr = typeof Object.assign !== 'function' ? 'Object.assign' : null;
203
+ if (mapStr || setStr || promiseStr || objStr) {
204
+ throw new Error(
205
+ `relay-runtime requires ${[mapStr, setStr, promiseStr, objStr]
206
+ .filter(Boolean)
207
+ .join(', and ')} to exist. ` +
208
+ 'Use a polyfill to provide these for older browsers.',
209
+ );
210
+ }
211
+ }
212
+
213
+ /**
214
+ * The public interface to Relay Runtime.
215
+ */
216
+ module.exports = {
217
+ // Core API
218
+ Environment: RelayModernEnvironment,
219
+ Network: RelayNetwork,
220
+ Observable: RelayObservable,
221
+ QueryResponseCache: RelayQueryResponseCache,
222
+ RecordSource: RelayRecordSource,
223
+ Record: RelayModernRecord,
224
+ ReplaySubject: RelayReplaySubject,
225
+ Store: RelayModernStore,
226
+
227
+ areEqualSelectors: RelayModernSelector.areEqualSelectors,
228
+ createFragmentSpecResolver: createFragmentSpecResolver,
229
+ createNormalizationSelector: RelayModernSelector.createNormalizationSelector,
230
+ createOperationDescriptor:
231
+ RelayModernOperationDescriptor.createOperationDescriptor,
232
+ createReaderSelector: RelayModernSelector.createReaderSelector,
233
+ createRequestDescriptor:
234
+ RelayModernOperationDescriptor.createRequestDescriptor,
235
+ getDataIDsFromFragment: RelayModernSelector.getDataIDsFromFragment,
236
+ getDataIDsFromObject: RelayModernSelector.getDataIDsFromObject,
237
+ getFragment: GraphQLTag.getFragment,
238
+ getInlineDataFragment: GraphQLTag.getInlineDataFragment,
239
+ getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
240
+ getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
241
+ getPaginationFragment: GraphQLTag.getPaginationFragment,
242
+ getPluralSelector: RelayModernSelector.getPluralSelector,
243
+ getRefetchableFragment: GraphQLTag.getRefetchableFragment,
244
+ getRequest: GraphQLTag.getRequest,
245
+ getRequestIdentifier: getRequestIdentifier,
246
+ getSelector: RelayModernSelector.getSelector,
247
+ getSelectorsFromObject: RelayModernSelector.getSelectorsFromObject,
248
+ getSingularSelector: RelayModernSelector.getSingularSelector,
249
+ getStorageKey: RelayStoreUtils.getStorageKey,
250
+ getVariablesFromFragment: RelayModernSelector.getVariablesFromFragment,
251
+ getVariablesFromObject: RelayModernSelector.getVariablesFromObject,
252
+ getVariablesFromPluralFragment:
253
+ RelayModernSelector.getVariablesFromPluralFragment,
254
+ getVariablesFromSingularFragment:
255
+ RelayModernSelector.getVariablesFromSingularFragment,
256
+ graphql: GraphQLTag.graphql,
257
+ readInlineData,
258
+
259
+ // Declarative mutation API
260
+ MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
261
+ RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
262
+
263
+ // Extensions
264
+ DefaultHandlerProvider: RelayDefaultHandlerProvider,
265
+ ConnectionHandler,
266
+ MutationHandlers,
267
+ VIEWER_ID: ViewerPattern.VIEWER_ID,
268
+ VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
269
+
270
+ // Helpers (can be implemented via the above API)
271
+ applyOptimisticMutation,
272
+ commitLocalUpdate,
273
+ commitMutation,
274
+ fetchQuery,
275
+ isRelayModernEnvironment,
276
+ requestSubscription,
277
+
278
+ // Configuration interface for legacy or special uses
279
+ ConnectionInterface,
280
+
281
+ // Utilities
282
+ PreloadableQueryRegistry,
283
+ RelayProfiler: RelayProfiler,
284
+ createPayloadFor3DField: createPayloadFor3DField,
285
+
286
+ // INTERNAL-ONLY: These exports might be removed at any point.
287
+ RelayConcreteNode: RelayConcreteNode,
288
+ RelayError: RelayError,
289
+ RelayFeatureFlags: RelayFeatureFlags,
290
+ DEFAULT_HANDLE_KEY: RelayDefaultHandleKey.DEFAULT_HANDLE_KEY,
291
+ FRAGMENTS_KEY: RelayStoreUtils.FRAGMENTS_KEY,
292
+ FRAGMENT_OWNER_KEY: RelayStoreUtils.FRAGMENT_OWNER_KEY,
293
+ ID_KEY: RelayStoreUtils.ID_KEY,
294
+ REF_KEY: RelayStoreUtils.REF_KEY,
295
+ REFS_KEY: RelayStoreUtils.REFS_KEY,
296
+ ROOT_ID: RelayStoreUtils.ROOT_ID,
297
+ ROOT_TYPE: RelayStoreUtils.ROOT_TYPE,
298
+ TYPENAME_KEY: RelayStoreUtils.TYPENAME_KEY,
299
+
300
+ deepFreeze: deepFreeze,
301
+ generateClientID: generateClientID,
302
+ generateUniqueClientID: generateUniqueClientID,
303
+ getRelayHandleKey: getRelayHandleKey,
304
+ isClientID: isClientID,
305
+ isPromise: isPromise,
306
+ isScalarAndEqual: isScalarAndEqual,
307
+ recycleNodesInto: recycleNodesInto,
308
+ stableCopy: stableCopy,
309
+ getFragmentIdentifier: getFragmentIdentifier,
310
+ __internal: {
311
+ OperationTracker: RelayOperationTracker,
312
+ createRelayContext: createRelayContext,
313
+ getOperationVariables: RelayConcreteVariables.getOperationVariables,
314
+ fetchQuery: fetchQueryInternal.fetchQuery,
315
+ fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
316
+ getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
317
+ getObservableForActiveRequest:
318
+ fetchQueryInternal.getObservableForActiveRequest,
319
+ },
320
+ };
@@ -10,14 +10,25 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- var RelayConnectionHandler = require('./connection/RelayConnectionHandler');
13
+ var ConnectionHandler = require('./connection/ConnectionHandler');
14
+
15
+ var MutationHandlers = require('./connection/MutationHandlers');
14
16
 
15
17
  var invariant = require("fbjs/lib/invariant");
16
18
 
17
19
  function RelayDefaultHandlerProvider(handle) {
18
20
  switch (handle) {
19
21
  case 'connection':
20
- return RelayConnectionHandler;
22
+ return ConnectionHandler;
23
+
24
+ case 'deleteRecord':
25
+ return MutationHandlers.DeleteRecordHandler;
26
+
27
+ case 'appendEdge':
28
+ return MutationHandlers.AppendEdgeHandler;
29
+
30
+ case 'prependEdge':
31
+ return MutationHandlers.PrependEdgeHandler;
21
32
  }
22
33
 
23
34
  !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayDefaultHandlerProvider: No handler provided for `%s`.', handle) : invariant(false) : void 0;
@@ -10,7 +10,7 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- var RelayConnectionInterface = require('./RelayConnectionInterface');
13
+ var ConnectionInterface = require('./ConnectionInterface');
14
14
 
15
15
  var getRelayHandleKey = require('../../util/getRelayHandleKey');
16
16
 
@@ -33,22 +33,20 @@ var NEXT_EDGE_INDEX = '__connection_next_edge_index';
33
33
  */
34
34
 
35
35
  function update(store, payload) {
36
- var _clientConnectionFiel;
37
-
38
36
  var record = store.get(payload.dataID);
39
37
 
40
38
  if (!record) {
41
39
  return;
42
40
  }
43
41
 
44
- var _RelayConnectionInter = RelayConnectionInterface.get(),
45
- EDGES = _RelayConnectionInter.EDGES,
46
- END_CURSOR = _RelayConnectionInter.END_CURSOR,
47
- HAS_NEXT_PAGE = _RelayConnectionInter.HAS_NEXT_PAGE,
48
- HAS_PREV_PAGE = _RelayConnectionInter.HAS_PREV_PAGE,
49
- PAGE_INFO = _RelayConnectionInter.PAGE_INFO,
50
- PAGE_INFO_TYPE = _RelayConnectionInter.PAGE_INFO_TYPE,
51
- START_CURSOR = _RelayConnectionInter.START_CURSOR;
42
+ var _ConnectionInterface$ = ConnectionInterface.get(),
43
+ EDGES = _ConnectionInterface$.EDGES,
44
+ END_CURSOR = _ConnectionInterface$.END_CURSOR,
45
+ HAS_NEXT_PAGE = _ConnectionInterface$.HAS_NEXT_PAGE,
46
+ HAS_PREV_PAGE = _ConnectionInterface$.HAS_PREV_PAGE,
47
+ PAGE_INFO = _ConnectionInterface$.PAGE_INFO,
48
+ PAGE_INFO_TYPE = _ConnectionInterface$.PAGE_INFO_TYPE,
49
+ START_CURSOR = _ConnectionInterface$.START_CURSOR;
52
50
 
53
51
  var serverConnection = record.getLinkedRecord(payload.fieldKey);
54
52
  var serverPageInfo = serverConnection && serverConnection.getLinkedRecord(PAGE_INFO);
@@ -64,7 +62,7 @@ function update(store, payload) {
64
62
 
65
63
  var clientConnectionID = generateClientID(record.getDataID(), payload.handleKey);
66
64
  var clientConnectionField = record.getLinkedRecord(payload.handleKey);
67
- var clientConnection = (_clientConnectionFiel = clientConnectionField) !== null && _clientConnectionFiel !== void 0 ? _clientConnectionFiel : store.get(clientConnectionID);
65
+ var clientConnection = clientConnectionField !== null && clientConnectionField !== void 0 ? clientConnectionField : store.get(clientConnectionID);
68
66
  var clientPageInfo = clientConnection && clientConnection.getLinkedRecord(PAGE_INFO);
69
67
 
70
68
  if (!clientConnection) {
@@ -139,7 +137,7 @@ function update(store, payload) {
139
137
  mergeEdges(prevEdges, nextEdges, nodeIDs);
140
138
  mergeEdges(_serverEdges, nextEdges, nodeIDs);
141
139
  } else {
142
- process.env.NODE_ENV !== "production" ? warning(false, 'RelayConnectionHandler: Unexpected after cursor `%s`, edges must ' + 'be fetched from the end of the list (`%s`).', args.after, clientPageInfo && clientPageInfo.getValue(END_CURSOR)) : void 0;
140
+ process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Unexpected after cursor `%s`, edges must ' + 'be fetched from the end of the list (`%s`).', args.after, clientPageInfo && clientPageInfo.getValue(END_CURSOR)) : void 0;
143
141
  return;
144
142
  }
145
143
  } else if (args.before != null) {
@@ -150,7 +148,7 @@ function update(store, payload) {
150
148
  mergeEdges(_serverEdges, nextEdges, _nodeIDs);
151
149
  mergeEdges(prevEdges, nextEdges, _nodeIDs);
152
150
  } else {
153
- process.env.NODE_ENV !== "production" ? warning(false, 'RelayConnectionHandler: Unexpected before cursor `%s`, edges must ' + 'be fetched from the beginning of the list (`%s`).', args.before, clientPageInfo && clientPageInfo.getValue(START_CURSOR)) : void 0;
151
+ process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Unexpected before cursor `%s`, edges must ' + 'be fetched from the beginning of the list (`%s`).', args.before, clientPageInfo && clientPageInfo.getValue(START_CURSOR)) : void 0;
154
152
  return;
155
153
  }
156
154
  } else {
@@ -221,7 +219,7 @@ function update(store, payload) {
221
219
  * ```
222
220
  * store => {
223
221
  * const user = store.get('<id>');
224
- * const friends = RelayConnectionHandler.getConnection(user, 'FriendsFragment_friends');
222
+ * const friends = ConnectionHandler.getConnection(user, 'FriendsFragment_friends');
225
223
  * // Access fields on the connection:
226
224
  * const edges = friends.getLinkedRecords('edges');
227
225
  * }
@@ -265,18 +263,18 @@ function getConnection(record, key, filters) {
265
263
  * ```
266
264
  * store => {
267
265
  * const user = store.get('<id>');
268
- * const friends = RelayConnectionHandler.getConnection(user, 'FriendsFragment_friends');
266
+ * const friends = ConnectionHandler.getConnection(user, 'FriendsFragment_friends');
269
267
  * const edge = store.create('<edge-id>', 'FriendsEdge');
270
- * RelayConnectionHandler.insertEdgeAfter(friends, edge);
268
+ * ConnectionHandler.insertEdgeAfter(friends, edge);
271
269
  * }
272
270
  * ```
273
271
  */
274
272
 
275
273
 
276
274
  function insertEdgeAfter(record, newEdge, cursor) {
277
- var _RelayConnectionInter2 = RelayConnectionInterface.get(),
278
- CURSOR = _RelayConnectionInter2.CURSOR,
279
- EDGES = _RelayConnectionInter2.EDGES;
275
+ var _ConnectionInterface$2 = ConnectionInterface.get(),
276
+ CURSOR = _ConnectionInterface$2.CURSOR,
277
+ EDGES = _ConnectionInterface$2.EDGES;
280
278
 
281
279
  var edges = record.getLinkedRecords(EDGES);
282
280
 
@@ -324,8 +322,8 @@ function insertEdgeAfter(record, newEdge, cursor) {
324
322
 
325
323
 
326
324
  function createEdge(store, record, node, edgeType) {
327
- var _RelayConnectionInter3 = RelayConnectionInterface.get(),
328
- NODE = _RelayConnectionInter3.NODE; // An index-based client ID could easily conflict (unless it was
325
+ var _ConnectionInterface$3 = ConnectionInterface.get(),
326
+ NODE = _ConnectionInterface$3.NODE; // An index-based client ID could easily conflict (unless it was
329
327
  // auto-incrementing, but there is nowhere to the store the id)
330
328
  // Instead, construct a client ID based on the connection ID and node ID,
331
329
  // which will only conflict if the same node is added to the same connection
@@ -371,18 +369,18 @@ function createEdge(store, record, node, edgeType) {
371
369
  * ```
372
370
  * store => {
373
371
  * const user = store.get('<id>');
374
- * const friends = RelayConnectionHandler.getConnection(user, 'FriendsFragment_friends');
372
+ * const friends = ConnectionHandler.getConnection(user, 'FriendsFragment_friends');
375
373
  * const edge = store.create('<edge-id>', 'FriendsEdge');
376
- * RelayConnectionHandler.insertEdgeBefore(friends, edge);
374
+ * ConnectionHandler.insertEdgeBefore(friends, edge);
377
375
  * }
378
376
  * ```
379
377
  */
380
378
 
381
379
 
382
380
  function insertEdgeBefore(record, newEdge, cursor) {
383
- var _RelayConnectionInter4 = RelayConnectionInterface.get(),
384
- CURSOR = _RelayConnectionInter4.CURSOR,
385
- EDGES = _RelayConnectionInter4.EDGES;
381
+ var _ConnectionInterface$4 = ConnectionInterface.get(),
382
+ CURSOR = _ConnectionInterface$4.CURSOR,
383
+ EDGES = _ConnectionInterface$4.EDGES;
386
384
 
387
385
  var edges = record.getLinkedRecords(EDGES);
388
386
 
@@ -429,9 +427,9 @@ function insertEdgeBefore(record, newEdge, cursor) {
429
427
 
430
428
 
431
429
  function deleteNode(record, nodeID) {
432
- var _RelayConnectionInter5 = RelayConnectionInterface.get(),
433
- EDGES = _RelayConnectionInter5.EDGES,
434
- NODE = _RelayConnectionInter5.NODE;
430
+ var _ConnectionInterface$5 = ConnectionInterface.get(),
431
+ EDGES = _ConnectionInterface$5.EDGES,
432
+ NODE = _ConnectionInterface$5.NODE;
435
433
 
436
434
  var edges = record.getLinkedRecords(EDGES);
437
435
 
@@ -478,11 +476,11 @@ function buildConnectionEdge(store, connection, edge) {
478
476
  return edge;
479
477
  }
480
478
 
481
- var _RelayConnectionInter6 = RelayConnectionInterface.get(),
482
- EDGES = _RelayConnectionInter6.EDGES;
479
+ var _ConnectionInterface$6 = ConnectionInterface.get(),
480
+ EDGES = _ConnectionInterface$6.EDGES;
483
481
 
484
482
  var edgeIndex = connection.getValue(NEXT_EDGE_INDEX);
485
- !(typeof edgeIndex === 'number') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayConnectionHandler: Expected %s to be a number, got `%s`.', NEXT_EDGE_INDEX, edgeIndex) : invariant(false) : void 0;
483
+ !(typeof edgeIndex === 'number') ? process.env.NODE_ENV !== "production" ? invariant(false, 'ConnectionHandler: Expected %s to be a number, got `%s`.', NEXT_EDGE_INDEX, edgeIndex) : invariant(false) : void 0;
486
484
  var edgeID = generateClientID(connection.getDataID(), EDGES, edgeIndex);
487
485
  var connectionEdge = store.create(edgeID, edge.getType());
488
486
  connectionEdge.copyFieldsFrom(edge);
@@ -498,8 +496,8 @@ function buildConnectionEdge(store, connection, edge) {
498
496
 
499
497
 
500
498
  function mergeEdges(sourceEdges, targetEdges, nodeIDs) {
501
- var _RelayConnectionInter7 = RelayConnectionInterface.get(),
502
- NODE = _RelayConnectionInter7.NODE;
499
+ var _ConnectionInterface$7 = ConnectionInterface.get(),
500
+ NODE = _ConnectionInterface$7.NODE;
503
501
 
504
502
  for (var ii = 0; ii < sourceEdges.length; ii++) {
505
503
  var edge = sourceEdges[ii];
@@ -36,7 +36,7 @@ var config = {
36
36
  * Defines logic relevant to the informal "Connection" GraphQL interface.
37
37
  */
38
38
 
39
- var RelayConnectionInterface = {
39
+ var ConnectionInterface = {
40
40
  inject: function inject(newConfig) {
41
41
  config = newConfig;
42
42
  },
@@ -53,4 +53,4 @@ var RelayConnectionInterface = {
53
53
  return CONNECTION_CALLS.hasOwnProperty(call.name);
54
54
  }
55
55
  };
56
- module.exports = RelayConnectionInterface;
56
+ module.exports = ConnectionInterface;