relay-runtime 1.7.0-rc.1 → 2.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/LICENSE +1 -1
- package/index.js +1 -1
- package/lib/ConvertToExecuteFunction.js +12 -75
- package/lib/DataChecker.js +400 -0
- package/lib/NormalizationNode.js +14 -0
- package/lib/ReaderNode.js +10 -0
- package/lib/RelayCombinedEnvironmentTypes.js +10 -0
- package/lib/RelayConcreteNode.js +12 -29
- package/lib/RelayConcreteVariables.js +17 -11
- package/lib/RelayConnectionHandler.js +98 -42
- package/lib/RelayConnectionInterface.js +5 -13
- package/lib/RelayCore.js +17 -14
- package/lib/RelayDeclarativeMutationConfig.js +69 -34
- package/lib/RelayDefaultHandleKey.js +1 -2
- package/lib/RelayDefaultHandlerProvider.js +6 -5
- package/lib/RelayError.js +6 -9
- package/lib/RelayInMemoryRecordSource.js +20 -22
- package/lib/RelayModernEnvironment.js +140 -229
- package/lib/RelayModernFragmentSpecResolver.js +110 -102
- package/lib/RelayModernGraphQLTag.js +53 -15
- package/lib/{RelayModernOperationSelector.js → RelayModernOperationDescriptor.js} +9 -8
- package/lib/RelayModernQueryExecutor.js +172 -0
- package/lib/RelayModernRecord.js +97 -38
- package/lib/RelayModernSelector.js +89 -33
- package/lib/RelayModernStore.js +301 -0
- package/lib/RelayNetwork.js +16 -28
- package/lib/RelayNetworkLogger.js +2 -3
- package/lib/RelayNetworkLoggerTransaction.js +32 -30
- package/lib/RelayNetworkTypes.js +1 -2
- package/lib/RelayObservable.js +127 -155
- package/lib/RelayProfiler.js +35 -22
- package/lib/RelayPublishQueue.js +144 -96
- package/lib/RelayQueryResponseCache.js +37 -21
- package/lib/RelayReader.js +194 -61
- package/lib/RelayRecordProxy.js +50 -31
- package/lib/RelayRecordSourceMutator.js +92 -51
- package/lib/RelayRecordSourceProxy.js +43 -35
- package/lib/RelayRecordSourceSelectorProxy.js +22 -21
- package/lib/RelayRecordState.js +1 -3
- package/lib/RelayReferenceMarker.js +110 -37
- package/lib/RelayResponseNormalizer.js +248 -82
- package/lib/RelayRuntimeTypes.js +1 -3
- package/lib/RelayStoreTypes.js +1 -2
- package/lib/RelayStoreUtils.js +37 -19
- package/lib/RelayViewerHandler.js +14 -10
- package/lib/applyRelayModernOptimisticMutation.js +8 -8
- package/lib/cloneRelayHandleSourceField.js +8 -9
- package/lib/commitLocalUpdate.js +1 -2
- package/lib/commitRelayModernMutation.js +21 -14
- package/lib/createRelayNetworkLogger.js +11 -9
- package/lib/deepFreeze.js +2 -3
- package/lib/fetchRelayModernQuery.js +10 -12
- package/lib/generateRelayClientID.js +4 -2
- package/lib/getRelayHandleKey.js +5 -6
- package/lib/hasOverlappingIDs.js +3 -2
- package/lib/index.js +59 -62
- package/lib/isPromise.js +1 -2
- package/lib/isRelayModernEnvironment.js +1 -3
- package/lib/isScalarAndEqual.js +1 -3
- package/lib/normalizePayload.js +17 -15
- package/lib/normalizeRelayPayload.js +9 -9
- package/lib/recycleNodesInto.js +25 -9
- package/lib/requestRelaySubscription.js +25 -58
- package/lib/simpleClone.js +2 -3
- package/lib/stableCopy.js +5 -3
- package/lib/validateMutation.js +146 -0
- package/package.json +3 -3
- package/relay-runtime.js +4 -0
- package/relay-runtime.min.js +9 -0
- package/lib/RelayDataLoader.js +0 -302
- package/lib/RelayMarkSweepStore.js +0 -242
- package/lib/deferrableFragmentKey.js +0 -20
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,84 +7,81 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
12
|
// As early as possible, check for the existence of the JavaScript globals which
|
|
14
13
|
// Relay Runtime relies upon, and produce a clear message if they do not exist.
|
|
15
|
-
if (process.env.NODE_ENV !==
|
|
14
|
+
if (process.env.NODE_ENV !== "production") {
|
|
16
15
|
if (typeof Map !== 'function' || typeof Set !== 'function' || typeof Promise !== 'function' || typeof Object.assign !== 'function') {
|
|
17
16
|
throw new Error('relay-runtime requires Map, Set, Promise, and Object.assign to exist. ' + 'Use a polyfill to provide these for older browsers.');
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
/**
|
|
22
20
|
* The public interface to Relay Runtime.
|
|
23
21
|
*/
|
|
24
|
-
module.exports = {
|
|
25
|
-
// Core API
|
|
26
|
-
Environment: require('./RelayModernEnvironment'),
|
|
27
|
-
Network: require('./RelayNetwork'),
|
|
28
|
-
Observable: require('./RelayObservable'),
|
|
29
|
-
QueryResponseCache: require('./RelayQueryResponseCache'),
|
|
30
|
-
RecordSource: require('./RelayInMemoryRecordSource'),
|
|
31
|
-
Store: require('./RelayMarkSweepStore'),
|
|
32
22
|
|
|
33
|
-
areEqualSelectors: require('./RelayCore').areEqualSelectors,
|
|
34
|
-
createFragmentSpecResolver: require('./RelayCore').createFragmentSpecResolver,
|
|
35
|
-
createOperationSelector: require('./RelayCore').createOperationSelector,
|
|
36
|
-
getDataIDsFromObject: require('./RelayCore').getDataIDsFromObject,
|
|
37
|
-
getFragment: require('./RelayModernGraphQLTag').getFragment,
|
|
38
|
-
getRequest: require('./RelayModernGraphQLTag').getRequest,
|
|
39
|
-
// TODO (T23201154) remove in a future Relay release.
|
|
40
|
-
getOperation: function getOperation() {
|
|
41
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
42
|
-
require('fbjs/lib/warning')(false, 'getOperation() deprecated. Use getRequest().');
|
|
43
|
-
}
|
|
44
|
-
return require('./RelayModernGraphQLTag').getRequest.apply(null, arguments);
|
|
45
|
-
},
|
|
46
|
-
getSelector: require('./RelayCore').getSelector,
|
|
47
|
-
getSelectorList: require('./RelayCore').getSelectorList,
|
|
48
|
-
getSelectorsFromObject: require('./RelayCore').getSelectorsFromObject,
|
|
49
|
-
getStorageKey: require('./RelayStoreUtils').getStorageKey,
|
|
50
|
-
getVariablesFromObject: require('./RelayCore').getVariablesFromObject,
|
|
51
|
-
graphql: require('./RelayModernGraphQLTag').graphql,
|
|
52
23
|
|
|
24
|
+
module.exports = {
|
|
25
|
+
// Core API
|
|
26
|
+
Environment: require("./RelayModernEnvironment"),
|
|
27
|
+
Network: require("./RelayNetwork"),
|
|
28
|
+
Observable: require("./RelayObservable"),
|
|
29
|
+
QueryResponseCache: require("./RelayQueryResponseCache"),
|
|
30
|
+
RecordSource: require("./RelayInMemoryRecordSource"),
|
|
31
|
+
Store: require("./RelayModernStore"),
|
|
32
|
+
areEqualSelectors: require("./RelayCore").areEqualSelectors,
|
|
33
|
+
createFragmentSpecResolver: require("./RelayCore").createFragmentSpecResolver,
|
|
34
|
+
createOperationDescriptor: require("./RelayCore").createOperationDescriptor,
|
|
35
|
+
getDataIDsFromObject: require("./RelayCore").getDataIDsFromObject,
|
|
36
|
+
getFragment: require("./RelayModernGraphQLTag").getFragment,
|
|
37
|
+
getPaginationFragment: require("./RelayModernGraphQLTag").getPaginationFragment,
|
|
38
|
+
getRefetchableFragment: require("./RelayModernGraphQLTag").getRefetchableFragment,
|
|
39
|
+
getRequest: require("./RelayModernGraphQLTag").getRequest,
|
|
40
|
+
getSelector: require("./RelayCore").getSelector,
|
|
41
|
+
getSelectorList: require("./RelayCore").getSelectorList,
|
|
42
|
+
getSelectorsFromObject: require("./RelayCore").getSelectorsFromObject,
|
|
43
|
+
getStorageKey: require("./RelayStoreUtils").getStorageKey,
|
|
44
|
+
getVariablesFromObject: require("./RelayCore").getVariablesFromObject,
|
|
45
|
+
graphql: require("./RelayModernGraphQLTag").graphql,
|
|
53
46
|
// Declarative mutation API
|
|
54
|
-
MutationTypes: require(
|
|
55
|
-
RangeOperations: require(
|
|
56
|
-
|
|
47
|
+
MutationTypes: require("./RelayDeclarativeMutationConfig").MutationTypes,
|
|
48
|
+
RangeOperations: require("./RelayDeclarativeMutationConfig").RangeOperations,
|
|
57
49
|
// Extensions
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
DefaultHandlerProvider: require("./RelayDefaultHandlerProvider"),
|
|
51
|
+
ConnectionHandler: require("./RelayConnectionHandler"),
|
|
52
|
+
ViewerHandler: require("./RelayViewerHandler"),
|
|
61
53
|
// Helpers (can be implemented via the above API)
|
|
62
|
-
applyOptimisticMutation: require(
|
|
63
|
-
commitLocalUpdate: require(
|
|
64
|
-
commitMutation: require(
|
|
65
|
-
fetchQuery: require(
|
|
66
|
-
isRelayModernEnvironment: require(
|
|
67
|
-
requestSubscription: require(
|
|
68
|
-
|
|
54
|
+
applyOptimisticMutation: require("./applyRelayModernOptimisticMutation"),
|
|
55
|
+
commitLocalUpdate: require("./commitLocalUpdate"),
|
|
56
|
+
commitMutation: require("./commitRelayModernMutation"),
|
|
57
|
+
fetchQuery: require("./fetchRelayModernQuery"),
|
|
58
|
+
isRelayModernEnvironment: require("./isRelayModernEnvironment"),
|
|
59
|
+
requestSubscription: require("./requestRelaySubscription"),
|
|
69
60
|
// Configuration interface for legacy or special uses
|
|
70
|
-
ConnectionInterface: require(
|
|
71
|
-
|
|
61
|
+
ConnectionInterface: require("./RelayConnectionInterface"),
|
|
72
62
|
// Utilities
|
|
73
|
-
RelayProfiler: require(
|
|
74
|
-
|
|
63
|
+
RelayProfiler: require("./RelayProfiler"),
|
|
75
64
|
// INTERNAL-ONLY: These exports might be removed at any point.
|
|
76
|
-
RelayConcreteNode: require(
|
|
77
|
-
RelayError: require(
|
|
78
|
-
RelayNetworkLoggerTransaction: require(
|
|
79
|
-
DEFAULT_HANDLE_KEY: require(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
65
|
+
RelayConcreteNode: require("./RelayConcreteNode"),
|
|
66
|
+
RelayError: require("./RelayError"),
|
|
67
|
+
RelayNetworkLoggerTransaction: require("./RelayNetworkLoggerTransaction"),
|
|
68
|
+
DEFAULT_HANDLE_KEY: require("./RelayDefaultHandleKey").DEFAULT_HANDLE_KEY,
|
|
69
|
+
FRAGMENTS_KEY: require("./RelayStoreUtils").FRAGMENTS_KEY,
|
|
70
|
+
FRAGMENT_OWNER_KEY: require("./RelayStoreUtils").FRAGMENT_OWNER_KEY,
|
|
71
|
+
ID_KEY: require("./RelayStoreUtils").ID_KEY,
|
|
72
|
+
REF_KEY: require("./RelayStoreUtils").REF_KEY,
|
|
73
|
+
REFS_KEY: require("./RelayStoreUtils").REFS_KEY,
|
|
74
|
+
ROOT_ID: require("./RelayStoreUtils").ROOT_ID,
|
|
75
|
+
ROOT_TYPE: require("./RelayStoreUtils").ROOT_TYPE,
|
|
76
|
+
createRelayNetworkLogger: require("./createRelayNetworkLogger"),
|
|
77
|
+
deepFreeze: require("./deepFreeze"),
|
|
78
|
+
generateClientID: require("./generateRelayClientID"),
|
|
79
|
+
getRelayHandleKey: require("./getRelayHandleKey"),
|
|
80
|
+
isScalarAndEqual: require("./isScalarAndEqual"),
|
|
81
|
+
recycleNodesInto: require("./recycleNodesInto"),
|
|
82
|
+
simpleClone: require("./simpleClone"),
|
|
83
|
+
stableCopy: require("./stableCopy"),
|
|
84
|
+
__internal: {
|
|
85
|
+
getModernOperationVariables: require("./RelayConcreteVariables").getOperationVariables
|
|
86
|
+
}
|
|
90
87
|
};
|
package/lib/isPromise.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
* strict
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
12
|
function isPromise(p) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* Determine if a given value is an object that implements the `Environment`
|
|
15
13
|
* interface defined in `RelayStoreTypes`.
|
package/lib/isScalarAndEqual.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
* strict
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* A fast test to determine if two values are equal scalars:
|
|
15
13
|
* - compares scalars such as booleans, strings, numbers by value
|
package/lib/normalizePayload.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,28 +7,30 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
|
-
function normalizePayload(payload) {
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
response = payload.response;
|
|
17
|
-
var data = response.data,
|
|
18
|
-
errors = response.errors;
|
|
12
|
+
function normalizePayload(operation, payload) {
|
|
13
|
+
var data = payload.data,
|
|
14
|
+
errors = payload.errors;
|
|
19
15
|
|
|
20
16
|
if (data != null) {
|
|
21
|
-
return require(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
variables: variables
|
|
25
|
-
}, data, errors, { handleStrippedNulls: true });
|
|
17
|
+
return require("./normalizeRelayPayload")(operation.root, data, errors, {
|
|
18
|
+
handleStrippedNulls: true
|
|
19
|
+
});
|
|
26
20
|
}
|
|
27
|
-
|
|
21
|
+
|
|
22
|
+
var node = operation.node;
|
|
23
|
+
|
|
24
|
+
var error = require("./RelayError").create('RelayNetwork', 'No data returned for operation `%s`, got error(s):\n%s\n\nSee the error ' + '`source` property for more information.', node.params ? node.params.name : node.name, errors ? errors.map(function (_ref) {
|
|
28
25
|
var message = _ref.message;
|
|
29
26
|
return message;
|
|
30
27
|
}).join('\n') : '(No errors)');
|
|
31
|
-
|
|
28
|
+
|
|
29
|
+
error.source = {
|
|
30
|
+
errors: errors,
|
|
31
|
+
operation: operation.node,
|
|
32
|
+
variables: operation.variables
|
|
33
|
+
};
|
|
32
34
|
throw error;
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,23 +7,23 @@
|
|
|
7
7
|
* strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
12
|
function normalizeRelayPayload(selector, payload, errors) {
|
|
14
|
-
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
source
|
|
13
|
+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
|
|
14
|
+
handleStrippedNulls: false
|
|
15
|
+
};
|
|
16
|
+
var source = new (require("./RelayInMemoryRecordSource"))();
|
|
17
|
+
source.set(require("./RelayStoreUtils").ROOT_ID, require("./RelayModernRecord").create(require("./RelayStoreUtils").ROOT_ID, require("./RelayStoreUtils").ROOT_TYPE));
|
|
18
18
|
|
|
19
|
-
var _RelayResponseNormali = require(
|
|
19
|
+
var _RelayResponseNormali = require("./RelayResponseNormalizer").normalize(source, selector, payload, options),
|
|
20
20
|
fieldPayloads = _RelayResponseNormali.fieldPayloads,
|
|
21
|
-
|
|
21
|
+
matchPayloads = _RelayResponseNormali.matchPayloads;
|
|
22
22
|
|
|
23
23
|
return {
|
|
24
24
|
errors: errors,
|
|
25
25
|
fieldPayloads: fieldPayloads,
|
|
26
|
-
|
|
26
|
+
matchPayloads: matchPayloads,
|
|
27
27
|
source: source
|
|
28
28
|
};
|
|
29
29
|
}
|
package/lib/recycleNodesInto.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
* strict
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* Recycles subtrees from `prevData` by replacing equal subtrees in `nextData`.
|
|
15
13
|
*/
|
|
@@ -18,19 +16,28 @@ function recycleNodesInto(prevData, nextData) {
|
|
|
18
16
|
if (prevData === nextData || typeof prevData !== 'object' || !prevData || typeof nextData !== 'object' || !nextData) {
|
|
19
17
|
return nextData;
|
|
20
18
|
}
|
|
21
|
-
var canRecycle = false;
|
|
22
19
|
|
|
23
|
-
// Assign local variables to preserve Flow type refinement.
|
|
20
|
+
var canRecycle = false; // Assign local variables to preserve Flow type refinement.
|
|
21
|
+
|
|
24
22
|
var prevArray = Array.isArray(prevData) ? prevData : null;
|
|
25
23
|
var nextArray = Array.isArray(nextData) ? nextData : null;
|
|
24
|
+
|
|
26
25
|
if (prevArray && nextArray) {
|
|
27
26
|
canRecycle = nextArray.reduce(function (wasEqual, nextItem, ii) {
|
|
28
27
|
var prevValue = prevArray[ii];
|
|
29
28
|
var nextValue = recycleNodesInto(prevValue, nextItem);
|
|
29
|
+
|
|
30
30
|
if (nextValue !== nextArray[ii]) {
|
|
31
|
-
|
|
31
|
+
if (process.env.NODE_ENV !== "production") {
|
|
32
|
+
if (!Object.isFrozen(nextArray)) {
|
|
33
|
+
nextArray[ii] = nextValue;
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
nextArray[ii] = nextValue;
|
|
37
|
+
}
|
|
32
38
|
}
|
|
33
|
-
|
|
39
|
+
|
|
40
|
+
return wasEqual && nextValue === prevArray[ii];
|
|
34
41
|
}, true) && prevArray.length === nextArray.length;
|
|
35
42
|
} else if (!prevArray && !nextArray) {
|
|
36
43
|
// Assign local variables to preserve Flow type refinement.
|
|
@@ -41,12 +48,21 @@ function recycleNodesInto(prevData, nextData) {
|
|
|
41
48
|
canRecycle = nextKeys.reduce(function (wasEqual, key) {
|
|
42
49
|
var prevValue = prevObject[key];
|
|
43
50
|
var nextValue = recycleNodesInto(prevValue, nextObject[key]);
|
|
51
|
+
|
|
44
52
|
if (nextValue !== nextObject[key]) {
|
|
45
|
-
|
|
53
|
+
if (process.env.NODE_ENV !== "production") {
|
|
54
|
+
if (!Object.isFrozen(nextObject)) {
|
|
55
|
+
nextObject[key] = nextValue;
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
nextObject[key] = nextValue;
|
|
59
|
+
}
|
|
46
60
|
}
|
|
47
|
-
|
|
61
|
+
|
|
62
|
+
return wasEqual && nextValue === prevObject[key];
|
|
48
63
|
}, true) && prevKeys.length === nextKeys.length;
|
|
49
64
|
}
|
|
65
|
+
|
|
50
66
|
return canRecycle ? prevData : nextData;
|
|
51
67
|
}
|
|
52
68
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,79 +7,46 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
|
-
var _extends3 = _interopRequireDefault(require('babel-runtime/helpers/extends'));
|
|
14
|
-
|
|
15
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
16
|
-
|
|
17
12
|
function requestRelaySubscription(environment, config) {
|
|
18
13
|
var _environment$unstable = environment.unstable_internal,
|
|
19
|
-
|
|
14
|
+
createOperationDescriptor = _environment$unstable.createOperationDescriptor,
|
|
20
15
|
getRequest = _environment$unstable.getRequest;
|
|
21
|
-
|
|
22
16
|
var subscription = getRequest(config.subscription);
|
|
23
|
-
|
|
17
|
+
|
|
18
|
+
if (subscription.params.operationKind !== 'subscription') {
|
|
24
19
|
throw new Error('requestRelaySubscription: Must use Subscription operation');
|
|
25
20
|
}
|
|
21
|
+
|
|
26
22
|
var configs = config.configs,
|
|
27
23
|
onCompleted = config.onCompleted,
|
|
28
24
|
onError = config.onError,
|
|
29
25
|
onNext = config.onNext,
|
|
30
|
-
variables = config.variables
|
|
31
|
-
|
|
26
|
+
variables = config.variables;
|
|
27
|
+
var operation = createOperationDescriptor(subscription, variables);
|
|
28
|
+
process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(!(config.updater && configs), 'requestRelaySubscription: Expected only one of `updater` and `configs` to be provided') : void 0;
|
|
32
29
|
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
process.env.NODE_ENV !== 'production' ? require('fbjs/lib/warning')(!(config.updater && configs), 'requestRelaySubscription: Expected only one of `updater` and `configs` to be provided') : void 0;
|
|
36
|
-
|
|
37
|
-
var _ref = configs ? require('./RelayDeclarativeMutationConfig').convert(configs, subscription, null /* optimisticUpdater */
|
|
30
|
+
var _ref = configs ? require("./RelayDeclarativeMutationConfig").convert(configs, subscription, null
|
|
31
|
+
/* optimisticUpdater */
|
|
38
32
|
, config.updater) : config,
|
|
39
33
|
updater = _ref.updater;
|
|
40
34
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return onNext;
|
|
57
|
-
}(function (payload) {
|
|
58
|
-
if (onNext) {
|
|
59
|
-
if (payload.kind === 'event') {
|
|
60
|
-
onNext(payload);
|
|
61
|
-
} else {
|
|
62
|
-
var data = environment.lookup(operation.fragment).data;
|
|
63
|
-
onNext((0, _extends3['default'])({ kind: 'data' }, data));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}),
|
|
67
|
-
onError: onError,
|
|
68
|
-
onCompleted: onCompleted
|
|
69
|
-
});
|
|
70
|
-
} else {
|
|
71
|
-
return environment.execute({
|
|
72
|
-
operation: operation,
|
|
73
|
-
updater: updater,
|
|
74
|
-
cacheConfig: { force: true }
|
|
75
|
-
}).map(function () {
|
|
76
|
-
return environment.lookup(operation.fragment).data;
|
|
77
|
-
}).subscribeLegacy({
|
|
78
|
-
onNext: onNext,
|
|
79
|
-
onError: onError,
|
|
80
|
-
onCompleted: onCompleted
|
|
81
|
-
});
|
|
82
|
-
}
|
|
35
|
+
return environment.execute({
|
|
36
|
+
operation: operation,
|
|
37
|
+
updater: updater,
|
|
38
|
+
cacheConfig: {
|
|
39
|
+
force: true
|
|
40
|
+
}
|
|
41
|
+
}).map(function () {
|
|
42
|
+
var data = environment.lookup(operation.fragment).data; // $FlowFixMe
|
|
43
|
+
|
|
44
|
+
return data;
|
|
45
|
+
}).subscribeLegacy({
|
|
46
|
+
onNext: onNext,
|
|
47
|
+
onError: onError,
|
|
48
|
+
onCompleted: onCompleted
|
|
49
|
+
});
|
|
83
50
|
}
|
|
84
51
|
|
|
85
52
|
module.exports = requestRelaySubscription;
|
package/lib/simpleClone.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
@@ -19,7 +18,7 @@ function simpleClone(value) {
|
|
|
19
18
|
if (Array.isArray(value)) {
|
|
20
19
|
return value.map(simpleClone);
|
|
21
20
|
} else if (value && typeof value === 'object') {
|
|
22
|
-
return require(
|
|
21
|
+
return require("fbjs/lib/mapObject")(value, simpleClone);
|
|
23
22
|
} else {
|
|
24
23
|
return value;
|
|
25
24
|
}
|
package/lib/stableCopy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
'use strict';
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* Creates a copy of the provided value, ensuring any nested objects have their
|
|
15
13
|
* keys sorted such that equivalent values would have identical JSON.stringify
|
|
@@ -20,14 +18,18 @@ function stableCopy(value) {
|
|
|
20
18
|
if (!value || typeof value !== 'object') {
|
|
21
19
|
return value;
|
|
22
20
|
}
|
|
21
|
+
|
|
23
22
|
if (Array.isArray(value)) {
|
|
24
23
|
return value.map(stableCopy);
|
|
25
24
|
}
|
|
25
|
+
|
|
26
26
|
var keys = Object.keys(value).sort();
|
|
27
27
|
var stable = {};
|
|
28
|
+
|
|
28
29
|
for (var i = 0; i < keys.length; i++) {
|
|
29
30
|
stable[keys[i]] = stableCopy(value[keys[i]]);
|
|
30
31
|
}
|
|
32
|
+
|
|
31
33
|
return stable;
|
|
32
34
|
}
|
|
33
35
|
|