react-relay 2.0.0-rc.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +2 -2
- package/lib/ReactRelayContext.js +6 -3
- package/lib/ReactRelayFragmentContainer.js +48 -46
- package/lib/ReactRelayFragmentMockRenderer.js +5 -1
- package/lib/ReactRelayPaginationContainer.js +102 -68
- package/lib/ReactRelayQueryFetcher.js +54 -28
- package/lib/ReactRelayQueryRenderer.js +28 -20
- package/lib/ReactRelayRefetchContainer.js +70 -58
- package/lib/ReactRelayTestMocker.js +56 -43
- package/lib/ReactRelayTypes.js +1 -1
- package/lib/RelayContext.js +8 -2
- package/lib/assertFragmentMap.js +9 -7
- package/lib/buildReactRelayContainer.js +32 -23
- package/lib/index.js +41 -0
- package/lib/isRelayEnvironment.js +1 -1
- package/lib/isRelayVariables.js +1 -1
- package/lib/readContext.js +7 -4
- package/package.json +4 -4
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/classic.js +0 -10
- package/compat.js +0 -10
- package/lib/ConcreteQuery.js +0 -10
- package/lib/GraphQLQueryRunner.js +0 -264
- package/lib/GraphQLRange.js +0 -1124
- package/lib/GraphQLSegment.js +0 -743
- package/lib/GraphQLStoreChangeEmitter.js +0 -141
- package/lib/GraphQLStoreQueryResolver.js +0 -288
- package/lib/GraphQLStoreRangeUtils.js +0 -126
- package/lib/QueryBuilder.js +0 -228
- package/lib/ReactRelayClassicExports.js +0 -29
- package/lib/ReactRelayCompatContainerBuilder.js +0 -175
- package/lib/ReactRelayCompatPublic.js +0 -28
- package/lib/ReactRelayContainerProfiler.js +0 -30
- package/lib/ReactRelayFragmentContainer-flowtest.js +0 -201
- package/lib/ReactRelayPaginationContainer-flowtest.js +0 -213
- package/lib/ReactRelayPublic.js +0 -29
- package/lib/ReactRelayRefetchContainer-flowtest.js +0 -191
- package/lib/RelayCacheProcessor.js +0 -196
- package/lib/RelayChangeTracker.js +0 -83
- package/lib/RelayClassicContainerUtils.js +0 -49
- package/lib/RelayClassicCore.js +0 -34
- package/lib/RelayClassicRecordState.js +0 -31
- package/lib/RelayCompatContainer.js +0 -25
- package/lib/RelayCompatEnvironment.js +0 -27
- package/lib/RelayCompatMutations.js +0 -133
- package/lib/RelayCompatPaginationContainer.js +0 -27
- package/lib/RelayCompatRefetchContainer.js +0 -27
- package/lib/RelayCompatTypes.js +0 -10
- package/lib/RelayContainer.js +0 -889
- package/lib/RelayContainerComparators.js +0 -75
- package/lib/RelayContainerProxy.js +0 -21
- package/lib/RelayDefaultNetworkLayer.js +0 -192
- package/lib/RelayEnvironment.js +0 -449
- package/lib/RelayEnvironmentTypes.js +0 -10
- package/lib/RelayFetchMode.js +0 -17
- package/lib/RelayFragmentPointer.js +0 -161
- package/lib/RelayFragmentReference.js +0 -249
- package/lib/RelayFragmentSpecResolver.js +0 -305
- package/lib/RelayGraphQLMutation.js +0 -288
- package/lib/RelayGraphQLTag.js +0 -42
- package/lib/RelayInternalTypes.js +0 -15
- package/lib/RelayInternals.js +0 -24
- package/lib/RelayMetaRoute.js +0 -35
- package/lib/RelayMockRenderer.js +0 -71
- package/lib/RelayModern-flowtest.js +0 -342
- package/lib/RelayModernFlowtest_badref.graphql.js +0 -10
- package/lib/RelayModernFlowtest_notref.graphql.js +0 -10
- package/lib/RelayModernFlowtest_user.graphql.js +0 -10
- package/lib/RelayModernFlowtest_users.graphql.js +0 -10
- package/lib/RelayMutation.js +0 -322
- package/lib/RelayMutationDebugPrinter.js +0 -47
- package/lib/RelayMutationQuery.js +0 -558
- package/lib/RelayMutationQueue.js +0 -530
- package/lib/RelayMutationRequest.js +0 -103
- package/lib/RelayMutationTracker.js +0 -113
- package/lib/RelayMutationTransaction.js +0 -92
- package/lib/RelayMutationTransactionStatus.js +0 -55
- package/lib/RelayNetworkDebug.js +0 -131
- package/lib/RelayNetworkLayer.js +0 -185
- package/lib/RelayNodeInterface.js +0 -104
- package/lib/RelayOperationDescriptor.js +0 -40
- package/lib/RelayOptimisticMutationUtils.js +0 -208
- package/lib/RelayPendingQueryTracker.js +0 -166
- package/lib/RelayPropTypes.js +0 -57
- package/lib/RelayPublic.js +0 -44
- package/lib/RelayQL.js +0 -128
- package/lib/RelayQuery.js +0 -1584
- package/lib/RelayQueryCaching.js +0 -33
- package/lib/RelayQueryConfig.js +0 -58
- package/lib/RelayQueryPath.js +0 -204
- package/lib/RelayQueryRequest.js +0 -103
- package/lib/RelayQueryTracker.js +0 -86
- package/lib/RelayQueryTransform.js +0 -91
- package/lib/RelayQueryVisitor.js +0 -93
- package/lib/RelayQueryWriter.js +0 -573
- package/lib/RelayReadyState.js +0 -83
- package/lib/RelayReadyStateRenderer.js +0 -145
- package/lib/RelayRecord.js +0 -75
- package/lib/RelayRecordStatusMap.js +0 -57
- package/lib/RelayRecordStore.js +0 -433
- package/lib/RelayRecordWriter.js +0 -601
- package/lib/RelayRefQueryDescriptor.js +0 -27
- package/lib/RelayRenderer.js +0 -268
- package/lib/RelayRootContainer.js +0 -125
- package/lib/RelayRoute.js +0 -92
- package/lib/RelayRouteFragment.js +0 -44
- package/lib/RelaySelector.js +0 -201
- package/lib/RelayShallowMock.js +0 -69
- package/lib/RelayStaticContainer.js +0 -38
- package/lib/RelayStore.js +0 -12
- package/lib/RelayStoreConstants.js +0 -20
- package/lib/RelayStoreData.js +0 -660
- package/lib/RelayTaskQueue.js +0 -189
- package/lib/RelayTypes.js +0 -13
- package/lib/RelayVariable.js +0 -32
- package/lib/RelayVariables.js +0 -92
- package/lib/buildRQL.js +0 -160
- package/lib/callsFromGraphQL.js +0 -74
- package/lib/callsToGraphQL.js +0 -34
- package/lib/checkRelayQueryData.js +0 -250
- package/lib/createRelayQuery.js +0 -17
- package/lib/dedent.js +0 -49
- package/lib/diffRelayQuery.js +0 -757
- package/lib/directivesToGraphQL.js +0 -39
- package/lib/filterRelayQuery.js +0 -29
- package/lib/findRelayQueryLeaves.js +0 -293
- package/lib/flattenRelayQuery.js +0 -121
- package/lib/flattenSplitRelayQueries.js +0 -44
- package/lib/forEachRootCallArg.js +0 -40
- package/lib/fromGraphQL.js +0 -48
- package/lib/generateClientEdgeID.js +0 -22
- package/lib/generateClientID.js +0 -27
- package/lib/generateConcreteFragmentID.js +0 -30
- package/lib/generateForceIndex.js +0 -24
- package/lib/generateRQLFieldAlias.js +0 -39
- package/lib/getRangeBehavior.js +0 -58
- package/lib/getRelayQueries.js +0 -83
- package/lib/intersectRelayQuery.js +0 -149
- package/lib/isClassicRelayContext.js +0 -20
- package/lib/isClassicRelayEnvironment.js +0 -20
- package/lib/isCompatibleRelayFragmentType.js +0 -27
- package/lib/isRelayContainer.js +0 -16
- package/lib/makeLegacyStringishComponentRef.js +0 -52
- package/lib/printRelayOSSQuery.js +0 -329
- package/lib/printRelayQuery.js +0 -26
- package/lib/rangeOperationToMetadataKey.js +0 -25
- package/lib/readRelayQueryData.js +0 -551
- package/lib/relayUnstableBatchedUpdates.js +0 -12
- package/lib/relayUnstableBatchedUpdates.native.js +0 -11
- package/lib/restoreRelayCacheData.js +0 -188
- package/lib/serializeRelayQueryCall.js +0 -42
- package/lib/splitDeferredRelayQueries.js +0 -298
- package/lib/stableStringify.js +0 -85
- package/lib/testEditDistance.js +0 -112
- package/lib/throwFailedPromise.js +0 -26
- package/lib/toGraphQL.js +0 -94
- package/lib/transformRelayQueryPayload.js +0 -145
- package/lib/validateMutationConfig.js +0 -117
- package/lib/validateRelayReadQuery.js +0 -112
- package/lib/writeRelayQueryPayload.js +0 -44
- package/lib/writeRelayUpdatePayload.js +0 -513
- package/react-relay-classic.js +0 -4
- package/react-relay-classic.min.js +0 -9
- package/react-relay-compat.js +0 -4
- package/react-relay-compat.min.js +0 -9
package/lib/RelayRenderer.js
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _objectSpread2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectSpread"));
|
|
13
|
-
|
|
14
|
-
var _inheritsLoose2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/inheritsLoose"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _defineProperty2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
-
|
|
20
|
-
var INACTIVE_READY_STATE = {
|
|
21
|
-
aborted: false,
|
|
22
|
-
done: false,
|
|
23
|
-
error: null,
|
|
24
|
-
events: [],
|
|
25
|
-
ready: false,
|
|
26
|
-
stale: false
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* @public
|
|
30
|
-
*
|
|
31
|
-
* RelayRenderer renders a container and query config after fulfilling its data
|
|
32
|
-
* dependencies. Precise rendering behavior is configured via the `render` prop
|
|
33
|
-
* which takes a callback.
|
|
34
|
-
*
|
|
35
|
-
* The container created using `Relay.createContainer` must be supplied via the
|
|
36
|
-
* `Container` prop, and the query configuration that conforms to the shape of a
|
|
37
|
-
* `RelayQueryConfig` must be supplied via the `queryConfig` prop.
|
|
38
|
-
*
|
|
39
|
-
* === Render Callback ===
|
|
40
|
-
*
|
|
41
|
-
* The `render` callback is called with an object with the following properties:
|
|
42
|
-
*
|
|
43
|
-
* props: ?{[propName: string]: mixed}
|
|
44
|
-
* If present, sufficient data is ready to render the container. This object
|
|
45
|
-
* must be spread into the container using the spread attribute operator. If
|
|
46
|
-
* absent, there is insufficient data to render the container.
|
|
47
|
-
*
|
|
48
|
-
* done: boolean
|
|
49
|
-
* Whether all data dependencies have been fulfilled. If `props` is present
|
|
50
|
-
* but `done` is false, then sufficient data is ready to render, but some
|
|
51
|
-
* data dependencies have not yet been fulfilled.
|
|
52
|
-
*
|
|
53
|
-
* error: ?Error
|
|
54
|
-
* If present, an error occurred while fulfilling data dependencies. If
|
|
55
|
-
* `props` and `error` are both present, then sufficient data is ready to
|
|
56
|
-
* render, but an error occurred while fulfilling deferred dependencies.
|
|
57
|
-
*
|
|
58
|
-
* retry: ?Function
|
|
59
|
-
* A function that can be called to re-attempt to fulfill data dependencies.
|
|
60
|
-
* This property is only present if an `error` has occurred.
|
|
61
|
-
*
|
|
62
|
-
* stale: boolean
|
|
63
|
-
* When `forceFetch` is enabled, a request is always made to fetch updated
|
|
64
|
-
* data. However, if all data dependencies can be immediately fulfilled, the
|
|
65
|
-
* `props` property will be present. In this case, `stale` will be true.
|
|
66
|
-
*
|
|
67
|
-
* The `render` callback can return `undefined` to continue rendering the last
|
|
68
|
-
* view rendered (e.g. when transitioning from one `queryConfig` to another).
|
|
69
|
-
*
|
|
70
|
-
* If a `render` callback is not supplied, the default behavior is to render the
|
|
71
|
-
* container if data is available, the existing view if one exists, or nothing.
|
|
72
|
-
*
|
|
73
|
-
* === Refs ===
|
|
74
|
-
*
|
|
75
|
-
* References to elements rendered by the `render` callback can be obtained by
|
|
76
|
-
* using the React `ref` prop. For example:
|
|
77
|
-
*
|
|
78
|
-
* <FooComponent {...props} ref={handleFooRef} />
|
|
79
|
-
*
|
|
80
|
-
* function handleFooRef(component) {
|
|
81
|
-
* // Invoked when `<FooComponent>` is mounted or unmounted. When mounted,
|
|
82
|
-
* // `component` will be the component. When unmounted, `component` will
|
|
83
|
-
* // be null.
|
|
84
|
-
* }
|
|
85
|
-
*
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
var RelayRenderer =
|
|
89
|
-
/*#__PURE__*/
|
|
90
|
-
function (_React$Component) {
|
|
91
|
-
(0, _inheritsLoose2["default"])(RelayRenderer, _React$Component);
|
|
92
|
-
|
|
93
|
-
function RelayRenderer(props, context) {
|
|
94
|
-
var _this;
|
|
95
|
-
|
|
96
|
-
_this = _React$Component.call(this, props, context) || this;
|
|
97
|
-
_this.mounted = true;
|
|
98
|
-
_this.pendingRequest = null;
|
|
99
|
-
_this.state = {
|
|
100
|
-
active: false,
|
|
101
|
-
readyState: null,
|
|
102
|
-
retry: _this._retry.bind((0, _assertThisInitialized2["default"])((0, _assertThisInitialized2["default"])(_this)))
|
|
103
|
-
};
|
|
104
|
-
return _this;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
var _proto = RelayRenderer.prototype;
|
|
108
|
-
|
|
109
|
-
_proto.componentDidMount = function componentDidMount() {
|
|
110
|
-
this._validateProps(this.props);
|
|
111
|
-
|
|
112
|
-
this._runQueries(this.props);
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* @private
|
|
116
|
-
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
_proto._validateProps = function _validateProps(props) {
|
|
120
|
-
var error = RelayRenderer.propTypes.Container(props, 'Container', 'RelayRenderer');
|
|
121
|
-
|
|
122
|
-
if (error) {
|
|
123
|
-
throw error;
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* @private
|
|
128
|
-
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
_proto._runQueries = function _runQueries(_ref) {
|
|
132
|
-
var _this2 = this;
|
|
133
|
-
|
|
134
|
-
var Container = _ref.Container,
|
|
135
|
-
forceFetch = _ref.forceFetch,
|
|
136
|
-
onForceFetch = _ref.onForceFetch,
|
|
137
|
-
onPrimeCache = _ref.onPrimeCache,
|
|
138
|
-
queryConfig = _ref.queryConfig,
|
|
139
|
-
environment = _ref.environment,
|
|
140
|
-
shouldFetch = _ref.shouldFetch;
|
|
141
|
-
|
|
142
|
-
if (!shouldFetch) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
var onReadyStateChange = function onReadyStateChange(readyState) {
|
|
147
|
-
if (!_this2.mounted) {
|
|
148
|
-
_this2._handleReadyStateChange((0, _objectSpread2["default"])({}, readyState, {
|
|
149
|
-
mounted: false
|
|
150
|
-
}));
|
|
151
|
-
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (request !== _this2.lastRequest) {
|
|
156
|
-
// Ignore (abort) ready state if we have a new pending request.
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (readyState.aborted || readyState.done || readyState.error) {
|
|
161
|
-
_this2.pendingRequest = null;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
_this2.setState({
|
|
165
|
-
active: true,
|
|
166
|
-
readyState: (0, _objectSpread2["default"])({}, readyState, {
|
|
167
|
-
mounted: true
|
|
168
|
-
})
|
|
169
|
-
});
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
if (this.pendingRequest) {
|
|
173
|
-
this.pendingRequest.abort();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
var querySet = require("./getRelayQueries")(Container, queryConfig);
|
|
177
|
-
|
|
178
|
-
var request = this.pendingRequest = forceFetch ? onForceFetch ? onForceFetch(querySet, onReadyStateChange) : environment.forceFetch(querySet, onReadyStateChange) : onPrimeCache ? onPrimeCache(querySet, onReadyStateChange) : environment.primeCache(querySet, onReadyStateChange);
|
|
179
|
-
this.lastRequest = request;
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* @private
|
|
183
|
-
*/
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
_proto._retry = function _retry() {
|
|
187
|
-
var readyState = this.state.readyState;
|
|
188
|
-
|
|
189
|
-
if (readyState && readyState.error) {
|
|
190
|
-
this._runQueries(this.props);
|
|
191
|
-
|
|
192
|
-
this.setState({
|
|
193
|
-
readyState: null
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
_proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
199
|
-
if (nextProps.Container !== this.props.Container || nextProps.environment !== this.props.environment || nextProps.queryConfig !== this.props.queryConfig || nextProps.shouldFetch !== this.props.shouldFetch || nextProps.forceFetch && !this.props.forceFetch) {
|
|
200
|
-
this._validateProps(nextProps);
|
|
201
|
-
|
|
202
|
-
this._runQueries(nextProps);
|
|
203
|
-
|
|
204
|
-
this.setState({
|
|
205
|
-
readyState: null
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
|
|
211
|
-
// `prevState` should exist; the truthy check is for Flow soundness.
|
|
212
|
-
var readyState = this.state.readyState;
|
|
213
|
-
|
|
214
|
-
if (readyState) {
|
|
215
|
-
if (!prevState || readyState !== prevState.readyState) {
|
|
216
|
-
this._handleReadyStateChange(readyState);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
/**
|
|
221
|
-
* @private
|
|
222
|
-
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
_proto._handleReadyStateChange = function _handleReadyStateChange(readyState) {
|
|
226
|
-
var onReadyStateChange = this.props.onReadyStateChange;
|
|
227
|
-
|
|
228
|
-
if (onReadyStateChange) {
|
|
229
|
-
onReadyStateChange(readyState);
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
234
|
-
if (this.pendingRequest) {
|
|
235
|
-
this.pendingRequest.abort();
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
this.mounted = false;
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
_proto.render = function render() {
|
|
242
|
-
var readyState = this.state.active ? this.state.readyState : INACTIVE_READY_STATE;
|
|
243
|
-
return require("react").createElement(require("./RelayReadyStateRenderer"), {
|
|
244
|
-
Container: this.props.Container,
|
|
245
|
-
environment: this.props.environment,
|
|
246
|
-
queryConfig: this.props.queryConfig,
|
|
247
|
-
readyState: readyState,
|
|
248
|
-
render: this.props.render,
|
|
249
|
-
retry: this.state.retry
|
|
250
|
-
});
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
return RelayRenderer;
|
|
254
|
-
}(require("react").Component);
|
|
255
|
-
|
|
256
|
-
(0, _defineProperty2["default"])(RelayRenderer, "propTypes", {
|
|
257
|
-
Container: require("./RelayPropTypes").Container,
|
|
258
|
-
forceFetch: require("prop-types").bool,
|
|
259
|
-
onReadyStateChange: require("prop-types").func,
|
|
260
|
-
queryConfig: require("./RelayPropTypes").QueryConfig.isRequired,
|
|
261
|
-
environment: require("./RelayPropTypes").Environment,
|
|
262
|
-
render: require("prop-types").func,
|
|
263
|
-
shouldFetch: require("prop-types").bool
|
|
264
|
-
});
|
|
265
|
-
(0, _defineProperty2["default"])(RelayRenderer, "defaultProps", {
|
|
266
|
-
shouldFetch: true
|
|
267
|
-
});
|
|
268
|
-
module.exports = RelayRenderer;
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @public
|
|
14
|
-
*
|
|
15
|
-
* RelayRootContainer sends requests for data required to render the supplied
|
|
16
|
-
* `Component` and `route`. The `Component` must be a container created using
|
|
17
|
-
* `Relay.createContainer`.
|
|
18
|
-
*
|
|
19
|
-
* === Render Callbacks ===
|
|
20
|
-
*
|
|
21
|
-
* Whenever the RelayRootContainer renders, one of three render callback props
|
|
22
|
-
* are invoked depending on whether data is being loaded, can be resolved, or if
|
|
23
|
-
* an error is incurred.
|
|
24
|
-
*
|
|
25
|
-
* ReactDOM.render(
|
|
26
|
-
* <RelayRootContainer
|
|
27
|
-
* Component={FooComponent}
|
|
28
|
-
* route={fooRoute}
|
|
29
|
-
* renderLoading={function() {
|
|
30
|
-
* return <View>Loading...</View>;
|
|
31
|
-
* }}
|
|
32
|
-
* renderFetched={function(data) {
|
|
33
|
-
* // Must spread `data` into <FooComponent>.
|
|
34
|
-
* return <FooComponent {...data} />;
|
|
35
|
-
* }}
|
|
36
|
-
* renderFailure={function(error) {
|
|
37
|
-
* return <View>Error: {error.message}</View>;
|
|
38
|
-
* }}
|
|
39
|
-
* />,
|
|
40
|
-
* ...
|
|
41
|
-
* );
|
|
42
|
-
*
|
|
43
|
-
* If a callback is not supplied, it has a default behavior:
|
|
44
|
-
*
|
|
45
|
-
* - Without `renderFetched`, `Component` will be rendered with fetched data.
|
|
46
|
-
* - Without `renderFailure`, an error will render to null.
|
|
47
|
-
* - Without `renderLoading`, the existing view will continue to render. If
|
|
48
|
-
* this is the initial mount (with no existing view), renders to null.
|
|
49
|
-
*
|
|
50
|
-
* In addition, supplying a `renderLoading` that returns undefined has the same
|
|
51
|
-
* effect as not supplying the callback. (Usually, an undefined return value is
|
|
52
|
-
* an error in React).
|
|
53
|
-
*
|
|
54
|
-
* === Refs ===
|
|
55
|
-
*
|
|
56
|
-
* References to elements rendered by any of these callbacks can be obtained by
|
|
57
|
-
* using the React `ref` prop. For example:
|
|
58
|
-
*
|
|
59
|
-
* <FooComponent {...data} ref={handleFooRef} />
|
|
60
|
-
*
|
|
61
|
-
* function handleFooRef(component) {
|
|
62
|
-
* // Invoked when `<FooComponent>` is mounted or unmounted. When mounted,
|
|
63
|
-
* // `component` will be the component. When unmounted, `component` will
|
|
64
|
-
* // be null.
|
|
65
|
-
* }
|
|
66
|
-
*
|
|
67
|
-
*/
|
|
68
|
-
function RelayRootContainer(_ref) {
|
|
69
|
-
var Component = _ref.Component,
|
|
70
|
-
forceFetch = _ref.forceFetch,
|
|
71
|
-
onReadyStateChange = _ref.onReadyStateChange,
|
|
72
|
-
renderFailure = _ref.renderFailure,
|
|
73
|
-
renderFetched = _ref.renderFetched,
|
|
74
|
-
renderLoading = _ref.renderLoading,
|
|
75
|
-
route = _ref.route,
|
|
76
|
-
shouldFetch = _ref.shouldFetch;
|
|
77
|
-
return require("react").createElement(require("./RelayRenderer"), {
|
|
78
|
-
Container: Component,
|
|
79
|
-
forceFetch: forceFetch,
|
|
80
|
-
onReadyStateChange: onReadyStateChange,
|
|
81
|
-
queryConfig: route,
|
|
82
|
-
environment: require("./RelayStore"),
|
|
83
|
-
shouldFetch: shouldFetch,
|
|
84
|
-
render: function render(_ref2) {
|
|
85
|
-
var done = _ref2.done,
|
|
86
|
-
error = _ref2.error,
|
|
87
|
-
props = _ref2.props,
|
|
88
|
-
retry = _ref2.retry,
|
|
89
|
-
stale = _ref2.stale;
|
|
90
|
-
|
|
91
|
-
if (error) {
|
|
92
|
-
if (renderFailure) {
|
|
93
|
-
return renderFailure(error, retry);
|
|
94
|
-
}
|
|
95
|
-
} else if (props) {
|
|
96
|
-
if (renderFetched) {
|
|
97
|
-
return renderFetched(props, {
|
|
98
|
-
done: done,
|
|
99
|
-
stale: stale
|
|
100
|
-
});
|
|
101
|
-
} else {
|
|
102
|
-
return require("react").createElement(Component, props);
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
if (renderLoading) {
|
|
106
|
-
return renderLoading();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
RelayRootContainer.propTypes = {
|
|
116
|
-
Component: require("./RelayPropTypes").Container,
|
|
117
|
-
forceFetch: require("prop-types").bool,
|
|
118
|
-
onReadyStateChange: require("prop-types").func,
|
|
119
|
-
renderFailure: require("prop-types").func,
|
|
120
|
-
renderFetched: require("prop-types").func,
|
|
121
|
-
renderLoading: require("prop-types").func,
|
|
122
|
-
route: require("./RelayPropTypes").QueryConfig.isRequired,
|
|
123
|
-
shouldFetch: require("prop-types").bool
|
|
124
|
-
};
|
|
125
|
-
module.exports = RelayRootContainer;
|
package/lib/RelayRoute.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _inheritsLoose2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/inheritsLoose"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var createURI = function createURI() {
|
|
17
|
-
return null;
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* Describes the root queries, param definitions and other metadata for a given
|
|
21
|
-
* path (URI).
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var RelayRoute =
|
|
26
|
-
/*#__PURE__*/
|
|
27
|
-
function (_RelayQueryConfig) {
|
|
28
|
-
(0, _inheritsLoose2["default"])(RelayRoute, _RelayQueryConfig);
|
|
29
|
-
|
|
30
|
-
function RelayRoute(initialVariables, uri) {
|
|
31
|
-
var _this;
|
|
32
|
-
|
|
33
|
-
_this = _RelayQueryConfig.call(this, initialVariables) || this;
|
|
34
|
-
var constructor = _this.constructor;
|
|
35
|
-
var routeName = constructor.routeName,
|
|
36
|
-
path = constructor.path;
|
|
37
|
-
!(constructor !== RelayRoute) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRoute: Abstract class cannot be instantiated.') : require("fbjs/lib/invariant")(false) : void 0;
|
|
38
|
-
!routeName ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, '%s: Subclasses of RelayRoute must define a `routeName`.', constructor.name || '<<anonymous>>') : require("fbjs/lib/invariant")(false) : void 0; // $FlowIssue #9905535 - Object.defineProperty doesn't understand getters
|
|
39
|
-
|
|
40
|
-
Object.defineProperty((0, _assertThisInitialized2["default"])((0, _assertThisInitialized2["default"])(_this)), 'uri', {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
get: function get() {
|
|
43
|
-
if (!uri && path) {
|
|
44
|
-
uri = createURI(constructor, this.params);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return uri;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
return _this;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
var _proto = RelayRoute.prototype;
|
|
54
|
-
|
|
55
|
-
_proto.prepareVariables = function prepareVariables(prevVariables) {
|
|
56
|
-
var _this$constructor = this.constructor,
|
|
57
|
-
paramDefinitions = _this$constructor.paramDefinitions,
|
|
58
|
-
prepareParams = _this$constructor.prepareParams,
|
|
59
|
-
routeName = _this$constructor.routeName;
|
|
60
|
-
var params = prevVariables;
|
|
61
|
-
|
|
62
|
-
if (prepareParams) {
|
|
63
|
-
/* $FlowFixMe(>=0.17.0) - params is ?Tv but prepareParams expects Tv */
|
|
64
|
-
params = prepareParams(params);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (paramDefinitions) {
|
|
68
|
-
require("fbjs/lib/forEachObject")(paramDefinitions, function (paramDefinition, paramName) {
|
|
69
|
-
if (params) {
|
|
70
|
-
if (params.hasOwnProperty(paramName)) {
|
|
71
|
-
return;
|
|
72
|
-
} else {
|
|
73
|
-
// Backfill param so that a call variable is created for it.
|
|
74
|
-
params[paramName] = undefined;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
!!paramDefinition.required ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRoute: Missing required parameter `%s` in `%s`. Check the ' + 'supplied params or URI.', paramName, routeName) : require("fbjs/lib/invariant")(false) : void 0;
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return params;
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
RelayRoute.injectURICreator = function injectURICreator(creator) {
|
|
86
|
-
createURI = creator;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
return RelayRoute;
|
|
90
|
-
}(require("./RelayQueryConfig"));
|
|
91
|
-
|
|
92
|
-
module.exports = RelayRoute;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
* strict-local
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Represents a query fragment that is conditional upon the active route as a
|
|
14
|
-
* function that returns either a literal fragment or a fragment reference.
|
|
15
|
-
*
|
|
16
|
-
* Example GraphQL:
|
|
17
|
-
*
|
|
18
|
-
* ```
|
|
19
|
-
* Node {
|
|
20
|
-
* ${(route) => matchRoute(route, ...)}
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
var RelayRouteFragment =
|
|
25
|
-
/*#__PURE__*/
|
|
26
|
-
function () {
|
|
27
|
-
function RelayRouteFragment(builder) {
|
|
28
|
-
this._builder = builder;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns the query fragment that matches the given route, if any.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var _proto = RelayRouteFragment.prototype;
|
|
36
|
-
|
|
37
|
-
_proto.getFragmentForRoute = function getFragmentForRoute(route) {
|
|
38
|
-
return this._builder(route);
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
return RelayRouteFragment;
|
|
42
|
-
}();
|
|
43
|
-
|
|
44
|
-
module.exports = RelayRouteFragment;
|