From 284c5e0c7b0c306c6a986498564f4946078a281c Mon Sep 17 00:00:00 2001 From: Drew Atkinson Date: Wed, 31 Jul 2024 08:30:32 -0700 Subject: [PATCH 1/2] Skip importing types in TS --- .../relay-compiler/src/artifact_content/content.rs | 5 +++-- .../src/build_project/artifact_generated_types.rs | 14 +++++++++----- .../fixtures/fragment_arguments.expected | 8 ++++---- .../fixtures/preloadable_query_typescript.expected | 4 ++-- .../fixtures/simple_fragment.expected | 4 ++-- .../typescript_resolver_type_import.expected | 4 ++-- 6 files changed, 22 insertions(+), 17 deletions(-) diff --git a/compiler/crates/relay-compiler/src/artifact_content/content.rs b/compiler/crates/relay-compiler/src/artifact_content/content.rs index a3f49b408a2fa..2b2f223835d6c 100644 --- a/compiler/crates/relay-compiler/src/artifact_content/content.rs +++ b/compiler/crates/relay-compiler/src/artifact_content/content.rs @@ -194,7 +194,7 @@ pub fn generate_updatable_query( // -- Begin Types Section -- let mut section = GenericSection::default(); let generated_types = - ArtifactGeneratedTypes::from_updatable_query(typegen_operation, skip_types); + ArtifactGeneratedTypes::from_updatable_query(typegen_operation, skip_types, project_config); if project_config.typegen_config.language == TypegenLanguage::Flow { writeln!(section, "/*::")?; @@ -358,6 +358,7 @@ pub fn generate_operation( typegen_operation, skip_types, request_parameters.is_client_request(), + project_config ); if project_config.typegen_config.language == TypegenLanguage::Flow { @@ -687,7 +688,7 @@ fn generate_read_only_fragment( // -- Begin Types Section -- let mut section = GenericSection::default(); - let generated_types = ArtifactGeneratedTypes::from_fragment(typegen_fragment, skip_types); + let generated_types = ArtifactGeneratedTypes::from_fragment(typegen_fragment, skip_types, project_config); if project_config.typegen_config.language == TypegenLanguage::Flow { writeln!(section, "/*::")?; diff --git a/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs b/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs index 3152d2eb87bcc..ec876fb80d6b7 100644 --- a/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs +++ b/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs @@ -9,11 +9,14 @@ use common::NamedItem; use graphql_ir::FragmentDefinition; use graphql_ir::OperationDefinition; use graphql_syntax::OperationKind; +use relay_config::ProjectConfig; +use relay_config::TypegenLanguage; use relay_transforms::RefetchableMetadata; use relay_transforms::INLINE_DIRECTIVE_NAME; use relay_transforms::UPDATABLE_DIRECTIVE; use relay_typegen::has_raw_response_type_directive; + /// Specifies the imported and exported generated types of an /// artifact. pub struct ArtifactGeneratedTypes { @@ -27,8 +30,9 @@ impl ArtifactGeneratedTypes { operation: &OperationDefinition, skip_types: bool, is_client_only: bool, + project_config: &ProjectConfig, ) -> Self { - if skip_types { + if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { Self { imported_types: "ConcreteRequest", ast_type: "ConcreteRequest", @@ -80,8 +84,8 @@ impl ArtifactGeneratedTypes { } } - pub fn from_updatable_query(typegen_operation: &OperationDefinition, skip_types: bool) -> Self { - if skip_types { + pub fn from_updatable_query(typegen_operation: &OperationDefinition, skip_types: bool, project_config: &ProjectConfig) -> Self { + if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { Self { imported_types: "ConcreteUpdatableQuery", ast_type: "ConcreteUpdatableQuery", @@ -100,11 +104,11 @@ impl ArtifactGeneratedTypes { } } - pub fn from_fragment(fragment: &FragmentDefinition, skip_types: bool) -> Self { + pub fn from_fragment(fragment: &FragmentDefinition, skip_types: bool, project_config: &ProjectConfig) -> Self { let is_inline_data_fragment = fragment.directives.named(*INLINE_DIRECTIVE_NAME).is_some(); let is_updatable_fragment = fragment.directives.named(*UPDATABLE_DIRECTIVE).is_some(); - if skip_types { + if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { if is_inline_data_fragment { Self { imported_types: "ReaderInlineDataFragment", diff --git a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/fragment_arguments.expected b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/fragment_arguments.expected index f7281490fa873..20b9db33fed92 100644 --- a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/fragment_arguments.expected +++ b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/fragment_arguments.expected @@ -39,7 +39,7 @@ type Post { ==================================== OUTPUT =================================== //- __generated__/foo.graphql.ts /** - * SignedSource<<0e503f5c200310a5580a2b4853a499ce>> + * SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -48,7 +48,7 @@ type Post { /* eslint-disable */ // @ts-nocheck -import { Fragment, ReaderFragment } from 'relay-runtime'; +import { ReaderFragment } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; export type foo$data = { readonly posts: ReadonlyArray<{ @@ -108,7 +108,7 @@ export default node; //- __generated__/fooQuery.graphql.ts /** - * SignedSource<<20043d1d00f946a33727d27907f7f3f2>> + * SignedSource<<119739ea84b9bdf74d937309d38abba4>> * @lightSyntaxTransform * @nogrep */ @@ -117,7 +117,7 @@ export default node; /* eslint-disable */ // @ts-nocheck -import { ConcreteRequest, Query } from 'relay-runtime'; +import { ConcreteRequest } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; export type fooQuery$variables = Record; export type fooQuery$data = { diff --git a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/preloadable_query_typescript.expected b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/preloadable_query_typescript.expected index e5fe00c999739..40e6cf9c1f716 100644 --- a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/preloadable_query_typescript.expected +++ b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/preloadable_query_typescript.expected @@ -53,7 +53,7 @@ export default node; //- __generated__/fooQuery.graphql.ts /** - * SignedSource<<461989c03655ebfecf253b741f65ef91>> + * SignedSource<> * @relayHash ae6874c86ce5db2df8d6b253a6a0ec13 * @lightSyntaxTransform * @nogrep @@ -65,7 +65,7 @@ export default node; // @relayRequestID ae6874c86ce5db2df8d6b253a6a0ec13 -import { ConcreteRequest, Query } from 'relay-runtime'; +import { ConcreteRequest } from 'relay-runtime'; export type fooQuery$variables = Record; export type fooQuery$data = { readonly userName: string | null | undefined; diff --git a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/simple_fragment.expected b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/simple_fragment.expected index 67dd12c461485..654909e8ee446 100644 --- a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/simple_fragment.expected +++ b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/simple_fragment.expected @@ -17,7 +17,7 @@ type User { name: String } ==================================== OUTPUT =================================== //- __generated__/foo.graphql.ts /** - * SignedSource<> + * SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -26,7 +26,7 @@ type User { name: String } /* eslint-disable */ // @ts-nocheck -import { Fragment, ReaderFragment } from 'relay-runtime'; +import { ReaderFragment } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; export type foo$data = { readonly name: string | null | undefined; diff --git a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/typescript_resolver_type_import.expected b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/typescript_resolver_type_import.expected index e8c1d60403663..ce9b7fbc62a57 100644 --- a/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/typescript_resolver_type_import.expected +++ b/compiler/crates/relay-compiler/tests/relay_compiler_integration/fixtures/typescript_resolver_type_import.expected @@ -25,7 +25,7 @@ type User { name: String } ==================================== OUTPUT =================================== //- __generated__/barFragment.graphql.ts /** - * SignedSource<<6c58dff465555ee63fe212edde3a3e01>> + * SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -34,7 +34,7 @@ type User { name: String } /* eslint-disable */ // @ts-nocheck -import { Fragment, ReaderFragment } from 'relay-runtime'; +import { ReaderFragment } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; import { foo as userFooResolverType } from "../foo"; export type barFragment$data = { From b763b65123dc06b83d63406da04e91b50837a631 Mon Sep 17 00:00:00 2001 From: Drew Atkinson Date: Wed, 31 Jul 2024 10:31:25 -0700 Subject: [PATCH 2/2] fix: only pass language --- .../relay-compiler/src/artifact_content/content.rs | 6 +++--- .../src/build_project/artifact_generated_types.rs | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/compiler/crates/relay-compiler/src/artifact_content/content.rs b/compiler/crates/relay-compiler/src/artifact_content/content.rs index 2b2f223835d6c..ab4446e3d4aa1 100644 --- a/compiler/crates/relay-compiler/src/artifact_content/content.rs +++ b/compiler/crates/relay-compiler/src/artifact_content/content.rs @@ -194,7 +194,7 @@ pub fn generate_updatable_query( // -- Begin Types Section -- let mut section = GenericSection::default(); let generated_types = - ArtifactGeneratedTypes::from_updatable_query(typegen_operation, skip_types, project_config); + ArtifactGeneratedTypes::from_updatable_query(typegen_operation, skip_types, project_config.typegen_config.language); if project_config.typegen_config.language == TypegenLanguage::Flow { writeln!(section, "/*::")?; @@ -358,7 +358,7 @@ pub fn generate_operation( typegen_operation, skip_types, request_parameters.is_client_request(), - project_config + project_config.typegen_config.language ); if project_config.typegen_config.language == TypegenLanguage::Flow { @@ -688,7 +688,7 @@ fn generate_read_only_fragment( // -- Begin Types Section -- let mut section = GenericSection::default(); - let generated_types = ArtifactGeneratedTypes::from_fragment(typegen_fragment, skip_types, project_config); + let generated_types = ArtifactGeneratedTypes::from_fragment(typegen_fragment, skip_types, project_config.typegen_config.language); if project_config.typegen_config.language == TypegenLanguage::Flow { writeln!(section, "/*::")?; diff --git a/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs b/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs index ec876fb80d6b7..696d54a871c16 100644 --- a/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs +++ b/compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs @@ -9,7 +9,6 @@ use common::NamedItem; use graphql_ir::FragmentDefinition; use graphql_ir::OperationDefinition; use graphql_syntax::OperationKind; -use relay_config::ProjectConfig; use relay_config::TypegenLanguage; use relay_transforms::RefetchableMetadata; use relay_transforms::INLINE_DIRECTIVE_NAME; @@ -30,9 +29,9 @@ impl ArtifactGeneratedTypes { operation: &OperationDefinition, skip_types: bool, is_client_only: bool, - project_config: &ProjectConfig, + language: TypegenLanguage, ) -> Self { - if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { + if skip_types || language == TypegenLanguage::TypeScript { Self { imported_types: "ConcreteRequest", ast_type: "ConcreteRequest", @@ -84,8 +83,8 @@ impl ArtifactGeneratedTypes { } } - pub fn from_updatable_query(typegen_operation: &OperationDefinition, skip_types: bool, project_config: &ProjectConfig) -> Self { - if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { + pub fn from_updatable_query(typegen_operation: &OperationDefinition, skip_types: bool, language: TypegenLanguage) -> Self { + if skip_types || language == TypegenLanguage::TypeScript { Self { imported_types: "ConcreteUpdatableQuery", ast_type: "ConcreteUpdatableQuery", @@ -104,11 +103,11 @@ impl ArtifactGeneratedTypes { } } - pub fn from_fragment(fragment: &FragmentDefinition, skip_types: bool, project_config: &ProjectConfig) -> Self { + pub fn from_fragment(fragment: &FragmentDefinition, skip_types: bool, language: TypegenLanguage) -> Self { let is_inline_data_fragment = fragment.directives.named(*INLINE_DIRECTIVE_NAME).is_some(); let is_updatable_fragment = fragment.directives.named(*UPDATABLE_DIRECTIVE).is_some(); - if skip_types || project_config.typegen_config.language == TypegenLanguage::TypeScript { + if skip_types || language == TypegenLanguage::TypeScript { if is_inline_data_fragment { Self { imported_types: "ReaderInlineDataFragment",