Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit78e1499

Browse files
lynnshaoyufacebook-github-bot
authored andcommitted
- support client 3d on concrete objects
Reviewed By: tyao1Differential Revision: D71421963fbshipit-source-id: 6c0f72775ba792055ca66195d7a2691ee669493c
1 parent99adb3b commit78e1499

File tree

4 files changed

+55
-17
lines changed

4 files changed

+55
-17
lines changed

‎compiler/crates/relay-transforms/src/match_/match_transform.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,12 +1104,23 @@ fn validate_parent_type_of_fragment_with_read_time_resolver(
11041104
transform.relay_resolver_model_unions.insert(id);
11051105
}
11061106
Type::Object(id) =>{
1107-
returnErr(Diagnostic::error(
1108-
ValidationMessage::InvalidModuleOnConcreteParentType{
1109-
object_name: transform.program.schema.object(id).name.item,
1110-
},
1111-
spread.fragment.location,
1112-
));
1107+
let object_has_read_time_resolver = transform
1108+
.program
1109+
.schema
1110+
.object(id)
1111+
.directives
1112+
.named(*RELAY_RESOLVER_MODEL_DIRECTIVE_NAME)
1113+
.is_some();
1114+
1115+
if !object_has_read_time_resolver{
1116+
returnErr(Diagnostic::error(
1117+
ValidationMessage::MissingRelayResolverModelForObject{
1118+
spread_name: spread.fragment.item,
1119+
object: transform.program.schema.object(id).name.item,
1120+
},
1121+
spread.fragment.location,
1122+
));
1123+
}
11131124
}
11141125
Type::Enum(_) |Type::Scalar(_) |Type::InputObject(_) =>{
11151126
panic!(

‎compiler/crates/relay-transforms/src/match_/validation_message.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,10 @@ pub enum ValidationMessage {
137137
},
138138

139139
#[error(
140-
"@module was used on afragmentwith a concrete parent type: '{object_name}'.The parent typeshould bean interface or union."
140+
"Invalidfragmentspread '...{spread_name}'.Object '{object}'should bebacked by a relay resolver model."
141141
)]
142-
InvalidModuleOnConcreteParentType{object_name:ObjectName},
142+
MissingRelayResolverModelForObject{
143+
spread_name:FragmentDefinitionName,
144+
object:ObjectName,
145+
},
143146
}

‎compiler/crates/relay-transforms/tests/match_transform_client_resolver/fixtures/client-3D-module-on-concrete-parent-type.invalid.expected

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
==================================== INPUT ====================================
2-
# expected-to-throw
32
fragment NameRendererFragment on Persona {
43
id
54
basicUser {
@@ -24,11 +23,37 @@ type BasicUser @__RelayResolverModel {
2423
address: String
2524
__relay_model_instance: RelayResolverValue @relay_resolver(import_path: "ClientUserResolver", fragment_name: "ClientUser__id", inject_fragment_data: "id")
2625
}
27-
==================================== ERROR ====================================
28-
✖︎ @module was used on a fragment with a concrete parent type: 'BasicUser'. The parent type should be an interface or union.
26+
==================================== OUTPUT ===================================
27+
fragment ClientUser_Fragment on BasicUser {
28+
name
29+
address
30+
}
2931

30-
client-3D-module-on-concrete-parent-type.invalid.graphql:5:8
31-
4 │ basicUser {
32-
5 │ ...ClientUser_Fragment @module(name: "ClientUser.react")
33-
│ ^^^^^^^^^^^^^^^^^^^
34-
6 │ }
32+
fragment NameRendererFragment on Persona {
33+
id
34+
basicUser {
35+
... on BasicUser {
36+
... on BasicUser @__ModuleMetadata
37+
# ModuleMetadata {
38+
# location: client-3D-module-on-concrete-parent-type.invalid.graphql:89:96,
39+
# key: "NameRendererFragment",
40+
# module_id: "NameRendererFragment.basicUser",
41+
# module_name: "ClientUser.react",
42+
# source_document_name: FragmentDefinitionName(
43+
# FragmentDefinitionName(
44+
# "NameRendererFragment",
45+
# ),
46+
# ),
47+
# read_time_resolvers: true,
48+
# fragment_name: FragmentDefinitionName(
49+
# "ClientUser_Fragment",
50+
# ),
51+
# fragment_source_location: client-3D-module-on-concrete-parent-type.invalid.graphql:139:158,
52+
# no_inline: false,
53+
# }
54+
{
55+
...ClientUser_Fragment
56+
}
57+
}
58+
}
59+
}

‎compiler/crates/relay-transforms/tests/match_transform_client_resolver/fixtures/client-3D-module-on-concrete-parent-type.invalid.graphql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# expected-to-throw
21
fragmentNameRendererFragmentonPersona {
32
id
43
basicUser {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp