From ed43b5fdc7d6cd669a19801015da6713606d9af8 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Fri, 26 Aug 2022 19:39:41 -0500 Subject: [PATCH 01/13] Fix refetching when using nodeInterfaceIdField --- .../relay-hooks/useRefetchableFragmentNode.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js index b7c6ead508e7c..47c4d69384e35 100644 --- a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js +++ b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js @@ -239,6 +239,8 @@ function useRefetchableFragmentNode< debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType( refetchQuery.request.variables, fragmentRefPathInResponse, + fragmentNode, + componentDisplayName, environment, ); } @@ -459,7 +461,7 @@ function useRefetchFunction( // was not explicitly provided, read it from the fragment data. if ( identifierField != null && - !providedRefetchVariables.hasOwnProperty('id') + !providedRefetchVariables.hasOwnProperty(identifierField) ) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check @@ -473,7 +475,7 @@ function useRefetchFunction( identifierValue, ); } - (refetchVariables: $FlowFixMe).id = identifierValue; + (refetchVariables: $FlowFixMe)[identifierField] = identifierValue; } const refetchQuery = createOperationDescriptor( @@ -522,10 +524,21 @@ if (__DEV__) { getInitialIDAndType( memoRefetchVariables: ?Variables, fragmentRefPathInResponse: $ReadOnlyArray, + fragmentNode: ReaderFragment, + componentDisplayName: string, environment: IEnvironment, ): ?DebugIDandTypename { const {Record} = require('relay-runtime'); - const id = memoRefetchVariables?.id; + const {identifierField} = getRefetchMetadata( + fragmentNode, + componentDisplayName, + ); + const id = + identifierField !== null && + identifierField !== undefined && + identifierField !== '' + ? memoRefetchVariables?.[identifierField] + : null; if ( fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || From 45c5ee5c94d71e45b54532de911a03e9fecd1c49 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Fri, 26 Aug 2022 19:39:54 -0500 Subject: [PATCH 02/13] Fix pagination when using nodeInterfaceIdField --- packages/react-relay/relay-hooks/useLoadMoreFunction.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-relay/relay-hooks/useLoadMoreFunction.js b/packages/react-relay/relay-hooks/useLoadMoreFunction.js index 416aca20fba98..e94f40ac93032 100644 --- a/packages/react-relay/relay-hooks/useLoadMoreFunction.js +++ b/packages/react-relay/relay-hooks/useLoadMoreFunction.js @@ -214,7 +214,7 @@ function useLoadMoreFunction( identifierValue, ); } - paginationVariables.id = identifierValue; + paginationVariables[identifierField] = identifierValue; } const paginationQuery = createOperationDescriptor( From 284b375b4d8891e7f9cee457aa06330510c79ab4 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Thu, 1 Sep 2022 20:49:34 -0500 Subject: [PATCH 03/13] Add variable name to refetchable fragment metadata --- compiler/crates/relay-codegen/src/build_ast.rs | 7 +++++++ compiler/crates/relay-codegen/src/constants.rs | 2 ++ .../fixtures/client-edge-backed-by-resolver.expected | 3 ++- .../fixtures/fragment-on-node-interface.expected | 3 ++- .../fixtures/fragment-on-non-node-fetchable-type.expected | 3 ++- ...fragment-on-object-implementing-node-interface.expected | 3 ++- .../provided-variable-refetchable-fragment.expected | 3 ++- .../refetchable-connection-custom-handler.expected | 3 ++- .../fixtures/refetchable-connection.expected | 3 ++- .../refetchable-fragment-on-node-with-missing-id.expected | 3 ++- ...tchable-fragment-with-connection-bidirectional.expected | 3 ++- ...efetchable-fragment-with-connection-es-modules.expected | 3 ++- ...fetchable-fragment-with-connection-with-stream.expected | 3 ++- .../fixtures/refetchable-fragment-with-connection.expected | 3 ++- .../fixtures/relay-resolver-backing-client-edge.expected | 3 ++- .../relay-resolver-with-required-client-edge.expected | 3 ++- .../fixtures/fragment-on-node-interface.expected | 3 ++- ...fragment-on-object-implementing-node-interface.expected | 3 ++- .../fixtures/refetchable-connection.expected | 3 ++- .../refetchable-fragment-on-node-with-missing-id.expected | 3 ++- .../src/refetchable_fragment/fetchable_query_generator.rs | 1 + .../src/refetchable_fragment/node_query_generator.rs | 1 + .../src/refetchable_fragment/query_query_generator.rs | 1 + .../relay-transforms/src/refetchable_fragment/utils.rs | 1 + .../src/refetchable_fragment/viewer_query_generator.rs | 1 + .../client-edge-inline-fragment-no-type-condition.expected | 6 ++++++ .../fixtures/client-edge-inline-fragment.expected | 6 ++++++ .../client_edges/fixtures/client-edge-variables.expected | 3 +++ .../fixtures/client-edge-with-required.expected | 3 +++ .../fixtures/client-edge-within-non-client-edge.expected | 3 +++ .../tests/client_edges/fixtures/client-edge.expected | 3 +++ .../fixtures/nested-client-edges-with-variables.expected | 6 ++++++ .../client_edges/fixtures/nested-client-edges.expected | 6 ++++++ ...interface-which-implementations-implement-node.expected | 3 +++ .../fixtures/fragment-on-interface-without-id.expected | 3 +++ .../fragment-on-node-interface-without-id.expected | 3 +++ .../fixtures/fragment-on-node-interface.expected | 3 +++ .../fixtures/fragment-on-non-node-fetchable-type.expected | 3 +++ ...ject-implementing-node-interface-with-alias-id.expected | 3 +++ ...fragment-on-object-implementing-node-interface.expected | 3 +++ .../fixtures/fragment-on-query-with-cycle.expected | 1 + .../fixtures/fragment-on-query.expected | 1 + .../fixtures/fragment-on-viewer.expected | 1 + ...ith-args-on-object-implementing-node-interface.expected | 3 +++ .../fixtures/fragment-with-args-on-query.expected | 1 + .../fixtures/fragment-with-args-on-viewer.expected | 1 + ...tchable-fragment-with-connection-bidirectional.expected | 3 +++ ...fetchable-fragment-with-connection-with-stream.expected | 3 +++ .../fixtures/refetchable-fragment-with-connection.expected | 3 +++ 49 files changed, 124 insertions(+), 18 deletions(-) diff --git a/compiler/crates/relay-codegen/src/build_ast.rs b/compiler/crates/relay-codegen/src/build_ast.rs index ce1e4e43876c9..40973830c17a5 100644 --- a/compiler/crates/relay-codegen/src/build_ast.rs +++ b/compiler/crates/relay-codegen/src/build_ast.rs @@ -445,6 +445,13 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> { }); } + if let Some(x) = refetch_metadata.identifier_query_variable_name { + refetch_object.push(ObjectEntry { + key: CODEGEN_CONSTANTS.identifier_query_variable_name, + value: Primitive::String(x), + }); + } + metadata.push(ObjectEntry { key: CODEGEN_CONSTANTS.refetch, value: Primitive::Key(self.object(refetch_object)), diff --git a/compiler/crates/relay-codegen/src/constants.rs b/compiler/crates/relay-codegen/src/constants.rs index 706a508d2987c..3dedf097c8bb3 100644 --- a/compiler/crates/relay-codegen/src/constants.rs +++ b/compiler/crates/relay-codegen/src/constants.rs @@ -60,6 +60,7 @@ pub struct CodegenConstants { pub has_client_edges: StringKey, pub id: StringKey, pub identifier_field: StringKey, + pub identifier_query_variable_name: StringKey, pub if_: StringKey, pub inline_data_fragment_spread: StringKey, pub inline_data_fragment: StringKey, @@ -170,6 +171,7 @@ lazy_static! { has_client_edges: "hasClientEdges".intern(), id: "id".intern(), identifier_field: "identifierField".intern(), + identifier_query_variable_name: "identifierQueryVariableName".intern(), if_: "if".intern(), inline_data_fragment_spread: "InlineDataFragmentSpread".intern(), inline_data_fragment: "InlineDataFragment".intern(), diff --git a/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected b/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected index 95d9e8d4110c2..74550be6b36d4 100644 --- a/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected +++ b/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected @@ -127,7 +127,8 @@ extend type User { "node" ], "operation": require('ClientEdgeQuery_Foo_user_best_friend.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_Foo_user_best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected index 78e19b4e9d517..7a74837352739 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected @@ -244,7 +244,8 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected index 9d0cf6bcdcc5d..d4d7bcab5dd6d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected @@ -263,7 +263,8 @@ fragment fragmentOnNonNodeFetchableType_RefetchableFragment on NonNodeStory { "fetch__NonNodeStory" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "fetch_id" + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" } }, "name": "fragmentOnNonNodeFetchableType_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected index 84bfa1bd84746..2c556249038fc 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected @@ -235,7 +235,8 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected index b4cc718ccffa0..80212eb994aaa 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected @@ -321,7 +321,8 @@ fragment providedVariableRefetchableFragment_providedVariableFragment on User { "node" ], "operation": require('refetchableQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "providedVariableRefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected index 35b9c79c1e5a3..4d1a15020d3d3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected @@ -318,7 +318,8 @@ fragment refetchableConnectionCustomHandler_RefetchableConnection_feedback on Fe "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableConnectionCustomHandler_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected index fb16f42a15e28..4a6721d28857c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected @@ -318,7 +318,8 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected index e91b8492174b1..3743891f2f36c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected @@ -243,7 +243,8 @@ fragment refetchableFragmentOnNodeWithMissingId_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentOnNodeWithMissingId_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected index a26bdf4b5f4f2..1c1aecbdf9e34 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected @@ -421,7 +421,8 @@ fragment refetchableFragmentWithConnectionBidirectional_PaginationFragment_1G22u "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentWithConnectionBidirectional_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected index 9616b19185e26..0b3f6f0d2478c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected @@ -355,7 +355,8 @@ import RefetchableFragmentQuery_graphql from './RefetchableFragmentQuery.graphql "node" ], "operation": RefetchableFragmentQuery_graphql, - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentWithConnectionEsModules_PaginationFragment", 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 84b1abf3b93f3..971b818057dc0 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 @@ -365,7 +365,8 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment_1G22uz o "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentWithConnectionWithStream_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected index aef310842b6a4..3b49265580dca 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected @@ -348,7 +348,8 @@ fragment refetchableFragmentWithConnection_PaginationFragment_1G22uz on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentWithConnection_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected index 2e3e9c3c9efa2..f98a420cfe023 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected @@ -287,7 +287,8 @@ fragment relayResolverBackingClientEdge_best_friend_resolver on User { "node" ], "operation": require('ClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best_friend.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected index ffc0f4c494e0a..75925a7c09231 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected @@ -292,7 +292,8 @@ fragment relayResolverWithRequiredClientEdge_best_friend_resolver on User { "node" ], "operation": require('ClientEdgeQuery_relayResolverWithRequiredClientEdgeQuery_me__best_friend.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_relayResolverWithRequiredClientEdgeQuery_me__best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected index 01249a6d7a551..e40b78b259ede 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected @@ -244,7 +244,8 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id" + "identifierField": "global_id", + "identifierQueryVariableName": "global_id" } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected index 5f0a60287bc01..3f15d4a21fd6e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected @@ -235,7 +235,8 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id" + "identifierField": "global_id", + "identifierQueryVariableName": "global_id" } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected index 006ab5afb60b9..48464c6805faf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected @@ -318,7 +318,8 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "global_id" + "identifierField": "global_id", + "identifierQueryVariableName": "global_id" } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected index 551bbf5f813d8..9c60324edda47 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected @@ -243,7 +243,8 @@ fragment refetchableFragmentOnNodeWithMissingId_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id" + "identifierField": "global_id", + "identifierQueryVariableName": "global_id" } }, "name": "refetchableFragmentOnNodeWithMissingId_RefetchableFragment", diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs index a0f6a7f259e17..3e0ef53adfa81 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs @@ -73,6 +73,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![fetch_field_name], identifier_field: Some(identifier_field_name), + identifier_query_variable_name: Some(id_name), }, ), selections: enforce_selections_with_id_field( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs index 3a4ea581ae061..26a3fcf9ff2ad 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs @@ -121,6 +121,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![CONSTANTS.node_field_name], identifier_field: Some(id_name), + identifier_query_variable_name: Some(id_name), }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs index dc0498f6c2ecb..6b60c000be46f 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs @@ -42,6 +42,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![], identifier_field: None, + identifier_query_variable_name: None, }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs index b8e7886aa82eb..f70aff1128ff1 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs @@ -36,6 +36,7 @@ pub struct RefetchableMetadata { pub operation_name: OperationDefinitionName, pub path: Vec, pub identifier_field: Option, + pub identifier_query_variable_name: Option, } associated_data_impl!(RefetchableMetadata); diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs index 54ce6bd2175e7..fa5468f9b875d 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs @@ -51,6 +51,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![CONSTANTS.viewer_field_name], identifier_field: None, + identifier_query_variable_name: None, }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected index 41724255c79db..6a909460e78ac 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected @@ -105,6 +105,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { doesViewerLike @@ -133,6 +136,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend_1 on User @__ClientEdge # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected index 5e253386f697d..a4bb46de412b2 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected @@ -113,6 +113,9 @@ fragment RefetchableClientEdgeQuery_Foo_node_PhotoStory__author__best_friend on # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name @@ -141,6 +144,9 @@ fragment RefetchableClientEdgeQuery_Foo_node_Story__author__best_friend on User # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { doesViewerLike diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected index 52d62c03e5905..98ffe6817e918 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected @@ -69,6 +69,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { url(site: $site) diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected index 1a6166afcb5a8..b284b7c9dacda 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected @@ -73,6 +73,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected index 34a702c7c1cf4..b71d4ea877751 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected @@ -73,6 +73,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_nearest_neighbor__best_friend on Us # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected index 7bb90aa47d756..2e1949b1888b1 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected @@ -69,6 +69,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected index f49abf7c7c25f..63f1e228bd773 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected @@ -99,6 +99,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { url(site: $top_level_site) @@ -153,6 +156,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend__best_friend on User @_ # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected index bed5e98690744..87b9b798123ba 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected @@ -95,6 +95,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { ... @__ClientEdgeMetadataDirective @@ -147,6 +150,9 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend__best_friend on User @_ # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { name diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected index 4926ff054656e..6613379364dcd 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected @@ -46,6 +46,9 @@ fragment RefetchableFragment on Actor @refetchable(queryName: "RefetchableFragme # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected index 24fcc9c8c238e..57619eeb880c9 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected @@ -29,6 +29,9 @@ fragment RefetchableFragment on AllConcreteTypesImplementNode @refetchable(query # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { count diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected index 41b3809f57666..848d0dbc7d9c4 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected @@ -45,6 +45,9 @@ fragment RefetchableFragment on Node @refetchable(queryName: "RefetchableFragmen # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { ... on User { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected index 56c23e5b6356e..05d1374eb95e9 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected @@ -46,6 +46,9 @@ fragment RefetchableFragment on Node @refetchable(queryName: "RefetchableFragmen # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected index 9dd87caa451ef..202025f153c5b 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected @@ -44,6 +44,9 @@ fragment RefetchableFragment on NonNodeStory @refetchable(queryName: "Refetchabl # identifier_field: Some( # "fetch_id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { actor { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected index 3575ea631bc28..cd6ae6c36eb1e 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected @@ -44,6 +44,9 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { __id: id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected index 90fe9a85f5572..1d3104b35607d 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected @@ -44,6 +44,9 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected index 5c5d20f3a1dd9..c8b52d922e2e1 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected @@ -69,6 +69,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # ), # path: [], # identifier_field: None, +# identifier_query_variable_name: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected index d0f990fdaac31..62e9290c954b9 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected @@ -45,6 +45,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # ), # path: [], # identifier_field: None, +# identifier_query_variable_name: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected index 09f0c9d6ac7f7..7078ce8da7a1c 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected @@ -43,6 +43,7 @@ fragment RefetchableFragment on Viewer @refetchable(queryName: "RefetchableFragm # "viewer", # ], # identifier_field: None, +# identifier_query_variable_name: None, # } { actor { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected index 125a1ff64e197..7abe5169c6de9 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected @@ -56,6 +56,9 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected index 6ed24b57b60ad..b152cd835e780 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected @@ -55,6 +55,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # ), # path: [], # identifier_field: None, +# identifier_query_variable_name: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected index fc3f6e3900796..4f9fc7ae83f10 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected @@ -55,6 +55,7 @@ fragment RefetchableFragment on Viewer @refetchable(queryName: "RefetchableFragm # "viewer", # ], # identifier_field: None, +# identifier_query_variable_name: None, # } { actor { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected index 1b6b932b5b44d..bb809bb65c97e 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected @@ -81,6 +81,9 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id 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 be80f33782b6b..dc9335067bf7b 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 @@ -71,6 +71,9 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected index 37eb65f619c1e..62d7ed92983ac 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected @@ -71,6 +71,9 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id From d739d71b732475f8488030556902fd13c471ed05 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Thu, 1 Sep 2022 21:26:33 -0500 Subject: [PATCH 04/13] use the new metadata field on hooks --- .../relay-hooks/useLoadMoreFunction.js | 8 +++-- .../relay-hooks/useRefetchableFragmentNode.js | 32 +++++++++---------- packages/relay-runtime/util/ReaderNode.js | 1 + .../relay-runtime/util/getRefetchMetadata.js | 4 +++ 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/packages/react-relay/relay-hooks/useLoadMoreFunction.js b/packages/react-relay/relay-hooks/useLoadMoreFunction.js index e94f40ac93032..50f4919591eed 100644 --- a/packages/react-relay/relay-hooks/useLoadMoreFunction.js +++ b/packages/react-relay/relay-hooks/useLoadMoreFunction.js @@ -35,6 +35,7 @@ const { getPaginationVariables, getSelector, getValueAtPath, + getRefetchMetadata } = require('relay-runtime'); const warning = require('warning'); @@ -114,6 +115,9 @@ function useLoadMoreFunction( connectionPathInFragmentData, ); + const {identifierQueryVariableName} = + getRefetchMetadata(fragmentNode, componentDisplayName); + // Dispose of pagination requests in flight when unmounting useEffect(() => { return () => { @@ -201,7 +205,7 @@ function useLoadMoreFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. - if (identifierField != null) { + if (identifierQueryVariableName != null) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check // that there actually is a value at runtime. @@ -214,7 +218,7 @@ function useLoadMoreFunction( identifierValue, ); } - paginationVariables[identifierField] = identifierValue; + paginationVariables[identifierQueryVariableName] = identifierValue; } const paginationQuery = createOperationDescriptor( diff --git a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js index 47c4d69384e35..d1d3e186a6211 100644 --- a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js +++ b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js @@ -214,6 +214,12 @@ function useRefetchableFragmentNode< >((refetchableRequest: $FlowFixMe)); let fragmentRef = parentFragmentRef; + + const {identifierQueryVariableName} = getRefetchMetadata( + fragmentNode, + componentDisplayName, + ); + if (shouldReset) { dispatch({ type: 'reset', @@ -239,8 +245,7 @@ function useRefetchableFragmentNode< debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType( refetchQuery.request.variables, fragmentRefPathInResponse, - fragmentNode, - componentDisplayName, + identifierQueryVariableName, environment, ); } @@ -348,6 +353,7 @@ function useRefetchableFragmentNode< fragmentNode, fragmentRefPathInResponse, identifierField, + identifierQueryVariableName, loadQuery, parentFragmentRef, refetchableRequest, @@ -384,6 +390,7 @@ function useRefetchFunction( fragmentNode: ReaderFragment, fragmentRefPathInResponse: $ReadOnlyArray, identifierField: ?string, + identifierQueryVariableName: ?string, loadQuery: LoaderFn, parentFragmentRef: mixed, refetchableRequest: ConcreteRequest, @@ -460,8 +467,8 @@ function useRefetchFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. if ( - identifierField != null && - !providedRefetchVariables.hasOwnProperty(identifierField) + identifierQueryVariableName != null && + !providedRefetchVariables.hasOwnProperty(identifierQueryVariableName) ) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check @@ -475,7 +482,8 @@ function useRefetchFunction( identifierValue, ); } - (refetchVariables: $FlowFixMe)[identifierField] = identifierValue; + (refetchVariables: $FlowFixMe)[identifierQueryVariableName] = + identifierValue; } const refetchQuery = createOperationDescriptor( @@ -524,21 +532,11 @@ if (__DEV__) { getInitialIDAndType( memoRefetchVariables: ?Variables, fragmentRefPathInResponse: $ReadOnlyArray, - fragmentNode: ReaderFragment, - componentDisplayName: string, + identifierQueryVariableName: ?string, environment: IEnvironment, ): ?DebugIDandTypename { const {Record} = require('relay-runtime'); - const {identifierField} = getRefetchMetadata( - fragmentNode, - componentDisplayName, - ); - const id = - identifierField !== null && - identifierField !== undefined && - identifierField !== '' - ? memoRefetchVariables?.[identifierField] - : null; + const id = memoRefetchVariables?.[identifierQueryVariableName ?? 'id']; if ( fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || diff --git a/packages/relay-runtime/util/ReaderNode.js b/packages/relay-runtime/util/ReaderNode.js index c625c25b1a783..cd051b7daca13 100644 --- a/packages/relay-runtime/util/ReaderNode.js +++ b/packages/relay-runtime/util/ReaderNode.js @@ -81,6 +81,7 @@ export type ReaderRefetchMetadata = { +operation: string | ConcreteRequest, +fragmentPathInResult: Array, +identifierField?: ?string, + +identifierQueryVariableName?: ?string, }; // Stricter form of ConnectionMetadata diff --git a/packages/relay-runtime/util/getRefetchMetadata.js b/packages/relay-runtime/util/getRefetchMetadata.js index 60f3c61d69099..710b1f21315b8 100644 --- a/packages/relay-runtime/util/getRefetchMetadata.js +++ b/packages/relay-runtime/util/getRefetchMetadata.js @@ -22,6 +22,7 @@ function getRefetchMetadata( ): { fragmentRefPathInResponse: $ReadOnlyArray, identifierField: ?string, + identifierQueryVariableName: ?string, refetchableRequest: ConcreteRequest, refetchMetadata: ReaderRefetchMetadata, } { @@ -59,6 +60,8 @@ function getRefetchMetadata( componentDisplayName, ); const identifierField = refetchMetadata.identifierField; + const identifierQueryVariableName = + refetchMetadata.identifierQueryVariableName; invariant( identifierField == null || typeof identifierField === 'string', 'Relay: getRefetchMetadata(): Expected `identifierField` to be a string.', @@ -66,6 +69,7 @@ function getRefetchMetadata( return { fragmentRefPathInResponse, identifierField, + identifierQueryVariableName, refetchableRequest, refetchMetadata, }; From 667bf9a8a83c27ef212a129d115369c7dcdc996b Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Thu, 1 Sep 2022 21:31:28 -0500 Subject: [PATCH 05/13] update generated tests files --- ...able-interface-all-implementing-types-impl-node.expected | 3 +++ ...refetchable-interface-but-no-implementing-types.expected | 3 +++ .../refetchable-interface-some-types-impl-node.expected | 3 +++ .../fixtures/refetchable-interface.expected | 6 ++++++ ...geQuery_ClientEdgesTest1Query_me__client_node.graphql.js | 3 ++- ...geQuery_ClientEdgesTest2Query_me__client_node.graphql.js | 3 ++- ...geQuery_ClientEdgesTest3Query_me__client_node.graphql.js | 3 ++- ...eQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js | 3 ++- ...esolversTest13Query_live_constant_client_edge.graphql.js | 3 ++- ...Test15Query_live_user_resolver_always_suspend.graphql.js | 3 ++- ...ResourceClientEdgesTest2Query_me__client_edge.graphql.js | 3 ++- ...tResourceClientEdgesTestFragment1_client_edge.graphql.js | 3 ++- .../useBlockingPaginationFragmentTest2Fragment.graphql.js | 3 ++- .../useBlockingPaginationFragmentTest4Fragment.graphql.js | 3 ++- ...useBlockingPaginationFragmentTestUserFragment.graphql.js | 3 ++- ...ragmentWithSuspenseTransitionTestUserFragment.graphql.js | 3 ++- .../usePaginationFragmentTest3Fragment.graphql.js | 3 ++- .../usePaginationFragmentTestStoryFragment.graphql.js | 3 ++- .../usePaginationFragmentTestUserFragment.graphql.js | 3 ++- ...ginationFragmentTestUserFragmentWithStreaming.graphql.js | 3 ++- .../useRefetchableFragmentNodeTest1Fragment.graphql.js | 3 ++- .../useRefetchableFragmentNodeTest3Fragment.graphql.js | 3 ++- .../useRefetchableFragmentNodeTestUserFragment.graphql.js | 3 ++- ...fetchableFragmentNodeTestUserFragmentWithArgs.graphql.js | 3 ++- ...entNodeWithSuspenseTransitionTestUserFragment.graphql.js | 3 ++- .../useRefetchableFragmentTestUserFragment.graphql.js | 3 ++- .../__generated__/GraphQLTagTest2UserFragment.graphql.js | 3 ++- .../__generated__/GraphQLTagTest3UserFragment.graphql.js | 3 ++- .../__generated__/GraphQLTagTest5UserFragment.graphql.js | 3 ++- .../__generated__/GraphQLTagTest6UserFragment.graphql.js | 3 ++- ...ayReaderClientEdgesTest1Query_me__client_edge.graphql.js | 3 ++- ...ayReaderClientEdgesTest2Query_me__client_edge.graphql.js | 3 ++- ...ayReaderClientEdgesTest3Query_me__client_edge.graphql.js | 3 ++- ...ayReaderClientEdgesTest4Query_me__client_edge.graphql.js | 3 ++- ...st4Query_me__client_edge__another_client_edge.graphql.js | 3 ++- ...e__client_extension_linked_field__client_edge.graphql.js | 3 ++- ...elayReaderClientEdgesTest6Query_me__the_alias.graphql.js | 3 ++- ...derClientEdgesTest7Query_me__null_client_edge.graphql.js | 3 ++- ...elayReaderResolverTest24Query_me__client_edge.graphql.js | 3 ++- ...ntEdgeQuery_LiveExternalGreetingFragment_user.graphql.js | 3 ++- ...solversTestUnsubscribesWhenSuspendsQuery_user.graphql.js | 3 ++- ...tEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js | 3 ++- ...Query_UserReadsClientEdgeResolver_client_edge.graphql.js | 3 ++- .../__generated__/ResolverTest2Fragment.graphql.js | 3 ++- 44 files changed, 95 insertions(+), 40 deletions(-) diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected index cd1ca7de5cb43..f55a33d108443 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected @@ -43,6 +43,9 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected index e847c8de938fb..8d4a261f9db89 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected @@ -42,6 +42,9 @@ fragment RefetchableFragmentFoo on RefetchableInterfaceFoo @refetchable(queryNam # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected index 84d3aef63c5b2..4e62eef37f9b8 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected @@ -47,6 +47,9 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected index 111bc31ee4b08..1351ceed898c4 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected @@ -71,6 +71,9 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # identifier_field: Some( # "id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { id @@ -88,6 +91,9 @@ fragment RefetchableFragment2 on RefetchableInterface2 @refetchable(queryName: " # identifier_field: Some( # "not_id", # ), +# identifier_query_variable_name: Some( +# "id", +# ), # } { __typename diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js index 587d40d97d031..6f530a0eee891 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js index e805db54a739c..91d20bf2dc52a 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js index 059f6b7e86d0f..86393de6869f4 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js index 983580e521c9a..0dd3fa8452de2 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js index 62cab892da755..4871ce8528208 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js index 53ea975b62a9f..2b1f63bf16146 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js index 91bbc3e4ca20e..92c962efb0417 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js @@ -45,7 +45,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js index 4c7792737c40d..6488680560a6a 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js index 33d57e5d4f3d2..c36fbaf57849c 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js @@ -104,7 +104,8 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentTest2FragmentPaginationQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useBlockingPaginationFragmentTest2Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js index e745912d5c34d..579ff9e4e90f6 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js @@ -42,7 +42,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useBlockingPaginationFragmentTest4FragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useBlockingPaginationFragmentTest4Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js index 4678c0e486c85..404a61938c350 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js @@ -121,7 +121,8 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useBlockingPaginationFragmentTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js index 1099edc1b86ee..6a6666d514129 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js @@ -116,7 +116,8 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js index 6fafdbca83c76..5de952036b50d 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js @@ -42,7 +42,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./usePaginationFragmentTest3FragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "usePaginationFragmentTest3Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js index dfd166b6b4bf7..1ddabe6d5dedb 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js @@ -80,7 +80,8 @@ return { "fetch__NonNodeStory" ], "operation": require('./usePaginationFragmentTestStoryFragmentRefetchQuery.graphql'), - "identifierField": "fetch_id" + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" } }, "name": "usePaginationFragmentTestStoryFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js index d0c207e77edb9..8f8f423dad20b 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js @@ -121,7 +121,8 @@ return { "node" ], "operation": require('./usePaginationFragmentTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "usePaginationFragmentTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js index f9d61f3ac5d40..7b348c0347926 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js @@ -122,7 +122,8 @@ return { "node" ], "operation": require('./usePaginationFragmentTestUserFragmentStreamingPaginationQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "usePaginationFragmentTestUserFragmentWithStreaming", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js index 82356118917e1..435675b0a5c3b 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js @@ -46,7 +46,8 @@ var node/*: ReaderFragment*/ = { "fetch__NonNodeStory" ], "operation": require('./useRefetchableFragmentNodeTest1FragmentRefetchQuery.graphql'), - "identifierField": "fetch_id" + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentNodeTest1Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js index 4d9e5c135e1b0..40b2750597b7a 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js @@ -53,7 +53,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTest3FragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentNodeTest3Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js index b7ae7de39b77a..f0819643038e4 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js @@ -53,7 +53,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentNodeTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js index cf380bbfab984..f158e93e4c1b4 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js @@ -54,7 +54,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTestUserFragmentWithArgsRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentNodeTestUserFragmentWithArgs", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js index 9662abdb4c3fc..b85eac47d9ae7 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js @@ -53,7 +53,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js index 125213c163d20..47743280cec53 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js @@ -53,7 +53,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "useRefetchableFragmentTestUserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js index 2017f8de5f041..25bd144ebfe1f 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./GraphQLTagTestUserFragment1RefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "GraphQLTagTest2UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js index 838f63678793c..1b2c539b9ab09 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js @@ -85,7 +85,8 @@ return { "node" ], "operation": require('./GraphQLTagTestUserFragment2RefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "GraphQLTagTest3UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js index 24785fff621b4..6adfc4c8b32ad 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./GraphQLTagTestUserFragment3RefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "GraphQLTagTest5UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js index 31333eef99c3c..d99de9975f102 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js @@ -85,7 +85,8 @@ return { "node" ], "operation": require('./GraphQLTagTestUserFragment4RefetchQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "GraphQLTagTest6UserFragment", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js index d7da8c36426f0..1ece19ef01961 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js index d99fd12252f62..196f078c1bf01 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js @@ -45,7 +45,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js index 9dd7a8f9d6a68..5d511b9840089 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js @@ -44,7 +44,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js index 4c96289085b99..5171963b90f87 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js @@ -55,7 +55,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js index 62833ab725080..04a70244a14a3 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js index 8d33da47ecf20..2fefeae536e01 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js index 6cfb7a5c23057..1c7fb9d89c472 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js index a0aff1512a9cd..1aa5ef80ea0a2 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js index 95697bddf5753..f1fe41e40e98a 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js index d8c7eb643f408..43a2359917678 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveExternalGreetingFragment_user.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js index 9565882bb332e..b0d7ade26caa0 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js @@ -42,7 +42,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js index cc9aa4016ff7c..afa2651e40192 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js index c5e9c4e49a1c6..ac7a03e87a689 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js @@ -43,7 +43,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js index 373180604a9fc..7024875b99908 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js @@ -50,7 +50,8 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ResolverTest1FragmentRefetchableQuery.graphql'), - "identifierField": "id" + "identifierField": "id", + "identifierQueryVariableName": "id" } }, "name": "ResolverTest2Fragment", From 74f72f406da7e71ba8f3d7bee675984c3f92e018 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Thu, 1 Sep 2022 23:00:11 -0500 Subject: [PATCH 06/13] Use the new metadata field on react-cache hooks --- ...RefetchableFragmentInternal_REACT_CACHE.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js b/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js index da31a153c31aa..2c076efda07ea 100644 --- a/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +++ b/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js @@ -171,8 +171,12 @@ function useRefetchableFragmentNode< componentDisplayName: string, ): ReturnType { const parentEnvironment = useRelayEnvironment(); - const {refetchableRequest, fragmentRefPathInResponse, identifierField} = - getRefetchMetadata(fragmentNode, componentDisplayName); + const { + refetchableRequest, + fragmentRefPathInResponse, + identifierField, + identifierQueryVariableName, + } = getRefetchMetadata(fragmentNode, componentDisplayName); const fragmentIdentifier = getFragmentIdentifier( fragmentNode, parentFragmentRef, @@ -236,6 +240,7 @@ function useRefetchableFragmentNode< debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType( refetchQuery.request.variables, fragmentRefPathInResponse, + identifierQueryVariableName, environment, ); } @@ -344,6 +349,7 @@ function useRefetchableFragmentNode< fragmentNode, fragmentRefPathInResponse, identifierField, + identifierQueryVariableName, loadQuery, parentFragmentRef, refetchableRequest, @@ -378,6 +384,7 @@ function useRefetchFunction( fragmentNode: ReaderFragment, fragmentRefPathInResponse: $ReadOnlyArray, identifierField: ?string, + identifierQueryVariableName: ?string, loadQuery: LoaderFn, parentFragmentRef: mixed, refetchableRequest: ConcreteRequest, @@ -454,8 +461,8 @@ function useRefetchFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. if ( - identifierField != null && - !providedRefetchVariables.hasOwnProperty('id') + identifierQueryVariableName != null && + !providedRefetchVariables.hasOwnProperty(identifierQueryVariableName) ) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check @@ -469,7 +476,7 @@ function useRefetchFunction( identifierValue, ); } - (refetchVariables: $FlowFixMe).id = identifierValue; + (refetchVariables: $FlowFixMe)[identifierQueryVariableName] = identifierValue; } const refetchQuery = createOperationDescriptor( @@ -518,10 +525,11 @@ if (__DEV__) { getInitialIDAndType( memoRefetchVariables: ?Variables, fragmentRefPathInResponse: $ReadOnlyArray, + identifierQueryVariableName: ?string, environment: IEnvironment, ): ?DebugIDandTypename { const {Record} = require('relay-runtime'); - const id = memoRefetchVariables?.id; + const id = memoRefetchVariables?.[identifierQueryVariableName ?? 'id']; if ( fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || From c9bbb95f51cf3f8e917b0913a7d049411f7e3a86 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Sun, 5 Mar 2023 16:38:17 -0600 Subject: [PATCH 07/13] Support configuring the node query variable --- .../fixtures/fragment-on-node-interface.expected | 2 +- ...agment-on-object-implementing-node-interface.expected | 2 +- .../fixtures/refetchable-connection.expected | 2 +- ...refetchable-fragment-on-node-with-missing-id.expected | 2 +- compiler/crates/relay-config/src/project_config.rs | 9 +++++++++ .../refetchable_fragment/fetchable_query_generator.rs | 2 +- .../src/refetchable_fragment/node_query_generator.rs | 2 +- packages/relay-compiler/README.md | 1 + 8 files changed, 16 insertions(+), 6 deletions(-) diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected index e40b78b259ede..22200e4452c9b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected @@ -245,7 +245,7 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { ], "operation": require('RefetchableFragmentQuery.graphql'), "identifierField": "global_id", - "identifierQueryVariableName": "global_id" + "identifierQueryVariableName": "id" } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected index 3f15d4a21fd6e..3c28b745b8f80 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected @@ -236,7 +236,7 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { ], "operation": require('RefetchableFragmentQuery.graphql'), "identifierField": "global_id", - "identifierQueryVariableName": "global_id" + "identifierQueryVariableName": "id" } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected index 48464c6805faf..1faf904dc95be 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected @@ -319,7 +319,7 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { ], "operation": require('RefetchableConnectionQuery.graphql'), "identifierField": "global_id", - "identifierQueryVariableName": "global_id" + "identifierQueryVariableName": "id" } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected index 9c60324edda47..b05438192e05a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected @@ -244,7 +244,7 @@ fragment refetchableFragmentOnNodeWithMissingId_RefetchableFragment on Node { ], "operation": require('RefetchableFragmentQuery.graphql'), "identifierField": "global_id", - "identifierQueryVariableName": "global_id" + "identifierQueryVariableName": "id" } }, "name": "refetchableFragmentOnNodeWithMissingId_RefetchableFragment", diff --git a/compiler/crates/relay-config/src/project_config.rs b/compiler/crates/relay-config/src/project_config.rs index d76dcbce01ab3..d3c62e888c340 100644 --- a/compiler/crates/relay-config/src/project_config.rs +++ b/compiler/crates/relay-config/src/project_config.rs @@ -156,6 +156,10 @@ pub struct SchemaConfig { #[serde(default = "default_node_interface_id_field")] pub node_interface_id_field: StringKey, + /// The name of the variable expected by the `node` query. + #[serde(default = "default_node_interface_id_variable_name")] + pub node_interface_id_variable_name: StringKey, + #[serde(default)] pub non_node_id_fields: Option, @@ -168,6 +172,10 @@ fn default_node_interface_id_field() -> StringKey { "id".intern() } +fn default_node_interface_id_variable_name() -> StringKey { + "id".intern() +} + fn default_unselectable_directive_name() -> DirectiveName { DirectiveName("unselectable".intern()) } @@ -177,6 +185,7 @@ impl Default for SchemaConfig { Self { connection_interface: ConnectionInterface::default(), node_interface_id_field: default_node_interface_id_field(), + node_interface_id_variable_name: default_node_interface_id_variable_name(), non_node_id_fields: None, unselectable_directive_name: default_unselectable_directive_name(), } diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs index 3e0ef53adfa81..4a8264f63f6f8 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs @@ -73,7 +73,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![fetch_field_name], identifier_field: Some(identifier_field_name), - identifier_query_variable_name: Some(id_name), + identifier_query_variable_name: Some(schema_config.node_interface_id_variable_name), }, ), selections: enforce_selections_with_id_field( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs index 26a3fcf9ff2ad..424ea01eb98af 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs @@ -121,7 +121,7 @@ fn build_refetch_operation( operation_name: query_name, path: vec![CONSTANTS.node_field_name], identifier_field: Some(id_name), - identifier_query_variable_name: Some(id_name), + identifier_query_variable_name: Some(schema_config.node_interface_id_variable_name), }, ), used_global_variables: build_used_global_variables( diff --git a/packages/relay-compiler/README.md b/packages/relay-compiler/README.md index adfe85208b530..979620e129ab8 100644 --- a/packages/relay-compiler/README.md +++ b/packages/relay-compiler/README.md @@ -73,6 +73,7 @@ file sources, and "listen" to the file changes in the "watch" mode. If - `schemaConfig` - `nodeInterfaceIdField` Configure the name of the globally unique ID field on the Node interface. Useful if you can't use the default `id` field name. + - `nodeInterfaceIdVariableName` Specifies the name of the variable expected by the `node` query to pass the Node id. [string][default: "id"] - `nonNodeIdFields` Restricts the type of all fields named `id` to `ID`. - `allowedIdTypes` Mappings from types in your schema to allowed types From c5be93197d0708249d3d0264cd67a9f972cc996d Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Sun, 5 Mar 2023 16:39:18 -0600 Subject: [PATCH 08/13] Add tests with custom node query variable name --- ...terface-with-custom-variable-name.expected | 282 ++++++++++++ ...terface-with-custom-variable-name.expected | 266 +++++++++++ ...nection-with-custom-variable-name.expected | 416 ++++++++++++++++++ .../mod.rs | 12 +- ...ile_relay_artifacts_with_custom_id_test.rs | 176 ++++++-- 5 files changed, 1118 insertions(+), 34 deletions(-) create mode 100644 compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected create mode 100644 compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected create mode 100644 compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected new file mode 100644 index 0000000000000..0d3f87e4c899d --- /dev/null +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected @@ -0,0 +1,282 @@ +==================================== INPUT ==================================== +fragment fragmentOnNodeInterface_RefetchableFragment on Node + @refetchable(queryName: "RefetchableFragmentQuery") { + global_id + ... on User { + name + ...fragmentOnNodeInterface_ProfilePicture + } +} + +fragment fragmentOnNodeInterface_ProfilePicture on User { + profilePicture(size: $size) { + uri + } +} +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": null, + "name": "RefetchableFragmentQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "args": null, + "kind": "FragmentSpread", + "name": "fragmentOnNodeInterface_RefetchableFragment" + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "size" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + } + ], + "kind": "Operation", + "name": "RefetchableFragmentQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__typename", + "storageKey": null + }, + { + "kind": "TypeDiscriminator", + "abstractKey": "__isNode" + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "kind": "InlineFragment", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "name", + "storageKey": null + }, + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "size", + "variableName": "size" + } + ], + "concreteType": "Image", + "kind": "LinkedField", + "name": "profilePicture", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "uri", + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "User", + "abstractKey": null + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", + "id": null, + "metadata": {}, + "name": "RefetchableFragmentQuery", + "operationKind": "query", + "text": null + } +} + +QUERY: + +query RefetchableFragmentQuery( + $size: [Int] + $global_id: ID! +) { + node(global_id: $global_id) { + __typename + ...fragmentOnNodeInterface_RefetchableFragment + global_id + } +} + +fragment fragmentOnNodeInterface_ProfilePicture on User { + profilePicture(size: $size) { + uri + } +} + +fragment fragmentOnNodeInterface_RefetchableFragment on Node { + __isNode: __typename + global_id + ... on User { + name + ...fragmentOnNodeInterface_ProfilePicture + } +} + + +{ + "argumentDefinitions": [ + { + "kind": "RootArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": null, + "name": "fragmentOnNodeInterface_ProfilePicture", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "size", + "variableName": "size" + } + ], + "concreteType": "Image", + "kind": "LinkedField", + "name": "profilePicture", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "uri", + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "User", + "abstractKey": null +} + +{ + "argumentDefinitions": [ + { + "kind": "RootArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": { + "refetch": { + "connection": null, + "fragmentPathInResult": [ + "node" + ], + "operation": require('RefetchableFragmentQuery.graphql'), + "identifierField": "global_id", + "identifierQueryVariableName": "variable_name" + } + }, + "name": "fragmentOnNodeInterface_RefetchableFragment", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "kind": "InlineFragment", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "name", + "storageKey": null + }, + { + "args": null, + "kind": "FragmentSpread", + "name": "fragmentOnNodeInterface_ProfilePicture" + } + ], + "type": "User", + "abstractKey": null + } + ], + "type": "Node", + "abstractKey": "__isNode" +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected new file mode 100644 index 0000000000000..5686de41a34b8 --- /dev/null +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected @@ -0,0 +1,266 @@ +==================================== INPUT ==================================== +fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User + @refetchable(queryName: "RefetchableFragmentQuery") { + global_id + name + ...fragmentOnObjectImplementingNodeInterface_ProfilePicture +} + +fragment fragmentOnObjectImplementingNodeInterface_ProfilePicture on User { + profilePicture(size: $size) { + uri + } +} +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": null, + "name": "RefetchableFragmentQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "args": null, + "kind": "FragmentSpread", + "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment" + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "size" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + } + ], + "kind": "Operation", + "name": "RefetchableFragmentQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__typename", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "kind": "InlineFragment", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "name", + "storageKey": null + }, + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "size", + "variableName": "size" + } + ], + "concreteType": "Image", + "kind": "LinkedField", + "name": "profilePicture", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "uri", + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "User", + "abstractKey": null + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", + "id": null, + "metadata": {}, + "name": "RefetchableFragmentQuery", + "operationKind": "query", + "text": null + } +} + +QUERY: + +query RefetchableFragmentQuery( + $size: [Int] + $global_id: ID! +) { + node(global_id: $global_id) { + __typename + ...fragmentOnObjectImplementingNodeInterface_RefetchableFragment + global_id + } +} + +fragment fragmentOnObjectImplementingNodeInterface_ProfilePicture on User { + profilePicture(size: $size) { + uri + } +} + +fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { + global_id + name + ...fragmentOnObjectImplementingNodeInterface_ProfilePicture +} + + +{ + "argumentDefinitions": [ + { + "kind": "RootArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": null, + "name": "fragmentOnObjectImplementingNodeInterface_ProfilePicture", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "size", + "variableName": "size" + } + ], + "concreteType": "Image", + "kind": "LinkedField", + "name": "profilePicture", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "uri", + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "User", + "abstractKey": null +} + +{ + "argumentDefinitions": [ + { + "kind": "RootArgument", + "name": "size" + } + ], + "kind": "Fragment", + "metadata": { + "refetch": { + "connection": null, + "fragmentPathInResult": [ + "node" + ], + "operation": require('RefetchableFragmentQuery.graphql'), + "identifierField": "global_id", + "identifierQueryVariableName": "variable_name" + } + }, + "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "name", + "storageKey": null + }, + { + "args": null, + "kind": "FragmentSpread", + "name": "fragmentOnObjectImplementingNodeInterface_ProfilePicture" + } + ], + "type": "User", + "abstractKey": null +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected new file mode 100644 index 0000000000000..1faf904dc95be --- /dev/null +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected @@ -0,0 +1,416 @@ +==================================== INPUT ==================================== +fragment refetchableConnection_RefetchableConnection_feedback on Feedback + @refetchable(queryName: "RefetchableConnectionQuery") { + global_id + comments(first: $count, after: $cursor) + @connection(key: "RefetchableConnection_comments") { + edges { + cursor + node { + global_id + } + } + pageInfo { + endCursor + hasNextPage + } + } +} +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "count" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "cursor" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + } + ], + "kind": "Fragment", + "metadata": null, + "name": "RefetchableConnectionQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "args": null, + "kind": "FragmentSpread", + "name": "refetchableConnection_RefetchableConnection_feedback" + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "count" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "cursor" + }, + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "global_id" + } + ], + "kind": "Operation", + "name": "RefetchableConnectionQuery", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "global_id", + "variableName": "global_id" + } + ], + "concreteType": null, + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__typename", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "kind": "InlineFragment", + "selections": [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "after", + "variableName": "cursor" + }, + { + "kind": "Variable", + "name": "first", + "variableName": "count" + } + ], + "concreteType": "CommentsConnection", + "kind": "LinkedField", + "name": "comments", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "CommentsEdge", + "kind": "LinkedField", + "name": "edges", + "plural": true, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "cursor", + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "Comment", + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__typename", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "PageInfo", + "kind": "LinkedField", + "name": "pageInfo", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endCursor", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "hasNextPage", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "after", + "variableName": "cursor" + }, + { + "kind": "Variable", + "name": "first", + "variableName": "count" + } + ], + "filters": null, + "handle": "connection", + "key": "RefetchableConnection_comments", + "kind": "LinkedHandle", + "name": "comments" + } + ], + "type": "Feedback", + "abstractKey": null + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "5b0bba64f5feedde7f799aa3e6ec8e76", + "id": null, + "metadata": {}, + "name": "RefetchableConnectionQuery", + "operationKind": "query", + "text": null + } +} + +QUERY: + +query RefetchableConnectionQuery( + $count: Int + $cursor: ID + $global_id: ID! +) { + node(global_id: $global_id) { + __typename + ...refetchableConnection_RefetchableConnection_feedback + global_id + } +} + +fragment refetchableConnection_RefetchableConnection_feedback on Feedback { + global_id + comments(first: $count, after: $cursor) { + edges { + cursor + node { + global_id + __typename + } + } + pageInfo { + endCursor + hasNextPage + } + } +} + + +{ + "argumentDefinitions": [ + { + "kind": "RootArgument", + "name": "count" + }, + { + "kind": "RootArgument", + "name": "cursor" + } + ], + "kind": "Fragment", + "metadata": { + "connection": [ + { + "count": "count", + "cursor": "cursor", + "direction": "forward", + "path": [ + "comments" + ] + } + ], + "refetch": { + "connection": { + "forward": { + "count": "count", + "cursor": "cursor" + }, + "backward": null, + "path": [ + "comments" + ] + }, + "fragmentPathInResult": [ + "node" + ], + "operation": require('RefetchableConnectionQuery.graphql'), + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } + }, + "name": "refetchableConnection_RefetchableConnection_feedback", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "alias": "comments", + "args": null, + "concreteType": "CommentsConnection", + "kind": "LinkedField", + "name": "__RefetchableConnection_comments_connection", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "CommentsEdge", + "kind": "LinkedField", + "name": "edges", + "plural": true, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "cursor", + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "Comment", + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "global_id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__typename", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + }, + { + "alias": null, + "args": null, + "concreteType": "PageInfo", + "kind": "LinkedField", + "name": "pageInfo", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "endCursor", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "hasNextPage", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "Feedback", + "abstractKey": null +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/mod.rs b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/mod.rs index 681ecb6a94040..91bc98c7b2ee9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/mod.rs +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/mod.rs @@ -26,6 +26,7 @@ use graphql_syntax::parse_executable; use graphql_test_helpers::diagnostics_to_sorted_string; use graphql_text_printer::print_full_operation; use intern::string_key::Intern; +use intern::string_key::StringKey; use relay_codegen::build_request_params; use relay_codegen::print_fragment; use relay_codegen::print_operation; @@ -39,7 +40,10 @@ use relay_test_schema::get_test_schema_with_custom_id_with_extensions; use relay_transforms::apply_transforms; use relay_transforms::DIRECTIVE_SPLIT_OPERATION; -pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { +pub fn transform_fixture( + node_interface_query_variable_name: Option, + fixture: &Fixture<'_>, +) -> Result { let source_location = SourceLocationKey::standalone(fixture.file_name); if fixture.content.contains("%TODO%") { @@ -91,12 +95,16 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { relay_resolver_enable_output_type: FeatureFlag::Disabled, }; + let default_schema_config = SchemaConfig::default(); + let project_config = ProjectConfig { name: "test".intern(), feature_flags: Arc::new(feature_flags), schema_config: SchemaConfig { node_interface_id_field: "global_id".intern(), - ..Default::default() + node_interface_id_variable_name: node_interface_query_variable_name + .unwrap_or(default_schema_config.node_interface_id_variable_name), + ..default_schema_config }, js_module_format: JsModuleFormat::Haste, ..Default::default() diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id_test.rs b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id_test.rs index 2c97bed430c07..7bdc1c807401f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id_test.rs +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id_test.rs @@ -11,115 +11,227 @@ mod compile_relay_artifacts_with_custom_id; use compile_relay_artifacts_with_custom_id::transform_fixture; use fixture_tests::test_fixture; +use fixture_tests::Fixture; +use intern::string_key::Intern; + +fn transform_fixture_with_default_variable_name(fixture: &Fixture<'_>) -> Result { + transform_fixture(None, fixture) +} + +fn transform_fixture_with_custom_variable_name(fixture: &Fixture<'_>) -> Result { + transform_fixture(Some("variable_name".intern()), fixture) +} #[test] fn fragment_on_node_interface() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected"); - test_fixture(transform_fixture, "fragment-on-node-interface.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected", input, expected); + let input = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.graphql" + ); + let expected = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected" + ); + test_fixture( + transform_fixture_with_default_variable_name, + "fragment-on-node-interface.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected", + input, + expected, + ); +} + +#[test] +fn fragment_on_node_interface_with_custom_variable_name() { + let input = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.graphql" + ); + let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected"); + test_fixture(transform_fixture_with_custom_variable_name, "fragment-on-node-interface.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected", input, expected); } #[test] fn fragment_on_object_implementing_node_interface() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected"); - test_fixture(transform_fixture, "fragment-on-object-implementing-node-interface.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "fragment-on-object-implementing-node-interface.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected", input, expected); +} + +#[test] +fn fragment_on_object_implementing_node_interface_with_custom_variable_name() { + let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.graphql"); + let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected"); + test_fixture(transform_fixture_with_custom_variable_name, "fragment-on-object-implementing-node-interface.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected", input, expected); } #[test] fn fragment_on_query() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected"); - test_fixture(transform_fixture, "fragment-on-query.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected", input, expected); + let input = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.graphql"); + let expected = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected"); + test_fixture( + transform_fixture_with_default_variable_name, + "fragment-on-query.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected", + input, + expected, + ); } #[test] fn fragment_on_query_with_cycle_invalid() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query-with-cycle.invalid.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query-with-cycle.invalid.expected"); - test_fixture(transform_fixture, "fragment-on-query-with-cycle.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query-with-cycle.invalid.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "fragment-on-query-with-cycle.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query-with-cycle.invalid.expected", input, expected); } #[test] fn fragment_on_viewer() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected"); - test_fixture(transform_fixture, "fragment-on-viewer.graphql", "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected", input, expected); + let input = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.graphql"); + let expected = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected"); + test_fixture( + transform_fixture_with_default_variable_name, + "fragment-on-viewer.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected", + input, + expected, + ); } #[test] fn id_as_alias_invalid() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.expected"); - test_fixture(transform_fixture, "id-as-alias.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.expected", input, expected); + let input = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.graphql"); + let expected = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.expected" + ); + test_fixture( + transform_fixture_with_default_variable_name, + "id-as-alias.invalid.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/id-as-alias.invalid.expected", + input, + expected, + ); } #[test] fn kitchen_sink() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected"); - test_fixture(transform_fixture, "kitchen-sink.graphql", "compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected", input, expected); + let input = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.graphql"); + let expected = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected"); + test_fixture( + transform_fixture_with_default_variable_name, + "kitchen-sink.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected", + input, + expected, + ); } #[test] fn refetchable_conflict_with_operation_invalid() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_operation.invalid.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_operation.invalid.expected"); - test_fixture(transform_fixture, "refetchable_conflict_with_operation.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_operation.invalid.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "refetchable_conflict_with_operation.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_operation.invalid.expected", input, expected); } #[test] fn refetchable_conflict_with_refetchable_invalid() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_refetchable.invalid.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_refetchable.invalid.expected"); - test_fixture(transform_fixture, "refetchable_conflict_with_refetchable.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_refetchable.invalid.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "refetchable_conflict_with_refetchable.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable_conflict_with_refetchable.invalid.expected", input, expected); } #[test] fn refetchable_connection() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected"); - test_fixture(transform_fixture, "refetchable-connection.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected", input, expected); + let input = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.graphql" + ); + let expected = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected" + ); + test_fixture( + transform_fixture_with_default_variable_name, + "refetchable-connection.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected", + input, + expected, + ); +} + +#[test] +fn refetchable_connection_with_custom_variable_name() { + let input = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.graphql" + ); + let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected"); + test_fixture(transform_fixture_with_default_variable_name, "refetchable-connection.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected", input, expected); } #[test] fn refetchable_fragment_on_node_with_missing_id() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected"); - test_fixture(transform_fixture, "refetchable-fragment-on-node-with-missing-id.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "refetchable-fragment-on-node-with-missing-id.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected", input, expected); } #[test] fn refetchable_with_arguments_conflicting_invalid() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments-conflicting.invalid.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments-conflicting.invalid.expected"); - test_fixture(transform_fixture, "refetchable-with-arguments-conflicting.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments-conflicting.invalid.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "refetchable-with-arguments-conflicting.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments-conflicting.invalid.expected", input, expected); } #[test] fn refetchable_with_arguments_invalid() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments.invalid.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments.invalid.expected"); - test_fixture(transform_fixture, "refetchable-with-arguments.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments.invalid.expected", input, expected); + test_fixture(transform_fixture_with_default_variable_name, "refetchable-with-arguments.invalid.graphql", "compile_relay_artifacts_with_custom_id/fixtures/refetchable-with-arguments.invalid.expected", input, expected); } #[test] fn relay_client_id_field() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected"); - test_fixture(transform_fixture, "relay-client-id-field.graphql", "compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected", input, expected); + let input = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.graphql" + ); + let expected = include_str!( + "compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected" + ); + test_fixture( + transform_fixture_with_default_variable_name, + "relay-client-id-field.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected", + input, + expected, + ); } #[test] fn unions() { let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/unions.graphql"); let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/unions.expected"); - test_fixture(transform_fixture, "unions.graphql", "compile_relay_artifacts_with_custom_id/fixtures/unions.expected", input, expected); + test_fixture( + transform_fixture_with_default_variable_name, + "unions.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/unions.expected", + input, + expected, + ); } #[test] fn viewer_query() { - let input = include_str!("compile_relay_artifacts_with_custom_id/fixtures/viewer-query.graphql"); - let expected = include_str!("compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected"); - test_fixture(transform_fixture, "viewer-query.graphql", "compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected", input, expected); + let input = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/viewer-query.graphql"); + let expected = + include_str!("compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected"); + test_fixture( + transform_fixture_with_default_variable_name, + "viewer-query.graphql", + "compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected", + input, + expected, + ); } From c3866a705bf43b2ebe90d6154ba79e5273b2c574 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Sun, 5 Mar 2023 17:41:40 -0600 Subject: [PATCH 09/13] emit identifier info in dedicated object --- .../crates/relay-codegen/src/build_ast.rs | 16 +-- .../crates/relay-codegen/src/constants.rs | 2 + .../client-edge-backed-by-resolver.expected | 6 +- .../fragment-on-node-interface.expected | 6 +- ...agment-on-non-node-fetchable-type.expected | 6 +- ...bject-implementing-node-interface.expected | 6 +- ...ded-variable-refetchable-fragment.expected | 6 +- ...tchable-connection-custom-handler.expected | 6 +- .../fixtures/refetchable-connection.expected | 6 +- ...-fragment-on-node-with-missing-id.expected | 6 +- ...ent-with-connection-bidirectional.expected | 6 +- ...agment-with-connection-es-modules.expected | 6 +- ...gment-with-connection-with-stream.expected | 6 +- ...etchable-fragment-with-connection.expected | 6 +- ...elay-resolver-backing-client-edge.expected | 6 +- ...esolver-with-required-client-edge.expected | 6 +- ...terface-with-custom-variable-name.expected | 6 +- .../fragment-on-node-interface.expected | 6 +- ...terface-with-custom-variable-name.expected | 6 +- ...bject-implementing-node-interface.expected | 6 +- ...nection-with-custom-variable-name.expected | 6 +- .../fixtures/refetchable-connection.expected | 6 +- ...-fragment-on-node-with-missing-id.expected | 6 +- .../fetchable_query_generator.rs | 8 +- .../node_query_generator.rs | 8 +- .../query_query_generator.rs | 3 +- .../src/refetchable_fragment/utils.rs | 9 +- .../viewer_query_generator.rs | 3 +- ...inline-fragment-no-type-condition.expected | 20 +-- .../client-edge-inline-fragment.expected | 20 +-- .../fixtures/client-edge-variables.expected | 10 +- .../client-edge-with-required.expected | 10 +- ...lient-edge-within-non-client-edge.expected | 10 +- .../fixtures/client-edge.expected | 10 +- ...ested-client-edges-with-variables.expected | 20 +-- .../fixtures/nested-client-edges.expected | 20 +-- ...ch-implementations-implement-node.expected | 10 +- .../fragment-on-interface-without-id.expected | 10 +- ...ment-on-node-interface-without-id.expected | 10 +- .../fragment-on-node-interface.expected | 10 +- ...agment-on-non-node-fetchable-type.expected | 10 +- ...ting-node-interface-with-alias-id.expected | 10 +- ...bject-implementing-node-interface.expected | 10 +- .../fragment-on-query-with-cycle.expected | 3 +- .../fixtures/fragment-on-query.expected | 3 +- .../fixtures/fragment-on-viewer.expected | 3 +- ...bject-implementing-node-interface.expected | 10 +- .../fragment-with-args-on-query.expected | 3 +- .../fragment-with-args-on-viewer.expected | 3 +- ...ent-with-connection-bidirectional.expected | 10 +- ...gment-with-connection-with-stream.expected | 10 +- ...etchable-fragment-with-connection.expected | 10 +- ...-all-implementing-types-impl-node.expected | 10 +- ...terface-but-no-implementing-types.expected | 10 +- ...le-interface-some-types-impl-node.expected | 10 +- .../fixtures/refetchable-interface.expected | 20 +-- ...EdgesTest1Query_me__client_node.graphql.js | 8 +- ...EdgesTest2Query_me__client_node.graphql.js | 8 +- ...EdgesTest3Query_me__client_node.graphql.js | 8 +- ...nlyQueriesTest3Query_hello_user.graphql.js | 8 +- ...Query_live_constant_client_edge.graphql.js | 8 +- ...ve_user_resolver_always_suspend.graphql.js | 8 +- ...EdgesTest2Query_me__client_edge.graphql.js | 8 +- ...tEdgesTestFragment1_client_edge.graphql.js | 8 +- ...PaginationFragmentTest2Fragment.graphql.js | 8 +- ...PaginationFragmentTest4Fragment.graphql.js | 8 +- ...inationFragmentTestUserFragment.graphql.js | 8 +- ...penseTransitionTestUserFragment.graphql.js | 8 +- ...PaginationFragmentTest3Fragment.graphql.js | 8 +- ...nationFragmentTestStoryFragment.graphql.js | 8 +- ...inationFragmentTestUserFragment.graphql.js | 8 +- ...ntTestUserFragmentWithStreaming.graphql.js | 8 +- ...chableFragmentNodeTest1Fragment.graphql.js | 8 +- ...chableFragmentNodeTest3Fragment.graphql.js | 8 +- ...bleFragmentNodeTestUserFragment.graphql.js | 8 +- ...entNodeTestUserFragmentWithArgs.graphql.js | 8 +- ...penseTransitionTestUserFragment.graphql.js | 8 +- ...tchableFragmentTestUserFragment.graphql.js | 8 +- ...RefetchableFragmentInternal_REACT_CACHE.js | 24 ++-- .../relay-hooks/useLoadMoreFunction.js | 12 +- .../relay-hooks/useRefetchableFragmentNode.js | 25 ++-- packages/react-relay/yarn.lock | 125 ++++++++++++++++++ .../GraphQLTagTest2UserFragment.graphql.js | 8 +- .../GraphQLTagTest3UserFragment.graphql.js | 8 +- .../GraphQLTagTest5UserFragment.graphql.js | 8 +- .../GraphQLTagTest6UserFragment.graphql.js | 8 +- ...EdgesTest1Query_me__client_edge.graphql.js | 8 +- ...EdgesTest2Query_me__client_edge.graphql.js | 8 +- ...EdgesTest3Query_me__client_edge.graphql.js | 8 +- ...EdgesTest4Query_me__client_edge.graphql.js | 8 +- ...lient_edge__another_client_edge.graphql.js | 8 +- ...nsion_linked_field__client_edge.graphql.js | 8 +- ...ntEdgesTest6Query_me__the_alias.graphql.js | 8 +- ...Test7Query_me__null_client_edge.graphql.js | 8 +- ...lverTest24Query_me__client_edge.graphql.js | 8 +- ...veExternalGreetingFragment_user.graphql.js | 8 +- ...ubscribesWhenSuspendsQuery_user.graphql.js | 8 +- ...geToServerQuery_me__client_edge.graphql.js | 7 +- ...rRecursiveQuery_me__client_edge.graphql.js | 7 +- ...lient_edge__another_client_edge.graphql.js | 7 +- ...olverTest3Query_me__client_edge.graphql.js | 8 +- ...sClientEdgeResolver_client_edge.graphql.js | 8 +- .../ResolverTest2Fragment.graphql.js | 8 +- packages/relay-runtime/util/ReaderNode.js | 8 +- .../util/getPaginationMetadata.js | 8 +- .../relay-runtime/util/getRefetchMetadata.js | 27 ++-- packages/relay-runtime/yarn.lock | 111 ++++++++++++++++ 107 files changed, 763 insertions(+), 388 deletions(-) create mode 100644 packages/react-relay/yarn.lock create mode 100644 packages/relay-runtime/yarn.lock diff --git a/compiler/crates/relay-codegen/src/build_ast.rs b/compiler/crates/relay-codegen/src/build_ast.rs index 40973830c17a5..12d317f694576 100644 --- a/compiler/crates/relay-codegen/src/build_ast.rs +++ b/compiler/crates/relay-codegen/src/build_ast.rs @@ -438,17 +438,13 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> { ), operation: Primitive::GraphQLModuleDependency(GraphQLModuleDependency::Name(refetch_metadata.operation_name.into())), }; - if let Some(identifier_field) = refetch_metadata.identifier_field { + if let Some(identifier_info) = &refetch_metadata.identifier_info { refetch_object.push(ObjectEntry { - key: CODEGEN_CONSTANTS.identifier_field, - value: Primitive::String(identifier_field), - }); - } - - if let Some(x) = refetch_metadata.identifier_query_variable_name { - refetch_object.push(ObjectEntry { - key: CODEGEN_CONSTANTS.identifier_query_variable_name, - value: Primitive::String(x), + key: CODEGEN_CONSTANTS.identifier_info, + value: Primitive::Key(self.object(object! { + identifier_field: Primitive::String(identifier_info.identifier_field), + identifier_query_variable_name: Primitive::String(identifier_info.identifier_query_variable_name), + })), }); } diff --git a/compiler/crates/relay-codegen/src/constants.rs b/compiler/crates/relay-codegen/src/constants.rs index 3dedf097c8bb3..0061587b66a58 100644 --- a/compiler/crates/relay-codegen/src/constants.rs +++ b/compiler/crates/relay-codegen/src/constants.rs @@ -61,6 +61,7 @@ pub struct CodegenConstants { pub id: StringKey, pub identifier_field: StringKey, pub identifier_query_variable_name: StringKey, + pub identifier_info: StringKey, pub if_: StringKey, pub inline_data_fragment_spread: StringKey, pub inline_data_fragment: StringKey, @@ -172,6 +173,7 @@ lazy_static! { id: "id".intern(), identifier_field: "identifierField".intern(), identifier_query_variable_name: "identifierQueryVariableName".intern(), + identifier_info: "identifierInfo".intern(), if_: "if".intern(), inline_data_fragment_spread: "InlineDataFragmentSpread".intern(), inline_data_fragment: "InlineDataFragment".intern(), diff --git a/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected b/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected index 74550be6b36d4..666853613ee7f 100644 --- a/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected +++ b/compiler/crates/relay-codegen/tests/client_edges/fixtures/client-edge-backed-by-resolver.expected @@ -127,8 +127,10 @@ extend type User { "node" ], "operation": require('ClientEdgeQuery_Foo_user_best_friend.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_Foo_user_best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected index 7a74837352739..bce04e723ce31 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-node-interface.expected @@ -244,8 +244,10 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected index d4d7bcab5dd6d..3b9c3e188d18c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-non-node-fetchable-type.expected @@ -263,8 +263,10 @@ fragment fragmentOnNonNodeFetchableType_RefetchableFragment on NonNodeStory { "fetch__NonNodeStory" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "fetch_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" + } } }, "name": "fragmentOnNonNodeFetchableType_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected index 2c556249038fc..fc90a45e3b72d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-object-implementing-node-interface.expected @@ -235,8 +235,10 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected index 80212eb994aaa..4352fe3ebab41 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-refetchable-fragment.expected @@ -321,8 +321,10 @@ fragment providedVariableRefetchableFragment_providedVariableFragment on User { "node" ], "operation": require('refetchableQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "providedVariableRefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected index 4d1a15020d3d3..3f719fd673173 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection-custom-handler.expected @@ -318,8 +318,10 @@ fragment refetchableConnectionCustomHandler_RefetchableConnection_feedback on Fe "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableConnectionCustomHandler_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected index 4a6721d28857c..6e74e98593ce6 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-connection.expected @@ -318,8 +318,10 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected index 3743891f2f36c..b5420d0e12685 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-on-node-with-missing-id.expected @@ -243,8 +243,10 @@ fragment refetchableFragmentOnNodeWithMissingId_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentOnNodeWithMissingId_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected index 1c1aecbdf9e34..fce35c8f33392 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-bidirectional.expected @@ -421,8 +421,10 @@ fragment refetchableFragmentWithConnectionBidirectional_PaginationFragment_1G22u "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentWithConnectionBidirectional_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected index 0b3f6f0d2478c..65bc795c9ae61 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-es-modules.expected @@ -355,8 +355,10 @@ import RefetchableFragmentQuery_graphql from './RefetchableFragmentQuery.graphql "node" ], "operation": RefetchableFragmentQuery_graphql, - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentWithConnectionEsModules_PaginationFragment", 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 971b818057dc0..ff52b7cde392d 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 @@ -365,8 +365,10 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment_1G22uz o "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentWithConnectionWithStream_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected index 3b49265580dca..6056ef849bd8a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection.expected @@ -348,8 +348,10 @@ fragment refetchableFragmentWithConnection_PaginationFragment_1G22uz on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentWithConnection_PaginationFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected index f98a420cfe023..dfc2695b13f5d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-backing-client-edge.expected @@ -287,8 +287,10 @@ fragment relayResolverBackingClientEdge_best_friend_resolver on User { "node" ], "operation": require('ClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best_friend.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected index 75925a7c09231..eadafa8c2450d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-required-client-edge.expected @@ -292,8 +292,10 @@ fragment relayResolverWithRequiredClientEdge_best_friend_resolver on User { "node" ], "operation": require('ClientEdgeQuery_relayResolverWithRequiredClientEdgeQuery_me__best_friend.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_relayResolverWithRequiredClientEdgeQuery_me__best_friend", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected index 0d3f87e4c899d..4eec32e519b29 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface-with-custom-variable-name.expected @@ -244,8 +244,10 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "variable_name" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "variable_name" + } } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected index 22200e4452c9b..37c8028441804 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-node-interface.expected @@ -244,8 +244,10 @@ fragment fragmentOnNodeInterface_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } } }, "name": "fragmentOnNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected index 5686de41a34b8..73bf0313d4c9c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface-with-custom-variable-name.expected @@ -235,8 +235,10 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "variable_name" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "variable_name" + } } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected index 3c28b745b8f80..1eab885b74cad 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-object-implementing-node-interface.expected @@ -235,8 +235,10 @@ fragment fragmentOnObjectImplementingNodeInterface_RefetchableFragment on User { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } } }, "name": "fragmentOnObjectImplementingNodeInterface_RefetchableFragment", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected index 1faf904dc95be..38f7ea4568619 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection-with-custom-variable-name.expected @@ -318,8 +318,10 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected index 1faf904dc95be..38f7ea4568619 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-connection.expected @@ -318,8 +318,10 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback { "node" ], "operation": require('RefetchableConnectionQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableConnection_RefetchableConnection_feedback", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected index b05438192e05a..5052266be1222 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/refetchable-fragment-on-node-with-missing-id.expected @@ -243,8 +243,10 @@ fragment refetchableFragmentOnNodeWithMissingId_RefetchableFragment on Node { "node" ], "operation": require('RefetchableFragmentQuery.graphql'), - "identifierField": "global_id", - "identifierQueryVariableName": "id" + "indentifierInfo": { + "identifierField": "global_id", + "identifierQueryVariableName": "id" + } } }, "name": "refetchableFragmentOnNodeWithMissingId_RefetchableFragment", diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs index 4a8264f63f6f8..a2aaca755199f 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/fetchable_query_generator.rs @@ -37,6 +37,7 @@ use super::build_used_global_variables; use super::validation_message::ValidationMessage; use super::QueryGenerator; use super::RefetchRoot; +use super::RefetchableIdentifierInfo; use super::RefetchableMetadata; use super::CONSTANTS; use crate::root_variables::VariableMap; @@ -72,8 +73,11 @@ fn build_refetch_operation( RefetchableMetadata { operation_name: query_name, path: vec![fetch_field_name], - identifier_field: Some(identifier_field_name), - identifier_query_variable_name: Some(schema_config.node_interface_id_variable_name), + identifier_info: Some(RefetchableIdentifierInfo { + identifier_field: identifier_field_name, + identifier_query_variable_name: schema_config + .node_interface_id_variable_name, + }), }, ), selections: enforce_selections_with_id_field( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs index 424ea01eb98af..f27bed03ca551 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/node_query_generator.rs @@ -41,6 +41,7 @@ use super::validation_message::ValidationMessage; use super::QueryGenerator; use super::RefetchRoot; use super::RefetchableMetadata; +use super::RefetchableIdentifierInfo; use super::CONSTANTS; use crate::root_variables::VariableMap; @@ -120,8 +121,11 @@ fn build_refetch_operation( RefetchableMetadata { operation_name: query_name, path: vec![CONSTANTS.node_field_name], - identifier_field: Some(id_name), - identifier_query_variable_name: Some(schema_config.node_interface_id_variable_name), + identifier_info: Some(RefetchableIdentifierInfo { + identifier_field: id_name, + identifier_query_variable_name: schema_config + .node_interface_id_variable_name, + }), }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs index 6b60c000be46f..c57212723a43c 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/query_query_generator.rs @@ -41,8 +41,7 @@ fn build_refetch_operation( RefetchableMetadata { operation_name: query_name, path: vec![], - identifier_field: None, - identifier_query_variable_name: None, + identifier_info: None, }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs index f70aff1128ff1..a83c907a0b3a6 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/utils.rs @@ -31,12 +31,17 @@ use lazy_static::lazy_static; use super::validation_message::ValidationMessage; use crate::root_variables::VariableMap; +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub struct RefetchableIdentifierInfo { + pub identifier_field: StringKey, + pub identifier_query_variable_name: StringKey, +} + #[derive(Clone, Debug, PartialEq, Eq, Hash)] pub struct RefetchableMetadata { pub operation_name: OperationDefinitionName, pub path: Vec, - pub identifier_field: Option, - pub identifier_query_variable_name: Option, + pub identifier_info: Option, } associated_data_impl!(RefetchableMetadata); diff --git a/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs b/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs index fa5468f9b875d..1179fc2e7c50a 100644 --- a/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs +++ b/compiler/crates/relay-transforms/src/refetchable_fragment/viewer_query_generator.rs @@ -50,8 +50,7 @@ fn build_refetch_operation( RefetchableMetadata { operation_name: query_name, path: vec![CONSTANTS.viewer_field_name], - identifier_field: None, - identifier_query_variable_name: None, + identifier_info: None, }, ), used_global_variables: build_used_global_variables( diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected index 6a909460e78ac..26185a42286b8 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment-no-type-condition.expected @@ -102,11 +102,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { @@ -133,11 +133,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend_1 on User @__ClientEdge # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected index a4bb46de412b2..05d6382e22b67 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-inline-fragment.expected @@ -110,11 +110,11 @@ fragment RefetchableClientEdgeQuery_Foo_node_PhotoStory__author__best_friend on # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { @@ -141,11 +141,11 @@ fragment RefetchableClientEdgeQuery_Foo_node_Story__author__best_friend on User # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected index 98ffe6817e918..386165ebe127e 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-variables.expected @@ -66,11 +66,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected index b284b7c9dacda..3f8d4a47b7bf4 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-with-required.expected @@ -70,11 +70,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected index b71d4ea877751..68d8c4229d817 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge-within-non-client-edge.expected @@ -70,11 +70,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_nearest_neighbor__best_friend on Us # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected index 2e1949b1888b1..1c046e7837397 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/client-edge.expected @@ -66,11 +66,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected index 63f1e228bd773..21cbcc0fc27f6 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges-with-variables.expected @@ -96,11 +96,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { @@ -153,11 +153,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend__best_friend on User @_ # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected index 87b9b798123ba..af0e586df2010 100644 --- a/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected +++ b/compiler/crates/relay-transforms/tests/client_edges/fixtures/nested-client-edges.expected @@ -92,11 +92,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend on User @__ClientEdgeGe # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { @@ -147,11 +147,11 @@ fragment RefetchableClientEdgeQuery_Foo_user_best_friend__best_friend on User @_ # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected index 6613379364dcd..3b47429b478f6 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-which-implementations-implement-node.expected @@ -43,11 +43,11 @@ fragment RefetchableFragment on Actor @refetchable(queryName: "RefetchableFragme # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected index 57619eeb880c9..e9cc99a3138ca 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-interface-without-id.expected @@ -26,11 +26,11 @@ fragment RefetchableFragment on AllConcreteTypesImplementNode @refetchable(query # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected index 848d0dbc7d9c4..96227bdc60b02 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface-without-id.expected @@ -42,11 +42,11 @@ fragment RefetchableFragment on Node @refetchable(queryName: "RefetchableFragmen # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected index 05d1374eb95e9..719edd1457366 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-node-interface.expected @@ -43,11 +43,11 @@ fragment RefetchableFragment on Node @refetchable(queryName: "RefetchableFragmen # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected index 202025f153c5b..672e971ecbd52 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected @@ -41,11 +41,11 @@ fragment RefetchableFragment on NonNodeStory @refetchable(queryName: "Refetchabl # path: [ # "fetch__NonNodeStory", # ], -# identifier_field: Some( -# "fetch_id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "fetch_id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected index cd6ae6c36eb1e..3e7a1933617d2 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface-with-alias-id.expected @@ -41,11 +41,11 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected index 1d3104b35607d..1b53815a0f20a 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.expected @@ -41,11 +41,11 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected index c8b52d922e2e1..27799c67a20d0 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query-with-cycle.expected @@ -68,8 +68,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # "RefetchableFragmentQuery", # ), # path: [], -# identifier_field: None, -# identifier_query_variable_name: None, +# identifier_info: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected index 62e9290c954b9..7153d53d31403 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-query.expected @@ -44,8 +44,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # "RefetchableFragmentQuery", # ), # path: [], -# identifier_field: None, -# identifier_query_variable_name: None, +# identifier_info: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected index 7078ce8da7a1c..37dd9ffe8e551 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-on-viewer.expected @@ -42,8 +42,7 @@ fragment RefetchableFragment on Viewer @refetchable(queryName: "RefetchableFragm # path: [ # "viewer", # ], -# identifier_field: None, -# identifier_query_variable_name: None, +# identifier_info: None, # } { actor { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected index 7abe5169c6de9..deb5551f00753 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-object-implementing-node-interface.expected @@ -53,11 +53,11 @@ fragment RefetchableFragment on User @refetchable(queryName: "RefetchableFragmen # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected index b152cd835e780..360dd792018e8 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-query.expected @@ -54,8 +54,7 @@ fragment RefetchableFragment on Query @refetchable(queryName: "RefetchableFragme # "RefetchableFragmentQuery", # ), # path: [], -# identifier_field: None, -# identifier_query_variable_name: None, +# identifier_info: None, # } { node(id: $id) { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected index 4f9fc7ae83f10..1205eb4c93672 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/fragment-with-args-on-viewer.expected @@ -54,8 +54,7 @@ fragment RefetchableFragment on Viewer @refetchable(queryName: "RefetchableFragm # path: [ # "viewer", # ], -# identifier_field: None, -# identifier_query_variable_name: None, +# identifier_info: None, # } { actor { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected index bb809bb65c97e..c880926364b69 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection-bidirectional.expected @@ -78,11 +78,11 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { 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 dc9335067bf7b..0e0f21a623129 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 @@ -68,11 +68,11 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected index 62d7ed92983ac..a6264c1c6394b 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-fragment-with-connection.expected @@ -68,11 +68,11 @@ fragment PaginationFragment on Node @refetchable(queryName: "RefetchableFragment # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected index f55a33d108443..30357a05c64a1 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-all-implementing-types-impl-node.expected @@ -40,11 +40,11 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected index 8d4a261f9db89..6c5666e3fb179 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-but-no-implementing-types.expected @@ -39,11 +39,11 @@ fragment RefetchableFragmentFoo on RefetchableInterfaceFoo @refetchable(queryNam # path: [ # "node", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected index 4e62eef37f9b8..2995e4f9dd26d 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected @@ -44,11 +44,11 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # path: [ # "fetch__RefetchableInterface", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected index 1351ceed898c4..35264388f9240 100644 --- a/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected +++ b/compiler/crates/relay-transforms/tests/refetchable_fragment/fixtures/refetchable-interface.expected @@ -68,11 +68,11 @@ fragment RefetchableFragment on RefetchableInterface @refetchable(queryName: "Re # path: [ # "fetch__RefetchableInterface", # ], -# identifier_field: Some( -# "id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "id", +# identifier_query_variable_name: "id", +# }, # ), # } { @@ -88,11 +88,11 @@ fragment RefetchableFragment2 on RefetchableInterface2 @refetchable(queryName: " # path: [ # "fetch__RefetchableInterface2", # ], -# identifier_field: Some( -# "not_id", -# ), -# identifier_query_variable_name: Some( -# "id", +# identifier_info: Some( +# RefetchableIdentifierInfo { +# identifier_field: "not_id", +# identifier_query_variable_name: "id", +# }, # ), # } { diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js index 6f530a0eee891..2c3e1178f1834 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<8b7e2ebba0da9d4dc59a9c5001ca2112>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest1Query_me__client_node.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest1Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js index 91d20bf2dc52a..9608d9d6f6816 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<27b1fed880ee37fc241ddb4b04ac60c3>> + * @generated SignedSource<<9172cd1c8f829c7dce78fbd22a72f555>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest2Query_me__client_node.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest2Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js index 86393de6869f4..ca0ab94c18acc 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<368f2734b28b10a0e4ba2453a1e1407c>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientEdgesTest3Query_me__client_node.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ClientEdgesTest3Query_me__client_node", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js index 0dd3fa8452de2..425a860018594 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<38119d2859c697aa13c27778fa54d347>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ClientOnlyQueriesTest3Query_hello_user", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js index 4871ce8528208..afd5df10827f7 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_LiveResolversTest13Query_live_constant_client_edge", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js index 2b1f63bf16146..c28ee47b333a9 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<2e5f3c3a15e68521b574ca5f72684bf6>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_LiveResolversTest15Query_live_user_resolver_always_suspend", diff --git a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js index 92c962efb0417..f8a4ca3fe4b21 100644 --- a/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js +++ b/packages/react-relay/__tests__/__generated__/RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<294905380e1d78aa11cb855086aa97bc>> + * @generated SignedSource<<1bbbb7efcf5b7be9c316b87d91fff210>> * @flow * @lightSyntaxTransform * @nogrep @@ -45,8 +45,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_QueryResourceClientEdgesTest2Query_me__client_edge", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js index 6488680560a6a..dbb545d5052ac 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<1b4b3613e8eb27e8eb87b478b107648b>> + * @generated SignedSource<<4b70286945a5d40ef704aca8d8ffb04f>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_FragmentResourceClientEdgesTestFragment1_client_edge", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js index c36fbaf57849c..7586664dd0365 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest2Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<169f364cafb7106b58e6f19eb668579e>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -104,8 +104,10 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentTest2FragmentPaginationQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useBlockingPaginationFragmentTest2Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js index 579ff9e4e90f6..3f3857ccea487 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTest4Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -42,8 +42,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useBlockingPaginationFragmentTest4FragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useBlockingPaginationFragmentTest4Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js index 404a61938c350..a9362e3939613 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<69b22a79c5e55847626b125c376b0ceb>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -121,8 +121,10 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useBlockingPaginationFragmentTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js index 6a6666d514129..72b13a980cfa3 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<7243d1a57efc233d9be96f249683ad02>> + * @generated SignedSource<<1a2c32db911019bfa94d781c718e11a6>> * @flow * @lightSyntaxTransform * @nogrep @@ -116,8 +116,10 @@ return { "node" ], "operation": require('./useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useBlockingPaginationFragmentWithSuspenseTransitionTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js index 5de952036b50d..eb905e486855e 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTest3Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<06910f3103bbd9cacf1d49c8ceb423d0>> + * @generated SignedSource<<287a510a57f147dc9086ffd1d27ddaae>> * @flow * @lightSyntaxTransform * @nogrep @@ -42,8 +42,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./usePaginationFragmentTest3FragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "usePaginationFragmentTest3Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js index 1ddabe6d5dedb..b5449c614b58f 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestStoryFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<78d2548c61fb6ef49166b87871b6e52c>> * @flow * @lightSyntaxTransform * @nogrep @@ -80,8 +80,10 @@ return { "fetch__NonNodeStory" ], "operation": require('./usePaginationFragmentTestStoryFragmentRefetchQuery.graphql'), - "identifierField": "fetch_id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" + } } }, "name": "usePaginationFragmentTestStoryFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js index 8f8f423dad20b..5917ddb113524 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<38db53050ac518827b1a14880489e2fb>> * @flow * @lightSyntaxTransform * @nogrep @@ -121,8 +121,10 @@ return { "node" ], "operation": require('./usePaginationFragmentTestUserFragmentPaginationQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "usePaginationFragmentTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js index 7b348c0347926..04e020b63add3 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/usePaginationFragmentTestUserFragmentWithStreaming.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<8fac414c6ad6a4410aa7b98ba736f4b7>> + * @generated SignedSource<<43148d01576a91b8c9b8380b998b1063>> * @flow * @lightSyntaxTransform * @nogrep @@ -122,8 +122,10 @@ return { "node" ], "operation": require('./usePaginationFragmentTestUserFragmentStreamingPaginationQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "usePaginationFragmentTestUserFragmentWithStreaming", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js index 435675b0a5c3b..15d027a463743 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest1Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<7c2c05ec0d836f9fab77060b8dc4447e>> * @flow * @lightSyntaxTransform * @nogrep @@ -46,8 +46,10 @@ var node/*: ReaderFragment*/ = { "fetch__NonNodeStory" ], "operation": require('./useRefetchableFragmentNodeTest1FragmentRefetchQuery.graphql'), - "identifierField": "fetch_id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "fetch_id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentNodeTest1Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js index 40b2750597b7a..82c8159aae111 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTest3Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<9a8e6d62d25a5d79047dcc1db10f00d4>> * @flow * @lightSyntaxTransform * @nogrep @@ -53,8 +53,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTest3FragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentNodeTest3Fragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js index f0819643038e4..9d9096b5c9bd2 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -53,8 +53,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentNodeTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js index f158e93e4c1b4..707eb03786bd3 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeTestUserFragmentWithArgs.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<7794d486d753cec98e1680f705d910b6>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -54,8 +54,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeTestUserFragmentWithArgsRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentNodeTestUserFragmentWithArgs", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js index b85eac47d9ae7..2f365bbc8f868 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<2a7b050b23f0fb4fbccf0e8e669e4dd8>> + * @generated SignedSource<<78ea09cf1853f6f29afab6b209aea558>> * @flow * @lightSyntaxTransform * @nogrep @@ -53,8 +53,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentNodeWithSuspenseTransitionTestUserFragment", diff --git a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js index 47743280cec53..521a072aa1c07 100644 --- a/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js +++ b/packages/react-relay/relay-hooks/__tests__/__generated__/useRefetchableFragmentTestUserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<799d1c5f3e177c392081edd3d9fc38f9>> * @flow * @lightSyntaxTransform * @nogrep @@ -53,8 +53,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./useRefetchableFragmentTestUserFragmentRefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "useRefetchableFragmentTestUserFragment", diff --git a/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js b/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js index 2c076efda07ea..89eee9582b190 100644 --- a/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +++ b/packages/react-relay/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js @@ -11,6 +11,7 @@ 'use strict'; +import type {RefetchableIdentifierInfo} from "../../../relay-runtime/util/ReaderNode"; import type {LoaderFn} from '../useQueryLoader'; import type { ConcreteRequest, @@ -174,8 +175,7 @@ function useRefetchableFragmentNode< const { refetchableRequest, fragmentRefPathInResponse, - identifierField, - identifierQueryVariableName, + identifierInfo } = getRefetchMetadata(fragmentNode, componentDisplayName); const fragmentIdentifier = getFragmentIdentifier( fragmentNode, @@ -240,7 +240,7 @@ function useRefetchableFragmentNode< debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType( refetchQuery.request.variables, fragmentRefPathInResponse, - identifierQueryVariableName, + identifierInfo?.identifierQueryVariableName, environment, ); } @@ -348,8 +348,7 @@ function useRefetchableFragmentNode< fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, - identifierField, - identifierQueryVariableName, + identifierInfo, loadQuery, parentFragmentRef, refetchableRequest, @@ -383,18 +382,17 @@ function useRefetchFunction( fragmentIdentifier: string, fragmentNode: ReaderFragment, fragmentRefPathInResponse: $ReadOnlyArray, - identifierField: ?string, - identifierQueryVariableName: ?string, + identifierInfo: ?RefetchableIdentifierInfo, loadQuery: LoaderFn, parentFragmentRef: mixed, refetchableRequest: ConcreteRequest, ): RefetchFn { const isMountedRef = useIsMountedRef(); const identifierValue = - identifierField != null && + identifierInfo?.identifierField != null && fragmentData != null && typeof fragmentData === 'object' - ? fragmentData[identifierField] + ? fragmentData[identifierInfo.identifierField] : null; return useCallback( ( @@ -461,8 +459,8 @@ function useRefetchFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. if ( - identifierQueryVariableName != null && - !providedRefetchVariables.hasOwnProperty(identifierQueryVariableName) + identifierInfo != null && + !providedRefetchVariables.hasOwnProperty(identifierInfo.identifierQueryVariableName) ) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check @@ -472,11 +470,11 @@ function useRefetchFunction( false, 'Relay: Expected result to have a string ' + '`%s` in order to refetch, got `%s`.', - identifierField, + identifierInfo.identifierField, identifierValue, ); } - (refetchVariables: $FlowFixMe)[identifierQueryVariableName] = identifierValue; + (refetchVariables: $FlowFixMe)[identifierInfo.identifierQueryVariableName] = identifierValue; } const refetchQuery = createOperationDescriptor( diff --git a/packages/react-relay/relay-hooks/useLoadMoreFunction.js b/packages/react-relay/relay-hooks/useLoadMoreFunction.js index 50f4919591eed..60d440df8f669 100644 --- a/packages/react-relay/relay-hooks/useLoadMoreFunction.js +++ b/packages/react-relay/relay-hooks/useLoadMoreFunction.js @@ -35,7 +35,7 @@ const { getPaginationVariables, getSelector, getValueAtPath, - getRefetchMetadata + getRefetchMetadata, } = require('relay-runtime'); const warning = require('warning'); @@ -115,8 +115,10 @@ function useLoadMoreFunction( connectionPathInFragmentData, ); - const {identifierQueryVariableName} = - getRefetchMetadata(fragmentNode, componentDisplayName); + const {identifierInfo} = getRefetchMetadata( + fragmentNode, + componentDisplayName, + ); // Dispose of pagination requests in flight when unmounting useEffect(() => { @@ -205,7 +207,7 @@ function useLoadMoreFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. - if (identifierQueryVariableName != null) { + if (identifierInfo != null) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check // that there actually is a value at runtime. @@ -218,7 +220,7 @@ function useLoadMoreFunction( identifierValue, ); } - paginationVariables[identifierQueryVariableName] = identifierValue; + paginationVariables[identifierInfo.identifierQueryVariableName] = identifierValue; } const paginationQuery = createOperationDescriptor( diff --git a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js index d1d3e186a6211..32b418b27d129 100644 --- a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js +++ b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js @@ -11,6 +11,7 @@ 'use strict'; +import type {RefetchableIdentifierInfo} from "../../relay-runtime/util/ReaderNode"; import type {LoaderFn} from './useQueryLoader'; import type { ConcreteRequest, @@ -173,7 +174,7 @@ function useRefetchableFragmentNode< componentDisplayName: string, ): ReturnType { const parentEnvironment = useRelayEnvironment(); - const {refetchableRequest, fragmentRefPathInResponse, identifierField} = + const {refetchableRequest, fragmentRefPathInResponse } = getRefetchMetadata(fragmentNode, componentDisplayName); const fragmentIdentifier = getFragmentIdentifier( fragmentNode, @@ -215,7 +216,7 @@ function useRefetchableFragmentNode< let fragmentRef = parentFragmentRef; - const {identifierQueryVariableName} = getRefetchMetadata( + const {identifierInfo} = getRefetchMetadata( fragmentNode, componentDisplayName, ); @@ -245,7 +246,7 @@ function useRefetchableFragmentNode< debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType( refetchQuery.request.variables, fragmentRefPathInResponse, - identifierQueryVariableName, + identifierInfo?.identifierQueryVariableName, environment, ); } @@ -352,8 +353,7 @@ function useRefetchableFragmentNode< fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, - identifierField, - identifierQueryVariableName, + identifierInfo, loadQuery, parentFragmentRef, refetchableRequest, @@ -389,18 +389,17 @@ function useRefetchFunction( fragmentIdentifier: string, fragmentNode: ReaderFragment, fragmentRefPathInResponse: $ReadOnlyArray, - identifierField: ?string, - identifierQueryVariableName: ?string, + identifierInfo: ?RefetchableIdentifierInfo, loadQuery: LoaderFn, parentFragmentRef: mixed, refetchableRequest: ConcreteRequest, ): RefetchFn { const isMountedRef = useIsMountedRef(); const identifierValue = - identifierField != null && + identifierInfo?.identifierField != null && fragmentData != null && typeof fragmentData === 'object' - ? fragmentData[identifierField] + ? fragmentData[identifierInfo.identifierField] : null; return useCallback( ( @@ -467,8 +466,8 @@ function useRefetchFunction( // If the query needs an identifier value ('id' or similar) and one // was not explicitly provided, read it from the fragment data. if ( - identifierQueryVariableName != null && - !providedRefetchVariables.hasOwnProperty(identifierQueryVariableName) + identifierInfo != null && + !providedRefetchVariables.hasOwnProperty(identifierInfo.identifierQueryVariableName) ) { // @refetchable fragments are guaranteed to have an `id` selection // if the type is Node, implements Node, or is @fetchable. Double-check @@ -478,11 +477,11 @@ function useRefetchFunction( false, 'Relay: Expected result to have a string ' + '`%s` in order to refetch, got `%s`.', - identifierField, + identifierInfo.identifierField, identifierValue, ); } - (refetchVariables: $FlowFixMe)[identifierQueryVariableName] = + (refetchVariables: $FlowFixMe)[identifierInfo.identifierQueryVariableName] = identifierValue; } diff --git a/packages/react-relay/yarn.lock b/packages/react-relay/yarn.lock new file mode 100644 index 0000000000000..287edf43a46d9 --- /dev/null +++ b/packages/react-relay/yarn.lock @@ -0,0 +1,125 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +relay-runtime@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-14.1.0.tgz#44b317101f560a16caea2eef8a52e254b03908fa" + integrity sha512-t2DR2hZviHrdEQrOvFqwmvRWvZ0SjI/r4bS5f3qvMyXt4g1kw3RTb2RNVmbKGg6zEQhf7Na/brdqE4roApmclQ== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^3.0.2" + invariant "^2.2.4" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ua-parser-js@^0.7.30: + version "0.7.34" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" + integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js index 25bd144ebfe1f..7138626f61d42 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest2UserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<99b2659aac414e5620cf540a3b13791b>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./GraphQLTagTestUserFragment1RefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "GraphQLTagTest2UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js index 1b2c539b9ab09..aec7110766974 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest3UserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<4018b4e80f1d6432e56d1dfa7535a059>> + * @generated SignedSource<<8daad82cbca6de3764f2bf2ed141b351>> * @flow * @lightSyntaxTransform * @nogrep @@ -85,8 +85,10 @@ return { "node" ], "operation": require('./GraphQLTagTestUserFragment2RefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "GraphQLTagTest3UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js index 6adfc4c8b32ad..412f610ef37da 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest5UserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<11da578433d138975c94a54c2626cc87>> + * @generated SignedSource<<7b5a78643acce4af8a23edc051d9a7d3>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./GraphQLTagTestUserFragment3RefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "GraphQLTagTest5UserFragment", diff --git a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js index d99de9975f102..528ddcdb152c3 100644 --- a/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js +++ b/packages/relay-runtime/query/__tests__/__generated__/GraphQLTagTest6UserFragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<990accbcac33e8970b31abebfdb8ddf9>> + * @generated SignedSource<<7fa67ff6bb012fe145942de10f12f8a5>> * @flow * @lightSyntaxTransform * @nogrep @@ -85,8 +85,10 @@ return { "node" ], "operation": require('./GraphQLTagTestUserFragment4RefetchQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "GraphQLTagTest6UserFragment", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js index 1ece19ef01961..92eceb5d67b88 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<1c3802a11b3c43edbd60a1310b4ae15f>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest1Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js index 196f078c1bf01..317ce738a7cd1 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<3907c91ef6989ecfcc0f23c05c06be6b>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -45,8 +45,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest2Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js index 5d511b9840089..1a2fa3eeda1e7 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<8a73771292d1141c30dbe0de66b22144>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -44,8 +44,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest3Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js index 5171963b90f87..5685371aae18b 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<<6ff8e6f67c61293509ba016782dc028b>> * @flow * @lightSyntaxTransform * @nogrep @@ -55,8 +55,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js index 04a70244a14a3..addf4c1bdbdec 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest4Query_me__client_edge__another_client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js index 2fefeae536e01..1190427b81c66 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<8d81f4a70ab5e158ffad5a1a1cb9bf20>> + * @generated SignedSource<<2e579079be8fbf9250e99cd159c62a8c>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest5Query_me__client_extension_linked_field__client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js index 1c7fb9d89c472..cbec88e78dac4 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<370f2f8e5400766a979a7c663fa2ce6a>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest6Query_me__the_alias", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js index 1aa5ef80ea0a2..43e38ec1a0070 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<5394b7a4bfe5d4c8b429f3b05cde6fda>> + * @generated SignedSource<<3ba1d057907a8ad61aca61235523a1b3>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderClientEdgesTest7Query_me__null_client_edge", diff --git a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js index f1fe41e40e98a..fcb1dfa92c092 100644 --- a/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/__generated__/RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<768501c48375b9cd265e1ca1f28a6be0>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_RelayReaderResolverTest24Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js index 43a2359917678..e5f262118240f 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<97b6fd7bad5fcac105510cd2b235f965>> + * @generated SignedSource<<28f257fe1aeac1511dcfef10e4fdcaf8>> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveExternalGreetingFragment_user.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_LiveExternalGreetingFragment_user", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js index b0d7ade26caa0..07f7b14762d4c 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<02f06f3b82d93c55847bce5d5f4da3ba>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -42,8 +42,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_LiveResolversTestUnsubscribesWhenSuspendsQuery_user", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge.graphql.js index cdbf55e84990b..e85e993df4a18 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -62,7 +62,10 @@ return { "node" ], "operation": require('./ClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge.graphql'), - "identifierField": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerQuery_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge.graphql.js index 2cead50b3092f..8f756745fc480 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<0bb6f8d46d9b4cd925a53212bcd6b7a5>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -72,7 +72,10 @@ return { "node" ], "operation": require('./ClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge.graphql'), - "identifierField": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge.graphql.js index eb3a77855be1b..bfc2ce6474f0c 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<69a75fdd1599dd19df56af20f9a1c99c>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,7 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge.graphql'), - "identifierField": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ResolverGCTestResolverClientEdgeToServerRecursiveQuery_me__client_edge__another_client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js index afa2651e40192..f713fac94188b 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<9f9dc98e2dea2aa91bff4a3e6b91c837>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_ResolverTest3Query_me__client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_ResolverTest3Query_me__client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js index ac7a03e87a689..549a9c6f997db 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<18ca59fec6559882d9d29737a41b85fd>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -43,8 +43,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge", diff --git a/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js b/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js index 7024875b99908..36d3c2bb27d20 100644 --- a/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js +++ b/packages/relay-runtime/store/__tests__/resolvers/__generated__/ResolverTest2Fragment.graphql.js @@ -6,7 +6,7 @@ * * @oncall relay * - * @generated SignedSource<<53b0ceb6d8eee75e5095d64c1c90d2b2>> + * @generated SignedSource<> * @flow * @lightSyntaxTransform * @nogrep @@ -50,8 +50,10 @@ var node/*: ReaderFragment*/ = { "node" ], "operation": require('./ResolverTest1FragmentRefetchableQuery.graphql'), - "identifierField": "id", - "identifierQueryVariableName": "id" + "identifierInfo": { + "identifierField": "id", + "identifierQueryVariableName": "id" + } } }, "name": "ResolverTest2Fragment", diff --git a/packages/relay-runtime/util/ReaderNode.js b/packages/relay-runtime/util/ReaderNode.js index cd051b7daca13..0363e86784a67 100644 --- a/packages/relay-runtime/util/ReaderNode.js +++ b/packages/relay-runtime/util/ReaderNode.js @@ -76,12 +76,16 @@ export type ReaderPaginationFragment = { }, }; +export type RefetchableIdentifierInfo = { + +identifierField: string, + +identifierQueryVariableName: string, +}; + export type ReaderRefetchMetadata = { +connection?: ?ReaderPaginationMetadata, +operation: string | ConcreteRequest, +fragmentPathInResult: Array, - +identifierField?: ?string, - +identifierQueryVariableName?: ?string, + +identifierInfo?: ?RefetchableIdentifierInfo, }; // Stricter form of ConnectionMetadata diff --git a/packages/relay-runtime/util/getPaginationMetadata.js b/packages/relay-runtime/util/getPaginationMetadata.js index c5577ec76dede..4ff0f35c96c56 100644 --- a/packages/relay-runtime/util/getPaginationMetadata.js +++ b/packages/relay-runtime/util/getPaginationMetadata.js @@ -1,6 +1,4 @@ /** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * @@ -50,14 +48,14 @@ function getPaginationMetadata( componentDisplayName, fragmentNode.name, ); - const identifierField = refetchMetadata.identifierField; + const identifierInfo = refetchMetadata.identifierInfo; invariant( - identifierField == null || typeof identifierField === 'string', + identifierInfo?.identifierField == null || typeof identifierInfo.identifierField === 'string', 'Relay: getRefetchMetadata(): Expected `identifierField` to be a string.', ); return { connectionPathInFragmentData, - identifierField, + identifierField: identifierInfo?.identifierField, paginationRequest, paginationMetadata, stream: connectionMetadata.stream === true, diff --git a/packages/relay-runtime/util/getRefetchMetadata.js b/packages/relay-runtime/util/getRefetchMetadata.js index 710b1f21315b8..d3a49441a768a 100644 --- a/packages/relay-runtime/util/getRefetchMetadata.js +++ b/packages/relay-runtime/util/getRefetchMetadata.js @@ -11,7 +11,11 @@ 'use strict'; -import type {ReaderFragment, ReaderRefetchMetadata} from './ReaderNode'; +import type { + ReaderFragment, + ReaderRefetchMetadata, + RefetchableIdentifierInfo, +} from './ReaderNode'; import type {ConcreteRequest} from './RelayConcreteNode'; const invariant = require('invariant'); @@ -21,8 +25,7 @@ function getRefetchMetadata( componentDisplayName: string, ): { fragmentRefPathInResponse: $ReadOnlyArray, - identifierField: ?string, - identifierQueryVariableName: ?string, + identifierInfo: ?RefetchableIdentifierInfo, refetchableRequest: ConcreteRequest, refetchMetadata: ReaderRefetchMetadata, } { @@ -59,17 +62,17 @@ function getRefetchMetadata( 'this is likely a bug in Relay.', componentDisplayName, ); - const identifierField = refetchMetadata.identifierField; - const identifierQueryVariableName = - refetchMetadata.identifierQueryVariableName; - invariant( - identifierField == null || typeof identifierField === 'string', - 'Relay: getRefetchMetadata(): Expected `identifierField` to be a string.', - ); + const identifierInfo = refetchMetadata.identifierInfo; + if (identifierInfo) { + invariant( + identifierInfo.identifierField == null || + typeof identifierInfo.identifierField === 'string', + 'Relay: getRefetchMetadata(): Expected `identifierField` to be a string.', + ); + } return { fragmentRefPathInResponse, - identifierField, - identifierQueryVariableName, + identifierInfo, refetchableRequest, refetchMetadata, }; diff --git a/packages/relay-runtime/yarn.lock b/packages/relay-runtime/yarn.lock new file mode 100644 index 0000000000000..6fb6be04ee33d --- /dev/null +++ b/packages/relay-runtime/yarn.lock @@ -0,0 +1,111 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ua-parser-js@^0.7.30: + version "0.7.34" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" + integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" From f81e8c2c46a8c2a8bb09ee848dcb612f45dbdef1 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Mon, 27 Mar 2023 20:56:31 -0600 Subject: [PATCH 10/13] Update packages/relay-runtime/util/getRefetchMetadata.js Co-authored-by: Jordan Eldredge --- packages/relay-runtime/util/getRefetchMetadata.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relay-runtime/util/getRefetchMetadata.js b/packages/relay-runtime/util/getRefetchMetadata.js index d3a49441a768a..cbe62e4b33bdc 100644 --- a/packages/relay-runtime/util/getRefetchMetadata.js +++ b/packages/relay-runtime/util/getRefetchMetadata.js @@ -63,7 +63,7 @@ function getRefetchMetadata( componentDisplayName, ); const identifierInfo = refetchMetadata.identifierInfo; - if (identifierInfo) { + if (identifierInfo != null) { invariant( identifierInfo.identifierField == null || typeof identifierInfo.identifierField === 'string', From a91dbb93b5ed3eb32ba05c3952e422d9b926049a Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Mon, 27 Mar 2023 22:00:44 -0600 Subject: [PATCH 11/13] Remove `identifierField` arg from useLoadMoreFunction --- .../usePaginationFragment_REACT_CACHE.js | 3 --- .../useBlockingPaginationFragment.js | 3 --- .../relay-hooks/useLoadMoreFunction.js | 22 +++++++++---------- .../relay-hooks/usePaginationFragment.js | 3 --- 4 files changed, 11 insertions(+), 20 deletions(-) diff --git a/packages/react-relay/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js b/packages/react-relay/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js index b244110937efb..26a17ebab7247 100644 --- a/packages/react-relay/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +++ b/packages/react-relay/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js @@ -76,7 +76,6 @@ function usePaginationFragment< connectionPathInFragmentData, paginationRequest, paginationMetadata, - identifierField, } = getPaginationMetadata(fragmentNode, componentDisplayName); const {fragmentData, fragmentRef, refetch} = useRefetchableFragmentInternal< @@ -95,7 +94,6 @@ function usePaginationFragment< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); @@ -111,7 +109,6 @@ function usePaginationFragment< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); diff --git a/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js b/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js index 226d1026c02e5..327b33c6888bd 100644 --- a/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js +++ b/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js @@ -89,7 +89,6 @@ function useBlockingPaginationFragment< const { connectionPathInFragmentData, - identifierField, paginationRequest, paginationMetadata, stream, @@ -132,7 +131,6 @@ function useBlockingPaginationFragment< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); @@ -148,7 +146,6 @@ function useBlockingPaginationFragment< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); diff --git a/packages/react-relay/relay-hooks/useLoadMoreFunction.js b/packages/react-relay/relay-hooks/useLoadMoreFunction.js index 60d440df8f669..c11d9670bfd2c 100644 --- a/packages/react-relay/relay-hooks/useLoadMoreFunction.js +++ b/packages/react-relay/relay-hooks/useLoadMoreFunction.js @@ -54,7 +54,6 @@ export type UseLoadMoreFunctionArgs = { fragmentIdentifier: string, fragmentData: mixed, connectionPathInFragmentData: $ReadOnlyArray, - identifierField: ?string, paginationRequest: ConcreteRequest, paginationMetadata: ReaderPaginationMetadata, componentDisplayName: string, @@ -77,17 +76,22 @@ function useLoadMoreFunction( componentDisplayName, observer, onReset, - identifierField, } = args; const environment = useRelayEnvironment(); const {isFetchingRef, startFetch, disposeFetch, completeFetch} = useFetchTrackingRef(); + + const {identifierInfo} = getRefetchMetadata( + fragmentNode, + componentDisplayName, + ); const identifierValue = - identifierField != null && + identifierInfo?.identifierField != null && fragmentData != null && typeof fragmentData === 'object' - ? fragmentData[identifierField] + ? fragmentData[identifierInfo.identifierField] : null; + const isMountedRef = useIsMountedRef(); const [mirroredEnvironment, setMirroredEnvironment] = useState(environment); const [mirroredFragmentIdentifier, setMirroredFragmentIdentifier] = @@ -115,11 +119,6 @@ function useLoadMoreFunction( connectionPathInFragmentData, ); - const {identifierInfo} = getRefetchMetadata( - fragmentNode, - componentDisplayName, - ); - // Dispose of pagination requests in flight when unmounting useEffect(() => { return () => { @@ -216,11 +215,12 @@ function useLoadMoreFunction( false, 'Relay: Expected result to have a string ' + '`%s` in order to refetch, got `%s`.', - identifierField, + identifierInfo.identifierField, identifierValue, ); } - paginationVariables[identifierInfo.identifierQueryVariableName] = identifierValue; + paginationVariables[identifierInfo.identifierQueryVariableName] = + identifierValue; } const paginationQuery = createOperationDescriptor( diff --git a/packages/react-relay/relay-hooks/usePaginationFragment.js b/packages/react-relay/relay-hooks/usePaginationFragment.js index 748dfb55fc892..c83d2d9057b8c 100644 --- a/packages/react-relay/relay-hooks/usePaginationFragment.js +++ b/packages/react-relay/relay-hooks/usePaginationFragment.js @@ -66,7 +66,6 @@ function usePaginationFragment_LEGACY< connectionPathInFragmentData, paginationRequest, paginationMetadata, - identifierField, } = getPaginationMetadata(fragmentNode, componentDisplayName); const {fragmentData, fragmentRef, refetch} = useRefetchableFragmentNode< @@ -85,7 +84,6 @@ function usePaginationFragment_LEGACY< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); @@ -100,7 +98,6 @@ function usePaginationFragment_LEGACY< fragmentIdentifier, fragmentNode, fragmentRef, - identifierField, paginationMetadata, paginationRequest, }); From b2206b4f4fb996b4495a52e9d4e0cb8506cc57f6 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Mon, 27 Mar 2023 22:15:43 -0600 Subject: [PATCH 12/13] Add invariant to `getRefetchMetadata` --- packages/relay-runtime/util/getRefetchMetadata.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/relay-runtime/util/getRefetchMetadata.js b/packages/relay-runtime/util/getRefetchMetadata.js index cbe62e4b33bdc..86935623c3023 100644 --- a/packages/relay-runtime/util/getRefetchMetadata.js +++ b/packages/relay-runtime/util/getRefetchMetadata.js @@ -69,6 +69,11 @@ function getRefetchMetadata( typeof identifierInfo.identifierField === 'string', 'Relay: getRefetchMetadata(): Expected `identifierField` to be a string.', ); + invariant( + identifierInfo.identifierQueryVariableName == null || + typeof identifierInfo.identifierQueryVariableName === 'string', + 'Relay: getRefetchMetadata(): Expected `identifierQueryVariableName` to be a string.', + ); } return { fragmentRefPathInResponse, From 2bf58495c6ee03e913b86e9520ff99a79d0c8bf4 Mon Sep 17 00:00:00 2001 From: Emilio Srougo Date: Mon, 27 Mar 2023 22:18:51 -0600 Subject: [PATCH 13/13] Remove files checked-in by mistake --- packages/react-relay/yarn.lock | 125 ------------------------------- packages/relay-runtime/yarn.lock | 111 --------------------------- 2 files changed, 236 deletions(-) delete mode 100644 packages/react-relay/yarn.lock delete mode 100644 packages/relay-runtime/yarn.lock diff --git a/packages/react-relay/yarn.lock b/packages/react-relay/yarn.lock deleted file mode 100644 index 287edf43a46d9..0000000000000 --- a/packages/react-relay/yarn.lock +++ /dev/null @@ -1,125 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.0.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== - dependencies: - regenerator-runtime "^0.13.11" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.30" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -relay-runtime@14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-14.1.0.tgz#44b317101f560a16caea2eef8a52e254b03908fa" - integrity sha512-t2DR2hZviHrdEQrOvFqwmvRWvZ0SjI/r4bS5f3qvMyXt4g1kw3RTb2RNVmbKGg6zEQhf7Na/brdqE4roApmclQ== - dependencies: - "@babel/runtime" "^7.0.0" - fbjs "^3.0.2" - invariant "^2.2.4" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -ua-parser-js@^0.7.30: - version "0.7.34" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" - integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" diff --git a/packages/relay-runtime/yarn.lock b/packages/relay-runtime/yarn.lock deleted file mode 100644 index 6fb6be04ee33d..0000000000000 --- a/packages/relay-runtime/yarn.lock +++ /dev/null @@ -1,111 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.0.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== - dependencies: - regenerator-runtime "^0.13.11" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.30" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -ua-parser-js@^0.7.30: - version "0.7.34" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" - integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0"