relay-runtime 8.0.0 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +41 -0
  2. package/handlers/connection/ConnectionHandler.js.flow +549 -0
  3. package/handlers/connection/ConnectionInterface.js.flow +92 -0
  4. package/handlers/connection/MutationHandlers.js.flow +88 -0
  5. package/index.js +1 -1
  6. package/index.js.flow +320 -0
  7. package/lib/handlers/RelayDefaultHandlerProvider.js +13 -2
  8. package/lib/handlers/connection/{RelayConnectionHandler.js → ConnectionHandler.js} +33 -35
  9. package/lib/handlers/connection/{RelayConnectionInterface.js → ConnectionInterface.js} +2 -2
  10. package/lib/handlers/connection/MutationHandlers.js +86 -0
  11. package/lib/index.js +15 -19
  12. package/lib/mutations/RelayDeclarativeMutationConfig.js +29 -52
  13. package/lib/mutations/RelayRecordProxy.js +1 -3
  14. package/lib/mutations/RelayRecordSourceMutator.js +2 -9
  15. package/lib/mutations/RelayRecordSourceProxy.js +2 -4
  16. package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -13
  17. package/lib/mutations/commitMutation.js +13 -3
  18. package/lib/mutations/validateMutation.js +16 -9
  19. package/lib/network/RelayObservable.js +9 -9
  20. package/lib/network/RelayQueryResponseCache.js +8 -6
  21. package/lib/query/PreloadableQueryRegistry.js +70 -0
  22. package/lib/query/fetchQueryInternal.js +31 -23
  23. package/lib/store/DataChecker.js +122 -110
  24. package/lib/store/RelayConcreteVariables.js +6 -2
  25. package/lib/store/RelayModernEnvironment.js +121 -67
  26. package/lib/store/RelayModernFragmentSpecResolver.js +12 -16
  27. package/lib/store/RelayModernQueryExecutor.js +389 -314
  28. package/lib/store/RelayModernRecord.js +14 -9
  29. package/lib/store/RelayModernSelector.js +7 -3
  30. package/lib/store/RelayModernStore.js +289 -484
  31. package/lib/store/RelayOperationTracker.js +35 -78
  32. package/lib/store/RelayOptimisticRecordSource.js +7 -5
  33. package/lib/store/RelayPublishQueue.js +6 -33
  34. package/lib/store/RelayReader.js +113 -45
  35. package/lib/store/RelayRecordSource.js +2 -9
  36. package/lib/store/RelayRecordSourceMapImpl.js +13 -18
  37. package/lib/store/RelayReferenceMarker.js +40 -60
  38. package/lib/store/RelayResponseNormalizer.js +158 -193
  39. package/lib/store/RelayStoreUtils.js +1 -0
  40. package/lib/store/StoreInspector.js +8 -8
  41. package/lib/store/TypeID.js +28 -0
  42. package/lib/store/cloneRelayScalarHandleSourceField.js +44 -0
  43. package/lib/store/normalizeRelayPayload.js +6 -2
  44. package/lib/store/readInlineData.js +1 -1
  45. package/lib/subscription/requestSubscription.js +5 -3
  46. package/lib/util/RelayConcreteNode.js +9 -6
  47. package/lib/util/RelayError.js +39 -9
  48. package/lib/util/RelayFeatureFlags.js +2 -5
  49. package/lib/util/RelayReplaySubject.js +3 -3
  50. package/lib/util/createPayloadFor3DField.js +7 -2
  51. package/lib/util/getRequestIdentifier.js +2 -2
  52. package/lib/util/recycleNodesInto.js +2 -6
  53. package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
  54. package/mutations/RelayRecordProxy.js.flow +165 -0
  55. package/mutations/RelayRecordSourceMutator.js.flow +238 -0
  56. package/mutations/RelayRecordSourceProxy.js.flow +164 -0
  57. package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
  58. package/mutations/applyOptimisticMutation.js.flow +76 -0
  59. package/mutations/commitLocalUpdate.js.flow +24 -0
  60. package/mutations/commitMutation.js.flow +182 -0
  61. package/mutations/validateMutation.js.flow +213 -0
  62. package/network/ConvertToExecuteFunction.js.flow +49 -0
  63. package/network/RelayNetwork.js.flow +84 -0
  64. package/network/RelayNetworkTypes.js.flow +123 -0
  65. package/network/RelayObservable.js.flow +634 -0
  66. package/network/RelayQueryResponseCache.js.flow +111 -0
  67. package/package.json +1 -1
  68. package/query/GraphQLTag.js.flow +166 -0
  69. package/query/PreloadableQueryRegistry.js.flow +65 -0
  70. package/query/fetchQuery.js.flow +47 -0
  71. package/query/fetchQueryInternal.js.flow +348 -0
  72. package/relay-runtime.js +2 -2
  73. package/relay-runtime.min.js +2 -2
  74. package/store/ClientID.js.flow +43 -0
  75. package/store/DataChecker.js.flow +502 -0
  76. package/store/RelayConcreteVariables.js.flow +96 -0
  77. package/store/RelayModernEnvironment.js.flow +551 -0
  78. package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
  79. package/store/RelayModernOperationDescriptor.js.flow +88 -0
  80. package/store/RelayModernQueryExecutor.js.flow +1321 -0
  81. package/store/RelayModernRecord.js.flow +403 -0
  82. package/store/RelayModernSelector.js.flow +455 -0
  83. package/store/RelayModernStore.js.flow +842 -0
  84. package/store/RelayOperationTracker.js.flow +164 -0
  85. package/store/RelayOptimisticRecordSource.js.flow +119 -0
  86. package/store/RelayPublishQueue.js.flow +401 -0
  87. package/store/RelayReader.js.flow +473 -0
  88. package/store/RelayRecordSource.js.flow +29 -0
  89. package/store/RelayRecordSourceMapImpl.js.flow +87 -0
  90. package/store/RelayRecordState.js.flow +37 -0
  91. package/store/RelayReferenceMarker.js.flow +257 -0
  92. package/store/RelayResponseNormalizer.js.flow +680 -0
  93. package/store/RelayStoreTypes.js.flow +899 -0
  94. package/store/RelayStoreUtils.js.flow +219 -0
  95. package/store/StoreInspector.js.flow +171 -0
  96. package/store/TypeID.js.flow +28 -0
  97. package/store/ViewerPattern.js.flow +26 -0
  98. package/store/cloneRelayHandleSourceField.js.flow +66 -0
  99. package/store/cloneRelayScalarHandleSourceField.js.flow +62 -0
  100. package/store/createFragmentSpecResolver.js.flow +55 -0
  101. package/store/createRelayContext.js.flow +44 -0
  102. package/store/defaultGetDataID.js.flow +27 -0
  103. package/store/hasOverlappingIDs.js.flow +34 -0
  104. package/store/isRelayModernEnvironment.js.flow +27 -0
  105. package/store/normalizeRelayPayload.js.flow +51 -0
  106. package/store/readInlineData.js.flow +75 -0
  107. package/subscription/requestSubscription.js.flow +100 -0
  108. package/util/JSResourceTypes.flow.js.flow +20 -0
  109. package/util/NormalizationNode.js.flow +198 -0
  110. package/util/ReaderNode.js.flow +208 -0
  111. package/util/RelayConcreteNode.js.flow +93 -0
  112. package/util/RelayDefaultHandleKey.js.flow +17 -0
  113. package/util/RelayError.js.flow +62 -0
  114. package/util/RelayFeatureFlags.js.flow +30 -0
  115. package/util/RelayProfiler.js.flow +284 -0
  116. package/util/RelayReplaySubject.js.flow +135 -0
  117. package/util/RelayRuntimeTypes.js.flow +72 -0
  118. package/util/createPayloadFor3DField.js.flow +43 -0
  119. package/util/deepFreeze.js.flow +36 -0
  120. package/util/generateID.js.flow +21 -0
  121. package/util/getFragmentIdentifier.js.flow +52 -0
  122. package/util/getRelayHandleKey.js.flow +41 -0
  123. package/util/getRequestIdentifier.js.flow +42 -0
  124. package/util/isPromise.js.flow +21 -0
  125. package/util/isScalarAndEqual.js.flow +26 -0
  126. package/util/recycleNodesInto.js.flow +76 -0
  127. package/util/resolveImmediate.js.flow +30 -0
  128. package/util/stableCopy.js.flow +35 -0
  129. package/lib/handlers/RelayDefaultMissingFieldHandlers.js +0 -26
  130. package/lib/handlers/getRelayDefaultMissingFieldHandlers.js +0 -36
  131. package/lib/query/RelayModernGraphQLTag.js +0 -104
  132. package/lib/store/RelayConnection.js +0 -37
  133. package/lib/store/RelayConnectionResolver.js +0 -178
  134. package/lib/store/RelayRecordSourceObjectImpl.js +0 -79
  135. package/lib/util/getFragmentSpecIdentifier.js +0 -27
@@ -1,178 +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
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
-
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
-
15
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
16
-
17
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
-
19
- var invariant = require("fbjs/lib/invariant");
20
-
21
- var ConnectionResolver = {
22
- initialize: function initialize() {
23
- return {
24
- edges: [],
25
- pageInfo: {
26
- endCursor: null,
27
- hasNextPage: null,
28
- hasPrevPage: null,
29
- startCursor: null
30
- }
31
- };
32
- },
33
- reduce: function reduce(state, event) {
34
- var nextEdges = [];
35
- var nextPageInfo = (0, _objectSpread2["default"])({}, state.pageInfo);
36
- var seenNodes = new Set();
37
-
38
- function pushEdge(edge) {
39
- if (edge != null && edge.node != null && !seenNodes.has(edge.node.__id)) {
40
- seenNodes.add(edge.node.__id);
41
- nextEdges.push(edge);
42
- return edge;
43
- }
44
- }
45
-
46
- if (event.kind === 'update') {
47
- state.edges.forEach(function (edge) {
48
- var nextEdge = event.edgeData.hasOwnProperty(edge.__id) ? event.edgeData[edge.__id] : edge;
49
- pushEdge(nextEdge);
50
- });
51
- } else if (event.kind === 'fetch') {
52
- var eventPageInfo = event.pageInfo;
53
-
54
- if (event.args.after != null) {
55
- var _ref, _ref2;
56
-
57
- if (event.args.after !== state.pageInfo.endCursor) {
58
- return state;
59
- }
60
-
61
- state.edges.forEach(function (edge) {
62
- pushEdge(edge);
63
- });
64
- event.edges.forEach(function (nextEdge) {
65
- pushEdge(nextEdge);
66
- });
67
- nextPageInfo.endCursor = (_ref = eventPageInfo === null || eventPageInfo === void 0 ? void 0 : eventPageInfo.endCursor) !== null && _ref !== void 0 ? _ref : nextPageInfo.endCursor;
68
- nextPageInfo.hasNextPage = (_ref2 = eventPageInfo === null || eventPageInfo === void 0 ? void 0 : eventPageInfo.hasNextPage) !== null && _ref2 !== void 0 ? _ref2 : nextPageInfo.hasNextPage;
69
- } else if (event.args.before != null) {
70
- var _ref3, _ref4;
71
-
72
- if (event.args.before !== state.pageInfo.startCursor) {
73
- return state;
74
- }
75
-
76
- event.edges.forEach(function (nextEdge) {
77
- pushEdge(nextEdge);
78
- });
79
- state.edges.forEach(function (edge) {
80
- pushEdge(edge);
81
- });
82
- nextPageInfo.startCursor = (_ref3 = eventPageInfo === null || eventPageInfo === void 0 ? void 0 : eventPageInfo.startCursor) !== null && _ref3 !== void 0 ? _ref3 : nextPageInfo.startCursor;
83
- nextPageInfo.hasPrevPage = (_ref4 = eventPageInfo === null || eventPageInfo === void 0 ? void 0 : eventPageInfo.hasPrevPage) !== null && _ref4 !== void 0 ? _ref4 : nextPageInfo.hasPrevPage;
84
- } else if (event.args.before == null && event.args.after == null) {
85
- event.edges.forEach(function (nextEdge) {
86
- pushEdge(nextEdge);
87
- });
88
-
89
- if (eventPageInfo != null) {
90
- nextPageInfo = eventPageInfo;
91
- }
92
- }
93
- } else if (event.kind === 'insert') {
94
- state.edges.forEach(function (edge) {
95
- pushEdge(edge);
96
- });
97
- var nextEdge = pushEdge(event.edge);
98
-
99
- if (nextEdge != null) {
100
- var _nextEdge$cursor;
101
-
102
- nextPageInfo.endCursor = (_nextEdge$cursor = nextEdge.cursor) !== null && _nextEdge$cursor !== void 0 ? _nextEdge$cursor : nextPageInfo.endCursor;
103
- }
104
- } else if (event.kind === 'stream.edge') {
105
- if (event.args.after != null) {
106
- if (event.index === 0 && state.pageInfo.endCursor != null && event.args.after !== state.pageInfo.endCursor) {
107
- return state;
108
- }
109
-
110
- state.edges.forEach(function (edge) {
111
- pushEdge(edge);
112
- });
113
-
114
- var _nextEdge = pushEdge(event.edge);
115
-
116
- if (_nextEdge) {
117
- var _nextEdge$cursor2;
118
-
119
- nextPageInfo.endCursor = (_nextEdge$cursor2 = _nextEdge.cursor) !== null && _nextEdge$cursor2 !== void 0 ? _nextEdge$cursor2 : nextPageInfo.endCursor;
120
- }
121
- } else if (event.args.before != null) {
122
- if (event.index === 0 && state.pageInfo.startCursor != null && event.args.before !== state.pageInfo.startCursor) {
123
- return state;
124
- }
125
-
126
- var _nextEdge2 = pushEdge(event.edge);
127
-
128
- if (_nextEdge2) {
129
- var _nextEdge$cursor3;
130
-
131
- nextPageInfo.startCursor = (_nextEdge$cursor3 = _nextEdge2.cursor) !== null && _nextEdge$cursor3 !== void 0 ? _nextEdge$cursor3 : nextPageInfo.startCursor;
132
- }
133
-
134
- state.edges.forEach(function (edge) {
135
- pushEdge(edge);
136
- });
137
- } else if (event.args.after == null || event.args.before == null) {
138
- state.edges.forEach(function (edge) {
139
- pushEdge(edge);
140
- });
141
-
142
- var _nextEdge3 = pushEdge(event.edge);
143
-
144
- if (_nextEdge3 != null) {
145
- var _nextEdge$cursor4;
146
-
147
- nextPageInfo.endCursor = (_nextEdge$cursor4 = _nextEdge3.cursor) !== null && _nextEdge$cursor4 !== void 0 ? _nextEdge$cursor4 : nextPageInfo.endCursor;
148
- }
149
- }
150
- } else if (event.kind === 'stream.pageInfo') {
151
- nextEdges.push.apply(nextEdges, (0, _toConsumableArray2["default"])(state.edges));
152
-
153
- if (event.args.after != null) {
154
- var _event$pageInfo$endCu;
155
-
156
- nextPageInfo.endCursor = (_event$pageInfo$endCu = event.pageInfo.endCursor) !== null && _event$pageInfo$endCu !== void 0 ? _event$pageInfo$endCu : nextPageInfo.endCursor;
157
- nextPageInfo.hasNextPage = !!event.pageInfo.hasNextPage;
158
- } else if (event.args.before != null) {
159
- var _event$pageInfo$start;
160
-
161
- nextPageInfo.startCursor = (_event$pageInfo$start = event.pageInfo.startCursor) !== null && _event$pageInfo$start !== void 0 ? _event$pageInfo$start : nextPageInfo.startCursor;
162
- nextPageInfo.hasPrevPage = !!event.pageInfo.hasPrevPage;
163
- } else {
164
- // stream refetch
165
- nextPageInfo = event.pageInfo;
166
- }
167
- } else {
168
- event;
169
- !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'ConnectionResolver-test: Unexpected event kind `%s`.', event.kind) : invariant(false) : void 0;
170
- }
171
-
172
- return {
173
- edges: nextEdges,
174
- pageInfo: nextPageInfo
175
- };
176
- }
177
- };
178
- module.exports = ConnectionResolver;
@@ -1,79 +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
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
-
13
- var RelayRecordState = require('./RelayRecordState');
14
-
15
- var EXISTENT = RelayRecordState.EXISTENT,
16
- NONEXISTENT = RelayRecordState.NONEXISTENT,
17
- UNKNOWN = RelayRecordState.UNKNOWN;
18
- /**
19
- * An implementation of the `MutableRecordSource` interface (defined in
20
- * `RelayStoreTypes`) that holds all records in memory.
21
- */
22
-
23
- var RelayRecordSourceObjectImpl =
24
- /*#__PURE__*/
25
- function () {
26
- function RelayRecordSourceObjectImpl(records) {
27
- this._records = records || {};
28
- }
29
-
30
- var _proto = RelayRecordSourceObjectImpl.prototype;
31
-
32
- _proto.clear = function clear() {
33
- this._records = {};
34
- };
35
-
36
- _proto["delete"] = function _delete(dataID) {
37
- this._records[dataID] = null;
38
- };
39
-
40
- _proto.get = function get(dataID) {
41
- return this._records[dataID];
42
- };
43
-
44
- _proto.getRecordIDs = function getRecordIDs() {
45
- return Object.keys(this._records);
46
- };
47
-
48
- _proto.getStatus = function getStatus(dataID) {
49
- if (!this._records.hasOwnProperty(dataID)) {
50
- return UNKNOWN;
51
- }
52
-
53
- return this._records[dataID] == null ? NONEXISTENT : EXISTENT;
54
- };
55
-
56
- _proto.has = function has(dataID) {
57
- return this._records.hasOwnProperty(dataID);
58
- };
59
-
60
- _proto.remove = function remove(dataID) {
61
- delete this._records[dataID];
62
- };
63
-
64
- _proto.set = function set(dataID, record) {
65
- this._records[dataID] = record;
66
- };
67
-
68
- _proto.size = function size() {
69
- return Object.keys(this._records).length;
70
- };
71
-
72
- _proto.toJSON = function toJSON() {
73
- return this._records;
74
- };
75
-
76
- return RelayRecordSourceObjectImpl;
77
- }();
78
-
79
- module.exports = RelayRecordSourceObjectImpl;
@@ -1,27 +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
- * @emails oncall+relay
10
- */
11
- // flowlint ambiguous-object-type:error
12
- 'use strict';
13
-
14
- var getFragmentIdentifier = require('./getFragmentIdentifier');
15
-
16
- var mapObject = require("fbjs/lib/mapObject");
17
-
18
- var stableCopy = require('./stableCopy');
19
-
20
- function getFragmentSpecIdentifier(fragmentNodes, fragmentRefs) {
21
- return JSON.stringify(stableCopy(mapObject(fragmentNodes, function (fragmentNode, key) {
22
- var fragmentRef = fragmentRefs[key];
23
- return getFragmentIdentifier(fragmentNode, fragmentRef);
24
- })));
25
- }
26
-
27
- module.exports = getFragmentSpecIdentifier;