From 04044ba709a1ecdb25ce496e2fcc534dfb6a0917 Mon Sep 17 00:00:00 2001 From: Andrey Lunyov Date: Wed, 30 Aug 2023 19:51:20 -0700 Subject: [PATCH] Refactoring of the type generation/type assertion for provided variables to support internal use case with shared artifacts. (#4429) Summary: The main goal is to separate `codegen` and `typegen` for provided variables. Currently, there is an implicit dependency between `typegen` and `codegen` where were generating code for provided variables. The `codegen` expects the local type for provided variables to always be generated as `type ProvidedVariables` so we cam enable inline type assertion as ``` var providedVariables: ProvidedVariables = { ... object with provided variables ... } ``` However, this approach doesn't work well with the `skip_types` option, where the `typegen` block for an operation is completely skipped (without the `skip_types` we would generate a type for `ProvidedVariables` in it), but the type inline assertion still remains in the `relay-codegen`. The proposed solution is to make this dependency explicit by passing the generated provided variables object to the method responsible for generating types. Additionally, the type assertion should only be generated in the `relay-typegen`. --- Pull Request resolved: https://github.com/facebook/relay/pull/4429 Test Plan: TBD Differential Revision: D48801823 Pulled By: alunyov fbshipit-source-id: 556098bb2ad2457d451b5e77bc38fdb568df2d08 --- .../crates/relay-codegen/src/build_ast.rs | 19 +----- .../crates/relay-codegen/src/constants.rs | 2 - compiler/crates/relay-codegen/src/lib.rs | 1 + compiler/crates/relay-codegen/src/printer.rs | 28 ++++++--- .../relay-compiler-playground/src/lib.rs | 2 + .../src/artifact_content/content.rs | 59 ++++++++----------- compiler/crates/relay-typegen/src/flow.rs | 6 +- .../crates/relay-typegen/src/javascript.rs | 2 +- compiler/crates/relay-typegen/src/lib.rs | 3 +- .../crates/relay-typegen/src/typescript.rs | 6 +- compiler/crates/relay-typegen/src/write.rs | 16 +++-- compiler/crates/relay-typegen/src/writer.rs | 2 +- .../query-mixed-provided-variables.expected | 14 +++-- .../query-only-provided-variables.expected | 13 ++-- ...-provided-variables-custom-scalar.expected | 6 +- .../relay-typegen/tests/generate_flow/mod.rs | 4 +- .../tests/generate_flow_with_custom_id/mod.rs | 2 + .../tests/generate_typescript/mod.rs | 2 + ...sTestWithProvidedVariablesQuery.graphql.js | 16 ++--- ...DEPRECATEDTest_ProvidedVarQuery.graphql.js | 19 +++--- ...ueryProvidedVariablesTest_Query.graphql.js | 19 +++--- ...yProvidedVariablesTest_badQuery.graphql.js | 16 ++--- ...eTest_UserArgManyFragmentsQuery.graphql.js | 19 +++--- ...Test_UserArgSingleFragmentQuery.graphql.js | 16 ++--- ...yResponseNormalizerTest_pvQuery.graphql.js | 19 +++--- ...withProvidedVariablesTest1Query.graphql.js | 16 ++--- ...withProvidedVariablesTest2Query.graphql.js | 16 ++--- ...withProvidedVariablesTest3Query.graphql.js | 19 +++--- ...withProvidedVariablesTest4Query.graphql.js | 19 +++--- ...withProvidedVariablesTest5Query.graphql.js | 19 +++--- ...withProvidedVariablesTest6Query.graphql.js | 16 ++--- 31 files changed, 220 insertions(+), 196 deletions(-) diff --git a/compiler/crates/relay-codegen/src/build_ast.rs b/compiler/crates/relay-codegen/src/build_ast.rs index b3b21880bdb68..54d3ca8471c16 100644 --- a/compiler/crates/relay-codegen/src/build_ast.rs +++ b/compiler/crates/relay-codegen/src/build_ast.rs @@ -75,14 +75,12 @@ use crate::ast::QueryID; use crate::ast::RequestParameters; use crate::constants::CODEGEN_CONSTANTS; use crate::object; -use crate::top_level_statements::TopLevelStatements; pub fn build_request_params_ast_key( schema: &SDLSchema, request_parameters: RequestParameters<'_>, ast_builder: &mut AstBuilder, operation: &OperationDefinition, - top_level_statements: &TopLevelStatements, definition_source_location: WithLocation, project_config: &ProjectConfig, ) -> AstKey { @@ -93,7 +91,7 @@ pub fn build_request_params_ast_key( project_config, definition_source_location, ); - operation_builder.build_request_parameters(operation, request_parameters, top_level_statements) + operation_builder.build_request_parameters(operation, request_parameters) } pub fn build_provided_variables( @@ -1837,7 +1835,6 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> { &mut self, operation: &OperationDefinition, request_parameters: RequestParameters<'_>, - top_level_statements: &TopLevelStatements, ) -> AstKey { let mut metadata_items: Vec = operation .directives @@ -1926,20 +1923,10 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> { }, }); - let provided_variables = if top_level_statements - .contains(CODEGEN_CONSTANTS.provided_variables_definition.lookup()) - { - Some(Primitive::Variable( - CODEGEN_CONSTANTS.provided_variables_definition, - )) - } else { - self.build_operation_provided_variables(operation) - .map(Primitive::Key) - }; - if let Some(value) = provided_variables { + if let Some(provided_variables) = self.build_operation_provided_variables(operation) { params_object.push(ObjectEntry { key: CODEGEN_CONSTANTS.provided_variables, - value, + value: Primitive::Key(provided_variables), }); } diff --git a/compiler/crates/relay-codegen/src/constants.rs b/compiler/crates/relay-codegen/src/constants.rs index f8e9ef6f95637..a7a7981040a7a 100644 --- a/compiler/crates/relay-codegen/src/constants.rs +++ b/compiler/crates/relay-codegen/src/constants.rs @@ -90,7 +90,6 @@ pub struct CodegenConstants { pub passing_value: StringKey, pub path: StringKey, pub plural: StringKey, - pub provided_variables_definition: StringKey, pub provided_variables: StringKey, pub provider: StringKey, pub query: StringKey, @@ -200,7 +199,6 @@ lazy_static! { passing_value: "passingValue".intern(), path: "path".intern(), plural: "plural".intern(), - provided_variables_definition: "providedVariablesDefinition".intern(), provided_variables: "providedVariables".intern(), provider: "provider".intern(), query: "query".intern(), diff --git a/compiler/crates/relay-codegen/src/lib.rs b/compiler/crates/relay-codegen/src/lib.rs index ebf9c4ebfc487..a5442758ae58f 100644 --- a/compiler/crates/relay-codegen/src/lib.rs +++ b/compiler/crates/relay-codegen/src/lib.rs @@ -28,6 +28,7 @@ pub use build_ast::CodegenVariant; pub use constants::CODEGEN_CONSTANTS; pub use printer::print_fragment; pub use printer::print_operation; +pub use printer::print_provided_variables; pub use printer::print_request; pub use printer::print_request_params; pub use printer::JSONPrinter; diff --git a/compiler/crates/relay-codegen/src/printer.rs b/compiler/crates/relay-codegen/src/printer.rs index 8a0bb5cd43a04..a822ccd144cff 100644 --- a/compiler/crates/relay-codegen/src/printer.rs +++ b/compiler/crates/relay-codegen/src/printer.rs @@ -94,14 +94,12 @@ pub fn print_request_params( ) -> String { let mut request_parameters = build_request_params(operation); request_parameters.id = query_id; - - let mut builder = AstBuilder::default(); + let mut builder: AstBuilder = AstBuilder::default(); let request_parameters_ast_key = build_request_params_ast_key( schema, request_parameters, &mut builder, operation, - top_level_statements, operation.name.map(|x| x.0), project_config, ); @@ -109,6 +107,24 @@ pub fn print_request_params( printer.print(request_parameters_ast_key, false) } +pub fn print_provided_variables( + schema: &SDLSchema, + operation: &OperationDefinition, + project_config: &ProjectConfig, +) -> Option { + let mut top_level_statements = Default::default(); + let mut builder = AstBuilder::default(); + let maybe_provided_variables = build_provided_variables( + schema, + &mut builder, + operation, + operation.name.map(|x| x.0), + project_config, + )?; + let printer = JSONPrinter::new(&builder, project_config, &mut top_level_statements); + Some(printer.print(maybe_provided_variables, false)) +} + pub struct Printer<'p> { project_config: &'p ProjectConfig, builder: AstBuilder, @@ -138,7 +154,7 @@ impl<'p> Printer<'p> { operation: &OperationDefinition, top_level_statements: &mut TopLevelStatements, ) -> Option { - let key = build_provided_variables( + let provided_variables = build_provided_variables( schema, &mut self.builder, operation, @@ -146,7 +162,7 @@ impl<'p> Printer<'p> { self.project_config, )?; let printer = JSONPrinter::new(&self.builder, self.project_config, top_level_statements); - Some(printer.print(key, self.dedupe)) + Some(printer.print(provided_variables, self.dedupe)) } pub fn print_updatable_query( @@ -189,7 +205,6 @@ impl<'p> Printer<'p> { request_parameters, &mut self.builder, operation, - top_level_statements, operation.name.map(|x| x.0), self.project_config, ); @@ -253,7 +268,6 @@ impl<'p> Printer<'p> { request_parameters, &mut self.builder, operation, - top_level_statements, operation.name.map(|x| x.0), self.project_config, ); diff --git a/compiler/crates/relay-compiler-playground/src/lib.rs b/compiler/crates/relay-compiler-playground/src/lib.rs index 9653b7003b5bf..8512231ebd66d 100644 --- a/compiler/crates/relay-compiler-playground/src/lib.rs +++ b/compiler/crates/relay-compiler-playground/src/lib.rs @@ -18,6 +18,7 @@ use graphql_text_printer::PrinterOptions; use intern::string_key::Intern; use relay_codegen::print_fragment; use relay_codegen::print_operation; +use relay_codegen::print_provided_variables; use relay_config::ProjectConfig; use relay_schema::build_schema_with_extensions; use relay_transforms::apply_transforms; @@ -254,6 +255,7 @@ pub fn parse_to_types_impl( &schema, &project_config, &fragment_locations, + print_provided_variables(&schema, normalization_operation, &project_config), ) })) .collect::>() diff --git a/compiler/crates/relay-compiler/src/artifact_content/content.rs b/compiler/crates/relay-compiler/src/artifact_content/content.rs index 9bfe7515c79e7..756c8d90e6b43 100644 --- a/compiler/crates/relay-compiler/src/artifact_content/content.rs +++ b/compiler/crates/relay-compiler/src/artifact_content/content.rs @@ -14,12 +14,9 @@ use common::NamedItem; use graphql_ir::FragmentDefinition; use graphql_ir::FragmentDefinitionName; use graphql_ir::OperationDefinition; -use intern::Lookup; use relay_codegen::build_request_params; use relay_codegen::Printer; use relay_codegen::QueryID; -use relay_codegen::TopLevelStatement; -use relay_codegen::CODEGEN_CONSTANTS; use relay_transforms::is_operation_preloadable; use relay_transforms::RelayDataDrivenDependencyMetadata; use relay_transforms::ASSIGNABLE_DIRECTIVE; @@ -111,6 +108,7 @@ pub fn generate_updatable_query( schema, project_config, fragment_locations, + None, // TODO: Add/investigrate support for provided variables in updatable queries ) )?; } @@ -129,7 +127,7 @@ pub fn generate_updatable_query( &project_config.typegen_config.language, &mut section, "node", - generated_types.ast_type, + Some(generated_types.ast_type), &request, )?; content_sections.push(ContentSection::Generic(section)); @@ -264,7 +262,14 @@ pub fn generate_operation( "relay-runtime", )?; + // -- Generate provided variables -- + let mut top_level_statements = Default::default(); if !skip_types { + let maybe_provided_variables = printer.print_provided_variables( + schema, + normalization_operation, + &mut top_level_statements, + ); write!( section, "{}", @@ -274,6 +279,7 @@ pub fn generate_operation( schema, project_config, fragment_locations, + maybe_provided_variables, ) )?; } @@ -286,25 +292,11 @@ pub fn generate_operation( // -- Begin Top Level Statements Section -- let mut section = GenericSection::default(); - let mut top_level_statements = Default::default(); - if let Some(provided_variables) = - printer.print_provided_variables(schema, normalization_operation, &mut top_level_statements) - { - let mut provided_variable_text = String::new(); - write_variable_value_with_type( - &project_config.typegen_config.language, - &mut provided_variable_text, - CODEGEN_CONSTANTS.provided_variables_definition.lookup(), - relay_typegen::PROVIDED_VARIABLE_TYPE, - &provided_variables, - ) - .unwrap(); - top_level_statements.insert( - CODEGEN_CONSTANTS.provided_variables_definition.to_string(), - TopLevelStatement::VariableDefinition(provided_variable_text), - ); - } + write!(section, "{}", &top_level_statements)?; + content_sections.push(ContentSection::Generic(section)); + // -- End Top Level Statements Section -- + // -- Begin Query Node Section -- let request = printer.print_request( schema, normalization_operation, @@ -313,17 +305,12 @@ pub fn generate_operation( &mut top_level_statements, ); - write!(section, "{}", &top_level_statements)?; - content_sections.push(ContentSection::Generic(section)); - // -- End Top Level Statements Section -- - - // -- Begin Query Node Section -- let mut section = GenericSection::default(); write_variable_value_with_type( &project_config.typegen_config.language, &mut section, "node", - generated_types.ast_type, + Some(generated_types.ast_type), &request, )?; content_sections.push(ContentSection::Generic(section)); @@ -469,7 +456,7 @@ pub fn generate_split_operation( &project_config.typegen_config.language, &mut section, "node", - "NormalizationSplitOperation", + Some("NormalizationSplitOperation"), &operation, )?; content_sections.push(ContentSection::Generic(section)); @@ -631,7 +618,7 @@ fn generate_read_only_fragment( &project_config.typegen_config.language, &mut section, "node", - generated_types.ast_type, + Some(generated_types.ast_type), &fragment, )?; content_sections.push(ContentSection::Generic(section)); @@ -726,7 +713,7 @@ fn generate_assignable_fragment( &project_config.typegen_config.language, &mut section, "node", - "any", + Some("any"), "{}", )?; content_sections.push(ContentSection::Generic(section)); @@ -774,17 +761,17 @@ fn write_variable_value_with_type( language: &TypegenLanguage, section: &mut dyn Write, variable_name: &str, - type_: &str, + type_: Option<&str>, value: &str, ) -> FmtResult { - match language { - TypegenLanguage::JavaScript => writeln!(section, "var {} = {};", variable_name, value), - TypegenLanguage::Flow => { + match (language, type_) { + (TypegenLanguage::Flow, Some(type_)) => { writeln!(section, "var {}/*: {}*/ = {};", variable_name, type_, value) } - TypegenLanguage::TypeScript => { + (TypegenLanguage::TypeScript, Some(type_)) => { writeln!(section, "const {}: {} = {};", variable_name, type_, value) } + (_, _) => writeln!(section, "var {} = {};", variable_name, value), } } diff --git a/compiler/crates/relay-typegen/src/flow.rs b/compiler/crates/relay-typegen/src/flow.rs index acd4bf7e1fa16..f69144735d452 100644 --- a/compiler/crates/relay-typegen/src/flow.rs +++ b/compiler/crates/relay-typegen/src/flow.rs @@ -85,10 +85,10 @@ impl Writer for FlowPrinter { "FragmentType" } - fn write_local_type(&mut self, name: &str, value: &AST) -> FmtResult { - write!(&mut self.result, "type {} = ", name)?; + fn write_type_assertion(&mut self, name: &str, value: &AST) -> FmtResult { + write!(&mut self.result, "({}: ", name)?; self.write(value)?; - writeln!(&mut self.result, ";") + writeln!(&mut self.result, ");") } fn write_export_type(&mut self, name: &str, value: &AST) -> FmtResult { diff --git a/compiler/crates/relay-typegen/src/javascript.rs b/compiler/crates/relay-typegen/src/javascript.rs index e3e582ccdba05..ccdeb20329789 100644 --- a/compiler/crates/relay-typegen/src/javascript.rs +++ b/compiler/crates/relay-typegen/src/javascript.rs @@ -35,7 +35,7 @@ impl Writer for JavaScriptPrinter { "" } - fn write_local_type(&mut self, _name: &str, _value: &AST) -> FmtResult { + fn write_type_assertion(&mut self, _name: &str, _value: &AST) -> FmtResult { Ok(()) } diff --git a/compiler/crates/relay-typegen/src/lib.rs b/compiler/crates/relay-typegen/src/lib.rs index fc7902c15a0eb..1afb813e7abf2 100644 --- a/compiler/crates/relay-typegen/src/lib.rs +++ b/compiler/crates/relay-typegen/src/lib.rs @@ -44,7 +44,6 @@ static REACT_RELAY_MULTI_ACTOR: &str = "react-relay/multi-actor"; static RELAY_RUNTIME: &str = "relay-runtime"; static LOCAL_3D_PAYLOAD: &str = "Local3DPayload"; static ACTOR_CHANGE_POINT: &str = "ActorChangePoint"; -pub static PROVIDED_VARIABLE_TYPE: &str = "ProvidedVariablesType"; static VALIDATOR_EXPORT_NAME: &str = "validate"; static LIVE_RESOLVERS_LIVE_STATE: &str = "LiveState"; static LIVE_RESOLVERS_EXPERIMENTAL_STORE_PATH: &str = @@ -171,6 +170,7 @@ pub fn generate_operation_type_exports_section( schema: &SDLSchema, project_config: &ProjectConfig, fragment_locations: &FragmentLocations, + maybe_provided_variables: Option, ) -> String { let typegen_context = TypegenContext::new( schema, @@ -192,6 +192,7 @@ pub fn generate_operation_type_exports_section( typegen_operation, normalization_operation, &mut writer, + maybe_provided_variables, ) .unwrap(); writer.into_string() diff --git a/compiler/crates/relay-typegen/src/typescript.rs b/compiler/crates/relay-typegen/src/typescript.rs index 10e0d472fab44..a5ecae92d115a 100644 --- a/compiler/crates/relay-typegen/src/typescript.rs +++ b/compiler/crates/relay-typegen/src/typescript.rs @@ -91,10 +91,10 @@ impl Writer for TypeScriptPrinter { } } - fn write_local_type(&mut self, name: &str, value: &AST) -> FmtResult { - write!(&mut self.result, "type {} = ", name)?; + fn write_type_assertion(&mut self, name: &str, value: &AST) -> FmtResult { + write!(&mut self.result, "({} as ", name)?; self.write(value)?; - writeln!(&mut self.result, ";") + writeln!(&mut self.result, ");") } fn write_export_type(&mut self, name: &str, value: &AST) -> FmtResult { diff --git a/compiler/crates/relay-typegen/src/write.rs b/compiler/crates/relay-typegen/src/write.rs index 07791d08fb41c..823b5ba677a90 100644 --- a/compiler/crates/relay-typegen/src/write.rs +++ b/compiler/crates/relay-typegen/src/write.rs @@ -68,7 +68,6 @@ use crate::KEY_FRAGMENT_TYPE; use crate::KEY_RAW_RESPONSE; use crate::KEY_TYPENAME; use crate::KEY_UPDATABLE_FRAGMENT_SPREADS; -use crate::PROVIDED_VARIABLE_TYPE; use crate::RAW_RESPONSE_TYPE_DIRECTIVE_NAME; use crate::REACT_RELAY_MULTI_ACTOR; use crate::VALIDATOR_EXPORT_NAME; @@ -80,6 +79,7 @@ pub(crate) fn write_operation_type_exports_section( typegen_operation: &OperationDefinition, normalization_operation: &OperationDefinition, writer: &mut Box, + maybe_provided_variables_object: Option, ) -> FmtResult { let mut encountered_enums = Default::default(); let mut encountered_fragments = Default::default(); @@ -168,7 +168,7 @@ pub(crate) fn write_operation_type_exports_section( write_split_raw_response_type_imports(typegen_context, imported_raw_response_types, writer)?; let mut input_object_types = IndexMap::default(); - let provided_variables_object = generate_provided_variables_type( + let expected_provided_variables_type = generate_provided_variables_type( typegen_context, normalization_operation, &mut input_object_types, @@ -215,8 +215,16 @@ pub(crate) fn write_operation_type_exports_section( &query_wrapper_type.into(), )?; - if let Some(provided_variables) = provided_variables_object { - writer.write_local_type(PROVIDED_VARIABLE_TYPE, &provided_variables)?; + if let (Some(provided_variables_type), Some(actual_provided_variables_object)) = ( + expected_provided_variables_type, + maybe_provided_variables_object, + ) { + // Assert that expected type of provided variables matches + // the flow/typescript types of functions with providers. + writer.write_type_assertion( + actual_provided_variables_object.as_str(), + &provided_variables_type, + )?; } Ok(()) diff --git a/compiler/crates/relay-typegen/src/writer.rs b/compiler/crates/relay-typegen/src/writer.rs index f791f3b9054f2..71f3adb738e71 100644 --- a/compiler/crates/relay-typegen/src/writer.rs +++ b/compiler/crates/relay-typegen/src/writer.rs @@ -357,7 +357,7 @@ pub trait Writer: Write { fn write(&mut self, ast: &AST) -> FmtResult; - fn write_local_type(&mut self, name: &str, ast: &AST) -> FmtResult; + fn write_type_assertion(&mut self, name: &str, ast: &AST) -> FmtResult; fn write_export_type(&mut self, name: &str, ast: &AST) -> FmtResult; diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-mixed-provided-variables.expected b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-mixed-provided-variables.expected index 172d353d967c4..52937dab47b8a 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-mixed-provided-variables.expected +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-mixed-provided-variables.expected @@ -63,7 +63,11 @@ export type queryMixedProvidedVar_MultiFragment = {| response: queryMixedProvidedVar_MultiFragment$data, variables: queryMixedProvidedVar_MultiFragment$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__includeNameProvider": require('includeNameProvider'), + "__relay_internal__pv__numberOfFriendsProvider": require('numberOfFriendsProvider'), + "__relay_internal__pv__skipFirstnameProvider": require('skipFirstnameProvider') +}: {| +__relay_internal__pv__includeNameProvider: {| +get: () => CustomBoolean, |}, @@ -73,7 +77,7 @@ type ProvidedVariablesType = {| +__relay_internal__pv__skipFirstnameProvider: {| +get: () => CustomBoolean, |}, -|}; +|}); ------------------------------------------------------------------------------- import type { FragmentOneProvidedVar$fragmentType } from "FragmentOneProvidedVar.graphql"; export type queryMixedProvidedVar_OneFragment$variables = {| @@ -88,11 +92,13 @@ export type queryMixedProvidedVar_OneFragment = {| response: queryMixedProvidedVar_OneFragment$data, variables: queryMixedProvidedVar_OneFragment$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__includeNameProvider": require('includeNameProvider') +}: {| +__relay_internal__pv__includeNameProvider: {| +get: () => CustomBoolean, |}, -|}; +|}); ------------------------------------------------------------------------------- import type { FragmentType } from "relay-runtime"; declare export opaque type FragmentMultiProvidedVar$fragmentType: FragmentType; diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-only-provided-variables.expected b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-only-provided-variables.expected index 4c82f5e43ad42..5fd6e655a0fd9 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-only-provided-variables.expected +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-only-provided-variables.expected @@ -46,14 +46,17 @@ export type queryOnlyProvidedVar_MultiFragment = {| response: queryOnlyProvidedVar_MultiFragment$data, variables: queryOnlyProvidedVar_MultiFragment$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__includeNameProvider": require('includeNameProvider'), + "__relay_internal__pv__numberOfFriendsProvider": require('numberOfFriendsProvider') +}: {| +__relay_internal__pv__includeNameProvider: {| +get: () => CustomBoolean, |}, +__relay_internal__pv__numberOfFriendsProvider: {| +get: () => number, |}, -|}; +|}); ------------------------------------------------------------------------------- import type { FragmentOneProvidedVar$fragmentType } from "FragmentOneProvidedVar.graphql"; export type queryOnlyProvidedVar_OneFragment$variables = {||}; @@ -66,11 +69,13 @@ export type queryOnlyProvidedVar_OneFragment = {| response: queryOnlyProvidedVar_OneFragment$data, variables: queryOnlyProvidedVar_OneFragment$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__includeNameProvider": require('includeNameProvider') +}: {| +__relay_internal__pv__includeNameProvider: {| +get: () => CustomBoolean, |}, -|}; +|}); ------------------------------------------------------------------------------- import type { FragmentType } from "relay-runtime"; declare export opaque type FragmentMultiProvidedVar$fragmentType: FragmentType; diff --git a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-provided-variables-custom-scalar.expected b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-provided-variables-custom-scalar.expected index bf5396773e0a1..da660832c81ab 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-provided-variables-custom-scalar.expected +++ b/compiler/crates/relay-typegen/tests/generate_flow/fixtures/query-provided-variables-custom-scalar.expected @@ -26,11 +26,13 @@ export type testQuery = {| response: testQuery$data, variables: testQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__includeNameProvider": require('includeNameProvider') +}: {| +__relay_internal__pv__includeNameProvider: {| +get: () => ?JSON, |}, -|}; +|}); ------------------------------------------------------------------------------- import type { FragmentType } from "relay-runtime"; declare export opaque type FragmentWithJSONProvidedVar$fragmentType: FragmentType; diff --git a/compiler/crates/relay-typegen/tests/generate_flow/mod.rs b/compiler/crates/relay-typegen/tests/generate_flow/mod.rs index 05ac82f184aae..5438c04028248 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow/mod.rs +++ b/compiler/crates/relay-typegen/tests/generate_flow/mod.rs @@ -22,6 +22,7 @@ use graphql_syntax::parse_executable; use graphql_test_helpers::diagnostics_to_sorted_string; use indexmap::IndexMap; use intern::string_key::Intern; +use relay_codegen::print_provided_variables; use relay_codegen::JsModuleFormat; use relay_config::CustomScalarType; use relay_config::CustomScalarTypeImport; @@ -112,7 +113,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let operation_strings = operations.into_iter().map(|typegen_operation| { // `normalization` ASTs are present unless we are processing an updatable query // In that case, `reader` ASTs are present. - let op = programs + let op: &Arc = programs .normalization .operation(OperationDefinitionName(typegen_operation.name.item.0)) .unwrap_or_else(|| { @@ -133,6 +134,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { &schema, &project_config, &fragment_locations, + print_provided_variables(&schema, op, &project_config), ) }); diff --git a/compiler/crates/relay-typegen/tests/generate_flow_with_custom_id/mod.rs b/compiler/crates/relay-typegen/tests/generate_flow_with_custom_id/mod.rs index c6e0fbe3d4183..a6dfa2f55c883 100644 --- a/compiler/crates/relay-typegen/tests/generate_flow_with_custom_id/mod.rs +++ b/compiler/crates/relay-typegen/tests/generate_flow_with_custom_id/mod.rs @@ -21,6 +21,7 @@ use graphql_ir::Program; use graphql_syntax::parse_executable; use indexmap::IndexMap; use intern::string_key::Intern; +use relay_codegen::print_provided_variables; use relay_codegen::JsModuleFormat; use relay_config::ProjectConfig; use relay_config::ProjectName; @@ -109,6 +110,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { &schema, &project_config, &fragment_locations, + print_provided_variables(&schema, normalization_operation, &project_config), ) }); diff --git a/compiler/crates/relay-typegen/tests/generate_typescript/mod.rs b/compiler/crates/relay-typegen/tests/generate_typescript/mod.rs index 6ceee34793dfe..9309e7cb0a685 100644 --- a/compiler/crates/relay-typegen/tests/generate_typescript/mod.rs +++ b/compiler/crates/relay-typegen/tests/generate_typescript/mod.rs @@ -20,6 +20,7 @@ use graphql_ir::Program; use graphql_syntax::parse_executable; use indexmap::IndexMap; use intern::string_key::Intern; +use relay_codegen::print_provided_variables; use relay_codegen::JsModuleFormat; use relay_config::CustomScalarType; use relay_config::CustomScalarTypeImport; @@ -103,6 +104,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { &schema, &project_config, &fragment_locations, + print_provided_variables(&schema, normalization_operation, &project_config), ) }); diff --git a/packages/react-relay/__tests__/__generated__/LiveResolversTestWithProvidedVariablesQuery.graphql.js b/packages/react-relay/__tests__/__generated__/LiveResolversTestWithProvidedVariablesQuery.graphql.js index a94aaf820477b..cb1a3a0549188 100644 --- a/packages/react-relay/__tests__/__generated__/LiveResolversTestWithProvidedVariablesQuery.graphql.js +++ b/packages/react-relay/__tests__/__generated__/LiveResolversTestWithProvidedVariablesQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<8067c02e9ef057a5b535950493770d82>> + * @generated SignedSource<<400f1ebe4cb8a6eb66854479669fefdf>> * @flow * @lightSyntaxTransform * @nogrep @@ -33,17 +33,15 @@ export type LiveResolversTestWithProvidedVariablesQuery = {| response: LiveResolversTestWithProvidedVariablesQuery$data, variables: LiveResolversTestWithProvidedVariablesQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__HelloWorldProviderjs": require('./../../../relay-runtime/store/__tests__/resolvers/HelloWorldProvider') +}: {| +__relay_internal__pv__HelloWorldProviderjs: {| +get: () => string, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__HelloWorldProviderjs": require('./../../../relay-runtime/store/__tests__/resolvers/HelloWorldProvider') -}; - var node/*: ClientRequest*/ = { "fragment": { "argumentDefinitions": [], @@ -122,7 +120,9 @@ var node/*: ClientRequest*/ = { "name": "LiveResolversTestWithProvidedVariablesQuery", "operationKind": "query", "text": null, - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__HelloWorldProviderjs": require('./../../../relay-runtime/store/__tests__/resolvers/HelloWorldProvider') + } } }; diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/preloadQueryDEPRECATEDTest_ProvidedVarQuery.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/preloadQueryDEPRECATEDTest_ProvidedVarQuery.graphql.js index adc6b146bd2d4..7fa7134a61359 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/preloadQueryDEPRECATEDTest_ProvidedVarQuery.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/preloadQueryDEPRECATEDTest_ProvidedVarQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<222188c6acc87a632e09a7e966a14432>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -31,21 +31,19 @@ export type preloadQueryDEPRECATEDTest_ProvidedVarQuery = {| response: preloadQueryDEPRECATEDTest_ProvidedVarQuery$data, variables: preloadQueryDEPRECATEDTest_ProvidedVarQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_returnsFalserelayprovider: {| +get: () => boolean, |}, +__relay_internal__pv__RelayProvider_returnsTruerelayprovider: {| +get: () => boolean, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), - "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -203,7 +201,10 @@ return { "name": "preloadQueryDEPRECATEDTest_ProvidedVarQuery", "operationKind": "query", "text": "query preloadQueryDEPRECATEDTest_ProvidedVarQuery(\n $id: ID!\n $__relay_internal__pv__RelayProvider_returnsTruerelayprovider: Boolean!\n $__relay_internal__pv__RelayProvider_returnsFalserelayprovider: Boolean!\n) {\n node(id: $id) {\n __typename\n ...preloadQueryDEPRECATEDTest_ProvidedVarFragment\n id\n }\n}\n\nfragment preloadQueryDEPRECATEDTest_ProvidedVarFragment on User {\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n firstName @include(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n lastName @skip(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n username @skip(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') + } } }; })(); diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_Query.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_Query.graphql.js index b6951b0f04581..9d2d1501ed299 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_Query.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<1bd7619ea2f07d3500636a825112fa19>> * @flow * @lightSyntaxTransform * @nogrep @@ -32,21 +32,19 @@ export type usePreloadedQueryProvidedVariablesTest_Query = {| response: usePreloadedQueryProvidedVariablesTest_Query$data, variables: usePreloadedQueryProvidedVariablesTest_Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_returnsFalserelayprovider: {| +get: () => boolean, |}, +__relay_internal__pv__RelayProvider_returnsTruerelayprovider: {| +get: () => boolean, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), - "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -206,7 +204,10 @@ return { "name": "usePreloadedQueryProvidedVariablesTest_Query", "operationKind": "query", "text": "query usePreloadedQueryProvidedVariablesTest_Query(\n $id: ID!\n $__relay_internal__pv__RelayProvider_returnsTruerelayprovider: Boolean!\n $__relay_internal__pv__RelayProvider_returnsFalserelayprovider: Boolean!\n) {\n node(id: $id) {\n __typename\n id\n ...usePreloadedQueryProvidedVariablesTest_Fragment\n }\n}\n\nfragment usePreloadedQueryProvidedVariablesTest_Fragment on User {\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n firstName @include(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n lastName @skip(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n username @skip(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') + } } }; })(); diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_badQuery.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_badQuery.graphql.js index 5e30e1a2cde3e..3aae2d82cff4d 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_badQuery.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePreloadedQueryProvidedVariablesTest_badQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<940e03983e6e001ebaf61ce67f5941e5>> * @flow * @lightSyntaxTransform * @nogrep @@ -31,17 +31,15 @@ export type usePreloadedQueryProvidedVariablesTest_badQuery = {| response: usePreloadedQueryProvidedVariablesTest_badQuery$data, variables: usePreloadedQueryProvidedVariablesTest_badQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_impurerelayprovider": require('./../RelayProvider_impure.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_impurerelayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_impurerelayprovider": require('./../RelayProvider_impure.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -162,7 +160,9 @@ return { "name": "usePreloadedQueryProvidedVariablesTest_badQuery", "operationKind": "query", "text": "query usePreloadedQueryProvidedVariablesTest_badQuery(\n $id: ID!\n $__relay_internal__pv__RelayProvider_impurerelayprovider: Float!\n) {\n node(id: $id) {\n __typename\n ...usePreloadedQueryProvidedVariablesTest_badFragment\n id\n }\n}\n\nfragment usePreloadedQueryProvidedVariablesTest_badFragment on User {\n profile_picture(scale: $__relay_internal__pv__RelayProvider_impurerelayprovider) {\n uri\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_impurerelayprovider": require('./../RelayProvider_impure.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery.graphql.js index 51d2c8413d02b..8fd77d65ae7f1 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<859dd5aabd816b54e16e217f0b1004c3>> + * @generated SignedSource<<6713b0a8e08ed95789878b165ffac985>> * @flow * @lightSyntaxTransform * @nogrep @@ -33,21 +33,19 @@ export type RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFra response: RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery$data, variables: RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_pictureScalerelayprovider": require('./../RelayProvider_pictureScale.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_pictureScalerelayprovider: {| +get: () => number, |}, +__relay_internal__pv__RelayProvider_returnsTruerelayprovider: {| +get: () => boolean, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), - "__relay_internal__pv__RelayProvider_pictureScalerelayprovider": require('./../RelayProvider_pictureScale.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -229,7 +227,10 @@ return { "name": "RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery", "operationKind": "query", "text": "query RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgManyFragmentsQuery(\n $id: ID!\n $__relay_internal__pv__RelayProvider_returnsTruerelayprovider: Boolean!\n $__relay_internal__pv__RelayProvider_pictureScalerelayprovider: Float!\n) {\n node(id: $id) {\n __typename\n ...RelayModernEnvironmentExecuteWithProvidedVariableTest_profile1\n ...RelayModernEnvironmentExecuteWithProvidedVariableTest_profile2\n ...RelayModernEnvironmentExecuteWithProvidedVariableTest_profile3\n id\n }\n}\n\nfragment RelayModernEnvironmentExecuteWithProvidedVariableTest_profile1 on User {\n id\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n username @skip(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n profilePicture {\n uri\n }\n}\n\nfragment RelayModernEnvironmentExecuteWithProvidedVariableTest_profile2 on User {\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n alternate_name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n}\n\nfragment RelayModernEnvironmentExecuteWithProvidedVariableTest_profile3 on User {\n profile_picture(scale: $__relay_internal__pv__RelayProvider_pictureScalerelayprovider) {\n uri\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_pictureScalerelayprovider": require('./../RelayProvider_pictureScale.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery.graphql.js index e3bdd40e70445..f426f2dc21593 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<202e4fac8401882f52063c14c4da0afc>> * @flow * @lightSyntaxTransform * @nogrep @@ -31,17 +31,15 @@ export type RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleF response: RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery$data, variables: RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_returnsTruerelayprovider: {| +get: () => boolean, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -184,7 +182,9 @@ return { "name": "RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery", "operationKind": "query", "text": "query RelayModernEnvironmentExecuteWithProvidedVariableTest_UserArgSingleFragmentQuery(\n $id: ID!\n $__relay_internal__pv__RelayProvider_returnsTruerelayprovider: Boolean!\n) {\n node(id: $id) {\n __typename\n ...RelayModernEnvironmentExecuteWithProvidedVariableTest_profile1\n id\n }\n}\n\nfragment RelayModernEnvironmentExecuteWithProvidedVariableTest_profile1 on User {\n id\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n username @skip(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n profilePicture {\n uri\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/store/__tests__/__generated__/RelayResponseNormalizerTest_pvQuery.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RelayResponseNormalizerTest_pvQuery.graphql.js index 700ecbcbff4ef..64cb9cd64628e 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RelayResponseNormalizerTest_pvQuery.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RelayResponseNormalizerTest_pvQuery.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<0bad2ff4004f0eb406a0dbcfa4c86cf5>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -32,21 +32,19 @@ export type RelayResponseNormalizerTest_pvQuery = {| response: RelayResponseNormalizerTest_pvQuery$data, variables: RelayResponseNormalizerTest_pvQuery$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') +}: {| +__relay_internal__pv__RelayProvider_returnsFalserelayprovider: {| +get: () => boolean, |}, +__relay_internal__pv__RelayProvider_returnsTruerelayprovider: {| +get: () => boolean, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), - "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -206,7 +204,10 @@ return { "name": "RelayResponseNormalizerTest_pvQuery", "operationKind": "query", "text": "query RelayResponseNormalizerTest_pvQuery(\n $id: ID!\n $__relay_internal__pv__RelayProvider_returnsTruerelayprovider: Boolean!\n $__relay_internal__pv__RelayProvider_returnsFalserelayprovider: Boolean!\n) {\n node(id: $id) {\n __typename\n id\n ...RelayResponseNormalizerTest_pvFragment\n }\n}\n\nfragment RelayResponseNormalizerTest_pvFragment on User {\n name @include(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n firstName @include(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n lastName @skip(if: $__relay_internal__pv__RelayProvider_returnsFalserelayprovider)\n username @skip(if: $__relay_internal__pv__RelayProvider_returnsTruerelayprovider)\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__RelayProvider_returnsTruerelayprovider": require('./../RelayProvider_returnsTrue.relayprovider'), + "__relay_internal__pv__RelayProvider_returnsFalserelayprovider": require('./../RelayProvider_returnsFalse.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest1Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest1Query.graphql.js index e930aa5f9f0e4..ab2803ec94c86 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest1Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest1Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<41e083a018213043ae8d87d99a15ce1d>> + * @generated SignedSource<<6703998458a25903621ee13227354a96>> * @flow * @lightSyntaxTransform * @nogrep @@ -29,17 +29,15 @@ export type withProvidedVariablesTest1Query = {| response: withProvidedVariablesTest1Query$data, variables: withProvidedVariablesTest1Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') +}: {| +__relay_internal__pv__provideNumberOfFriendsrelayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = [ { @@ -152,7 +150,9 @@ return { "name": "withProvidedVariablesTest1Query", "operationKind": "query", "text": "query withProvidedVariablesTest1Query(\n $__relay_internal__pv__provideNumberOfFriendsrelayprovider: Int!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest1Fragment\n id\n }\n}\n\nfragment withProvidedVariablesTest1Fragment on User {\n friends(first: $__relay_internal__pv__provideNumberOfFriendsrelayprovider) {\n count\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest2Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest2Query.graphql.js index 2c88a772302b6..7b51233673ed9 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest2Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest2Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<930f7fd0c533887865d2503fc6e48d02>> + * @generated SignedSource<<28b3eba1bf961281a612ddc50ead4b1f>> * @flow * @lightSyntaxTransform * @nogrep @@ -31,17 +31,15 @@ export type withProvidedVariablesTest2Query = {| response: withProvidedVariablesTest2Query$data, variables: withProvidedVariablesTest2Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') +}: {| +__relay_internal__pv__provideNumberOfFriendsrelayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = { "defaultValue": null, @@ -175,7 +173,9 @@ return { "name": "withProvidedVariablesTest2Query", "operationKind": "query", "text": "query withProvidedVariablesTest2Query(\n $includeFriendsCount: Boolean!\n $__relay_internal__pv__provideNumberOfFriendsrelayprovider: Int!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest2Fragment_47ZY3u\n id\n }\n}\n\nfragment withProvidedVariablesTest2Fragment_47ZY3u on User {\n friends(first: $__relay_internal__pv__provideNumberOfFriendsrelayprovider) {\n count @include(if: $includeFriendsCount)\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest3Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest3Query.graphql.js index daac06c698ac6..eb7961d1bd5cc 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest3Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest3Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<18a39aa5973ba29b7169324c0037ec4c>> + * @generated SignedSource<<5815185ccc4d1a85d36ed17b4f10ec0d>> * @flow * @lightSyntaxTransform * @nogrep @@ -29,21 +29,19 @@ export type withProvidedVariablesTest3Query = {| response: withProvidedVariablesTest3Query$data, variables: withProvidedVariablesTest3Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), + "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') +}: {| +__relay_internal__pv__provideIncludeUserNamesrelayprovider: {| +get: () => boolean, |}, +__relay_internal__pv__provideNumberOfFriendsrelayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), - "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = [ { @@ -175,7 +173,10 @@ return { "name": "withProvidedVariablesTest3Query", "operationKind": "query", "text": "query withProvidedVariablesTest3Query(\n $__relay_internal__pv__provideNumberOfFriendsrelayprovider: Int!\n $__relay_internal__pv__provideIncludeUserNamesrelayprovider: Boolean!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest3Fragment\n id\n }\n}\n\nfragment withProvidedVariablesTest3Fragment on User {\n name @include(if: $__relay_internal__pv__provideIncludeUserNamesrelayprovider)\n friends(first: $__relay_internal__pv__provideNumberOfFriendsrelayprovider) {\n count\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), + "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest4Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest4Query.graphql.js index d741b0bde1c11..6dd528e418ba3 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest4Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest4Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<738f0bb0bc84818c73d75e001c580e88>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -30,21 +30,19 @@ export type withProvidedVariablesTest4Query = {| response: withProvidedVariablesTest4Query$data, variables: withProvidedVariablesTest4Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), + "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') +}: {| +__relay_internal__pv__provideIncludeUserNamesrelayprovider: {| +get: () => boolean, |}, +__relay_internal__pv__provideNumberOfFriendsrelayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), - "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = [ { @@ -207,7 +205,10 @@ return { "name": "withProvidedVariablesTest4Query", "operationKind": "query", "text": "query withProvidedVariablesTest4Query(\n $__relay_internal__pv__provideNumberOfFriendsrelayprovider: Int!\n $__relay_internal__pv__provideIncludeUserNamesrelayprovider: Boolean!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest4Fragment1\n ...withProvidedVariablesTest4Fragment2\n id\n }\n}\n\nfragment withProvidedVariablesTest4Fragment1 on User {\n friends(first: $__relay_internal__pv__provideNumberOfFriendsrelayprovider) {\n count\n edges {\n node {\n name @include(if: $__relay_internal__pv__provideIncludeUserNamesrelayprovider)\n id\n }\n }\n }\n}\n\nfragment withProvidedVariablesTest4Fragment2 on User {\n name @include(if: $__relay_internal__pv__provideIncludeUserNamesrelayprovider)\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideNumberOfFriendsrelayprovider": require('./../provideNumberOfFriends.relayprovider'), + "__relay_internal__pv__provideIncludeUserNamesrelayprovider": require('./../provideIncludeUserNames.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest5Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest5Query.graphql.js index b8f0f50e7f08d..d2216f8272afa 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest5Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest5Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<4d4d9044120228582912eca1d5a3b57b>> + * @generated SignedSource<<9f59b2fcd357e043b5d5fa94238f3fe2>> * @flow * @lightSyntaxTransform * @nogrep @@ -29,21 +29,19 @@ export type withProvidedVariablesTest5Query = {| response: withProvidedVariablesTest5Query$data, variables: withProvidedVariablesTest5Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider'), + "__relay_internal__pv__provideRandomNumber_invalid2relayprovider": require('./../provideRandomNumber_invalid2.relayprovider') +}: {| +__relay_internal__pv__provideRandomNumber_invalid1relayprovider: {| +get: () => number, |}, +__relay_internal__pv__provideRandomNumber_invalid2relayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider'), - "__relay_internal__pv__provideRandomNumber_invalid2relayprovider": require('./../provideRandomNumber_invalid2.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = [ { @@ -178,7 +176,10 @@ return { "name": "withProvidedVariablesTest5Query", "operationKind": "query", "text": "query withProvidedVariablesTest5Query(\n $__relay_internal__pv__provideRandomNumber_invalid1relayprovider: Float!\n $__relay_internal__pv__provideRandomNumber_invalid2relayprovider: Float!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest5Fragment\n id\n }\n}\n\nfragment withProvidedVariablesTest5Fragment on User {\n profile_picture(scale: $__relay_internal__pv__provideRandomNumber_invalid1relayprovider) {\n uri\n }\n other_picture: profile_picture(scale: $__relay_internal__pv__provideRandomNumber_invalid2relayprovider) {\n uri\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider'), + "__relay_internal__pv__provideRandomNumber_invalid2relayprovider": require('./../provideRandomNumber_invalid2.relayprovider') + } } }; })(); diff --git a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest6Query.graphql.js b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest6Query.graphql.js index 92161c7d6f3de..6b3d98efd465a 100644 --- a/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest6Query.graphql.js +++ b/packages/relay-runtime/util/__tests__/__generated__/withProvidedVariablesTest6Query.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<2dc5f8f1fb7f57f4fbd9ed95c754cf4f>> + * @generated SignedSource<<33a7c304a92c212c1292fd71495c8cb8>> * @flow * @lightSyntaxTransform * @nogrep @@ -29,17 +29,15 @@ export type withProvidedVariablesTest6Query = {| response: withProvidedVariablesTest6Query$data, variables: withProvidedVariablesTest6Query$variables, |}; -type ProvidedVariablesType = {| +({ + "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider') +}: {| +__relay_internal__pv__provideRandomNumber_invalid1relayprovider: {| +get: () => number, |}, -|}; +|}); */ -var providedVariablesDefinition/*: ProvidedVariablesType*/ = { - "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider') -}; - var node/*: ConcreteRequest*/ = (function(){ var v0 = [ { @@ -152,7 +150,9 @@ return { "name": "withProvidedVariablesTest6Query", "operationKind": "query", "text": "query withProvidedVariablesTest6Query(\n $__relay_internal__pv__provideRandomNumber_invalid1relayprovider: Float!\n) {\n node(id: 4) {\n __typename\n ...withProvidedVariablesTest6Fragment\n id\n }\n}\n\nfragment withProvidedVariablesTest6Fragment on User {\n profile_picture(scale: $__relay_internal__pv__provideRandomNumber_invalid1relayprovider) {\n uri\n }\n}\n", - "providedVariables": providedVariablesDefinition + "providedVariables": { + "__relay_internal__pv__provideRandomNumber_invalid1relayprovider": require('./../provideRandomNumber_invalid1.relayprovider') + } } }; })();