@graphql-tools/stitch
Advanced tools
Comparing version 9.2.11 to 9.2.12-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe
@@ -175,3 +175,3 @@ "use strict"; | ||
const typeInSubschema = sourceSubschema.transformedSchema.getType(typeName); | ||
const fieldsNotInSubschema = (0, getFieldsNotInSubschema_js_1.getFieldsNotInSubschema)(schema, stitchingInfo, schema.getType(typeName), mergedTypeInfo.typeMaps.get(sourceSubschema)?.[typeName], fieldNodes, fragments, variableValues); | ||
const fieldsNotInSubschema = (0, getFieldsNotInSubschema_js_1.getFieldsNotInSubschema)(schema, stitchingInfo, schema.getType(typeName), mergedTypeInfo.typeMaps.get(sourceSubschema)?.[typeName], fieldNodes, fragments, variableValues, sourceSubschema); | ||
if (!fieldsNotInSubschema.length) { | ||
@@ -178,0 +178,0 @@ return []; |
@@ -7,3 +7,3 @@ "use strict"; | ||
const utils_1 = require("@graphql-tools/utils"); | ||
function getFieldsNotInSubschema(schema, stitchingInfo, gatewayType, subschemaType, fieldNodes, fragments, variableValues) { | ||
function getFieldsNotInSubschema(schema, stitchingInfo, gatewayType, subschemaType, fieldNodes, fragments, variableValues, subschema) { | ||
let { fields: subFieldNodesByResponseKey, patches } = (0, utils_1.collectSubFields)(schema, fragments, variableValues, gatewayType, fieldNodes); | ||
@@ -73,7 +73,9 @@ let mapChanged = false; | ||
const fieldNodesByField = stitchingInfo?.fieldNodesByField; | ||
const shouldAdd = (fieldType, selection) => !fieldNodesByField?.[fieldType.name]?.[selection.name.value]; | ||
const fields = subschemaType.getFields(); | ||
const fieldNodesByFieldForType = fieldNodesByField?.[gatewayType.name]; | ||
for (const [, subFieldNodes] of subFieldNodesByResponseKey) { | ||
let fieldNotInSchema = false; | ||
const fieldName = subFieldNodes[0].name.value; | ||
if (!fields[fieldName]) { | ||
fieldNotInSchema = true; | ||
for (const subFieldNode of subFieldNodes) { | ||
@@ -86,4 +88,5 @@ fieldsNotInSchema.add(subFieldNode); | ||
for (const subFieldNode of subFieldNodes) { | ||
const unavailableFields = (0, delegate_1.extractUnavailableFields)(schema, field, subFieldNode, shouldAdd); | ||
const unavailableFields = (0, delegate_1.extractUnavailableFields)(schema, field, subFieldNode, () => true); | ||
if (unavailableFields.length) { | ||
fieldNotInSchema = true; | ||
fieldsNotInSchema.add({ | ||
@@ -99,6 +102,6 @@ ...subFieldNode, | ||
} | ||
const isComputedField = subschema.merge?.[gatewayType.name]?.fields?.[fieldName]?.computed; | ||
let addedSubFieldNodes = false; | ||
const fieldNodesByFieldForType = fieldNodesByField?.[gatewayType.name]; | ||
const visitedFieldNames = new Set(); | ||
if (fieldNodesByFieldForType) { | ||
if ((isComputedField || fieldNotInSchema) && fieldNodesByFieldForType) { | ||
const visitedFieldNames = new Set(); | ||
addMissingRequiredFields({ | ||
@@ -105,0 +108,0 @@ fieldName, |
@@ -128,4 +128,4 @@ "use strict"; | ||
return [ | ||
filterIsolatedSubschema({ ...subschemaConfig, merge: isolatedSchemaTypes }), | ||
filterBaseSubschema({ ...subschemaConfig, merge: baseSchemaTypes }, isolatedSchemaTypes), | ||
filterIsolatedSubschema({ ...subschemaConfig, merge: isolatedSchemaTypes }), | ||
]; | ||
@@ -169,5 +169,6 @@ } | ||
} | ||
const isIsolatedFieldName = [typeName, ...typesForInterface[typeName]].some(implementingTypeName => isIsolatedField(implementingTypeName, fieldName, isolatedSchemaTypes)); | ||
return (!isIsolatedFieldName || | ||
(isolatedSchemaTypes[typeName]?.keyFieldNames ?? []).includes(fieldName)); | ||
const allTypes = [typeName, ...typesForInterface[typeName]]; | ||
const isIsolatedFieldName = allTypes.some(implementingTypeName => isIsolatedField(implementingTypeName, fieldName, isolatedSchemaTypes)); | ||
const isKeyFieldName = allTypes.some(implementingTypeName => (isolatedSchemaTypes[implementingTypeName]?.keyFieldNames ?? []).includes(fieldName)); | ||
return !isIsolatedFieldName || isKeyFieldName; | ||
}, | ||
@@ -174,0 +175,0 @@ })); |
@@ -171,3 +171,3 @@ import { getNamedType, isAbstractType, Kind, } from 'graphql'; | ||
const typeInSubschema = sourceSubschema.transformedSchema.getType(typeName); | ||
const fieldsNotInSubschema = getFieldsNotInSubschema(schema, stitchingInfo, schema.getType(typeName), mergedTypeInfo.typeMaps.get(sourceSubschema)?.[typeName], fieldNodes, fragments, variableValues); | ||
const fieldsNotInSubschema = getFieldsNotInSubschema(schema, stitchingInfo, schema.getType(typeName), mergedTypeInfo.typeMaps.get(sourceSubschema)?.[typeName], fieldNodes, fragments, variableValues, sourceSubschema); | ||
if (!fieldsNotInSubschema.length) { | ||
@@ -174,0 +174,0 @@ return []; |
import { isAbstractType, Kind, } from 'graphql'; | ||
import { extractUnavailableFields } from '@graphql-tools/delegate'; | ||
import { collectSubFields } from '@graphql-tools/utils'; | ||
export function getFieldsNotInSubschema(schema, stitchingInfo, gatewayType, subschemaType, fieldNodes, fragments, variableValues) { | ||
export function getFieldsNotInSubschema(schema, stitchingInfo, gatewayType, subschemaType, fieldNodes, fragments, variableValues, subschema) { | ||
let { fields: subFieldNodesByResponseKey, patches } = collectSubFields(schema, fragments, variableValues, gatewayType, fieldNodes); | ||
@@ -69,7 +69,9 @@ let mapChanged = false; | ||
const fieldNodesByField = stitchingInfo?.fieldNodesByField; | ||
const shouldAdd = (fieldType, selection) => !fieldNodesByField?.[fieldType.name]?.[selection.name.value]; | ||
const fields = subschemaType.getFields(); | ||
const fieldNodesByFieldForType = fieldNodesByField?.[gatewayType.name]; | ||
for (const [, subFieldNodes] of subFieldNodesByResponseKey) { | ||
let fieldNotInSchema = false; | ||
const fieldName = subFieldNodes[0].name.value; | ||
if (!fields[fieldName]) { | ||
fieldNotInSchema = true; | ||
for (const subFieldNode of subFieldNodes) { | ||
@@ -82,4 +84,5 @@ fieldsNotInSchema.add(subFieldNode); | ||
for (const subFieldNode of subFieldNodes) { | ||
const unavailableFields = extractUnavailableFields(schema, field, subFieldNode, shouldAdd); | ||
const unavailableFields = extractUnavailableFields(schema, field, subFieldNode, () => true); | ||
if (unavailableFields.length) { | ||
fieldNotInSchema = true; | ||
fieldsNotInSchema.add({ | ||
@@ -95,6 +98,6 @@ ...subFieldNode, | ||
} | ||
const isComputedField = subschema.merge?.[gatewayType.name]?.fields?.[fieldName]?.computed; | ||
let addedSubFieldNodes = false; | ||
const fieldNodesByFieldForType = fieldNodesByField?.[gatewayType.name]; | ||
const visitedFieldNames = new Set(); | ||
if (fieldNodesByFieldForType) { | ||
if ((isComputedField || fieldNotInSchema) && fieldNodesByFieldForType) { | ||
const visitedFieldNames = new Set(); | ||
addMissingRequiredFields({ | ||
@@ -101,0 +104,0 @@ fieldName, |
@@ -125,4 +125,4 @@ import { getNamedType, isAbstractType, isCompositeType, isInterfaceType, isObjectType, isScalarType, isUnionType, } from 'graphql'; | ||
return [ | ||
filterIsolatedSubschema({ ...subschemaConfig, merge: isolatedSchemaTypes }), | ||
filterBaseSubschema({ ...subschemaConfig, merge: baseSchemaTypes }, isolatedSchemaTypes), | ||
filterIsolatedSubschema({ ...subschemaConfig, merge: isolatedSchemaTypes }), | ||
]; | ||
@@ -165,5 +165,6 @@ } | ||
} | ||
const isIsolatedFieldName = [typeName, ...typesForInterface[typeName]].some(implementingTypeName => isIsolatedField(implementingTypeName, fieldName, isolatedSchemaTypes)); | ||
return (!isIsolatedFieldName || | ||
(isolatedSchemaTypes[typeName]?.keyFieldNames ?? []).includes(fieldName)); | ||
const allTypes = [typeName, ...typesForInterface[typeName]]; | ||
const isIsolatedFieldName = allTypes.some(implementingTypeName => isIsolatedField(implementingTypeName, fieldName, isolatedSchemaTypes)); | ||
const isKeyFieldName = allTypes.some(implementingTypeName => (isolatedSchemaTypes[implementingTypeName]?.keyFieldNames ?? []).includes(fieldName)); | ||
return !isIsolatedFieldName || isKeyFieldName; | ||
}, | ||
@@ -170,0 +171,0 @@ })); |
{ | ||
"name": "@graphql-tools/stitch", | ||
"version": "9.2.11", | ||
"version": "9.2.12-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe", | ||
"description": "A set of utils for faster development of GraphQL tools", | ||
@@ -10,4 +10,4 @@ "sideEffects": false, | ||
"dependencies": { | ||
"@graphql-tools/batch-delegate": "^9.0.4", | ||
"@graphql-tools/delegate": "^10.0.22", | ||
"@graphql-tools/batch-delegate": "9.0.5-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe", | ||
"@graphql-tools/delegate": "10.0.23-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe", | ||
"@graphql-tools/executor": "^1.3.2", | ||
@@ -17,3 +17,3 @@ "@graphql-tools/merge": "^9.0.8", | ||
"@graphql-tools/utils": "^10.5.5", | ||
"@graphql-tools/wrap": "^10.0.6", | ||
"@graphql-tools/wrap": "10.0.7-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe", | ||
"tslib": "^2.4.0", | ||
@@ -20,0 +20,0 @@ "value-or-promise": "^1.0.11" |
import { FieldNode, FragmentDefinitionNode, GraphQLObjectType, GraphQLSchema } from 'graphql'; | ||
import { StitchingInfo } from '@graphql-tools/delegate'; | ||
export declare function getFieldsNotInSubschema(schema: GraphQLSchema, stitchingInfo: StitchingInfo, gatewayType: GraphQLObjectType, subschemaType: GraphQLObjectType, fieldNodes: FieldNode[], fragments: Record<string, FragmentDefinitionNode>, variableValues: Record<string, any>): Array<FieldNode>; | ||
import { StitchingInfo, Subschema } from '@graphql-tools/delegate'; | ||
export declare function getFieldsNotInSubschema(schema: GraphQLSchema, stitchingInfo: StitchingInfo, gatewayType: GraphQLObjectType, subschemaType: GraphQLObjectType, fieldNodes: FieldNode[], fragments: Record<string, FragmentDefinitionNode>, variableValues: Record<string, any>, subschema: Subschema): Array<FieldNode>; |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
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
268459
5161
2
+ Added@graphql-tools/batch-delegate@9.0.5-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe(transitive)
+ Added@graphql-tools/delegate@10.0.23-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe(transitive)
+ Added@graphql-tools/wrap@10.0.7-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe(transitive)
- Removed@graphql-tools/batch-delegate@9.0.8(transitive)
- Removed@graphql-tools/delegate@10.0.26(transitive)
- Removed@graphql-tools/wrap@10.0.10(transitive)
Updated@graphql-tools/batch-delegate@9.0.5-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe
Updated@graphql-tools/delegate@10.0.23-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe
Updated@graphql-tools/wrap@10.0.7-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe