relay-runtime 11.0.2 → 12.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 (100) hide show
  1. package/index.js +1 -1
  2. package/index.js.flow +16 -1
  3. package/lib/index.js +15 -0
  4. package/lib/multi-actor-environment/ActorIdentifier.js +11 -1
  5. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +59 -19
  6. package/lib/multi-actor-environment/ActorUtils.js +27 -0
  7. package/lib/multi-actor-environment/MultiActorEnvironment.js +305 -55
  8. package/lib/multi-actor-environment/index.js +5 -1
  9. package/lib/mutations/RelayRecordSourceSelectorProxy.js +6 -1
  10. package/lib/mutations/commitMutation.js +4 -1
  11. package/lib/mutations/validateMutation.js +6 -1
  12. package/lib/network/RelayObservable.js +3 -1
  13. package/lib/network/RelayQueryResponseCache.js +19 -3
  14. package/lib/network/wrapNetworkWithLogObserver.js +78 -0
  15. package/lib/store/DataChecker.js +110 -40
  16. package/lib/store/OperationExecutor.js +478 -204
  17. package/lib/store/RelayConcreteVariables.js +21 -0
  18. package/lib/store/RelayModernEnvironment.js +41 -85
  19. package/lib/store/RelayModernFragmentSpecResolver.js +48 -22
  20. package/lib/store/RelayModernRecord.js +35 -1
  21. package/lib/store/RelayModernStore.js +48 -14
  22. package/lib/store/RelayOperationTracker.js +33 -23
  23. package/lib/store/RelayPublishQueue.js +23 -5
  24. package/lib/store/RelayReader.js +138 -44
  25. package/lib/store/RelayRecordSource.js +87 -3
  26. package/lib/store/RelayReferenceMarker.js +28 -15
  27. package/lib/store/RelayResponseNormalizer.js +164 -91
  28. package/lib/store/RelayStoreReactFlightUtils.js +1 -7
  29. package/lib/store/RelayStoreSubscriptions.js +8 -5
  30. package/lib/store/RelayStoreUtils.js +7 -2
  31. package/lib/store/ResolverCache.js +213 -0
  32. package/lib/store/ResolverFragments.js +1 -1
  33. package/lib/store/createRelayContext.js +1 -1
  34. package/lib/subscription/requestSubscription.js +27 -29
  35. package/lib/util/RelayConcreteNode.js +1 -0
  36. package/lib/util/RelayFeatureFlags.js +3 -5
  37. package/lib/util/RelayReplaySubject.js +21 -6
  38. package/lib/util/getPaginationMetadata.js +41 -0
  39. package/lib/util/getPaginationVariables.js +67 -0
  40. package/lib/util/getPendingOperationsForFragment.js +55 -0
  41. package/lib/util/getRefetchMetadata.js +36 -0
  42. package/lib/util/getValueAtPath.js +51 -0
  43. package/lib/util/isEmptyObject.js +1 -1
  44. package/lib/util/registerEnvironmentWithDevTools.js +26 -0
  45. package/lib/util/withDuration.js +31 -0
  46. package/multi-actor-environment/ActorIdentifier.js.flow +17 -1
  47. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +72 -44
  48. package/multi-actor-environment/ActorUtils.js.flow +33 -0
  49. package/multi-actor-environment/MultiActorEnvironment.js.flow +332 -80
  50. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +61 -12
  51. package/multi-actor-environment/index.js.flow +3 -0
  52. package/mutations/RelayRecordSourceSelectorProxy.js.flow +7 -2
  53. package/mutations/commitMutation.js.flow +2 -0
  54. package/mutations/validateMutation.js.flow +8 -0
  55. package/network/RelayObservable.js.flow +2 -0
  56. package/network/RelayQueryResponseCache.js.flow +31 -18
  57. package/network/wrapNetworkWithLogObserver.js.flow +99 -0
  58. package/package.json +1 -1
  59. package/relay-runtime.js +2 -2
  60. package/relay-runtime.min.js +2 -2
  61. package/store/ClientID.js.flow +5 -1
  62. package/store/DataChecker.js.flow +126 -35
  63. package/store/OperationExecutor.js.flow +528 -265
  64. package/store/RelayConcreteVariables.js.flow +26 -1
  65. package/store/RelayModernEnvironment.js.flow +41 -94
  66. package/store/RelayModernFragmentSpecResolver.js.flow +40 -14
  67. package/store/RelayModernOperationDescriptor.js.flow +9 -3
  68. package/store/RelayModernRecord.js.flow +49 -0
  69. package/store/RelayModernStore.js.flow +50 -12
  70. package/store/RelayOperationTracker.js.flow +56 -34
  71. package/store/RelayPublishQueue.js.flow +31 -8
  72. package/store/RelayReader.js.flow +148 -42
  73. package/store/RelayRecordSource.js.flow +72 -6
  74. package/store/RelayReferenceMarker.js.flow +29 -12
  75. package/store/RelayResponseNormalizer.js.flow +164 -48
  76. package/store/RelayStoreReactFlightUtils.js.flow +1 -7
  77. package/store/RelayStoreSubscriptions.js.flow +10 -3
  78. package/store/RelayStoreTypes.js.flow +128 -12
  79. package/store/RelayStoreUtils.js.flow +17 -3
  80. package/store/ResolverCache.js.flow +247 -0
  81. package/store/ResolverFragments.js.flow +6 -3
  82. package/store/createRelayContext.js.flow +1 -1
  83. package/subscription/requestSubscription.js.flow +41 -29
  84. package/util/NormalizationNode.js.flow +10 -3
  85. package/util/ReaderNode.js.flow +15 -1
  86. package/util/RelayConcreteNode.js.flow +1 -0
  87. package/util/RelayFeatureFlags.js.flow +8 -10
  88. package/util/RelayReplaySubject.js.flow +7 -6
  89. package/util/getPaginationMetadata.js.flow +74 -0
  90. package/util/getPaginationVariables.js.flow +112 -0
  91. package/util/getPendingOperationsForFragment.js.flow +62 -0
  92. package/util/getRefetchMetadata.js.flow +80 -0
  93. package/util/getValueAtPath.js.flow +46 -0
  94. package/util/isEmptyObject.js.flow +1 -0
  95. package/util/registerEnvironmentWithDevTools.js.flow +33 -0
  96. package/util/withDuration.js.flow +32 -0
  97. package/lib/store/RelayRecordSourceMapImpl.js +0 -107
  98. package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
  99. package/store/RelayRecordSourceMapImpl.js.flow +0 -91
  100. package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v11.0.2
2
+ * Relay v12.0.0
3
3
  *
4
4
  * Copyright (c) Facebook, Inc. and its affiliates.
5
5
  *
package/index.js.flow CHANGED
@@ -50,8 +50,13 @@ const fetchQuery = require('./query/fetchQuery');
50
50
  const fetchQueryInternal = require('./query/fetchQueryInternal');
51
51
  const fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
52
52
  const getFragmentIdentifier = require('./util/getFragmentIdentifier');
53
+ const getPaginationMetadata = require('./util/getPaginationMetadata');
54
+ const getPaginationVariables = require('./util/getPaginationVariables');
55
+ const getPendingOperationsForFragment = require('./util/getPendingOperationsForFragment');
56
+ const getRefetchMetadata = require('./util/getRefetchMetadata');
53
57
  const getRelayHandleKey = require('./util/getRelayHandleKey');
54
58
  const getRequestIdentifier = require('./util/getRequestIdentifier');
59
+ const getValueAtPath = require('./util/getValueAtPath');
55
60
  const isPromise = require('./util/isPromise');
56
61
  const isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
57
62
  const isScalarAndEqual = require('./util/isScalarAndEqual');
@@ -154,7 +159,11 @@ export type {
154
159
  Snapshot,
155
160
  StoreUpdater,
156
161
  } from './store/RelayStoreTypes';
157
- export type {GraphQLSubscriptionConfig} from './subscription/requestSubscription';
162
+ export type {
163
+ DEPRECATED_GraphQLSubscriptionConfig,
164
+ GraphQLSubscriptionConfig,
165
+ SubscriptionParameters,
166
+ } from './subscription/requestSubscription';
158
167
  export type {JSResourceReference} from './util/JSResourceTypes.flow';
159
168
  export type {
160
169
  NormalizationArgument,
@@ -207,6 +216,7 @@ export type {
207
216
  VariablesOf,
208
217
  } from './util/RelayRuntimeTypes';
209
218
  export type {Local3DPayload} from './util/createPayloadFor3DField';
219
+ export type {Direction} from './util/getPaginationVariables';
210
220
  export type {RequestIdentifier} from './util/getRequestIdentifier';
211
221
 
212
222
  // As early as possible, check for the existence of the JavaScript globals which
@@ -329,6 +339,11 @@ module.exports = {
329
339
  recycleNodesInto: recycleNodesInto,
330
340
  stableCopy: stableCopy,
331
341
  getFragmentIdentifier: getFragmentIdentifier,
342
+ getRefetchMetadata: getRefetchMetadata,
343
+ getPaginationMetadata: getPaginationMetadata,
344
+ getPaginationVariables: getPaginationVariables,
345
+ getPendingOperationsForFragment: getPendingOperationsForFragment,
346
+ getValueAtPath: getValueAtPath,
332
347
  __internal: {
333
348
  OperationTracker: RelayOperationTracker,
334
349
  createRelayContext: createRelayContext,
package/lib/index.js CHANGED
@@ -84,10 +84,20 @@ var fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
84
84
 
85
85
  var getFragmentIdentifier = require('./util/getFragmentIdentifier');
86
86
 
87
+ var getPaginationMetadata = require('./util/getPaginationMetadata');
88
+
89
+ var getPaginationVariables = require('./util/getPaginationVariables');
90
+
91
+ var getPendingOperationsForFragment = require('./util/getPendingOperationsForFragment');
92
+
93
+ var getRefetchMetadata = require('./util/getRefetchMetadata');
94
+
87
95
  var getRelayHandleKey = require('./util/getRelayHandleKey');
88
96
 
89
97
  var getRequestIdentifier = require('./util/getRequestIdentifier');
90
98
 
99
+ var getValueAtPath = require('./util/getValueAtPath');
100
+
91
101
  var isPromise = require('./util/isPromise');
92
102
 
93
103
  var isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
@@ -214,6 +224,11 @@ module.exports = {
214
224
  recycleNodesInto: recycleNodesInto,
215
225
  stableCopy: stableCopy,
216
226
  getFragmentIdentifier: getFragmentIdentifier,
227
+ getRefetchMetadata: getRefetchMetadata,
228
+ getPaginationMetadata: getPaginationMetadata,
229
+ getPaginationVariables: getPaginationVariables,
230
+ getPendingOperationsForFragment: getPendingOperationsForFragment,
231
+ getValueAtPath: getValueAtPath,
217
232
  __internal: {
218
233
  OperationTracker: RelayOperationTracker,
219
234
  createRelayContext: createRelayContext,
@@ -13,11 +13,21 @@
13
13
  * A unique identifier of the current actor.
14
14
  */
15
15
 
16
+ var invariant = require('invariant');
17
+
18
+ var INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = 'INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE';
19
+
20
+ function assertInternalActorIndentifier(actorIdentifier) {
21
+ !(actorIdentifier === INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Expected to use only internal version of the `actorIdentifier`. "%s" was provided.', actorIdentifier) : invariant(false) : void 0;
22
+ }
23
+
16
24
  module.exports = {
25
+ assertInternalActorIndentifier: assertInternalActorIndentifier,
17
26
  getActorIdentifier: function getActorIdentifier(actorID) {
18
27
  return actorID;
19
28
  },
20
29
  getDefaultActorIdentifier: function getDefaultActorIdentifier() {
21
30
  throw new Error('Not Implemented');
22
- }
31
+ },
32
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE
23
33
  };
@@ -12,50 +12,90 @@
12
12
 
13
13
  var RelayOperationTracker = require('../store/RelayOperationTracker');
14
14
 
15
- function todo() {
16
- throw new Error('Not implementd');
17
- }
15
+ var RelayPublishQueue = require('../store/RelayPublishQueue');
16
+
17
+ var defaultGetDataID = require('../store/defaultGetDataID');
18
+
19
+ var registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
20
+
21
+ var wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
18
22
 
19
23
  var ActorSpecificEnvironment = /*#__PURE__*/function () {
20
- // Actor specific properties
21
24
  function ActorSpecificEnvironment(config) {
25
+ var _this = this;
26
+
27
+ this.configName = config.configName;
22
28
  this.actorIdentifier = config.actorIdentifier;
23
29
  this.multiActorEnvironment = config.multiActorEnvironment;
24
30
  this.__log = config.logFn;
25
31
  this.requiredFieldLogger = config.requiredFieldLogger;
26
32
  this._operationTracker = new RelayOperationTracker();
27
33
  this._store = config.store;
28
- this._network = config.network;
34
+ this._network = wrapNetworkWithLogObserver(this, config.network);
35
+ this._publishQueue = new RelayPublishQueue(config.store, config.handlerProvider, defaultGetDataID);
36
+ this._defaultRenderPolicy = config.defaultRenderPolicy; // TODO:T92305692 Remove `options` in favor of directly using `actorIdentifier` on the environment
37
+
38
+ this.options = {
39
+ actorID: this.actorIdentifier
40
+ }; // We need to add this here to pass `isRelayModernEnvironment` check
41
+ // $FlowFixMe[prop-missing]
42
+
43
+ this['@@RelayModernEnvironment'] = true;
44
+
45
+ if (process.env.NODE_ENV !== "production") {
46
+ var _require = require('../store/StoreInspector'),
47
+ inspect = _require.inspect;
48
+
49
+ this.DEBUG_inspect = function (dataID) {
50
+ return inspect(_this, dataID);
51
+ };
52
+ } // Register this Relay Environment with Relay DevTools if it exists.
53
+ // Note: this must always be the last step in the constructor.
54
+
55
+
56
+ registerEnvironmentWithDevTools(this);
29
57
  }
30
58
 
31
59
  var _proto = ActorSpecificEnvironment.prototype;
32
60
 
61
+ _proto.getPublishQueue = function getPublishQueue() {
62
+ return this._publishQueue;
63
+ };
64
+
33
65
  _proto.UNSTABLE_getDefaultRenderPolicy = function UNSTABLE_getDefaultRenderPolicy() {
34
- return todo();
66
+ return this._defaultRenderPolicy;
35
67
  };
36
68
 
37
69
  _proto.applyMutation = function applyMutation(optimisticConfig) {
38
- return this.multiActorEnvironment.applyMutation(this.actorIdentifier, optimisticConfig);
70
+ return this.multiActorEnvironment.applyMutation(this, optimisticConfig);
39
71
  };
40
72
 
41
73
  _proto.applyUpdate = function applyUpdate(optimisticUpdate) {
42
- return this.multiActorEnvironment.applyUpdate(this.actorIdentifier, optimisticUpdate);
74
+ return this.multiActorEnvironment.applyUpdate(this, optimisticUpdate);
75
+ };
76
+
77
+ _proto.revertUpdate = function revertUpdate(optimisticUpdate) {
78
+ return this.multiActorEnvironment.revertUpdate(this, optimisticUpdate);
79
+ };
80
+
81
+ _proto.replaceUpdate = function replaceUpdate(optimisticUpdate, replacementUpdate) {
82
+ return this.multiActorEnvironment.replaceUpdate(this, optimisticUpdate, replacementUpdate);
43
83
  };
44
84
 
45
85
  _proto.check = function check(operation) {
46
- return this.multiActorEnvironment.check(this.actorIdentifier, operation);
86
+ return this.multiActorEnvironment.check(this, operation);
47
87
  };
48
88
 
49
89
  _proto.subscribe = function subscribe(snapshot, callback) {
50
- return this.multiActorEnvironment.subscribe(this.actorIdentifier, snapshot, callback);
90
+ return this.multiActorEnvironment.subscribe(this, snapshot, callback);
51
91
  };
52
92
 
53
93
  _proto.retain = function retain(operation) {
54
- return this.multiActorEnvironment.retain(this.actorIdentifier, operation);
94
+ return this.multiActorEnvironment.retain(this, operation);
55
95
  };
56
96
 
57
97
  _proto.commitUpdate = function commitUpdate(updater) {
58
- return this.multiActorEnvironment.commitUpdate(this.actorIdentifier, updater);
98
+ return this.multiActorEnvironment.commitUpdate(this, updater);
59
99
  }
60
100
  /**
61
101
  * Commit a payload to the environment using the given operation selector.
@@ -63,7 +103,7 @@ var ActorSpecificEnvironment = /*#__PURE__*/function () {
63
103
  ;
64
104
 
65
105
  _proto.commitPayload = function commitPayload(operationDescriptor, payload) {
66
- return this.multiActorEnvironment.commitPayload(this.actorIdentifier, operationDescriptor, payload);
106
+ return this.multiActorEnvironment.commitPayload(this, operationDescriptor, payload);
67
107
  };
68
108
 
69
109
  _proto.getNetwork = function getNetwork() {
@@ -79,27 +119,27 @@ var ActorSpecificEnvironment = /*#__PURE__*/function () {
79
119
  };
80
120
 
81
121
  _proto.lookup = function lookup(selector) {
82
- return this.multiActorEnvironment.lookup(this.actorIdentifier, selector);
122
+ return this.multiActorEnvironment.lookup(this, selector);
83
123
  };
84
124
 
85
125
  _proto.execute = function execute(config) {
86
- return this.multiActorEnvironment.execute(this.actorIdentifier, config);
126
+ return this.multiActorEnvironment.execute(this, config);
87
127
  };
88
128
 
89
129
  _proto.executeMutation = function executeMutation(options) {
90
- return this.multiActorEnvironment.executeMutation(this.actorIdentifier, options);
130
+ return this.multiActorEnvironment.executeMutation(this, options);
91
131
  };
92
132
 
93
133
  _proto.executeWithSource = function executeWithSource(options) {
94
- return this.multiActorEnvironment.executeWithSource(this.actorIdentifier, options);
134
+ return this.multiActorEnvironment.executeWithSource(this, options);
95
135
  };
96
136
 
97
137
  _proto.isRequestActive = function isRequestActive(requestIdentifier) {
98
- return this.multiActorEnvironment.isRequestActive(this.actorIdentifier, requestIdentifier);
138
+ return this.multiActorEnvironment.isRequestActive(this, requestIdentifier);
99
139
  };
100
140
 
101
141
  _proto.isServer = function isServer() {
102
- return todo();
142
+ return this.multiActorEnvironment.isServer();
103
143
  };
104
144
 
105
145
  return ActorSpecificEnvironment;
@@ -0,0 +1,27 @@
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
+ * @emails oncall+relay
8
+ *
9
+ * @format
10
+ */
11
+ 'use strict';
12
+
13
+ var ACTOR_IDENTIFIER_FIELD_NAME = 'actor_key';
14
+
15
+ var _require = require('./ActorIdentifier'),
16
+ getActorIdentifier = _require.getActorIdentifier;
17
+
18
+ function getActorIdentifierFromPayload(payload) {
19
+ if (payload != null && typeof payload === 'object' && typeof payload[ACTOR_IDENTIFIER_FIELD_NAME] === 'string') {
20
+ return getActorIdentifier(payload[ACTOR_IDENTIFIER_FIELD_NAME]);
21
+ }
22
+ }
23
+
24
+ module.exports = {
25
+ ACTOR_IDENTIFIER_FIELD_NAME: ACTOR_IDENTIFIER_FIELD_NAME,
26
+ getActorIdentifierFromPayload: getActorIdentifierFromPayload
27
+ };