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