relay-runtime 9.0.0 → 10.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 +47 -0
- package/handlers/connection/ConnectionHandler.js.flow +549 -0
- package/handlers/connection/ConnectionInterface.js.flow +92 -0
- package/handlers/connection/MutationHandlers.js.flow +199 -0
- package/index.js +1 -1
- package/index.js.flow +335 -0
- package/lib/handlers/RelayDefaultHandlerProvider.js +20 -0
- package/lib/handlers/connection/ConnectionHandler.js +1 -3
- package/lib/handlers/connection/MutationHandlers.js +212 -0
- package/lib/index.js +14 -2
- package/lib/mutations/RelayDeclarativeMutationConfig.js +22 -45
- package/lib/mutations/RelayRecordProxy.js +1 -3
- package/lib/mutations/RelayRecordSourceMutator.js +1 -3
- package/lib/mutations/RelayRecordSourceProxy.js +1 -3
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -3
- package/lib/mutations/commitMutation.js +2 -3
- package/lib/mutations/validateMutation.js +40 -9
- package/lib/network/RelayObservable.js +9 -9
- package/lib/network/RelayQueryResponseCache.js +8 -6
- package/lib/query/GraphQLTag.js +2 -1
- package/lib/query/PreloadableQueryRegistry.js +70 -0
- package/lib/query/fetchQuery.js +2 -3
- package/lib/query/fetchQueryInternal.js +5 -14
- package/lib/store/DataChecker.js +200 -71
- package/lib/store/RelayConcreteVariables.js +6 -2
- package/lib/store/RelayModernEnvironment.js +124 -65
- package/lib/store/RelayModernFragmentSpecResolver.js +19 -14
- package/lib/store/RelayModernOperationDescriptor.js +6 -5
- package/lib/store/RelayModernQueryExecutor.js +122 -73
- package/lib/store/RelayModernRecord.js +14 -9
- package/lib/store/RelayModernSelector.js +6 -2
- package/lib/store/RelayModernStore.js +281 -131
- package/lib/store/RelayOperationTracker.js +35 -78
- package/lib/store/RelayOptimisticRecordSource.js +7 -5
- package/lib/store/RelayPublishQueue.js +2 -4
- package/lib/store/RelayReader.js +304 -52
- package/lib/store/RelayRecordSource.js +1 -3
- package/lib/store/RelayRecordSourceMapImpl.js +13 -18
- package/lib/store/RelayReferenceMarker.js +125 -14
- package/lib/store/RelayResponseNormalizer.js +261 -66
- package/lib/store/RelayStoreReactFlightUtils.js +47 -0
- package/lib/store/RelayStoreUtils.js +1 -0
- package/lib/store/StoreInspector.js +8 -8
- package/lib/store/TypeID.js +28 -0
- package/lib/store/cloneRelayScalarHandleSourceField.js +44 -0
- package/lib/store/defaultRequiredFieldLogger.js +18 -0
- package/lib/store/normalizeRelayPayload.js +6 -2
- package/lib/store/readInlineData.js +1 -1
- package/lib/subscription/requestSubscription.js +4 -3
- package/lib/util/NormalizationNode.js +1 -5
- package/lib/util/RelayConcreteNode.js +11 -6
- package/lib/util/RelayError.js +39 -9
- package/lib/util/RelayFeatureFlags.js +6 -3
- package/lib/util/RelayReplaySubject.js +3 -3
- package/lib/util/createPayloadFor3DField.js +7 -2
- package/lib/util/getFragmentIdentifier.js +12 -3
- package/lib/util/getOperation.js +33 -0
- package/lib/util/getRequestIdentifier.js +2 -2
- package/lib/util/isEmptyObject.js +25 -0
- package/lib/util/recycleNodesInto.js +6 -7
- package/lib/util/reportMissingRequiredFields.js +48 -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 +181 -0
- package/mutations/validateMutation.js.flow +242 -0
- package/network/ConvertToExecuteFunction.js.flow +49 -0
- package/network/RelayNetwork.js.flow +84 -0
- package/network/RelayNetworkTypes.js.flow +145 -0
- package/network/RelayObservable.js.flow +634 -0
- package/network/RelayQueryResponseCache.js.flow +111 -0
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +168 -0
- package/query/PreloadableQueryRegistry.js.flow +65 -0
- package/query/fetchQuery.js.flow +47 -0
- package/query/fetchQueryInternal.js.flow +343 -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 +568 -0
- package/store/RelayConcreteVariables.js.flow +96 -0
- package/store/RelayModernEnvironment.js.flow +571 -0
- package/store/RelayModernFragmentSpecResolver.js.flow +438 -0
- package/store/RelayModernOperationDescriptor.js.flow +92 -0
- package/store/RelayModernQueryExecutor.js.flow +1345 -0
- package/store/RelayModernRecord.js.flow +403 -0
- package/store/RelayModernSelector.js.flow +455 -0
- package/store/RelayModernStore.js.flow +858 -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 +638 -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 +324 -0
- package/store/RelayResponseNormalizer.js.flow +791 -0
- package/store/RelayStoreReactFlightUtils.js.flow +64 -0
- package/store/RelayStoreTypes.js.flow +958 -0
- package/store/RelayStoreUtils.js.flow +219 -0
- package/store/StoreInspector.js.flow +171 -0
- package/store/TypeID.js.flow +28 -0
- package/store/ViewerPattern.js.flow +26 -0
- package/store/cloneRelayHandleSourceField.js.flow +66 -0
- package/store/cloneRelayScalarHandleSourceField.js.flow +62 -0
- package/store/createFragmentSpecResolver.js.flow +55 -0
- package/store/createRelayContext.js.flow +44 -0
- package/store/defaultGetDataID.js.flow +27 -0
- package/store/defaultRequiredFieldLogger.js.flow +23 -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 +103 -0
- package/util/JSResourceTypes.flow.js.flow +20 -0
- package/util/NormalizationNode.js.flow +213 -0
- package/util/ReaderNode.js.flow +227 -0
- package/util/RelayConcreteNode.js.flow +99 -0
- package/util/RelayDefaultHandleKey.js.flow +17 -0
- package/util/RelayError.js.flow +62 -0
- package/util/RelayFeatureFlags.js.flow +37 -0
- package/util/RelayProfiler.js.flow +284 -0
- package/util/RelayReplaySubject.js.flow +135 -0
- package/util/RelayRuntimeTypes.js.flow +72 -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 +76 -0
- package/util/getOperation.js.flow +40 -0
- package/util/getRelayHandleKey.js.flow +41 -0
- package/util/getRequestIdentifier.js.flow +42 -0
- package/util/isEmptyObject.js.flow +25 -0
- package/util/isPromise.js.flow +21 -0
- package/util/isScalarAndEqual.js.flow +26 -0
- package/util/recycleNodesInto.js.flow +87 -0
- package/util/reportMissingRequiredFields.js.flow +51 -0
- package/util/resolveImmediate.js.flow +30 -0
- package/util/stableCopy.js.flow +35 -0
|
@@ -0,0 +1,199 @@
|
|
|
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
|
+
|
|
31
|
+
if (record != null) {
|
|
32
|
+
const idOrIds = record.getValue(payload.fieldKey);
|
|
33
|
+
|
|
34
|
+
if (typeof idOrIds === 'string') {
|
|
35
|
+
store.delete(idOrIds);
|
|
36
|
+
} else if (Array.isArray(idOrIds)) {
|
|
37
|
+
idOrIds.forEach(id => {
|
|
38
|
+
if (typeof id === 'string') {
|
|
39
|
+
store.delete(id);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const DeleteEdgeHandler = {
|
|
48
|
+
update: (store: RecordSourceProxy, payload: HandleFieldPayload) => {
|
|
49
|
+
const record = store.get(payload.dataID);
|
|
50
|
+
if (record == null) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const {connections} = payload.handleArgs;
|
|
54
|
+
invariant(
|
|
55
|
+
connections != null,
|
|
56
|
+
'MutationHandlers: Expected connection IDs to be specified.',
|
|
57
|
+
);
|
|
58
|
+
const idOrIds = record.getValue(payload.fieldKey);
|
|
59
|
+
const idList = Array.isArray(idOrIds) ? idOrIds : [idOrIds];
|
|
60
|
+
idList.forEach(id => {
|
|
61
|
+
if (typeof id === 'string') {
|
|
62
|
+
for (const connectionID of connections) {
|
|
63
|
+
const connection = store.get(connectionID);
|
|
64
|
+
if (connection == null) {
|
|
65
|
+
warning(
|
|
66
|
+
false,
|
|
67
|
+
`[Relay][Mutation] The connection with id '${connectionID}' doesn't exist.`,
|
|
68
|
+
);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
ConnectionHandler.deleteNode(connection, id);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const AppendEdgeHandler: Handler = {
|
|
79
|
+
update: edgeUpdater(ConnectionHandler.insertEdgeAfter),
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const PrependEdgeHandler: Handler = {
|
|
83
|
+
update: edgeUpdater(ConnectionHandler.insertEdgeBefore),
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const AppendNodeHandler: Handler = {
|
|
87
|
+
update: nodeUpdater(ConnectionHandler.insertEdgeAfter),
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const PrependNodeHandler: Handler = {
|
|
91
|
+
update: nodeUpdater(ConnectionHandler.insertEdgeBefore),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
function edgeUpdater(
|
|
95
|
+
insertFn: (RecordProxy, RecordProxy, ?string) => void,
|
|
96
|
+
): (RecordSourceProxy, HandleFieldPayload) => void {
|
|
97
|
+
return (store: RecordSourceProxy, payload: HandleFieldPayload) => {
|
|
98
|
+
const record = store.get(payload.dataID);
|
|
99
|
+
if (record == null) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const {connections} = payload.handleArgs;
|
|
103
|
+
invariant(
|
|
104
|
+
connections != null,
|
|
105
|
+
'MutationHandlers: Expected connection IDs to be specified.',
|
|
106
|
+
);
|
|
107
|
+
const serverEdge = record.getLinkedRecord(payload.fieldKey, payload.args);
|
|
108
|
+
for (const connectionID of connections) {
|
|
109
|
+
const connection = store.get(connectionID);
|
|
110
|
+
if (connection == null) {
|
|
111
|
+
warning(
|
|
112
|
+
false,
|
|
113
|
+
`[Relay][Mutation] The connection with id '${connectionID}' doesn't exist.`,
|
|
114
|
+
);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const clientEdge = ConnectionHandler.buildConnectionEdge(
|
|
118
|
+
store,
|
|
119
|
+
connection,
|
|
120
|
+
serverEdge,
|
|
121
|
+
);
|
|
122
|
+
invariant(
|
|
123
|
+
clientEdge != null,
|
|
124
|
+
'MutationHandlers: Failed to build the edge.',
|
|
125
|
+
);
|
|
126
|
+
insertFn(connection, clientEdge);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function nodeUpdater(
|
|
132
|
+
insertFn: (RecordProxy, RecordProxy, ?string) => void,
|
|
133
|
+
): (RecordSourceProxy, HandleFieldPayload) => void {
|
|
134
|
+
return (store: RecordSourceProxy, payload: HandleFieldPayload) => {
|
|
135
|
+
const record = store.get(payload.dataID);
|
|
136
|
+
if (record == null) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const {connections, edgeTypeName} = payload.handleArgs;
|
|
140
|
+
invariant(
|
|
141
|
+
connections != null,
|
|
142
|
+
'MutationHandlers: Expected connection IDs to be specified.',
|
|
143
|
+
);
|
|
144
|
+
invariant(
|
|
145
|
+
edgeTypeName != null,
|
|
146
|
+
'MutationHandlers: Expected edge typename to be specified.',
|
|
147
|
+
);
|
|
148
|
+
let singleServerNode;
|
|
149
|
+
let serverNodes;
|
|
150
|
+
try {
|
|
151
|
+
singleServerNode = record.getLinkedRecord(payload.fieldKey, payload.args);
|
|
152
|
+
} catch {}
|
|
153
|
+
if (!singleServerNode) {
|
|
154
|
+
try {
|
|
155
|
+
serverNodes = record.getLinkedRecords(payload.fieldKey, payload.args);
|
|
156
|
+
} catch {}
|
|
157
|
+
}
|
|
158
|
+
invariant(
|
|
159
|
+
singleServerNode != null || serverNodes != null,
|
|
160
|
+
'MutationHandlers: Expected target node to exist.',
|
|
161
|
+
);
|
|
162
|
+
const serverNodeList = serverNodes ?? [singleServerNode];
|
|
163
|
+
for (const serverNode of serverNodeList) {
|
|
164
|
+
if (serverNode == null) {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
for (const connectionID of connections) {
|
|
168
|
+
const connection = store.get(connectionID);
|
|
169
|
+
if (connection == null) {
|
|
170
|
+
warning(
|
|
171
|
+
false,
|
|
172
|
+
`[Relay][Mutation] The connection with id '${connectionID}' doesn't exist.`,
|
|
173
|
+
);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const clientEdge = ConnectionHandler.createEdge(
|
|
177
|
+
store,
|
|
178
|
+
connection,
|
|
179
|
+
serverNode,
|
|
180
|
+
edgeTypeName,
|
|
181
|
+
);
|
|
182
|
+
invariant(
|
|
183
|
+
clientEdge != null,
|
|
184
|
+
'MutationHandlers: Failed to build the edge.',
|
|
185
|
+
);
|
|
186
|
+
insertFn(connection, clientEdge);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
module.exports = {
|
|
193
|
+
AppendEdgeHandler,
|
|
194
|
+
DeleteRecordHandler,
|
|
195
|
+
PrependEdgeHandler,
|
|
196
|
+
AppendNodeHandler,
|
|
197
|
+
PrependNodeHandler,
|
|
198
|
+
DeleteEdgeHandler,
|
|
199
|
+
};
|
package/index.js
CHANGED
package/index.js.flow
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
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 reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
|
|
60
|
+
const requestSubscription = require('./subscription/requestSubscription');
|
|
61
|
+
const stableCopy = require('./util/stableCopy');
|
|
62
|
+
|
|
63
|
+
const {
|
|
64
|
+
generateClientID,
|
|
65
|
+
generateUniqueClientID,
|
|
66
|
+
isClientID,
|
|
67
|
+
} = require('./store/ClientID');
|
|
68
|
+
|
|
69
|
+
export type {ConnectionMetadata} from './handlers/connection/ConnectionHandler';
|
|
70
|
+
export type {
|
|
71
|
+
EdgeRecord,
|
|
72
|
+
PageInfo,
|
|
73
|
+
} from './handlers/connection/ConnectionInterface';
|
|
74
|
+
export type {
|
|
75
|
+
DeclarativeMutationConfig,
|
|
76
|
+
MutationType,
|
|
77
|
+
RangeBehaviors,
|
|
78
|
+
RangeOperation,
|
|
79
|
+
} from './mutations/RelayDeclarativeMutationConfig';
|
|
80
|
+
export type {OptimisticMutationConfig} from './mutations/applyOptimisticMutation';
|
|
81
|
+
export type {
|
|
82
|
+
DEPRECATED_MutationConfig,
|
|
83
|
+
MutationConfig,
|
|
84
|
+
MutationParameters,
|
|
85
|
+
} from './mutations/commitMutation';
|
|
86
|
+
export type {
|
|
87
|
+
ExecuteFunction,
|
|
88
|
+
FetchFunction,
|
|
89
|
+
GraphQLResponse,
|
|
90
|
+
GraphQLResponseWithData,
|
|
91
|
+
GraphQLResponseWithoutData,
|
|
92
|
+
GraphQLSingularResponse,
|
|
93
|
+
INetwork,
|
|
94
|
+
LogRequestInfoFunction,
|
|
95
|
+
PayloadData,
|
|
96
|
+
PayloadError,
|
|
97
|
+
ReactFlightPayloadData,
|
|
98
|
+
ReactFlightPayloadQuery,
|
|
99
|
+
ReactFlightServerTree,
|
|
100
|
+
SubscribeFunction,
|
|
101
|
+
Uploadable,
|
|
102
|
+
UploadableMap,
|
|
103
|
+
} from './network/RelayNetworkTypes';
|
|
104
|
+
export type {
|
|
105
|
+
ObservableFromValue,
|
|
106
|
+
Observer,
|
|
107
|
+
Subscribable,
|
|
108
|
+
Subscription,
|
|
109
|
+
} from './network/RelayObservable';
|
|
110
|
+
export type {GraphQLTaggedNode} from './query/GraphQLTag';
|
|
111
|
+
export type {EnvironmentConfig} from './store/RelayModernEnvironment';
|
|
112
|
+
export type {TaskScheduler} from './store/RelayModernQueryExecutor';
|
|
113
|
+
export type {RecordState} from './store/RelayRecordState';
|
|
114
|
+
export type {
|
|
115
|
+
FragmentMap,
|
|
116
|
+
FragmentReference,
|
|
117
|
+
FragmentSpecResolver,
|
|
118
|
+
HandleFieldPayload,
|
|
119
|
+
IEnvironment,
|
|
120
|
+
InvalidationState,
|
|
121
|
+
LogEvent,
|
|
122
|
+
LogFunction,
|
|
123
|
+
MissingFieldHandler,
|
|
124
|
+
MissingRequiredFields,
|
|
125
|
+
ModuleImportPointer,
|
|
126
|
+
NormalizationSelector,
|
|
127
|
+
OperationAvailability,
|
|
128
|
+
OperationDescriptor,
|
|
129
|
+
OperationLoader,
|
|
130
|
+
OperationTracker,
|
|
131
|
+
OptimisticResponseConfig,
|
|
132
|
+
OptimisticUpdate,
|
|
133
|
+
OptimisticUpdateFunction,
|
|
134
|
+
PluralReaderSelector,
|
|
135
|
+
Props,
|
|
136
|
+
PublishQueue,
|
|
137
|
+
ReactFlightPayloadDeserializer,
|
|
138
|
+
ReactFlightClientResponse,
|
|
139
|
+
ReaderSelector,
|
|
140
|
+
ReadOnlyRecordProxy,
|
|
141
|
+
RecordProxy,
|
|
142
|
+
RecordSourceProxy,
|
|
143
|
+
RecordSourceSelectorProxy,
|
|
144
|
+
RelayContext,
|
|
145
|
+
RequestDescriptor,
|
|
146
|
+
SelectorData,
|
|
147
|
+
SelectorStoreUpdater,
|
|
148
|
+
SingularReaderSelector,
|
|
149
|
+
Snapshot,
|
|
150
|
+
StoreUpdater,
|
|
151
|
+
} from './store/RelayStoreTypes';
|
|
152
|
+
export type {GraphQLSubscriptionConfig} from './subscription/requestSubscription';
|
|
153
|
+
export type {JSResourceReference} from './util/JSResourceTypes.flow';
|
|
154
|
+
export type {
|
|
155
|
+
NormalizationArgument,
|
|
156
|
+
NormalizationDefer,
|
|
157
|
+
NormalizationField,
|
|
158
|
+
NormalizationFlightField,
|
|
159
|
+
NormalizationLinkedField,
|
|
160
|
+
NormalizationLinkedHandle,
|
|
161
|
+
NormalizationLocalArgumentDefinition,
|
|
162
|
+
NormalizationModuleImport,
|
|
163
|
+
NormalizationScalarField,
|
|
164
|
+
NormalizationSelection,
|
|
165
|
+
NormalizationSplitOperation,
|
|
166
|
+
NormalizationStream,
|
|
167
|
+
NormalizationTypeDiscriminator,
|
|
168
|
+
} from './util/NormalizationNode';
|
|
169
|
+
export type {NormalizationOperation} from './util/NormalizationNode';
|
|
170
|
+
export type {
|
|
171
|
+
ReaderArgument,
|
|
172
|
+
ReaderArgumentDefinition,
|
|
173
|
+
ReaderField,
|
|
174
|
+
ReaderFlightField,
|
|
175
|
+
ReaderFragment,
|
|
176
|
+
ReaderInlineDataFragment,
|
|
177
|
+
ReaderInlineDataFragmentSpread,
|
|
178
|
+
ReaderLinkedField,
|
|
179
|
+
ReaderModuleImport,
|
|
180
|
+
ReaderPaginationMetadata,
|
|
181
|
+
ReaderRefetchableFragment,
|
|
182
|
+
ReaderRefetchMetadata,
|
|
183
|
+
ReaderRequiredField,
|
|
184
|
+
ReaderScalarField,
|
|
185
|
+
ReaderSelection,
|
|
186
|
+
RequiredFieldAction,
|
|
187
|
+
} from './util/ReaderNode';
|
|
188
|
+
export type {
|
|
189
|
+
ConcreteRequest,
|
|
190
|
+
GeneratedNode,
|
|
191
|
+
RequestParameters,
|
|
192
|
+
} from './util/RelayConcreteNode';
|
|
193
|
+
export type {
|
|
194
|
+
CacheConfig,
|
|
195
|
+
DataID,
|
|
196
|
+
Disposable,
|
|
197
|
+
FetchPolicy,
|
|
198
|
+
FetchQueryFetchPolicy,
|
|
199
|
+
OperationType,
|
|
200
|
+
RenderPolicy,
|
|
201
|
+
Variables,
|
|
202
|
+
VariablesOf,
|
|
203
|
+
} from './util/RelayRuntimeTypes';
|
|
204
|
+
export type {Local3DPayload} from './util/createPayloadFor3DField';
|
|
205
|
+
|
|
206
|
+
// As early as possible, check for the existence of the JavaScript globals which
|
|
207
|
+
// Relay Runtime relies upon, and produce a clear message if they do not exist.
|
|
208
|
+
if (__DEV__) {
|
|
209
|
+
const mapStr = typeof Map !== 'function' ? 'Map' : null;
|
|
210
|
+
const setStr = typeof Set !== 'function' ? 'Set' : null;
|
|
211
|
+
const promiseStr = typeof Promise !== 'function' ? 'Promise' : null;
|
|
212
|
+
const objStr = typeof Object.assign !== 'function' ? 'Object.assign' : null;
|
|
213
|
+
if (mapStr || setStr || promiseStr || objStr) {
|
|
214
|
+
throw new Error(
|
|
215
|
+
`relay-runtime requires ${[mapStr, setStr, promiseStr, objStr]
|
|
216
|
+
.filter(Boolean)
|
|
217
|
+
.join(', and ')} to exist. ` +
|
|
218
|
+
'Use a polyfill to provide these for older browsers.',
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* The public interface to Relay Runtime.
|
|
225
|
+
*/
|
|
226
|
+
module.exports = {
|
|
227
|
+
// Core API
|
|
228
|
+
Environment: RelayModernEnvironment,
|
|
229
|
+
Network: RelayNetwork,
|
|
230
|
+
Observable: RelayObservable,
|
|
231
|
+
QueryResponseCache: RelayQueryResponseCache,
|
|
232
|
+
RecordSource: RelayRecordSource,
|
|
233
|
+
Record: RelayModernRecord,
|
|
234
|
+
ReplaySubject: RelayReplaySubject,
|
|
235
|
+
Store: RelayModernStore,
|
|
236
|
+
|
|
237
|
+
areEqualSelectors: RelayModernSelector.areEqualSelectors,
|
|
238
|
+
createFragmentSpecResolver: createFragmentSpecResolver,
|
|
239
|
+
createNormalizationSelector: RelayModernSelector.createNormalizationSelector,
|
|
240
|
+
createOperationDescriptor:
|
|
241
|
+
RelayModernOperationDescriptor.createOperationDescriptor,
|
|
242
|
+
createReaderSelector: RelayModernSelector.createReaderSelector,
|
|
243
|
+
createRequestDescriptor:
|
|
244
|
+
RelayModernOperationDescriptor.createRequestDescriptor,
|
|
245
|
+
getDataIDsFromFragment: RelayModernSelector.getDataIDsFromFragment,
|
|
246
|
+
getDataIDsFromObject: RelayModernSelector.getDataIDsFromObject,
|
|
247
|
+
getNode: GraphQLTag.getNode,
|
|
248
|
+
getFragment: GraphQLTag.getFragment,
|
|
249
|
+
getInlineDataFragment: GraphQLTag.getInlineDataFragment,
|
|
250
|
+
getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
|
|
251
|
+
getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
|
|
252
|
+
getPaginationFragment: GraphQLTag.getPaginationFragment,
|
|
253
|
+
getPluralSelector: RelayModernSelector.getPluralSelector,
|
|
254
|
+
getRefetchableFragment: GraphQLTag.getRefetchableFragment,
|
|
255
|
+
getRequest: GraphQLTag.getRequest,
|
|
256
|
+
getRequestIdentifier: getRequestIdentifier,
|
|
257
|
+
getSelector: RelayModernSelector.getSelector,
|
|
258
|
+
getSelectorsFromObject: RelayModernSelector.getSelectorsFromObject,
|
|
259
|
+
getSingularSelector: RelayModernSelector.getSingularSelector,
|
|
260
|
+
getStorageKey: RelayStoreUtils.getStorageKey,
|
|
261
|
+
getVariablesFromFragment: RelayModernSelector.getVariablesFromFragment,
|
|
262
|
+
getVariablesFromObject: RelayModernSelector.getVariablesFromObject,
|
|
263
|
+
getVariablesFromPluralFragment:
|
|
264
|
+
RelayModernSelector.getVariablesFromPluralFragment,
|
|
265
|
+
getVariablesFromSingularFragment:
|
|
266
|
+
RelayModernSelector.getVariablesFromSingularFragment,
|
|
267
|
+
reportMissingRequiredFields,
|
|
268
|
+
graphql: GraphQLTag.graphql,
|
|
269
|
+
isFragment: GraphQLTag.isFragment,
|
|
270
|
+
isInlineDataFragment: GraphQLTag.isInlineDataFragment,
|
|
271
|
+
isRequest: GraphQLTag.isRequest,
|
|
272
|
+
readInlineData,
|
|
273
|
+
|
|
274
|
+
// Declarative mutation API
|
|
275
|
+
MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
|
|
276
|
+
RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
|
|
277
|
+
|
|
278
|
+
// Extensions
|
|
279
|
+
DefaultHandlerProvider: RelayDefaultHandlerProvider,
|
|
280
|
+
ConnectionHandler,
|
|
281
|
+
MutationHandlers,
|
|
282
|
+
VIEWER_ID: ViewerPattern.VIEWER_ID,
|
|
283
|
+
VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
|
|
284
|
+
|
|
285
|
+
// Helpers (can be implemented via the above API)
|
|
286
|
+
applyOptimisticMutation,
|
|
287
|
+
commitLocalUpdate,
|
|
288
|
+
commitMutation,
|
|
289
|
+
fetchQuery,
|
|
290
|
+
isRelayModernEnvironment,
|
|
291
|
+
requestSubscription,
|
|
292
|
+
|
|
293
|
+
// Configuration interface for legacy or special uses
|
|
294
|
+
ConnectionInterface,
|
|
295
|
+
|
|
296
|
+
// Utilities
|
|
297
|
+
PreloadableQueryRegistry,
|
|
298
|
+
RelayProfiler: RelayProfiler,
|
|
299
|
+
createPayloadFor3DField: createPayloadFor3DField,
|
|
300
|
+
|
|
301
|
+
// INTERNAL-ONLY: These exports might be removed at any point.
|
|
302
|
+
RelayConcreteNode: RelayConcreteNode,
|
|
303
|
+
RelayError: RelayError,
|
|
304
|
+
RelayFeatureFlags: RelayFeatureFlags,
|
|
305
|
+
DEFAULT_HANDLE_KEY: RelayDefaultHandleKey.DEFAULT_HANDLE_KEY,
|
|
306
|
+
FRAGMENTS_KEY: RelayStoreUtils.FRAGMENTS_KEY,
|
|
307
|
+
FRAGMENT_OWNER_KEY: RelayStoreUtils.FRAGMENT_OWNER_KEY,
|
|
308
|
+
ID_KEY: RelayStoreUtils.ID_KEY,
|
|
309
|
+
REF_KEY: RelayStoreUtils.REF_KEY,
|
|
310
|
+
REFS_KEY: RelayStoreUtils.REFS_KEY,
|
|
311
|
+
ROOT_ID: RelayStoreUtils.ROOT_ID,
|
|
312
|
+
ROOT_TYPE: RelayStoreUtils.ROOT_TYPE,
|
|
313
|
+
TYPENAME_KEY: RelayStoreUtils.TYPENAME_KEY,
|
|
314
|
+
|
|
315
|
+
deepFreeze: deepFreeze,
|
|
316
|
+
generateClientID: generateClientID,
|
|
317
|
+
generateUniqueClientID: generateUniqueClientID,
|
|
318
|
+
getRelayHandleKey: getRelayHandleKey,
|
|
319
|
+
isClientID: isClientID,
|
|
320
|
+
isPromise: isPromise,
|
|
321
|
+
isScalarAndEqual: isScalarAndEqual,
|
|
322
|
+
recycleNodesInto: recycleNodesInto,
|
|
323
|
+
stableCopy: stableCopy,
|
|
324
|
+
getFragmentIdentifier: getFragmentIdentifier,
|
|
325
|
+
__internal: {
|
|
326
|
+
OperationTracker: RelayOperationTracker,
|
|
327
|
+
createRelayContext: createRelayContext,
|
|
328
|
+
getOperationVariables: RelayConcreteVariables.getOperationVariables,
|
|
329
|
+
fetchQuery: fetchQueryInternal.fetchQuery,
|
|
330
|
+
fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
|
|
331
|
+
getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
|
|
332
|
+
getObservableForActiveRequest:
|
|
333
|
+
fetchQueryInternal.getObservableForActiveRequest,
|
|
334
|
+
},
|
|
335
|
+
};
|
|
@@ -12,12 +12,32 @@
|
|
|
12
12
|
|
|
13
13
|
var ConnectionHandler = require('./connection/ConnectionHandler');
|
|
14
14
|
|
|
15
|
+
var MutationHandlers = require('./connection/MutationHandlers');
|
|
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
22
|
return ConnectionHandler;
|
|
23
|
+
|
|
24
|
+
case 'deleteRecord':
|
|
25
|
+
return MutationHandlers.DeleteRecordHandler;
|
|
26
|
+
|
|
27
|
+
case 'deleteEdge':
|
|
28
|
+
return MutationHandlers.DeleteEdgeHandler;
|
|
29
|
+
|
|
30
|
+
case 'appendEdge':
|
|
31
|
+
return MutationHandlers.AppendEdgeHandler;
|
|
32
|
+
|
|
33
|
+
case 'prependEdge':
|
|
34
|
+
return MutationHandlers.PrependEdgeHandler;
|
|
35
|
+
|
|
36
|
+
case 'appendNode':
|
|
37
|
+
return MutationHandlers.AppendNodeHandler;
|
|
38
|
+
|
|
39
|
+
case 'prependNode':
|
|
40
|
+
return MutationHandlers.PrependNodeHandler;
|
|
21
41
|
}
|
|
22
42
|
|
|
23
43
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayDefaultHandlerProvider: No handler provided for `%s`.', handle) : invariant(false) : void 0;
|
|
@@ -33,8 +33,6 @@ 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) {
|
|
@@ -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 =
|
|
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) {
|