Skip to content

Commit 827f47c

Browse files
authored
Merge pull request #231 from proto-graphql/izumin5210/extension
feat(protoc-gen-pothos): add oroginal protobuf type info to extensions
2 parents c031aab + 2ff07a6 commit 827f47c

File tree

10 files changed

+4398
-549
lines changed

10 files changed

+4398
-549
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"protoc-gen-pothos": patch
3+
---
4+
5+
add oroginal protobuf type info to extensions

packages/protoc-gen-pothos/src/__tests__/__snapshots__/customTypes.test.ts.snap

Lines changed: 90 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,43 @@ builder.objectType(Date$Ref, {
1414
fields: t => ({
1515
year: t.expose(\\"year\\", {
1616
type: \\"Int\\",
17-
nullable: false
17+
nullable: false,
18+
extensions: {
19+
protobufField: {
20+
name: \\"year\\"
21+
}
22+
}
1823
}),
1924
month: t.expose(\\"month\\", {
2025
type: \\"Int\\",
21-
nullable: false
26+
nullable: false,
27+
extensions: {
28+
protobufField: {
29+
name: \\"month\\"
30+
}
31+
}
2232
}),
2333
day: t.expose(\\"day\\", {
2434
type: \\"Int\\",
25-
nullable: false
35+
nullable: false,
36+
extensions: {
37+
protobufField: {
38+
name: \\"day\\"
39+
}
40+
}
2641
})
2742
}),
2843
isTypeOf: source => {
2944
return (source as _$testapis$custom_types$date.Date | {
3045
$type: string & {};
3146
}).$type === \\"testapis.custom_types.Date\\";
47+
},
48+
extensions: {
49+
protobufMessage: {
50+
fullName: \\"testapis.custom_types.Date\\",
51+
name: \\"Date\\",
52+
package: \\"testapis.custom_types\\"
53+
}
3254
}
3355
});
3456
export type DateInput$Shape = {
@@ -41,17 +63,39 @@ DateInput$Ref.implement({
4163
fields: t => ({
4264
year: t.field({
4365
type: \\"Int\\",
44-
required: true
66+
required: true,
67+
extensions: {
68+
protobufField: {
69+
name: \\"year\\"
70+
}
71+
}
4572
}),
4673
month: t.field({
4774
type: \\"Int\\",
48-
required: true
75+
required: true,
76+
extensions: {
77+
protobufField: {
78+
name: \\"month\\"
79+
}
80+
}
4981
}),
5082
day: t.field({
5183
type: \\"Int\\",
52-
required: true
84+
required: true,
85+
extensions: {
86+
protobufField: {
87+
name: \\"day\\"
88+
}
89+
}
5390
})
54-
})
91+
}),
92+
extensions: {
93+
protobufMessage: {
94+
fullName: \\"testapis.custom_types.Date\\",
95+
name: \\"Date\\",
96+
package: \\"testapis.custom_types\\"
97+
}
98+
}
5599
});
56100
"
57101
`;
@@ -71,18 +115,35 @@ builder.objectType(Post$Ref, {
71115
title: t.expose(\\"title\\", {
72116
type: \\"String\\",
73117
nullable: false,
74-
description: \\"Required.\\"
118+
description: \\"Required.\\",
119+
extensions: {
120+
protobufField: {
121+
name: \\"title\\"
122+
}
123+
}
75124
}),
76125
publishedDate: t.expose(\\"publishedDate\\", {
77126
type: \\"Date\\",
78127
nullable: true,
79-
description: \\"Optional.\\"
128+
description: \\"Optional.\\",
129+
extensions: {
130+
protobufField: {
131+
name: \\"published_date\\"
132+
}
133+
}
80134
})
81135
}),
82136
isTypeOf: source => {
83137
return (source as _$testapis$custom_types$post.Post | {
84138
$type: string & {};
85139
}).$type === \\"testapis.custom_types.Post\\";
140+
},
141+
extensions: {
142+
protobufMessage: {
143+
fullName: \\"testapis.custom_types.Post\\",
144+
name: \\"Post\\",
145+
package: \\"testapis.custom_types\\"
146+
}
86147
}
87148
});
88149
export type PostInput$Shape = {
@@ -95,14 +156,31 @@ PostInput$Ref.implement({
95156
title: t.field({
96157
type: \\"String\\",
97158
required: true,
98-
description: \\"Required.\\"
159+
description: \\"Required.\\",
160+
extensions: {
161+
protobufField: {
162+
name: \\"title\\"
163+
}
164+
}
99165
}),
100166
publishedDate: t.field({
101167
type: \\"Date\\",
102168
required: false,
103-
description: \\"Optional.\\"
169+
description: \\"Optional.\\",
170+
extensions: {
171+
protobufField: {
172+
name: \\"published_date\\"
173+
}
174+
}
104175
})
105-
})
176+
}),
177+
extensions: {
178+
protobufMessage: {
179+
fullName: \\"testapis.custom_types.Post\\",
180+
name: \\"Post\\",
181+
package: \\"testapis.custom_types\\"
182+
}
183+
}
106184
});
107185
"
108186
`;

