relay-runtime 11.0.1 → 11.0.2
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 +1 -1
- package/index.js.flow +4 -2
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +1 -1
- package/lib/handlers/connection/MutationHandlers.js +1 -1
- package/lib/multi-actor-environment/ActorIdentifier.js +23 -0
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +108 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +156 -0
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +11 -0
- package/lib/multi-actor-environment/index.js +17 -0
- package/lib/mutations/RelayRecordProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceMutator.js +1 -1
- package/lib/mutations/RelayRecordSourceProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -1
- package/lib/mutations/applyOptimisticMutation.js +1 -1
- package/lib/mutations/commitMutation.js +1 -1
- package/lib/network/RelayNetwork.js +1 -1
- package/lib/network/RelayQueryResponseCache.js +1 -1
- package/lib/query/GraphQLTag.js +1 -1
- package/lib/query/fetchQuery.js +1 -1
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/store/DataChecker.js +1 -1
- package/lib/store/{RelayModernQueryExecutor.js → OperationExecutor.js} +81 -37
- package/lib/store/RelayConcreteVariables.js +1 -1
- package/lib/store/RelayModernEnvironment.js +99 -144
- package/lib/store/RelayModernFragmentSpecResolver.js +1 -1
- package/lib/store/RelayModernRecord.js +1 -1
- package/lib/store/RelayModernSelector.js +1 -1
- package/lib/store/RelayModernStore.js +1 -6
- package/lib/store/RelayOperationTracker.js +1 -1
- package/lib/store/RelayPublishQueue.js +9 -5
- package/lib/store/RelayReader.js +63 -10
- package/lib/store/RelayReferenceMarker.js +1 -1
- package/lib/store/RelayResponseNormalizer.js +47 -22
- package/lib/store/RelayStoreReactFlightUtils.js +1 -1
- package/lib/store/RelayStoreUtils.js +1 -1
- package/lib/store/ResolverFragments.js +57 -0
- package/lib/store/cloneRelayHandleSourceField.js +1 -1
- package/lib/store/cloneRelayScalarHandleSourceField.js +1 -1
- package/lib/store/createRelayContext.js +1 -1
- package/lib/store/readInlineData.js +1 -1
- package/lib/subscription/requestSubscription.js +18 -7
- package/lib/util/RelayConcreteNode.js +1 -0
- package/lib/util/RelayFeatureFlags.js +3 -1
- package/lib/util/RelayProfiler.js +17 -187
- package/lib/util/RelayReplaySubject.js +1 -1
- package/lib/util/getRelayHandleKey.js +1 -1
- package/lib/util/getRequestIdentifier.js +1 -1
- package/multi-actor-environment/ActorIdentifier.js.flow +27 -0
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +189 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +233 -0
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +196 -0
- package/multi-actor-environment/index.js.flow +24 -0
- package/network/RelayNetworkTypes.js.flow +5 -4
- package/package.json +3 -2
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/{RelayModernQueryExecutor.js.flow → OperationExecutor.js.flow} +82 -35
- package/store/RelayModernEnvironment.js.flow +88 -131
- package/store/RelayModernStore.js.flow +0 -5
- package/store/RelayPublishQueue.js.flow +7 -4
- package/store/RelayReader.js.flow +57 -5
- package/store/RelayResponseNormalizer.js.flow +67 -26
- package/store/RelayStoreTypes.js.flow +15 -8
- package/store/ResolverFragments.js.flow +125 -0
- package/subscription/requestSubscription.js.flow +15 -7
- package/util/ReaderNode.js.flow +14 -1
- package/util/RelayConcreteNode.js.flow +1 -0
- package/util/RelayFeatureFlags.js.flow +4 -0
- package/util/RelayProfiler.js.flow +22 -194
- package/util/RelayRuntimeTypes.js.flow +3 -1
|
@@ -10,25 +10,9 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var aggregateHandlersByName = {
|
|
16
|
-
'*': []
|
|
17
|
-
};
|
|
18
|
-
var profileHandlersByName = {
|
|
19
|
-
'*': []
|
|
20
|
-
};
|
|
21
|
-
var NOT_INVOKED = {};
|
|
13
|
+
var profileHandlersByName = {};
|
|
22
14
|
var defaultProfiler = {
|
|
23
|
-
stop:
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
var shouldInstrument = function shouldInstrument(name) {
|
|
27
|
-
if (process.env.NODE_ENV !== "production") {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return name.charAt(0) !== '@';
|
|
15
|
+
stop: function stop() {}
|
|
32
16
|
};
|
|
33
17
|
/**
|
|
34
18
|
* @public
|
|
@@ -57,152 +41,9 @@ var shouldInstrument = function shouldInstrument(name) {
|
|
|
57
41
|
* console.log(`Duration (${name})`, performance.now() - start);
|
|
58
42
|
* }
|
|
59
43
|
* });
|
|
60
|
-
*
|
|
61
|
-
* In order to reduce the impact on performance in production, instrumented
|
|
62
|
-
* methods and profilers with names that begin with `@` will only be measured
|
|
63
|
-
* if `__DEV__` is true. This should be used for very hot functions.
|
|
64
44
|
*/
|
|
65
45
|
|
|
66
|
-
|
|
67
46
|
var RelayProfiler = {
|
|
68
|
-
/**
|
|
69
|
-
* Instruments methods on a class or object. This re-assigns the method in
|
|
70
|
-
* order to preserve function names in stack traces (which are detected by
|
|
71
|
-
* modern debuggers via heuristics). Example usage:
|
|
72
|
-
*
|
|
73
|
-
* const RelayStore = { primeCache: function() {...} };
|
|
74
|
-
* RelayProfiler.instrumentMethods(RelayStore, {
|
|
75
|
-
* primeCache: 'RelayStore.primeCache'
|
|
76
|
-
* });
|
|
77
|
-
*
|
|
78
|
-
* RelayStore.primeCache.attachHandler(...);
|
|
79
|
-
*
|
|
80
|
-
* As a result, the methods will be replaced by wrappers that provide the
|
|
81
|
-
* `attachHandler` and `detachHandler` methods.
|
|
82
|
-
*/
|
|
83
|
-
instrumentMethods: function instrumentMethods(object, names) {
|
|
84
|
-
for (var _key in names) {
|
|
85
|
-
if (names.hasOwnProperty(_key)) {
|
|
86
|
-
if (typeof object[_key] === 'function') {
|
|
87
|
-
object[_key] = RelayProfiler.instrument(names[_key], object[_key]);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Wraps the supplied function with one that provides the `attachHandler` and
|
|
95
|
-
* `detachHandler` methods. Example usage:
|
|
96
|
-
*
|
|
97
|
-
* const printRelayQuery =
|
|
98
|
-
* RelayProfiler.instrument('printRelayQuery', printRelayQuery);
|
|
99
|
-
*
|
|
100
|
-
* printRelayQuery.attachHandler(...);
|
|
101
|
-
*
|
|
102
|
-
* NOTE: The instrumentation assumes that no handlers are attached or detached
|
|
103
|
-
* in the course of executing another handler.
|
|
104
|
-
*/
|
|
105
|
-
instrument: function instrument(name, originalFunction) {
|
|
106
|
-
if (!shouldInstrument(name)) {
|
|
107
|
-
originalFunction.attachHandler = emptyFunction;
|
|
108
|
-
originalFunction.detachHandler = emptyFunction;
|
|
109
|
-
return originalFunction;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (!aggregateHandlersByName.hasOwnProperty(name)) {
|
|
113
|
-
aggregateHandlersByName[name] = [];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
var catchallHandlers = aggregateHandlersByName['*'];
|
|
117
|
-
var aggregateHandlers = aggregateHandlersByName[name];
|
|
118
|
-
var handlers = [];
|
|
119
|
-
var contexts = [];
|
|
120
|
-
|
|
121
|
-
var invokeHandlers = function invokeHandlers() {
|
|
122
|
-
var context = contexts[contexts.length - 1];
|
|
123
|
-
|
|
124
|
-
if (context[0]) {
|
|
125
|
-
context[0]--;
|
|
126
|
-
catchallHandlers[context[0]](name, invokeHandlers);
|
|
127
|
-
} else if (context[1]) {
|
|
128
|
-
context[1]--;
|
|
129
|
-
aggregateHandlers[context[1]](name, invokeHandlers);
|
|
130
|
-
} else if (context[2]) {
|
|
131
|
-
context[2]--;
|
|
132
|
-
handlers[context[2]](name, invokeHandlers);
|
|
133
|
-
} else {
|
|
134
|
-
context[5] = originalFunction.apply(context[3], context[4]);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
var instrumentedCallback = function instrumentedCallback() {
|
|
139
|
-
var returnValue;
|
|
140
|
-
|
|
141
|
-
if (aggregateHandlers.length === 0 && handlers.length === 0 && catchallHandlers.length === 0) {
|
|
142
|
-
returnValue = originalFunction.apply(this, arguments);
|
|
143
|
-
} else {
|
|
144
|
-
contexts.push([catchallHandlers.length, aggregateHandlers.length, handlers.length, this, arguments, NOT_INVOKED]);
|
|
145
|
-
invokeHandlers();
|
|
146
|
-
var context = contexts.pop();
|
|
147
|
-
returnValue = context[5];
|
|
148
|
-
|
|
149
|
-
if (returnValue === NOT_INVOKED) {
|
|
150
|
-
throw new Error('RelayProfiler: Handler did not invoke original function.');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return returnValue;
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
instrumentedCallback.attachHandler = function (handler) {
|
|
158
|
-
handlers.push(handler);
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
instrumentedCallback.detachHandler = function (handler) {
|
|
162
|
-
removeFromArray(handlers, handler);
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
instrumentedCallback.displayName = '(instrumented ' + name + ')';
|
|
166
|
-
return instrumentedCallback;
|
|
167
|
-
},
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Attaches a handler to all methods instrumented with the supplied name.
|
|
171
|
-
*
|
|
172
|
-
* function createRenderer() {
|
|
173
|
-
* return RelayProfiler.instrument('render', function() {...});
|
|
174
|
-
* }
|
|
175
|
-
* const renderA = createRenderer();
|
|
176
|
-
* const renderB = createRenderer();
|
|
177
|
-
*
|
|
178
|
-
* // Only profiles `renderA`.
|
|
179
|
-
* renderA.attachHandler(...);
|
|
180
|
-
*
|
|
181
|
-
* // Profiles both `renderA` and `renderB`.
|
|
182
|
-
* RelayProfiler.attachAggregateHandler('render', ...);
|
|
183
|
-
*
|
|
184
|
-
*/
|
|
185
|
-
attachAggregateHandler: function attachAggregateHandler(name, handler) {
|
|
186
|
-
if (shouldInstrument(name)) {
|
|
187
|
-
if (!aggregateHandlersByName.hasOwnProperty(name)) {
|
|
188
|
-
aggregateHandlersByName[name] = [];
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
aggregateHandlersByName[name].push(handler);
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Detaches a handler attached via `attachAggregateHandler`.
|
|
197
|
-
*/
|
|
198
|
-
detachAggregateHandler: function detachAggregateHandler(name, handler) {
|
|
199
|
-
if (shouldInstrument(name)) {
|
|
200
|
-
if (aggregateHandlersByName.hasOwnProperty(name)) {
|
|
201
|
-
removeFromArray(aggregateHandlersByName[name], handler);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
|
|
206
47
|
/**
|
|
207
48
|
* Instruments profiling for arbitrarily asynchronous code by a name.
|
|
208
49
|
*
|
|
@@ -217,27 +58,21 @@ var RelayProfiler = {
|
|
|
217
58
|
* attached profile handlers will receive this as the second argument.
|
|
218
59
|
*/
|
|
219
60
|
profile: function profile(name, state) {
|
|
220
|
-
var
|
|
221
|
-
var hasNamedHandlers = profileHandlersByName.hasOwnProperty(name);
|
|
61
|
+
var handlers = profileHandlersByName[name];
|
|
222
62
|
|
|
223
|
-
if (
|
|
224
|
-
var
|
|
225
|
-
var stopHandlers;
|
|
63
|
+
if (handlers && handlers.length > 0) {
|
|
64
|
+
var stopHandlers = [];
|
|
226
65
|
|
|
227
|
-
for (var ii =
|
|
228
|
-
var
|
|
229
|
-
var stopHandler = profileHandler(name, state);
|
|
230
|
-
stopHandlers = stopHandlers || [];
|
|
66
|
+
for (var ii = handlers.length - 1; ii >= 0; ii--) {
|
|
67
|
+
var stopHandler = handlers[ii](name, state);
|
|
231
68
|
stopHandlers.unshift(stopHandler);
|
|
232
69
|
}
|
|
233
70
|
|
|
234
71
|
return {
|
|
235
72
|
stop: function stop(error) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
});
|
|
240
|
-
}
|
|
73
|
+
stopHandlers.forEach(function (stopHandler) {
|
|
74
|
+
return stopHandler(error);
|
|
75
|
+
});
|
|
241
76
|
}
|
|
242
77
|
};
|
|
243
78
|
}
|
|
@@ -246,27 +81,22 @@ var RelayProfiler = {
|
|
|
246
81
|
},
|
|
247
82
|
|
|
248
83
|
/**
|
|
249
|
-
* Attaches a handler to profiles with the supplied name.
|
|
250
|
-
* attach to the special name '*' which is a catch all.
|
|
84
|
+
* Attaches a handler to profiles with the supplied name.
|
|
251
85
|
*/
|
|
252
86
|
attachProfileHandler: function attachProfileHandler(name, handler) {
|
|
253
|
-
if (
|
|
254
|
-
|
|
255
|
-
profileHandlersByName[name] = [];
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
profileHandlersByName[name].push(handler);
|
|
87
|
+
if (!profileHandlersByName.hasOwnProperty(name)) {
|
|
88
|
+
profileHandlersByName[name] = [];
|
|
259
89
|
}
|
|
90
|
+
|
|
91
|
+
profileHandlersByName[name].push(handler);
|
|
260
92
|
},
|
|
261
93
|
|
|
262
94
|
/**
|
|
263
95
|
* Detaches a handler attached via `attachProfileHandler`.
|
|
264
96
|
*/
|
|
265
97
|
detachProfileHandler: function detachProfileHandler(name, handler) {
|
|
266
|
-
if (
|
|
267
|
-
|
|
268
|
-
removeFromArray(profileHandlersByName[name], handler);
|
|
269
|
-
}
|
|
98
|
+
if (profileHandlersByName.hasOwnProperty(name)) {
|
|
99
|
+
removeFromArray(profileHandlersByName[name], handler);
|
|
270
100
|
}
|
|
271
101
|
}
|
|
272
102
|
};
|
|
@@ -16,7 +16,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
16
16
|
|
|
17
17
|
var RelayObservable = require('../network/RelayObservable');
|
|
18
18
|
|
|
19
|
-
var invariant = require(
|
|
19
|
+
var invariant = require('invariant');
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* An implementation of a `ReplaySubject` for Relay Observables.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var invariant = require(
|
|
13
|
+
var invariant = require('invariant');
|
|
14
14
|
|
|
15
15
|
var _require = require('./RelayDefaultHandleKey'),
|
|
16
16
|
DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
|
|
@@ -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
|
+
* @flow strict
|
|
9
|
+
* @format
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A unique identifier of the current actor.
|
|
16
|
+
*/
|
|
17
|
+
export opaque type ActorIdentifier = string;
|
|
18
|
+
|
|
19
|
+
module.exports = {
|
|
20
|
+
getActorIdentifier(actorID: string): ActorIdentifier {
|
|
21
|
+
return (actorID: ActorIdentifier);
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
getDefaultActorIdentifier(): ActorIdentifier {
|
|
25
|
+
throw new Error('Not Implemented');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,189 @@
|
|
|
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
|
+
* @flow strict-local
|
|
9
|
+
* @format
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
const RelayOperationTracker = require('../store/RelayOperationTracker');
|
|
15
|
+
|
|
16
|
+
import type {GraphQLResponse, PayloadData} from '../network/RelayNetworkTypes';
|
|
17
|
+
import type {INetwork} from '../network/RelayNetworkTypes';
|
|
18
|
+
import type RelayObservable from '../network/RelayObservable';
|
|
19
|
+
import type {
|
|
20
|
+
OptimisticResponseConfig,
|
|
21
|
+
OptimisticUpdateFunction,
|
|
22
|
+
OperationDescriptor,
|
|
23
|
+
OperationAvailability,
|
|
24
|
+
Snapshot,
|
|
25
|
+
SelectorStoreUpdater,
|
|
26
|
+
SingularReaderSelector,
|
|
27
|
+
StoreUpdater,
|
|
28
|
+
RequiredFieldLogger,
|
|
29
|
+
ExecuteMutationConfig,
|
|
30
|
+
LogFunction,
|
|
31
|
+
Store,
|
|
32
|
+
OperationTracker,
|
|
33
|
+
} from '../store/RelayStoreTypes';
|
|
34
|
+
import type {Disposable, RenderPolicy} from '../util/RelayRuntimeTypes';
|
|
35
|
+
import type {ActorIdentifier} from './ActorIdentifier';
|
|
36
|
+
import type {
|
|
37
|
+
IActorEnvironment,
|
|
38
|
+
IMultiActorEnvironment,
|
|
39
|
+
} from './MultiActorEnvironmentTypes';
|
|
40
|
+
|
|
41
|
+
function todo() {
|
|
42
|
+
throw new Error('Not implementd');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type ActorSpecificEnvironmentConfig = $ReadOnly<{
|
|
46
|
+
actorIdentifier: ActorIdentifier,
|
|
47
|
+
logFn: LogFunction,
|
|
48
|
+
multiActorEnvironment: IMultiActorEnvironment,
|
|
49
|
+
network: INetwork,
|
|
50
|
+
requiredFieldLogger: RequiredFieldLogger,
|
|
51
|
+
store: Store,
|
|
52
|
+
}>;
|
|
53
|
+
|
|
54
|
+
class ActorSpecificEnvironment implements IActorEnvironment {
|
|
55
|
+
+options: mixed;
|
|
56
|
+
__log: LogFunction;
|
|
57
|
+
requiredFieldLogger: RequiredFieldLogger;
|
|
58
|
+
+_store: Store;
|
|
59
|
+
+_network: INetwork;
|
|
60
|
+
+_operationTracker: OperationTracker;
|
|
61
|
+
|
|
62
|
+
// Actor specific properties
|
|
63
|
+
+actorIdentifier: ActorIdentifier;
|
|
64
|
+
+multiActorEnvironment: IMultiActorEnvironment;
|
|
65
|
+
|
|
66
|
+
constructor(config: ActorSpecificEnvironmentConfig) {
|
|
67
|
+
this.actorIdentifier = config.actorIdentifier;
|
|
68
|
+
this.multiActorEnvironment = config.multiActorEnvironment;
|
|
69
|
+
|
|
70
|
+
this.__log = config.logFn;
|
|
71
|
+
this.requiredFieldLogger = config.requiredFieldLogger;
|
|
72
|
+
this._operationTracker = new RelayOperationTracker();
|
|
73
|
+
this._store = config.store;
|
|
74
|
+
this._network = config.network;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
UNSTABLE_getDefaultRenderPolicy(): RenderPolicy {
|
|
78
|
+
return todo();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
applyMutation(optimisticConfig: OptimisticResponseConfig): Disposable {
|
|
82
|
+
return this.multiActorEnvironment.applyMutation(
|
|
83
|
+
this.actorIdentifier,
|
|
84
|
+
optimisticConfig,
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
applyUpdate(optimisticUpdate: OptimisticUpdateFunction): Disposable {
|
|
89
|
+
return this.multiActorEnvironment.applyUpdate(
|
|
90
|
+
this.actorIdentifier,
|
|
91
|
+
optimisticUpdate,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
check(operation: OperationDescriptor): OperationAvailability {
|
|
96
|
+
return this.multiActorEnvironment.check(this.actorIdentifier, operation);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
subscribe(
|
|
100
|
+
snapshot: Snapshot,
|
|
101
|
+
callback: (snapshot: Snapshot) => void,
|
|
102
|
+
): Disposable {
|
|
103
|
+
return this.multiActorEnvironment.subscribe(
|
|
104
|
+
this.actorIdentifier,
|
|
105
|
+
snapshot,
|
|
106
|
+
callback,
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
retain(operation: OperationDescriptor): Disposable {
|
|
111
|
+
return this.multiActorEnvironment.retain(this.actorIdentifier, operation);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
commitUpdate(updater: StoreUpdater): void {
|
|
115
|
+
return this.multiActorEnvironment.commitUpdate(
|
|
116
|
+
this.actorIdentifier,
|
|
117
|
+
updater,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Commit a payload to the environment using the given operation selector.
|
|
123
|
+
*/
|
|
124
|
+
commitPayload(
|
|
125
|
+
operationDescriptor: OperationDescriptor,
|
|
126
|
+
payload: PayloadData,
|
|
127
|
+
): void {
|
|
128
|
+
return this.multiActorEnvironment.commitPayload(
|
|
129
|
+
this.actorIdentifier,
|
|
130
|
+
operationDescriptor,
|
|
131
|
+
payload,
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
getNetwork(): INetwork {
|
|
136
|
+
return this._network;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
getStore(): Store {
|
|
140
|
+
return this._store;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getOperationTracker(): OperationTracker {
|
|
144
|
+
return this._operationTracker;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
lookup(selector: SingularReaderSelector): Snapshot {
|
|
148
|
+
return this.multiActorEnvironment.lookup(this.actorIdentifier, selector);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
execute(config: {
|
|
152
|
+
operation: OperationDescriptor,
|
|
153
|
+
updater?: ?SelectorStoreUpdater,
|
|
154
|
+
}): RelayObservable<GraphQLResponse> {
|
|
155
|
+
return this.multiActorEnvironment.execute(this.actorIdentifier, config);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
executeMutation(
|
|
159
|
+
options: ExecuteMutationConfig,
|
|
160
|
+
): RelayObservable<GraphQLResponse> {
|
|
161
|
+
return this.multiActorEnvironment.executeMutation(
|
|
162
|
+
this.actorIdentifier,
|
|
163
|
+
options,
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
executeWithSource(options: {
|
|
168
|
+
operation: OperationDescriptor,
|
|
169
|
+
source: RelayObservable<GraphQLResponse>,
|
|
170
|
+
}): RelayObservable<GraphQLResponse> {
|
|
171
|
+
return this.multiActorEnvironment.executeWithSource(
|
|
172
|
+
this.actorIdentifier,
|
|
173
|
+
options,
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
isRequestActive(requestIdentifier: string): boolean {
|
|
178
|
+
return this.multiActorEnvironment.isRequestActive(
|
|
179
|
+
this.actorIdentifier,
|
|
180
|
+
requestIdentifier,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
isServer(): boolean {
|
|
185
|
+
return todo();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
module.exports = ActorSpecificEnvironment;
|