relay-runtime 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.
Files changed (77) hide show
  1. package/index.js +1 -1
  2. package/lib/{generateRelayClientID.js → ClientID.js} +10 -3
  3. package/lib/ConvertToExecuteFunction.js +6 -4
  4. package/lib/DataChecker.js +88 -69
  5. package/lib/NormalizationNode.js +1 -1
  6. package/lib/ReaderNode.js +1 -1
  7. package/lib/RelayCombinedEnvironmentTypes.js +1 -1
  8. package/lib/RelayConcreteNode.js +5 -2
  9. package/lib/RelayConcreteVariables.js +15 -9
  10. package/lib/RelayConnectionHandler.js +27 -20
  11. package/lib/RelayConnectionInterface.js +4 -2
  12. package/lib/RelayCore.js +48 -15
  13. package/lib/RelayDeclarativeMutationConfig.js +16 -15
  14. package/lib/RelayDefaultHandleKey.js +1 -1
  15. package/lib/RelayDefaultHandlerProvider.js +7 -6
  16. package/lib/RelayDefaultMissingFieldHandlers.js +26 -0
  17. package/lib/RelayError.js +7 -2
  18. package/lib/RelayFeatureFlags.js +16 -0
  19. package/lib/RelayInMemoryRecordSource.js +8 -2
  20. package/lib/RelayModernEnvironment.js +159 -237
  21. package/lib/RelayModernFragmentOwner.js +72 -0
  22. package/lib/RelayModernFragmentSpecResolver.js +66 -15
  23. package/lib/RelayModernGraphQLTag.js +9 -5
  24. package/lib/RelayModernOperationDescriptor.js +9 -6
  25. package/lib/RelayModernQueryExecutor.js +791 -0
  26. package/lib/RelayModernRecord.js +44 -24
  27. package/lib/RelayModernSelector.js +208 -82
  28. package/lib/RelayModernStore.js +66 -34
  29. package/lib/RelayNetwork.js +14 -7
  30. package/lib/RelayNetworkLogger.js +6 -2
  31. package/lib/RelayNetworkLoggerTransaction.js +8 -4
  32. package/lib/RelayNetworkTypes.js +1 -1
  33. package/lib/RelayObservable.js +72 -41
  34. package/lib/RelayOperationTracker.js +265 -0
  35. package/lib/RelayProfiler.js +10 -6
  36. package/lib/RelayPublishQueue.js +66 -47
  37. package/lib/RelayQueryResponseCache.js +11 -5
  38. package/lib/RelayReader.js +135 -126
  39. package/lib/RelayRecordProxy.js +24 -20
  40. package/lib/RelayRecordSourceMutator.js +88 -25
  41. package/lib/RelayRecordSourceProxy.js +38 -19
  42. package/lib/RelayRecordSourceSelectorProxy.js +10 -7
  43. package/lib/RelayRecordState.js +1 -1
  44. package/lib/RelayReferenceMarker.js +66 -55
  45. package/lib/RelayReplaySubject.js +134 -0
  46. package/lib/RelayResponseNormalizer.js +245 -134
  47. package/lib/RelayRuntimeTypes.js +1 -1
  48. package/lib/RelayStoreUtils.js +55 -16
  49. package/lib/RelayViewerHandler.js +8 -50
  50. package/lib/StoreInspector.js +171 -0
  51. package/lib/applyRelayModernOptimisticMutation.js +8 -2
  52. package/lib/cloneRelayHandleSourceField.js +17 -7
  53. package/lib/commitLocalUpdate.js +1 -1
  54. package/lib/commitRelayModernMutation.js +33 -13
  55. package/lib/createRelayContext.js +27 -0
  56. package/lib/createRelayNetworkLogger.js +8 -2
  57. package/lib/deepFreeze.js +1 -1
  58. package/lib/defaultGetDataID.js +24 -0
  59. package/lib/fetchQueryInternal.js +232 -0
  60. package/lib/fetchRelayModernQuery.js +5 -3
  61. package/lib/getFragmentIdentifier.js +52 -0
  62. package/lib/getFragmentSpecIdentifier.js +26 -0
  63. package/lib/getRelayHandleKey.js +8 -2
  64. package/lib/getRequestParametersIdentifier.js +26 -0
  65. package/lib/hasOverlappingIDs.js +1 -1
  66. package/lib/index.js +155 -53
  67. package/lib/isPromise.js +1 -1
  68. package/lib/isScalarAndEqual.js +1 -1
  69. package/lib/normalizeRelayPayload.js +19 -10
  70. package/lib/recycleNodesInto.js +23 -5
  71. package/lib/requestRelaySubscription.js +9 -3
  72. package/lib/validateMutation.js +13 -6
  73. package/package.json +2 -2
  74. package/relay-runtime.js +2 -2
  75. package/relay-runtime.min.js +2 -2
  76. package/lib/normalizePayload.js +0 -37
  77. package/lib/simpleClone.js +0 -27
@@ -0,0 +1,134 @@
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 _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var RelayObservable = require("./RelayObservable");
17
+
18
+ var invariant = require("fbjs/lib/invariant");
19
+
20
+ /**
21
+ * An implementation of a `ReplaySubject` for Relay Observables.
22
+ *
23
+ * Records events provided and synchronously plays them back to new subscribers,
24
+ * as well as forwarding new asynchronous events.
25
+ */
26
+ var RelayReplaySubject =
27
+ /*#__PURE__*/
28
+ function () {
29
+ function RelayReplaySubject() {
30
+ var _this = this;
31
+
32
+ (0, _defineProperty2["default"])(this, "_complete", false);
33
+ (0, _defineProperty2["default"])(this, "_events", []);
34
+ (0, _defineProperty2["default"])(this, "_sinks", new Set());
35
+ this._observable = RelayObservable.create(function (sink) {
36
+ _this._sinks.add(sink);
37
+
38
+ var events = _this._events;
39
+
40
+ for (var i = 0; i < events.length; i++) {
41
+ if (sink.closed) {
42
+ // Bail if an event made the observer unsubscribe.
43
+ break;
44
+ }
45
+
46
+ var event = events[i];
47
+
48
+ switch (event.kind) {
49
+ case 'complete':
50
+ sink.complete();
51
+ break;
52
+
53
+ case 'error':
54
+ sink.error(event.error);
55
+ break;
56
+
57
+ case 'next':
58
+ sink.next(event.data);
59
+ break;
60
+
61
+ default:
62
+ event.kind;
63
+ !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReplaySubject: Unknown event kind `%s`.', event.kind) : invariant(false) : void 0;
64
+ }
65
+ }
66
+
67
+ return function () {
68
+ _this._sinks["delete"](sink);
69
+ };
70
+ });
71
+ }
72
+
73
+ var _proto = RelayReplaySubject.prototype;
74
+
75
+ _proto.complete = function complete() {
76
+ if (this._complete === true) {
77
+ return;
78
+ }
79
+
80
+ this._complete = true;
81
+
82
+ this._events.push({
83
+ kind: 'complete'
84
+ });
85
+
86
+ this._sinks.forEach(function (sink) {
87
+ return sink.complete();
88
+ });
89
+ };
90
+
91
+ _proto.error = function error(_error) {
92
+ if (this._complete === true) {
93
+ return;
94
+ }
95
+
96
+ this._complete = true;
97
+
98
+ this._events.push({
99
+ kind: 'error',
100
+ error: _error
101
+ });
102
+
103
+ this._sinks.forEach(function (sink) {
104
+ return sink.error(_error);
105
+ });
106
+ };
107
+
108
+ _proto.next = function next(data) {
109
+ if (this._complete === true) {
110
+ return;
111
+ }
112
+
113
+ this._events.push({
114
+ kind: 'next',
115
+ data: data
116
+ });
117
+
118
+ this._sinks.forEach(function (sink) {
119
+ return sink.next(data);
120
+ });
121
+ };
122
+
123
+ _proto.subscribe = function subscribe(observer) {
124
+ return this._observable.subscribe(observer);
125
+ };
126
+
127
+ _proto.getObserverCount = function getObserverCount() {
128
+ return this._sinks.size;
129
+ };
130
+
131
+ return RelayReplaySubject;
132
+ }();
133
+
134
+ module.exports = RelayReplaySubject;