Skip to content

Commit 406ba38

Browse files
committed
Ensure backward compatibility when using defaultMappers with placeholder
1 parent bf1b261 commit 406ba38

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -788,10 +788,16 @@ export class BaseResolversVisitor<
788788
}
789789

790790
if (!isMapped && hasDefaultMapper && hasPlaceholder(this.config.defaultMapper.type)) {
791-
// Make sure the inner type has no ResolverTypeWrapper
792-
const name = clearWrapper(isScalar ? this._getScalar(typeName) : prev[typeName]);
793-
const replaced = replacePlaceholder(this.config.defaultMapper.type, name);
794-
prev[typeName] = applyWrapper(replaced);
791+
const originalTypeName = isScalar ? this._getScalar(typeName) : prev[typeName];
792+
793+
if (isUnionType(schemaType)) {
794+
// Don't clear ResolverTypeWrapper from Unions
795+
prev[typeName] = replacePlaceholder(this.config.defaultMapper.type, originalTypeName);
796+
} else {
797+
const name = clearWrapper(originalTypeName);
798+
const replaced = replacePlaceholder(this.config.defaultMapper.type, name);
799+
prev[typeName] = applyWrapper(replaced);
800+
}
795801
}
796802

797803
return prev;

packages/plugins/typescript/resolvers/tests/mapping.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -365,13 +365,13 @@ describe('ResolversTypes', () => {
365365
String: ResolverTypeWrapper<Partial<Scalars['String']>>;
366366
Child: ResolverTypeWrapper<Partial<Child>>;
367367
MyOtherType: ResolverTypeWrapper<Partial<MyOtherType>>;
368-
ChildUnion: ResolverTypeWrapper<Partial<ResolversUnionTypes['ChildUnion']>>;
368+
ChildUnion: Partial<ResolverTypeWrapper<ResolversUnionTypes['ChildUnion']>>;
369369
Query: ResolverTypeWrapper<{}>;
370370
Subscription: ResolverTypeWrapper<{}>;
371371
Node: ResolversTypes['SomeNode'];
372372
ID: ResolverTypeWrapper<Partial<Scalars['ID']>>;
373373
SomeNode: ResolverTypeWrapper<Partial<SomeNode>>;
374-
MyUnion: ResolverTypeWrapper<Partial<ResolversUnionTypes['MyUnion']>>;
374+
MyUnion: Partial<ResolverTypeWrapper<ResolversUnionTypes['MyUnion']>>;
375375
MyScalar: ResolverTypeWrapper<Partial<Scalars['MyScalar']>>;
376376
Int: ResolverTypeWrapper<Partial<Scalars['Int']>>;
377377
Boolean: ResolverTypeWrapper<Partial<Scalars['Boolean']>>;
@@ -420,13 +420,13 @@ describe('ResolversTypes', () => {
420420
String: ResolverTypeWrapper<CustomPartial<Scalars['String']>>;
421421
Child: ResolverTypeWrapper<CustomPartial<Child>>;
422422
MyOtherType: ResolverTypeWrapper<CustomPartial<MyOtherType>>;
423-
ChildUnion: ResolverTypeWrapper<CustomPartial<ResolversUnionTypes['ChildUnion']>>;
423+
ChildUnion: CustomPartial<ResolverTypeWrapper<ResolversUnionTypes['ChildUnion']>>;
424424
Query: ResolverTypeWrapper<{}>;
425425
Subscription: ResolverTypeWrapper<{}>;
426426
Node: ResolversTypes['SomeNode'];
427427
ID: ResolverTypeWrapper<CustomPartial<Scalars['ID']>>;
428428
SomeNode: ResolverTypeWrapper<CustomPartial<SomeNode>>;
429-
MyUnion: ResolverTypeWrapper<CustomPartial<ResolversUnionTypes['MyUnion']>>;
429+
MyUnion: CustomPartial<ResolverTypeWrapper<ResolversUnionTypes['MyUnion']>>;
430430
MyScalar: ResolverTypeWrapper<CustomPartial<Scalars['MyScalar']>>;
431431
Int: ResolverTypeWrapper<CustomPartial<Scalars['Int']>>;
432432
Boolean: ResolverTypeWrapper<CustomPartial<Scalars['Boolean']>>;
@@ -1706,13 +1706,13 @@ describe('ResolversTypes', () => {
17061706
String: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Scalars['String']>>;
17071707
Child: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Omit<Child, 'parent'> & { parent?: Maybe<ResolversTypes['MyType']> }>>;
17081708
MyOtherType: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<MyOtherType>>;
1709-
ChildUnion: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<ResolversUnionTypes['ChildUnion']>>;
1709+
ChildUnion: MyNamespace.MyDefaultMapper<ResolverTypeWrapper<ResolversUnionTypes['ChildUnion']>>;
17101710
Query: ResolverTypeWrapper<{}>;
17111711
Subscription: ResolverTypeWrapper<{}>;
17121712
Node: ResolversTypes['SomeNode'];
17131713
ID: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Scalars['ID']>>;
17141714
SomeNode: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<SomeNode>>;
1715-
MyUnion: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<ResolversUnionTypes['MyUnion']>>;
1715+
MyUnion: MyNamespace.MyDefaultMapper<ResolverTypeWrapper<ResolversUnionTypes['MyUnion']>>;
17161716
MyScalar: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Scalars['MyScalar']>>;
17171717
Int: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Scalars['Int']>>;
17181718
Boolean: ResolverTypeWrapper<MyNamespace.MyDefaultMapper<Scalars['Boolean']>>;

0 commit comments

Comments
 (0)