packages/protoc-gen-pothos/src/__tests__/__snapshots__/edgecases.test.ts.snap

Lines changed: 81 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,25 @@ builder.objectType(OneofMessage1$Ref, {
1414
fields: t => ({
1515
body: t.expose(\\"body\\", {
1616
type: \\"String\\",
17-
nullable: false
17+
nullable: false,
18+
extensions: {
19+
protobufField: {
20+
name: \\"body\\"
21+
}
22+
}
1823
})
1924
}),
2025
isTypeOf: source => {
2126
return (source as _$testapis$edgecases$import_squashed_union$pkg1$types.OneofMessage1 | {
2227
$type: string & {};
2328
}).$type === \\"testapis.edgecases.import_squashed_union.pkg1.OneofMessage1\\";
29+
},
30+
extensions: {
31+
protobufMessage: {
32+
fullName: \\"testapis.edgecases.import_squashed_union.pkg1.OneofMessage1\\",
33+
name: \\"OneofMessage1\\",
34+
package: \\"testapis.edgecases.import_squashed_union.pkg1\\"
35+
}
2436
}
2537
});
2638
export type OneofMessage1Input$Shape = {
@@ -31,9 +43,21 @@ OneofMessage1Input$Ref.implement({
3143
fields: t => ({
3244
body: t.field({
3345
type: \\"String\\",
34-
required: true
46+
required: true,
47+
extensions: {
48+
protobufField: {
49+
name: \\"body\\"
50+
}
51+
}
3552
})
36-
})
53+
}),
54+
extensions: {
55+
protobufMessage: {
56+
fullName: \\"testapis.edgecases.import_squashed_union.pkg1.OneofMessage1\\",
57+
name: \\"OneofMessage1\\",
58+
package: \\"testapis.edgecases.import_squashed_union.pkg1\\"
59+
}
60+
}
3761
});
3862
export type SquashedOneofInput$Shape = {
3963
msg1?: OneofMessage1Input$Shape | null;
@@ -43,14 +67,39 @@ SquashedOneofInput$Ref.implement({
4367
fields: t => ({
4468
msg1: t.field({
4569
type: OneofMessage1Input$Ref,
46-
required: false
70+
required: false,
71+
extensions: {
72+
protobufField: {
73+
name: \\"msg1\\"
74+
}
75+
}
4776
})
48-
})
77+
}),
78+
extensions: {
79+
protobufMessage: {
80+
fullName: \\"testapis.edgecases.import_squashed_union.pkg1.SquashedOneof\\",
81+
name: \\"SquashedOneof\\",
82+
package: \\"testapis.edgecases.import_squashed_union.pkg1\\"
83+
}
84+
}
4985
});
5086
export const SquashedOneof$Ref = builder.unionType(\\"SquashedOneof\\", {
5187
types: [
5288
OneofMessage1$Ref
53-
]
89+
],
90+
extensions: {
91+
protobufMessage: {
92+
fullName: \\"testapis.edgecases.import_squashed_union.pkg1.SquashedOneof\\",
93+
name: \\"SquashedOneof\\",
94+
package: \\"testapis.edgecases.import_squashed_union.pkg1\\",
95+
fields: [
96+
{
97+
name: \\"msg1\\",
98+
type: \\"testapis.edgecases.import_squashed_union.pkg1.OneofMessage1\\"
99+
}
100+
]
101+
}
102+
}
54103
});
55104
"
56105
`;
@@ -78,13 +127,25 @@ builder.objectType(Message$Ref, {
78127
resolve: source => {
79128
const value = source.msg?.msg1;
80129
return value;
130+
},
131+
extensions: {
132+
protobufField: {
133+
name: \\"msg\\"
134+
}
81135
}
82136
})
83137
}),
84138
isTypeOf: source => {
85139
return (source as _$testapis$edgecases$import_squashed_union$pkg2$types.Message | {
86140
$type: string & {};
87141
}).$type === \\"testapis.edgecases.import_squashed_union.pkg2.Message\\";
142+
},
143+
extensions: {
144+
protobufMessage: {
145+
fullName: \\"testapis.edgecases.import_squashed_union.pkg2.Message\\",
146+
name: \\"Message\\",
147+
package: \\"testapis.edgecases.import_squashed_union.pkg2\\"
148+
}
88149
}
89150
});
90151
export type MessageInput$Shape = {
@@ -95,9 +156,21 @@ MessageInput$Ref.implement({
95156
fields: t => ({
96157
msg: t.field({
97158
type: SquashedOneofInput$Ref,
98-
required: false
159+
required: false,
160+
extensions: {
161+
protobufField: {
162+
name: \\"msg\\"
163+
}
164+
}
99165
})
100-
})
166+
}),
167+
extensions: {
168+
protobufMessage: {
169+
fullName: \\"testapis.edgecases.import_squashed_union.pkg2.Message\\",
170+
name: \\"Message\\",
171+
package: \\"testapis.edgecases.import_squashed_union.pkg2\\"
172+
}
173+
}
101174
});
102175
"
103176
`;

0 commit comments

Comments
 (0)