@graphql-codegen/visitor-plugin-common
Advanced tools
Comparing version 5.5.0-alpha-20241014100208-600a6151e0f8f9a22b45645adc9f6f386123e16b to 5.5.0-alpha-20241014101258-aa3baf1b2bec24fd335a1182a601d63293fc1cf6
@@ -47,5 +47,5 @@ "use strict"; | ||
__resolveReference: rawConfig.generateInternalResolversIfNeeded?.__resolveReference ?? false, | ||
__isTypeOf: rawConfig.generateInternalResolversIfNeeded?.__isTypeOf ?? false, | ||
}, | ||
resolversNonOptionalTypename: normalizeResolversNonOptionalTypename((0, utils_js_1.getConfigValue)(rawConfig.resolversNonOptionalTypename, false)), | ||
avoidCheckingAbstractTypesRecursively: (0, utils_js_1.getConfigValue)(rawConfig.avoidCheckingAbstractTypesRecursively, false), | ||
...additionalConfig, | ||
@@ -63,4 +63,4 @@ }); | ||
this._resolversUnionTypes = {}; | ||
this._resolversUnionParentTypes = {}; | ||
this._resolversInterfaceTypes = {}; | ||
this._objectTypesWithIsTypeOf = {}; | ||
this._rootTypeNames = new Set(); | ||
@@ -272,9 +272,5 @@ this._globalDeclarations = new Set(); | ||
const { unionMember, excludeTypes } = this.config.resolversNonOptionalTypename; | ||
const memberTypes = schemaType.getTypes(); | ||
for (const type of memberTypes) { | ||
this._objectTypesWithIsTypeOf[type.name] = true; | ||
} | ||
res[typeName] = this.getAbstractMembersType({ | ||
typeName, | ||
memberTypes, | ||
memberTypes: schemaType.getTypes(), | ||
isTypenameNonOptional: unionMember && !excludeTypes?.includes(typeName), | ||
@@ -307,5 +303,2 @@ }); | ||
const { interfaceImplementingType, excludeTypes } = this.config.resolversNonOptionalTypename; | ||
for (const type of implementingTypes) { | ||
this._objectTypesWithIsTypeOf[type.name] = true; | ||
} | ||
res[typeName] = this.getAbstractMembersType({ | ||
@@ -735,5 +728,3 @@ typeName, | ||
}); | ||
if (!rootType && | ||
(!this.config.generateInternalResolversIfNeeded.__isTypeOf || | ||
(this.config.generateInternalResolversIfNeeded.__isTypeOf && this._objectTypesWithIsTypeOf[typeName]))) { | ||
if (!rootType) { | ||
fieldsContent.push((0, utils_js_1.indent)(`${this.config.internalResolversPrefix}isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>${this.getPunctuation(declarationKind)}`)); | ||
@@ -918,3 +909,3 @@ } | ||
let isObjectWithAbstractType = false; | ||
if (isObject) { | ||
if (isObject && !this.config.avoidCheckingAbstractTypesRecursively) { | ||
isObjectWithAbstractType = checkIfObjectTypeHasAbstractTypesRecursively(baseType, { | ||
@@ -921,0 +912,0 @@ isObjectWithAbstractType, |
@@ -43,5 +43,5 @@ import { ApolloFederation, checkObjectTypeFederationDetails, getBaseType } from '@graphql-codegen/plugin-helpers'; | ||
__resolveReference: rawConfig.generateInternalResolversIfNeeded?.__resolveReference ?? false, | ||
__isTypeOf: rawConfig.generateInternalResolversIfNeeded?.__isTypeOf ?? false, | ||
}, | ||
resolversNonOptionalTypename: normalizeResolversNonOptionalTypename(getConfigValue(rawConfig.resolversNonOptionalTypename, false)), | ||
avoidCheckingAbstractTypesRecursively: getConfigValue(rawConfig.avoidCheckingAbstractTypesRecursively, false), | ||
...additionalConfig, | ||
@@ -59,4 +59,4 @@ }); | ||
this._resolversUnionTypes = {}; | ||
this._resolversUnionParentTypes = {}; | ||
this._resolversInterfaceTypes = {}; | ||
this._objectTypesWithIsTypeOf = {}; | ||
this._rootTypeNames = new Set(); | ||
@@ -268,9 +268,5 @@ this._globalDeclarations = new Set(); | ||
const { unionMember, excludeTypes } = this.config.resolversNonOptionalTypename; | ||
const memberTypes = schemaType.getTypes(); | ||
for (const type of memberTypes) { | ||
this._objectTypesWithIsTypeOf[type.name] = true; | ||
} | ||
res[typeName] = this.getAbstractMembersType({ | ||
typeName, | ||
memberTypes, | ||
memberTypes: schemaType.getTypes(), | ||
isTypenameNonOptional: unionMember && !excludeTypes?.includes(typeName), | ||
@@ -303,5 +299,2 @@ }); | ||
const { interfaceImplementingType, excludeTypes } = this.config.resolversNonOptionalTypename; | ||
for (const type of implementingTypes) { | ||
this._objectTypesWithIsTypeOf[type.name] = true; | ||
} | ||
res[typeName] = this.getAbstractMembersType({ | ||
@@ -731,5 +724,3 @@ typeName, | ||
}); | ||
if (!rootType && | ||
(!this.config.generateInternalResolversIfNeeded.__isTypeOf || | ||
(this.config.generateInternalResolversIfNeeded.__isTypeOf && this._objectTypesWithIsTypeOf[typeName]))) { | ||
if (!rootType) { | ||
fieldsContent.push(indent(`${this.config.internalResolversPrefix}isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>${this.getPunctuation(declarationKind)}`)); | ||
@@ -914,3 +905,3 @@ } | ||
let isObjectWithAbstractType = false; | ||
if (isObject) { | ||
if (isObject && !this.config.avoidCheckingAbstractTypesRecursively) { | ||
isObjectWithAbstractType = checkIfObjectTypeHasAbstractTypesRecursively(baseType, { | ||
@@ -917,0 +908,0 @@ isObjectWithAbstractType, |
{ | ||
"name": "@graphql-codegen/visitor-plugin-common", | ||
"version": "5.5.0-alpha-20241014100208-600a6151e0f8f9a22b45645adc9f6f386123e16b", | ||
"version": "5.5.0-alpha-20241014101258-aa3baf1b2bec24fd335a1182a601d63293fc1cf6", | ||
"peerDependencies": { | ||
@@ -9,3 +9,3 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" | ||
"@graphql-tools/optimize": "^2.0.0", | ||
"@graphql-codegen/plugin-helpers": "5.1.0-alpha-20241014100208-600a6151e0f8f9a22b45645adc9f6f386123e16b", | ||
"@graphql-codegen/plugin-helpers": "5.1.0-alpha-20241014101258-aa3baf1b2bec24fd335a1182a601d63293fc1cf6", | ||
"@graphql-tools/relay-operation-optimizer": "^7.0.0", | ||
@@ -12,0 +12,0 @@ "@graphql-tools/utils": "^10.0.0", |
@@ -34,2 +34,3 @@ import { ApolloFederation } from '@graphql-codegen/plugin-helpers'; | ||
resolversNonOptionalTypename: ResolversNonOptionalTypenameConfig; | ||
avoidCheckingAbstractTypesRecursively: boolean; | ||
} | ||
@@ -542,5 +543,6 @@ type FieldDefinitionPrintFn = (parentName: string, avoidResolverOptionals: boolean) => string | null; | ||
* @type object | ||
* @default { __resolveReference: false, __isTypeOf: false } | ||
* @default { __resolveReference: false } | ||
* @description If relevant internal resolvers are set to `true`, the resolver type will only be generated if the right conditions are met. | ||
* Enabling this allows a more correct type generation for the resolvers: | ||
* Enabling this allows a more correct type generation for the resolvers. | ||
* For example: | ||
* - `__isTypeOf` is generated for implementing types and union members | ||
@@ -605,2 +607,9 @@ * - `__resolveReference` is generated for federation types that have at least one resolvable `@key` directive | ||
/** | ||
* @type boolean | ||
* @default false | ||
* @description If true, recursively goes through all object type's fields, checks if they have abstract types and generates expected types correctly. | ||
* This may not work for cases where provided default mapper types are also nested e.g. `defaultMapper: DeepPartial<{T}>` or `defaultMapper: Partial<{T}>`. | ||
*/ | ||
avoidCheckingAbstractTypesRecursively?: boolean; | ||
/** | ||
* @ignore | ||
@@ -643,4 +652,4 @@ */ | ||
protected _resolversUnionTypes: Record<string, string>; | ||
protected _resolversUnionParentTypes: Record<string, string>; | ||
protected _resolversInterfaceTypes: Record<string, string>; | ||
protected _objectTypesWithIsTypeOf: Record<string, true>; | ||
protected _rootTypeNames: Set<string>; | ||
@@ -647,0 +656,0 @@ protected _globalDeclarations: Set<string>; |
@@ -125,4 +125,3 @@ import { ASTNode, FragmentDefinitionNode, DirectiveNode } from 'graphql'; | ||
__resolveReference?: boolean; | ||
__isTypeOf?: boolean; | ||
} | ||
export type NormalizedGenerateInternalResolversIfNeededConfig = Required<GenerateInternalResolversIfNeededConfig>; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
577462
35
10659
+ Added@graphql-codegen/plugin-helpers@5.1.0-alpha-20241014101258-aa3baf1b2bec24fd335a1182a601d63293fc1cf6(transitive)
- Removed@graphql-codegen/plugin-helpers@5.1.0-alpha-20241014100208-600a6151e0f8f9a22b45645adc9f6f386123e16b(transitive)
Updated@graphql-codegen/plugin-helpers@5.1.0-alpha-20241014101258-aa3baf1b2bec24fd335a1182a601d63293fc1cf6