relay-compiler 10.0.1 → 10.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/relay-compiler +1347 -604
- 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/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 +5 -5
- package/lib/codegen/CodegenRunner.js +2 -2
- package/lib/codegen/NormalizationCodeGenerator.js +20 -8
- package/lib/codegen/ReaderCodeGenerator.js +43 -8
- package/lib/codegen/RelayFileWriter.js +2 -2
- package/lib/codegen/compileRelayArtifacts.js +2 -2
- package/lib/codegen/sortObjectByKey.js +2 -2
- package/lib/codegen/writeRelayGeneratedFile.js +2 -2
- package/lib/core/ASTCache.js +1 -0
- package/lib/core/CompilerContext.js +1 -0
- package/lib/core/CompilerError.js +2 -2
- package/lib/core/IRPrinter.js +3 -4
- package/lib/core/RelayGraphQLEnumsGenerator.js +2 -2
- package/lib/core/RelayIRTransforms.js +10 -4
- package/lib/core/RelayParser.js +4 -4
- package/lib/core/Schema.js +48 -7
- package/lib/core/getFieldDefinition.js +2 -2
- package/lib/core/inferRootArgumentDefinitions.js +4 -4
- package/lib/language/javascript/FindGraphQLTags.js +3 -69
- package/lib/language/javascript/RelayFlowBabelFactories.js +5 -5
- package/lib/language/javascript/RelayFlowGenerator.js +80 -21
- package/lib/runner/Artifacts.js +2 -2
- package/lib/runner/BufferedFilesystem.js +2 -2
- package/lib/runner/GraphQLASTNodeGroup.js +2 -2
- package/lib/runner/GraphQLNodeMap.js +2 -2
- package/lib/runner/Sources.js +21 -2
- package/lib/runner/StrictMap.js +2 -2
- package/lib/runner/getChangedNodeNames.js +2 -2
- package/lib/transforms/ApplyFragmentArgumentTransform.js +14 -14
- package/lib/transforms/ClientExtensionsTransform.js +5 -3
- package/lib/transforms/ConnectionTransform.js +8 -9
- package/lib/transforms/DeclarativeConnectionMutationTransform.js +113 -55
- package/lib/transforms/DeferStreamTransform.js +2 -2
- package/lib/transforms/DisallowTypenameOnRoot.js +2 -2
- package/lib/transforms/FieldHandleTransform.js +2 -2
- package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
- package/lib/transforms/FlattenTransform.js +13 -12
- package/lib/transforms/GenerateIDFieldTransform.js +2 -2
- package/lib/transforms/GenerateTypeNameTransform.js +3 -3
- package/lib/transforms/InlineDataFragmentTransform.js +2 -2
- package/lib/transforms/MaskTransform.js +3 -3
- package/lib/transforms/MatchTransform.js +7 -3
- package/lib/transforms/ReactFlightComponentTransform.js +162 -0
- package/lib/transforms/RefetchableFragmentTransform.js +4 -4
- package/lib/transforms/RelayDirectiveTransform.js +2 -2
- package/lib/transforms/RequiredFieldTransform.js +380 -0
- package/lib/transforms/SkipHandleFieldTransform.js +1 -1
- package/lib/transforms/SkipRedundantNodesTransform.js +3 -1
- package/lib/transforms/SkipUnreachableNodeTransform.js +1 -1
- package/lib/transforms/SkipUnusedVariablesTransform.js +3 -3
- package/lib/transforms/TestOperationTransform.js +2 -2
- package/lib/transforms/ValidateGlobalVariablesTransform.js +2 -2
- package/lib/transforms/ValidateRequiredArgumentsTransform.js +2 -2
- package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +2 -2
- package/lib/transforms/ValidateUnusedVariablesTransform.js +2 -2
- package/lib/transforms/query-generators/FetchableQueryGenerator.js +1 -1
- package/lib/transforms/query-generators/NodeQueryGenerator.js +1 -1
- package/lib/transforms/query-generators/index.js +2 -2
- package/lib/transforms/query-generators/utils.js +2 -2
- 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 +2 -0
- package/transforms/ConnectionTransform.js.flow +0 -1
- package/transforms/DeclarativeConnectionMutationTransform.js.flow +137 -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
@@ -26,6 +26,8 @@ var DisallowTypenameOnRoot = require('../transforms/DisallowTypenameOnRoot');
|
|
26
26
|
|
27
27
|
var FieldHandleTransform = require('../transforms/FieldHandleTransform');
|
28
28
|
|
29
|
+
var FilterCompilerDirectivesTransform = require('../transforms/FilterCompilerDirectivesTransform');
|
30
|
+
|
29
31
|
var FilterDirectivesTransform = require('../transforms/FilterDirectivesTransform');
|
30
32
|
|
31
33
|
var FlattenTransform = require('../transforms/FlattenTransform');
|
@@ -42,12 +44,16 @@ var MaskTransform = require('../transforms/MaskTransform');
|
|
42
44
|
|
43
45
|
var MatchTransform = require('../transforms/MatchTransform');
|
44
46
|
|
47
|
+
var ReactFlightComponentTransform = require('../transforms/ReactFlightComponentTransform');
|
48
|
+
|
45
49
|
var RefetchableFragmentTransform = require('../transforms/RefetchableFragmentTransform');
|
46
50
|
|
47
51
|
var RelayDirectiveTransform = require('../transforms/RelayDirectiveTransform');
|
48
52
|
|
49
53
|
var RelayFlowGenerator = require('../language/javascript/RelayFlowGenerator');
|
50
54
|
|
55
|
+
var RequiredFieldTransform = require('../transforms/RequiredFieldTransform');
|
56
|
+
|
51
57
|
var SkipClientExtensionsTransform = require('../transforms/SkipClientExtensionsTransform');
|
52
58
|
|
53
59
|
var SkipHandleFieldTransform = require('../transforms/SkipHandleFieldTransform');
|
@@ -71,19 +77,19 @@ var ValidateRequiredArgumentsTransform = require('../transforms/ValidateRequired
|
|
71
77
|
var ValidateUnusedVariablesTransform = require('../transforms/ValidateUnusedVariablesTransform');
|
72
78
|
|
73
79
|
// Transforms applied to the code used to process a query response.
|
74
|
-
var relaySchemaExtensions = [ConnectionTransform.SCHEMA_EXTENSION, DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION, InlineDataFragmentTransform.SCHEMA_EXTENSION, MatchTransform.SCHEMA_EXTENSION, RefetchableFragmentTransform.SCHEMA_EXTENSION, RelayDirectiveTransform.SCHEMA_EXTENSION, RelayFlowGenerator.SCHEMA_EXTENSION, TestOperationTransform.SCHEMA_EXTENSION, ValidateUnusedVariablesTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and
|
80
|
+
var relaySchemaExtensions = [ConnectionTransform.SCHEMA_EXTENSION, DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION, InlineDataFragmentTransform.SCHEMA_EXTENSION, MatchTransform.SCHEMA_EXTENSION, RequiredFieldTransform.SCHEMA_EXTENSION, RefetchableFragmentTransform.SCHEMA_EXTENSION, RelayDirectiveTransform.SCHEMA_EXTENSION, RelayFlowGenerator.SCHEMA_EXTENSION, TestOperationTransform.SCHEMA_EXTENSION, ValidateUnusedVariablesTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and
|
75
81
|
// writing from the store.
|
76
82
|
|
77
|
-
var relayCommonTransforms = [DisallowIdAsAlias.transform, ConnectionTransform.transform, RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RefetchableFragmentTransform.transform, DeferStreamTransform.transform]; // Transforms applied to fragments used for reading data from a store
|
83
|
+
var relayCommonTransforms = [DisallowIdAsAlias.transform, ConnectionTransform.transform, RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RefetchableFragmentTransform.transform, DeferStreamTransform.transform, ReactFlightComponentTransform.transform]; // Transforms applied to fragments used for reading data from a store
|
78
84
|
|
79
85
|
var relayFragmentTransforms = [ClientExtensionsTransform.transform, FieldHandleTransform.transform, InlineDataFragmentTransform.transform, FlattenTransform.transformWithOptions({
|
80
86
|
isForCodegen: true
|
81
|
-
}), SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for
|
87
|
+
}), RequiredFieldTransform.transform, SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for
|
82
88
|
// fetching data from the server and parsing those responses.
|
83
89
|
|
84
90
|
var relayQueryTransforms = [SplitModuleImportTransform.transform, DisallowTypenameOnRoot.transform, ValidateUnusedVariablesTransform.transform, ApplyFragmentArgumentTransform.transform, ValidateGlobalVariablesTransform.transform, GenerateIDFieldTransform.transform, DeclarativeConnectionMutationTransform.transform]; // Transforms applied to the code used to process a query response.
|
85
91
|
|
86
|
-
var relayCodegenTransforms = [SkipUnreachableNodeTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions
|
92
|
+
var relayCodegenTransforms = [FilterCompilerDirectivesTransform.transform, SkipUnreachableNodeTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions
|
87
93
|
// transform after we've inlined fragment spreads (i.e. InlineFragmentsTransform)
|
88
94
|
// This will ensure that we don't generate nested ClientExtension nodes
|
89
95
|
ClientExtensionsTransform.transform, GenerateTypeNameTransform.transform, FlattenTransform.transformWithOptions({
|
package/lib/core/RelayParser.js
CHANGED
@@ -20,9 +20,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
20
20
|
|
21
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
22
|
|
23
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (
|
23
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
|
24
24
|
|
25
|
-
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(
|
25
|
+
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
26
26
|
|
27
27
|
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; }
|
28
28
|
|
@@ -623,7 +623,7 @@ var GraphQLDefinitionParser = /*#__PURE__*/function () {
|
|
623
623
|
directives = _this4$_splitConditio[1];
|
624
624
|
|
625
625
|
var conditionalNodes = applyConditions(conditions, // $FlowFixMe[incompatible-call]
|
626
|
-
[_objectSpread({}, node, {
|
626
|
+
[_objectSpread(_objectSpread({}, node), {}, {
|
627
627
|
directives: directives
|
628
628
|
})]);
|
629
629
|
|
@@ -1317,7 +1317,7 @@ function buildLocation(loc) {
|
|
1317
1317
|
function applyConditions(conditions, selections) {
|
1318
1318
|
var nextSelections = selections;
|
1319
1319
|
conditions.forEach(function (condition) {
|
1320
|
-
nextSelections = [_objectSpread({}, condition, {
|
1320
|
+
nextSelections = [_objectSpread(_objectSpread({}, condition), {}, {
|
1321
1321
|
selections: nextSelections
|
1322
1322
|
})];
|
1323
1323
|
});
|
package/lib/core/Schema.js
CHANGED
@@ -15,9 +15,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
15
15
|
|
16
16
|
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
|
17
17
|
|
18
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (
|
18
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
|
19
19
|
|
20
|
-
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(
|
20
|
+
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
21
21
|
|
22
22
|
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; }
|
23
23
|
|
@@ -198,12 +198,13 @@ var NonNull = /*#__PURE__*/function () {
|
|
198
198
|
*/
|
199
199
|
|
200
200
|
|
201
|
-
var Field = function Field(schema, name, type, belongsTo, args, isClient) {
|
201
|
+
var Field = function Field(schema, name, type, belongsTo, args, directives, isClient) {
|
202
202
|
this.name = name;
|
203
203
|
this.type = type;
|
204
204
|
this.belongsTo = belongsTo;
|
205
205
|
this.isClient = isClient;
|
206
206
|
this.args = parseInputArgumentDefinitionsMap(schema, args);
|
207
|
+
this.directives = directives;
|
207
208
|
};
|
208
209
|
/**
|
209
210
|
* @private
|
@@ -460,6 +461,27 @@ var Schema = /*#__PURE__*/function () {
|
|
460
461
|
return type;
|
461
462
|
};
|
462
463
|
|
464
|
+
_proto4.mapListItemType = function mapListItemType(type, mapper) {
|
465
|
+
if (!(type instanceof List)) {
|
466
|
+
throw createCompilerError('Expected List type');
|
467
|
+
}
|
468
|
+
|
469
|
+
var innerType = mapper(type.ofType);
|
470
|
+
var cacheKey = "[".concat(this.getTypeString(innerType), "]");
|
471
|
+
|
472
|
+
var newType = this._typeWrappersMap.get(cacheKey);
|
473
|
+
|
474
|
+
if (newType) {
|
475
|
+
return newType;
|
476
|
+
}
|
477
|
+
|
478
|
+
newType = new List(innerType);
|
479
|
+
|
480
|
+
this._typeWrappersMap.set(cacheKey, newType);
|
481
|
+
|
482
|
+
return newType;
|
483
|
+
};
|
484
|
+
|
463
485
|
_proto4.areEqualTypes = function areEqualTypes(typeA, typeB) {
|
464
486
|
if (typeA === typeB) {
|
465
487
|
return true;
|
@@ -667,6 +689,14 @@ var Schema = /*#__PURE__*/function () {
|
|
667
689
|
return type;
|
668
690
|
};
|
669
691
|
|
692
|
+
_proto4.asInputObjectType = function asInputObjectType(type) {
|
693
|
+
if (!_isInputObject(type)) {
|
694
|
+
return null;
|
695
|
+
}
|
696
|
+
|
697
|
+
return type;
|
698
|
+
};
|
699
|
+
|
670
700
|
_proto4.assertInterfaceType = function assertInterfaceType(type) {
|
671
701
|
if (!_isInterface(type)) {
|
672
702
|
throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an interface type."));
|
@@ -975,7 +1005,7 @@ var Schema = /*#__PURE__*/function () {
|
|
975
1005
|
fieldName = _step$value[0],
|
976
1006
|
fieldDefinition = _step$value[1];
|
977
1007
|
var fieldType = this.expectTypeFromAST(fieldDefinition.type);
|
978
|
-
fieldsMap.set(fieldName, new Field(this, fieldName, fieldType, this.assertCompositeType(type), fieldDefinition.arguments, fieldDefinition.isClient));
|
1008
|
+
fieldsMap.set(fieldName, new Field(this, fieldName, fieldType, this.assertCompositeType(type), fieldDefinition.arguments, fieldDefinition.directives, fieldDefinition.isClient));
|
979
1009
|
}
|
980
1010
|
} catch (err) {
|
981
1011
|
_iterator.e(err);
|
@@ -998,7 +1028,7 @@ var Schema = /*#__PURE__*/function () {
|
|
998
1028
|
|
999
1029
|
var _fieldType = this.expectTypeFromAST(typeNode);
|
1000
1030
|
|
1001
|
-
fieldsMap.set(_fieldName, new Field(this, _fieldName, _fieldType, type, [], false));
|
1031
|
+
fieldsMap.set(_fieldName, new Field(this, _fieldName, _fieldType, type, [], null, false));
|
1002
1032
|
}
|
1003
1033
|
} catch (err) {
|
1004
1034
|
_iterator2.e(err);
|
@@ -1028,7 +1058,7 @@ var Schema = /*#__PURE__*/function () {
|
|
1028
1058
|
var typename = this._typeNameMap.get(type);
|
1029
1059
|
|
1030
1060
|
if (!typename) {
|
1031
|
-
typename = new Field(this, TYPENAME_FIELD, this.getNonNullType(this.expectStringType()), type, [], false);
|
1061
|
+
typename = new Field(this, TYPENAME_FIELD, this.getNonNullType(this.expectStringType()), type, [], null, false);
|
1032
1062
|
|
1033
1063
|
this._typeNameMap.set(type, typename);
|
1034
1064
|
}
|
@@ -1040,7 +1070,7 @@ var Schema = /*#__PURE__*/function () {
|
|
1040
1070
|
var clientId = this._clientIdMap.get(type);
|
1041
1071
|
|
1042
1072
|
if (!clientId) {
|
1043
|
-
clientId = new Field(this, CLIENT_ID_FIELD, this.getNonNullType(this.expectIdType()), type, [], true);
|
1073
|
+
clientId = new Field(this, CLIENT_ID_FIELD, this.getNonNullType(this.expectIdType()), type, [], null, true);
|
1044
1074
|
|
1045
1075
|
this._clientIdMap.set(type, clientId);
|
1046
1076
|
}
|
@@ -1566,6 +1596,17 @@ var TypeMap = /*#__PURE__*/function () {
|
|
1566
1596
|
defaultValue: arg.defaultValue
|
1567
1597
|
};
|
1568
1598
|
}) : [],
|
1599
|
+
directives: fieldNode.directives ? fieldNode.directives.map(function (directive) {
|
1600
|
+
return {
|
1601
|
+
name: directive.name.value,
|
1602
|
+
args: directive.arguments ? directive.arguments.map(function (arg) {
|
1603
|
+
return {
|
1604
|
+
name: arg.name.value,
|
1605
|
+
value: arg.value
|
1606
|
+
};
|
1607
|
+
}) : []
|
1608
|
+
};
|
1609
|
+
}) : null,
|
1569
1610
|
type: fieldNode.type,
|
1570
1611
|
isClient: isClient
|
1571
1612
|
});
|
@@ -10,9 +10,9 @@
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
11
11
|
'use strict';
|
12
12
|
|
13
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (
|
13
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
|
14
14
|
|
15
|
-
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(
|
15
|
+
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
16
16
|
|
17
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; }
|
18
18
|
|
@@ -14,9 +14,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
14
14
|
|
15
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
16
|
|
17
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (
|
17
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
|
18
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(
|
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
20
20
|
|
21
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
22
|
|
@@ -64,7 +64,7 @@ function inferRootArgumentDefinitions(context) {
|
|
64
64
|
case 'Fragment':
|
65
65
|
{
|
66
66
|
var argumentDefinitions = transformFragmentArguments(context, transformed, node);
|
67
|
-
return _objectSpread({}, node, {
|
67
|
+
return _objectSpread(_objectSpread({}, node), {}, {
|
68
68
|
argumentDefinitions: Array.from(argumentDefinitions.values())
|
69
69
|
});
|
70
70
|
}
|
@@ -114,7 +114,7 @@ function transformRoot(context, transformed, root) {
|
|
114
114
|
}
|
115
115
|
|
116
116
|
visit(context, transformed, argumentDefinitions, root);
|
117
|
-
return _objectSpread({}, root, {
|
117
|
+
return _objectSpread(_objectSpread({}, root), {}, {
|
118
118
|
argumentDefinitions: Array.from(argumentDefinitions.values(), function (argDef) {
|
119
119
|
var _localDefinition$type, _localDefinition$defa;
|
120
120
|
|
@@ -31,47 +31,10 @@ var BABYLON_OPTIONS = {
|
|
31
31
|
};
|
32
32
|
|
33
33
|
function find(text) {
|
34
|
-
var result = [];
|
34
|
+
var result = []; // $FlowFixMe Discovered when typing babel/parser
|
35
|
+
|
35
36
|
var ast = babylon.parse(text, BABYLON_OPTIONS);
|
36
37
|
var visitors = {
|
37
|
-
CallExpression: function CallExpression(node) {
|
38
|
-
var callee = node.callee;
|
39
|
-
|
40
|
-
if (!(callee.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.name] || callee.kind === 'MemberExpression' && callee.object.type === 'Identifier' && callee.object.value === 'Relay' && callee.property.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.property.name])) {
|
41
|
-
traverse(node, visitors);
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
|
45
|
-
var fragments = node.arguments[1];
|
46
|
-
|
47
|
-
if (fragments.type === 'ObjectExpression') {
|
48
|
-
fragments.properties.forEach(function (property) {
|
49
|
-
!(property.type === 'ObjectProperty' && property.key.type === 'Identifier' && property.value.type === 'TaggedTemplateExpression') ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be ' + '`key: graphql`.', node.callee.name) : invariant(false) : void 0;
|
50
|
-
!isGraphQLModernOrDeprecatedTag(property.value.tag) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, property.value.tag.loc)) : invariant(false) : void 0;
|
51
|
-
|
52
|
-
if (isGraphQLTag(property.value.tag)) {
|
53
|
-
result.push({
|
54
|
-
keyName: property.key.name,
|
55
|
-
template: getGraphQLText(property.value.quasi),
|
56
|
-
sourceLocationOffset: getSourceLocationOffset(property.value.quasi)
|
57
|
-
});
|
58
|
-
}
|
59
|
-
});
|
60
|
-
} else {
|
61
|
-
!(fragments && fragments.type === 'TaggedTemplateExpression') ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects a second argument of fragment ' + 'definitions.', node.callee.name) : invariant(false) : void 0;
|
62
|
-
!isGraphQLModernOrDeprecatedTag(fragments.tag) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, fragments.tag.loc)) : invariant(false) : void 0;
|
63
|
-
result.push({
|
64
|
-
keyName: null,
|
65
|
-
template: getGraphQLText(fragments.quasi),
|
66
|
-
sourceLocationOffset: getSourceLocationOffset(fragments.quasi)
|
67
|
-
});
|
68
|
-
} // Visit remaining arguments
|
69
|
-
|
70
|
-
|
71
|
-
for (var ii = 2; ii < node.arguments.length; ii++) {
|
72
|
-
visit(node.arguments[ii], visitors);
|
73
|
-
}
|
74
|
-
},
|
75
38
|
TaggedTemplateExpression: function TaggedTemplateExpression(node) {
|
76
39
|
if (isGraphQLTag(node.tag)) {
|
77
40
|
result.push({
|
@@ -86,17 +49,6 @@ function find(text) {
|
|
86
49
|
return result;
|
87
50
|
}
|
88
51
|
|
89
|
-
var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
|
90
|
-
createFragmentContainer: {
|
91
|
-
value: true
|
92
|
-
},
|
93
|
-
createPaginationContainer: {
|
94
|
-
value: true
|
95
|
-
},
|
96
|
-
createRefetchContainer: {
|
97
|
-
value: true
|
98
|
-
}
|
99
|
-
});
|
100
52
|
var IGNORED_KEYS = {
|
101
53
|
comments: true,
|
102
54
|
end: true,
|
@@ -112,20 +64,12 @@ function isGraphQLTag(tag) {
|
|
112
64
|
return tag.type === 'Identifier' && tag.name === 'graphql';
|
113
65
|
}
|
114
66
|
|
115
|
-
function isGraphQLModernOrDeprecatedTag(tag) {
|
116
|
-
return tag.type === 'Identifier' && (tag.name === 'graphql' || tag.name === 'graphql_DEPRECATED');
|
117
|
-
}
|
118
|
-
|
119
67
|
function getTemplateNode(quasi) {
|
120
68
|
var quasis = quasi.quasis;
|
121
69
|
!(quasis && quasis.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, 'FindGraphQLTags: Substitutions are not allowed in graphql tags.') : invariant(false) : void 0;
|
122
70
|
return quasis[0];
|
123
71
|
}
|
124
72
|
|
125
|
-
function getGraphQLText(quasi) {
|
126
|
-
return getTemplateNode(quasi).value.raw;
|
127
|
-
}
|
128
|
-
|
129
73
|
function getSourceLocationOffset(quasi) {
|
130
74
|
var loc = getTemplateNode(quasi).loc.start;
|
131
75
|
return {
|
@@ -135,17 +79,6 @@ function getSourceLocationOffset(quasi) {
|
|
135
79
|
};
|
136
80
|
}
|
137
81
|
|
138
|
-
function getSourceTextForLocation(text, loc) {
|
139
|
-
if (loc == null) {
|
140
|
-
return '(source unavailable)';
|
141
|
-
}
|
142
|
-
|
143
|
-
var lines = text.split('\n').slice(loc.start.line - 1, loc.end.line);
|
144
|
-
lines[0] = lines[0].slice(loc.start.column);
|
145
|
-
lines[lines.length - 1] = lines[lines.length - 1].slice(0, loc.end.column);
|
146
|
-
return lines.join('\n');
|
147
|
-
}
|
148
|
-
|
149
82
|
function invariant(condition, msg) {
|
150
83
|
if (!condition) {
|
151
84
|
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
@@ -157,6 +90,7 @@ function invariant(condition, msg) {
|
|
157
90
|
}
|
158
91
|
|
159
92
|
function visit(node, visitors) {
|
93
|
+
// $FlowFixMe Discovered when typing babel
|
160
94
|
var fn = visitors[node.type];
|
161
95
|
|
162
96
|
if (fn != null) {
|
@@ -18,7 +18,7 @@ var t = require('@babel/types');
|
|
18
18
|
* type NAME = any;
|
19
19
|
*/
|
20
20
|
function anyTypeAlias(name) {
|
21
|
-
return t.typeAlias(t.identifier(name),
|
21
|
+
return t.typeAlias(t.identifier(name), undefined, t.anyTypeAnnotation());
|
22
22
|
}
|
23
23
|
/**
|
24
24
|
* {|
|
@@ -51,7 +51,7 @@ function inexactObjectTypeAnnotation(props) {
|
|
51
51
|
|
52
52
|
|
53
53
|
function exportType(name, type) {
|
54
|
-
return t.exportNamedDeclaration(t.typeAlias(t.identifier(name),
|
54
|
+
return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), undefined, type), [], undefined);
|
55
55
|
}
|
56
56
|
/**
|
57
57
|
* export type {A, B, C}
|
@@ -59,9 +59,9 @@ function exportType(name, type) {
|
|
59
59
|
|
60
60
|
|
61
61
|
function exportTypes(names) {
|
62
|
-
var res = t.exportNamedDeclaration(
|
62
|
+
var res = t.exportNamedDeclaration(undefined, names.map(function (name) {
|
63
63
|
return t.exportSpecifier(t.identifier(name), t.identifier(name));
|
64
|
-
}),
|
64
|
+
}), undefined);
|
65
65
|
res.exportKind = 'type';
|
66
66
|
return res;
|
67
67
|
}
|
@@ -71,7 +71,7 @@ function exportTypes(names) {
|
|
71
71
|
|
72
72
|
|
73
73
|
function declareExportOpaqueType(name, value) {
|
74
|
-
return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name),
|
74
|
+
return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), undefined, t.genericTypeAnnotation(t.identifier(value))));
|
75
75
|
}
|
76
76
|
/**
|
77
77
|
* import type {NAMES[0], NAMES[1], ...} from 'MODULE';
|