relay-compiler 10.0.1 → 10.1.3
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/relay-compiler +1538 -975
- package/codegen/NormalizationCodeGenerator.js.flow +12 -4
- package/codegen/ReaderCodeGenerator.js.flow +38 -3
- package/codegen/RelayFileWriter.js.flow +2 -0
- package/codegen/writeRelayGeneratedFile.js.flow +1 -1
- package/core/ASTCache.js.flow +1 -0
- package/core/CompilerContext.js.flow +1 -0
- package/core/CompilerError.js.flow +6 -1
- package/core/IR.js.flow +0 -1
- package/core/IRPrinter.js.flow +3 -8
- package/core/RelayIRTransforms.js.flow +7 -0
- package/core/Schema.js.flow +55 -1
- package/index.js +1 -1
- package/language/javascript/FindGraphQLTags.js.flow +2 -97
- package/language/javascript/RelayFlowBabelFactories.js.flow +11 -15
- package/language/javascript/RelayFlowGenerator.js.flow +76 -19
- package/language/javascript/RelayFlowTypeTransformers.js.flow +4 -4
- package/lib/bin/RelayCompilerMain.js +8 -14
- package/lib/codegen/CodegenRunner.js +5 -9
- package/lib/codegen/NormalizationCodeGenerator.js +21 -13
- package/lib/codegen/ReaderCodeGenerator.js +44 -13
- package/lib/codegen/RelayFileWriter.js +3 -7
- package/lib/codegen/compileRelayArtifacts.js +4 -8
- package/lib/codegen/sortObjectByKey.js +3 -5
- package/lib/codegen/writeRelayGeneratedFile.js +3 -7
- package/lib/core/ASTCache.js +1 -0
- package/lib/core/CompilerContext.js +1 -0
- package/lib/core/CompilerError.js +8 -8
- package/lib/core/IRPrinter.js +3 -4
- package/lib/core/IRTransformer.js +3 -7
- package/lib/core/RelayGraphQLEnumsGenerator.js +3 -7
- package/lib/core/RelayIRTransforms.js +10 -4
- package/lib/core/RelayParser.js +7 -15
- package/lib/core/Schema.js +50 -13
- package/lib/core/getFieldDefinition.js +3 -5
- package/lib/core/inferRootArgumentDefinitions.js +6 -14
- package/lib/language/javascript/FindGraphQLTags.js +3 -69
- package/lib/language/javascript/RelayFlowBabelFactories.js +5 -5
- package/lib/language/javascript/RelayFlowGenerator.js +85 -34
- package/lib/runner/Artifacts.js +13 -17
- package/lib/runner/BufferedFilesystem.js +6 -10
- package/lib/runner/GraphQLASTNodeGroup.js +10 -14
- package/lib/runner/GraphQLNodeMap.js +3 -7
- package/lib/runner/Sources.js +27 -17
- package/lib/runner/StrictMap.js +5 -7
- package/lib/runner/getChangedNodeNames.js +6 -8
- package/lib/transforms/ApplyFragmentArgumentTransform.js +16 -25
- package/lib/transforms/ClientExtensionsTransform.js +8 -9
- package/lib/transforms/ConnectionTransform.js +9 -14
- package/lib/transforms/DeclarativeConnectionMutationTransform.js +115 -64
- package/lib/transforms/DeferStreamTransform.js +3 -7
- package/lib/transforms/DisallowTypenameOnRoot.js +3 -5
- package/lib/transforms/FieldHandleTransform.js +3 -7
- package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
- package/lib/transforms/FlattenTransform.js +14 -17
- package/lib/transforms/GenerateIDFieldTransform.js +3 -7
- package/lib/transforms/GenerateTypeNameTransform.js +4 -8
- package/lib/transforms/InlineDataFragmentTransform.js +3 -7
- package/lib/transforms/MaskTransform.js +4 -12
- package/lib/transforms/MatchTransform.js +8 -8
- package/lib/transforms/ReactFlightComponentTransform.js +158 -0
- package/lib/transforms/RefetchableFragmentTransform.js +5 -9
- package/lib/transforms/RelayDirectiveTransform.js +3 -7
- package/lib/transforms/RequiredFieldTransform.js +369 -0
- package/lib/transforms/SkipHandleFieldTransform.js +2 -6
- package/lib/transforms/SkipRedundantNodesTransform.js +4 -6
- package/lib/transforms/SkipUnreachableNodeTransform.js +2 -6
- package/lib/transforms/SkipUnusedVariablesTransform.js +4 -12
- package/lib/transforms/TestOperationTransform.js +3 -7
- package/lib/transforms/ValidateGlobalVariablesTransform.js +4 -6
- package/lib/transforms/ValidateRequiredArgumentsTransform.js +3 -5
- package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +4 -6
- package/lib/transforms/ValidateUnusedVariablesTransform.js +4 -6
- package/lib/transforms/query-generators/FetchableQueryGenerator.js +2 -6
- package/lib/transforms/query-generators/NodeQueryGenerator.js +2 -6
- package/lib/transforms/query-generators/index.js +3 -5
- package/lib/transforms/query-generators/utils.js +3 -5
- package/package.json +3 -3
- package/relay-compiler.js +4 -4
- package/relay-compiler.min.js +4 -4
- package/runner/Sources.js.flow +14 -0
- package/transforms/ClientExtensionsTransform.js.flow +3 -0
- package/transforms/ConnectionTransform.js.flow +0 -1
- package/transforms/DeclarativeConnectionMutationTransform.js.flow +140 -48
- package/transforms/FieldHandleTransform.js.flow +0 -1
- package/transforms/FilterCompilerDirectivesTransform.js.flow +33 -0
- package/transforms/FlattenTransform.js.flow +3 -2
- package/transforms/MatchTransform.js.flow +6 -0
- package/transforms/ReactFlightComponentTransform.js.flow +195 -0
- package/transforms/RequiredFieldTransform.js.flow +415 -0
- package/transforms/SkipRedundantNodesTransform.js.flow +3 -0
@@ -12,19 +12,11 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
16
16
|
|
17
|
-
var
|
18
|
-
|
19
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
20
|
-
|
21
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
22
|
-
|
23
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
24
|
-
|
25
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
17
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
26
18
|
|
27
|
-
|
19
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
28
20
|
|
29
21
|
var IRTransformer = require('../core/IRTransformer');
|
30
22
|
|
@@ -35,10 +27,15 @@ var _require2 = require('relay-runtime'),
|
|
35
27
|
ConnectionInterface = _require2.ConnectionInterface;
|
36
28
|
|
37
29
|
var DELETE_RECORD = 'deleteRecord';
|
30
|
+
var DELETE_EDGE = 'deleteEdge';
|
38
31
|
var APPEND_EDGE = 'appendEdge';
|
39
32
|
var PREPEND_EDGE = 'prependEdge';
|
40
|
-
var
|
41
|
-
var
|
33
|
+
var APPEND_NODE = 'appendNode';
|
34
|
+
var PREPEND_NODE = 'prependNode';
|
35
|
+
var EDGE_LINKED_FIELD_DIRECTIVES = [APPEND_EDGE, PREPEND_EDGE];
|
36
|
+
var NODE_LINKED_FIELD_DIRECTIVES = [APPEND_NODE, PREPEND_NODE];
|
37
|
+
var LINKED_FIELD_DIRECTIVES = [].concat(EDGE_LINKED_FIELD_DIRECTIVES, NODE_LINKED_FIELD_DIRECTIVES);
|
38
|
+
var SCHEMA_EXTENSION = "\n directive @".concat(DELETE_RECORD, " on FIELD\n directive @").concat(DELETE_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(APPEND_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(PREPEND_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(APPEND_NODE, "(\n connections: [ID!]!\n edgeTypeName: String!\n ) on FIELD\n directive @").concat(PREPEND_NODE, "(\n connections: [ID!]!\n edgeTypeName: String!\n ) on FIELD\n");
|
42
39
|
|
43
40
|
function transform(context) {
|
44
41
|
return IRTransformer.transform(context, {
|
@@ -62,29 +59,42 @@ function visitScalarField(field) {
|
|
62
59
|
throw createUserError("Invalid use of @".concat(linkedFieldDirective.name, " on scalar field '").concat(field.name, "'"), [linkedFieldDirective.loc]);
|
63
60
|
}
|
64
61
|
|
65
|
-
var
|
62
|
+
var deleteNodeDirective = field.directives.find(function (directive) {
|
66
63
|
return directive.name === DELETE_RECORD;
|
67
64
|
});
|
65
|
+
var deleteEdgeDirective = field.directives.find(function (directive) {
|
66
|
+
return directive.name === DELETE_EDGE;
|
67
|
+
});
|
68
|
+
|
69
|
+
if (deleteNodeDirective != null && deleteEdgeDirective != null) {
|
70
|
+
throw createUserError("Both @deleteNode and @deleteEdge are used on field '".concat(field.name, "'. Only one directive is supported for now."), [deleteNodeDirective.loc, deleteEdgeDirective.loc]);
|
71
|
+
}
|
72
|
+
|
73
|
+
var targetDirective = deleteNodeDirective !== null && deleteNodeDirective !== void 0 ? deleteNodeDirective : deleteEdgeDirective;
|
68
74
|
|
69
|
-
if (
|
75
|
+
if (targetDirective == null) {
|
70
76
|
return field;
|
71
77
|
}
|
72
78
|
|
73
79
|
var schema = this.getContext().getSchema();
|
74
80
|
|
75
|
-
if (!schema.isId(field.type)) {
|
76
|
-
throw createUserError("Invalid use of @".concat(
|
81
|
+
if (!schema.isId(schema.getRawType(field.type))) {
|
82
|
+
throw createUserError("Invalid use of @".concat(targetDirective.name, " on field '").concat(field.name, "'. Expected field to return an ID or list of ID values, got ").concat(schema.getTypeString(field.type), "."), [targetDirective.loc]);
|
77
83
|
}
|
78
84
|
|
85
|
+
var connectionsArg = targetDirective.args.find(function (arg) {
|
86
|
+
return arg.name === 'connections';
|
87
|
+
});
|
79
88
|
var handle = {
|
80
|
-
name:
|
89
|
+
name: targetDirective.name,
|
81
90
|
key: '',
|
82
91
|
dynamicKey: null,
|
83
|
-
filters: null
|
92
|
+
filters: null,
|
93
|
+
handleArgs: connectionsArg ? [connectionsArg] : undefined
|
84
94
|
};
|
85
|
-
return
|
95
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, field), {}, {
|
86
96
|
directives: field.directives.filter(function (directive) {
|
87
|
-
return directive !==
|
97
|
+
return directive !== targetDirective;
|
88
98
|
}),
|
89
99
|
handles: field.handles ? [].concat((0, _toConsumableArray2["default"])(field.handles), [handle]) : [handle]
|
90
100
|
});
|
@@ -101,64 +111,105 @@ function visitLinkedField(field) {
|
|
101
111
|
}
|
102
112
|
|
103
113
|
var edgeDirective = transformedField.directives.find(function (directive) {
|
104
|
-
return
|
114
|
+
return EDGE_LINKED_FIELD_DIRECTIVES.indexOf(directive.name) > -1;
|
115
|
+
});
|
116
|
+
var nodeDirective = transformedField.directives.find(function (directive) {
|
117
|
+
return NODE_LINKED_FIELD_DIRECTIVES.indexOf(directive.name) > -1;
|
105
118
|
});
|
106
119
|
|
107
|
-
if (edgeDirective == null) {
|
120
|
+
if (edgeDirective == null && nodeDirective == null) {
|
108
121
|
return transformedField;
|
109
122
|
}
|
110
123
|
|
111
|
-
|
124
|
+
if (edgeDirective != null && nodeDirective != null) {
|
125
|
+
throw createUserError("Invalid use of @".concat(edgeDirective.name, " and @").concat(nodeDirective.name, " on field '").concat(transformedField.name, "' - these directives cannot be used together."), [edgeDirective.loc]);
|
126
|
+
}
|
127
|
+
|
128
|
+
var targetDirective = edgeDirective !== null && edgeDirective !== void 0 ? edgeDirective : nodeDirective;
|
129
|
+
var connectionsArg = targetDirective.args.find(function (arg) {
|
112
130
|
return arg.name === 'connections';
|
113
131
|
});
|
114
132
|
|
115
133
|
if (connectionsArg == null) {
|
116
|
-
throw createUserError("Expected the 'connections' argument to be defined on @".concat(
|
134
|
+
throw createUserError("Expected the 'connections' argument to be defined on @".concat(targetDirective.name, "."), [targetDirective.loc]);
|
117
135
|
}
|
118
136
|
|
119
137
|
var schema = this.getContext().getSchema();
|
120
|
-
var fields = schema.getFields(transformedField.type);
|
121
|
-
var cursorFieldID;
|
122
|
-
var nodeFieldID;
|
123
|
-
|
124
|
-
var _iterator = _createForOfIteratorHelper(fields),
|
125
|
-
_step;
|
126
|
-
|
127
|
-
try {
|
128
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
129
|
-
var fieldID = _step.value;
|
130
|
-
var fieldName = schema.getFieldName(fieldID);
|
131
|
-
|
132
|
-
if (fieldName === ConnectionInterface.get().CURSOR) {
|
133
|
-
cursorFieldID = fieldID;
|
134
|
-
} else if (fieldName === ConnectionInterface.get().NODE) {
|
135
|
-
nodeFieldID = fieldID;
|
136
|
-
}
|
137
|
-
} // Edge
|
138
|
-
|
139
|
-
} catch (err) {
|
140
|
-
_iterator.e(err);
|
141
|
-
} finally {
|
142
|
-
_iterator.f();
|
143
|
-
}
|
144
138
|
|
145
|
-
if (
|
146
|
-
var
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
139
|
+
if (edgeDirective) {
|
140
|
+
var fieldType = schema.isList(transformedField.type) ? transformedField.type.ofType : transformedField.type;
|
141
|
+
var fields = schema.getFields(fieldType);
|
142
|
+
var cursorFieldID;
|
143
|
+
var nodeFieldID;
|
144
|
+
|
145
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(fields),
|
146
|
+
_step;
|
147
|
+
|
148
|
+
try {
|
149
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
150
|
+
var fieldID = _step.value;
|
151
|
+
var fieldName = schema.getFieldName(fieldID);
|
152
|
+
|
153
|
+
if (fieldName === ConnectionInterface.get().CURSOR) {
|
154
|
+
cursorFieldID = fieldID;
|
155
|
+
} else if (fieldName === ConnectionInterface.get().NODE) {
|
156
|
+
nodeFieldID = fieldID;
|
157
|
+
}
|
158
|
+
} // Edge
|
159
|
+
|
160
|
+
} catch (err) {
|
161
|
+
_iterator.e(err);
|
162
|
+
} finally {
|
163
|
+
_iterator.f();
|
164
|
+
}
|
165
|
+
|
166
|
+
if (cursorFieldID != null && nodeFieldID != null) {
|
167
|
+
var handle = {
|
168
|
+
name: edgeDirective.name,
|
169
|
+
key: '',
|
170
|
+
dynamicKey: null,
|
171
|
+
filters: null,
|
172
|
+
handleArgs: [connectionsArg]
|
173
|
+
};
|
174
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedField), {}, {
|
175
|
+
directives: transformedField.directives.filter(function (directive) {
|
176
|
+
return directive !== edgeDirective;
|
177
|
+
}),
|
178
|
+
handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [handle]) : [handle]
|
179
|
+
});
|
180
|
+
}
|
181
|
+
|
182
|
+
throw createUserError("Unsupported use of @".concat(edgeDirective.name, " on field '").concat(transformedField.name, "', expected an edge field (a field with 'cursor' and 'node' selection)."), [targetDirective.loc]);
|
183
|
+
} else {
|
184
|
+
// Node
|
185
|
+
var edgeTypeNameArg = nodeDirective.args.find(function (arg) {
|
186
|
+
return arg.name === 'edgeTypeName';
|
158
187
|
});
|
159
|
-
}
|
160
188
|
|
161
|
-
|
189
|
+
if (!edgeTypeNameArg) {
|
190
|
+
throw createUserError("Unsupported use of @".concat(nodeDirective.name, " on field '").concat(transformedField.name, "', 'edgeTypeName' argument must be provided."), [targetDirective.loc]);
|
191
|
+
}
|
192
|
+
|
193
|
+
var rawType = schema.getRawType(transformedField.type);
|
194
|
+
|
195
|
+
if (schema.canHaveSelections(rawType)) {
|
196
|
+
var _handle = {
|
197
|
+
name: nodeDirective.name,
|
198
|
+
key: '',
|
199
|
+
dynamicKey: null,
|
200
|
+
filters: null,
|
201
|
+
handleArgs: [connectionsArg, edgeTypeNameArg]
|
202
|
+
};
|
203
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedField), {}, {
|
204
|
+
directives: transformedField.directives.filter(function (directive) {
|
205
|
+
return directive !== nodeDirective;
|
206
|
+
}),
|
207
|
+
handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [_handle]) : [_handle]
|
208
|
+
});
|
209
|
+
}
|
210
|
+
|
211
|
+
throw createUserError("Unsupported use of @".concat(nodeDirective.name, " on field '").concat(transformedField.name, "'. Expected an object, union or interface, but got '").concat(schema.getTypeString(transformedField.type), "'."), [nodeDirective.loc]);
|
212
|
+
}
|
162
213
|
}
|
163
214
|
|
164
215
|
module.exports = {
|
@@ -12,14 +12,10 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
16
16
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
18
18
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
20
|
-
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
22
|
-
|
23
19
|
var IRTransformer = require('../core/IRTransformer');
|
24
20
|
|
25
21
|
var getIdentifierForArgumentValue = require('../core/getIdentifierForArgumentValue');
|
@@ -95,7 +91,7 @@ function visitLinkedField(field, state) {
|
|
95
91
|
throw createUserError("Invalid use of @stream on non-plural field '".concat(field.name, "'"), [streamDirective.loc]);
|
96
92
|
}
|
97
93
|
|
98
|
-
transformedField =
|
94
|
+
transformedField = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedField), {}, {
|
99
95
|
directives: transformedField.directives.filter(function (directive) {
|
100
96
|
return directive.name !== 'stream';
|
101
97
|
})
|
@@ -173,7 +169,7 @@ function visitFragmentSpread(spread, state) {
|
|
173
169
|
return transformedSpread;
|
174
170
|
}
|
175
171
|
|
176
|
-
transformedSpread =
|
172
|
+
transformedSpread = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedSpread), {}, {
|
177
173
|
directives: transformedSpread.directives.filter(function (directive) {
|
178
174
|
return directive.name !== 'defer';
|
179
175
|
})
|
@@ -10,11 +10,9 @@
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
11
11
|
'use strict';
|
12
12
|
|
13
|
-
|
13
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
15
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
18
16
|
|
19
17
|
var IRValidator = require('../core/IRValidator');
|
20
18
|
|
@@ -22,7 +20,7 @@ var _require = require('../core/CompilerError'),
|
|
22
20
|
createUserError = _require.createUserError;
|
23
21
|
|
24
22
|
function visitRoot(node) {
|
25
|
-
var _iterator =
|
23
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(node.selections),
|
26
24
|
_step;
|
27
25
|
|
28
26
|
try {
|
@@ -12,11 +12,7 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
16
|
-
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
18
|
-
|
19
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
20
16
|
|
21
17
|
var IRTransformer = require('../core/IRTransformer');
|
22
18
|
|
@@ -58,7 +54,7 @@ function visitField(field) {
|
|
58
54
|
var filters = handle.filters;
|
59
55
|
var args = filters ? nextField.args.filter(function (arg) {
|
60
56
|
return filters.indexOf(arg.name) !== -1;
|
61
|
-
}) : [];
|
57
|
+
}) : [];
|
62
58
|
|
63
59
|
if (handle.dynamicKey != null) {
|
64
60
|
args.push({
|
@@ -70,7 +66,7 @@ function visitField(field) {
|
|
70
66
|
});
|
71
67
|
}
|
72
68
|
|
73
|
-
return
|
69
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, nextField), {}, {
|
74
70
|
args: args,
|
75
71
|
alias: alias,
|
76
72
|
name: name,
|
@@ -0,0 +1,29 @@
|
|
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 IRTransformer = require('../core/IRTransformer');
|
13
|
+
|
14
|
+
var COMPILE_TIME_DIRECTIVES = new Set(['required']);
|
15
|
+
/**
|
16
|
+
* A transform that removes any directives that are only interpreted by the Relay compiler.
|
17
|
+
*/
|
18
|
+
|
19
|
+
function filterDirectivesTransform(context) {
|
20
|
+
return IRTransformer.transform(context, {
|
21
|
+
Directive: function Directive(directive) {
|
22
|
+
return COMPILE_TIME_DIRECTIVES.has(directive.name) ? null : directive;
|
23
|
+
}
|
24
|
+
});
|
25
|
+
}
|
26
|
+
|
27
|
+
module.exports = {
|
28
|
+
transform: filterDirectivesTransform
|
29
|
+
};
|
@@ -12,11 +12,7 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
16
|
-
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
18
|
-
|
19
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
20
16
|
|
21
17
|
var IRTransformer = require('../core/IRTransformer');
|
22
18
|
|
@@ -45,9 +41,10 @@ function flattenTransformImpl(context, options) {
|
|
45
41
|
Condition: visitorFn,
|
46
42
|
Defer: visitorFn,
|
47
43
|
Fragment: visitorFn,
|
48
|
-
InlineFragment: visitorFn,
|
49
44
|
InlineDataFragmentSpread: visitorFn,
|
45
|
+
InlineFragment: visitorFn,
|
50
46
|
LinkedField: visitorFn,
|
47
|
+
ModuleImport: visitorFn,
|
51
48
|
Root: visitorFn,
|
52
49
|
SplitOperation: visitorFn
|
53
50
|
}, function () {
|
@@ -84,7 +81,7 @@ function memoizedFlattenSelection(cache) {
|
|
84
81
|
|
85
82
|
var nextSelections = new Map();
|
86
83
|
var hasFlattened = flattenSelectionsInto(context.getSchema(), nextSelections, node, state, type);
|
87
|
-
var flattenedNode = hasFlattened ?
|
84
|
+
var flattenedNode = hasFlattened ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, node), {}, {
|
88
85
|
selections: Array.from(nextSelections.values())
|
89
86
|
}) : node;
|
90
87
|
state.parentType = type;
|
@@ -124,7 +121,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
124
121
|
throw createCompilerError("FlattenTransform: Expected an InlineFragment, got a '".concat(selection.kind, "'"), [selection.loc]);
|
125
122
|
}
|
126
123
|
|
127
|
-
flattenedSelections.set(nodeIdentifier,
|
124
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, flattenedSelection), {}, {
|
128
125
|
selections: mergeSelections(schema, flattenedSelection, selection, state, selection.typeCondition)
|
129
126
|
}));
|
130
127
|
} else if (flattenedSelection.kind === 'Condition') {
|
@@ -132,7 +129,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
132
129
|
throw createCompilerError("FlattenTransform: Expected a Condition, got a '".concat(selection.kind, "'"), [selection.loc]);
|
133
130
|
}
|
134
131
|
|
135
|
-
flattenedSelections.set(nodeIdentifier,
|
132
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, flattenedSelection), {}, {
|
136
133
|
selections: mergeSelections(schema, flattenedSelection, selection, state, type)
|
137
134
|
}));
|
138
135
|
} else if (flattenedSelection.kind === 'ClientExtension') {
|
@@ -140,7 +137,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
140
137
|
throw createCompilerError("FlattenTransform: Expected a ClientExtension, got a '".concat(selection.kind, "'"), [selection.loc]);
|
141
138
|
}
|
142
139
|
|
143
|
-
flattenedSelections.set(nodeIdentifier,
|
140
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, flattenedSelection), {}, {
|
144
141
|
selections: mergeSelections(schema, flattenedSelection, selection, state, type)
|
145
142
|
}));
|
146
143
|
} else if (flattenedSelection.kind === 'FragmentSpread') {// Ignore duplicate fragment spreads.
|
@@ -153,7 +150,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
153
150
|
throw createUserError('Found conflicting @module selections: use a unique alias on the ' + 'parent fields.', [selection.loc, flattenedSelection.loc]);
|
154
151
|
}
|
155
152
|
|
156
|
-
flattenedSelections.set(nodeIdentifier,
|
153
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, flattenedSelection), {}, {
|
157
154
|
selections: mergeSelections(schema, flattenedSelection, selection, state, type)
|
158
155
|
}));
|
159
156
|
} else if (flattenedSelection.kind === 'Defer') {
|
@@ -161,9 +158,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
161
158
|
throw createCompilerError("FlattenTransform: Expected a Defer, got a '".concat(selection.kind, "'"), [selection.loc]);
|
162
159
|
}
|
163
160
|
|
164
|
-
flattenedSelections.set(nodeIdentifier,
|
161
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
165
162
|
kind: 'Defer'
|
166
|
-
}, flattenedSelection, {
|
163
|
+
}, flattenedSelection), {}, {
|
167
164
|
selections: mergeSelections(schema, flattenedSelection, selection, state, type)
|
168
165
|
}));
|
169
166
|
} else if (flattenedSelection.kind === 'Stream') {
|
@@ -171,9 +168,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
171
168
|
throw createCompilerError("FlattenTransform: Expected a Stream, got a '".concat(selection.kind, "'"), [selection.loc]);
|
172
169
|
}
|
173
170
|
|
174
|
-
flattenedSelections.set(nodeIdentifier,
|
171
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
175
172
|
kind: 'Stream'
|
176
|
-
}, flattenedSelection, {
|
173
|
+
}, flattenedSelection), {}, {
|
177
174
|
selections: mergeSelections(schema, flattenedSelection, selection, state, type)
|
178
175
|
}));
|
179
176
|
} else if (flattenedSelection.kind === 'LinkedField') {
|
@@ -204,9 +201,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
|
|
204
201
|
assertUniqueArgsForAlias(selection, flattenedSelection);
|
205
202
|
|
206
203
|
if (selection.handles && selection.handles.length > 0) {
|
207
|
-
flattenedSelections.set(nodeIdentifier,
|
204
|
+
flattenedSelections.set(nodeIdentifier, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
208
205
|
kind: 'ScalarField'
|
209
|
-
}, flattenedSelection, {
|
206
|
+
}, flattenedSelection), {}, {
|
210
207
|
handles: mergeHandles(selection, flattenedSelection)
|
211
208
|
}));
|
212
209
|
}
|
@@ -12,14 +12,10 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
16
16
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
18
18
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
20
|
-
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
22
|
-
|
23
19
|
var IRTransformer = require('../core/IRTransformer');
|
24
20
|
|
25
21
|
var _require = require('../core/SchemaUtils'),
|
@@ -95,7 +91,7 @@ function visitLinkedField(field, state) {
|
|
95
91
|
var unmodifiedType = schema.assertCompositeType(schema.getRawType(field.type)); // If the field type has an `id` subfield add an `id` selection
|
96
92
|
|
97
93
|
if (schema.canHaveSelections(unmodifiedType) && schema.hasId(unmodifiedType)) {
|
98
|
-
return
|
94
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedNode), {}, {
|
99
95
|
selections: [].concat((0, _toConsumableArray2["default"])(transformedNode.selections), [state.idFieldForType(unmodifiedType)])
|
100
96
|
});
|
101
97
|
} // If the field type is abstract, then generate a `... on Node { id }`
|
@@ -126,7 +122,7 @@ function visitLinkedField(field, state) {
|
|
126
122
|
}).forEach(function (concreteType) {
|
127
123
|
selections.push(state.idFragmentForType(concreteType));
|
128
124
|
});
|
129
|
-
return
|
125
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedNode), {}, {
|
130
126
|
selections: selections
|
131
127
|
});
|
132
128
|
}
|
@@ -12,14 +12,10 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
16
16
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
18
18
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
20
|
-
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
22
|
-
|
23
19
|
var IRTransformer = require('../core/IRTransformer');
|
24
20
|
|
25
21
|
var generateAbstractTypeRefinementKey = require('../util/generateAbstractTypeRefinementKey');
|
@@ -69,7 +65,7 @@ function visitFragment(fragment, state) {
|
|
69
65
|
|
70
66
|
if (!isClientType && schema.isAbstractType(rawType)) {
|
71
67
|
var abstractKey = generateAbstractTypeRefinementKey(schema, rawType);
|
72
|
-
transformedNode =
|
68
|
+
transformedNode = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedNode), {}, {
|
73
69
|
selections: [{
|
74
70
|
kind: 'ScalarField',
|
75
71
|
alias: abstractKey,
|
@@ -105,7 +101,7 @@ function visitInlineFragment(fragment, state) {
|
|
105
101
|
|
106
102
|
if (!isClientType && schema.isAbstractType(rawType)) {
|
107
103
|
var abstractKey = generateAbstractTypeRefinementKey(schema, rawType);
|
108
|
-
transformedNode =
|
104
|
+
transformedNode = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedNode), {}, {
|
109
105
|
selections: [{
|
110
106
|
kind: 'ScalarField',
|
111
107
|
alias: abstractKey,
|
@@ -139,7 +135,7 @@ function visitLinkedField(field, state) {
|
|
139
135
|
transformedNode = this.traverse(field, state);
|
140
136
|
|
141
137
|
if (schema.isAbstractType(schema.getRawType(transformedNode.type)) && !hasUnaliasedSelection(transformedNode, TYPENAME_KEY)) {
|
142
|
-
transformedNode =
|
138
|
+
transformedNode = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedNode), {}, {
|
143
139
|
selections: [state.typenameField].concat((0, _toConsumableArray2["default"])(transformedNode.selections))
|
144
140
|
});
|
145
141
|
}
|
@@ -12,11 +12,7 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
16
|
-
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
18
|
-
|
19
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
20
16
|
|
21
17
|
var IRTransformer = require('../core/IRTransformer');
|
22
18
|
|
@@ -49,11 +45,11 @@ function visitFragment(fragment) {
|
|
49
45
|
return transformedFragment;
|
50
46
|
}
|
51
47
|
|
52
|
-
return
|
48
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedFragment), {}, {
|
53
49
|
directives: transformedFragment.directives.filter(function (directive) {
|
54
50
|
return directive !== inlineDirective;
|
55
51
|
}),
|
56
|
-
metadata:
|
52
|
+
metadata: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, transformedFragment.metadata || {}), {}, {
|
57
53
|
inlineData: true
|
58
54
|
})
|
59
55
|
});
|
@@ -12,17 +12,9 @@
|
|
12
12
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
14
14
|
|
15
|
-
var
|
15
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
20
|
-
|
21
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
22
|
-
|
23
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
24
|
-
|
25
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
17
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
26
18
|
|
27
19
|
var IRTransformer = require('../core/IRTransformer');
|
28
20
|
|
@@ -56,7 +48,7 @@ function visitFragment(fragment, state) {
|
|
56
48
|
}
|
57
49
|
|
58
50
|
var joinedArgumentDefinitions = joinArgumentDefinitions(this.getContext().getSchema(), fragment, state.reachableArguments, '@relay(unmask: true)');
|
59
|
-
return
|
51
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, result), {}, {
|
60
52
|
argumentDefinitions: joinedArgumentDefinitions
|
61
53
|
});
|
62
54
|
}
|
@@ -95,7 +87,7 @@ function visitFragmentSpread(fragmentSpread, state) {
|
|
95
87
|
// to list all invalid variables/arguments instead of only one.
|
96
88
|
|
97
89
|
|
98
|
-
var _iterator =
|
90
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(fragment.argumentDefinitions),
|
99
91
|
_step;
|
100
92
|
|
101
93
|
try {
|