From 40f70acee0d23a5b027231978ac9303c4526681d Mon Sep 17 00:00:00 2001 From: Rob Richard Date: Tue, 14 Jul 2020 11:08:18 -0400 Subject: [PATCH 1/4] Support hasNext on payloads # Conflicts: # packages/relay-runtime/store/RelayModernQueryExecutor.js --- .../network/RelayNetworkTypes.js | 3 ++ .../__tests__/fetchQueryInternal-test.js | 48 +++++++++++++++++++ .../relay-runtime/store/OperationExecutor.js | 19 ++++++-- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/packages/relay-runtime/network/RelayNetworkTypes.js b/packages/relay-runtime/network/RelayNetworkTypes.js index c3dfdcf8e98df..dac4f968bcba8 100644 --- a/packages/relay-runtime/network/RelayNetworkTypes.js +++ b/packages/relay-runtime/network/RelayNetworkTypes.js @@ -51,6 +51,7 @@ export type GraphQLResponseWithData = {| +extensions?: PayloadExtensions, +label?: string, +path?: Array, + +hasNext?: boolean, |}; export type GraphQLResponseWithoutData = {| @@ -59,6 +60,7 @@ export type GraphQLResponseWithoutData = {| +extensions?: PayloadExtensions, +label?: string, +path?: Array, + +hasNext?: boolean, |}; export type GraphQLResponseWithExtensionsOnly = {| @@ -72,6 +74,7 @@ export type GraphQLResponseWithExtensionsOnly = {| // does not necessarily indicate that there was an error. +data: null, +extensions: PayloadExtensions, + +hasNext?: boolean, |}; export type GraphQLSingularResponse = diff --git a/packages/relay-runtime/query/__tests__/fetchQueryInternal-test.js b/packages/relay-runtime/query/__tests__/fetchQueryInternal-test.js index c102ffb922d9d..b7864e41f1f57 100644 --- a/packages/relay-runtime/query/__tests__/fetchQueryInternal-test.js +++ b/packages/relay-runtime/query/__tests__/fetchQueryInternal-test.js @@ -976,6 +976,30 @@ describe('getObservableForActiveRequest', () => { expect(events).toEqual(['next']); }); + it('calls next asynchronously with subsequent non-final payloads (OSS)', () => { + fetchQuery(environment, query).subscribe({}); + const observable = getObservableForActiveRequest( + environment, + query.request, + ); + expect(observable).not.toEqual(null); + if (!observable) { + return; + } + + response = { + ...response, + extensions: {}, + hasNext: true, + }; + + observable.subscribe(observer); + expect(events).toEqual([]); + + environment.mock.nextValue(gqlQuery, response); + expect(events).toEqual(['next']); + }); + it('calls complete asynchronously with subsequent final payload', () => { fetchQuery(environment, query).subscribe({}); const observable = getObservableForActiveRequest( @@ -994,6 +1018,30 @@ describe('getObservableForActiveRequest', () => { expect(events).toEqual(['complete']); }); + it('calls complete asynchronously with subsequent final payload (OSS)', () => { + fetchQuery(environment, query).subscribe({}); + const observable = getObservableForActiveRequest( + environment, + query.request, + ); + expect(observable).not.toEqual(null); + if (!observable) { + return; + } + + response = { + ...response, + extensions: {}, + hasNext: false, + }; + + observable.subscribe(observer); + expect(events).toEqual([]); + + environment.mock.nextValue(gqlQuery, response); + expect(events).toEqual(['complete']); + }); + describe('when loading @module', () => { let operationLoader; let resolveModule; diff --git a/packages/relay-runtime/store/OperationExecutor.js b/packages/relay-runtime/store/OperationExecutor.js index 5cdbcf781a1a5..c32089626df1a 100644 --- a/packages/relay-runtime/store/OperationExecutor.js +++ b/packages/relay-runtime/store/OperationExecutor.js @@ -508,7 +508,7 @@ class Executor { if (responsesWithData.length === 0) { // no results with data, nothing to process // this can occur with extensions-only payloads - const isFinal = responses.some(x => x.extensions?.is_final === true); + const isFinal = responses.some((x) => responseIsFinal(x)); if (isFinal) { this._state = 'loading_final'; this._updateActiveState(); @@ -1302,7 +1302,7 @@ class Executor { incrementalPlaceholders: null, followupPayloads: null, source: RelayRecordSource.create(), - isFinal: response.extensions?.is_final === true, + isFinal: responseIsFinal(response), }; this._getPublishQueueAndSaveActor().commitPayload( this._operation, @@ -1661,7 +1661,7 @@ function normalizeResponse( return { ...relayPayload, errors, - isFinal: response.extensions?.is_final === true, + isFinal: responseIsFinal(response), }; } @@ -1683,6 +1683,19 @@ function validateOptimisticResponsePayload( } } +/** + * Check for both FB specific (extensions?.is_final) + * and spec-complaint (hasNext) properties. + */ +function responseIsFinal(response: GraphQLSingularResponse): boolean { + if (response.extensions?.is_final === true) { + return true; + } else if (response.hasNext === false) { + return true; + } + return false; +} + module.exports = { execute, }; From 09b54e082f9fcbfaee89f70612bd6c6b24587854 Mon Sep 17 00:00:00 2001 From: Rob Richard Date: Fri, 28 Jan 2022 10:00:00 -0500 Subject: [PATCH 2/4] Add DeferStreamInterface to conform to proposed graphql spec --- .../crates/relay-codegen/src/build_ast.rs | 85 +++++++++++++------ compiler/crates/relay-codegen/src/printer.rs | 45 ++++++++-- .../src/build_project/artifact_content.rs | 25 ++++-- .../src/defer_stream_interface.rs | 35 ++++++++ compiler/crates/relay-config/src/lib.rs | 2 + .../crates/relay-config/src/project_config.rs | 8 +- .../relay-transforms/src/apply_transforms.rs | 64 +++++++++++--- .../src/defer_stream/directives.rs | 18 ++-- .../relay-transforms/src/defer_stream/mod.rs | 65 ++++++-------- compiler/crates/relay-transforms/src/lib.rs | 4 +- .../src/match_/match_transform.rs | 43 +++++----- .../src/skip_redundant_nodes.rs | 39 +++++---- .../src/skip_unreachable_node.rs | 31 +++++-- .../src/transform_connections.rs | 59 +++++++------ .../src/unwrap_custom_directive_selection.rs | 27 ++++-- .../validate_selection_conflict.rs | 18 ++-- 16 files changed, 388 insertions(+), 180 deletions(-) create mode 100644 compiler/crates/relay-config/src/defer_stream_interface.rs diff --git a/compiler/crates/relay-codegen/src/build_ast.rs b/compiler/crates/relay-codegen/src/build_ast.rs index 2037028a2034e..32438dbcfa66e 100644 --- a/compiler/crates/relay-codegen/src/build_ast.rs +++ b/compiler/crates/relay-codegen/src/build_ast.rs @@ -20,14 +20,15 @@ use graphql_ir::{ use graphql_syntax::OperationKind; use intern::string_key::{Intern, StringKey}; use md5::{Digest, Md5}; +use relay_config::DeferStreamInterface; use relay_transforms::{ extract_connection_metadata_from_directive, extract_handle_field_directives, extract_values_from_handle_field_directive, generate_abstract_type_refinement_key, remove_directive, ClientEdgeMetadata, ConnectionConstants, ConnectionMetadata, DeferDirective, InlineDirectiveMetadata, ModuleMetadata, RefetchableMetadata, RelayDirective, RelayResolverSpreadMetadata, RequiredMetadataDirective, StreamDirective, - CLIENT_EXTENSION_DIRECTIVE_NAME, DEFER_STREAM_CONSTANTS, DIRECTIVE_SPLIT_OPERATION, - INLINE_DIRECTIVE_NAME, INTERNAL_METADATA_DIRECTIVE, NO_INLINE_DIRECTIVE_NAME, + CLIENT_EXTENSION_DIRECTIVE_NAME, DIRECTIVE_SPLIT_OPERATION, INLINE_DIRECTIVE_NAME, + INTERNAL_METADATA_DIRECTIVE, NO_INLINE_DIRECTIVE_NAME, REACT_FLIGHT_SCALAR_FLIGHT_FIELD_METADATA_KEY, RELAY_ACTOR_CHANGE_DIRECTIVE_FOR_CODEGEN, RELAY_CLIENT_COMPONENT_MODULE_ID_ARGUMENT_NAME, RELAY_CLIENT_COMPONENT_SERVER_DIRECTIVE_NAME, TYPE_DISCRIMINATOR_DIRECTIVE_NAME, @@ -40,9 +41,14 @@ pub fn build_request_params_ast_key( ast_builder: &mut AstBuilder, operation: &OperationDefinition, top_level_statements: &TopLevelStatements, + defer_stream_interface: &DeferStreamInterface, ) -> AstKey { - let mut operation_builder = - CodegenBuilder::new(schema, CodegenVariant::Normalization, ast_builder); + let mut operation_builder = CodegenBuilder::new( + schema, + CodegenVariant::Normalization, + ast_builder, + defer_stream_interface, + ); operation_builder.build_request_parameters(operation, request_parameters, top_level_statements) } @@ -50,9 +56,14 @@ pub fn build_provided_variables( schema: &SDLSchema, ast_builder: &mut AstBuilder, operation: &OperationDefinition, + defer_stream_interface: &DeferStreamInterface, ) -> Option { - let mut operation_builder = - CodegenBuilder::new(schema, CodegenVariant::Normalization, ast_builder); + let mut operation_builder = CodegenBuilder::new( + schema, + CodegenVariant::Normalization, + ast_builder, + defer_stream_interface, + ); operation_builder.build_operation_provided_variables(&operation.variable_definitions) } @@ -63,11 +74,21 @@ pub fn build_request( operation: &OperationDefinition, fragment: &FragmentDefinition, request_parameters: AstKey, + defer_stream_interface: &DeferStreamInterface, ) -> AstKey { - let mut operation_builder = - CodegenBuilder::new(schema, CodegenVariant::Normalization, ast_builder); + let mut operation_builder = CodegenBuilder::new( + schema, + CodegenVariant::Normalization, + ast_builder, + defer_stream_interface, + ); let operation = Primitive::Key(operation_builder.build_operation(operation)); - let mut fragment_builder = CodegenBuilder::new(schema, CodegenVariant::Reader, ast_builder); + let mut fragment_builder = CodegenBuilder::new( + schema, + CodegenVariant::Reader, + ast_builder, + defer_stream_interface, + ); let fragment = Primitive::Key(fragment_builder.build_fragment(fragment, true)); ast_builder.intern(Ast::Object(object! { @@ -92,8 +113,14 @@ pub fn build_operation( schema: &SDLSchema, ast_builder: &mut AstBuilder, operation: &OperationDefinition, + defer_stream_interface: &DeferStreamInterface, ) -> AstKey { - let mut builder = CodegenBuilder::new(schema, CodegenVariant::Normalization, ast_builder); + let mut builder = CodegenBuilder::new( + schema, + CodegenVariant::Normalization, + ast_builder, + defer_stream_interface, + ); builder.build_operation(operation) } @@ -101,13 +128,20 @@ pub fn build_fragment( schema: &SDLSchema, ast_builder: &mut AstBuilder, fragment: &FragmentDefinition, + defer_stream_interface: &DeferStreamInterface, ) -> AstKey { - let mut builder = CodegenBuilder::new(schema, CodegenVariant::Reader, ast_builder); + let mut builder = CodegenBuilder::new( + schema, + CodegenVariant::Reader, + ast_builder, + defer_stream_interface, + ); builder.build_fragment(fragment, false) } -pub struct CodegenBuilder<'schema, 'builder> { +pub struct CodegenBuilder<'schema, 'builder, 'dsi> { connection_constants: ConnectionConstants, + defer_stream_interface: &'dsi DeferStreamInterface, schema: &'schema SDLSchema, variant: CodegenVariant, ast_builder: &'builder mut AstBuilder, @@ -119,15 +153,17 @@ pub enum CodegenVariant { Normalization, } -impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { +impl<'schema, 'builder, 'dsi> CodegenBuilder<'schema, 'builder, 'dsi> { pub fn new( schema: &'schema SDLSchema, variant: CodegenVariant, ast_builder: &'builder mut AstBuilder, + defer_stream_interface: &'dsi DeferStreamInterface, ) -> Self { Self { connection_constants: Default::default(), schema, + defer_stream_interface, variant, ast_builder, } @@ -334,7 +370,7 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { }; if metadata.is_stream_connection { object.push(ObjectEntry { - key: DEFER_STREAM_CONSTANTS.stream_name, + key: self.defer_stream_interface.stream_name, value: Primitive::Bool(true), }) } @@ -374,7 +410,7 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { Selection::InlineFragment(inline_fragment) => { let defer = inline_fragment .directives - .named(DEFER_STREAM_CONSTANTS.defer_name); + .named(self.defer_stream_interface.defer_name); if let Some(defer) = defer { vec![self.build_defer(inline_fragment, defer)] } else if let Some(inline_data_directive) = @@ -382,12 +418,8 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { { // If inline fragment has @__inline directive (created by inline_data_fragment transform) // we will return selection wrapped with InlineDataFragmentSpread - vec![ - self.build_inline_data_fragment_spread( - inline_fragment, - inline_data_directive, - ), - ] + vec![self + .build_inline_data_fragment_spread(inline_fragment, inline_data_directive)] } else if let Some(module_metadata) = ModuleMetadata::find(&inline_fragment.directives) { @@ -403,7 +435,9 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { } } Selection::LinkedField(field) => { - let stream = field.directives.named(DEFER_STREAM_CONSTANTS.stream_name); + let stream = field + .directives + .named(self.defer_stream_interface.stream_name); match stream { Some(stream) => vec![self.build_stream(field, stream)], @@ -806,7 +840,8 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { defer: &Directive, ) -> Primitive { let next_selections = self.build_selections(inline_fragment.selections.iter()); - let DeferDirective { if_arg, label_arg } = DeferDirective::from(defer); + let DeferDirective { if_arg, label_arg } = + DeferDirective::from(defer, self.defer_stream_interface); let if_variable_name = if_arg.and_then(|arg| match &arg.value.item { // `true` is the default, remove as the AST is typed just as a variable name string // `false` constant values should've been transformed away in skip_unreachable_node @@ -828,7 +863,7 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { let next_selections = self.build_linked_field_and_handles(&LinkedField { directives: remove_directive( &linked_field.directives, - DEFER_STREAM_CONSTANTS.stream_name, + self.defer_stream_interface.stream_name, ), ..linked_field.to_owned() }); @@ -844,7 +879,7 @@ impl<'schema, 'builder> CodegenBuilder<'schema, 'builder> { label_arg, use_customized_batch_arg: _, initial_count_arg: _, - } = StreamDirective::from(stream); + } = StreamDirective::from(stream, self.defer_stream_interface); let if_variable_name = if_arg.and_then(|arg| match &arg.value.item { // `true` is the default, remove as the AST is typed just as a variable name string // `false` constant values should've been transformed away in skip_unreachable_node diff --git a/compiler/crates/relay-codegen/src/printer.rs b/compiler/crates/relay-codegen/src/printer.rs index aeb273a88016c..4cd05d231f52f 100644 --- a/compiler/crates/relay-codegen/src/printer.rs +++ b/compiler/crates/relay-codegen/src/printer.rs @@ -31,7 +31,12 @@ pub fn print_operation( project_config: &ProjectConfig, top_level_statements: &mut TopLevelStatements, ) -> String { - Printer::without_dedupe(project_config).print_operation(schema, operation, top_level_statements) + Printer::without_dedupe(project_config).print_operation( + schema, + operation, + top_level_statements, + project_config, + ) } pub fn print_fragment( @@ -40,7 +45,12 @@ pub fn print_fragment( project_config: &ProjectConfig, top_level_statements: &mut TopLevelStatements, ) -> String { - Printer::without_dedupe(project_config).print_fragment(schema, fragment, top_level_statements) + Printer::without_dedupe(project_config).print_fragment( + schema, + fragment, + top_level_statements, + project_config, + ) } pub fn print_request( @@ -57,6 +67,7 @@ pub fn print_request( fragment, request_parameters, top_level_statements, + project_config, ) } @@ -77,6 +88,7 @@ pub fn print_request_params( &mut builder, operation, top_level_statements, + &project_config.schema_config.defer_stream_interface, ); let printer = JSONPrinter::new(&builder, project_config, top_level_statements); printer.print(request_parameters_ast_key, false) @@ -110,8 +122,14 @@ impl<'p> Printer<'p> { schema: &SDLSchema, operation: &OperationDefinition, top_level_statements: &mut TopLevelStatements, + project_config: &ProjectConfig, ) -> Option { - let key = build_provided_variables(schema, &mut self.builder, operation)?; + let key = build_provided_variables( + schema, + &mut self.builder, + operation, + &project_config.schema_config.defer_stream_interface, + )?; let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); Some(printer.print(key, self.dedupe)) } @@ -123,6 +141,7 @@ impl<'p> Printer<'p> { fragment: &FragmentDefinition, request_parameters: RequestParameters<'_>, top_level_statements: &mut TopLevelStatements, + project_config: &ProjectConfig, ) -> String { let request_parameters = build_request_params_ast_key( schema, @@ -130,6 +149,7 @@ impl<'p> Printer<'p> { &mut self.builder, operation, top_level_statements, + &project_config.schema_config.defer_stream_interface, ); let key = build_request( schema, @@ -137,6 +157,7 @@ impl<'p> Printer<'p> { operation, fragment, request_parameters, + &project_config.schema_config.defer_stream_interface, ); let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); printer.print(key, self.dedupe) @@ -147,8 +168,14 @@ impl<'p> Printer<'p> { schema: &SDLSchema, operation: &OperationDefinition, top_level_statements: &mut TopLevelStatements, + project_config: &ProjectConfig, ) -> String { - let key = build_operation(schema, &mut self.builder, operation); + let key = build_operation( + schema, + &mut self.builder, + operation, + &project_config.schema_config.defer_stream_interface, + ); let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); printer.print(key, self.dedupe) } @@ -158,8 +185,14 @@ impl<'p> Printer<'p> { schema: &SDLSchema, fragment: &FragmentDefinition, top_level_statements: &mut TopLevelStatements, + project_config: &ProjectConfig, ) -> String { - let key = build_fragment(schema, &mut self.builder, fragment); + let key = build_fragment( + schema, + &mut self.builder, + fragment, + &project_config.schema_config.defer_stream_interface, + ); let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); printer.print(key, self.dedupe) } @@ -170,6 +203,7 @@ impl<'p> Printer<'p> { request_parameters: RequestParameters<'_>, operation: &OperationDefinition, top_level_statements: &mut TopLevelStatements, + project_config: &ProjectConfig, ) -> String { let key = build_request_params_ast_key( schema, @@ -177,6 +211,7 @@ impl<'p> Printer<'p> { &mut self.builder, operation, top_level_statements, + &project_config.schema_config.defer_stream_interface, ); let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); printer.print(key, self.dedupe) diff --git a/compiler/crates/relay-compiler/src/build_project/artifact_content.rs b/compiler/crates/relay-compiler/src/build_project/artifact_content.rs index e69802fe0266b..48e29929430b6 100644 --- a/compiler/crates/relay-compiler/src/build_project/artifact_content.rs +++ b/compiler/crates/relay-compiler/src/build_project/artifact_content.rs @@ -274,9 +274,12 @@ fn generate_operation( TypegenLanguage::TypeScript => writeln!(content)?, } let mut top_level_statements = Default::default(); - if let Some(provided_variables) = - printer.print_provided_variables(schema, normalization_operation, &mut top_level_statements) - { + if let Some(provided_variables) = printer.print_provided_variables( + schema, + normalization_operation, + &mut top_level_statements, + project_config, + ) { let mut provided_variable_text = String::new(); write_variable_value_with_type( &project_config.typegen_config.language, @@ -298,6 +301,7 @@ fn generate_operation( &operation_fragment, request_parameters, &mut top_level_statements, + project_config, ); write!(content, "{}", &top_level_statements)?; @@ -399,8 +403,12 @@ fn generate_split_operation( } let mut top_level_statements = Default::default(); - let operation = - printer.print_operation(schema, normalization_operation, &mut top_level_statements); + let operation = printer.print_operation( + schema, + normalization_operation, + &mut top_level_statements, + project_config, + ); write!(content, "{}", &top_level_statements)?; @@ -527,7 +535,12 @@ fn generate_read_only_fragment( TypegenLanguage::TypeScript => writeln!(content)?, } let mut top_level_statements = Default::default(); - let fragment = printer.print_fragment(schema, reader_fragment, &mut top_level_statements); + let fragment = printer.print_fragment( + schema, + reader_fragment, + &mut top_level_statements, + project_config, + ); write!(content, "{}", &top_level_statements)?; diff --git a/compiler/crates/relay-config/src/defer_stream_interface.rs b/compiler/crates/relay-config/src/defer_stream_interface.rs new file mode 100644 index 0000000000000..fc187b44dea6d --- /dev/null +++ b/compiler/crates/relay-config/src/defer_stream_interface.rs @@ -0,0 +1,35 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +use intern::string_key::{Intern, StringKey}; + +use serde::{Deserialize, Serialize}; + +/// Configuration where Relay should expect some fields in the schema. +#[derive(Debug, Serialize, Deserialize)] +#[serde(deny_unknown_fields, rename_all = "camelCase")] +pub struct DeferStreamInterface { + pub defer_name: StringKey, + pub stream_name: StringKey, + pub if_arg: StringKey, + pub label_arg: StringKey, + pub initial_count_arg: StringKey, + pub use_customized_batch_arg: StringKey, +} + +impl Default for DeferStreamInterface { + fn default() -> Self { + DeferStreamInterface { + defer_name: "defer".intern(), + stream_name: "stream".intern(), + if_arg: "if".intern(), + label_arg: "label".intern(), + initial_count_arg: "initialCount".intern(), + use_customized_batch_arg: "useCustomizedBatch".intern(), + } + } +} diff --git a/compiler/crates/relay-config/src/lib.rs b/compiler/crates/relay-config/src/lib.rs index 39f4e01702cbb..8be2f4e634bf3 100644 --- a/compiler/crates/relay-config/src/lib.rs +++ b/compiler/crates/relay-config/src/lib.rs @@ -10,11 +10,13 @@ #![deny(clippy::all)] mod connection_interface; +mod defer_stream_interface; mod js_module_format; mod project_config; mod typegen_config; pub use connection_interface::ConnectionInterface; +pub use defer_stream_interface::DeferStreamInterface; pub use js_module_format::JsModuleFormat; pub use project_config::{PersistConfig, ProjectConfig, ProjectName, SchemaConfig, SchemaLocation}; pub use typegen_config::{FlowTypegenConfig, FlowTypegenPhase, TypegenConfig, TypegenLanguage}; diff --git a/compiler/crates/relay-config/src/project_config.rs b/compiler/crates/relay-config/src/project_config.rs index ebc96123b33da..5136162bd9a65 100644 --- a/compiler/crates/relay-config/src/project_config.rs +++ b/compiler/crates/relay-config/src/project_config.rs @@ -16,7 +16,9 @@ use regex::Regex; use serde::{de::Error, Deserialize, Deserializer, Serialize}; use tokio::sync::Semaphore; -use crate::{connection_interface::ConnectionInterface, JsModuleFormat, TypegenConfig}; +use crate::{ + connection_interface::ConnectionInterface, DeferStreamInterface, JsModuleFormat, TypegenConfig, +}; type FnvIndexMap = IndexMap; @@ -69,6 +71,9 @@ pub struct SchemaConfig { /// The name of the `id` field that exists on the `Node` interface. #[serde(default = "default_node_interface_id_field")] pub node_interface_id_field: StringKey, + + #[serde(default)] + pub defer_stream_interface: DeferStreamInterface, } fn default_node_interface_id_field() -> StringKey { @@ -80,6 +85,7 @@ impl Default for SchemaConfig { Self { connection_interface: ConnectionInterface::default(), node_interface_id_field: default_node_interface_id_field(), + defer_stream_interface: DeferStreamInterface::default(), } } } diff --git a/compiler/crates/relay-transforms/src/apply_transforms.rs b/compiler/crates/relay-transforms/src/apply_transforms.rs index dcc0af0db6085..f8a5533d7c1d9 100644 --- a/compiler/crates/relay-transforms/src/apply_transforms.rs +++ b/compiler/crates/relay-transforms/src/apply_transforms.rs @@ -143,14 +143,21 @@ fn apply_common_transforms( )?; program = log_event.time("transform_connections", || { - transform_connections(&program, &project_config.schema_config.connection_interface) + transform_connections(&program, &project_config.schema_config) }); program = log_event.time("mask", || mask(&program)); program = log_event.time("transform_defer_stream", || { - transform_defer_stream(&program) + transform_defer_stream( + &program, + &project_config.schema_config.defer_stream_interface, + ) })?; program = log_event.time("transform_match", || { - transform_match(&program, &project_config.feature_flags) + transform_match( + &program, + &project_config.feature_flags, + &project_config.schema_config.defer_stream_interface, + ) })?; program = log_event.time("transform_subscriptions", || { transform_subscriptions(&program) @@ -236,13 +243,23 @@ fn apply_reader_transforms( )?; program = log_event.time("inline_data_fragment", || inline_data_fragment(&program))?; - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + program = log_event.time("skip_unreachable_node", || { + skip_unreachable_node( + &program, + &project_config.schema_config.defer_stream_interface, + ) + })?; program = log_event.time("remove_base_fragments", || { remove_base_fragments(&program, &base_fragment_names) }); log_event.time("flatten", || flatten(&mut program, true, false))?; - program = log_event.time("skip_redundant_nodes", || skip_redundant_nodes(&program)); + program = log_event.time("skip_redundant_nodes", || { + skip_redundant_nodes( + &program, + &project_config.schema_config.defer_stream_interface, + ) + }); program = log_event.time("generate_data_driven_dependency_metadata", || { generate_data_driven_dependency_metadata(&program) }); @@ -408,7 +425,12 @@ fn apply_normalization_transforms( print_stats("hash_supported_argument", &program); } - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + program = log_event.time("skip_unreachable_node", || { + skip_unreachable_node( + &program, + &project_config.schema_config.defer_stream_interface, + ) + })?; if let Some(print_stats) = maybe_print_stats { print_stats("skip_unreachable_node", &program); } @@ -433,7 +455,12 @@ fn apply_normalization_transforms( print_stats("flatten", &program); } - program = log_event.time("skip_redundant_nodes", || skip_redundant_nodes(&program)); + program = log_event.time("skip_redundant_nodes", || { + skip_redundant_nodes( + &program, + &project_config.schema_config.defer_stream_interface, + ) + }); if let Some(print_stats) = maybe_print_stats { print_stats("skip_redundant_nodes", &program); } @@ -499,13 +526,21 @@ fn apply_operation_text_transforms( program = log_event.time("skip_client_extensions", || { skip_client_extensions(&program) }); - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + program = log_event.time("skip_unreachable_node", || { + skip_unreachable_node( + &program, + &project_config.schema_config.defer_stream_interface, + ) + })?; program = log_event.time("generate_typename", || generate_typename(&program, false)); program = log_event.time("skip_null_arguments_transform", || { skip_null_arguments_transform(&program) }); log_event.time("validate_selection_conflict", || { - validate_selection_conflict(&program) + validate_selection_conflict( + &program, + &project_config.schema_config.defer_stream_interface, + ) })?; log_event.time("flatten", || flatten(&mut program, false, true))?; program = log_event.time("validate_operation_variables", || { @@ -518,7 +553,10 @@ fn apply_operation_text_transforms( validate_required_arguments(&program) })?; program = log_event.time("unwrap_custom_directive_selection", || { - unwrap_custom_directive_selection(&program) + unwrap_custom_directive_selection( + &program, + &project_config.schema_config.defer_stream_interface, + ) }); program = apply_after_custom_transforms( @@ -557,7 +595,11 @@ fn apply_typegen_transforms( program = log_event.time("mask", || mask(&program)); program = log_event.time("transform_match", || { - transform_match(&program, &project_config.feature_flags) + transform_match( + &program, + &project_config.feature_flags, + &project_config.schema_config.defer_stream_interface, + ) })?; program = log_event.time("transform_subscriptions", || { transform_subscriptions(&program) diff --git a/compiler/crates/relay-transforms/src/defer_stream/directives.rs b/compiler/crates/relay-transforms/src/defer_stream/directives.rs index b0799479dffbd..839f55539f379 100644 --- a/compiler/crates/relay-transforms/src/defer_stream/directives.rs +++ b/compiler/crates/relay-transforms/src/defer_stream/directives.rs @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -use super::DEFER_STREAM_CONSTANTS; use graphql_ir::{Argument, Directive}; +use relay_config::DeferStreamInterface; /// Utility to access the arguments of the @defer directive. pub struct DeferDirective<'a> { @@ -18,13 +18,13 @@ impl<'a> DeferDirective<'a> { /// Extracts the arguments from the given directive assumed to be a @defer /// directive. /// Panics on any unexpected arguments. - pub fn from(directive: &'a Directive) -> Self { + pub fn from(directive: &'a Directive, defer_stream_interface: &DeferStreamInterface) -> Self { let mut if_arg = None; let mut label_arg = None; for arg in &directive.arguments { - if arg.name.item == DEFER_STREAM_CONSTANTS.if_arg { + if arg.name.item == defer_stream_interface.if_arg { if_arg = Some(arg); - } else if arg.name.item == DEFER_STREAM_CONSTANTS.label_arg { + } else if arg.name.item == defer_stream_interface.label_arg { label_arg = Some(arg); } else { panic!("Unexpected argument to @defer: {}", arg.name.item); @@ -46,19 +46,19 @@ impl<'a> StreamDirective<'a> { /// Extracts the arguments from the given directive assumed to be a @stream /// directive. /// Panics on any unexpected arguments. - pub fn from(directive: &'a Directive) -> Self { + pub fn from(directive: &'a Directive, defer_stream_interface: &DeferStreamInterface) -> Self { let mut if_arg = None; let mut label_arg = None; let mut initial_count_arg = None; let mut use_customized_batch_arg = None; for arg in &directive.arguments { - if arg.name.item == DEFER_STREAM_CONSTANTS.if_arg { + if arg.name.item == defer_stream_interface.if_arg { if_arg = Some(arg); - } else if arg.name.item == DEFER_STREAM_CONSTANTS.label_arg { + } else if arg.name.item == defer_stream_interface.label_arg { label_arg = Some(arg); - } else if arg.name.item == DEFER_STREAM_CONSTANTS.initial_count_arg { + } else if arg.name.item == defer_stream_interface.initial_count_arg { initial_count_arg = Some(arg); - } else if arg.name.item == DEFER_STREAM_CONSTANTS.use_customized_batch_arg { + } else if arg.name.item == defer_stream_interface.use_customized_batch_arg { use_customized_batch_arg = Some(arg); } else { panic!("Unexpected argument to @stream: {}", arg.name.item); diff --git a/compiler/crates/relay-transforms/src/defer_stream/mod.rs b/compiler/crates/relay-transforms/src/defer_stream/mod.rs index 454899f0c160e..d1864a97d23da 100644 --- a/compiler/crates/relay-transforms/src/defer_stream/mod.rs +++ b/compiler/crates/relay-transforms/src/defer_stream/mod.rs @@ -17,43 +17,21 @@ use graphql_ir::{ Value, }; use intern::string_key::{Intern, StringKey}; -use lazy_static::lazy_static; +use relay_config::DeferStreamInterface; use schema::Schema; use std::{collections::HashMap, sync::Arc}; use thiserror::Error; -pub struct DeferStreamConstants { - pub defer_name: StringKey, - pub stream_name: StringKey, - pub if_arg: StringKey, - pub label_arg: StringKey, - pub initial_count_arg: StringKey, - pub use_customized_batch_arg: StringKey, -} - -impl Default for DeferStreamConstants { - fn default() -> Self { - Self { - defer_name: "defer".intern(), - stream_name: "stream".intern(), - if_arg: "if".intern(), - label_arg: "label".intern(), - initial_count_arg: "initial_count".intern(), - use_customized_batch_arg: "use_customized_batch".intern(), - } - } -} - -lazy_static! { - pub static ref DEFER_STREAM_CONSTANTS: DeferStreamConstants = Default::default(); -} - -pub fn transform_defer_stream(program: &Program) -> DiagnosticsResult { +pub fn transform_defer_stream( + program: &Program, + defer_stream_interface: &DeferStreamInterface, +) -> DiagnosticsResult { let mut transformer = DeferStreamTransform { program, current_document_name: None, labels: Default::default(), errors: Default::default(), + defer_stream_interface, }; let next_program = transformer.transform_program(program); @@ -69,6 +47,7 @@ struct DeferStreamTransform<'s> { current_document_name: Option, labels: HashMap, errors: Vec, + defer_stream_interface: &'s DeferStreamInterface, } impl DeferStreamTransform<'_> { @@ -83,7 +62,7 @@ impl DeferStreamTransform<'_> { self.errors.push( Diagnostic::error( ValidationMessage::LabelNotUniqueForDeferStream { - directive_name: DEFER_STREAM_CONSTANTS.defer_name, + directive_name: self.defer_stream_interface.defer_name, }, prev.name.location, ) @@ -101,7 +80,8 @@ impl DeferStreamTransform<'_> { spread: &FragmentSpread, defer: &Directive, ) -> Result, Diagnostic> { - let DeferDirective { if_arg, label_arg } = DeferDirective::from(defer); + let DeferDirective { if_arg, label_arg } = + DeferDirective::from(defer, self.defer_stream_interface); if is_literal_false_arg(if_arg) { return Ok(Transformed::Replace(Selection::FragmentSpread(Arc::new( @@ -118,14 +98,14 @@ impl DeferStreamTransform<'_> { let transformed_label = transform_label( self.current_document_name .expect("We expect the parent name to be defined here."), - DEFER_STREAM_CONSTANTS.defer_name, + self.defer_stream_interface.defer_name, label, ); self.record_label(transformed_label, defer); let next_label_value = Value::Constant(ConstantValue::String(transformed_label)); let next_label_arg = Argument { name: WithLocation { - item: DEFER_STREAM_CONSTANTS.label_arg, + item: self.defer_stream_interface.label_arg, location: label_arg.map_or(defer.name.location, |arg| arg.name.location), }, value: WithLocation { @@ -178,7 +158,7 @@ impl DeferStreamTransform<'_> { label_arg, initial_count_arg, use_customized_batch_arg, - } = StreamDirective::from(stream); + } = StreamDirective::from(stream, self.defer_stream_interface); let transformed_linked_field = self.default_transform_linked_field(linked_field); let get_next_selection = |directives| match transformed_linked_field { @@ -218,14 +198,14 @@ impl DeferStreamTransform<'_> { let transformed_label = transform_label( self.current_document_name .expect("We expect the parent name to be defined here."), - DEFER_STREAM_CONSTANTS.stream_name, + self.defer_stream_interface.stream_name, label, ); self.record_label(transformed_label, stream); let next_label_value = Value::Constant(ConstantValue::String(transformed_label)); let next_label_arg = Argument { name: WithLocation { - item: DEFER_STREAM_CONSTANTS.label_arg, + item: self.defer_stream_interface.label_arg, location: label_arg.map_or(stream.name.location, |arg| arg.name.location), }, value: WithLocation { @@ -287,10 +267,13 @@ impl<'s> Transformer for DeferStreamTransform<'s> { ) -> Transformed { let defer_directive = inline_fragment .directives - .named(DEFER_STREAM_CONSTANTS.defer_name); + .named(self.defer_stream_interface.defer_name); if let Some(directive) = defer_directive { // Special case for @defer generated by transform_connection - if let Some(label) = directive.arguments.named(DEFER_STREAM_CONSTANTS.label_arg) { + if let Some(label) = directive + .arguments + .named(self.defer_stream_interface.label_arg) + { if let Some(label) = label.value.item.get_string_literal() { if label.lookup().contains("$defer$") { return self.default_transform_inline_fragment(inline_fragment); @@ -308,7 +291,9 @@ impl<'s> Transformer for DeferStreamTransform<'s> { /// Transform of fragment spread with @defer is delegated to `transform_defer`. fn transform_fragment_spread(&mut self, spread: &FragmentSpread) -> Transformed { - let defer_directive = spread.directives.named(DEFER_STREAM_CONSTANTS.defer_name); + let defer_directive = spread + .directives + .named(self.defer_stream_interface.defer_name); if let Some(defer) = defer_directive { match self.transform_defer(spread, defer) { Ok(transformed) => transformed, @@ -326,7 +311,7 @@ impl<'s> Transformer for DeferStreamTransform<'s> { fn transform_scalar_field(&mut self, scalar_field: &ScalarField) -> Transformed { let stream_directive = &scalar_field .directives - .named(DEFER_STREAM_CONSTANTS.stream_name); + .named(self.defer_stream_interface.stream_name); if let Some(directive) = stream_directive { self.errors.push(Diagnostic::error( ValidationMessage::InvalidStreamOnScalarField { @@ -342,7 +327,7 @@ impl<'s> Transformer for DeferStreamTransform<'s> { fn transform_linked_field(&mut self, linked_field: &LinkedField) -> Transformed { let stream_directive = linked_field .directives - .named(DEFER_STREAM_CONSTANTS.stream_name); + .named(self.defer_stream_interface.stream_name); if let Some(stream) = stream_directive { match self.transform_stream(linked_field, stream) { Ok(transformed) => transformed, diff --git a/compiler/crates/relay-transforms/src/lib.rs b/compiler/crates/relay-transforms/src/lib.rs index 06d4519738bd5..d932802c6a756 100644 --- a/compiler/crates/relay-transforms/src/lib.rs +++ b/compiler/crates/relay-transforms/src/lib.rs @@ -101,9 +101,7 @@ pub use connections::{ ConnectionMetadata, }; pub use declarative_connection::transform_declarative_connection; -pub use defer_stream::{ - transform_defer_stream, DeferDirective, StreamDirective, DEFER_STREAM_CONSTANTS, -}; +pub use defer_stream::{transform_defer_stream, DeferDirective, StreamDirective}; pub use directive_finder::DirectiveFinder; pub use flatten::flatten; pub use generate_data_driven_dependency_metadata::{ diff --git a/compiler/crates/relay-transforms/src/match_/match_transform.rs b/compiler/crates/relay-transforms/src/match_/match_transform.rs index 7df4655ff1482..756d8701fbc27 100644 --- a/compiler/crates/relay-transforms/src/match_/match_transform.rs +++ b/compiler/crates/relay-transforms/src/match_/match_transform.rs @@ -7,7 +7,6 @@ use super::validation_message::ValidationMessage; use crate::{ - defer_stream::DEFER_STREAM_CONSTANTS, inline_data_fragment::INLINE_DIRECTIVE_NAME, match_::MATCH_CONSTANTS, no_inline::{attach_no_inline_directives_to_fragments, validate_required_no_inline_directive}, @@ -24,6 +23,7 @@ use graphql_ir::{ }; use indexmap::IndexSet; use intern::string_key::{Intern, StringKey, StringKeyMap}; +use relay_config::DeferStreamInterface; use schema::{FieldID, ScalarID, Schema, Type, TypeReference}; use std::{ hash::{Hash, Hasher}, @@ -34,8 +34,9 @@ use std::{ pub fn transform_match( program: &Program, feature_flags: &FeatureFlags, + defer_stream_interface: &DeferStreamInterface, ) -> DiagnosticsResult { - let mut transformer = MatchTransform::new(program, feature_flags); + let mut transformer = MatchTransform::new(program, feature_flags, defer_stream_interface); let next_program = transformer.transform_program(program); if transformer.errors.is_empty() { Ok(next_program.replace_or_else(|| program.clone())) @@ -70,7 +71,7 @@ struct Matches { } type MatchesForPath = FnvHashMap, Matches>; -pub struct MatchTransform<'program, 'flag> { +pub struct MatchTransform<'program, 'flag, 'dsi> { program: &'program Program, parent_type: Type, document_name: StringKey, @@ -82,10 +83,15 @@ pub struct MatchTransform<'program, 'flag> { no_inline_flag: &'flag FeatureFlag, // Stores the fragments that should use @no_inline and their parent document name no_inline_fragments: StringKeyMap>, + defer_stream_interface: &'dsi DeferStreamInterface, } -impl<'program, 'flag> MatchTransform<'program, 'flag> { - fn new(program: &'program Program, feature_flags: &'flag FeatureFlags) -> Self { +impl<'program, 'flag, 'dsi> MatchTransform<'program, 'flag, 'dsi> { + fn new( + program: &'program Program, + feature_flags: &'flag FeatureFlags, + defer_stream_interface: &'dsi DeferStreamInterface, + ) -> Self { Self { program, // Placeholders to make the types non-optional, @@ -98,6 +104,7 @@ impl<'program, 'flag> MatchTransform<'program, 'flag> { enable_3d_branch_arg_generation: feature_flags.enable_3d_branch_arg_generation, no_inline_flag: &feature_flags.no_inline, no_inline_fragments: Default::default(), + defer_stream_interface, } } @@ -275,7 +282,7 @@ impl<'program, 'flag> MatchTransform<'program, 'flag> { && !(spread.directives.len() == 2 && spread .directives - .named(DEFER_STREAM_CONSTANTS.defer_name) + .named(self.defer_stream_interface.defer_name) .is_some()) { // allow @defer and @module in typegen transforms @@ -498,18 +505,16 @@ impl<'program, 'flag> MatchTransform<'program, 'flag> { directives: vec![], selections: vec![Selection::InlineFragment(Arc::new(InlineFragment { type_condition: Some(fragment.type_condition), - directives: vec![ - ModuleMetadata { - key: match_directive_key_argument, - module_id, - module_name: module_directive_name_argument, - source_document_name: self.document_name, - fragment_name: spread.fragment.item, - location: module_directive.name.location, - no_inline: should_use_no_inline, - } - .into(), - ], + directives: vec![ModuleMetadata { + key: match_directive_key_argument, + module_id, + module_name: module_directive_name_argument, + source_document_name: self.document_name, + fragment_name: spread.fragment.item, + location: module_directive.name.location, + no_inline: should_use_no_inline, + } + .into()], selections: vec![next_spread, operation_field, component_field], }))], }, @@ -702,7 +707,7 @@ impl<'program, 'flag> MatchTransform<'program, 'flag> { } } -impl Transformer for MatchTransform<'_, '_> { +impl Transformer for MatchTransform<'_, '_, '_> { const NAME: &'static str = "MatchTransform"; const VISIT_ARGUMENTS: bool = false; const VISIT_DIRECTIVES: bool = false; diff --git a/compiler/crates/relay-transforms/src/skip_redundant_nodes.rs b/compiler/crates/relay-transforms/src/skip_redundant_nodes.rs index 037b54747dabc..dbd1431ffb4c2 100644 --- a/compiler/crates/relay-transforms/src/skip_redundant_nodes.rs +++ b/compiler/crates/relay-transforms/src/skip_redundant_nodes.rs @@ -8,7 +8,6 @@ use crate::{ node_identifier::NodeIdentifier, util::{is_relay_custom_inline_fragment_directive, PointerAddress}, - DEFER_STREAM_CONSTANTS, }; use common::{sync::*, NamedItem}; @@ -17,6 +16,7 @@ use graphql_ir::{ Condition, FragmentDefinition, InlineFragment, LinkedField, OperationDefinition, Program, Selection, Transformed, TransformedValue, }; +use relay_config::DeferStreamInterface; use schema::SDLSchema; use std::sync::Arc; @@ -111,8 +111,11 @@ use std::sync::Arc; * * 1 can be skipped because it is already fetched at the outer level. */ -pub fn skip_redundant_nodes(program: &Program) -> Program { - let transform = SkipRedundantNodesTransform::new(program); +pub fn skip_redundant_nodes( + program: &Program, + defer_stream_interface: &DeferStreamInterface, +) -> Program { + let transform = SkipRedundantNodesTransform::new(program, defer_stream_interface); transform .transform_program(program) .replace_or_else(|| program.clone()) @@ -123,16 +126,18 @@ struct SelectionMap(VecMap>); type Cache = DashMap, SelectionMap)>; -struct SkipRedundantNodesTransform { +struct SkipRedundantNodesTransform<'a> { schema: Arc, cache: Cache, + defer_stream_interface: &'a DeferStreamInterface, } -impl<'s> SkipRedundantNodesTransform { - fn new(program: &'_ Program) -> Self { +impl<'s> SkipRedundantNodesTransform<'s> { + fn new(program: &'_ Program, defer_stream_interface: &'s DeferStreamInterface) -> Self { Self { schema: Arc::clone(&program.schema), cache: DashMap::new(), + defer_stream_interface, } } @@ -331,7 +336,7 @@ impl<'s> SkipRedundantNodesTransform { } let mut result: Vec = Vec::new(); let mut has_changes = false; - let selections = get_partitioned_selections(selections); + let selections = get_partitioned_selections(selections, self.defer_stream_interface); for (index, prev_item) in selections.iter().enumerate() { let next_item = self.transform_selection(prev_item, selection_map); @@ -427,18 +432,19 @@ impl<'s> SkipRedundantNodesTransform { * guaranteed to be fetched are encountered prior to any duplicates that may be * fetched within a conditional. */ -fn get_partitioned_selections(selections: &[Selection]) -> Vec<&Selection> { +fn get_partitioned_selections<'a>( + selections: &'a [Selection], + defer_stream_interface: &'a DeferStreamInterface, +) -> Vec<&'a Selection> { let mut result = Vec::with_capacity(selections.len()); - unsafe { - result.set_len(selections.len()) - }; + unsafe { result.set_len(selections.len()) }; let mut non_field_index = selections .iter() - .filter(|sel| is_selection_linked_or_scalar(sel)) + .filter(|sel| is_selection_linked_or_scalar(sel, defer_stream_interface)) .count(); let mut field_index = 0; for sel in selections.iter() { - if is_selection_linked_or_scalar(sel) { + if is_selection_linked_or_scalar(sel, defer_stream_interface) { result[field_index] = sel; field_index += 1; } else { @@ -449,11 +455,14 @@ fn get_partitioned_selections(selections: &[Selection]) -> Vec<&Selection> { result } -fn is_selection_linked_or_scalar(selection: &Selection) -> bool { +fn is_selection_linked_or_scalar( + selection: &Selection, + defer_stream_interface: &DeferStreamInterface, +) -> bool { match selection { Selection::LinkedField(field) => field .directives - .named(DEFER_STREAM_CONSTANTS.stream_name) + .named(defer_stream_interface.stream_name) .is_none(), Selection::ScalarField(_) => true, _ => false, diff --git a/compiler/crates/relay-transforms/src/skip_unreachable_node.rs b/compiler/crates/relay-transforms/src/skip_unreachable_node.rs index 77f04d7478042..303e1a2155e96 100644 --- a/compiler/crates/relay-transforms/src/skip_unreachable_node.rs +++ b/compiler/crates/relay-transforms/src/skip_unreachable_node.rs @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -use super::defer_stream::DEFER_STREAM_CONSTANTS; use crate::{ no_inline::NO_INLINE_DIRECTIVE_NAME, DeferDirective, StreamDirective, ValidationMessage, }; @@ -16,10 +15,15 @@ use graphql_ir::{ Value, }; use intern::string_key::{StringKey, StringKeyMap}; +use relay_config::DeferStreamInterface; use std::sync::Arc; -pub fn skip_unreachable_node(program: &Program) -> DiagnosticsResult { - let mut skip_unreachable_node_transform = SkipUnreachableNodeTransform::new(program); +pub fn skip_unreachable_node( + program: &Program, + defer_stream_interface: &DeferStreamInterface, +) -> DiagnosticsResult { + let mut skip_unreachable_node_transform = + SkipUnreachableNodeTransform::new(program, defer_stream_interface); let transformed = skip_unreachable_node_transform.transform_program(program); if skip_unreachable_node_transform.errors.is_empty() { Ok(transformed.replace_or_else(|| program.clone())) @@ -34,6 +38,7 @@ pub struct SkipUnreachableNodeTransform<'s> { errors: Vec, visited_fragments: VisitedFragments, program: &'s Program, + defer_stream_interface: &'s DeferStreamInterface, } impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { @@ -144,8 +149,13 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { fn transform_linked_field(&mut self, field: &LinkedField) -> Transformed { let tranformed_field = self.default_transform_linked_field(field); - if let Some(directive) = field.directives.named(DEFER_STREAM_CONSTANTS.stream_name) { - if let Some(if_arg) = StreamDirective::from(directive).if_arg { + if let Some(directive) = field + .directives + .named(self.defer_stream_interface.stream_name) + { + if let Some(if_arg) = + StreamDirective::from(directive, self.defer_stream_interface).if_arg + { if let Value::Constant(ConstantValue::Boolean(false)) = &if_arg.value.item { let mut next_field = match tranformed_field { Transformed::Delete => return Transformed::Delete, @@ -159,7 +169,7 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { Arc::make_mut(&mut next_field) .directives .retain(|directive| { - directive.name.item != DEFER_STREAM_CONSTANTS.stream_name + directive.name.item != self.defer_stream_interface.stream_name }); assert_eq!( previous_directive_len, @@ -175,11 +185,12 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { } impl<'s> SkipUnreachableNodeTransform<'s> { - pub fn new(program: &'s Program) -> Self { + pub fn new(program: &'s Program, defer_stream_interface: &'s DeferStreamInterface) -> Self { Self { errors: Vec::new(), visited_fragments: Default::default(), program, + defer_stream_interface, } } @@ -223,10 +234,12 @@ impl<'s> SkipUnreachableNodeTransform<'s> { ) -> TransformedMulti { if let Some(directive) = inline_fragment .directives - .named(DEFER_STREAM_CONSTANTS.defer_name) + .named(self.defer_stream_interface.defer_name) { assert!(inline_fragment.directives.len() == 1); - if let Some(if_arg) = DeferDirective::from(directive).if_arg { + if let Some(if_arg) = + DeferDirective::from(directive, self.defer_stream_interface).if_arg + { if let Value::Constant(ConstantValue::Boolean(false)) = &if_arg.value.item { return TransformedMulti::ReplaceMultiple( self.transform_selections(&inline_fragment.selections) diff --git a/compiler/crates/relay-transforms/src/transform_connections.rs b/compiler/crates/relay-transforms/src/transform_connections.rs index aaedcde085bbd..135adb7c1935e 100644 --- a/compiler/crates/relay-transforms/src/transform_connections.rs +++ b/compiler/crates/relay-transforms/src/transform_connections.rs @@ -9,9 +9,8 @@ use crate::{ connections::{ assert_connection_selections, build_connection_metadata, build_edge_selections, build_page_info_selections, extract_connection_directive, get_default_filters, - ConnectionConstants, ConnectionInterface, ConnectionMetadata, ConnectionMetadataDirective, + ConnectionConstants, ConnectionMetadata, ConnectionMetadataDirective, }, - defer_stream::DEFER_STREAM_CONSTANTS, handle_fields::{build_handle_field_directive_from_connection_directive, KEY_ARG_NAME}, }; use common::{NamedItem, WithLocation}; @@ -20,21 +19,19 @@ use graphql_ir::{ OperationDefinition, Program, Selection, Transformed, Transformer, Value, }; use intern::string_key::{Intern, StringKey}; +use relay_config::SchemaConfig; use schema::Schema; use std::sync::Arc; -pub fn transform_connections( - program: &Program, - connection_interface: &ConnectionInterface, -) -> Program { - let mut transform = ConnectionTransform::new(program, connection_interface); +pub fn transform_connections(program: &Program, schema_config: &SchemaConfig) -> Program { + let mut transform = ConnectionTransform::new(program, schema_config); transform .transform_program(program) .replace_or_else(|| program.clone()) } struct ConnectionTransform<'s> { - connection_interface: &'s ConnectionInterface, + schema_config: &'s SchemaConfig, connection_constants: ConnectionConstants, current_path: Option>, current_connection_metadata: Vec, @@ -43,12 +40,12 @@ struct ConnectionTransform<'s> { } impl<'s> ConnectionTransform<'s> { - fn new(program: &'s Program, connection_interface: &'s ConnectionInterface) -> Self { + fn new(program: &'s Program, schema_config: &'s SchemaConfig) -> Self { Self { connection_constants: ConnectionConstants::default(), - connection_interface, + schema_config, current_path: None, - current_document_name: connection_interface.cursor, // Set an arbitrary value to avoid Option + current_document_name: schema_config.connection_interface.cursor, // Set an arbitrary value to avoid Option current_connection_metadata: Vec::new(), program, } @@ -70,13 +67,16 @@ impl<'s> ConnectionTransform<'s> { let ((edges_ix, edges_field), page_info_selection) = assert_connection_selections( schema, &transformed_selections, - self.connection_interface, + &self.schema_config.connection_interface, ); let connection_field_type = schema.field(connection_field.definition.item).type_.inner(); // Construct edges selection let edges_schema_field_id = schema - .named_field(connection_field_type, self.connection_interface.edges) + .named_field( + connection_field_type, + self.schema_config.connection_interface.edges, + ) .expect("Expected presence of edges field to have been previously validated."); let edges_schema_field = schema.field(edges_schema_field_id); let edges_field_name = edges_schema_field.name.item; @@ -109,21 +109,25 @@ impl<'s> ConnectionTransform<'s> { .push(build_edge_selections( schema, edge_type, - self.connection_interface, + &self.schema_config.connection_interface, )); if is_stream_connection { let mut arguments = vec![]; for arg in &connection_directive.arguments { - if arg.name.item == DEFER_STREAM_CONSTANTS.if_arg - || arg.name.item == DEFER_STREAM_CONSTANTS.initial_count_arg - || arg.name.item == DEFER_STREAM_CONSTANTS.use_customized_batch_arg + if arg.name.item == self.schema_config.defer_stream_interface.if_arg + || arg.name.item == self.schema_config.defer_stream_interface.initial_count_arg + || arg.name.item + == self + .schema_config + .defer_stream_interface + .use_customized_batch_arg { arguments.push(arg.clone()); } else if arg.name.item == *KEY_ARG_NAME { arguments.push(Argument { name: WithLocation::new( arg.name.location, - DEFER_STREAM_CONSTANTS.label_arg, + self.schema_config.defer_stream_interface.label_arg, ), value: arg.value.clone(), }); @@ -132,7 +136,7 @@ impl<'s> ConnectionTransform<'s> { transformed_edges_field.directives.push(Directive { name: WithLocation::new( connection_directive.name.location, - DEFER_STREAM_CONSTANTS.stream_name, + self.schema_config.defer_stream_interface.stream_name, ), arguments, data: None, @@ -141,7 +145,10 @@ impl<'s> ConnectionTransform<'s> { // Construct page_info selection let page_info_schema_field_id = schema - .named_field(connection_field_type, self.connection_interface.page_info) + .named_field( + connection_field_type, + self.schema_config.connection_interface.page_info, + ) .expect("Expected presence of page_info field to have been previously validated."); let page_info_schema_field = schema.field(page_info_schema_field_id); let page_info_field_name = page_info_schema_field.name.item; @@ -189,7 +196,7 @@ impl<'s> ConnectionTransform<'s> { page_info_type, connection_metadata, self.connection_constants, - self.connection_interface, + &self.schema_config.connection_interface, )); let transformed_page_info_field_selection = if is_stream_connection { @@ -200,7 +207,7 @@ impl<'s> ConnectionTransform<'s> { arguments.push(Argument { name: WithLocation::new( key_arg.name.location, - DEFER_STREAM_CONSTANTS.label_arg, + self.schema_config.defer_stream_interface.label_arg, ), value: WithLocation::new( key_arg.value.location, @@ -209,14 +216,16 @@ impl<'s> ConnectionTransform<'s> { "{}$defer${}${}", self.current_document_name, key.lookup(), - self.connection_interface.page_info + self.schema_config.connection_interface.page_info ) .intern(), )), ), }); } - if let Some(if_arg) = connection_args.named(DEFER_STREAM_CONSTANTS.if_arg) { + if let Some(if_arg) = + connection_args.named(self.schema_config.defer_stream_interface.if_arg) + { arguments.push(if_arg.clone()); } Selection::InlineFragment(Arc::new(InlineFragment { @@ -227,7 +236,7 @@ impl<'s> ConnectionTransform<'s> { directives: vec![Directive { name: WithLocation::new( connection_directive.name.location, - DEFER_STREAM_CONSTANTS.defer_name, + self.schema_config.defer_stream_interface.defer_name, ), arguments, data: None, diff --git a/compiler/crates/relay-transforms/src/unwrap_custom_directive_selection.rs b/compiler/crates/relay-transforms/src/unwrap_custom_directive_selection.rs index f9a8a52170429..454bd493abd36 100644 --- a/compiler/crates/relay-transforms/src/unwrap_custom_directive_selection.rs +++ b/compiler/crates/relay-transforms/src/unwrap_custom_directive_selection.rs @@ -5,23 +5,36 @@ * LICENSE file in the root directory of this source tree. */ -use crate::DEFER_STREAM_CONSTANTS; use common::NamedItem; use graphql_ir::{FragmentSpread, InlineFragment, Program, Selection, Transformed, Transformer}; +use relay_config::DeferStreamInterface; use std::{iter, sync::Arc}; /// Transform to unwrap selections wrapped in a InlineFragment with custom /// directive for printing -pub fn unwrap_custom_directive_selection(program: &Program) -> Program { - let mut transform = UnwrapCustomDirectiveSelection; +pub fn unwrap_custom_directive_selection( + program: &Program, + defer_stream_interface: &DeferStreamInterface, +) -> Program { + let mut transform = UnwrapCustomDirectiveSelection::new(defer_stream_interface); transform .transform_program(program) .replace_or_else(|| program.clone()) } -struct UnwrapCustomDirectiveSelection; +struct UnwrapCustomDirectiveSelection<'s> { + defer_stream_interface: &'s DeferStreamInterface, +} + +impl<'s> UnwrapCustomDirectiveSelection<'s> { + fn new(defer_stream_interface: &'s DeferStreamInterface) -> Self { + Self { + defer_stream_interface, + } + } +} -impl Transformer for UnwrapCustomDirectiveSelection { +impl Transformer for UnwrapCustomDirectiveSelection<'_> { const NAME: &'static str = "UnwrapCustomDirectiveSelection"; const VISIT_ARGUMENTS: bool = false; const VISIT_DIRECTIVES: bool = false; @@ -29,7 +42,9 @@ impl Transformer for UnwrapCustomDirectiveSelection { fn transform_inline_fragment(&mut self, fragment: &InlineFragment) -> Transformed { if fragment.type_condition.is_none() { // Remove the wrapping `... @defer` for `@defer` on fragment spreads. - let defer = fragment.directives.named(DEFER_STREAM_CONSTANTS.defer_name); + let defer = fragment + .directives + .named(self.defer_stream_interface.defer_name); if let Some(defer) = defer { if let Selection::FragmentSpread(frag_spread) = &fragment.selections[0] { return Transformed::Replace(Selection::FragmentSpread(Arc::new( diff --git a/compiler/crates/relay-transforms/src/validations/validate_selection_conflict.rs b/compiler/crates/relay-transforms/src/validations/validate_selection_conflict.rs index c2eeb03a0e3d4..ffe5d3f644350 100644 --- a/compiler/crates/relay-transforms/src/validations/validate_selection_conflict.rs +++ b/compiler/crates/relay-transforms/src/validations/validate_selection_conflict.rs @@ -6,7 +6,7 @@ */ use self::ignoring_type_and_location::arguments_equals; -use crate::{PointerAddress, ValidationMessage, DEFER_STREAM_CONSTANTS}; +use crate::{PointerAddress, ValidationMessage}; use common::{Diagnostic, DiagnosticsResult, Location}; use dashmap::DashMap; use errors::{par_try_map, validate_map}; @@ -15,11 +15,15 @@ use graphql_ir::{ ScalarField, Selection, }; use intern::string_key::StringKey; +use relay_config::DeferStreamInterface; use schema::{SDLSchema, Schema, Type, TypeReference}; use std::sync::Arc; -pub fn validate_selection_conflict(program: &Program) -> DiagnosticsResult<()> { - ValidateSelectionConflict::new(program).validate_program(program) +pub fn validate_selection_conflict( + program: &Program, + defer_stram_interface: &DeferStreamInterface, +) -> DiagnosticsResult<()> { + ValidateSelectionConflict::new(program, defer_stram_interface).validate_program(program) } #[derive(Clone, PartialEq, Debug)] @@ -34,14 +38,16 @@ struct ValidateSelectionConflict<'s> { program: &'s Program, fragment_cache: DashMap>>, fields_cache: DashMap>>, + defer_stream_interface: &'s DeferStreamInterface, } impl<'s> ValidateSelectionConflict<'s> { - fn new(program: &'s Program) -> Self { + fn new(program: &'s Program, defer_stream_interface: &'s DeferStreamInterface) -> Self { Self { program, fragment_cache: Default::default(), fields_cache: Default::default(), + defer_stream_interface, } } @@ -307,11 +313,11 @@ impl<'s> ValidateSelectionConflict<'s> { let left_stream_directive = l .directives() .iter() - .find(|d| d.name.item == DEFER_STREAM_CONSTANTS.stream_name); + .find(|d| d.name.item == self.defer_stream_interface.stream_name); let right_stream_directive = r .directives() .iter() - .find(|d| d.name.item == DEFER_STREAM_CONSTANTS.stream_name); + .find(|d| d.name.item == self.defer_stream_interface.stream_name); match (left_stream_directive, right_stream_directive) { (Some(_), None) => Err(Diagnostic::error( ValidationMessage::StreamConflictOnlyUsedInOnePlace { response_key }, From e1b0b1ab7515f734ff0d5f868e80c5e3451e0992 Mon Sep 17 00:00:00 2001 From: Rob Richard Date: Thu, 27 Jan 2022 14:11:54 -0500 Subject: [PATCH 3/4] pass default DeferStreamInterface to tests # Conflicts: # compiler/crates/relay-compiler/tests/compile_relay_artifacts/mod.rs # compiler/crates/relay-lsp/src/graphql_tools/mod.rs # compiler/crates/relay-typegen/tests/generate_flow/mod.rs # compiler/crates/relay-typegen/tests/generate_typescript/mod.rs --- compiler/crates/relay-codegen/tests/connections/mod.rs | 5 +++-- .../relay-codegen/tests/deduped_json_codegen/mod.rs | 9 +++++++-- compiler/crates/relay-codegen/tests/defer_stream/mod.rs | 6 ++++-- .../crates/relay-transforms/tests/defer_stream/mod.rs | 6 ++++-- .../generate_data_driven_dependency_metadata/mod.rs | 4 +++- .../crates/relay-transforms/tests/match_transform/mod.rs | 6 +++++- .../relay-transforms/tests/refetchable_fragment/mod.rs | 7 +++---- .../relay-transforms/tests/skip_redundant_nodes/mod.rs | 8 ++++++-- .../relay-transforms/tests/skip_unreachable_nodes/mod.rs | 6 +++++- .../relay-transforms/tests/transform_connections/mod.rs | 9 +++++---- .../tests/validate_selection_conflict/mod.rs | 4 +++- 11 files changed, 48 insertions(+), 22 deletions(-) diff --git a/compiler/crates/relay-codegen/tests/connections/mod.rs b/compiler/crates/relay-codegen/tests/connections/mod.rs index 784a49fecd6b2..37959065ca892 100644 --- a/compiler/crates/relay-codegen/tests/connections/mod.rs +++ b/compiler/crates/relay-codegen/tests/connections/mod.rs @@ -37,7 +37,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { validate_connections(&program, &connection_interface) .map_err(|diagnostics| diagnostics_to_sorted_string(fixture.content, &diagnostics))?; - let next_program = transform_connections(&program, &connection_interface); + let next_program = transform_connections(&program, &project_config.schema_config); let mut printed = next_program .operations() @@ -58,13 +58,14 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { &operation_fragment, request_parameters, &mut import_statements, + &project_config, ); format!("{}{}", import_statements, request) }) .collect::>(); let mut import_statements = Default::default(); for def in next_program.fragments() { - printed.push(printer.print_fragment(&schema, def, &mut import_statements)); + printed.push(printer.print_fragment(&schema, def, &mut import_statements, &project_config)); } if !import_statements.is_empty() { printed.push(import_statements.to_string()) diff --git a/compiler/crates/relay-codegen/tests/deduped_json_codegen/mod.rs b/compiler/crates/relay-codegen/tests/deduped_json_codegen/mod.rs index 0ad2c574c2291..a8f7756c715c4 100644 --- a/compiler/crates/relay-codegen/tests/deduped_json_codegen/mod.rs +++ b/compiler/crates/relay-codegen/tests/deduped_json_codegen/mod.rs @@ -35,13 +35,18 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { &TEST_SCHEMA, operation, &mut import_statements, + &project_config, ); format!("Operation:\n{}{}\n", import_statements, operation,) } graphql_ir::ExecutableDefinition::Fragment(fragment) => { let mut import_statements = Default::default(); - let fragment = - printer.print_fragment(&TEST_SCHEMA, fragment, &mut import_statements); + let fragment = printer.print_fragment( + &TEST_SCHEMA, + fragment, + &mut import_statements, + &project_config, + ); format!("Fragment:\n{}{}\n", import_statements, fragment) } }) diff --git a/compiler/crates/relay-codegen/tests/defer_stream/mod.rs b/compiler/crates/relay-codegen/tests/defer_stream/mod.rs index 8a745fc0cea42..dc2c86336c395 100644 --- a/compiler/crates/relay-codegen/tests/defer_stream/mod.rs +++ b/compiler/crates/relay-codegen/tests/defer_stream/mod.rs @@ -10,7 +10,7 @@ use fixture_tests::Fixture; use graphql_ir::{build, Program}; use graphql_syntax::parse_executable; use relay_codegen::{print_fragment, print_operation, JsModuleFormat}; -use relay_config::ProjectConfig; +use relay_config::{DeferStreamInterface, ProjectConfig}; use relay_test_schema::get_test_schema; use relay_transforms::{sort_selections, transform_defer_stream}; use std::sync::Arc; @@ -24,7 +24,9 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let schema = get_test_schema(); let ir = build(&schema, &ast.definitions).unwrap(); let program = Program::from_definitions(Arc::clone(&schema), ir); - let next_program = sort_selections(&transform_defer_stream(&program).unwrap()); + let defer_stream_interface = DeferStreamInterface::default(); + let next_program = + sort_selections(&transform_defer_stream(&program, &defer_stream_interface).unwrap()); let mut result = next_program .fragments() .map(|def| { diff --git a/compiler/crates/relay-transforms/tests/defer_stream/mod.rs b/compiler/crates/relay-transforms/tests/defer_stream/mod.rs index 7ecde79d971bd..f49add7f86939 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/mod.rs +++ b/compiler/crates/relay-transforms/tests/defer_stream/mod.rs @@ -7,12 +7,14 @@ use fixture_tests::Fixture; use graphql_test_helpers::apply_transform_for_test; +use relay_config::DeferStreamInterface; use relay_transforms::{transform_defer_stream, unwrap_custom_directive_selection}; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { apply_transform_for_test(fixture, |program| { - let program = transform_defer_stream(program)?; - let program = unwrap_custom_directive_selection(&program); + let defer_stream_interface = DeferStreamInterface::default(); + let program = transform_defer_stream(program, &defer_stream_interface)?; + let program = unwrap_custom_directive_selection(&program, &defer_stream_interface); Ok(program) }) } diff --git a/compiler/crates/relay-transforms/tests/generate_data_driven_dependency_metadata/mod.rs b/compiler/crates/relay-transforms/tests/generate_data_driven_dependency_metadata/mod.rs index 5db8085374926..f34838ecbdfc7 100644 --- a/compiler/crates/relay-transforms/tests/generate_data_driven_dependency_metadata/mod.rs +++ b/compiler/crates/relay-transforms/tests/generate_data_driven_dependency_metadata/mod.rs @@ -8,12 +8,14 @@ use common::FeatureFlags; use fixture_tests::Fixture; use graphql_test_helpers::apply_transform_for_test; +use relay_config::DeferStreamInterface; use relay_transforms::{generate_data_driven_dependency_metadata, transform_match}; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { apply_transform_for_test(fixture, |program| { let flags = FeatureFlags::default(); - let program = transform_match(program, &flags)?; + let defer_stream_interface = DeferStreamInterface::default(); + let program = transform_match(program, &flags, &defer_stream_interface)?; let program = generate_data_driven_dependency_metadata(&program); Ok(program) }) diff --git a/compiler/crates/relay-transforms/tests/match_transform/mod.rs b/compiler/crates/relay-transforms/tests/match_transform/mod.rs index d40cf5b98f353..385151b13bb33 100644 --- a/compiler/crates/relay-transforms/tests/match_transform/mod.rs +++ b/compiler/crates/relay-transforms/tests/match_transform/mod.rs @@ -8,9 +8,13 @@ use common::FeatureFlags; use fixture_tests::Fixture; use graphql_test_helpers::apply_transform_for_test; +use relay_config::DeferStreamInterface; use relay_transforms::transform_match; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let flags = FeatureFlags::default(); - apply_transform_for_test(fixture, |program| transform_match(program, &flags)) + let defer_stream_interface = DeferStreamInterface::default(); + apply_transform_for_test(fixture, |program| { + transform_match(program, &flags, &defer_stream_interface) + }) } diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/mod.rs b/compiler/crates/relay-transforms/tests/refetchable_fragment/mod.rs index 5038e37c0a938..4b488d62dc76b 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/mod.rs +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/mod.rs @@ -6,15 +6,14 @@ */ use fixture_tests::Fixture; -use relay_transforms::{ - transform_connections, transform_refetchable_fragment, ConnectionInterface, -}; +use relay_config::SchemaConfig; +use relay_transforms::{transform_connections, transform_refetchable_fragment}; use graphql_test_helpers::apply_transform_for_test; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { apply_transform_for_test(fixture, |program| { - let program = transform_connections(program, &ConnectionInterface::default()); + let program = transform_connections(program, &SchemaConfig::default()); let base_fragments = Default::default(); transform_refetchable_fragment(&program, &Default::default(), &base_fragments, false) }) diff --git a/compiler/crates/relay-transforms/tests/skip_redundant_nodes/mod.rs b/compiler/crates/relay-transforms/tests/skip_redundant_nodes/mod.rs index e8493d039e03b..209a0df926271 100644 --- a/compiler/crates/relay-transforms/tests/skip_redundant_nodes/mod.rs +++ b/compiler/crates/relay-transforms/tests/skip_redundant_nodes/mod.rs @@ -10,6 +10,7 @@ use fixture_tests::Fixture; use graphql_ir::{build, Program}; use graphql_syntax::parse_executable; use graphql_text_printer::{print_operation, PrinterOptions}; +use relay_config::DeferStreamInterface; use relay_test_schema::{get_test_schema, get_test_schema_with_extensions}; use relay_transforms::{inline_fragments, skip_redundant_nodes}; use std::sync::Arc; @@ -21,12 +22,14 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { debug_directive_data: true, ..Default::default() }; + let defer_stream_interface = DeferStreamInterface::default(); let mut printed = if let [base, extensions] = parts.as_slice() { let ast = parse_executable(base, source_location).unwrap(); let schema = get_test_schema_with_extensions(extensions); let ir = build(&schema, &ast.definitions).unwrap(); let program = Program::from_definitions(Arc::clone(&schema), ir); - let next_program = skip_redundant_nodes(&inline_fragments(&program)); + let next_program = + skip_redundant_nodes(&inline_fragments(&program), &defer_stream_interface); next_program .operations() .map(|def| print_operation(&schema, def, printer_options.clone())) @@ -36,7 +39,8 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let ast = parse_executable(fixture.content, source_location).unwrap(); let ir = build(&schema, &ast.definitions).unwrap(); let program = Program::from_definitions(Arc::clone(&schema), ir); - let next_program = skip_redundant_nodes(&inline_fragments(&program)); + let next_program = + skip_redundant_nodes(&inline_fragments(&program), &defer_stream_interface); next_program .operations() .map(|def| print_operation(&schema, def, printer_options.clone())) diff --git a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs index a370f7270b45d..9f3d479a4ba80 100644 --- a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs +++ b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs @@ -7,8 +7,12 @@ use fixture_tests::Fixture; use graphql_test_helpers::apply_transform_for_test; +use relay_config::DeferStreamInterface; use relay_transforms::skip_unreachable_node; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { - apply_transform_for_test(fixture, skip_unreachable_node) + let defer_stream_interface = DeferStreamInterface::default(); + apply_transform_for_test(fixture, |program| { + skip_unreachable_node(program, &defer_stream_interface) + }) } diff --git a/compiler/crates/relay-transforms/tests/transform_connections/mod.rs b/compiler/crates/relay-transforms/tests/transform_connections/mod.rs index 23f3d03908201..de3116cd038ee 100644 --- a/compiler/crates/relay-transforms/tests/transform_connections/mod.rs +++ b/compiler/crates/relay-transforms/tests/transform_connections/mod.rs @@ -11,8 +11,9 @@ use graphql_ir::{build, Program}; use graphql_syntax::parse_executable; use graphql_test_helpers::diagnostics_to_sorted_string; use graphql_text_printer::{print_fragment, print_operation, PrinterOptions}; +use relay_config::SchemaConfig; use relay_test_schema::get_test_schema; -use relay_transforms::{transform_connections, validate_connections, ConnectionInterface}; +use relay_transforms::{transform_connections, validate_connections}; use std::sync::Arc; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { @@ -26,12 +27,12 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let program = Program::from_definitions(Arc::clone(&schema), ir); - let connection_interface = ConnectionInterface::default(); + let schema_config = SchemaConfig::default(); - validate_connections(&program, &connection_interface) + validate_connections(&program, &schema_config.connection_interface) .map_err(|diagnostics| diagnostics_to_sorted_string(fixture.content, &diagnostics))?; - let next_program = transform_connections(&program, &connection_interface); + let next_program = transform_connections(&program, &schema_config); let printer_options = PrinterOptions { debug_directive_data: true, diff --git a/compiler/crates/relay-transforms/tests/validate_selection_conflict/mod.rs b/compiler/crates/relay-transforms/tests/validate_selection_conflict/mod.rs index d660651cfaeba..4eda4300d4d1e 100644 --- a/compiler/crates/relay-transforms/tests/validate_selection_conflict/mod.rs +++ b/compiler/crates/relay-transforms/tests/validate_selection_conflict/mod.rs @@ -11,6 +11,7 @@ use graphql_cli::DiagnosticPrinter; use graphql_ir::{build, Program}; use graphql_syntax::{parse_executable, GraphQLSource}; use graphql_test_helpers::diagnostics_to_sorted_string; +use relay_config::DeferStreamInterface; use relay_test_schema::TEST_SCHEMA; use relay_transforms::validate_selection_conflict; use std::sync::Arc; @@ -40,7 +41,8 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { }; let program = Program::from_definitions(Arc::clone(&TEST_SCHEMA), ir); - validate_selection_conflict(&program) + let defer_stream_interface = DeferStreamInterface::default(); + validate_selection_conflict(&program, &defer_stream_interface) .map_err(|diagnostics| diagnostics_to_sorted_string(fixture.content, &diagnostics))?; Ok("OK".to_owned()) From 9ecd6195d83c3f9127067d4c4199979ad4e5f66e Mon Sep 17 00:00:00 2001 From: Rob Richard Date: Thu, 16 Dec 2021 18:35:30 -0500 Subject: [PATCH 4/4] update test fixtures --- ...ragment-with-stream-default-label.expected | 2 +- ...fragment-with-stream-default-label.graphql | 2 +- .../fragment-with-defer-in-stream.expected | 4 ++-- .../fragment-with-defer-in-stream.graphql | 2 +- .../fixtures/fragment-with-stream.expected | 4 ++-- .../fixtures/fragment-with-stream.graphql | 2 +- ...gment-with-connection-with-stream.expected | 4 ++-- ...agment-with-connection-with-stream.graphql | 2 +- ...flict_inconsistent_stream_usage_1.expected | 4 ++-- ...nflict_inconsistent_stream_usage_1.graphql | 2 +- ...flict_inconsistent_stream_usage_2.expected | 8 ++++---- ...nflict_inconsistent_stream_usage_2.graphql | 4 ++-- ...conflict_stream_on_nodes_or_edges.expected | 4 ++-- ..._conflict_stream_on_nodes_or_edges.graphql | 2 +- ..._edges_without_defer_on_page_info.expected | 4 ++-- ...r_edges_without_defer_on_page_info.graphql | 2 +- ..._on_page_info_and_page_info_alias.expected | 4 ++-- ...r_on_page_info_and_page_info_alias.graphql | 2 +- ...lection_set_conflict_valid_stream.expected | 4 ++-- ...election_set_conflict_valid_stream.graphql | 2 +- .../fixtures/stream-and-handle.expected | 4 ++-- .../fixtures/stream-and-handle.graphql | 2 +- .../stream-connection-conditional.expected | 6 +++--- .../stream-connection-conditional.graphql | 4 ++-- .../fixtures/stream-connection.expected | 4 ++-- .../fixtures/stream-connection.graphql | 2 +- .../fixtures/stream_if_arguments.expected | 20 +++++++++---------- .../fixtures/stream_if_arguments.graphql | 12 +++++------ .../crates/relay-lsp/src/completion/test.rs | 6 +++--- .../relay-schema/src/relay-extensions.graphql | 4 ++-- .../relay-test-schema/src/testschema.graphql | 4 ++-- ...ragment-with-stream-default-label.expected | 4 ++-- ...fragment-with-stream-default-label.graphql | 2 +- ...th-stream-duplicate-label.invalid.expected | 8 ++++---- ...ith-stream-duplicate-label.invalid.graphql | 4 ++-- .../fragment-with-stream-if-arg.expected | 4 ++-- .../fragment-with-stream-if-arg.graphql | 2 +- ...ent-with-stream-initial-count-arg.expected | 4 ++-- ...ment-with-stream-initial-count-arg.graphql | 2 +- ...missing-initial-count-arg.invalid.expected | 2 +- ...th-stream-on-scalar-field.invalid.expected | 4 ++-- ...ith-stream-on-scalar-field.invalid.graphql | 2 +- ...t-with-stream-statically-disabled.expected | 2 +- ...nt-with-stream-statically-disabled.graphql | 2 +- ...h-stream-use_customized_batch-arg.expected | 6 +++--- ...th-stream-use_customized_batch-arg.graphql | 4 ++-- ...ith-stream-variable-label.invalid.expected | 4 ++-- ...with-stream-variable-label.invalid.graphql | 2 +- .../fixtures/fragment-with-stream.expected | 4 ++-- .../fixtures/fragment-with-stream.graphql | 2 +- .../fixtures/query-with-stream.expected | 4 ++-- .../fixtures/query-with-stream.graphql | 2 +- .../fixtures/stream.invalid.expected | 4 ++-- .../fixtures/stream.invalid.graphql | 2 +- ...gment-with-connection-with-stream.expected | 4 ++-- ...agment-with-connection-with-stream.graphql | 2 +- .../fixtures/kitchen-sink.expected | 4 ++-- .../fixtures/kitchen-sink.graphql | 2 +- .../stream-connection-no-label.expected | 4 ++-- .../stream-connection-no-label.graphql | 2 +- .../fixtures/stream-connection.expected | 4 ++-- .../fixtures/stream-connection.graphql | 2 +- ...ection-with-aliased-edges.invalid.expected | 4 ++-- ...nection-with-aliased-edges.invalid.graphql | 2 +- ...on-with-aliased-page-info.invalid.expected | 2 +- ...ion-with-aliased-page-info.invalid.graphql | 2 +- ...th-stream-child-of-client.invalid.expected | 4 ++-- ...ith-stream-child-of-client.invalid.graphql | 2 +- ...ent-with-stream-on-client.invalid.expected | 6 +++--- ...ment-with-stream-on-client.invalid.graphql | 2 +- ...ream-connection-on-client.invalid.expected | 2 +- ...tream-connection-on-client.invalid.graphql | 2 +- .../query-with-stream-connection.expected | 2 +- .../query-with-stream-connection.graphql | 2 +- .../fixtures/query-with-stream.expected | 2 +- .../fixtures/query-with-stream.graphql | 2 +- .../query-with-stream-connection.expected | 2 +- .../query-with-stream-connection.graphql | 2 +- .../fixtures/query-with-stream.expected | 2 +- .../fixtures/query-with-stream.graphql | 2 +- 80 files changed, 138 insertions(+), 138 deletions(-) diff --git a/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected b/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected index 95222b6649848..a741b1fce7a72 100644 --- a/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected +++ b/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1) { + actors @stream(initialCount: 1) { name } } diff --git a/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql b/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql index 23fa23b3e8e43..739db7de64c6a 100644 --- a/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql +++ b/compiler/crates/relay-codegen/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql @@ -7,7 +7,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1) { + actors @stream(initialCount: 1) { name } } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected index 3d556e54b8851..2139b95fd1a88 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected @@ -8,7 +8,7 @@ query fragmentWithDeferInStream_QueryWithFragmentWithStreamQuery($id: ID!) { fragment fragmentWithDeferInStream_FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { ...fragmentWithDeferInStream_ActorFragment @defer } } @@ -193,7 +193,7 @@ fragment fragmentWithDeferInStream_ActorFragment on Actor { fragment fragmentWithDeferInStream_FeedbackFragment on Feedback { id - actors @stream(label: "fragmentWithDeferInStream_FeedbackFragment$stream$StreamedActorsLabel", initial_count: 1) { + actors @stream(label: "fragmentWithDeferInStream_FeedbackFragment$stream$StreamedActorsLabel", initialCount: 1) { __typename ...fragmentWithDeferInStream_ActorFragment @defer(label: "fragmentWithDeferInStream_FeedbackFragment$defer$fragmentWithDeferInStream_ActorFragment") id diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.graphql index 7886bae9ac370..d551db5e514b2 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.graphql @@ -7,7 +7,7 @@ query fragmentWithDeferInStream_QueryWithFragmentWithStreamQuery($id: ID!) { fragment fragmentWithDeferInStream_FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { ...fragmentWithDeferInStream_ActorFragment @defer } } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected index 002bbb646c663..1b3e53770b1b2 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected @@ -8,7 +8,7 @@ query fragmentWithStream_QueryWithFragmentWithStreamQuery($id: ID!) { fragment fragmentWithStream_FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } @@ -173,7 +173,7 @@ query fragmentWithStream_QueryWithFragmentWithStreamQuery( fragment fragmentWithStream_FeedbackFragment on Feedback { id - actors @stream(label: "fragmentWithStream_FeedbackFragment$stream$StreamedActorsLabel", initial_count: 1) { + actors @stream(label: "fragmentWithStream_FeedbackFragment$stream$StreamedActorsLabel", initialCount: 1) { __typename name id diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.graphql index e60f16cdf1a39..c9020d678df83 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.graphql @@ -7,7 +7,7 @@ query fragmentWithStream_QueryWithFragmentWithStreamQuery($id: ID!) { fragment fragmentWithStream_FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected index 330d00ea0ebc4..683a12d8c2fe3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected @@ -9,7 +9,7 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment on Node ... on User { name friends(after: $cursor, first: $count) - @stream_connection(key: "PaginationFragment_friends", initial_count: 1) { + @stream_connection(key: "PaginationFragment_friends", initialCount: 1) { edges { node { id @@ -305,7 +305,7 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment_1G22uz o ... on User { name friends(after: $cursor, first: $count) { - edges @stream(label: "refetchableFragmentWithConnectionWithStream_PaginationFragment$stream$PaginationFragment_friends", initial_count: 1) { + edges @stream(label: "refetchableFragmentWithConnectionWithStream_PaginationFragment$stream$PaginationFragment_friends", initialCount: 1) { node { id __typename diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.graphql index a46be98ae3ff9..bc89a07f01a2b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.graphql @@ -8,7 +8,7 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment on Node ... on User { name friends(after: $cursor, first: $count) - @stream_connection(key: "PaginationFragment_friends", initial_count: 1) { + @stream_connection(key: "PaginationFragment_friends", initialCount: 1) { edges { node { id diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.expected index be19d3923866b..b585b6c837a59 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.expected @@ -5,7 +5,7 @@ query selectionSetConflictInconsistentStreamUsage1Query { ... on User { friends { ... on FriendsConnection { - edges @stream(label: "hdijf", initial_count: 1) { + edges @stream(label: "hdijf", initialCount: 1) { node { name } @@ -25,7 +25,7 @@ query selectionSetConflictInconsistentStreamUsage1Query { selection_set_conflict_inconsistent_stream_usage_1.graphql:7:11 6 │ ... on FriendsConnection { - 7 │ edges @stream(label: "hdijf", initial_count: 1) { + 7 │ edges @stream(label: "hdijf", initialCount: 1) { │ ^^^^^ 8 │ node { diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.graphql index 4e97124b440fd..ae506dfaf7429 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_1.graphql @@ -4,7 +4,7 @@ query selectionSetConflictInconsistentStreamUsage1Query { ... on User { friends { ... on FriendsConnection { - edges @stream(label: "hdijf", initial_count: 1) { + edges @stream(label: "hdijf", initialCount: 1) { node { name } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.expected index 29d689b89243b..18e73023db4e5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.expected @@ -5,13 +5,13 @@ query selectionSetConflictInconsistentStreamUsage2Query { ... on User { friends { ... on FriendsConnection { - edges @stream(label: "hdijf", initial_count: 1) { + edges @stream(label: "hdijf", initialCount: 1) { node { name } } } - edges @stream(label: "hkjdf", initial_count: 2) { + edges @stream(label: "hkjdf", initialCount: 2) { node { id } @@ -25,7 +25,7 @@ query selectionSetConflictInconsistentStreamUsage2Query { selection_set_conflict_inconsistent_stream_usage_2.graphql:7:11 6 │ ... on FriendsConnection { - 7 │ edges @stream(label: "hdijf", initial_count: 1) { + 7 │ edges @stream(label: "hdijf", initialCount: 1) { │ ^^^^^ 8 │ node { @@ -33,6 +33,6 @@ query selectionSetConflictInconsistentStreamUsage2Query { selection_set_conflict_inconsistent_stream_usage_2.graphql:13:9 12 │ } - 13 │ edges @stream(label: "hkjdf", initial_count: 2) { + 13 │ edges @stream(label: "hkjdf", initialCount: 2) { │ ^^^^^ 14 │ node { diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.graphql index e69ddcbf87db8..1042d77fa9bcf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_inconsistent_stream_usage_2.graphql @@ -4,13 +4,13 @@ query selectionSetConflictInconsistentStreamUsage2Query { ... on User { friends { ... on FriendsConnection { - edges @stream(label: "hdijf", initial_count: 1) { + edges @stream(label: "hdijf", initialCount: 1) { node { name } } } - edges @stream(label: "hkjdf", initial_count: 2) { + edges @stream(label: "hkjdf", initialCount: 2) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected index f69b6e967b75e..9330283b2f92e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected @@ -3,7 +3,7 @@ query selectionSetConflictStreamOnNodesOrEdgesQuery { me { ... on User { friends { - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } @@ -167,7 +167,7 @@ QUERY: query selectionSetConflictStreamOnNodesOrEdgesQuery { me { friends { - edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesQuery$stream$b", initial_count: 1) { + edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesQuery$stream$b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.graphql index db0148987fcb8..e8902568b4a2d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.graphql @@ -2,7 +2,7 @@ query selectionSetConflictStreamOnNodesOrEdgesQuery { me { ... on User { friends { - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected index 42539774dc1e4..cb46571fafe82 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected @@ -9,7 +9,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery { hasNextPage } } - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } @@ -212,7 +212,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery { pageInfo { hasNextPage } - edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery$stream$b", initial_count: 1) { + edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery$stream$b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.graphql index 5622f4c32e72a..2b932153c1396 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.graphql @@ -8,7 +8,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery { hasNextPage } } - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected index 076b93742a360..36ae58f1a4df5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected @@ -9,7 +9,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoA hasNextPage } } - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } @@ -212,7 +212,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoA pagination: pageInfo { hasNextPage } - edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoAliasQuery$stream$b", initial_count: 1) { + edges @stream(label: "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoAliasQuery$stream$b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.graphql index c956d3b86fd3b..52fb05a8580c7 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.graphql @@ -8,7 +8,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoA hasNextPage } } - edges @stream(label: "b", initial_count: 1) { + edges @stream(label: "b", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected index ca94f2998cec2..31724edcdf7e0 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected @@ -3,7 +3,7 @@ query selectionSetConflictValidStreamQuery { me { ... on User { friends { - edges @stream(label: "jkdhg", initial_count: 0) { + edges @stream(label: "jkdhg", initialCount: 0) { node { id } @@ -167,7 +167,7 @@ QUERY: query selectionSetConflictValidStreamQuery { me { friends { - edges @stream(label: "selectionSetConflictValidStreamQuery$stream$jkdhg", initial_count: 0) { + edges @stream(label: "selectionSetConflictValidStreamQuery$stream$jkdhg", initialCount: 0) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.graphql index 414122e99e447..b1f17e144839e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.graphql @@ -2,7 +2,7 @@ query selectionSetConflictValidStreamQuery { me { ... on User { friends { - edges @stream(label: "jkdhg", initial_count: 0) { + edges @stream(label: "jkdhg", initialCount: 0) { node { id } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected index fceaef53b576a..c8447ca01c5a2 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected @@ -7,7 +7,7 @@ query streamAndHandleQuery { fragment streamAndHandleFragment on Feedback { actors - @stream(label: "actors", if: true, initial_count: 0) + @stream(label: "actors", if: true, initialCount: 0) @__clientField(handle: "actors_handler") { name @__clientField(handle: "name_handler") } @@ -169,7 +169,7 @@ query streamAndHandleQuery { } fragment streamAndHandleFragment on Feedback { - actors @stream(label: "streamAndHandleFragment$stream$actors", if: true, initial_count: 0) { + actors @stream(label: "streamAndHandleFragment$stream$actors", if: true, initialCount: 0) { __typename name id diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.graphql index 0be41830dbe54..010ca4457f0cf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.graphql @@ -6,7 +6,7 @@ query streamAndHandleQuery { fragment streamAndHandleFragment on Feedback { actors - @stream(label: "actors", if: true, initial_count: 0) + @stream(label: "actors", if: true, initialCount: 0) @__clientField(handle: "actors_handler") { name @__clientField(handle: "name_handler") } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected index c54f3d9efe97a..d948fbb5b6d1a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected @@ -5,9 +5,9 @@ query streamConnectionConditionalQuery($id: ID!, $cond: Boolean!) { ... on Story { comments(first: 10) @stream_connection( - use_customized_batch: $cond + useCustomizedBatch: $cond if: $cond - initial_count: 0 + initialCount: 0 key: "NodeQuery_comments" ) { edges { @@ -359,7 +359,7 @@ query streamConnectionConditionalQuery( id ... on Story { comments(first: 10) { - edges @stream(label: "streamConnectionConditionalQuery$stream$NodeQuery_comments", if: $cond, initial_count: 0, use_customized_batch: $cond) { + edges @stream(label: "streamConnectionConditionalQuery$stream$NodeQuery_comments", if: $cond, initialCount: 0, useCustomizedBatch: $cond) { node { __typename id diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.graphql index c73f0bc8e57eb..bf937a7fed149 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.graphql @@ -4,9 +4,9 @@ query streamConnectionConditionalQuery($id: ID!, $cond: Boolean!) { ... on Story { comments(first: 10) @stream_connection( - use_customized_batch: $cond + useCustomizedBatch: $cond if: $cond - initial_count: 0 + initialCount: 0 key: "NodeQuery_comments" ) { edges { diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected index e24b01c449b7a..d59b8695de0e5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected @@ -4,7 +4,7 @@ query streamConnection_NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { @@ -399,7 +399,7 @@ query streamConnection_NodeQuery( id ... on Story { comments(first: 10) { - edges @stream(label: "streamConnection_NodeQuery$stream$NodeQuery_comments", initial_count: 0) { + edges @stream(label: "streamConnection_NodeQuery$stream$NodeQuery_comments", initialCount: 0) { node { actor { __typename diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.graphql index f572f9abf5957..73bd62e0133ea 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.graphql @@ -3,7 +3,7 @@ query streamConnection_NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected index 50b14943b9484..2df04cbcbaf1d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected @@ -19,27 +19,27 @@ fragment streamIfArgumentsFragment on User setToFalse: { type: "Boolean", defaultValue: false } ) { withDefaultTrue: tasks - @stream(initial_count: 1, if: $defaultsToTrue, label: "defaultTrue") { + @stream(initialCount: 1, if: $defaultsToTrue, label: "defaultTrue") { __typename } withDefaultFalse: tasks - @stream(initial_count: 1, if: $defaultsToFalse, label: "defaultFalse") { + @stream(initialCount: 1, if: $defaultsToFalse, label: "defaultFalse") { __typename } setToTrue: tasks - @stream(initial_count: 1, if: $setToTrue, label: "setToTrue") { + @stream(initialCount: 1, if: $setToTrue, label: "setToTrue") { __typename } setToFalse: tasks - @stream(initial_count: 1, if: $setToFalse, label: "setToFalse") { + @stream(initialCount: 1, if: $setToFalse, label: "setToFalse") { __typename } withValueFromQueryDirectly: tasks - @stream(initial_count: 1, if: $valueFromQuery, label: "fromQueryDirectly") { + @stream(initialCount: 1, if: $valueFromQuery, label: "fromQueryDirectly") { __typename } withValueFromQueryViaArgDef: tasks - @stream(initial_count: 1, if: $setToValue, label: "fromQueryViaArg") { + @stream(initialCount: 1, if: $setToValue, label: "fromQueryViaArg") { __typename } } @@ -282,22 +282,22 @@ query streamIfArgumentsQuery( } fragment streamIfArgumentsFragment_39RTKZ on User { - withDefaultTrue: tasks @stream(label: "streamIfArgumentsFragment$stream$defaultTrue", if: true, initial_count: 1) { + withDefaultTrue: tasks @stream(label: "streamIfArgumentsFragment$stream$defaultTrue", if: true, initialCount: 1) { __typename } withDefaultFalse: tasks { __typename } - setToTrue: tasks @stream(label: "streamIfArgumentsFragment$stream$setToTrue", if: true, initial_count: 1) { + setToTrue: tasks @stream(label: "streamIfArgumentsFragment$stream$setToTrue", if: true, initialCount: 1) { __typename } setToFalse: tasks { __typename } - withValueFromQueryDirectly: tasks @stream(label: "streamIfArgumentsFragment$stream$fromQueryDirectly", if: $valueFromQuery, initial_count: 1) { + withValueFromQueryDirectly: tasks @stream(label: "streamIfArgumentsFragment$stream$fromQueryDirectly", if: $valueFromQuery, initialCount: 1) { __typename } - withValueFromQueryViaArgDef: tasks @stream(label: "streamIfArgumentsFragment$stream$fromQueryViaArg", if: $valueFromQuery, initial_count: 1) { + withValueFromQueryViaArgDef: tasks @stream(label: "streamIfArgumentsFragment$stream$fromQueryViaArg", if: $valueFromQuery, initialCount: 1) { __typename } } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.graphql index 0ab8458f480f9..ffc1e2ae9280a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.graphql @@ -18,27 +18,27 @@ fragment streamIfArgumentsFragment on User setToFalse: { type: "Boolean", defaultValue: false } ) { withDefaultTrue: tasks - @stream(initial_count: 1, if: $defaultsToTrue, label: "defaultTrue") { + @stream(initialCount: 1, if: $defaultsToTrue, label: "defaultTrue") { __typename } withDefaultFalse: tasks - @stream(initial_count: 1, if: $defaultsToFalse, label: "defaultFalse") { + @stream(initialCount: 1, if: $defaultsToFalse, label: "defaultFalse") { __typename } setToTrue: tasks - @stream(initial_count: 1, if: $setToTrue, label: "setToTrue") { + @stream(initialCount: 1, if: $setToTrue, label: "setToTrue") { __typename } setToFalse: tasks - @stream(initial_count: 1, if: $setToFalse, label: "setToFalse") { + @stream(initialCount: 1, if: $setToFalse, label: "setToFalse") { __typename } withValueFromQueryDirectly: tasks - @stream(initial_count: 1, if: $valueFromQuery, label: "fromQueryDirectly") { + @stream(initialCount: 1, if: $valueFromQuery, label: "fromQueryDirectly") { __typename } withValueFromQueryViaArgDef: tasks - @stream(initial_count: 1, if: $setToValue, label: "fromQueryViaArg") { + @stream(initialCount: 1, if: $setToValue, label: "fromQueryViaArg") { __typename } } diff --git a/compiler/crates/relay-lsp/src/completion/test.rs b/compiler/crates/relay-lsp/src/completion/test.rs index b6cc94ab817d0..8101b28bc2045 100644 --- a/compiler/crates/relay-lsp/src/completion/test.rs +++ b/compiler/crates/relay-lsp/src/completion/test.rs @@ -249,7 +249,7 @@ fn empty_argument_list() { ); assert_labels( items.unwrap(), - vec!["label", "initial_count", "if", "use_customized_batch"], + vec!["label", "initialCount", "if", "useCustomizedBatch"], ); } @@ -267,7 +267,7 @@ fn argument_name_without_value() { ); assert_labels( items.unwrap(), - vec!["label", "initial_count", "if", "use_customized_batch"], + vec!["label", "initialCount", "if", "useCustomizedBatch"], ); } @@ -288,7 +288,7 @@ fn argument_name_with_existing_name() { ); assert_labels( items.unwrap(), - vec!["label", "initial_count", "use_customized_batch"], + vec!["label", "initialCount", "useCustomizedBatch"], ); } diff --git a/compiler/crates/relay-schema/src/relay-extensions.graphql b/compiler/crates/relay-schema/src/relay-extensions.graphql index 658fa94d2c75c..c8ab6ff4775fb 100644 --- a/compiler/crates/relay-schema/src/relay-extensions.graphql +++ b/compiler/crates/relay-schema/src/relay-extensions.graphql @@ -128,9 +128,9 @@ directive @stream_connection( filters: [String] handler: String label: String - initial_count: Int! + initialCount: Int! if: Boolean = true - use_customized_batch: Boolean = false + useCustomizedBatch: Boolean = false dynamicKey_UNSTABLE: String ) on FIELD diff --git a/compiler/crates/relay-test-schema/src/testschema.graphql b/compiler/crates/relay-test-schema/src/testschema.graphql index 841eb1c0418e5..403920e517a95 100644 --- a/compiler/crates/relay-test-schema/src/testschema.graphql +++ b/compiler/crates/relay-test-schema/src/testschema.graphql @@ -25,9 +25,9 @@ directive @defer( directive @stream( label: String! - initial_count: Int! + initialCount: Int! if: Boolean = true - use_customized_batch: Boolean = false + useCustomizedBatch: Boolean = false ) on FIELD directive @fetchable(field_name: String!) on OBJECT diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected index 4b424a088dd26..0061be156e355 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.expected @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1) { + actors @stream(initialCount: 1) { name } } @@ -24,7 +24,7 @@ query QueryWithFragmentWithStream( fragment FeedbackFragment on Feedback { id - actors @stream(label: "FeedbackFragment$stream$actors", initial_count: 1) { + actors @stream(label: "FeedbackFragment$stream$actors", initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql index 23fa23b3e8e43..739db7de64c6a 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-default-label.graphql @@ -7,7 +7,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1) { + actors @stream(initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.expected index 37c40c910a975..7fe5f5834cdda 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.expected @@ -9,10 +9,10 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "actors") { + actors @stream(initialCount: 1, label: "actors") { name } - otherActors: actors @stream(initial_count: 1, label: "actors") { + otherActors: actors @stream(initialCount: 1, label: "actors") { # invalid: duplicate label name } @@ -22,7 +22,7 @@ fragment FeedbackFragment on Feedback { fragment-with-stream-duplicate-label.invalid.graphql:11:10 10 │ id - 11 │ actors @stream(initial_count: 1, label: "actors") { + 11 │ actors @stream(initialCount: 1, label: "actors") { │ ^^^^^^^ 12 │ name @@ -30,6 +30,6 @@ fragment FeedbackFragment on Feedback { fragment-with-stream-duplicate-label.invalid.graphql:14:23 13 │ } - 14 │ otherActors: actors @stream(initial_count: 1, label: "actors") { + 14 │ otherActors: actors @stream(initialCount: 1, label: "actors") { │ ^^^^^^^ 15 │ # invalid: duplicate label diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.graphql index 6f0d3488b2cb9..a05f524d1de46 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-duplicate-label.invalid.graphql @@ -8,10 +8,10 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "actors") { + actors @stream(initialCount: 1, label: "actors") { name } - otherActors: actors @stream(initial_count: 1, label: "actors") { + otherActors: actors @stream(initialCount: 1, label: "actors") { # invalid: duplicate label name } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.expected index 07a4e1cfba531..d3db2ff831380 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.expected @@ -9,7 +9,7 @@ query QueryWithFragmentWithStream($id: ID!, $enableStream: Boolean) { fragment FeedbackFragment on Feedback { id actors - @stream(initial_count: 1, label: "StreamedActorsLabel", if: $enableStream) { + @stream(initialCount: 1, label: "StreamedActorsLabel", if: $enableStream) { name } } @@ -26,7 +26,7 @@ query QueryWithFragmentWithStream( fragment FeedbackFragment on Feedback { id - actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", if: $enableStream, initial_count: 1) { + actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", if: $enableStream, initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.graphql index 20ae2c07f0bcf..266ebda30663d 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-if-arg.graphql @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!, $enableStream: Boolean) { fragment FeedbackFragment on Feedback { id actors - @stream(initial_count: 1, label: "StreamedActorsLabel", if: $enableStream) { + @stream(initialCount: 1, label: "StreamedActorsLabel", if: $enableStream) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.expected index 4c128c9f3f139..1f8aade373550 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.expected @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!, $initialCount: Int) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: $initialCount, label: "StreamedActorsLabel") { + actors @stream(initialCount: $initialCount, label: "StreamedActorsLabel") { name } } @@ -25,7 +25,7 @@ query QueryWithFragmentWithStream( fragment FeedbackFragment on Feedback { id - actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", initial_count: $initialCount) { + actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", initialCount: $initialCount) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.graphql index 9e689d6875cb5..338a8274a7ed7 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-initial-count-arg.graphql @@ -7,7 +7,7 @@ query QueryWithFragmentWithStream($id: ID!, $initialCount: Int) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: $initialCount, label: "StreamedActorsLabel") { + actors @stream(initialCount: $initialCount, label: "StreamedActorsLabel") { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-missing-initial-count-arg.invalid.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-missing-initial-count-arg.invalid.expected index e8b5acc305d89..9e66097730c87 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-missing-initial-count-arg.invalid.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-missing-initial-count-arg.invalid.expected @@ -15,7 +15,7 @@ fragment FeedbackFragment on Feedback { } } ==================================== ERROR ==================================== -✖︎ Missing required argument: `initial_count` +✖︎ Missing required argument: `initialCount` fragment-with-stream-missing-initial-count-arg.invalid.graphql:11:11 10 │ id diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.expected index fe338e6a8ba90..d1b7e4edc6d6d 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.expected @@ -9,13 +9,13 @@ query QueryWithFragmentWithStream($id: ID!, $label: String!) { fragment UserFragment on User { id - name @stream(initial_count: 1, label: $label) + name @stream(initialCount: 1, label: $label) } ==================================== ERROR ==================================== ✖︎ Invalid use of @stream on scalar field 'name' fragment-with-stream-on-scalar-field.invalid.graphql:11:8 10 │ id - 11 │ name @stream(initial_count: 1, label: $label) + 11 │ name @stream(initialCount: 1, label: $label) │ ^^^^^^^ 12 │ } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.graphql index 5ee3aa3cc33fc..907553dc9f516 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-on-scalar-field.invalid.graphql @@ -8,5 +8,5 @@ query QueryWithFragmentWithStream($id: ID!, $label: String!) { fragment UserFragment on User { id - name @stream(initial_count: 1, label: $label) + name @stream(initialCount: 1, label: $label) } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.expected index fdcdc1f94f927..18a1d123489f1 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.expected @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel", if: false) { + actors @stream(initialCount: 1, label: "StreamedActorsLabel", if: false) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.graphql index cc529d908f6db..9fb1e0e3212d6 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-statically-disabled.graphql @@ -7,7 +7,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel", if: false) { + actors @stream(initialCount: 1, label: "StreamedActorsLabel", if: false) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.expected index e63411c2c5e3f..f7e18f6a86691 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.expected @@ -11,9 +11,9 @@ fragment FeedbackFragment on Feedback { actors @stream( if: true - initial_count: 1 + initialCount: 1 label: "StreamedActorsLabel" - use_customized_batch: $useCustomizedBatch + useCustomizedBatch: $useCustomizedBatch ) { name } @@ -31,7 +31,7 @@ query QueryWithFragmentWithStream( fragment FeedbackFragment on Feedback { id - actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", if: true, initial_count: 1, use_customized_batch: $useCustomizedBatch) { + actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", if: true, initialCount: 1, useCustomizedBatch: $useCustomizedBatch) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.graphql index 5c0f7c15b697e..b252e2ba8dfbe 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-use_customized_batch-arg.graphql @@ -10,9 +10,9 @@ fragment FeedbackFragment on Feedback { actors @stream( if: true - initial_count: 1 + initialCount: 1 label: "StreamedActorsLabel" - use_customized_batch: $useCustomizedBatch + useCustomizedBatch: $useCustomizedBatch ) { name } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.expected index 7c03a46f98759..de2cc3bf22754 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.expected @@ -9,7 +9,7 @@ query QueryWithFragmentWithStream($id: ID!, $label: String!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: $label) { + actors @stream(initialCount: 1, label: $label) { name } } @@ -18,6 +18,6 @@ fragment FeedbackFragment on Feedback { fragment-with-stream-variable-label.invalid.graphql:11:10 10 │ id - 11 │ actors @stream(initial_count: 1, label: $label) { + 11 │ actors @stream(initialCount: 1, label: $label) { │ ^^^^^^^ 12 │ name diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.graphql index 0877996f4bd7b..9d6f748019d5d 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream-variable-label.invalid.graphql @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!, $label: String!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: $label) { + actors @stream(initialCount: 1, label: $label) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.expected index 61c9e8b532e49..2c4055bc32bc2 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.expected @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } @@ -24,7 +24,7 @@ query QueryWithFragmentWithStream( fragment FeedbackFragment on Feedback { id - actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", initial_count: 1) { + actors @stream(label: "FeedbackFragment$stream$StreamedActorsLabel", initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.graphql index 8891fba1b9c8d..ceb87c5700edc 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/fragment-with-stream.graphql @@ -7,7 +7,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.expected index 94b95aa77dd22..99d8ff40f48c6 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.expected @@ -2,7 +2,7 @@ query QueryWithStream($id: ID!) { node(id: $id) { ... on Feedback { - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } @@ -14,7 +14,7 @@ query QueryWithStream( ) { node(id: $id) { ... on Feedback { - actors @stream(label: "QueryWithStream$stream$StreamedActorsLabel", initial_count: 1) { + actors @stream(label: "QueryWithStream$stream$StreamedActorsLabel", initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.graphql index 2b7d7173527d1..cb244a79f1267 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/query-with-stream.graphql @@ -1,7 +1,7 @@ query QueryWithStream($id: ID!) { node(id: $id) { ... on Feedback { - actors @stream(initial_count: 1, label: "StreamedActorsLabel") { + actors @stream(initialCount: 1, label: "StreamedActorsLabel") { name } } diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.expected b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.expected index 4d392cfd59708..e5a18b3a14b11 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.expected +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.expected @@ -3,7 +3,7 @@ fragment FeedbackFragment on Feedback { id - actor @stream(initial_count: 1) { + actor @stream(initialCount: 1) { name } } @@ -12,6 +12,6 @@ fragment FeedbackFragment on Feedback { stream.invalid.graphql:5:9 4 │ id - 5 │ actor @stream(initial_count: 1) { + 5 │ actor @stream(initialCount: 1) { │ ^^^^^^^ 6 │ name diff --git a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.graphql b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.graphql index b8e9a950fe4fc..5c640c998741a 100644 --- a/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/defer_stream/fixtures/stream.invalid.graphql @@ -2,7 +2,7 @@ fragment FeedbackFragment on Feedback { id - actor @stream(initial_count: 1) { + actor @stream(initialCount: 1) { name } } diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.expected index ddce6f7a336e3..2541e5cf73437 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.expected @@ -9,7 +9,7 @@ fragment PaginationFragment on Node ... on User { name friends(after: $cursor, first: $count) - @stream_connection(key: "PaginationFragment_friends", initial_count: 1) { + @stream_connection(key: "PaginationFragment_friends", initialCount: 1) { edges { node { id @@ -73,7 +73,7 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment ... on User { name friends(after: $cursor, first: $count) @__clientField(key: "PaginationFragment_friends", handle: "connection", filters: null, dynamicKey_UNSTABLE: null) { - edges @stream(label: "PaginationFragment_friends", initial_count: 1) { + edges @stream(label: "PaginationFragment_friends", initialCount: 1) { node { id } diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.graphql b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.graphql index e6fc5872ef07d..a4cf016c7d77a 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.graphql +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-with-stream.graphql @@ -8,7 +8,7 @@ fragment PaginationFragment on Node ... on User { name friends(after: $cursor, first: $count) - @stream_connection(key: "PaginationFragment_friends", initial_count: 1) { + @stream_connection(key: "PaginationFragment_friends", initialCount: 1) { edges { node { id diff --git a/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.expected b/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.expected index 7cbd27d973980..3b954212f932a 100644 --- a/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.expected +++ b/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.expected @@ -54,7 +54,7 @@ query StreamQuerry($RELAY_INCREMENTAL_DELIVERY: Boolean!) { node(id: 4) { id ... on Feedback { - actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initial_count: 3) { + actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initialCount: 3) { name } } @@ -78,7 +78,7 @@ query StreamQuerry( node(id: 4) { id ... on Feedback { - actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initial_count: 3) { + actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initialCount: 3) { name } } diff --git a/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.graphql b/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.graphql index 16577bd68b6dd..19ad1dec6ad0e 100644 --- a/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.graphql +++ b/compiler/crates/relay-transforms/tests/skip_unused_variables/fixtures/kitchen-sink.graphql @@ -53,7 +53,7 @@ query StreamQuerry($RELAY_INCREMENTAL_DELIVERY: Boolean!) { node(id: 4) { id ... on Feedback { - actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initial_count: 3) { + actors @stream(if: $RELAY_INCREMENTAL_DELIVERY, label: "foo", initialCount: 3) { name } } diff --git a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.expected b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.expected index 96ceba0afdd37..12cc24c847dbf 100644 --- a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.expected +++ b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.expected @@ -4,7 +4,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { @@ -47,7 +47,7 @@ query NodeQuery( id ... on Story { comments(first: 10) @__clientField(key: "NodeQuery_comments", handle: "connection", filters: null, dynamicKey_UNSTABLE: null) { - edges @stream(label: "NodeQuery_comments", initial_count: 0) { + edges @stream(label: "NodeQuery_comments", initialCount: 0) { node { actor { name diff --git a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.graphql b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.graphql index e688708be3259..14406dcf91753 100644 --- a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.graphql +++ b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection-no-label.graphql @@ -3,7 +3,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.expected b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.expected index e279dc6f8b7e3..eee7c86f07878 100644 --- a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.expected +++ b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.expected @@ -6,7 +6,7 @@ query NodeQuery($id: ID!) { comments(first: 10) @stream_connection( key: "NodeQuery_comments" - initial_count: 0 + initialCount: 0 label: "comments" ) { edges { @@ -51,7 +51,7 @@ query NodeQuery( id ... on Story { comments(first: 10) @__clientField(key: "NodeQuery_comments", handle: "connection", filters: null, dynamicKey_UNSTABLE: null) { - edges @stream(label: "NodeQuery_comments", initial_count: 0) { + edges @stream(label: "NodeQuery_comments", initialCount: 0) { node { actor { name diff --git a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.graphql b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.graphql index 85b2df8960abc..a635f314c224d 100644 --- a/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.graphql +++ b/compiler/crates/relay-transforms/tests/transform_connections/fixtures/stream-connection.graphql @@ -5,7 +5,7 @@ query NodeQuery($id: ID!) { comments(first: 10) @stream_connection( key: "NodeQuery_comments" - initial_count: 0 + initialCount: 0 label: "comments" ) { edges { diff --git a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.expected b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.expected index 2568aa2448730..b89be4b64e55f 100644 --- a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.expected +++ b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.expected @@ -5,7 +5,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { commentEdges: edges { node { actor { @@ -24,7 +24,7 @@ query NodeQuery($id: ID!) { ✖︎ @stream_connection does not support aliasing the 'edges' field. stream-connection-with-aliased-edges.invalid.graphql:8:23 - 7 │ @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + 7 │ @stream_connection(key: "NodeQuery_comments", initialCount: 0) { 8 │ commentEdges: edges { │ ^^^^^ 9 │ node { diff --git a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.graphql b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.graphql index d0aab1efddabc..fd1e797aae68e 100644 --- a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-edges.invalid.graphql @@ -4,7 +4,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { commentEdges: edges { node { actor { diff --git a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.expected b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.expected index 0e5eb11245c42..e2bc851831b1d 100644 --- a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.expected +++ b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.expected @@ -5,7 +5,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.graphql b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.graphql index 07452848d1db5..9252ecd1319c7 100644 --- a/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/validate_connections/fixtures/stream-connection-with-aliased-page-info.invalid.graphql @@ -4,7 +4,7 @@ query NodeQuery($id: ID!) { id ... on Story { comments(first: 10) - @stream_connection(key: "NodeQuery_comments", initial_count: 0) { + @stream_connection(key: "NodeQuery_comments", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.expected b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.expected index 71e9b5d1152c7..f581b57be4a83 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.expected +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.expected @@ -11,7 +11,7 @@ fragment FeedbackFragment on Feedback { id foo { bar { - users @stream(initial_count: 1, label: "StreamedActorsLabel") { + users @stream(initialCount: 1, label: "StreamedActorsLabel") { id name } @@ -36,7 +36,7 @@ type Bar { fragment-with-stream-child-of-client.invalid.graphql:13:13 12 │ bar { - 13 │ users @stream(initial_count: 1, label: "StreamedActorsLabel") { + 13 │ users @stream(initialCount: 1, label: "StreamedActorsLabel") { │ ^^^^^^^ 14 │ id diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.graphql b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.graphql index 49880cbacd8cc..ce5213ab3d448 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-child-of-client.invalid.graphql @@ -10,7 +10,7 @@ fragment FeedbackFragment on Feedback { id foo { bar { - users @stream(initial_count: 1, label: "StreamedActorsLabel") { + users @stream(initialCount: 1, label: "StreamedActorsLabel") { id name } diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.expected b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.expected index 0a8232ffb6cbd..f15daf0a8c3e7 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.expected +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.expected @@ -9,7 +9,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - foos @stream(initial_count: 1, label: "StreamedActorsLabel") { + foos @stream(initialCount: 1, label: "StreamedActorsLabel") { bar } } @@ -28,7 +28,7 @@ type Foo { fragment-with-stream-on-client.invalid.graphql:11:8 10 │ id - 11 │ foos @stream(initial_count: 1, label: "StreamedActorsLabel") { + 11 │ foos @stream(initialCount: 1, label: "StreamedActorsLabel") { │ ^^^^^^^ 12 │ bar @@ -36,6 +36,6 @@ type Foo { fragment-with-stream-on-client.invalid.graphql:11:3 10 │ id - 11 │ foos @stream(initial_count: 1, label: "StreamedActorsLabel") { + 11 │ foos @stream(initialCount: 1, label: "StreamedActorsLabel") { │ ^^^^ 12 │ bar diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.graphql b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.graphql index 045192ee83bfa..5a45d44cf6645 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/fragment-with-stream-on-client.invalid.graphql @@ -8,7 +8,7 @@ query QueryWithFragmentWithStream($id: ID!) { fragment FeedbackFragment on Feedback { id - foos @stream(initial_count: 1, label: "StreamedActorsLabel") { + foos @stream(initialCount: 1, label: "StreamedActorsLabel") { bar } } diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.expected b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.expected index 960dcba4a0f30..ef9e5276bbcb4 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.expected +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.expected @@ -7,7 +7,7 @@ query NodeQuery($id: ID!) { clientComments(first: 10) @stream_connection( key: "NodeQuery_clientComments" - initial_count: 0 + initialCount: 0 label: "comments" ) { edges { diff --git a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.graphql b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.graphql index 965cb04e82ca9..7e675cbd21c30 100644 --- a/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/validate_server_only_directives/fixtures/stream-connection-on-client.invalid.graphql @@ -6,7 +6,7 @@ query NodeQuery($id: ID!) { clientComments(first: 10) @stream_connection( key: "NodeQuery_clientComments" - initial_count: 0 + initialCount: 0 label: "comments" ) { edges { diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.expected b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.expected index 4067ea5553524..260df907d798b 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.expected +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.expected @@ -4,7 +4,7 @@ query TestDefer @raw_response_type { ... on User { name friends(first: 10) - @stream_connection(key: "TestDefer_friends", initial_count: 0) { + @stream_connection(key: "TestDefer_friends", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.graphql b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.graphql index d318b27e3e3f0..88832391bf57e 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.graphql +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream-connection.graphql @@ -3,7 +3,7 @@ query TestDefer @raw_response_type { ... on User { name friends(first: 10) - @stream_connection(key: "TestDefer_friends", initial_count: 0) { + @stream_connection(key: "TestDefer_friends", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.expected b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.expected index c1146f1c14df1..6ed3e0c66c620 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.expected +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.expected @@ -6,7 +6,7 @@ query TestStream @raw_response_type { friends(first: 10) @stream_connection( key: "PaginationFragment_friends" - initial_count: 1 + initialCount: 1 ) { edges { node { diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.graphql b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.graphql index 4d2caacc587ba..0f5e1b4d9b8c8 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.graphql +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-with-stream.graphql @@ -5,7 +5,7 @@ query TestStream @raw_response_type { friends(first: 10) @stream_connection( key: "PaginationFragment_friends" - initial_count: 1 + initialCount: 1 ) { edges { node { diff --git a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.expected b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.expected index 35ca87a7a8c49..9390fcf2a34fb 100644 --- a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.expected +++ b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.expected @@ -4,7 +4,7 @@ query TestDefer @raw_response_type { ... on User { name friends(first: 10) - @stream_connection(key: "TestDefer_friends", initial_count: 0) { + @stream_connection(key: "TestDefer_friends", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.graphql b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.graphql index d318b27e3e3f0..88832391bf57e 100644 --- a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.graphql +++ b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream-connection.graphql @@ -3,7 +3,7 @@ query TestDefer @raw_response_type { ... on User { name friends(first: 10) - @stream_connection(key: "TestDefer_friends", initial_count: 0) { + @stream_connection(key: "TestDefer_friends", initialCount: 0) { edges { node { actor { diff --git a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.expected b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.expected index ddae6797f8bcb..6318fe817e227 100644 --- a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.expected +++ b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.expected @@ -6,7 +6,7 @@ query TestStream @raw_response_type { friends(first: 10) @stream_connection( key: "PaginationFragment_friends" - initial_count: 1 + initialCount: 1 ) { edges { node { diff --git a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.graphql b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.graphql index 4d2caacc587ba..0f5e1b4d9b8c8 100644 --- a/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.graphql +++ b/compiler/crates/relay-typegen/tests/generate_typescript/fixtures/query-with-stream.graphql @@ -5,7 +5,7 @@ query TestStream @raw_response_type { friends(first: 10) @stream_connection( key: "PaginationFragment_friends" - initial_count: 1 + initialCount: 1 ) { edges { node {