relay-compiler 0.0.0-main-f0b65f0b → 0.0.0-main-e0026a71
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/cli.js +23 -0
- package/index.js +19 -3
- package/linux-x64/relay +0 -0
- package/macos-x64/relay +0 -0
- package/package.json +2 -24
- package/win-x64/relay.exe +0 -0
- package/bin/RelayCompilerBin.js.flow +0 -168
- package/bin/RelayCompilerMain.js.flow +0 -515
- package/bin/__fixtures__/plugin-module.js.flow +0 -17
- package/bin/relay-compiler +0 -19068
- package/codegen/CodegenDirectory.js.flow +0 -372
- package/codegen/CodegenRunner.js.flow +0 -424
- package/codegen/CodegenTypes.js.flow +0 -28
- package/codegen/CodegenWatcher.js.flow +0 -250
- package/codegen/NormalizationCodeGenerator.js.flow +0 -566
- package/codegen/ReaderCodeGenerator.js.flow +0 -510
- package/codegen/RelayCodeGenerator.js.flow +0 -85
- package/codegen/RelayFileWriter.js.flow +0 -365
- package/codegen/SourceControl.js.flow +0 -58
- package/codegen/compileRelayArtifacts.js.flow +0 -181
- package/codegen/createPrintRequireModuleDependency.js.flow +0 -19
- package/codegen/sortObjectByKey.js.flow +0 -25
- package/codegen/writeRelayGeneratedFile.js.flow +0 -235
- package/core/ASTCache.js.flow +0 -73
- package/core/ASTConvert.js.flow +0 -230
- package/core/CompilerContext.js.flow +0 -189
- package/core/CompilerError.js.flow +0 -255
- package/core/DotGraphQLParser.js.flow +0 -37
- package/core/GraphQLCompilerProfiler.js.flow +0 -341
- package/core/GraphQLDerivedFromMetadata.js.flow +0 -36
- package/core/GraphQLWatchmanClient.js.flow +0 -109
- package/core/IR.js.flow +0 -326
- package/core/IRPrinter.js.flow +0 -472
- package/core/IRTransformer.js.flow +0 -376
- package/core/IRValidator.js.flow +0 -259
- package/core/IRVisitor.js.flow +0 -150
- package/core/JSModuleParser.js.flow +0 -24
- package/core/RelayCompilerScope.js.flow +0 -199
- package/core/RelayFindGraphQLTags.js.flow +0 -118
- package/core/RelayGraphQLEnumsGenerator.js.flow +0 -55
- package/core/RelayIRTransforms.js.flow +0 -138
- package/core/RelayParser.js.flow +0 -1741
- package/core/RelaySourceModuleParser.js.flow +0 -133
- package/core/Schema.js.flow +0 -2035
- package/core/SchemaUtils.js.flow +0 -120
- package/core/filterContextForNode.js.flow +0 -49
- package/core/getFieldDefinition.js.flow +0 -156
- package/core/getIdentifierForArgumentValue.js.flow +0 -49
- package/core/getIdentifierForSelection.js.flow +0 -68
- package/core/getLiteralArgumentValues.js.flow +0 -32
- package/core/getNormalizationOperationName.js.flow +0 -19
- package/core/inferRootArgumentDefinitions.js.flow +0 -322
- package/index.js.flow +0 -198
- package/language/RelayLanguagePluginInterface.js.flow +0 -283
- package/language/javascript/FindGraphQLTags.js.flow +0 -136
- package/language/javascript/RelayFlowBabelFactories.js.flow +0 -176
- package/language/javascript/RelayFlowGenerator.js.flow +0 -1096
- package/language/javascript/RelayFlowTypeTransformers.js.flow +0 -181
- package/language/javascript/RelayLanguagePluginJavaScript.js.flow +0 -33
- package/language/javascript/formatGeneratedModule.js.flow +0 -65
- package/lib/bin/RelayCompilerBin.js +0 -143
- package/lib/bin/RelayCompilerMain.js +0 -488
- package/lib/bin/__fixtures__/plugin-module.js +0 -16
- package/lib/codegen/CodegenDirectory.js +0 -335
- package/lib/codegen/CodegenRunner.js +0 -433
- package/lib/codegen/CodegenTypes.js +0 -11
- package/lib/codegen/CodegenWatcher.js +0 -271
- package/lib/codegen/NormalizationCodeGenerator.js +0 -487
- package/lib/codegen/ReaderCodeGenerator.js +0 -473
- package/lib/codegen/RelayCodeGenerator.js +0 -75
- package/lib/codegen/RelayFileWriter.js +0 -270
- package/lib/codegen/SourceControl.js +0 -60
- package/lib/codegen/compileRelayArtifacts.js +0 -157
- package/lib/codegen/createPrintRequireModuleDependency.js +0 -19
- package/lib/codegen/sortObjectByKey.js +0 -41
- package/lib/codegen/writeRelayGeneratedFile.js +0 -206
- package/lib/core/ASTCache.js +0 -70
- package/lib/core/ASTConvert.js +0 -198
- package/lib/core/CompilerContext.js +0 -165
- package/lib/core/CompilerError.js +0 -252
- package/lib/core/DotGraphQLParser.js +0 -40
- package/lib/core/GraphQLCompilerProfiler.js +0 -299
- package/lib/core/GraphQLDerivedFromMetadata.js +0 -31
- package/lib/core/GraphQLWatchmanClient.js +0 -150
- package/lib/core/IR.js +0 -11
- package/lib/core/IRPrinter.js +0 -388
- package/lib/core/IRTransformer.js +0 -345
- package/lib/core/IRValidator.js +0 -226
- package/lib/core/IRVisitor.js +0 -45
- package/lib/core/JSModuleParser.js +0 -18
- package/lib/core/RelayCompilerScope.js +0 -183
- package/lib/core/RelayFindGraphQLTags.js +0 -79
- package/lib/core/RelayGraphQLEnumsGenerator.js +0 -50
- package/lib/core/RelayIRTransforms.js +0 -109
- package/lib/core/RelayParser.js +0 -1381
- package/lib/core/RelaySourceModuleParser.js +0 -104
- package/lib/core/Schema.js +0 -1877
- package/lib/core/SchemaUtils.js +0 -98
- package/lib/core/filterContextForNode.js +0 -50
- package/lib/core/getFieldDefinition.js +0 -145
- package/lib/core/getIdentifierForArgumentValue.js +0 -54
- package/lib/core/getIdentifierForSelection.js +0 -49
- package/lib/core/getLiteralArgumentValues.js +0 -26
- package/lib/core/getNormalizationOperationName.js +0 -17
- package/lib/core/inferRootArgumentDefinitions.js +0 -351
- package/lib/index.js +0 -178
- package/lib/language/RelayLanguagePluginInterface.js +0 -26
- package/lib/language/javascript/FindGraphQLTags.js +0 -126
- package/lib/language/javascript/RelayFlowBabelFactories.js +0 -160
- package/lib/language/javascript/RelayFlowGenerator.js +0 -856
- package/lib/language/javascript/RelayFlowTypeTransformers.js +0 -119
- package/lib/language/javascript/RelayLanguagePluginJavaScript.js +0 -30
- package/lib/language/javascript/formatGeneratedModule.js +0 -36
- package/lib/reporters/ConsoleReporter.js +0 -61
- package/lib/reporters/MultiReporter.js +0 -45
- package/lib/reporters/Reporter.js +0 -11
- package/lib/runner/Artifacts.js +0 -323
- package/lib/runner/BufferedFilesystem.js +0 -262
- package/lib/runner/GraphQLASTNodeGroup.js +0 -256
- package/lib/runner/GraphQLASTUtils.js +0 -23
- package/lib/runner/GraphQLNodeMap.js +0 -81
- package/lib/runner/Sources.js +0 -271
- package/lib/runner/StrictMap.js +0 -134
- package/lib/runner/compileArtifacts.js +0 -39
- package/lib/runner/extractAST.js +0 -77
- package/lib/runner/getChangedNodeNames.js +0 -82
- package/lib/runner/getSchemaInstance.js +0 -30
- package/lib/runner/types.js +0 -12
- package/lib/test-utils/TestSchema.js +0 -27
- package/lib/test-utils/parseGraphQLText.js +0 -30
- package/lib/transforms/ApplyFragmentArgumentTransform.js +0 -393
- package/lib/transforms/ClientExtensionsTransform.js +0 -221
- package/lib/transforms/ConnectionTransform.js +0 -639
- package/lib/transforms/DeclarativeConnectionMutationTransform.js +0 -218
- package/lib/transforms/DeferStreamTransform.js +0 -246
- package/lib/transforms/DisallowIdAsAlias.js +0 -40
- package/lib/transforms/DisallowTypenameOnRoot.js +0 -53
- package/lib/transforms/FieldHandleTransform.js +0 -79
- package/lib/transforms/FilterCompilerDirectivesTransform.js +0 -29
- package/lib/transforms/FilterDirectivesTransform.js +0 -42
- package/lib/transforms/FlattenTransform.js +0 -306
- package/lib/transforms/GenerateIDFieldTransform.js +0 -135
- package/lib/transforms/GenerateTypeNameTransform.js +0 -149
- package/lib/transforms/InlineDataFragmentTransform.js +0 -100
- package/lib/transforms/InlineFragmentsTransform.js +0 -61
- package/lib/transforms/MaskTransform.js +0 -117
- package/lib/transforms/MatchTransform.js +0 -434
- package/lib/transforms/ReactFlightComponentTransform.js +0 -158
- package/lib/transforms/RefetchableFragmentTransform.js +0 -249
- package/lib/transforms/RelayDirectiveTransform.js +0 -83
- package/lib/transforms/RequiredFieldTransform.js +0 -369
- package/lib/transforms/SkipClientExtensionsTransform.js +0 -46
- package/lib/transforms/SkipHandleFieldTransform.js +0 -45
- package/lib/transforms/SkipRedundantNodesTransform.js +0 -261
- package/lib/transforms/SkipSplitOperationTransform.js +0 -32
- package/lib/transforms/SkipUnreachableNodeTransform.js +0 -158
- package/lib/transforms/SkipUnusedVariablesTransform.js +0 -75
- package/lib/transforms/SplitModuleImportTransform.js +0 -82
- package/lib/transforms/TestOperationTransform.js +0 -144
- package/lib/transforms/TransformUtils.js +0 -21
- package/lib/transforms/ValidateGlobalVariablesTransform.js +0 -92
- package/lib/transforms/ValidateRequiredArgumentsTransform.js +0 -114
- package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +0 -108
- package/lib/transforms/ValidateUnusedVariablesTransform.js +0 -96
- package/lib/transforms/query-generators/FetchableQueryGenerator.js +0 -157
- package/lib/transforms/query-generators/NodeQueryGenerator.js +0 -166
- package/lib/transforms/query-generators/QueryQueryGenerator.js +0 -48
- package/lib/transforms/query-generators/ViewerQueryGenerator.js +0 -77
- package/lib/transforms/query-generators/index.js +0 -60
- package/lib/transforms/query-generators/utils.js +0 -92
- package/lib/util/CodeMarker.js +0 -80
- package/lib/util/DefaultHandleKey.js +0 -15
- package/lib/util/RelayCompilerCache.js +0 -97
- package/lib/util/Rollout.js +0 -40
- package/lib/util/TimeReporter.js +0 -83
- package/lib/util/areEqualArgValues.js +0 -135
- package/lib/util/argumentContainsVariables.js +0 -37
- package/lib/util/dedupeJSONStringify.js +0 -160
- package/lib/util/generateAbstractTypeRefinementKey.js +0 -24
- package/lib/util/getDefinitionNodeHash.js +0 -22
- package/lib/util/getModuleName.js +0 -32
- package/lib/util/joinArgumentDefinitions.js +0 -67
- package/lib/util/md5.js +0 -17
- package/lib/util/murmurHash.js +0 -86
- package/lib/util/nullthrowsOSS.js +0 -23
- package/lib/util/orList.js +0 -36
- package/lib/util/partitionArray.js +0 -35
- package/relay-compiler.js +0 -17
- package/relay-compiler.min.js +0 -22
- package/reporters/ConsoleReporter.js.flow +0 -81
- package/reporters/MultiReporter.js.flow +0 -43
- package/reporters/Reporter.js.flow +0 -19
- package/runner/Artifacts.js.flow +0 -215
- package/runner/BufferedFilesystem.js.flow +0 -194
- package/runner/GraphQLASTNodeGroup.js.flow +0 -174
- package/runner/GraphQLASTUtils.js.flow +0 -26
- package/runner/GraphQLNodeMap.js.flow +0 -55
- package/runner/Sources.js.flow +0 -227
- package/runner/StrictMap.js.flow +0 -96
- package/runner/compileArtifacts.js.flow +0 -75
- package/runner/extractAST.js.flow +0 -98
- package/runner/getChangedNodeNames.js.flow +0 -48
- package/runner/getSchemaInstance.js.flow +0 -36
- package/runner/types.js.flow +0 -37
- package/test-utils/TestSchema.js.flow +0 -30
- package/test-utils/parseGraphQLText.js.flow +0 -41
- package/transforms/ApplyFragmentArgumentTransform.js.flow +0 -524
- package/transforms/ClientExtensionsTransform.js.flow +0 -224
- package/transforms/ConnectionTransform.js.flow +0 -850
- package/transforms/DeclarativeConnectionMutationTransform.js.flow +0 -245
- package/transforms/DeferStreamTransform.js.flow +0 -263
- package/transforms/DisallowIdAsAlias.js.flow +0 -46
- package/transforms/DisallowTypenameOnRoot.js.flow +0 -44
- package/transforms/FieldHandleTransform.js.flow +0 -77
- package/transforms/FilterCompilerDirectivesTransform.js.flow +0 -33
- package/transforms/FilterDirectivesTransform.js.flow +0 -45
- package/transforms/FlattenTransform.js.flow +0 -458
- package/transforms/GenerateIDFieldTransform.js.flow +0 -151
- package/transforms/GenerateTypeNameTransform.js.flow +0 -159
- package/transforms/InlineDataFragmentTransform.js.flow +0 -123
- package/transforms/InlineFragmentsTransform.js.flow +0 -70
- package/transforms/MaskTransform.js.flow +0 -124
- package/transforms/MatchTransform.js.flow +0 -587
- package/transforms/ReactFlightComponentTransform.js.flow +0 -207
- package/transforms/RefetchableFragmentTransform.js.flow +0 -266
- package/transforms/RelayDirectiveTransform.js.flow +0 -96
- package/transforms/RequiredFieldTransform.js.flow +0 -413
- package/transforms/SkipClientExtensionsTransform.js.flow +0 -54
- package/transforms/SkipHandleFieldTransform.js.flow +0 -44
- package/transforms/SkipRedundantNodesTransform.js.flow +0 -277
- package/transforms/SkipSplitOperationTransform.js.flow +0 -37
- package/transforms/SkipUnreachableNodeTransform.js.flow +0 -148
- package/transforms/SkipUnusedVariablesTransform.js.flow +0 -59
- package/transforms/SplitModuleImportTransform.js.flow +0 -97
- package/transforms/TestOperationTransform.js.flow +0 -142
- package/transforms/TransformUtils.js.flow +0 -26
- package/transforms/ValidateGlobalVariablesTransform.js.flow +0 -80
- package/transforms/ValidateRequiredArgumentsTransform.js.flow +0 -130
- package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +0 -128
- package/transforms/ValidateUnusedVariablesTransform.js.flow +0 -88
- package/transforms/query-generators/FetchableQueryGenerator.js.flow +0 -188
- package/transforms/query-generators/NodeQueryGenerator.js.flow +0 -217
- package/transforms/query-generators/QueryQueryGenerator.js.flow +0 -57
- package/transforms/query-generators/ViewerQueryGenerator.js.flow +0 -97
- package/transforms/query-generators/index.js.flow +0 -89
- package/transforms/query-generators/utils.js.flow +0 -76
- package/util/CodeMarker.js.flow +0 -79
- package/util/DefaultHandleKey.js.flow +0 -17
- package/util/RelayCompilerCache.js.flow +0 -86
- package/util/Rollout.js.flow +0 -39
- package/util/TimeReporter.js.flow +0 -79
- package/util/areEqualArgValues.js.flow +0 -126
- package/util/argumentContainsVariables.js.flow +0 -38
- package/util/dedupeJSONStringify.js.flow +0 -156
- package/util/generateAbstractTypeRefinementKey.js.flow +0 -29
- package/util/getDefinitionNodeHash.js.flow +0 -24
- package/util/getModuleName.js.flow +0 -39
- package/util/joinArgumentDefinitions.js.flow +0 -105
- package/util/md5.js.flow +0 -19
- package/util/murmurHash.js.flow +0 -94
- package/util/nullthrowsOSS.js.flow +0 -25
- package/util/orList.js.flow +0 -37
- package/util/partitionArray.js.flow +0 -37
package/core/IRVisitor.js.flow
DELETED
@@ -1,150 +0,0 @@
|
|
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
|
-
* @flow strict
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type {
|
16
|
-
Argument,
|
17
|
-
ClientExtension,
|
18
|
-
Condition,
|
19
|
-
Defer,
|
20
|
-
Directive,
|
21
|
-
Fragment,
|
22
|
-
FragmentSpread,
|
23
|
-
InlineDataFragmentSpread,
|
24
|
-
InlineFragment,
|
25
|
-
LinkedField,
|
26
|
-
Literal,
|
27
|
-
LocalArgumentDefinition,
|
28
|
-
ModuleImport,
|
29
|
-
Request,
|
30
|
-
Root,
|
31
|
-
RootArgumentDefinition,
|
32
|
-
ScalarField,
|
33
|
-
SplitOperation,
|
34
|
-
Stream,
|
35
|
-
Variable,
|
36
|
-
} from './IR';
|
37
|
-
|
38
|
-
const {visit} = require('graphql');
|
39
|
-
|
40
|
-
const NodeKeys = {
|
41
|
-
Argument: ['value'],
|
42
|
-
ClientExtension: ['selections'],
|
43
|
-
Condition: ['condition', 'selections'],
|
44
|
-
Defer: ['selections', 'if'],
|
45
|
-
Directive: ['args'],
|
46
|
-
Fragment: ['argumentDefinitions', 'directives', 'selections'],
|
47
|
-
FragmentSpread: ['args', 'directives'],
|
48
|
-
InlineDataFragmentSpread: ['selections'],
|
49
|
-
InlineFragment: ['directives', 'selections'],
|
50
|
-
LinkedField: ['args', 'directives', 'selections'],
|
51
|
-
Literal: [],
|
52
|
-
LocalArgumentDefinition: [],
|
53
|
-
ModuleImport: ['selections'],
|
54
|
-
Request: ['fragment', 'root'],
|
55
|
-
Root: ['argumentDefinitions', 'directives', 'selections'],
|
56
|
-
RootArgumentDefinition: [],
|
57
|
-
ScalarField: ['args', 'directives'],
|
58
|
-
SplitOperation: ['selections'],
|
59
|
-
Stream: ['selections', 'if', 'initialCount'],
|
60
|
-
Variable: [],
|
61
|
-
};
|
62
|
-
|
63
|
-
export type VisitNode =
|
64
|
-
| Argument
|
65
|
-
| ClientExtension
|
66
|
-
| Condition
|
67
|
-
| Defer
|
68
|
-
| Directive
|
69
|
-
| Fragment
|
70
|
-
| FragmentSpread
|
71
|
-
| InlineDataFragmentSpread
|
72
|
-
| InlineFragment
|
73
|
-
| LinkedField
|
74
|
-
| Literal
|
75
|
-
| LocalArgumentDefinition
|
76
|
-
| ModuleImport
|
77
|
-
| Request
|
78
|
-
| Root
|
79
|
-
| RootArgumentDefinition
|
80
|
-
| ScalarField
|
81
|
-
| SplitOperation
|
82
|
-
| Stream
|
83
|
-
| Variable;
|
84
|
-
|
85
|
-
type EnterLeave<T> = {|+enter?: T, +leave?: T|};
|
86
|
-
|
87
|
-
export type VisitFn<T: VisitNode> = (
|
88
|
-
node: T, // node we're visiting
|
89
|
-
key?: $FlowFixMe, // index/key to node from parent array/object
|
90
|
-
parent?: ?(VisitNode | Array<VisitNode>), // Object immediately above node
|
91
|
-
path?: Array<$FlowFixMe>, // keys to get from root: [keyForChild, ..., keyForParent]
|
92
|
-
ancestors?: Array<VisitNode | Array<VisitNode>>, // [root, child1, ..., grandparent]
|
93
|
-
// Note: ancestors includes arrays which contain the visited node
|
94
|
-
// These correspond to array indices in `path`.
|
95
|
-
) => $FlowFixMe;
|
96
|
-
|
97
|
-
export type NodeVisitorObject<T: VisitNode> =
|
98
|
-
| EnterLeave<VisitFn<T>>
|
99
|
-
| VisitFn<T>;
|
100
|
-
|
101
|
-
export type NodeVisitor =
|
102
|
-
| EnterLeave<{|
|
103
|
-
Argument?: VisitFn<Argument>,
|
104
|
-
ClientExtension?: VisitFn<ClientExtension>,
|
105
|
-
Condition?: VisitFn<Condition>,
|
106
|
-
Defer?: VisitFn<Defer>,
|
107
|
-
Directive?: VisitFn<Directive>,
|
108
|
-
Fragment?: VisitFn<Fragment>,
|
109
|
-
FragmentSpread?: VisitFn<FragmentSpread>,
|
110
|
-
InlineFragment?: VisitFn<InlineFragment>,
|
111
|
-
LinkedField?: VisitFn<LinkedField>,
|
112
|
-
Literal?: VisitFn<Literal>,
|
113
|
-
LocalArgumentDefinition?: VisitFn<LocalArgumentDefinition>,
|
114
|
-
ModuleImport?: VisitFn<ModuleImport>,
|
115
|
-
Request?: VisitFn<Request>,
|
116
|
-
Root?: VisitFn<Root>,
|
117
|
-
RootArgumentDefinition?: VisitFn<RootArgumentDefinition>,
|
118
|
-
ScalarField?: VisitFn<ScalarField>,
|
119
|
-
SplitOperation?: VisitFn<SplitOperation>,
|
120
|
-
Stream?: VisitFn<Stream>,
|
121
|
-
Variable?: VisitFn<Variable>,
|
122
|
-
|}>
|
123
|
-
| {|
|
124
|
-
Argument?: NodeVisitorObject<Argument>,
|
125
|
-
ClientExtension?: VisitFn<ClientExtension>,
|
126
|
-
Condition?: NodeVisitorObject<Condition>,
|
127
|
-
Defer?: NodeVisitorObject<Defer>,
|
128
|
-
Directive?: NodeVisitorObject<Directive>,
|
129
|
-
Fragment?: NodeVisitorObject<Fragment>,
|
130
|
-
FragmentSpread?: NodeVisitorObject<FragmentSpread>,
|
131
|
-
InlineDataFragmentSpread?: NodeVisitorObject<InlineDataFragmentSpread>,
|
132
|
-
InlineFragment?: NodeVisitorObject<InlineFragment>,
|
133
|
-
LinkedField?: NodeVisitorObject<LinkedField>,
|
134
|
-
Literal?: NodeVisitorObject<Literal>,
|
135
|
-
LocalArgumentDefinition?: NodeVisitorObject<LocalArgumentDefinition>,
|
136
|
-
ModuleImport?: NodeVisitorObject<ModuleImport>,
|
137
|
-
Request?: NodeVisitorObject<Request>,
|
138
|
-
Root?: NodeVisitorObject<Root>,
|
139
|
-
RootArgumentDefinition?: NodeVisitorObject<RootArgumentDefinition>,
|
140
|
-
ScalarField?: NodeVisitorObject<ScalarField>,
|
141
|
-
SplitOperation?: NodeVisitorObject<SplitOperation>,
|
142
|
-
Stream?: NodeVisitorObject<Stream>,
|
143
|
-
Variable?: NodeVisitorObject<Variable>,
|
144
|
-
|};
|
145
|
-
|
146
|
-
function visitIR(root: VisitNode, visitor: NodeVisitor): $FlowFixMe {
|
147
|
-
return (visit: $FlowFixMe)(root, visitor, NodeKeys);
|
148
|
-
}
|
149
|
-
|
150
|
-
module.exports = {visit: visitIR};
|
@@ -1,24 +0,0 @@
|
|
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
|
-
* @flow strict-local
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type {SourceModuleParser} from './RelaySourceModuleParser';
|
16
|
-
|
17
|
-
const FindGraphQLTags = require('../language/javascript/FindGraphQLTags');
|
18
|
-
const RelaySourceModuleParser = require('./RelaySourceModuleParser');
|
19
|
-
|
20
|
-
const JSModuleParser: SourceModuleParser = RelaySourceModuleParser(
|
21
|
-
FindGraphQLTags.find,
|
22
|
-
);
|
23
|
-
|
24
|
-
module.exports = JSModuleParser;
|
@@ -1,199 +0,0 @@
|
|
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
|
-
* @flow strict-local
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type {
|
16
|
-
Argument,
|
17
|
-
ArgumentDefinition,
|
18
|
-
ArgumentValue,
|
19
|
-
FragmentSpread,
|
20
|
-
LocalArgumentDefinition,
|
21
|
-
Variable,
|
22
|
-
} from './IR';
|
23
|
-
import type {Schema} from './Schema';
|
24
|
-
|
25
|
-
const {createUserError, eachWithCombinedError} = require('./CompilerError');
|
26
|
-
/**
|
27
|
-
* A scope is a mapping of the values for each argument defined by the nearest
|
28
|
-
* ancestor root or fragment of a given IR selection. A scope maps argument
|
29
|
-
* names to the argument's statically determined value, which can be either a
|
30
|
-
* variable or a literal.
|
31
|
-
*
|
32
|
-
* There are two categories of scopes: root scopes and fragment scopes.
|
33
|
-
*
|
34
|
-
* Root scopes apply to `Root` IR and their subselections, up until any fragment
|
35
|
-
* spreads. Root scopes have the property that any argument may be provided at
|
36
|
-
* runtime: even where a default value is defined, the compiler must consider
|
37
|
-
* the value to be variable. Therefore, root scopes are a mapping of argument
|
38
|
-
* name to variables of the same name:
|
39
|
-
*
|
40
|
-
* Map {
|
41
|
-
* foo: $foo
|
42
|
-
* }
|
43
|
-
*
|
44
|
-
* Fragment scopes apply to `Fragment` IR nodes and their subselections, up
|
45
|
-
* until any fragment spreads. Fragment scopes differ from root scopes in
|
46
|
-
* several ways:
|
47
|
-
* - Arguments may be overridden by the including fragment spread.
|
48
|
-
* - Arguments may import values from the root scope.
|
49
|
-
* - All other arguments must have their default values, or be null.
|
50
|
-
*
|
51
|
-
* Fragment scopes are also a mapping of argument name to value, but the value
|
52
|
-
* may also be a literal:
|
53
|
-
*
|
54
|
-
* Map {
|
55
|
-
* foo: $foo
|
56
|
-
* bar: 42
|
57
|
-
* }
|
58
|
-
*/
|
59
|
-
export type Scope = {[key: string]: ArgumentValue, ...};
|
60
|
-
|
61
|
-
/**
|
62
|
-
* Creates a scope for a `Root`, with each argument mapped to a variable of the
|
63
|
-
* same name. Example:
|
64
|
-
*
|
65
|
-
* Query:
|
66
|
-
* query Foo($id: ID, $size: Int = 42) { ... }
|
67
|
-
*
|
68
|
-
* Scope:
|
69
|
-
* {
|
70
|
-
* id: $id,
|
71
|
-
* size: $size,
|
72
|
-
* }
|
73
|
-
*
|
74
|
-
* Note that even though a default value is defined for $size, the scope must
|
75
|
-
* assume that this could be overridden at runtime. The value cannot be decided
|
76
|
-
* statically and therefore is set to a variable.
|
77
|
-
*/
|
78
|
-
function getRootScope(
|
79
|
-
definitions: $ReadOnlyArray<LocalArgumentDefinition>,
|
80
|
-
): Scope {
|
81
|
-
const scope = {};
|
82
|
-
definitions.forEach(definition => {
|
83
|
-
scope[definition.name] = ({
|
84
|
-
kind: 'Variable',
|
85
|
-
loc: definition.loc,
|
86
|
-
variableName: definition.name,
|
87
|
-
type: definition.type,
|
88
|
-
}: Variable);
|
89
|
-
});
|
90
|
-
return scope;
|
91
|
-
}
|
92
|
-
|
93
|
-
/**
|
94
|
-
* Creates a scope for a `Fragment` by translating fragment spread arguments in
|
95
|
-
* the context of a parent scope into a new scope and validating them against
|
96
|
-
* the argument definitions.
|
97
|
-
*
|
98
|
-
*
|
99
|
-
* Parent Scope:
|
100
|
-
* {
|
101
|
-
* active: $parentActive
|
102
|
-
* }
|
103
|
-
*
|
104
|
-
* Fragment Spread:
|
105
|
-
* ...Bar(size: 42, enabled: $active)
|
106
|
-
*
|
107
|
-
* Fragment:
|
108
|
-
* fragment Bar on Foo @argumentDefinitions(
|
109
|
-
* id: {type: "ID"}
|
110
|
-
* size: {type: "Int"}
|
111
|
-
* enabled: {type: "Boolean}
|
112
|
-
* scale: {type: "Int", imports: "pixelRatio"}
|
113
|
-
* )
|
114
|
-
*
|
115
|
-
* Scope:
|
116
|
-
* {
|
117
|
-
* // No argument is provided for $id, it gets the default value which in this
|
118
|
-
* // case is `null`:
|
119
|
-
* id: null,
|
120
|
-
*
|
121
|
-
* // The parent passes 42 as a literal value for $size:
|
122
|
-
* size: 42,
|
123
|
-
*
|
124
|
-
* // The parent passes a variable as the value of $enabled. This variable is
|
125
|
-
* // resolved in the parent scope to the value $parentActive, which becomes
|
126
|
-
* // the value of $enabled:
|
127
|
-
* $enabled: $parentActive,
|
128
|
-
*
|
129
|
-
* // $scale imports pixelRatio from the root scope. Since any argument in a
|
130
|
-
* // root scope maps to a variable of the same name, that means the value of
|
131
|
-
* // pixelRatio in the root is $pixelRatio:
|
132
|
-
* $scale: $pixelRatio,
|
133
|
-
* }
|
134
|
-
*/
|
135
|
-
function getFragmentScope(
|
136
|
-
schema: Schema,
|
137
|
-
definitions: $ReadOnlyArray<ArgumentDefinition>,
|
138
|
-
args: $ReadOnlyArray<Argument>,
|
139
|
-
parentScope: Scope,
|
140
|
-
spread: FragmentSpread,
|
141
|
-
): Scope {
|
142
|
-
const argMap = new Map();
|
143
|
-
args.forEach(arg => {
|
144
|
-
if (arg.value.kind === 'Literal') {
|
145
|
-
argMap.set(arg.name, arg.value);
|
146
|
-
} else if (arg.value.kind === 'Variable') {
|
147
|
-
argMap.set(arg.name, parentScope[arg.value.variableName]);
|
148
|
-
}
|
149
|
-
});
|
150
|
-
|
151
|
-
const fragmentScope = {};
|
152
|
-
eachWithCombinedError(definitions, definition => {
|
153
|
-
if (definition.kind === 'RootArgumentDefinition') {
|
154
|
-
if (argMap.has(definition.name)) {
|
155
|
-
const argNode = args.find(a => a.name === definition.name);
|
156
|
-
throw createUserError(
|
157
|
-
`Unexpected argument '${definition.name}' supplied to fragment '${spread.name}'. @arguments may only be provided for variables defined in the fragment's @argumentDefinitions.`,
|
158
|
-
[argNode?.loc ?? spread.loc],
|
159
|
-
);
|
160
|
-
}
|
161
|
-
fragmentScope[definition.name] = ({
|
162
|
-
kind: 'Variable',
|
163
|
-
loc: definition.loc,
|
164
|
-
variableName: definition.name,
|
165
|
-
type: definition.type,
|
166
|
-
}: Variable);
|
167
|
-
} else {
|
168
|
-
const arg = argMap.get(definition.name);
|
169
|
-
if (arg == null || (arg.kind === 'Literal' && arg.value == null)) {
|
170
|
-
// No variable or literal null was passed, fall back to default
|
171
|
-
// value.
|
172
|
-
if (
|
173
|
-
definition.defaultValue == null &&
|
174
|
-
schema.isNonNull(definition.type)
|
175
|
-
) {
|
176
|
-
const argNode = args.find(a => a.name === definition.name);
|
177
|
-
throw createUserError(
|
178
|
-
`No value found for required argument '${
|
179
|
-
definition.name
|
180
|
-
}: ${schema.getTypeString(definition.type)}' on fragment '${
|
181
|
-
spread.name
|
182
|
-
}'.`,
|
183
|
-
[argNode?.loc ?? spread.loc],
|
184
|
-
);
|
185
|
-
}
|
186
|
-
fragmentScope[definition.name] = {
|
187
|
-
kind: 'Literal',
|
188
|
-
value: definition.defaultValue,
|
189
|
-
};
|
190
|
-
} else {
|
191
|
-
// Variable or non-null literal.
|
192
|
-
fragmentScope[definition.name] = arg;
|
193
|
-
}
|
194
|
-
}
|
195
|
-
});
|
196
|
-
return fragmentScope;
|
197
|
-
}
|
198
|
-
|
199
|
-
module.exports = {getFragmentScope, getRootScope};
|
@@ -1,118 +0,0 @@
|
|
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
|
-
* @flow strict-local
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type {File} from '../codegen/CodegenTypes';
|
16
|
-
import type {
|
17
|
-
GraphQLTag,
|
18
|
-
GraphQLTagFinder,
|
19
|
-
} from '../language/RelayLanguagePluginInterface';
|
20
|
-
|
21
|
-
const getModuleName = require('../util/getModuleName');
|
22
|
-
const RelayCompilerCache = require('../util/RelayCompilerCache');
|
23
|
-
const graphql = require('graphql');
|
24
|
-
const path = require('path');
|
25
|
-
const util = require('util');
|
26
|
-
|
27
|
-
const cache = new RelayCompilerCache('RelayFindGraphQLTags', 'v1');
|
28
|
-
|
29
|
-
function memoizedFind(
|
30
|
-
tagFinder: GraphQLTagFinder,
|
31
|
-
text: string,
|
32
|
-
baseDir: string,
|
33
|
-
file: File,
|
34
|
-
): $ReadOnlyArray<string> {
|
35
|
-
invariant(
|
36
|
-
file.exists,
|
37
|
-
'RelayFindGraphQLTags: Called with non-existent file `%s`',
|
38
|
-
file.relPath,
|
39
|
-
);
|
40
|
-
return cache.getOrCompute(
|
41
|
-
file.hash,
|
42
|
-
find.bind(null, tagFinder, text, path.join(baseDir, file.relPath)),
|
43
|
-
);
|
44
|
-
}
|
45
|
-
|
46
|
-
function find(
|
47
|
-
tagFinder: GraphQLTagFinder,
|
48
|
-
text: string,
|
49
|
-
absPath: string,
|
50
|
-
): $ReadOnlyArray<string> {
|
51
|
-
const tags = tagFinder(text, absPath);
|
52
|
-
const moduleName = getModuleName(absPath);
|
53
|
-
tags.forEach(tag => validateTemplate(tag, moduleName, absPath));
|
54
|
-
return tags.map(tag => tag.template);
|
55
|
-
}
|
56
|
-
|
57
|
-
function validateTemplate(
|
58
|
-
{template, keyName, sourceLocationOffset}: GraphQLTag,
|
59
|
-
moduleName: string,
|
60
|
-
filePath: string,
|
61
|
-
) {
|
62
|
-
const ast = graphql.parse(
|
63
|
-
new graphql.Source(template, filePath, sourceLocationOffset),
|
64
|
-
);
|
65
|
-
ast.definitions.forEach(def => {
|
66
|
-
if (def.kind === 'OperationDefinition') {
|
67
|
-
invariant(
|
68
|
-
def.name != null,
|
69
|
-
'RelayFindGraphQLTags: In module `%s`, an operation requires a name.',
|
70
|
-
moduleName,
|
71
|
-
def.kind,
|
72
|
-
);
|
73
|
-
const definitionName = def.name.value;
|
74
|
-
const operationNameParts = definitionName.match(
|
75
|
-
/^(.*)(Mutation|Query|Subscription)$/,
|
76
|
-
);
|
77
|
-
invariant(
|
78
|
-
operationNameParts && definitionName.startsWith(moduleName),
|
79
|
-
'RelayFindGraphQLTags: Operation names in graphql tags must be prefixed ' +
|
80
|
-
'with the module name and end in "Mutation", "Query", or ' +
|
81
|
-
'"Subscription". Got `%s` in module `%s`.',
|
82
|
-
definitionName,
|
83
|
-
moduleName,
|
84
|
-
);
|
85
|
-
} else if (def.kind === 'FragmentDefinition') {
|
86
|
-
const definitionName = def.name.value;
|
87
|
-
if (keyName != null) {
|
88
|
-
invariant(
|
89
|
-
definitionName === moduleName + '_' + keyName,
|
90
|
-
'RelayFindGraphQLTags: Container fragment names must be ' +
|
91
|
-
'`<ModuleName>_<propName>`. Got `%s`, expected `%s`.',
|
92
|
-
definitionName,
|
93
|
-
moduleName + '_' + keyName,
|
94
|
-
);
|
95
|
-
} else {
|
96
|
-
invariant(
|
97
|
-
definitionName.startsWith(moduleName),
|
98
|
-
'RelayFindGraphQLTags: Fragment names in graphql tags must be prefixed ' +
|
99
|
-
'with the module name. Got `%s` in module `%s`.',
|
100
|
-
definitionName,
|
101
|
-
moduleName,
|
102
|
-
);
|
103
|
-
}
|
104
|
-
}
|
105
|
-
});
|
106
|
-
}
|
107
|
-
|
108
|
-
// TODO: Not sure why this is defined here rather than imported, is it so that it doesn’t get stripped in prod?
|
109
|
-
function invariant(condition, msg: $FlowFixMe, ...args) {
|
110
|
-
if (!condition) {
|
111
|
-
throw new Error(util.format(msg, ...args));
|
112
|
-
}
|
113
|
-
}
|
114
|
-
|
115
|
-
module.exports = {
|
116
|
-
find, // Exported for testing only.
|
117
|
-
memoizedFind,
|
118
|
-
};
|
@@ -1,55 +0,0 @@
|
|
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
|
-
* @flow
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type CodegenDirectory from '../codegen/CodegenDirectory';
|
16
|
-
import type {Schema} from '../core/Schema';
|
17
|
-
|
18
|
-
const SignedSource = require('signedsource');
|
19
|
-
|
20
|
-
function writeForSchema(
|
21
|
-
schema: Schema,
|
22
|
-
licenseHeader: $ReadOnlyArray<string>,
|
23
|
-
codegenDir: CodegenDirectory,
|
24
|
-
getModuleName: (enumName: string) => string,
|
25
|
-
): void {
|
26
|
-
const header =
|
27
|
-
'/**\n' +
|
28
|
-
licenseHeader.map(line => ` * ${line}\n`).join('') +
|
29
|
-
' *\n' +
|
30
|
-
` * ${SignedSource.getSigningToken()}\n` +
|
31
|
-
' * @flow strict\n' +
|
32
|
-
' */\n' +
|
33
|
-
'\n';
|
34
|
-
|
35
|
-
const enumTypes = schema.getTypes().filter(type => schema.isEnum(type));
|
36
|
-
|
37
|
-
for (const type of enumTypes) {
|
38
|
-
const enumType = schema.assertEnumType(type);
|
39
|
-
const name = schema.getTypeString(type);
|
40
|
-
const values = [...schema.getEnumValues(enumType)].sort();
|
41
|
-
const enumFileContent =
|
42
|
-
header +
|
43
|
-
`export type ${name} =\n | '` +
|
44
|
-
values.join("'\n | '") +
|
45
|
-
"'\n | '%future added value';\n";
|
46
|
-
codegenDir.writeFile(
|
47
|
-
`${getModuleName(name)}.js`,
|
48
|
-
SignedSource.signFile(enumFileContent),
|
49
|
-
);
|
50
|
-
}
|
51
|
-
}
|
52
|
-
|
53
|
-
module.exports = {
|
54
|
-
writeForSchema,
|
55
|
-
};
|
@@ -1,138 +0,0 @@
|
|
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
|
-
* @flow strict-local
|
8
|
-
* @format
|
9
|
-
*/
|
10
|
-
|
11
|
-
// flowlint ambiguous-object-type:error
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
import type {IRTransform} from './CompilerContext';
|
16
|
-
|
17
|
-
const RelayFlowGenerator = require('../language/javascript/RelayFlowGenerator');
|
18
|
-
const ApplyFragmentArgumentTransform = require('../transforms/ApplyFragmentArgumentTransform');
|
19
|
-
const ClientExtensionsTransform = require('../transforms/ClientExtensionsTransform');
|
20
|
-
const ConnectionTransform = require('../transforms/ConnectionTransform');
|
21
|
-
const DeclarativeConnectionMutationTransform = require('../transforms/DeclarativeConnectionMutationTransform');
|
22
|
-
const DeferStreamTransform = require('../transforms/DeferStreamTransform');
|
23
|
-
const DisallowIdAsAlias = require('../transforms/DisallowIdAsAlias');
|
24
|
-
const DisallowTypenameOnRoot = require('../transforms/DisallowTypenameOnRoot');
|
25
|
-
const FieldHandleTransform = require('../transforms/FieldHandleTransform');
|
26
|
-
const FilterCompilerDirectivesTransform = require('../transforms/FilterCompilerDirectivesTransform');
|
27
|
-
const FilterDirectivesTransform = require('../transforms/FilterDirectivesTransform');
|
28
|
-
const FlattenTransform = require('../transforms/FlattenTransform');
|
29
|
-
const GenerateIDFieldTransform = require('../transforms/GenerateIDFieldTransform');
|
30
|
-
const GenerateTypeNameTransform = require('../transforms/GenerateTypeNameTransform');
|
31
|
-
const InlineDataFragmentTransform = require('../transforms/InlineDataFragmentTransform');
|
32
|
-
const InlineFragmentsTransform = require('../transforms/InlineFragmentsTransform');
|
33
|
-
const MaskTransform = require('../transforms/MaskTransform');
|
34
|
-
const MatchTransform = require('../transforms/MatchTransform');
|
35
|
-
const ReactFlightComponentTransform = require('../transforms/ReactFlightComponentTransform');
|
36
|
-
const RefetchableFragmentTransform = require('../transforms/RefetchableFragmentTransform');
|
37
|
-
const RelayDirectiveTransform = require('../transforms/RelayDirectiveTransform');
|
38
|
-
const RequiredFieldTransform = require('../transforms/RequiredFieldTransform');
|
39
|
-
const SkipClientExtensionsTransform = require('../transforms/SkipClientExtensionsTransform');
|
40
|
-
const SkipHandleFieldTransform = require('../transforms/SkipHandleFieldTransform');
|
41
|
-
const SkipRedundantNodesTransform = require('../transforms/SkipRedundantNodesTransform');
|
42
|
-
const SkipSplitOperationTransform = require('../transforms/SkipSplitOperationTransform');
|
43
|
-
const SkipUnreachableNodeTransform = require('../transforms/SkipUnreachableNodeTransform');
|
44
|
-
const SkipUnusedVariablesTransform = require('../transforms/SkipUnusedVariablesTransform');
|
45
|
-
const SplitModuleImportTransform = require('../transforms/SplitModuleImportTransform');
|
46
|
-
const TestOperationTransform = require('../transforms/TestOperationTransform');
|
47
|
-
const ValidateGlobalVariablesTransform = require('../transforms/ValidateGlobalVariablesTransform');
|
48
|
-
const ValidateRequiredArgumentsTransform = require('../transforms/ValidateRequiredArgumentsTransform');
|
49
|
-
const ValidateUnusedVariablesTransform = require('../transforms/ValidateUnusedVariablesTransform');
|
50
|
-
|
51
|
-
// Transforms applied to the code used to process a query response.
|
52
|
-
const relaySchemaExtensions: $ReadOnlyArray<string> = [
|
53
|
-
ConnectionTransform.SCHEMA_EXTENSION,
|
54
|
-
DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION,
|
55
|
-
InlineDataFragmentTransform.SCHEMA_EXTENSION,
|
56
|
-
MatchTransform.SCHEMA_EXTENSION,
|
57
|
-
RequiredFieldTransform.SCHEMA_EXTENSION,
|
58
|
-
RefetchableFragmentTransform.SCHEMA_EXTENSION,
|
59
|
-
RelayDirectiveTransform.SCHEMA_EXTENSION,
|
60
|
-
RelayFlowGenerator.SCHEMA_EXTENSION,
|
61
|
-
TestOperationTransform.SCHEMA_EXTENSION,
|
62
|
-
ValidateUnusedVariablesTransform.SCHEMA_EXTENSION,
|
63
|
-
];
|
64
|
-
|
65
|
-
// Transforms applied to both operations and fragments for both reading and
|
66
|
-
// writing from the store.
|
67
|
-
const relayCommonTransforms: $ReadOnlyArray<IRTransform> = [
|
68
|
-
DisallowIdAsAlias.transform,
|
69
|
-
ConnectionTransform.transform,
|
70
|
-
RelayDirectiveTransform.transform,
|
71
|
-
MaskTransform.transform,
|
72
|
-
MatchTransform.transform,
|
73
|
-
RefetchableFragmentTransform.transform,
|
74
|
-
DeferStreamTransform.transform,
|
75
|
-
ReactFlightComponentTransform.transform,
|
76
|
-
];
|
77
|
-
|
78
|
-
// Transforms applied to fragments used for reading data from a store
|
79
|
-
const relayFragmentTransforms: $ReadOnlyArray<IRTransform> = [
|
80
|
-
ClientExtensionsTransform.transform,
|
81
|
-
FieldHandleTransform.transform,
|
82
|
-
InlineDataFragmentTransform.transform,
|
83
|
-
FlattenTransform.transformWithOptions({isForCodegen: true}),
|
84
|
-
RequiredFieldTransform.transform,
|
85
|
-
SkipRedundantNodesTransform.transform,
|
86
|
-
];
|
87
|
-
|
88
|
-
// Transforms applied to queries/mutations/subscriptions that are used for
|
89
|
-
// fetching data from the server and parsing those responses.
|
90
|
-
const relayQueryTransforms: $ReadOnlyArray<IRTransform> = [
|
91
|
-
SplitModuleImportTransform.transform,
|
92
|
-
DisallowTypenameOnRoot.transform,
|
93
|
-
ValidateUnusedVariablesTransform.transform,
|
94
|
-
ApplyFragmentArgumentTransform.transform,
|
95
|
-
ValidateGlobalVariablesTransform.transform,
|
96
|
-
GenerateIDFieldTransform.transform,
|
97
|
-
DeclarativeConnectionMutationTransform.transform,
|
98
|
-
];
|
99
|
-
|
100
|
-
// Transforms applied to the code used to process a query response.
|
101
|
-
const relayCodegenTransforms: $ReadOnlyArray<IRTransform> = [
|
102
|
-
FilterCompilerDirectivesTransform.transform,
|
103
|
-
SkipUnreachableNodeTransform.transform,
|
104
|
-
InlineFragmentsTransform.transform,
|
105
|
-
// NOTE: For the codegen context, we make sure to run ClientExtensions
|
106
|
-
// transform after we've inlined fragment spreads (i.e. InlineFragmentsTransform)
|
107
|
-
// This will ensure that we don't generate nested ClientExtension nodes
|
108
|
-
ClientExtensionsTransform.transform,
|
109
|
-
GenerateTypeNameTransform.transform,
|
110
|
-
FlattenTransform.transformWithOptions({isForCodegen: true}),
|
111
|
-
SkipRedundantNodesTransform.transform,
|
112
|
-
TestOperationTransform.transform,
|
113
|
-
];
|
114
|
-
|
115
|
-
// Transforms applied before printing the query sent to the server.
|
116
|
-
const relayPrintTransforms: $ReadOnlyArray<IRTransform> = [
|
117
|
-
SkipSplitOperationTransform.transform,
|
118
|
-
// NOTE: Skipping client extensions might leave empty selections, which we
|
119
|
-
// skip by running SkipUnreachableNodeTransform immediately after.
|
120
|
-
ClientExtensionsTransform.transform,
|
121
|
-
SkipClientExtensionsTransform.transform,
|
122
|
-
SkipUnreachableNodeTransform.transform,
|
123
|
-
GenerateTypeNameTransform.transform,
|
124
|
-
FlattenTransform.transformWithOptions({}),
|
125
|
-
SkipHandleFieldTransform.transform,
|
126
|
-
FilterDirectivesTransform.transform,
|
127
|
-
SkipUnusedVariablesTransform.transform,
|
128
|
-
ValidateRequiredArgumentsTransform.transform,
|
129
|
-
];
|
130
|
-
|
131
|
-
module.exports = {
|
132
|
-
commonTransforms: relayCommonTransforms,
|
133
|
-
codegenTransforms: relayCodegenTransforms,
|
134
|
-
fragmentTransforms: relayFragmentTransforms,
|
135
|
-
printTransforms: relayPrintTransforms,
|
136
|
-
queryTransforms: relayQueryTransforms,
|
137
|
-
schemaExtensions: relaySchemaExtensions,
|
138
|
-
};
|