relay-runtime 0.0.0-main-6e8b52f6 → 0.0.0-main-a2037ae7

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-6e8b52f6
2
+ * Relay v0.0.0-main-a2037ae7
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
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
- getRequest = _require.getRequest;
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
- // TODO assert that the concrete request is an updatable query
28
- var request = getRequest(query);
27
+ var updatableQuery = getUpdatableQuery(query);
29
28
  var updatableProxy = {};
30
- updateProxyFromSelections(updatableProxy, proxy.getRoot(), variables, request.fragment.selections, proxy);
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);
@@ -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
  };
@@ -54,6 +54,7 @@ var RelayConcreteNode = {
54
54
  SPLIT_OPERATION: 'SplitOperation',
55
55
  STREAM: 'Stream',
56
56
  TYPE_DISCRIMINATOR: 'TypeDiscriminator',
57
+ UPDATABLE_QUERY: 'UpdatableQuery',
57
58
  VARIABLE: 'Variable'
58
59
  };
59
60
  module.exports = RelayConcreteNode;
@@ -22,7 +22,11 @@ import type {
22
22
  RecordSource,
23
23
  RecordSourceProxy,
24
24
  } from '../store/RelayStoreTypes';
25
- import type {DataID, OperationType} from '../util/RelayRuntimeTypes';
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: OperationType>(
167
- query: GraphQLTaggedNode,
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 {DataID, OperationType} from '../util/RelayRuntimeTypes';
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: OperationType>(
127
- query: GraphQLTaggedNode,
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 {OperationType} from '../util/RelayRuntimeTypes';
19
+ import type {
20
+ UpdatableQuery,
21
+ UpdatableQueryType,
22
+ } from '../util/RelayRuntimeTypes';
20
23
 
21
- const {getRequest} = require('../query/GraphQLTag');
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: OperationType>(
27
- query: GraphQLTaggedNode,
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
- // TODO assert that the concrete request is an updatable query
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
- request.fragment.selections,
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: OperationType>(
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: OperationType>(
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: OperationType>(
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: OperationType>(
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: OperationType>(
283
+ function createGetterForSingularLinkedField<TQuery: UpdatableQueryType>(
282
284
  selection: ReaderLinkedField,
283
285
  queryVariables: TQuery['variables'],
284
286
  recordProxy: RecordProxy,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relay-runtime",
3
3
  "description": "A core runtime for building GraphQL-driven applications.",
4
- "version": "0.0.0-main-6e8b52f6",
4
+ "version": "0.0.0-main-a2037ae7",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay"
@@ -18,7 +18,10 @@ import type {
18
18
  ReaderPaginationFragment,
19
19
  ReaderRefetchableFragment,
20
20
  } from '../util/ReaderNode';
21
- import type {ConcreteRequest} from '../util/RelayConcreteNode';
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: ReaderFragment | ReaderInlineDataFragment | ConcreteRequest,
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
- ): ReaderFragment | ReaderInlineDataFragment | ConcreteRequest {
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
  };