Socket
Socket
Sign inDemoInstall

@graphql-tools/stitch

Package Overview
Dependencies
Maintainers
3
Versions
1626
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@graphql-tools/stitch - npm Package Compare versions

Comparing version 9.2.11 to 9.2.12-alpha-20241016090732-3f04094caa716f3f161ad921184d1e7fdc98cbbe

2

cjs/createDelegationPlanBuilder.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc