relay-runtime 0.0.0-main-6e8b52f6 → 0.0.0-main-764af24d
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 +2 -0
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +3 -4
- package/lib/query/GraphQLTag.js +13 -0
- package/lib/util/RelayConcreteNode.js +1 -0
- package/mutations/RelayRecordSourceProxy.js.flow +7 -3
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +7 -3
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +14 -12
- package/package.json +1 -1
- package/query/GraphQLTag.js.flow +38 -3
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/RelayStoreTypes.js.flow +4 -3
- package/util/RelayConcreteNode.js.flow +8 -1
- package/util/RelayRuntimeTypes.js.flow +20 -1
package/index.js
CHANGED
package/index.js.flow
CHANGED
|
@@ -203,6 +203,7 @@ export type {
|
|
|
203
203
|
} from './util/ReaderNode';
|
|
204
204
|
export type {
|
|
205
205
|
ConcreteRequest,
|
|
206
|
+
ConcreteUpdatableQuery,
|
|
206
207
|
GeneratedNode,
|
|
207
208
|
RequestParameters,
|
|
208
209
|
} from './util/RelayConcreteNode';
|
|
@@ -221,6 +222,7 @@ export type {
|
|
|
221
222
|
Query,
|
|
222
223
|
RefetchableFragment,
|
|
223
224
|
RenderPolicy,
|
|
225
|
+
UpdatableQuery,
|
|
224
226
|
Variables,
|
|
225
227
|
VariablesOf,
|
|
226
228
|
} from './util/RelayRuntimeTypes';
|
|
@@ -16,7 +16,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
16
16
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
17
17
|
|
|
18
18
|
var _require = require('../query/GraphQLTag'),
|
|
19
|
-
|
|
19
|
+
getUpdatableQuery = _require.getUpdatableQuery;
|
|
20
20
|
|
|
21
21
|
var _require2 = require('../store/RelayStoreUtils'),
|
|
22
22
|
getArgumentValues = _require2.getArgumentValues;
|
|
@@ -24,10 +24,9 @@ var _require2 = require('../store/RelayStoreUtils'),
|
|
|
24
24
|
var nonUpdatableKeys = ['id', '__id', '__typename', 'js'];
|
|
25
25
|
|
|
26
26
|
function readUpdatableQuery_EXPERIMENTAL(query, variables, proxy) {
|
|
27
|
-
|
|
28
|
-
var request = getRequest(query);
|
|
27
|
+
var updatableQuery = getUpdatableQuery(query);
|
|
29
28
|
var updatableProxy = {};
|
|
30
|
-
updateProxyFromSelections(updatableProxy, proxy.getRoot(), variables,
|
|
29
|
+
updateProxyFromSelections(updatableProxy, proxy.getRoot(), variables, updatableQuery.fragment.selections, proxy);
|
|
31
30
|
|
|
32
31
|
if (process.env.NODE_ENV !== "production") {
|
|
33
32
|
Object.freeze(updatableProxy);
|
package/lib/query/GraphQLTag.js
CHANGED
|
@@ -49,6 +49,11 @@ function isRequest(node) {
|
|
|
49
49
|
return typeof request === 'object' && request !== null && request.kind === RelayConcreteNode.REQUEST;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
function isUpdatableQuery(node) {
|
|
53
|
+
var updatableQuery = getNode(node);
|
|
54
|
+
return typeof updatableQuery === 'object' && updatableQuery !== null && updatableQuery.kind === RelayConcreteNode.UPDATABLE_QUERY;
|
|
55
|
+
}
|
|
56
|
+
|
|
52
57
|
function isInlineDataFragment(node) {
|
|
53
58
|
var fragment = getNode(node);
|
|
54
59
|
return typeof fragment === 'object' && fragment !== null && fragment.kind === RelayConcreteNode.INLINE_DATA_FRAGMENT;
|
|
@@ -93,6 +98,12 @@ function getRequest(taggedNode) {
|
|
|
93
98
|
return request;
|
|
94
99
|
}
|
|
95
100
|
|
|
101
|
+
function getUpdatableQuery(taggedNode) {
|
|
102
|
+
var updatableQuery = getNode(taggedNode);
|
|
103
|
+
!isUpdatableQuery(updatableQuery) ? process.env.NODE_ENV !== "production" ? invariant(false, 'GraphQLTag: Expected a request, got `%s`.', JSON.stringify(updatableQuery)) : invariant(false) : void 0;
|
|
104
|
+
return updatableQuery;
|
|
105
|
+
}
|
|
106
|
+
|
|
96
107
|
function getInlineDataFragment(taggedNode) {
|
|
97
108
|
var fragment = getNode(taggedNode);
|
|
98
109
|
!isInlineDataFragment(fragment) ? process.env.NODE_ENV !== "production" ? invariant(false, 'GraphQLTag: Expected an inline data fragment, got `%s`.', JSON.stringify(fragment)) : invariant(false) : void 0;
|
|
@@ -105,9 +116,11 @@ module.exports = {
|
|
|
105
116
|
getPaginationFragment: getPaginationFragment,
|
|
106
117
|
getRefetchableFragment: getRefetchableFragment,
|
|
107
118
|
getRequest: getRequest,
|
|
119
|
+
getUpdatableQuery: getUpdatableQuery,
|
|
108
120
|
getInlineDataFragment: getInlineDataFragment,
|
|
109
121
|
graphql: graphql,
|
|
110
122
|
isFragment: isFragment,
|
|
111
123
|
isRequest: isRequest,
|
|
124
|
+
isUpdatableQuery: isUpdatableQuery,
|
|
112
125
|
isInlineDataFragment: isInlineDataFragment
|
|
113
126
|
};
|
|
@@ -22,7 +22,11 @@ import type {
|
|
|
22
22
|
RecordSource,
|
|
23
23
|
RecordSourceProxy,
|
|
24
24
|
} from '../store/RelayStoreTypes';
|
|
25
|
-
import type {
|
|
25
|
+
import type {
|
|
26
|
+
DataID,
|
|
27
|
+
UpdatableQuery,
|
|
28
|
+
UpdatableQueryType,
|
|
29
|
+
} from '../util/RelayRuntimeTypes';
|
|
26
30
|
import type RelayRecordSourceMutator from './RelayRecordSourceMutator';
|
|
27
31
|
|
|
28
32
|
const RelayModernRecord = require('../store/RelayModernRecord');
|
|
@@ -163,8 +167,8 @@ class RelayRecordSourceProxy implements RecordSourceProxy {
|
|
|
163
167
|
return this._idsMarkedForInvalidation;
|
|
164
168
|
}
|
|
165
169
|
|
|
166
|
-
readUpdatableQuery_EXPERIMENTAL<TQuery:
|
|
167
|
-
query:
|
|
170
|
+
readUpdatableQuery_EXPERIMENTAL<TQuery: UpdatableQueryType>(
|
|
171
|
+
query: UpdatableQuery<TQuery['variables'], TQuery['response']>,
|
|
168
172
|
variables: TQuery['variables'],
|
|
169
173
|
): TQuery['response'] {
|
|
170
174
|
return readUpdatableQuery_EXPERIMENTAL(query, variables, this);
|
|
@@ -20,7 +20,11 @@ import type {
|
|
|
20
20
|
SingularReaderSelector,
|
|
21
21
|
} from '../store/RelayStoreTypes';
|
|
22
22
|
import type {ReaderLinkedField} from '../util/ReaderNode';
|
|
23
|
-
import type {
|
|
23
|
+
import type {
|
|
24
|
+
DataID,
|
|
25
|
+
UpdatableQuery,
|
|
26
|
+
UpdatableQueryType,
|
|
27
|
+
} from '../util/RelayRuntimeTypes';
|
|
24
28
|
import type RelayRecordSourceMutator from './RelayRecordSourceMutator';
|
|
25
29
|
|
|
26
30
|
const {ROOT_TYPE, getStorageKey} = require('../store/RelayStoreUtils');
|
|
@@ -123,8 +127,8 @@ class RelayRecordSourceSelectorProxy implements RecordSourceSelectorProxy {
|
|
|
123
127
|
this.__recordSource.invalidateStore();
|
|
124
128
|
}
|
|
125
129
|
|
|
126
|
-
readUpdatableQuery_EXPERIMENTAL<TQuery:
|
|
127
|
-
query:
|
|
130
|
+
readUpdatableQuery_EXPERIMENTAL<TQuery: UpdatableQueryType>(
|
|
131
|
+
query: UpdatableQuery<TQuery['variables'], TQuery['response']>,
|
|
128
132
|
variables: TQuery['variables'],
|
|
129
133
|
): TQuery['response'] {
|
|
130
134
|
return readUpdatableQuery_EXPERIMENTAL(query, variables, this);
|
|
@@ -16,27 +16,29 @@
|
|
|
16
16
|
import type {GraphQLTaggedNode} from '../query/GraphQLTag';
|
|
17
17
|
import type {RecordProxy, RecordSourceProxy} from '../store/RelayStoreTypes';
|
|
18
18
|
import type {ReaderLinkedField, ReaderSelection} from '../util/ReaderNode';
|
|
19
|
-
import type {
|
|
19
|
+
import type {
|
|
20
|
+
UpdatableQuery,
|
|
21
|
+
UpdatableQueryType,
|
|
22
|
+
} from '../util/RelayRuntimeTypes';
|
|
20
23
|
|
|
21
|
-
const {
|
|
24
|
+
const {getUpdatableQuery} = require('../query/GraphQLTag');
|
|
22
25
|
const {getArgumentValues} = require('../store/RelayStoreUtils');
|
|
23
26
|
|
|
24
27
|
const nonUpdatableKeys = ['id', '__id', '__typename', 'js'];
|
|
25
28
|
|
|
26
|
-
function readUpdatableQuery_EXPERIMENTAL<TQuery:
|
|
27
|
-
query:
|
|
29
|
+
function readUpdatableQuery_EXPERIMENTAL<TQuery: UpdatableQueryType>(
|
|
30
|
+
query: UpdatableQuery<TQuery['variables'], TQuery['response']>,
|
|
28
31
|
variables: TQuery['variables'],
|
|
29
32
|
proxy: RecordSourceProxy,
|
|
30
33
|
): TQuery['response'] {
|
|
31
|
-
|
|
32
|
-
const request = getRequest(query);
|
|
34
|
+
const updatableQuery = getUpdatableQuery(query);
|
|
33
35
|
|
|
34
36
|
const updatableProxy = {};
|
|
35
37
|
updateProxyFromSelections(
|
|
36
38
|
updatableProxy,
|
|
37
39
|
proxy.getRoot(),
|
|
38
40
|
variables,
|
|
39
|
-
|
|
41
|
+
updatableQuery.fragment.selections,
|
|
40
42
|
proxy,
|
|
41
43
|
);
|
|
42
44
|
if (__DEV__) {
|
|
@@ -45,7 +47,7 @@ function readUpdatableQuery_EXPERIMENTAL<TQuery: OperationType>(
|
|
|
45
47
|
return updatableProxy;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
function updateProxyFromSelections<TQuery:
|
|
50
|
+
function updateProxyFromSelections<TQuery: UpdatableQueryType>(
|
|
49
51
|
mutableUpdatableProxy: TQuery['response'],
|
|
50
52
|
recordProxy: RecordProxy,
|
|
51
53
|
queryVariables: TQuery['variables'],
|
|
@@ -161,7 +163,7 @@ function updateProxyFromSelections<TQuery: OperationType>(
|
|
|
161
163
|
}
|
|
162
164
|
}
|
|
163
165
|
|
|
164
|
-
function createSetterForPluralLinkedField<TQuery:
|
|
166
|
+
function createSetterForPluralLinkedField<TQuery: UpdatableQueryType>(
|
|
165
167
|
selection: ReaderLinkedField,
|
|
166
168
|
queryVariables: TQuery['variables'],
|
|
167
169
|
recordProxy: RecordProxy,
|
|
@@ -204,7 +206,7 @@ function createSetterForPluralLinkedField<TQuery: OperationType>(
|
|
|
204
206
|
};
|
|
205
207
|
}
|
|
206
208
|
|
|
207
|
-
function createSetterForSingularLinkedField<TQuery:
|
|
209
|
+
function createSetterForSingularLinkedField<TQuery: UpdatableQueryType>(
|
|
208
210
|
selection: ReaderLinkedField,
|
|
209
211
|
queryVariables: TQuery['variables'],
|
|
210
212
|
recordProxy: RecordProxy,
|
|
@@ -236,7 +238,7 @@ function createSetterForSingularLinkedField<TQuery: OperationType>(
|
|
|
236
238
|
};
|
|
237
239
|
}
|
|
238
240
|
|
|
239
|
-
function createGetterForPluralLinkedField<TQuery:
|
|
241
|
+
function createGetterForPluralLinkedField<TQuery: UpdatableQueryType>(
|
|
240
242
|
selection: ReaderLinkedField,
|
|
241
243
|
queryVariables: TQuery['variables'],
|
|
242
244
|
recordProxy: RecordProxy,
|
|
@@ -278,7 +280,7 @@ function createGetterForPluralLinkedField<TQuery: OperationType>(
|
|
|
278
280
|
};
|
|
279
281
|
}
|
|
280
282
|
|
|
281
|
-
function createGetterForSingularLinkedField<TQuery:
|
|
283
|
+
function createGetterForSingularLinkedField<TQuery: UpdatableQueryType>(
|
|
282
284
|
selection: ReaderLinkedField,
|
|
283
285
|
queryVariables: TQuery['variables'],
|
|
284
286
|
recordProxy: RecordProxy,
|
package/package.json
CHANGED
package/query/GraphQLTag.js.flow
CHANGED
|
@@ -18,7 +18,10 @@ import type {
|
|
|
18
18
|
ReaderPaginationFragment,
|
|
19
19
|
ReaderRefetchableFragment,
|
|
20
20
|
} from '../util/ReaderNode';
|
|
21
|
-
import type {
|
|
21
|
+
import type {
|
|
22
|
+
ConcreteRequest,
|
|
23
|
+
ConcreteUpdatableQuery,
|
|
24
|
+
} from '../util/RelayConcreteNode';
|
|
22
25
|
|
|
23
26
|
const RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
24
27
|
const invariant = require('invariant');
|
|
@@ -29,9 +32,14 @@ export type GraphQLTaggedNode =
|
|
|
29
32
|
| ReaderFragment
|
|
30
33
|
| ReaderInlineDataFragment
|
|
31
34
|
| ConcreteRequest
|
|
35
|
+
| ConcreteUpdatableQuery
|
|
32
36
|
| {
|
|
33
37
|
// This is this case when we `require()` a generated ES6 module
|
|
34
|
-
default:
|
|
38
|
+
default:
|
|
39
|
+
| ReaderFragment
|
|
40
|
+
| ReaderInlineDataFragment
|
|
41
|
+
| ConcreteRequest
|
|
42
|
+
| ConcreteUpdatableQuery,
|
|
35
43
|
...
|
|
36
44
|
};
|
|
37
45
|
|
|
@@ -51,7 +59,11 @@ function graphql(strings: Array<string>): any {
|
|
|
51
59
|
|
|
52
60
|
function getNode(
|
|
53
61
|
taggedNode: GraphQLTaggedNode,
|
|
54
|
-
):
|
|
62
|
+
):
|
|
63
|
+
| ReaderFragment
|
|
64
|
+
| ReaderInlineDataFragment
|
|
65
|
+
| ConcreteRequest
|
|
66
|
+
| ConcreteUpdatableQuery {
|
|
55
67
|
let node = taggedNode;
|
|
56
68
|
if (typeof node === 'function') {
|
|
57
69
|
node = (node(): ReaderFragment | ConcreteRequest);
|
|
@@ -85,6 +97,15 @@ function isRequest(node: GraphQLTaggedNode): boolean {
|
|
|
85
97
|
);
|
|
86
98
|
}
|
|
87
99
|
|
|
100
|
+
function isUpdatableQuery(node: GraphQLTaggedNode): boolean {
|
|
101
|
+
const updatableQuery = getNode(node);
|
|
102
|
+
return (
|
|
103
|
+
typeof updatableQuery === 'object' &&
|
|
104
|
+
updatableQuery !== null &&
|
|
105
|
+
updatableQuery.kind === RelayConcreteNode.UPDATABLE_QUERY
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
88
109
|
function isInlineDataFragment(node: GraphQLTaggedNode): boolean {
|
|
89
110
|
const fragment = getNode(node);
|
|
90
111
|
return (
|
|
@@ -142,6 +163,18 @@ function getRequest(taggedNode: GraphQLTaggedNode): ConcreteRequest {
|
|
|
142
163
|
return (request: any);
|
|
143
164
|
}
|
|
144
165
|
|
|
166
|
+
function getUpdatableQuery(
|
|
167
|
+
taggedNode: GraphQLTaggedNode,
|
|
168
|
+
): ConcreteUpdatableQuery {
|
|
169
|
+
const updatableQuery = getNode(taggedNode);
|
|
170
|
+
invariant(
|
|
171
|
+
isUpdatableQuery(updatableQuery),
|
|
172
|
+
'GraphQLTag: Expected a request, got `%s`.',
|
|
173
|
+
JSON.stringify(updatableQuery),
|
|
174
|
+
);
|
|
175
|
+
return (updatableQuery: any);
|
|
176
|
+
}
|
|
177
|
+
|
|
145
178
|
function getInlineDataFragment(
|
|
146
179
|
taggedNode: GraphQLTaggedNode,
|
|
147
180
|
): ReaderInlineDataFragment {
|
|
@@ -160,9 +193,11 @@ module.exports = {
|
|
|
160
193
|
getPaginationFragment,
|
|
161
194
|
getRefetchableFragment,
|
|
162
195
|
getRequest,
|
|
196
|
+
getUpdatableQuery,
|
|
163
197
|
getInlineDataFragment,
|
|
164
198
|
graphql,
|
|
165
199
|
isFragment,
|
|
166
200
|
isRequest,
|
|
201
|
+
isUpdatableQuery,
|
|
167
202
|
isInlineDataFragment,
|
|
168
203
|
};
|