From 124435968e548f2cbc1f710eaa019678d7b8bf73 Mon Sep 17 00:00:00 2001 From: Andrey Lunyov Date: Tue, 7 Jun 2022 07:21:11 -0700 Subject: [PATCH] Support for client-only queries Summary: This diff removes restriction on client-only generation in Relay. - This validation is removed from skip_unreachable_nodes and skip_client_extensions. - The FlowTypes indicate the possibility of the text being `null`. This change allows the building of complete client-only Relay applications, that may rely on Live Resolvers or imperative updaters APIs to write data to the Relay store. Reviewed By: captbaritone Differential Revision: D36890340 fbshipit-source-id: d52942f68aa1497d88d8d7326b3ddb24b3078bdc --- .../crates/relay-codegen/src/build_ast.rs | 15 +++ .../fixtures/connection-directions.expected | 1 + .../connection-empty-filters.expected | 1 + .../fixtures/connection-filters.expected | 1 + .../connection-generate-filters.expected | 1 + ...tion-with-aliased-edges-page-info.expected | 1 + .../connection-with-custom-handler.expected | 1 + .../connections/fixtures/connection.expected | 1 + .../fixtures/valid-documents.expected | 1 + .../src/artifact_content/content.rs | 4 +- .../src/artifact_content/mod.rs | 2 +- .../src/build_project/generate_artifacts.rs | 13 +- .../src/build_project/persist_operations.rs | 4 +- ...nator-fragment-spread-conditional.expected | 1 + ...ype-discriminator-fragment-spread.expected | 1 + ...nator-inline-fragment-conditional.expected | 1 + ...ype-discriminator-inline-fragment.expected | 1 + ...-inline-fragment-different-fields.expected | 1 + ...ent-spread-within-inline-fragment.expected | 1 + ...criminator-nested-fragment-spread.expected | 1 + ...criminator-nested-inline-fragment.expected | 1 + ...ype-discriminator-fragment-spread.expected | 1 + ...ype-discriminator-inline-fragment.expected | 1 + ...minator-when-identical-selections.expected | 1 + ...minator-under-condition_incorrect.expected | 1 + .../abstract-type-refinement.expected | 1 + .../actor-change-simple-query.expected | 1 + .../fixtures/alias-same-as-name.expected | 1 + .../append-edge-on-interface.expected | 1 + .../fixtures/append-edge.expected | 1 + ...ppend-node-literal-edge-type-name.expected | 1 + .../fixtures/append-node.expected | 1 + .../auto-filled-argument-on-defer.expected | 1 + .../fixtures/client-fields-on-roots.expected | 2 + .../client-fragment-spreads-in-query.expected | 1 + .../client-inline-fragments-in-query.expected | 1 + .../fixtures/client-only-query.expected | 97 +++++++++++++++ .../fixtures/client-only-query.graphql | 10 ++ .../client_fields_only_invalid.expected | 103 ++++++++++++++-- .../client_fields_only_invalid.graphql | 2 - ...t_fields_only_no_fragment_invalid.expected | 65 ++++++++-- ...nt_fields_only_no_fragment_invalid.graphql | 2 - .../complex-arguments-in-list.expected | 1 + ...arguments-with-mutliple-variables.expected | 1 + .../fixtures/complex-arguments.expected | 1 + ...tion-with-aliased-edges-page_info.expected | 1 + .../connection-with-dynamic-key.expected | 2 + .../fixtures/connection.expected | 1 + ...t_variable_matches_constant_value.expected | 1 + ...er-multiple-fragments-same-parent.expected | 1 + .../fixtures/defer_if_arguments.expected | 1 + .../fixtures/delete-edge-plural.expected | 1 + .../fixtures/delete-edge.expected | 1 + .../directive_with_conditions.expected | 1 + .../fixtures/explicit-null-argument.expected | 1 + .../explicit-null-default-value.expected | 1 + ...lar-fragment-reference-regression.expected | 1 + .../fields-with-null-argument-values.expected | 1 + .../fixtures/flight-props-transform.expected | 4 + ...e-fragment-does-not-get-flattened.expected | 1 + .../fixtures/fragment-alias.expected | 1 + .../fragment-on-node-interface.expected | 1 + ...agment-on-non-node-fetchable-type.expected | 1 + ...bject-implementing-node-interface.expected | 1 + .../fixtures/fragment-on-query.expected | 1 + .../fixtures/fragment-on-viewer.expected | 1 + .../fragment-with-defer-arguments.expected | 1 + .../fragment-with-defer-in-stream.expected | 1 + ...gment-with-defer-on-abstract-type.expected | 1 + .../fixtures/fragment-with-stream.expected | 1 + .../fixtures/inline-data-fragment.expected | 1 + .../fixtures/kitchen-sink.expected | 1 + .../fixtures/linked-handle-field.expected | 1 + .../fixtures/module-deduping.expected | 1 + .../module-in-inline-fragment.expected | 1 + .../module-overlap-across-documents.expected | 2 + .../fixtures/module-with-defer.expected | 1 + .../multiple-modules-same-selections.expected | 1 + .../multiple-modules-with-key.expected | 1 + .../fixtures/multiple_conditions.expected | 1 + .../no-inline-abstract-fragment.expected | 1 + .../no-inline-fragment-and-module.expected | 1 + .../fixtures/no-inline-fragment.expected | 1 + .../original-client-fields-test.expected | 1 + .../fixtures/prepend-node.expected | 1 + .../provided-variable-directive.expected | 1 + .../provided-variable-in-fragment.expected | 1 + ...rovided-variable-multiple-queries.expected | 2 + ...d-variable-nested-split-operation.expected | 1 + ...vided-variable-no-inline-fragment.expected | 1 + ...ded-variable-refetchable-fragment.expected | 2 + ...d-variable-reused-nested-fragment.expected | 2 + ...ble-reused-nested-linked-fragment.expected | 2 + ...provided-variable-split-operation.expected | 1 + .../query-with-conditional-module.expected | 1 + .../query-with-fragment-variables.expected | 1 + ...-directive-no-inline-experimental.expected | 1 + ...tch-directive-with-extra-argument.expected | 1 + ...ith-match-directive-with-typename.expected | 1 + .../query-with-match-directive.expected | 1 + ...th-module-directive-and-arguments.expected | 1 + .../query-with-module-directive.expected | 1 + ...-with-raw-response-type-directive.expected | 1 + ...mponent-with-argument-definitions.expected | 1 + ...query-with-relay-client-component.expected | 1 + ...ant-selection-in-inline-fragments.expected | 1 + ...tchable-connection-custom-handler.expected | 1 + .../fixtures/refetchable-connection.expected | 1 + ...-fragment-on-node-with-missing-id.expected | 1 + ...ent-with-connection-bidirectional.expected | 1 + ...agment-with-connection-es-modules.expected | 1 + ...gment-with-connection-with-stream.expected | 1 + ...etchable-fragment-with-connection.expected | 1 + .../fixtures/relay-client-id-field.expected | 1 + .../fixtures/relay-live-resolver.expected | 1 + .../fixtures/relay-resolver-alias.expected | 1 + ...elay-resolver-backing-client-edge.expected | 2 + .../fixtures/relay-resolver-required.expected | 1 + ...r-with-args-and-alias-no-fragment.expected | 1 + .../relay-resolver-with-args.expected | 1 + .../fixtures/relay-resolver.expected | 1 + ...fferent-field-args-are-not-merged.expected | 1 + ...argument_not_passed_default_value.expected | 1 + .../fixtures/scalar-handle-field.expected | 1 + ...on_set_conflict_different_aliases.expected | 1 + ...rn_types_for_field_but_same_shape.expected | 1 + ..._different_types_without_conflict.expected | 1 + ...ifferent_types_without_conflict_1.expected | 1 + ...lict_in_typeless_inline_fragments.expected | 1 + ...conflict_stream_on_nodes_or_edges.expected | 1 + ..._edges_without_defer_on_page_info.expected | 1 + ..._on_page_info_and_page_info_alias.expected | 1 + .../selection_set_conflict_valid.expected | 1 + ...lection_set_conflict_valid_stream.expected | 1 + .../fixtures/selections-on-interface.expected | 1 + .../spread-of-assignable-fragment.expected | 1 + .../fixtures/stable-literals.expected | 1 + .../fixtures/stream-and-handle.expected | 1 + .../stream-connection-conditional.expected | 1 + .../fixtures/stream-connection.expected | 1 + .../fixtures/stream_if_arguments.expected | 1 + .../fixtures/supported_arg.expected | 1 + .../fixtures/unions.expected | 1 + ...fragment-spreads-global-arguments.expected | 1 + ...nmasked-fragment-spreads-on-query.expected | 1 + ...masked-fragment-spreads-recursive.expected | 1 + ...es-removed-from-print-not-codegen.expected | 1 + .../unused_fragment_arg_unchecked.expected | 1 + ...ment-spread-with-typename-sibling.expected | 1 + ...ment-spread-with-unused-variables.expected | 1 + ...le-fragment-spread-with-variables.expected | 1 + .../updatable-fragment-spread.expected | 1 + .../fixtures/viewer-query.expected | 1 + .../tests/compile_relay_artifacts/mod.rs | 12 +- .../tests/compile_relay_artifacts_test.rs | 9 +- .../fragment-on-node-interface.expected | 1 + ...bject-implementing-node-interface.expected | 1 + .../fixtures/fragment-on-query.expected | 1 + .../fixtures/fragment-on-viewer.expected | 1 + .../fixtures/kitchen-sink.expected | 1 + .../fixtures/refetchable-connection.expected | 1 + ...-fragment-on-node-with-missing-id.expected | 1 + .../fixtures/relay-client-id-field.expected | 1 + .../fixtures/unions.expected | 1 + .../fixtures/viewer-query.expected | 1 + .../mod.rs | 12 +- .../crates/relay-lsp/src/graphql_tools/mod.rs | 14 +-- .../relay-transforms/src/apply_transforms.rs | 18 ++- .../crates/relay-transforms/src/errors.rs | 8 -- compiler/crates/relay-transforms/src/lib.rs | 2 +- .../src/skip_client_extensions.rs | 26 +--- .../src/skip_unreachable_node.rs | 113 ++++++++++++++---- .../fixtures/client-fields-on-roots.expected | 38 ++++++ ...graphql => client-fields-on-roots.graphql} | 2 - .../client-fields-on-roots.invalid.expected | 48 -------- .../query-with-only-client-fields.expected | 10 ++ ... => query-with-only-client-fields.graphql} | 1 - ...y-with-only-client-fields.invalid.expected | 18 --- .../tests/skip_client_extensions/mod.rs | 4 +- .../tests/skip_client_extensions_test.rs | 18 +-- .../fixtures/skipped-fragment.expected | 35 ++++++ .../fixtures/skipped-fragment.graphql | 17 +++ .../tests/skip_unreachable_nodes/mod.rs | 4 +- .../tests/skip_unreachable_nodes_test.rs | 9 +- .../__tests__/LiveResolvers-test.js | 4 +- .../fetchQueryTest5Query.graphql.js | 79 ++++++++++++ .../query/__tests__/fetchQuery-test.js | 28 +++++ .../relay-runtime/util/RelayConcreteNode.js | 2 +- .../schema-extensions/Query.graphql | 5 + .../schema-extensions/Settings.graphql | 5 + 190 files changed, 821 insertions(+), 200 deletions(-) create mode 100644 compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.expected create mode 100644 compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.graphql create mode 100644 compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.expected rename compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/{client-fields-on-roots.invalid.graphql => client-fields-on-roots.graphql} (94%) delete mode 100644 compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected create mode 100644 compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.expected rename compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/{query-with-only-client-fields.invalid.graphql => query-with-only-client-fields.graphql} (78%) delete mode 100644 compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected create mode 100644 compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.expected create mode 100644 compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.graphql create mode 100644 packages/relay-runtime/query/__tests__/__generated__/fetchQueryTest5Query.graphql.js create mode 100644 packages/relay-test-utils-internal/schema-extensions/Query.graphql create mode 100644 packages/relay-test-utils-internal/schema-extensions/Settings.graphql diff --git a/compiler/crates/relay-codegen/src/build_ast.rs b/compiler/crates/relay-codegen/src/build_ast.rs index 242389d97727b..210806f612039 100644 --- a/compiler/crates/relay-codegen/src/build_ast.rs +++ b/compiler/crates/relay-codegen/src/build_ast.rs @@ -1548,8 +1548,23 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> { value: Primitive::RawString(text), }, ] + } else if request_parameters.id.is_some() { + vec![ + id_prop, + metadata_prop, + name_prop, + operation_kind_prop, + ObjectEntry { + key: CODEGEN_CONSTANTS.text, + value: Primitive::Null, + }, + ] } else { vec![ + ObjectEntry { + key: CODEGEN_CONSTANTS.cache_id, + value: Primitive::RawString(md5(operation.name.item.lookup())), + }, id_prop, metadata_prop, name_prop, diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-directions.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-directions.expected index 11daf9f87e780..7c8eef6048796 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-directions.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-directions.expected @@ -394,6 +394,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-empty-filters.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-empty-filters.expected index 00626d570ddb3..b536046bd7a0a 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-empty-filters.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-empty-filters.expected @@ -249,6 +249,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-filters.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-filters.expected index b1c5505014c3c..de942b6316580 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-filters.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-filters.expected @@ -377,6 +377,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-generate-filters.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-generate-filters.expected index 5bf774e41e22c..b239f924de3cf 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-generate-filters.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-generate-filters.expected @@ -395,6 +395,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-aliased-edges-page-info.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-aliased-edges-page-info.expected index 43c720f36795d..59881b17cde96 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-aliased-edges-page-info.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-aliased-edges-page-info.expected @@ -265,6 +265,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-custom-handler.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-custom-handler.expected index ec3d92846ea07..d8f0b555c3181 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-custom-handler.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection-with-custom-handler.expected @@ -364,6 +364,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/connections/fixtures/connection.expected b/compiler/crates/relay-codegen/tests/connections/fixtures/connection.expected index 84525946bf75b..82c87512d81fc 100644 --- a/compiler/crates/relay-codegen/tests/connections/fixtures/connection.expected +++ b/compiler/crates/relay-codegen/tests/connections/fixtures/connection.expected @@ -359,6 +359,7 @@ return { ] }, "params": { + "cacheID": "ac6b4c4fdff87d8c6ce7c26f6e334226", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-codegen/tests/request_metadata/fixtures/valid-documents.expected b/compiler/crates/relay-codegen/tests/request_metadata/fixtures/valid-documents.expected index 508f8cd1a87b8..0208e7768c788 100644 --- a/compiler/crates/relay-codegen/tests/request_metadata/fixtures/valid-documents.expected +++ b/compiler/crates/relay-codegen/tests/request_metadata/fixtures/valid-documents.expected @@ -73,6 +73,7 @@ query QueryWithMetadata { ] }, "params": { + "cacheID": "2e5967148a8303de3c58059c0eaa87c6", "id": null, "metadata": { "metadataKey": "Hello world!" diff --git a/compiler/crates/relay-compiler/src/artifact_content/content.rs b/compiler/crates/relay-compiler/src/artifact_content/content.rs index 20f6212bdf4f8..c3919c9cafcb4 100644 --- a/compiler/crates/relay-compiler/src/artifact_content/content.rs +++ b/compiler/crates/relay-compiler/src/artifact_content/content.rs @@ -153,7 +153,7 @@ pub fn generate_operation( reader_operation: &OperationDefinition, typegen_operation: &OperationDefinition, source_hash: String, - text: &str, + text: &Option, id_and_text_hash: &Option, skip_types: bool, ) -> Result, FmtError> { @@ -161,7 +161,7 @@ pub fn generate_operation( if id_and_text_hash.is_some() { request_parameters.id = id_and_text_hash; } else { - request_parameters.text = Some(text.into()); + request_parameters.text = text.clone(); }; let operation_fragment = FragmentDefinition { name: reader_operation.name, diff --git a/compiler/crates/relay-compiler/src/artifact_content/mod.rs b/compiler/crates/relay-compiler/src/artifact_content/mod.rs index c75c0002f72c8..b5227e3d7c42d 100644 --- a/compiler/crates/relay-compiler/src/artifact_content/mod.rs +++ b/compiler/crates/relay-compiler/src/artifact_content/mod.rs @@ -25,7 +25,7 @@ pub enum ArtifactContent { reader_operation: Arc, typegen_operation: Arc, source_hash: String, - text: String, + text: Option, id_and_text_hash: Option, }, UpdatableQuery { diff --git a/compiler/crates/relay-compiler/src/build_project/generate_artifacts.rs b/compiler/crates/relay-compiler/src/build_project/generate_artifacts.rs index de697cef37cf8..c1861e2f4ba88 100644 --- a/compiler/crates/relay-compiler/src/build_project/generate_artifacts.rs +++ b/compiler/crates/relay-compiler/src/build_project/generate_artifacts.rs @@ -170,7 +170,9 @@ fn generate_normalization_artifact( source_hash: String, source_file: SourceLocationKey, ) -> Artifact { - let text = operation_printer.print(operations.expect_operation_text()); + let text = operations + .operation_text + .map(|operation| operation_printer.print(operation)); Artifact { source_definition_names: vec![source_definition_name], path: project_config.path_for_artifact(source_file, operations.normalization.name.item), @@ -238,15 +240,6 @@ struct OperationGroup<'a> { } impl<'a> OperationGroup<'a> { - fn expect_operation_text(&self) -> &OperationDefinition { - self.operation_text.unwrap_or_else(|| { - panic!( - "Expected to have a operation_text operation for `{}`", - self.normalization.name.item - ) - }) - } - fn expect_reader(&self) -> Arc { Arc::clone(self.reader.unwrap_or_else(|| { panic!( diff --git a/compiler/crates/relay-compiler/src/build_project/persist_operations.rs b/compiler/crates/relay-compiler/src/build_project/persist_operations.rs index 47d006cb9ebc7..00f71a6a9ce10 100644 --- a/compiler/crates/relay-compiler/src/build_project/persist_operations.rs +++ b/compiler/crates/relay-compiler/src/build_project/persist_operations.rs @@ -51,7 +51,7 @@ pub async fn persist_operations( { *id_and_text_hash = Some(QueryID::External(virtual_id_file_name)); None - } else { + } else if let Some(text) = text { let text_hash = md5(text); let artifact_path = root_dir.join(&artifact.path); let extracted_persist_id = if config.repersist_operations { @@ -70,6 +70,8 @@ pub async fn persist_operations( }) }) } + } else { + None } } else { None diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread-conditional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread-conditional.expected index 4a1453b2c8b4b..2caf5efc470cf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread-conditional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread-conditional.expected @@ -117,6 +117,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorFragmentSpreadConditi ] }, "params": { + "cacheID": "9206eaaffad1e12f6e7727cd01cd417c", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorFragmentSpreadConditional_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread.expected index b327b716d910a..5478d971790e6 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-fragment-spread.expected @@ -89,6 +89,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorFragmentSpread_NodeFr ] }, "params": { + "cacheID": "60e9b9f0d89c6dfcec940caf231e5f2c", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorFragmentSpread_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment-conditional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment-conditional.expected index 4f4d5b1b2816a..f36e2ec85f09a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment-conditional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment-conditional.expected @@ -116,6 +116,7 @@ query abstractTypeRefinementDontFlattenTypeDiscriminatorInlineFragmentConditiona ] }, "params": { + "cacheID": "2e9adb24082d7b97e5ba9fdda362d573", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorInlineFragmentConditional_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment.expected index 3ddb6c2b0d055..f4cd165c87372 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-inline-fragment.expected @@ -88,6 +88,7 @@ query abstractTypeRefinementDontFlattenTypeDiscriminatorInlineFragment_AbstractT ] }, "params": { + "cacheID": "5412f6e444d6ae99909f15f3f7d9f76b", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorInlineFragment_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment-different-fields.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment-different-fields.expected index 87ab7e38311b0..7dc81ca63067a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment-different-fields.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment-different-fields.expected @@ -123,6 +123,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpreadW ] }, "params": { + "cacheID": "aa874916213500bac85f55bac70ef1a1", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpreadWithinInlineFragmentDifferentFields_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment.expected index 71776dd908860..6a98d1f45ec30 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread-within-inline-fragment.expected @@ -102,6 +102,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpreadW ] }, "params": { + "cacheID": "8e92705f7705cc41780b1d42d90ab733", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpreadWithinInlineFragment_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread.expected index 31042286777a7..2267bb0b3f658 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-fragment-spread.expected @@ -95,6 +95,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpread_ ] }, "params": { + "cacheID": "b18f324ebb51d89a4e7974512a17ef56", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorNestedFragmentSpread_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-inline-fragment.expected index 5f8dbd1c296c7..b711e23ad2c16 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-flatten-type-discriminator-nested-inline-fragment.expected @@ -105,6 +105,7 @@ fragment abstractTypeRefinementDontFlattenTypeDiscriminatorNestedInlineFragment_ ] }, "params": { + "cacheID": "e3c542e4d182a128425d6c1e29b19ca4", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontFlattenTypeDiscriminatorNestedInlineFragment_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-fragment-spread.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-fragment-spread.expected index f11ec67e46901..01e2b6ae223d5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-fragment-spread.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-fragment-spread.expected @@ -108,6 +108,7 @@ fragment abstractTypeRefinementDontSkipTypeDiscriminatorFragmentSpread_NodeFragm ] }, "params": { + "cacheID": "46e852a1d0a587f408f3cb577806af0b", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontSkipTypeDiscriminatorFragmentSpread_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-inline-fragment.expected index 36cca9ce29385..fbb4239a6ea0a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-inline-fragment.expected @@ -106,6 +106,7 @@ fragment abstractTypeRefinementDontSkipTypeDiscriminatorInlineFragment_ActorFrag ] }, "params": { + "cacheID": "7f1d413029d4f6717a12f1141f0f9c61", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontSkipTypeDiscriminatorInlineFragment_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-when-identical-selections.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-when-identical-selections.expected index b98c78cf14265..efda5e7985098 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-when-identical-selections.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-dont-skip-type-discriminator-when-identical-selections.expected @@ -127,6 +127,7 @@ fragment abstractTypeRefinementDontSkipTypeDiscriminatorWhenIdenticalSelections_ ] }, "params": { + "cacheID": "5fc3aca129e962f11991489716725fce", "id": null, "metadata": {}, "name": "abstractTypeRefinementDontSkipTypeDiscriminatorWhenIdenticalSelections_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-no-unnecessary-type-discriminator-under-condition_incorrect.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-no-unnecessary-type-discriminator-under-condition_incorrect.expected index 4a8c4520161cd..646a637843aa9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-no-unnecessary-type-discriminator-under-condition_incorrect.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement-no-unnecessary-type-discriminator-under-condition_incorrect.expected @@ -264,6 +264,7 @@ mutation abstractTypeRefinementNoUnnecessaryTypeDiscriminatorUnderConditionIncor ] }, "params": { + "cacheID": "100754c2e67f31b602606199788fcc24", "id": null, "metadata": {}, "name": "abstractTypeRefinementNoUnnecessaryTypeDiscriminatorUnderConditionIncorrect_ChangeNameMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement.expected index ae6e1a560a13f..47e3feb584f58 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/abstract-type-refinement.expected @@ -144,6 +144,7 @@ fragment abstractTypeRefinement_ActorFragment on Actor { ] }, "params": { + "cacheID": "feacbf4c38e59aa276558a9018654a7e", "id": null, "metadata": {}, "name": "abstractTypeRefinement_AbstractTypeRefinementQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/actor-change-simple-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/actor-change-simple-query.expected index 3711e251a11ee..4a5fa1f421d5e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/actor-change-simple-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/actor-change-simple-query.expected @@ -164,6 +164,7 @@ fragment actorChangeSimpleQueryUserFragment on User { ] }, "params": { + "cacheID": "5b421dc4587c0c01cd781123e133ab7d", "id": null, "metadata": {}, "name": "actorChangeSimpleQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/alias-same-as-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/alias-same-as-name.expected index 006b59a3b75d2..0fa9cbda700c5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/alias-same-as-name.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/alias-same-as-name.expected @@ -99,6 +99,7 @@ query aliasSameAsName_TestQuery { ] }, "params": { + "cacheID": "161630d699024acc651e4f5313857aa8", "id": null, "metadata": {}, "name": "aliasSameAsName_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge-on-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge-on-interface.expected index fddbe1a39a2fe..bbfc7cb0d0188 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge-on-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge-on-interface.expected @@ -138,6 +138,7 @@ mutation appendEdgeOnInterfaceMutation( ] }, "params": { + "cacheID": "d204e2183324fbc33e98e848f63cdb5f", "id": null, "metadata": {}, "name": "appendEdgeOnInterfaceMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge.expected index 8fd87fd839819..4b3f89838f38e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-edge.expected @@ -177,6 +177,7 @@ mutation appendEdge_CommentCreateMutation( ] }, "params": { + "cacheID": "9c204231949c489f550d47403e373798", "id": null, "metadata": {}, "name": "appendEdge_CommentCreateMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node-literal-edge-type-name.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node-literal-edge-type-name.expected index d9f6f6935fef9..03c7c146be85a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node-literal-edge-type-name.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node-literal-edge-type-name.expected @@ -144,6 +144,7 @@ mutation appendNodeLiteralEdgeTypeNameCommentCreateMutation( ] }, "params": { + "cacheID": "d2d9e98d8b7fd733fbf453da2a57c3f6", "id": null, "metadata": {}, "name": "appendNodeLiteralEdgeTypeNameCommentCreateMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node.expected index a79ebb2879a7d..615024ee2e801 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/append-node.expected @@ -155,6 +155,7 @@ mutation appendNodeCommentCreateMutation( ] }, "params": { + "cacheID": "7a4f84769f34b7daed587a41f27698cc", "id": null, "metadata": {}, "name": "appendNodeCommentCreateMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/auto-filled-argument-on-defer.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/auto-filled-argument-on-defer.expected index 47c472241bc23..3e1c997fe644d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/auto-filled-argument-on-defer.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/auto-filled-argument-on-defer.expected @@ -106,6 +106,7 @@ fragment autoFilledArgumentOnDeferDeferredFragment on User { ] }, "params": { + "cacheID": "355bb3a3f3326a3962f689e2169b329c", "id": null, "metadata": {}, "name": "autoFilledArgumentOnDeferQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fields-on-roots.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fields-on-roots.expected index 9e4598d2392c7..dee5b5e3ef78b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fields-on-roots.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fields-on-roots.expected @@ -140,6 +140,7 @@ extend type Mutation { ] }, "params": { + "cacheID": "cdf5b479621acd117378029eb0cea266", "id": null, "metadata": {}, "name": "clientFieldsOnRoots_FooMutation", @@ -270,6 +271,7 @@ mutation clientFieldsOnRoots_FooMutation( ] }, "params": { + "cacheID": "0944177ad57ab8d9b6abd67a33085d46", "id": null, "metadata": {}, "name": "clientFieldsOnRoots_FooQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fragment-spreads-in-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fragment-spreads-in-query.expected index 1ec885a9cb31d..6c5e3e8150bba 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fragment-spreads-in-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-fragment-spreads-in-query.expected @@ -141,6 +141,7 @@ type ClientType { ] }, "params": { + "cacheID": "bd2cc350c06e3c2acf412f1bee7f1f6d", "id": null, "metadata": {}, "name": "clientFragmentSpreadsInQuery_FooQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-inline-fragments-in-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-inline-fragments-in-query.expected index b391a51b3b8b8..c9d3e5187355d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-inline-fragments-in-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-inline-fragments-in-query.expected @@ -146,6 +146,7 @@ interface ClientNamed { ] }, "params": { + "cacheID": "0fdcace16a82aaf469e14bd8f7d6e5bd", "id": null, "metadata": {}, "name": "clientInlineFragmentsInQuery_FooQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.expected new file mode 100644 index 0000000000000..86c79c7e94193 --- /dev/null +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.expected @@ -0,0 +1,97 @@ +==================================== INPUT ==================================== +query clientOnlyQuery { + __id + ...clientOnlyQueryFragment @skip(if: true) +} + +fragment clientOnlyQueryFragment on Query { + me { + name + } +} +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "clientOnlyQuery", + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__id", + "storageKey": null + } + ] + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [], + "kind": "Operation", + "name": "clientOnlyQuery", + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "__id", + "storageKey": null + } + ] + } + ] + }, + "params": { + "cacheID": "dc8e1d76de556883962a4d83d88ba905", + "id": null, + "metadata": {}, + "name": "clientOnlyQuery", + "operationKind": "query", + "text": null + } +} + +QUERY: + +Query Text is Empty. + +{ + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "clientOnlyQueryFragment", + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "User", + "kind": "LinkedField", + "name": "me", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "name", + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.graphql new file mode 100644 index 0000000000000..91cfb72a04cf5 --- /dev/null +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client-only-query.graphql @@ -0,0 +1,10 @@ +query clientOnlyQuery { + __id + ...clientOnlyQueryFragment @skip(if: true) +} + +fragment clientOnlyQueryFragment on Query { + me { + name + } +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.expected index 64f72757e0703..f511310b040e3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.expected @@ -1,6 +1,4 @@ ==================================== INPUT ==================================== -# expected-to-throw - query clientFieldsOnlyInvalidQuery { defaultSettings { ...clientFieldsOnlyInvalidFragment @@ -16,11 +14,98 @@ fragment clientFieldsOnlyInvalidFragment on Settings { extend type Settings { client_field: String } -==================================== ERROR ==================================== -✖︎ After transforms, the operation `clientFieldsOnlyInvalidQuery` that would be sent to the server is empty. Relay is not setup to handle such queries. This is likely due to only querying for client extension fields or `@skip`/`@include` directives with constant values that remove all selections. +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "clientFieldsOnlyInvalidQuery", + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Settings", + "kind": "LinkedField", + "name": "defaultSettings", + "plural": false, + "selections": [ + { + "args": null, + "kind": "FragmentSpread", + "name": "clientFieldsOnlyInvalidFragment" + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [], + "kind": "Operation", + "name": "clientFieldsOnlyInvalidQuery", + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Settings", + "kind": "LinkedField", + "name": "defaultSettings", + "plural": false, + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "client_field", + "storageKey": null + } + ] + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "0596673d6a1e987efce7b7b3e80d12fc", + "id": null, + "metadata": {}, + "name": "clientFieldsOnlyInvalidQuery", + "operationKind": "query", + "text": null + } +} - client_fields_only_invalid.graphql:3:7 - 2 │ - 3 │ query clientFieldsOnlyInvalidQuery { - │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 4 │ defaultSettings { +QUERY: + +Query Text is Empty. + +{ + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "clientFieldsOnlyInvalidFragment", + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "client_field", + "storageKey": null + } + ] + } + ], + "type": "Settings", + "abstractKey": null +} diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.graphql index 997d0f7e6c4d9..d263d36ae126f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_invalid.graphql @@ -1,5 +1,3 @@ -# expected-to-throw - query clientFieldsOnlyInvalidQuery { defaultSettings { ...clientFieldsOnlyInvalidFragment diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.expected index aee4c5bc82520..74b025669fabf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.expected @@ -1,6 +1,4 @@ ==================================== INPUT ==================================== -# expected-to-throw - query clientFieldsOnlyNoFragmentInvalidQuery { my_alias: client_field } @@ -10,11 +8,60 @@ query clientFieldsOnlyNoFragmentInvalidQuery { extend type Query { client_field: String } -==================================== ERROR ==================================== -✖︎ After transforms, the operation `clientFieldsOnlyNoFragmentInvalidQuery` that would be sent to the server is empty. Relay is not setup to handle such queries. This is likely due to only querying for client extension fields or `@skip`/`@include` directives with constant values that remove all selections. +==================================== OUTPUT =================================== +{ + "fragment": { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "clientFieldsOnlyNoFragmentInvalidQuery", + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": "my_alias", + "args": null, + "kind": "ScalarField", + "name": "client_field", + "storageKey": null + } + ] + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [], + "kind": "Operation", + "name": "clientFieldsOnlyNoFragmentInvalidQuery", + "selections": [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": "my_alias", + "args": null, + "kind": "ScalarField", + "name": "client_field", + "storageKey": null + } + ] + } + ] + }, + "params": { + "cacheID": "80d5eb8d7136ee47500dc8169d046343", + "id": null, + "metadata": {}, + "name": "clientFieldsOnlyNoFragmentInvalidQuery", + "operationKind": "query", + "text": null + } +} + +QUERY: - client_fields_only_no_fragment_invalid.graphql:3:7 - 2 │ - 3 │ query clientFieldsOnlyNoFragmentInvalidQuery { - │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 4 │ my_alias: client_field +Query Text is Empty. diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.graphql b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.graphql index 822c37ea0408a..d5d1514cd1824 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.graphql +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/client_fields_only_no_fragment_invalid.graphql @@ -1,5 +1,3 @@ -# expected-to-throw - query clientFieldsOnlyNoFragmentInvalidQuery { my_alias: client_field } diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-in-list.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-in-list.expected index dfce78eacf23e..cbc85bea527e8 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-in-list.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-in-list.expected @@ -193,6 +193,7 @@ query complexArgumentsInList_CheckinSearchQuery( ] }, "params": { + "cacheID": "febc2eb571d41c90e6826295bcb31c03", "id": null, "metadata": {}, "name": "complexArgumentsInList_CheckinSearchQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-with-mutliple-variables.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-with-mutliple-variables.expected index 18f67f25f2d9e..c396b224f1221 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-with-mutliple-variables.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments-with-mutliple-variables.expected @@ -199,6 +199,7 @@ query complexArgumentsWithMutlipleVariables_TestQueryWithLiteralQuery($latArg: S ] }, "params": { + "cacheID": "0d09a85b8090a27a8f8d2bec0c97f293", "id": null, "metadata": {}, "name": "complexArgumentsWithMutlipleVariables_TestQueryWithLiteralQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments.expected index 53af00bc37d1c..58a6711761cd5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/complex-arguments.expected @@ -97,6 +97,7 @@ query complexArguments_TestQuery($date: String) { ] }, "params": { + "cacheID": "e26a479a378f78c98e83637eac7cadb9", "id": null, "metadata": {}, "name": "complexArguments_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-aliased-edges-page_info.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-aliased-edges-page_info.expected index 1e3852bde6cfe..2a44eed175115 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-aliased-edges-page_info.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-aliased-edges-page_info.expected @@ -429,6 +429,7 @@ query connectionWithAliasedEdgesPageInfo_NodeQuery($id: ID!) { ] }, "params": { + "cacheID": "07a1ad17d22bc2929b2a991632796f57", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-dynamic-key.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-dynamic-key.expected index 980e3970b3753..e947a22332d09 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-dynamic-key.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection-with-dynamic-key.expected @@ -255,6 +255,7 @@ fragment connectionWithDynamicKey_FeedbackFragment on Feedback ] }, "params": { + "cacheID": "2c6fedb079155610531f358a6e07067d", "id": null, "metadata": {}, "name": "connectionWithDynamicKey_FeedbackQuery", @@ -553,6 +554,7 @@ fragment connectionWithDynamicKey_FeedbackFragment on Feedback { ] }, "params": { + "cacheID": "3268ff589b5679ddd2138985bc1a1d2f", "id": null, "metadata": {}, "name": "connectionWithDynamicKey_PaginationQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection.expected index 1ff8c9426ee0e..2f90ac7b2c763 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/connection.expected @@ -532,6 +532,7 @@ query connection_NodeQuery($id: ID!) { ] }, "params": { + "cacheID": "5c4a7a3b1910dab9ea2b1d388c309229", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/constant_variable_matches_constant_value.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/constant_variable_matches_constant_value.expected index 778c29736bed9..e2ff8c212c78f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/constant_variable_matches_constant_value.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/constant_variable_matches_constant_value.expected @@ -118,6 +118,7 @@ fragment constantVariableMatchesConstantValue_F on Query @argumentDefinitions( ] }, "params": { + "cacheID": "139f23804bae4b7d2097b8aba38c4449", "id": null, "metadata": {}, "name": "constantVariableMatchesConstantValue_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer-multiple-fragments-same-parent.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer-multiple-fragments-same-parent.expected index d2059dff01262..ecb62dc6b8642 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer-multiple-fragments-same-parent.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer-multiple-fragments-same-parent.expected @@ -243,6 +243,7 @@ fragment deferMultipleFragmentsSameParent_FeedbackText_feedback on Feedback { ] }, "params": { + "cacheID": "50b330f0cd13a8fc78ec1b241cbecea5", "id": null, "metadata": {}, "name": "deferMultipleFragmentsSameParent_QueryWithMultipeDeferredFragmentsOnSameParentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer_if_arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer_if_arguments.expected index 60e8f6bc4bf30..c27a020fcb6c1 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer_if_arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/defer_if_arguments.expected @@ -272,6 +272,7 @@ fragment deferIfArguments_F2 on User { ] }, "params": { + "cacheID": "c847208712a224a691a76c6c63df6b69", "id": null, "metadata": {}, "name": "deferIfArgumentsQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge-plural.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge-plural.expected index 65f9915e5b067..bf5fa68b8f72f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge-plural.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge-plural.expected @@ -114,6 +114,7 @@ mutation deleteEdgePluralMutation( ] }, "params": { + "cacheID": "070e8aced8edb7efa36a448987220e37", "id": null, "metadata": {}, "name": "deleteEdgePluralMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge.expected index 0ba0b97804e64..9cf834c82f1aa 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/delete-edge.expected @@ -114,6 +114,7 @@ mutation deleteEdgeMutation( ] }, "params": { + "cacheID": "c332088c32a83b0e906a093d1ca6f3e1", "id": null, "metadata": {}, "name": "deleteEdgeMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/directive_with_conditions.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/directive_with_conditions.expected index 58e89ba31eccb..e16a9e2fa3738 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/directive_with_conditions.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/directive_with_conditions.expected @@ -163,6 +163,7 @@ query directiveWithConditions_TestQuery($foo: Boolean!, $bar: Boolean!) { ] }, "params": { + "cacheID": "7e5dbabeda33dd835f8c5bebd8ee035e", "id": null, "metadata": {}, "name": "directiveWithConditions_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-argument.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-argument.expected index de4eab7eb1832..e84d606976b7a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-argument.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-argument.expected @@ -69,6 +69,7 @@ query explicitNullArgument_TestQuery { ] }, "params": { + "cacheID": "c28e4a08a1f05a6dd6ce003482e587d6", "id": null, "metadata": {}, "name": "explicitNullArgument_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-default-value.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-default-value.expected index 0280e0314817f..229947db93bbf 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-default-value.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/explicit-null-default-value.expected @@ -92,6 +92,7 @@ query explicitNullDefaultValue_TestQuery($id: ID = null) { ] }, "params": { + "cacheID": "3f6f34282180503a8c1c500f4bb64c64", "id": null, "metadata": {}, "name": "explicitNullDefaultValue_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/false-positive-circular-fragment-reference-regression.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/false-positive-circular-fragment-reference-regression.expected index a90bbbb6bee13..55a1262f29465 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/false-positive-circular-fragment-reference-regression.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/false-positive-circular-fragment-reference-regression.expected @@ -124,6 +124,7 @@ fragment falsePositiveCircularFragmentReferenceRegression_MyNestedViewer on View ] }, "params": { + "cacheID": "a391497a87881c91bf2712b90eae97ad", "id": null, "metadata": {}, "name": "falsePositiveCircularFragmentReferenceRegression_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fields-with-null-argument-values.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fields-with-null-argument-values.expected index b778450d60ec1..1901c0561bac9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fields-with-null-argument-values.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fields-with-null-argument-values.expected @@ -300,6 +300,7 @@ query fieldsWithNullArgumentValues_NodeQuery($id: ID!) { ] }, "params": { + "cacheID": "215e95c31f73bb07a1e572c5b78d10b1", "id": null, "metadata": {}, "name": "fieldsWithNullArgumentValues_NodeQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/flight-props-transform.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/flight-props-transform.expected index 213b1be715988..05c017743d405 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/flight-props-transform.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/flight-props-transform.expected @@ -251,6 +251,7 @@ extend type Story { ] }, "params": { + "cacheID": "36c624e95960b57bae298acee0fc2325", "id": null, "metadata": {}, "name": "flightPropsTransform_StoryCommentsQuery", @@ -404,6 +405,7 @@ query flightPropsTransform_StoryCommentsQuery( ] }, "params": { + "cacheID": "1a9ce6cbc21aa0877299be1d6d47b441", "id": null, "metadata": {}, "name": "flightPropsTransform_StoryHeaderQuery", @@ -651,6 +653,7 @@ fragment flightPropsTransform_storyTitle on Story { ] }, "params": { + "cacheID": "69a734ff296b28728d03558e1d566210", "id": null, "metadata": {}, "name": "flightPropsTransform_StoryQuery", @@ -808,6 +811,7 @@ fragment flightPropsTransform_storyTitle on Story { ] }, "params": { + "cacheID": "c7147649e8202d8f1b699b187fc3fd2c", "id": null, "metadata": {}, "name": "flightPropsTransform_StoryTitleQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias-on-inline-fragment-does-not-get-flattened.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias-on-inline-fragment-does-not-get-flattened.expected index f4a535e97b9c4..517fee7723323 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias-on-inline-fragment-does-not-get-flattened.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias-on-inline-fragment-does-not-get-flattened.expected @@ -86,6 +86,7 @@ query fragmentAliasOnInlineFragmentDoesNotGetFlattenedQuery { ] }, "params": { + "cacheID": "4270286a6b83b1708964fc6dbe637fad", "id": null, "metadata": {}, "name": "fragmentAliasOnInlineFragmentDoesNotGetFlattenedQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias.expected index 712cd7a83aac8..77c1795185245 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-alias.expected @@ -58,6 +58,7 @@ fragment fragmentAliasNotEnabled_fragment on Query { ] }, "params": { + "cacheID": "54f82c83369f02f780a7cee91121f696", "id": null, "metadata": {}, "name": "fragmentAliasNotEnabled_Query", 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 c6105201ff870..78e19b4e9d517 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 @@ -151,6 +151,7 @@ fragment fragmentOnNodeInterface_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 34228e206c61f..9d0cf6bcdcc5d 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 @@ -170,6 +170,7 @@ fragment fragmentOnNonNodeFetchableType_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 bc864230ee6cc..84bfa1bd84746 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 @@ -145,6 +145,7 @@ fragment fragmentOnObjectImplementingNodeInterface_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-query.expected index ad45990a76965..0c0544c8caabe 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-query.expected @@ -139,6 +139,7 @@ fragment fragmentOnQuery_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-viewer.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-viewer.expected index 7ac689380403e..e6fb6e792d97c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-viewer.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-on-viewer.expected @@ -136,6 +136,7 @@ fragment fragmentOnViewer_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-arguments.expected index 446de07ea8e0d..bbb3f87d2a58e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-arguments.expected @@ -135,6 +135,7 @@ fragment fragmentWithDeferArguments_DeferredFragment on User @argumentDefinition ] }, "params": { + "cacheID": "ab026ec3f4ca2aa43f0906fd03f467b0", "id": null, "metadata": {}, "name": "fragmentWithDeferArguments_QueryWithFragmentWithDeferQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected index 3d556e54b8851..3e4e33feb3ed8 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-in-stream.expected @@ -166,6 +166,7 @@ fragment fragmentWithDeferInStream_ActorFragment on Actor { ] }, "params": { + "cacheID": "58bae4fbfe1db6bcf096fc1090fd85f2", "id": null, "metadata": {}, "name": "fragmentWithDeferInStream_QueryWithFragmentWithStreamQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-on-abstract-type.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-on-abstract-type.expected index 7846a4224a448..f4080325ebdf3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-on-abstract-type.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-defer-on-abstract-type.expected @@ -139,6 +139,7 @@ fragment fragmentWithDeferOnAbstractType_NodeFragment on Node { ] }, "params": { + "cacheID": "385d9d42a098c801994da137876b1281", "id": null, "metadata": {}, "name": "fragmentWithDeferOnAbstractType_QueryWithFragmentWithDeferQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected index 002bbb646c663..6d08b8070d456 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/fragment-with-stream.expected @@ -151,6 +151,7 @@ fragment fragmentWithStream_FeedbackFragment on Feedback { ] }, "params": { + "cacheID": "686b0fc284c42c1b59df84d1ab994e3f", "id": null, "metadata": {}, "name": "fragmentWithStream_QueryWithFragmentWithStreamQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/inline-data-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/inline-data-fragment.expected index 253f2a9056b1a..bf38c259506a3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/inline-data-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/inline-data-fragment.expected @@ -176,6 +176,7 @@ fragment inlineDataFragment_Profile on User @inline { ] }, "params": { + "cacheID": "f2e39c3c745c36ed42388acd4f1e772f", "id": null, "metadata": {}, "name": "inlineDataFragment_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/kitchen-sink.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/kitchen-sink.expected index 296893b542b88..e97a79258e679 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/kitchen-sink.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/kitchen-sink.expected @@ -321,6 +321,7 @@ fragment kitchenSink_UserFragment on User ] }, "params": { + "cacheID": "5618e206601c300e4b49137ca8f355a6", "id": null, "metadata": {}, "name": "kitchenSink_NodeQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/linked-handle-field.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/linked-handle-field.expected index 14e3939a5ba82..70d26ebabf12b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/linked-handle-field.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/linked-handle-field.expected @@ -160,6 +160,7 @@ query linkedHandleField_LinkedHandleFieldQuery($id: ID!) { ] }, "params": { + "cacheID": "2378f055c5a2ff0f540628967dd09101", "id": null, "metadata": {}, "name": "linkedHandleField_LinkedHandleFieldQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-deduping.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-deduping.expected index e4c8a64b3e3d4..e0113e65d456d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-deduping.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-deduping.expected @@ -144,6 +144,7 @@ fragment moduleDeduping_frag on PlainUserNameRenderer { ] }, "params": { + "cacheID": "bcd1ff00ded9abf56604af2d9f02df5b", "id": null, "metadata": {}, "name": "moduleDedupingQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-in-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-in-inline-fragment.expected index 22a6e7052b64d..3c8f3d1eb05ca 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-in-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-in-inline-fragment.expected @@ -230,6 +230,7 @@ fragment moduleInInlineFragment_MarkdownUserNameRenderer_name on MarkdownUserNam ] }, "params": { + "cacheID": "cfa2c20e34500cfdccf8fbba58e35d09", "id": null, "metadata": {}, "name": "moduleInInlineFragment_MultipleNameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-overlap-across-documents.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-overlap-across-documents.expected index 023281fb5f3c5..49b721af1ec83 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-overlap-across-documents.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-overlap-across-documents.expected @@ -168,6 +168,7 @@ fragment moduleOverlapAcrossDocuments_MarkdownUserNameRenderer_name on MarkdownU ] }, "params": { + "cacheID": "12d7fba9abd0a625820a53304a090f06", "id": null, "metadata": {}, "name": "moduleOverlapAcrossDocuments_BarNameRendererQuery", @@ -346,6 +347,7 @@ fragment moduleOverlapAcrossDocuments_MarkdownUserNameRenderer_name on MarkdownU ] }, "params": { + "cacheID": "24663198d376b7f2ec9738847160e3c8", "id": null, "metadata": {}, "name": "moduleOverlapAcrossDocuments_FooNameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-with-defer.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-with-defer.expected index 0e157bcbda6fc..74e780fd7aac9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-with-defer.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/module-with-defer.expected @@ -191,6 +191,7 @@ fragment moduleWithDefer_MarkdownUserNameRenderer_name on MarkdownUserNameRender ] }, "params": { + "cacheID": "6926c16892bf4e6a40452c5a647ee5ae", "id": null, "metadata": {}, "name": "moduleWithDefer_MultipleNameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-same-selections.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-same-selections.expected index 6451cc5fa44b9..d16ed5e5a04eb 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-same-selections.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-same-selections.expected @@ -273,6 +273,7 @@ fragment multipleModulesSameSelections_MarkdownUserNameRenderer_name on Markdown ] }, "params": { + "cacheID": "0538ff92de9ce8bc3fb1b002a6c94883", "id": null, "metadata": {}, "name": "multipleModulesSameSelections_MatchQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-with-key.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-with-key.expected index f26b05996962a..9f855308d1f41 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-with-key.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple-modules-with-key.expected @@ -292,6 +292,7 @@ fragment multipleModulesWithKey_MarkdownUserNameRenderer_name on MarkdownUserNam ] }, "params": { + "cacheID": "7b91e41e49fadbcc290de63062b05451", "id": null, "metadata": {}, "name": "multipleModulesWithKey_MatchQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple_conditions.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple_conditions.expected index 068f1cedc5044..448a47642e412 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple_conditions.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/multiple_conditions.expected @@ -172,6 +172,7 @@ query multipleConditions_TestQuery($foo: Boolean!, $bar: Boolean!) { ] }, "params": { + "cacheID": "c509c577c80ed67666d7822a8660ece5", "id": null, "metadata": {}, "name": "multipleConditions_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-abstract-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-abstract-fragment.expected index 033df0b7b19c3..71b4bc1c116b9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-abstract-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-abstract-fragment.expected @@ -196,6 +196,7 @@ fragment noInlineAbstractFragment_child on User ] }, "params": { + "cacheID": "2d4d5adea4f6185b69786243476f7905", "id": null, "metadata": {}, "name": "noInlineAbstractFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment-and-module.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment-and-module.expected index 31707257235ec..075be3e176f9f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment-and-module.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment-and-module.expected @@ -72,6 +72,7 @@ fragment noInlineFragmentAndModule_parent on User @no_inline { ] }, "params": { + "cacheID": "335a1e4741d00acc41dc8fc7a522f121", "id": null, "metadata": {}, "name": "noInlineFragmentAndModuleQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment.expected index d130d2a5fa971..d5321f25bae1b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/no-inline-fragment.expected @@ -185,6 +185,7 @@ fragment noInlineFragment_child on User ] }, "params": { + "cacheID": "9b9ec33b4b85baaf3c2132bf478cbcc0", "id": null, "metadata": {}, "name": "noInlineFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/original-client-fields-test.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/original-client-fields-test.expected index dc1b9f245ee80..c84a77f5b80a4 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/original-client-fields-test.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/original-client-fields-test.expected @@ -319,6 +319,7 @@ type Foo implements Named { ] }, "params": { + "cacheID": "1f875f2169b04e1d6486319f486e4f1f", "id": null, "metadata": {}, "name": "originalClientFieldsTest_BestFriendsQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/prepend-node.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/prepend-node.expected index b768ff3c3bf34..80f596da72482 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/prepend-node.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/prepend-node.expected @@ -155,6 +155,7 @@ mutation prependNodeCommentCreateMutation( ] }, "params": { + "cacheID": "986315e15727cfe5db2c3ba845466df1", "id": null, "metadata": {}, "name": "prependNodeCommentCreateMutation", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-directive.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-directive.expected index d36e919d63f4f..b12ece29ac90a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-directive.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-directive.expected @@ -109,6 +109,7 @@ fragment providedVariableDirective_DeferredFragment on Image { ] }, "params": { + "cacheID": "7f42e1a7f51ebaba8612a0379815ea13", "id": null, "metadata": {}, "name": "providedVariableDirectiveQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-in-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-in-fragment.expected index bcd1be94a518c..1b548a74d30b5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-in-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-in-fragment.expected @@ -175,6 +175,7 @@ fragment providedVariableInFragment_Fragment2 on User ] }, "params": { + "cacheID": "cc39eff012bd94ed7e81152d202bede3", "id": null, "metadata": {}, "name": "providedVariableInFragment_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-multiple-queries.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-multiple-queries.expected index 3aa9259eba519..8db5ff239a03a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-multiple-queries.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-multiple-queries.expected @@ -211,6 +211,7 @@ fragment providedVariableMultipleQueries_MultiProvidedVar on User ] }, "params": { + "cacheID": "03dc1560686305d9b9175170a10372f5", "id": null, "metadata": {}, "name": "providedVariableMultipleQueries_MultiFragmentQuery", @@ -354,6 +355,7 @@ fragment providedVariableMultipleQueries_OneProvidedVar on User { ] }, "params": { + "cacheID": "ea387f3a4107fc1e0e3ccf1c1a6ba845", "id": null, "metadata": {}, "name": "providedVariableMultipleQueries_OneFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-nested-split-operation.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-nested-split-operation.expected index aba0724d94f76..1519b3048dcd2 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-nested-split-operation.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-nested-split-operation.expected @@ -460,6 +460,7 @@ fragment providedVariableNestedSplitOperation_Plain2 on PlainUserNameRenderer ] }, "params": { + "cacheID": "7ab9994fea7cd244a85187c5bf6a710b", "id": null, "metadata": {}, "name": "providedVariableNestedSplitOperation_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-no-inline-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-no-inline-fragment.expected index 6784853957d5b..d807e0bf4bce0 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-no-inline-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-no-inline-fragment.expected @@ -112,6 +112,7 @@ fragment providedVariableNoInlineFragment on User ] }, "params": { + "cacheID": "09ca846a02bd70f112e462272c8f2bee", "id": null, "metadata": {}, "name": "providedVariableNoInlineFragment_Query", 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 933dd8500e79c..b4cc718ccffa0 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 @@ -123,6 +123,7 @@ fragment providedVariableRefetchableFragment_providedVariableFragment on User ] }, "params": { + "cacheID": "aec8cba63c34d250a3508ba37a4021b2", "id": null, "metadata": {}, "name": "providedVariableRefetchableFragmentQuery", @@ -273,6 +274,7 @@ fragment providedVariableRefetchableFragment_providedVariableFragment on User { ] }, "params": { + "cacheID": "b8a7a02a0ee5dcbac23246959bda7f5a", "id": null, "metadata": {}, "name": "refetchableQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-fragment.expected index cd03f1fa8ba05..0109b0b538eb9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-fragment.expected @@ -146,6 +146,7 @@ fragment providedVariableReusedNestedFragment_FragmentWithProvider on User ] }, "params": { + "cacheID": "5777f62195fef32cf34389bccf37b5c6", "id": null, "metadata": {}, "name": "providedVariableReusedNestedFragment_1Query", @@ -298,6 +299,7 @@ fragment providedVariableReusedNestedFragment_FragmentWithProvider on User { ] }, "params": { + "cacheID": "a7ba193cb99a25d35888dc6c2bd943b3", "id": null, "metadata": {}, "name": "providedVariableReusedNestedFragment_2Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-linked-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-linked-fragment.expected index 9db1cfca72674..22785217398d9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-linked-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-reused-nested-linked-fragment.expected @@ -119,6 +119,7 @@ fragment providedVariableReusedNestedLinkedFragment_FragmentWithProvider on User ] }, "params": { + "cacheID": "dd9be7f35551e8c9f58ba97ed089c1f0", "id": null, "metadata": {}, "name": "providedVariableReusedNestedLinkedFragment_1Query", @@ -246,6 +247,7 @@ fragment providedVariableReusedNestedLinkedFragment_FragmentWithProvider on User ] }, "params": { + "cacheID": "acee8af5cc722ed585aeff6e2a0bfee0", "id": null, "metadata": {}, "name": "providedVariableReusedNestedLinkedFragment_2Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-split-operation.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-split-operation.expected index 63dffa552e141..21e3e4003fd67 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-split-operation.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/provided-variable-split-operation.expected @@ -271,6 +271,7 @@ fragment providedVariableSplitOperation_PlainUserNameRenderer_name on PlainUserN ] }, "params": { + "cacheID": "aed79cd01f8ca78c5459d9e30b02add0", "id": null, "metadata": {}, "name": "providedVariableSplitOperation_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-conditional-module.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-conditional-module.expected index 424ad73a017db..9a88a1cb58f63 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-conditional-module.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-conditional-module.expected @@ -203,6 +203,7 @@ fragment queryWithConditionalModule_MarkdownUserNameRenderer_name on MarkdownUse ] }, "params": { + "cacheID": "57bfdc0865769e331a7e64027e4a2207", "id": null, "metadata": {}, "name": "queryWithConditionalModule_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-fragment-variables.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-fragment-variables.expected index f837e918143a5..e3d99f49e1e3c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-fragment-variables.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-fragment-variables.expected @@ -272,6 +272,7 @@ fragment queryWithFragmentVariables_Profile on User @argumentDefinitions(picture ] }, "params": { + "cacheID": "68dc6cd1d9deb637ee001f62f94dd3f7", "id": null, "metadata": {}, "name": "queryWithFragmentVariables_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-no-inline-experimental.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-no-inline-experimental.expected index b4db28111bd5d..0109d3976bf7e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-no-inline-experimental.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-no-inline-experimental.expected @@ -212,6 +212,7 @@ fragment queryWithMatchDirectiveNoInlineExperimental_MarkdownUserNameRenderer_na ] }, "params": { + "cacheID": "ab75af1c807d6bd7243a891faae69152", "id": null, "metadata": {}, "name": "queryWithMatchDirectiveNoInlineExperimental_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-extra-argument.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-extra-argument.expected index 2adbc38014947..ac3d9bd3b593d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-extra-argument.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-extra-argument.expected @@ -217,6 +217,7 @@ fragment queryWithMatchDirectiveWithExtraArgument_MarkdownUserNameRenderer_name ] }, "params": { + "cacheID": "d7097d1e7c33c002c436c507f9fd7517", "id": null, "metadata": {}, "name": "queryWithMatchDirectiveWithExtraArgument_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-typename.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-typename.expected index 6c858fab50385..18bc4c179c7b0 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-typename.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive-with-typename.expected @@ -213,6 +213,7 @@ fragment queryWithMatchDirectiveWithTypename_MarkdownUserNameRenderer_name on Ma ] }, "params": { + "cacheID": "8704aca1c774650415c954e45fe1c2d2", "id": null, "metadata": {}, "name": "queryWithMatchDirectiveWithTypename_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive.expected index 74d03dbfb337f..57a2dc35fbf36 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-match-directive.expected @@ -212,6 +212,7 @@ fragment queryWithMatchDirective_MarkdownUserNameRenderer_name on MarkdownUserNa ] }, "params": { + "cacheID": "843f9a58a157608f7623a06e36eebdcd", "id": null, "metadata": {}, "name": "queryWithMatchDirective_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive-and-arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive-and-arguments.expected index ab9fba64315f4..7b05725d417e8 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive-and-arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive-and-arguments.expected @@ -258,6 +258,7 @@ fragment queryWithModuleDirectiveAndArguments_PlainUserNameRenderer_name on Plai ] }, "params": { + "cacheID": "c5ca94f23e09153e815027a354eeb19d", "id": null, "metadata": {}, "name": "queryWithModuleDirectiveAndArguments_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive.expected index 93a72dd63f1a4..78ce2416d8688 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-module-directive.expected @@ -185,6 +185,7 @@ fragment queryWithModuleDirective_MarkdownUserNameRenderer_name on MarkdownUserN ] }, "params": { + "cacheID": "a9b54beb95da3610b1d1dc4bdf584b31", "id": null, "metadata": {}, "name": "queryWithModuleDirective_NameRendererQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-raw-response-type-directive.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-raw-response-type-directive.expected index 15e476d35370d..a879236471437 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-raw-response-type-directive.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-raw-response-type-directive.expected @@ -92,6 +92,7 @@ query queryWithRawResponseTypeDirective_ViewerQuery @raw_response_type { ] }, "params": { + "cacheID": "098672c8d4b8ee9d01363a39a6e2a15b", "id": null, "metadata": {}, "name": "queryWithRawResponseTypeDirective_ViewerQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component-with-argument-definitions.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component-with-argument-definitions.expected index 10c2944aaefc6..d189cb6244efe 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component-with-argument-definitions.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component-with-argument-definitions.expected @@ -160,6 +160,7 @@ fragment queryWithRelayClientComponentWithArgumentDefinitions_ClientComponentFra ] }, "params": { + "cacheID": "6ad82143df29774a4c9152ad549f165a", "id": null, "metadata": {}, "name": "queryWithRelayClientComponentWithArgumentDefinitions_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component.expected index 097ffdfa9b176..95b3ccbe643b4 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/query-with-relay-client-component.expected @@ -160,6 +160,7 @@ fragment queryWithRelayClientComponent_ClientComponentFragment on User { ] }, "params": { + "cacheID": "acfdaa661773ccf675ea2c3179ce215b", "id": null, "metadata": {}, "name": "queryWithRelayClientComponent_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/redundant-selection-in-inline-fragments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/redundant-selection-in-inline-fragments.expected index 025462e3aaaf9..9fecd4814787e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/redundant-selection-in-inline-fragments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/redundant-selection-in-inline-fragments.expected @@ -125,6 +125,7 @@ fragment redundantSelectionInInlineFragments_interface_concrete on MaybeNodeInte ] }, "params": { + "cacheID": "a2cab90fa9338b32581f32dc69b74f70", "id": null, "metadata": {}, "name": "redundantSelectionInInlineFragmentsQuery", 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 3bb73460275c4..35b9c79c1e5a3 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 @@ -239,6 +239,7 @@ fragment refetchableConnectionCustomHandler_RefetchableConnection_feedback on Fe ] }, "params": { + "cacheID": "5b0bba64f5feedde7f799aa3e6ec8e76", "id": null, "metadata": {}, "name": "RefetchableConnectionQuery", 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 98e8352d428f0..fb16f42a15e28 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 @@ -239,6 +239,7 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback ] }, "params": { + "cacheID": "5b0bba64f5feedde7f799aa3e6ec8e76", "id": null, "metadata": {}, "name": "RefetchableConnectionQuery", 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 1788540a959ff..e91b8492174b1 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 @@ -150,6 +150,7 @@ fragment refetchableFragmentOnNodeWithMissingId_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 90fa3d5f89264..a26bdf4b5f4f2 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 @@ -321,6 +321,7 @@ fragment refetchableFragmentWithConnectionBidirectional_PaginationFragment on No ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 350fa9d5132e3..9616b19185e26 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 @@ -269,6 +269,7 @@ fragment refetchableFragmentWithConnectionEsModules_PaginationFragment on Node ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/refetchable-fragment-with-connection-with-stream.expected index 330d00ea0ebc4..84b1abf3b93f3 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 @@ -277,6 +277,7 @@ fragment refetchableFragmentWithConnectionWithStream_PaginationFragment on Node ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 ad962974ed214..aef310842b6a4 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 @@ -263,6 +263,7 @@ fragment refetchableFragmentWithConnection_PaginationFragment on Node ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-client-id-field.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-client-id-field.expected index e42dbf1f7face..98b9afe482213 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-client-id-field.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-client-id-field.expected @@ -445,6 +445,7 @@ query relayClientIdField_RelayClientIDFieldQuery($id: ID!) { ] }, "params": { + "cacheID": "f5dcbf963d8dae2e51cbc19757a897f0", "id": null, "metadata": {}, "name": "relayClientIdField_RelayClientIDFieldQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-live-resolver.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-live-resolver.expected index f84775605d409..f9cc7622f3f9c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-live-resolver.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-live-resolver.expected @@ -119,6 +119,7 @@ extend type User { ] }, "params": { + "cacheID": "c1ff5fa92dd2f8f4663ba7961282dfae", "id": null, "metadata": {}, "name": "relayLiveResolver_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-alias.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-alias.expected index 0336372972538..4f235a0e39b7a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-alias.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-alias.expected @@ -119,6 +119,7 @@ extend type User { ] }, "params": { + "cacheID": "e62d8a91ad997dde78426ac55a69da20", "id": null, "metadata": {}, "name": "relayResolverAlias_Query", 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 e4b95ba1ddf60..0542f79d46417 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 @@ -120,6 +120,7 @@ extend type User { ] }, "params": { + "cacheID": "56c04ebac7002237e75be5e7ab3c5226", "id": null, "metadata": {}, "name": "ClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best_friend", @@ -239,6 +240,7 @@ fragment RefetchableClientEdgeQuery_relayResolverBackingClientEdgeQuery_me__best ] }, "params": { + "cacheID": "cd11ab38bf61095cf9256339ad230856", "id": null, "metadata": {}, "name": "relayResolverBackingClientEdgeQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-required.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-required.expected index 89d89a934bdce..52921d62c4b6d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-required.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-required.expected @@ -124,6 +124,7 @@ extend type User { ] }, "params": { + "cacheID": "c082ee91089e4f0c59b1b43c626db5f3", "id": null, "metadata": {}, "name": "relayResolverRequired_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args-and-alias-no-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args-and-alias-no-fragment.expected index 76dd59d145156..8e04599b3b510 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args-and-alias-no-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args-and-alias-no-fragment.expected @@ -140,6 +140,7 @@ extend type User { ] }, "params": { + "cacheID": "0fd786be9fc2161de275ad93d371f2c7", "id": null, "metadata": {}, "name": "relayResolverWithArgsAndAliasNoFragment_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args.expected index 8ed05ef9af60f..e7586e635bd7c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver-with-args.expected @@ -152,6 +152,7 @@ extend type User { ] }, "params": { + "cacheID": "382bc167e8c38e52244050c504ef7740", "id": null, "metadata": {}, "name": "relayResolverWithArgs_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver.expected index 788b3309d7bc9..ffeef1f9b0fb5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolver.expected @@ -119,6 +119,7 @@ extend type User { ] }, "params": { + "cacheID": "c339a0740c0ebb60328b845f3f6c69ca", "id": null, "metadata": {}, "name": "relayResolver_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolvers-with-different-field-args-are-not-merged.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolvers-with-different-field-args-are-not-merged.expected index 160b20a968799..6767e8402103e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolvers-with-different-field-args-are-not-merged.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/relay-resolvers-with-different-field-args-are-not-merged.expected @@ -145,6 +145,7 @@ extend type User { ] }, "params": { + "cacheID": "04e25ab8f217a0996b121a8ec57a9243", "id": null, "metadata": {}, "name": "relayResolversWithDifferentFieldArgsAreNotMerged_Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/required_argument_not_passed_default_value.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/required_argument_not_passed_default_value.expected index b0169bc223c36..bcf16ba40e919 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/required_argument_not_passed_default_value.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/required_argument_not_passed_default_value.expected @@ -98,6 +98,7 @@ fragment requiredArgumentNotPassedDefaultValueFragment on User @argumentDefiniti ] }, "params": { + "cacheID": "f44ef0d8f71d4ded18f92d918e645635", "id": null, "metadata": {}, "name": "requiredArgumentNotPassedDefaultValueQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/scalar-handle-field.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/scalar-handle-field.expected index b79a512a3d704..d72f17c75b329 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/scalar-handle-field.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/scalar-handle-field.expected @@ -124,6 +124,7 @@ query scalarHandleField_ScalarHandleFieldQuery($id: ID!) { ] }, "params": { + "cacheID": "80f7603cd42c85d6c2a8b52b5111bd92", "id": null, "metadata": {}, "name": "scalarHandleField_ScalarHandleFieldQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_aliases.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_aliases.expected index a7e595fb90540..14afd7ffc9ed2 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_aliases.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_aliases.expected @@ -155,6 +155,7 @@ query selectionSetConflictDifferentAliasesQuery { ] }, "params": { + "cacheID": "d027059a74ff0cbcc216e54ac1ed3393", "id": null, "metadata": {}, "name": "selectionSetConflictDifferentAliasesQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_return_types_for_field_but_same_shape.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_return_types_for_field_but_same_shape.expected index ac50bd2a4988b..dedf16230e4ad 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_return_types_for_field_but_same_shape.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_return_types_for_field_but_same_shape.expected @@ -242,6 +242,7 @@ query selectionSetConflictDifferentReturnTypesForFieldButSameShapeQuery { ] }, "params": { + "cacheID": "33740d452487f09fae2847103a8f3e48", "id": null, "metadata": {}, "name": "selectionSetConflictDifferentReturnTypesForFieldButSameShapeQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict.expected index 700380eaf774b..9851232fe7422 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict.expected @@ -134,6 +134,7 @@ query selectionSetConflictDifferentTypesWithoutConflictQuery { ] }, "params": { + "cacheID": "63c678ab0ccd54623b81d906aff2c988", "id": null, "metadata": {}, "name": "selectionSetConflictDifferentTypesWithoutConflictQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_1.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_1.expected index b6a3b42207cc6..cb96d22bbe381 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_1.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_1.expected @@ -318,6 +318,7 @@ query selectionSetConflictDifferentTypesWithoutConflict1Query { ] }, "params": { + "cacheID": "2b78b92072ac0dce913c3a9260e4f8e2", "id": null, "metadata": {}, "name": "selectionSetConflictDifferentTypesWithoutConflict1Query", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_in_typeless_inline_fragments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_in_typeless_inline_fragments.expected index 335d6525e8ea3..2b49be83a9941 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_in_typeless_inline_fragments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_different_types_without_conflict_in_typeless_inline_fragments.expected @@ -138,6 +138,7 @@ query selectionSetConflictDifferentTypesWithoutConflictInTypelessInlineFragments ] }, "params": { + "cacheID": "317a07fce4aadf32ed19c008ccbfdd9c", "id": null, "metadata": {}, "name": "selectionSetConflictDifferentTypesWithoutConflictInTypelessInlineFragmentsQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected index f69b6e967b75e..caf8639343dce 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges.expected @@ -154,6 +154,7 @@ query selectionSetConflictStreamOnNodesOrEdgesQuery { ] }, "params": { + "cacheID": "b296f165c51f0cfda19ba71e80033ff8", "id": null, "metadata": {}, "name": "selectionSetConflictStreamOnNodesOrEdgesQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected index 42539774dc1e4..da48ec2941e11 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info.expected @@ -196,6 +196,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery { ] }, "params": { + "cacheID": "23e3801e44f4d285631a2d1aafa90ea4", "id": null, "metadata": {}, "name": "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected index 076b93742a360..072e3d086aa5e 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_stream_on_nodes_or_edges_without_defer_on_page_info_and_page_info_alias.expected @@ -196,6 +196,7 @@ query selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoA ] }, "params": { + "cacheID": "b7d131863bc827da12e4e84dc88b339b", "id": null, "metadata": {}, "name": "selectionSetConflictStreamOnNodesOrEdgesWithoutDeferOnPageInfoAndPageInfoAliasQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid.expected index 80002f33ea774..a71a6fc4137ed 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid.expected @@ -216,6 +216,7 @@ query selectionSetConflictValidQuery { ] }, "params": { + "cacheID": "86fcebd4369ef1e533c23c4c3384cfae", "id": null, "metadata": {}, "name": "selectionSetConflictValidQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected index ca94f2998cec2..d2dc62828f103 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selection_set_conflict_valid_stream.expected @@ -154,6 +154,7 @@ query selectionSetConflictValidStreamQuery { ] }, "params": { + "cacheID": "0767251f016604fbdec0c216f7b8b8d3", "id": null, "metadata": {}, "name": "selectionSetConflictValidStreamQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selections-on-interface.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selections-on-interface.expected index c15216ed6e2c1..e11eaade894d3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selections-on-interface.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/selections-on-interface.expected @@ -145,6 +145,7 @@ query selectionsOnInterfaceQuery($id: ID!) { ] }, "params": { + "cacheID": "14e1bd154799812f2c478643bc7e7542", "id": null, "metadata": {}, "name": "selectionsOnInterfaceQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/spread-of-assignable-fragment.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/spread-of-assignable-fragment.expected index 5a3ea146c08e0..416ead7651ac8 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/spread-of-assignable-fragment.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/spread-of-assignable-fragment.expected @@ -249,6 +249,7 @@ fragment spreadOfAssignableFragmentAssignable_node on Node @assignable { ] }, "params": { + "cacheID": "ce914fc61943f66dbd7680da49e327fa", "id": null, "metadata": {}, "name": "spreadOfAssignableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stable-literals.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stable-literals.expected index 48956bdb7f57e..5f2562917adf0 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stable-literals.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stable-literals.expected @@ -114,6 +114,7 @@ query stableLiterals_StableLiteralsTestQuery { ] }, "params": { + "cacheID": "b80eee5410aecb8ce5a6bf9f07095bc8", "id": null, "metadata": {}, "name": "stableLiterals_StableLiteralsTestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected index fceaef53b576a..af5c86cbde306 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-and-handle.expected @@ -150,6 +150,7 @@ fragment streamAndHandleFragment on Feedback { ] }, "params": { + "cacheID": "90367b9d26096f8e3f30ffc24e180360", "id": null, "metadata": {}, "name": "streamAndHandleQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected index c54f3d9efe97a..36f31d1241775 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection-conditional.expected @@ -327,6 +327,7 @@ query streamConnectionConditionalQuery($id: ID!, $cond: Boolean!) { ] }, "params": { + "cacheID": "1c8f665f2391d91c1962578f45f17719", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected index e24b01c449b7a..fccdf311a5906 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream-connection.expected @@ -368,6 +368,7 @@ query streamConnection_NodeQuery($id: ID!) { ] }, "params": { + "cacheID": "871a32c3a97ee742db11e4e04e7160c8", "id": null, "metadata": { "connection": [ diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected index 50b14943b9484..2669b06cf9944 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/stream_if_arguments.expected @@ -262,6 +262,7 @@ fragment streamIfArgumentsFragment on User ] }, "params": { + "cacheID": "4fa86bf8b79007fba59a288ef47693ff", "id": null, "metadata": {}, "name": "streamIfArgumentsQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/supported_arg.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/supported_arg.expected index 7ba270ae55f2e..b7641ae85a9b6 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/supported_arg.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/supported_arg.expected @@ -206,6 +206,7 @@ query supportedArgQuery { ] }, "params": { + "cacheID": "59feeb178739051c4e39d5ae76165587", "id": null, "metadata": {}, "name": "supportedArgQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unions.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unions.expected index a0d6e5c5027af..893af828eaae9 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unions.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unions.expected @@ -182,6 +182,7 @@ query unions_UnionQuery { ] }, "params": { + "cacheID": "d3ce66836d039423997e91afce4be10a", "id": null, "metadata": {}, "name": "unions_UnionQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-global-arguments.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-global-arguments.expected index c9f19fd6fa6dd..e0b9c9b3df995 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-global-arguments.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-global-arguments.expected @@ -137,6 +137,7 @@ fragment unmaskedFragmentSpreadsGlobalArguments_UserUtil_user on User { ] }, "params": { + "cacheID": "aa857fa4789e76fb4244ead027fe2cc3", "id": null, "metadata": {}, "name": "unmaskedFragmentSpreadsGlobalArguments_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-on-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-on-query.expected index 22444e476a22b..9c1663b11c756 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-on-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-on-query.expected @@ -96,6 +96,7 @@ fragment unmaskedFragmentSpreadsOnQuery_UserUtil_user on User { ] }, "params": { + "cacheID": "f0296f98548d6b96e94a82f94160b4fd", "id": null, "metadata": {}, "name": "unmaskedFragmentSpreadsOnQuery_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-recursive.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-recursive.expected index 9f2d8d5e55d4a..238da3198330a 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-recursive.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unmasked-fragment-spreads-recursive.expected @@ -169,6 +169,7 @@ fragment unmaskedFragmentSpreadsRecursive_UserUtil2_user on User { ] }, "params": { + "cacheID": "1a757388ff23ff23788bd875d8698663", "id": null, "metadata": {}, "name": "unmaskedFragmentSpreadsRecursive_TestQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused-variables-removed-from-print-not-codegen.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused-variables-removed-from-print-not-codegen.expected index 1a4a6f4f72f42..f31d189a99a3c 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused-variables-removed-from-print-not-codegen.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused-variables-removed-from-print-not-codegen.expected @@ -139,6 +139,7 @@ fragment unusedVariablesRemovedFromPrintNotCodegen_ConnectionFragment on User ] }, "params": { + "cacheID": "dc6717f012e57751f3e8dd79f3009a0a", "id": null, "metadata": {}, "name": "unusedVariablesRemovedFromPrintNotCodegen_QueryWithUnusedVariablesQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused_fragment_arg_unchecked.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused_fragment_arg_unchecked.expected index b55dc890dabbb..efbe333eabce1 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused_fragment_arg_unchecked.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/unused_fragment_arg_unchecked.expected @@ -147,6 +147,7 @@ fragment unusedFragmentArgUnchecked_ProfilePhoto on User { ] }, "params": { + "cacheID": "2d11bedb915b03a70c15642f219ef3f9", "id": null, "metadata": {}, "name": "unusedFragmentArgUnchecked_QueryWithUnusedFragmentArgumentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-typename-sibling.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-typename-sibling.expected index 6c6b12f24c349..fcee8da7dece5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-typename-sibling.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-typename-sibling.expected @@ -78,6 +78,7 @@ fragment updatableFragmentSpreadWithTypenameSibling_user on User @updatable { ] }, "params": { + "cacheID": "6b90b014dc1a60c6e1965dd6d5f54eb5", "id": null, "metadata": {}, "name": "updatableFragmentSpreadWithTypenameSiblingQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-unused-variables.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-unused-variables.expected index 686e3a75e12fb..ca61893536b4f 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-unused-variables.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-unused-variables.expected @@ -109,6 +109,7 @@ fragment updatableFragmentSpreadWithUnusedVariables_user on User @updatable { ] }, "params": { + "cacheID": "907cb8b1e58fe13af9420995a4ab199b", "id": null, "metadata": {}, "name": "updatableFragmentSpreadWithUnusedVariablesQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-variables.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-variables.expected index 46c1281a244f7..5911f81e46eab 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-variables.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread-with-variables.expected @@ -82,6 +82,7 @@ fragment updatableFragmentSpreadWithVariables_user on User @updatable { ] }, "params": { + "cacheID": "e44a8339d787ad1c7a638bf2da89390d", "id": null, "metadata": {}, "name": "updatableFragmentSpreadWithVariablesQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread.expected index 4bcab3eb6f98c..5c150ad90eb53 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/updatable-fragment-spread.expected @@ -70,6 +70,7 @@ fragment updatableFragmentSpread_user on User @updatable { ] }, "params": { + "cacheID": "ab305f6c667af33c786baa772e238874", "id": null, "metadata": {}, "name": "updatableFragmentSpreadQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/viewer-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/viewer-query.expected index 02e039915a06a..fc879131b7d35 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/viewer-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/fixtures/viewer-query.expected @@ -92,6 +92,7 @@ query viewerQueryQuery { ] }, "params": { + "cacheID": "9dc1ed583583f202044ae8abd853f23e", "id": null, "metadata": {}, "name": "viewerQueryQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/mod.rs b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/mod.rs index b0a897ac3d343..b5a330ea46789 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts/mod.rs +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts/mod.rs @@ -187,11 +187,13 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { format!("{}{}", import_statements, operation) } else { let name = operation.name.item; - let print_operation_node = programs - .operation_text - .operation(name) - .expect("a query text operation should be generated for this operation"); - let text = print_full_operation(&programs.operation_text, print_operation_node); + let print_operation_node = programs.operation_text.operation(name); + let text = print_operation_node.map_or_else( + || "Query Text is Empty.".to_string(), + |print_operation_node| { + print_full_operation(&programs.operation_text, print_operation_node) + }, + ); let reader_operation = programs .reader diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_test.rs b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_test.rs index 396e742e5fbe9..8e8fae1a2d55d 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_test.rs +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_test.rs @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<6b361a30c876d473dc27306f68ef4544>> */ mod compile_relay_artifacts; @@ -250,6 +250,13 @@ fn client_linked_fields() { test_fixture(transform_fixture, "client-linked-fields.graphql", "compile_relay_artifacts/fixtures/client-linked-fields.expected", input, expected); } +#[test] +fn client_only_query() { + let input = include_str!("compile_relay_artifacts/fixtures/client-only-query.graphql"); + let expected = include_str!("compile_relay_artifacts/fixtures/client-only-query.expected"); + test_fixture(transform_fixture, "client-only-query.graphql", "compile_relay_artifacts/fixtures/client-only-query.expected", input, expected); +} + #[test] fn client_scalar_fields() { let input = include_str!("compile_relay_artifacts/fixtures/client-scalar-fields.graphql"); 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 dbc28ab10083d..01249a6d7a551 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 @@ -151,6 +151,7 @@ fragment fragmentOnNodeInterface_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", 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 7e78f33dd56f4..5f0a60287bc01 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 @@ -145,6 +145,7 @@ fragment fragmentOnObjectImplementingNodeInterface_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected index 140520439620e..388080c88a1f3 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-query.expected @@ -139,6 +139,7 @@ fragment fragmentOnQuery_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected index 0eb7fd5a2f44b..4383563306138 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/fragment-on-viewer.expected @@ -136,6 +136,7 @@ fragment fragmentOnViewer_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected index af140730ff8d8..8a37173ea57f5 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/kitchen-sink.expected @@ -321,6 +321,7 @@ fragment kitchenSink_UserFragment on User ] }, "params": { + "cacheID": "5618e206601c300e4b49137ca8f355a6", "id": null, "metadata": {}, "name": "kitchenSink_NodeQuery", 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 f043752157e91..006ab5afb60b9 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 @@ -239,6 +239,7 @@ fragment refetchableConnection_RefetchableConnection_feedback on Feedback ] }, "params": { + "cacheID": "5b0bba64f5feedde7f799aa3e6ec8e76", "id": null, "metadata": {}, "name": "RefetchableConnectionQuery", 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 5e9c26324373e..551bbf5f813d8 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 @@ -150,6 +150,7 @@ fragment refetchableFragmentOnNodeWithMissingId_ProfilePicture on User { ] }, "params": { + "cacheID": "31dcd57f42128b8d975e6224202a17c9", "id": null, "metadata": {}, "name": "RefetchableFragmentQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected index ade953783a290..3838f9592455b 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/relay-client-id-field.expected @@ -445,6 +445,7 @@ query relayClientIdField_RelayClientIDFieldQuery($id: ID!) { ] }, "params": { + "cacheID": "f5dcbf963d8dae2e51cbc19757a897f0", "id": null, "metadata": {}, "name": "relayClientIdField_RelayClientIDFieldQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/unions.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/unions.expected index 85c19e149aec1..5025ddce53f94 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/unions.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/unions.expected @@ -182,6 +182,7 @@ query unions_UnionQuery { ] }, "params": { + "cacheID": "d3ce66836d039423997e91afce4be10a", "id": null, "metadata": {}, "name": "unions_UnionQuery", diff --git a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected index 3aa8e8e53bdd5..75e9c2d870812 100644 --- a/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected +++ b/compiler/crates/relay-compiler/tests/compile_relay_artifacts_with_custom_id/fixtures/viewer-query.expected @@ -92,6 +92,7 @@ query viewerQueryQuery { ] }, "params": { + "cacheID": "9dc1ed583583f202044ae8abd853f23e", "id": null, "metadata": {}, "name": "viewerQueryQuery", 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 7e81a3cf3c0a8..8a64618e15928 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 @@ -118,11 +118,13 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { format!("{}{}", import_statements, operation) } else { let name = operation.name.item; - let print_operation_node = programs - .operation_text - .operation(name) - .expect("a query text operation should be generated for this operation"); - let text = print_full_operation(&programs.operation_text, print_operation_node); + let print_operation_node = programs.operation_text.operation(name); + let text = print_operation_node.map_or_else( + || "Query Text is Empty.".to_string(), + |print_operation_node| { + print_full_operation(&programs.operation_text, print_operation_node) + }, + ); let reader_operation = programs .reader diff --git a/compiler/crates/relay-lsp/src/graphql_tools/mod.rs b/compiler/crates/relay-lsp/src/graphql_tools/mod.rs index 356614168248b..72acbb29b28c2 100644 --- a/compiler/crates/relay-lsp/src/graphql_tools/mod.rs +++ b/compiler/crates/relay-lsp/src/graphql_tools/mod.rs @@ -139,13 +139,13 @@ fn transform_program( .map_err(|errors| format!("{:?}", errors)) } -fn print_full_operation_text(programs: Programs, operation_name: StringKey) -> String { - let print_operation_node = programs - .operation_text - .operation(operation_name) - .expect("a query text operation should be generated for this operation"); +fn print_full_operation_text(programs: Programs, operation_name: StringKey) -> Option { + let print_operation_node = programs.operation_text.operation(operation_name)?; - print_full_operation(&programs.operation_text, print_operation_node) + Some(print_full_operation( + &programs.operation_text, + print_operation_node, + )) } /// From the list of AST nodes we're trying to extract the operation and possible @@ -241,7 +241,7 @@ pub(crate) fn get_query_text< ) .map_err(LSPRuntimeError::UnexpectedError)?; - print_full_operation_text(programs, operation_name) + print_full_operation_text(programs, operation_name).unwrap_or(original_text) } else { original_text }; diff --git a/compiler/crates/relay-transforms/src/apply_transforms.rs b/compiler/crates/relay-transforms/src/apply_transforms.rs index e07e7e7a94bda..0259dd5553a8b 100644 --- a/compiler/crates/relay-transforms/src/apply_transforms.rs +++ b/compiler/crates/relay-transforms/src/apply_transforms.rs @@ -248,7 +248,9 @@ fn apply_reader_transforms( )?; program = log_event.time("inline_data_fragment", || inline_data_fragment(&program))?; - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + program = log_event.time("skip_unreachable_node", || { + skip_unreachable_node_strict(&program) + })?; program = log_event.time("remove_base_fragments", || { remove_base_fragments(&program, &base_fragment_names) }); @@ -395,7 +397,9 @@ fn apply_normalization_transforms( print_stats("hash_supported_argument", &program); } - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + program = log_event.time("skip_unreachable_node", || { + skip_unreachable_node_strict(&program) + })?; if let Some(print_stats) = maybe_print_stats { print_stats("skip_unreachable_node", &program); } @@ -488,10 +492,16 @@ fn apply_operation_text_transforms( }); program = log_event.time("skip_split_operation", || skip_split_operation(&program)); + program = log_event.time("skip_unreachable_node_strict", || { + skip_unreachable_node_strict(&program) + })?; program = log_event.time("skip_client_extensions", || { skip_client_extensions(&program) - })?; - program = log_event.time("skip_unreachable_node", || skip_unreachable_node(&program))?; + }); + program = log_event.time("skip_unreachable_node_loose", || { + skip_unreachable_node_loose(&program) + }); + program = log_event.time("generate_typename", || generate_typename(&program, false)); program = log_event.time("skip_null_arguments_transform", || { skip_null_arguments_transform(&program) diff --git a/compiler/crates/relay-transforms/src/errors.rs b/compiler/crates/relay-transforms/src/errors.rs index 05730feb0004b..8a3e99a3e0fff 100644 --- a/compiler/crates/relay-transforms/src/errors.rs +++ b/compiler/crates/relay-transforms/src/errors.rs @@ -117,14 +117,6 @@ pub enum ValidationMessage { )] RequiredExplicitNoInlineDirective { fragment_name: StringKey }, - #[error( - "After transforms, the operation `{name}` that would be sent to the server is empty. \ - Relay is not setup to handle such queries. This is likely due to only querying for \ - client extension fields or `@skip`/`@include` directives with constant values that \ - remove all selections." - )] - EmptyOperationResult { name: StringKey }, - #[error( "The `@relay_test_operation` directive is only allowed within test \ files because it creates larger generated files we don't want to \ diff --git a/compiler/crates/relay-transforms/src/lib.rs b/compiler/crates/relay-transforms/src/lib.rs index 939a63e063622..04f8fa1c5b257 100644 --- a/compiler/crates/relay-transforms/src/lib.rs +++ b/compiler/crates/relay-transforms/src/lib.rs @@ -163,7 +163,7 @@ pub use skip_client_extensions::skip_client_extensions; pub use skip_null_arguments_transform::skip_null_arguments_transform; pub use skip_redundant_nodes::{skip_redundant_nodes, SkipRedundantNodesTransform}; pub use skip_split_operation::skip_split_operation; -pub use skip_unreachable_node::skip_unreachable_node; +pub use skip_unreachable_node::{skip_unreachable_node_loose, skip_unreachable_node_strict}; pub use sort_selections::sort_selections; pub use test_operation_metadata::generate_test_operation_metadata; pub use transform_connections::transform_connections; diff --git a/compiler/crates/relay-transforms/src/skip_client_extensions.rs b/compiler/crates/relay-transforms/src/skip_client_extensions.rs index 792c82f4f4d91..70f368eab2947 100644 --- a/compiler/crates/relay-transforms/src/skip_client_extensions.rs +++ b/compiler/crates/relay-transforms/src/skip_client_extensions.rs @@ -5,8 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -use crate::{util::CustomMetadataDirectives, ValidationMessage}; -use common::{Diagnostic, DiagnosticsResult}; +use crate::util::CustomMetadataDirectives; use graphql_ir::{ Directive, FragmentDefinition, FragmentSpread, InlineFragment, LinkedField, OperationDefinition, Program, ScalarField, Selection, Transformed, Transformer, @@ -16,27 +15,20 @@ use schema::Schema; /// Transform to skip IR nodes if they are client-defined extensions /// to the schema -pub fn skip_client_extensions(program: &Program) -> DiagnosticsResult { +pub fn skip_client_extensions(program: &Program) -> Program { let mut transform = SkipClientExtensionsTransform::new(program); let transformed = transform.transform_program(program); - if transform.errors.is_empty() { - Ok(transformed.replace_or_else(|| program.clone())) - } else { - Err(transform.errors) - } + + transformed.replace_or_else(|| program.clone()) } struct SkipClientExtensionsTransform<'s> { program: &'s Program, - errors: Vec, } impl<'s> SkipClientExtensionsTransform<'s> { fn new(program: &'s Program) -> Self { - Self { - program, - errors: vec![], - } + Self { program } } } @@ -62,14 +54,6 @@ impl<'s> Transformer for SkipClientExtensionsTransform<'s> { operation: &OperationDefinition, ) -> Transformed { let transformed = self.default_transform_operation(operation); - if let Transformed::Delete = transformed { - self.errors.push(Diagnostic::error( - ValidationMessage::EmptyOperationResult { - name: operation.name.item, - }, - operation.name.location, - )); - } transformed } diff --git a/compiler/crates/relay-transforms/src/skip_unreachable_node.rs b/compiler/crates/relay-transforms/src/skip_unreachable_node.rs index 6703d1dc6762e..96437dac5df99 100644 --- a/compiler/crates/relay-transforms/src/skip_unreachable_node.rs +++ b/compiler/crates/relay-transforms/src/skip_unreachable_node.rs @@ -6,7 +6,7 @@ */ use super::defer_stream::DEFER_STREAM_CONSTANTS; -use crate::{DeferDirective, NoInlineFragmentSpreadMetadata, StreamDirective, ValidationMessage}; +use crate::{DeferDirective, NoInlineFragmentSpreadMetadata, StreamDirective}; use common::{Diagnostic, DiagnosticsResult, NamedItem}; use graphql_ir::{ transform_list_multi, Condition, ConditionValue, ConstantValue, FragmentDefinition, @@ -15,9 +15,32 @@ use graphql_ir::{ }; use intern::string_key::{StringKey, StringKeyMap}; use std::sync::Arc; +use thiserror::Error; -pub fn skip_unreachable_node(program: &Program) -> DiagnosticsResult { - let mut skip_unreachable_node_transform = SkipUnreachableNodeTransform::new(program); +enum ValidationMode { + Strict, + Loose, +} + +pub fn skip_unreachable_node_strict(program: &Program) -> DiagnosticsResult { + skip_unreachable_node(program, ValidationMode::Strict) +} + +pub fn skip_unreachable_node_loose(program: &Program) -> Program { + skip_unreachable_node(program, ValidationMode::Loose).unwrap_or_else(|error| { + panic!( + "Unexpected error in `skip_unreachable_node_loose`: {:?}", + error + ) + }) +} + +fn skip_unreachable_node( + program: &Program, + validation_mode: ValidationMode, +) -> DiagnosticsResult { + let mut skip_unreachable_node_transform = + SkipUnreachableNodeTransform::new(program, validation_mode); let transformed = skip_unreachable_node_transform.transform_program(program); if skip_unreachable_node_transform.errors.is_empty() { Ok(transformed.replace_or_else(|| program.clone())) @@ -32,6 +55,7 @@ pub struct SkipUnreachableNodeTransform<'s> { errors: Vec, visited_fragments: VisitedFragments, program: &'s Program, + validation_mode: ValidationMode, } impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { @@ -62,12 +86,15 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { for operation in program.operations() { match self.transform_operation(operation) { Transformed::Delete => { - self.errors.push(Diagnostic::error( - ValidationMessage::EmptyOperationResult { - name: operation.name.item, - }, - operation.name.location, - )); + if matches!(self.validation_mode, ValidationMode::Strict) { + self.errors.push(Diagnostic::error( + ValidationMessage::EmptySelectionsInDocument { + document: "query", + name: operation.name.item, + }, + operation.name.location, + )); + } has_changes = true; } Transformed::Keep => next_program.insert_operation(Arc::clone(operation)), @@ -77,18 +104,41 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { } } } - - for (_, fragment) in self.visited_fragments.drain() { - match fragment { - (_, Transformed::Delete) => { - has_changes = true; - } - (fragment, Transformed::Keep) => { - next_program.insert_fragment(fragment); + for fragment in program.fragments() { + if let Some(visited_fragment) = self.visited_fragments.get(&fragment.name.item) { + match visited_fragment { + (_, Transformed::Delete) => { + has_changes = true; + } + (fragment, Transformed::Keep) => { + next_program.insert_fragment(Arc::clone(fragment)); + } + (_, Transformed::Replace(replacement)) => { + next_program.insert_fragment(Arc::new(replacement.clone())); + has_changes = true; + } } - (_, Transformed::Replace(replacement)) => { - next_program.insert_fragment(Arc::new(replacement)); - has_changes = true; + } else { + match self.transform_fragment(fragment) { + Transformed::Delete => { + if matches!(self.validation_mode, ValidationMode::Strict) { + self.errors.push(Diagnostic::error( + ValidationMessage::EmptySelectionsInDocument { + document: "fragment", + name: fragment.name.item, + }, + fragment.name.location, + )); + } + has_changes = true; + } + Transformed::Keep => { + next_program.insert_fragment(Arc::clone(fragment)); + } + Transformed::Replace(replacement) => { + next_program.insert_fragment(Arc::new(replacement.clone())); + has_changes = true; + } } } } @@ -145,11 +195,11 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { } fn transform_linked_field(&mut self, field: &LinkedField) -> Transformed { - let tranformed_field = self.default_transform_linked_field(field); + let transformed_field = self.default_transform_linked_field(field); if let Some(directive) = field.directives.named(DEFER_STREAM_CONSTANTS.stream_name) { if let Some(if_arg) = StreamDirective::from(directive).if_arg { if let Value::Constant(ConstantValue::Boolean(false)) = &if_arg.value.item { - let mut next_field = match tranformed_field { + let mut next_field = match transformed_field { Transformed::Delete => return Transformed::Delete, Transformed::Keep => Arc::new(field.clone()), Transformed::Replace(Selection::LinkedField(replacement)) => replacement, @@ -172,16 +222,17 @@ impl<'s> Transformer for SkipUnreachableNodeTransform<'s> { } } } - tranformed_field + transformed_field } } impl<'s> SkipUnreachableNodeTransform<'s> { - pub fn new(program: &'s Program) -> Self { + fn new(program: &'s Program, validation_mode: ValidationMode) -> Self { Self { errors: Vec::new(), visited_fragments: Default::default(), program, + validation_mode, } } @@ -270,3 +321,17 @@ impl<'s> SkipUnreachableNodeTransform<'s> { } } } + +#[derive(Clone, Debug, Error, Eq, PartialEq, Ord, PartialOrd, Hash)] +enum ValidationMessage { + #[error( + "After applying transforms to the {document} `{name}` selections of \ + the `{name}` that would be sent to the server are empty. \ + This is likely due to the use of `@skip`/`@include` directives with \ + constant values that remove all selections in the {document}. " + )] + EmptySelectionsInDocument { + name: StringKey, + document: &'static str, + }, +} diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.expected b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.expected new file mode 100644 index 0000000000000..7892a83d1ee10 --- /dev/null +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.expected @@ -0,0 +1,38 @@ +==================================== INPUT ==================================== +query FooQuery($id: ID!, $arg: String) { + client_root_field + + node(id: $id) { + id + } +} + +mutation FooMutation { + client_root_field +} + +subscription FooSubscription { + client_root_field +} + +# %extensions% +extend type Query { + client_root_field: String +} + +extend type Mutation { + client_root_field: String +} + +extend type Subscription { + client_root_field: String +} +==================================== OUTPUT =================================== +query FooQuery( + $id: ID! + $arg: String +) { + node(id: $id) { + id + } +} diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.graphql b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.graphql similarity index 94% rename from compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.graphql rename to compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.graphql index 730a3af6c4df6..ae40ebcda0e1b 100644 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.graphql @@ -1,5 +1,3 @@ -# expected-to-throw - query FooQuery($id: ID!, $arg: String) { client_root_field diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected deleted file mode 100644 index f351118e60f70..0000000000000 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected +++ /dev/null @@ -1,48 +0,0 @@ -==================================== INPUT ==================================== -# expected-to-throw - -query FooQuery($id: ID!, $arg: String) { - client_root_field - - node(id: $id) { - id - } -} - -mutation FooMutation { - client_root_field -} - -subscription FooSubscription { - client_root_field -} - -# %extensions% -extend type Query { - client_root_field: String -} - -extend type Mutation { - client_root_field: String -} - -extend type Subscription { - client_root_field: String -} -==================================== ERROR ==================================== -✖︎ After transforms, the operation `FooMutation` that would be sent to the server is empty. Relay is not setup to handle such queries. This is likely due to only querying for client extension fields or `@skip`/`@include` directives with constant values that remove all selections. - - client-fields-on-roots.invalid.graphql:11:10 - 10 │ - 11 │ mutation FooMutation { - │ ^^^^^^^^^^^ - 12 │ client_root_field - - -✖︎ After transforms, the operation `FooSubscription` that would be sent to the server is empty. Relay is not setup to handle such queries. This is likely due to only querying for client extension fields or `@skip`/`@include` directives with constant values that remove all selections. - - client-fields-on-roots.invalid.graphql:15:14 - 14 │ - 15 │ subscription FooSubscription { - │ ^^^^^^^^^^^^^^^ - 16 │ client_root_field diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.expected b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.expected new file mode 100644 index 0000000000000..748e4cfa7080a --- /dev/null +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.expected @@ -0,0 +1,10 @@ +==================================== INPUT ==================================== +query MyQuery { + foo +} + +# %extensions% +extend type Query { + foo: String +} +==================================== OUTPUT =================================== diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.graphql b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.graphql similarity index 78% rename from compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.graphql rename to compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.graphql index 22e633253de54..207c1d533a92b 100644 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.graphql +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.graphql @@ -1,4 +1,3 @@ -# expected-to-throw query MyQuery { foo } diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected b/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected deleted file mode 100644 index a8a33c8bbe93e..0000000000000 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected +++ /dev/null @@ -1,18 +0,0 @@ -==================================== INPUT ==================================== -# expected-to-throw -query MyQuery { - foo -} - -# %extensions% -extend type Query { - foo: String -} -==================================== ERROR ==================================== -✖︎ After transforms, the operation `MyQuery` that would be sent to the server is empty. Relay is not setup to handle such queries. This is likely due to only querying for client extension fields or `@skip`/`@include` directives with constant values that remove all selections. - - query-with-only-client-fields.invalid.graphql:2:7 - 1 │ # expected-to-throw - 2 │ query MyQuery { - │ ^^^^^^^ - 3 │ foo diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions/mod.rs b/compiler/crates/relay-transforms/tests/skip_client_extensions/mod.rs index f20e21a170784..b6240535758ed 100644 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions/mod.rs +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions/mod.rs @@ -9,7 +9,6 @@ use common::SourceLocationKey; use fixture_tests::Fixture; use graphql_ir::{build, Program}; use graphql_syntax::parse_executable; -use graphql_test_helpers::diagnostics_to_sorted_string; use graphql_text_printer::{print_fragment, print_operation, PrinterOptions}; use relay_test_schema::get_test_schema_with_extensions; use relay_transforms::skip_client_extensions; @@ -23,8 +22,7 @@ pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { let schema = get_test_schema_with_extensions(extensions); let ir = build(&schema, &ast.definitions).unwrap(); let context = Program::from_definitions(Arc::clone(&schema), ir); - let next_context = skip_client_extensions(&context) - .map_err(|diagnostics| diagnostics_to_sorted_string(fixture.content, &diagnostics))?; + let next_context = skip_client_extensions(&context); let printer_options = PrinterOptions { debug_directive_data: true, diff --git a/compiler/crates/relay-transforms/tests/skip_client_extensions_test.rs b/compiler/crates/relay-transforms/tests/skip_client_extensions_test.rs index 1caba122dacef..a69ccef9ef75c 100644 --- a/compiler/crates/relay-transforms/tests/skip_client_extensions_test.rs +++ b/compiler/crates/relay-transforms/tests/skip_client_extensions_test.rs @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<0ac94cae608d3e09869f9e6f4f8ddf99>> + * @generated SignedSource<<63a5e6c07739f57b58aebaf6414d3d8f>> */ mod skip_client_extensions; @@ -41,10 +41,10 @@ fn client_fields_of_client_type() { } #[test] -fn client_fields_on_roots_invalid() { - let input = include_str!("skip_client_extensions/fixtures/client-fields-on-roots.invalid.graphql"); - let expected = include_str!("skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected"); - test_fixture(transform_fixture, "client-fields-on-roots.invalid.graphql", "skip_client_extensions/fixtures/client-fields-on-roots.invalid.expected", input, expected); +fn client_fields_on_roots() { + let input = include_str!("skip_client_extensions/fixtures/client-fields-on-roots.graphql"); + let expected = include_str!("skip_client_extensions/fixtures/client-fields-on-roots.expected"); + test_fixture(transform_fixture, "client-fields-on-roots.graphql", "skip_client_extensions/fixtures/client-fields-on-roots.expected", input, expected); } #[test] @@ -90,10 +90,10 @@ fn client_scalar_fields() { } #[test] -fn query_with_only_client_fields_invalid() { - let input = include_str!("skip_client_extensions/fixtures/query-with-only-client-fields.invalid.graphql"); - let expected = include_str!("skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected"); - test_fixture(transform_fixture, "query-with-only-client-fields.invalid.graphql", "skip_client_extensions/fixtures/query-with-only-client-fields.invalid.expected", input, expected); +fn query_with_only_client_fields() { + let input = include_str!("skip_client_extensions/fixtures/query-with-only-client-fields.graphql"); + let expected = include_str!("skip_client_extensions/fixtures/query-with-only-client-fields.expected"); + test_fixture(transform_fixture, "query-with-only-client-fields.graphql", "skip_client_extensions/fixtures/query-with-only-client-fields.expected", input, expected); } #[test] diff --git a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.expected b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.expected new file mode 100644 index 0000000000000..4d9005750f7a5 --- /dev/null +++ b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.expected @@ -0,0 +1,35 @@ +==================================== INPUT ==================================== +#expected-to-throw + +fragment Fragment1 on Query { + me @skip(if: true) { + name + } +} + +fragment Fragment2 on Query { + me { + name + } +} + +query Query { + ...Fragment2 @skip(if: true) +} +==================================== ERROR ==================================== +✖︎ After applying transforms to the fragment `Fragment1` selections of the `Fragment1` that would be sent to the server are empty. This is likely due to the use of `@skip`/`@include` directives with constant values that remove all selections in the fragment. + + skipped-fragment.graphql:3:10 + 2 │ + 3 │ fragment Fragment1 on Query { + │ ^^^^^^^^^ + 4 │ me @skip(if: true) { + + +✖︎ After applying transforms to the query `Query` selections of the `Query` that would be sent to the server are empty. This is likely due to the use of `@skip`/`@include` directives with constant values that remove all selections in the query. + + skipped-fragment.graphql:15:7 + 14 │ + 15 │ query Query { + │ ^^^^^ + 16 │ ...Fragment2 @skip(if: true) diff --git a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.graphql b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.graphql new file mode 100644 index 0000000000000..a4c382a44787a --- /dev/null +++ b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/fixtures/skipped-fragment.graphql @@ -0,0 +1,17 @@ +#expected-to-throw + +fragment Fragment1 on Query { + me @skip(if: true) { + name + } +} + +fragment Fragment2 on Query { + me { + name + } +} + +query Query { + ...Fragment2 @skip(if: true) +} diff --git a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs index a370f7270b45d..f9a2d693dea79 100644 --- a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs +++ b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes/mod.rs @@ -7,8 +7,8 @@ use fixture_tests::Fixture; use graphql_test_helpers::apply_transform_for_test; -use relay_transforms::skip_unreachable_node; +use relay_transforms::skip_unreachable_node_strict; pub fn transform_fixture(fixture: &Fixture<'_>) -> Result { - apply_transform_for_test(fixture, skip_unreachable_node) + apply_transform_for_test(fixture, skip_unreachable_node_strict) } diff --git a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes_test.rs b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes_test.rs index a58fa80f94063..6a894de234aae 100644 --- a/compiler/crates/relay-transforms/tests/skip_unreachable_nodes_test.rs +++ b/compiler/crates/relay-transforms/tests/skip_unreachable_nodes_test.rs @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<7a79624bacaa2630906153cef4745e78>> + * @generated SignedSource<<92728b5919d760a08def5a55c9b9e71e>> */ mod skip_unreachable_nodes; @@ -39,3 +39,10 @@ fn removes_skip_true() { let expected = include_str!("skip_unreachable_nodes/fixtures/removes-skip-true.expected"); test_fixture(transform_fixture, "removes-skip-true.graphql", "skip_unreachable_nodes/fixtures/removes-skip-true.expected", input, expected); } + +#[test] +fn skipped_fragment() { + let input = include_str!("skip_unreachable_nodes/fixtures/skipped-fragment.graphql"); + let expected = include_str!("skip_unreachable_nodes/fixtures/skipped-fragment.expected"); + test_fixture(transform_fixture, "skipped-fragment.graphql", "skip_unreachable_nodes/fixtures/skipped-fragment.expected", input, expected); +} diff --git a/packages/react-relay/__tests__/LiveResolvers-test.js b/packages/react-relay/__tests__/LiveResolvers-test.js index 8cbc6f7ac5c50..0b6c1f79a69ff 100644 --- a/packages/react-relay/__tests__/LiveResolvers-test.js +++ b/packages/react-relay/__tests__/LiveResolvers-test.js @@ -11,8 +11,8 @@ 'use strict'; -import type {MutableRecordSource} from 'relay-runtime/store/RelayStoreTypes'; import type {IEnvironment} from 'relay-runtime'; +import type {MutableRecordSource} from 'relay-runtime/store/RelayStoreTypes'; const React = require('react'); const { @@ -890,7 +890,6 @@ test('with client-only field', () => { } `, {}, - {fetchPolicy: 'store-only'}, ); return data.counter_no_fragment; } @@ -950,7 +949,6 @@ test('with client-only field and args', () => { } `, {prefix}, - {fetchPolicy: 'store-only'}, ); return data.counter_no_fragment_with_arg; } diff --git a/packages/relay-runtime/query/__tests__/__generated__/fetchQueryTest5Query.graphql.js b/packages/relay-runtime/query/__tests__/__generated__/fetchQueryTest5Query.graphql.js new file mode 100644 index 0000000000000..09b567b6cec06 --- /dev/null +++ b/packages/relay-runtime/query/__tests__/__generated__/fetchQueryTest5Query.graphql.js @@ -0,0 +1,79 @@ +/** + * 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. + * + * @generated SignedSource<> + * @flow + * @lightSyntaxTransform + * @nogrep + */ + +/* eslint-disable */ + +'use strict'; + +/*:: +import type { ConcreteRequest, Query } from 'relay-runtime'; +export type fetchQueryTest5Query$variables = {||}; +export type fetchQueryTest5Query$data = {| + +client_root_field: ?string, +|}; +export type fetchQueryTest5Query = {| + response: fetchQueryTest5Query$data, + variables: fetchQueryTest5Query$variables, +|}; +*/ + +var node/*: ConcreteRequest*/ = (function(){ +var v0 = [ + { + "kind": "ClientExtension", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "client_root_field", + "storageKey": null + } + ] + } +]; +return { + "fragment": { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "fetchQueryTest5Query", + "selections": (v0/*: any*/), + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [], + "kind": "Operation", + "name": "fetchQueryTest5Query", + "selections": (v0/*: any*/) + }, + "params": { + "cacheID": "1f64dc5de41e4d35c974cef1681434a4", + "id": null, + "metadata": {}, + "name": "fetchQueryTest5Query", + "operationKind": "query", + "text": null + } +}; +})(); + +if (__DEV__) { + (node/*: any*/).hash = "51b5507fd390b89ad93a513e19352913"; +} + +module.exports = ((node/*: any*/)/*: Query< + fetchQueryTest5Query$variables, + fetchQueryTest5Query$data, +>*/); diff --git a/packages/relay-runtime/query/__tests__/fetchQuery-test.js b/packages/relay-runtime/query/__tests__/fetchQuery-test.js index e27ff9ee8b0cf..c73672b70e754 100644 --- a/packages/relay-runtime/query/__tests__/fetchQuery-test.js +++ b/packages/relay-runtime/query/__tests__/fetchQuery-test.js @@ -14,9 +14,14 @@ 'use strict'; import type {fetchQueryTest1Query$data} from './__generated__/fetchQueryTest1Query.graphql'; +import type {RequestParameters} from 'relay-runtime'; const fetchQuery = require('../fetchQuery'); const { + Environment, + Network, + RecordSource, + Store, createOperationDescriptor, getRequest, graphql, @@ -332,3 +337,26 @@ describe('fetchQuery with missing @required value', () => { expect(observer.error).not.toHaveBeenCalled(); }); }); + +test('client-only query with error', () => { + const fetchFn = jest.fn((params: RequestParameters) => { + if (params.id === null && params.text == null) { + throw new Error('Exected ID or Text'); + } + throw new Error('Unexeptected Input'); + }); + const environment = new Environment({ + store: new Store(new RecordSource()), + network: Network.create(fetchFn), + }); + const query = graphql` + query fetchQueryTest5Query { + client_root_field + } + `; + const observer = {next: jest.fn(), error: jest.fn()}; + fetchQuery(environment, query, {}).subscribe(observer); + + expect(observer.next).not.toBeCalled(); + expect(observer.error).toBeCalledWith(new Error('Exected ID or Text')); +}); diff --git a/packages/relay-runtime/util/RelayConcreteNode.js b/packages/relay-runtime/util/RelayConcreteNode.js index a100e096480ab..2055c392bbf1f 100644 --- a/packages/relay-runtime/util/RelayConcreteNode.js +++ b/packages/relay-runtime/util/RelayConcreteNode.js @@ -61,7 +61,7 @@ export type RequestParameters = | {| +cacheID: string, +id: null, - +text: string, + +text: string | null, // common fields +name: string, +operationKind: 'mutation' | 'query' | 'subscription', diff --git a/packages/relay-test-utils-internal/schema-extensions/Query.graphql b/packages/relay-test-utils-internal/schema-extensions/Query.graphql new file mode 100644 index 0000000000000..c04a9c84af88d --- /dev/null +++ b/packages/relay-test-utils-internal/schema-extensions/Query.graphql @@ -0,0 +1,5 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved. + +extend type Query { + client_root_field: String +} diff --git a/packages/relay-test-utils-internal/schema-extensions/Settings.graphql b/packages/relay-test-utils-internal/schema-extensions/Settings.graphql new file mode 100644 index 0000000000000..ecb6b269b53ad --- /dev/null +++ b/packages/relay-test-utils-internal/schema-extensions/Settings.graphql @@ -0,0 +1,5 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved. + +extend type Settings { + client_field: String +}