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 5.0.1-alpha-b7ec6b7.0 to 5.0.1-alpha-b86f0f0.0

123

index.cjs.js

@@ -263,3 +263,3 @@ 'use strict';

}
function buildTypeCandidates({ schemaLikeObjects, allSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }) {
function buildTypeCandidates({ schemaLikeObjects, transformedSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }) {
let schemaDef;

@@ -279,3 +279,3 @@ let schemaExtensions = [];

const schema = wrap.wrapSchema(schemaLikeObject);
allSchemas.push(schema);
transformedSchemas.set(schemaLikeObject, schema);
const operationTypes = {

@@ -485,24 +485,5 @@ query: schema.getQueryType(),

function createMergeInfo(allSchemas, typeCandidates, mergeTypes) {
function createMergeInfo(transformedSchemas, typeCandidates, mergeTypes) {
return {
delegate(operation, fieldName, args, context, info, transforms = []) {
const schema = guessSchemaByRootField(allSchemas, operation, fieldName);
const expandTransforms = new delegate.ExpandAbstractTypes(info.schema, schema);
const fragmentTransform = new delegate.AddReplacementFragments(schema, info.mergeInfo.replacementFragments);
return delegate.delegateToSchema({
schema,
operation,
fieldName,
args,
context,
info,
transforms: [...transforms, expandTransforms, fragmentTransform],
});
},
delegateToSchema(options) {
return delegate.delegateToSchema({
...options,
transforms: options.transforms,
});
},
transformedSchemas,
fragments: [],

@@ -660,39 +641,14 @@ replacementSelectionSets: undefined,

}
function operationToRootType(operation, schema) {
if (operation === 'subscription') {
return schema.getSubscriptionType();
}
else if (operation === 'mutation') {
return schema.getMutationType();
}
return schema.getQueryType();
}
function guessSchemaByRootField(schemas, operation, fieldName) {
for (const schema of schemas) {
const rootObject = operationToRootType(operation, schema);
if (rootObject != null) {
const fields = rootObject.getFields();
if (fieldName in fields) {
return schema;
}
}
}
throw new Error(`Could not find subschema with field \`${operation}.${fieldName}\``);
}
function addMergeInfo(stitchedSchema, mergeInfo) {
utils.forEachField(stitchedSchema, field => {
if (field.resolve != null) {
const fieldResolver = field.resolve;
field.resolve = (parent, args, context, info) => {
const newInfo = { ...info, mergeInfo };
return fieldResolver(parent, args, context, newInfo);
};
return utils.mapSchemaByField(stitchedSchema, ([fieldName, originalFieldConfig]) => {
const newFieldConfig = { ...originalFieldConfig };
const resolver = originalFieldConfig.resolve;
if (resolver != null) {
newFieldConfig.resolve = (parent, args, context, info) => resolver(parent, args, context, { ...info, mergeInfo });
}
if (field.subscribe != null) {
const fieldResolver = field.subscribe;
field.subscribe = (parent, args, context, info) => {
const newInfo = { ...info, mergeInfo };
return fieldResolver(parent, args, context, newInfo);
};
const subscriber = originalFieldConfig.subscribe;
if (subscriber != null) {
newFieldConfig.subscribe = (parent, args, context, info) => subscriber(parent, args, context, { ...info, mergeInfo });
}
return [fieldName, newFieldConfig];
});

@@ -705,12 +661,2 @@ }

}
const allSchemas = [];
const typeCandidates = Object.create(null);
const extensions = [];
const directives = [];
const schemaDefs = Object.create(null);
const operationTypeNames = {
query: 'Query',
mutation: 'Mutation',
subscription: 'Subscription',
};
let schemaLikeObjects = [...subschemas];

@@ -737,5 +683,15 @@ if (typeDefs) {

});
const transformedSchemas = new Map();
const typeCandidates = Object.create(null);
const extensions = [];
const directives = [];
const schemaDefs = Object.create(null);
const operationTypeNames = {
query: 'Query',
mutation: 'Mutation',
subscription: 'Subscription',
};
buildTypeCandidates({
schemaLikeObjects,
allSchemas,
transformedSchemas,
typeCandidates,

@@ -749,5 +705,3 @@ extensions,

let mergeInfo;
mergeInfo = createMergeInfo(allSchemas, typeCandidates, mergeTypes);
const finalResolvers = getFinalResolvers(resolvers, mergeInfo);
mergeInfo = completeMergeInfo(mergeInfo, finalResolvers);
mergeInfo = createMergeInfo(transformedSchemas, typeCandidates, mergeTypes);
const typeMap = buildTypeMap({

@@ -778,2 +732,8 @@ typeCandidates,

});
// We allow passing in an array of resolver maps, in which case we merge them
const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(utils.mergeDeep, {}) : resolvers;
const finalResolvers = inheritResolversFromInterfaces
? schema.extendResolversFromInterfaces(schema$1, resolverMap)
: resolverMap;
mergeInfo = completeMergeInfo(mergeInfo, finalResolvers);
schema.addResolversToSchema({

@@ -783,6 +743,6 @@ schema: schema$1,

resolverValidationOptions,
inheritResolversFromInterfaces,
inheritResolversFromInterfaces: false,
});
schema.assertResolversPresent(schema$1, resolverValidationOptions);
addMergeInfo(schema$1, mergeInfo);
schema$1 = addMergeInfo(schema$1, mergeInfo);
if (!allowUndefinedInResolve) {

@@ -807,19 +767,2 @@ schema.addCatchUndefinedToSchema(schema$1);

}
function getFinalResolvers(resolvers, mergeInfo) {
let finalResolvers;
if (typeof resolvers === 'function') {
finalResolvers = resolvers(mergeInfo);
}
else if (Array.isArray(resolvers)) {
finalResolvers = resolvers.reduce((left, right) => utils.mergeDeep(left, typeof right === 'function' ? right(mergeInfo) : right), {});
finalResolvers = resolvers.reduce(utils.mergeDeep, {});
}
else {
finalResolvers = resolvers;
}
if (finalResolvers == null) {
finalResolvers = {};
}
return finalResolvers;
}
function isDocumentNode$1(object) {

@@ -826,0 +769,0 @@ return object.kind !== undefined;

import { Kind, GraphQLDirective, valueFromASTUntyped, GraphQLInputObjectType, GraphQLScalarType, GraphQLUnionType, GraphQLEnumType, GraphQLInterfaceType, GraphQLObjectType, DirectiveLocation, TokenKind, getDirectiveValues, GraphQLDeprecatedDirective, isSchema, isNamedType, getNamedType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, GraphQLSchema, specifiedDirectives, extendSchema } from 'graphql';
import { createStub, createNamedStub, parseSelectionSet, typeContainsSelectionSet, parseFragmentToInlineFragment, concatInlineFragments, forEachField, rewireTypes, cloneDirective, SchemaDirectiveVisitor, mergeDeep } from '@graphql-tools/utils';
import { buildDocumentFromTypeDefinitions, addResolversToSchema, assertResolversPresent, addCatchUndefinedToSchema, addErrorLoggingToSchema, addSchemaLevelResolver, attachDirectiveResolvers } from '@graphql-tools/schema';
import { createStub, createNamedStub, mapSchemaByField, parseSelectionSet, typeContainsSelectionSet, parseFragmentToInlineFragment, concatInlineFragments, rewireTypes, cloneDirective, mergeDeep, SchemaDirectiveVisitor } from '@graphql-tools/utils';
import { buildDocumentFromTypeDefinitions, extendResolversFromInterfaces, addResolversToSchema, assertResolversPresent, addCatchUndefinedToSchema, addErrorLoggingToSchema, addSchemaLevelResolver, attachDirectiveResolvers } from '@graphql-tools/schema';
import { wrapSchema } from '@graphql-tools/wrap';
import { isSubschemaConfig, ExpandAbstractTypes, AddReplacementFragments, delegateToSchema } from '@graphql-tools/delegate';
import { isSubschemaConfig, delegateToSchema } from '@graphql-tools/delegate';

@@ -259,3 +259,3 @@ function extractTypeDefinitions(ast) {

}
function buildTypeCandidates({ schemaLikeObjects, allSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }) {
function buildTypeCandidates({ schemaLikeObjects, transformedSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }) {
let schemaDef;

@@ -275,3 +275,3 @@ let schemaExtensions = [];

const schema = wrapSchema(schemaLikeObject);
allSchemas.push(schema);
transformedSchemas.set(schemaLikeObject, schema);
const operationTypes = {

@@ -481,24 +481,5 @@ query: schema.getQueryType(),

function createMergeInfo(allSchemas, typeCandidates, mergeTypes) {
function createMergeInfo(transformedSchemas, typeCandidates, mergeTypes) {
return {
delegate(operation, fieldName, args, context, info, transforms = []) {
const schema = guessSchemaByRootField(allSchemas, operation, fieldName);
const expandTransforms = new ExpandAbstractTypes(info.schema, schema);
const fragmentTransform = new AddReplacementFragments(schema, info.mergeInfo.replacementFragments);
return delegateToSchema({
schema,
operation,
fieldName,
args,
context,
info,
transforms: [...transforms, expandTransforms, fragmentTransform],
});
},
delegateToSchema(options) {
return delegateToSchema({
...options,
transforms: options.transforms,
});
},
transformedSchemas,
fragments: [],

@@ -656,39 +637,14 @@ replacementSelectionSets: undefined,

}
function operationToRootType(operation, schema) {
if (operation === 'subscription') {
return schema.getSubscriptionType();
}
else if (operation === 'mutation') {
return schema.getMutationType();
}
return schema.getQueryType();
}
function guessSchemaByRootField(schemas, operation, fieldName) {
for (const schema of schemas) {
const rootObject = operationToRootType(operation, schema);
if (rootObject != null) {
const fields = rootObject.getFields();
if (fieldName in fields) {
return schema;
}
}
}
throw new Error(`Could not find subschema with field \`${operation}.${fieldName}\``);
}
function addMergeInfo(stitchedSchema, mergeInfo) {
forEachField(stitchedSchema, field => {
if (field.resolve != null) {
const fieldResolver = field.resolve;
field.resolve = (parent, args, context, info) => {
const newInfo = { ...info, mergeInfo };
return fieldResolver(parent, args, context, newInfo);
};
return mapSchemaByField(stitchedSchema, ([fieldName, originalFieldConfig]) => {
const newFieldConfig = { ...originalFieldConfig };
const resolver = originalFieldConfig.resolve;
if (resolver != null) {
newFieldConfig.resolve = (parent, args, context, info) => resolver(parent, args, context, { ...info, mergeInfo });
}
if (field.subscribe != null) {
const fieldResolver = field.subscribe;
field.subscribe = (parent, args, context, info) => {
const newInfo = { ...info, mergeInfo };
return fieldResolver(parent, args, context, newInfo);
};
const subscriber = originalFieldConfig.subscribe;
if (subscriber != null) {
newFieldConfig.subscribe = (parent, args, context, info) => subscriber(parent, args, context, { ...info, mergeInfo });
}
return [fieldName, newFieldConfig];
});

@@ -701,12 +657,2 @@ }

}
const allSchemas = [];
const typeCandidates = Object.create(null);
const extensions = [];
const directives = [];
const schemaDefs = Object.create(null);
const operationTypeNames = {
query: 'Query',
mutation: 'Mutation',
subscription: 'Subscription',
};
let schemaLikeObjects = [...subschemas];

@@ -733,5 +679,15 @@ if (typeDefs) {

});
const transformedSchemas = new Map();
const typeCandidates = Object.create(null);
const extensions = [];
const directives = [];
const schemaDefs = Object.create(null);
const operationTypeNames = {
query: 'Query',
mutation: 'Mutation',
subscription: 'Subscription',
};
buildTypeCandidates({
schemaLikeObjects,
allSchemas,
transformedSchemas,
typeCandidates,

@@ -745,5 +701,3 @@ extensions,

let mergeInfo;
mergeInfo = createMergeInfo(allSchemas, typeCandidates, mergeTypes);
const finalResolvers = getFinalResolvers(resolvers, mergeInfo);
mergeInfo = completeMergeInfo(mergeInfo, finalResolvers);
mergeInfo = createMergeInfo(transformedSchemas, typeCandidates, mergeTypes);
const typeMap = buildTypeMap({

@@ -774,2 +728,8 @@ typeCandidates,

});
// We allow passing in an array of resolver maps, in which case we merge them
const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(mergeDeep, {}) : resolvers;
const finalResolvers = inheritResolversFromInterfaces
? extendResolversFromInterfaces(schema, resolverMap)
: resolverMap;
mergeInfo = completeMergeInfo(mergeInfo, finalResolvers);
addResolversToSchema({

@@ -779,6 +739,6 @@ schema,

resolverValidationOptions,
inheritResolversFromInterfaces,
inheritResolversFromInterfaces: false,
});
assertResolversPresent(schema, resolverValidationOptions);
addMergeInfo(schema, mergeInfo);
schema = addMergeInfo(schema, mergeInfo);
if (!allowUndefinedInResolve) {

@@ -803,19 +763,2 @@ addCatchUndefinedToSchema(schema);

}
function getFinalResolvers(resolvers, mergeInfo) {
let finalResolvers;
if (typeof resolvers === 'function') {
finalResolvers = resolvers(mergeInfo);
}
else if (Array.isArray(resolvers)) {
finalResolvers = resolvers.reduce((left, right) => mergeDeep(left, typeof right === 'function' ? right(mergeInfo) : right), {});
finalResolvers = resolvers.reduce(mergeDeep, {});
}
else {
finalResolvers = resolvers;
}
if (finalResolvers == null) {
finalResolvers = {};
}
return finalResolvers;
}
function isDocumentNode$1(object) {

@@ -822,0 +765,0 @@ return object.kind !== undefined;

import { GraphQLSchema } from 'graphql';
import { MergeTypeCandidate, MergeInfo, IResolversParameter, MergeTypeFilter } from './types';
export declare function createMergeInfo(allSchemas: Array<GraphQLSchema>, typeCandidates: Record<string, Array<MergeTypeCandidate>>, mergeTypes?: boolean | Array<string> | MergeTypeFilter): MergeInfo;
export declare function completeMergeInfo(mergeInfo: MergeInfo, resolvers: IResolversParameter): MergeInfo;
export declare function addMergeInfo(stitchedSchema: GraphQLSchema, mergeInfo: MergeInfo): void;
import { IResolvers } from '@graphql-tools/utils';
import { SubschemaConfig } from '@graphql-tools/delegate';
import { MergeTypeCandidate, MergeInfo, MergeTypeFilter } from './types';
export declare function createMergeInfo(transformedSchemas: Map<GraphQLSchema | SubschemaConfig, GraphQLSchema>, typeCandidates: Record<string, Array<MergeTypeCandidate>>, mergeTypes?: boolean | Array<string> | MergeTypeFilter): MergeInfo;
export declare function completeMergeInfo(mergeInfo: MergeInfo, resolvers: IResolvers): MergeInfo;
export declare function addMergeInfo(stitchedSchema: GraphQLSchema, mergeInfo: MergeInfo): GraphQLSchema;
{
"name": "@graphql-tools/stitch",
"version": "5.0.1-alpha-b7ec6b7.0",
"version": "5.0.1-alpha-b86f0f0.0",
"description": "A set of utils for faster development of GraphQL tools",

@@ -9,6 +9,6 @@ "peerDependencies": {

"dependencies": {
"@graphql-tools/delegate": "5.0.1-alpha-b7ec6b7.0",
"@graphql-tools/schema": "5.0.1-alpha-b7ec6b7.0",
"@graphql-tools/wrap": "5.0.1-alpha-b7ec6b7.0",
"@graphql-tools/utils": "5.0.1-alpha-b7ec6b7.0",
"@graphql-tools/delegate": "5.0.1-alpha-b86f0f0.0",
"@graphql-tools/schema": "5.0.1-alpha-b86f0f0.0",
"@graphql-tools/wrap": "5.0.1-alpha-b86f0f0.0",
"@graphql-tools/utils": "5.0.1-alpha-b86f0f0.0",
"tslib": "1.11.1"

@@ -15,0 +15,0 @@ },

import { DocumentNode, GraphQLNamedType, GraphQLSchema, GraphQLDirective, SchemaDefinitionNode, SchemaExtensionNode } from 'graphql';
import { SubschemaConfig } from '@graphql-tools/delegate';
import { MergeTypeCandidate, MergeTypeFilter, OnTypeConflict, MergeInfo } from './types';
export declare function buildTypeCandidates({ schemaLikeObjects, allSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }: {
export declare function buildTypeCandidates({ schemaLikeObjects, transformedSchemas, typeCandidates, extensions, directives, schemaDefs, operationTypeNames, mergeDirectives, }: {
schemaLikeObjects: Array<GraphQLSchema | SubschemaConfig | DocumentNode | GraphQLNamedType>;
allSchemas: Array<GraphQLSchema>;
transformedSchemas: Map<GraphQLSchema | SubschemaConfig, GraphQLSchema>;
typeCandidates: Record<string, Array<MergeTypeCandidate>>;

@@ -8,0 +8,0 @@ extensions: Array<DocumentNode>;

@@ -1,4 +0,4 @@

import { GraphQLNamedType, GraphQLSchema, GraphQLResolveInfo, SelectionSetNode } from 'graphql';
import { ReplacementSelectionSetMapping, ReplacementFragmentMapping, IResolvers, ITypeDefinitions, Transform, TypeMap } from '@graphql-tools/utils';
import { IDelegateToSchemaOptions, SubschemaConfig, SchemaLikeObject } from '@graphql-tools/delegate';
import { GraphQLNamedType, GraphQLSchema, SelectionSetNode, DocumentNode } from 'graphql';
import { IResolvers, ITypeDefinitions, TypeMap } from '@graphql-tools/utils';
import { SubschemaConfig, ReplacementSelectionSetMapping, ReplacementFragmentMapping } from '@graphql-tools/delegate';
import { IExecutableSchemaDefinition } from '@graphql-tools/schema';

@@ -27,3 +27,3 @@ export declare type MergeTypeCandidate = {

export interface MergeInfo {
delegate: (type: 'query' | 'mutation' | 'subscription', fieldName: string, args: Record<string, any>, context: Record<string, any>, info: GraphQLResolveInfo, transforms?: Array<Transform>) => any;
transformedSchemas: Map<GraphQLSchema | SubschemaConfig, GraphQLSchema>;
fragments: Array<{

@@ -36,5 +36,5 @@ field: string;

mergedTypes: Record<string, MergedTypeInfo>;
delegateToSchema<TContext, TArgs>(options: IDelegateToSchemaOptions<TContext, TArgs>): any;
}
export declare type IResolversParameter = Array<IResolvers | ((mergeInfo: MergeInfo) => IResolvers)> | IResolvers | ((mergeInfo: MergeInfo) => IResolvers);
export declare type SchemaLikeObject = SubschemaConfig | GraphQLSchema | string | DocumentNode | Array<GraphQLNamedType>;
export interface IStitchSchemasOptions<TContext = any> extends Omit<IExecutableSchemaDefinition<TContext>, 'typeDefs'> {

@@ -57,1 +57,7 @@ subschemas?: Array<GraphQLSchema | SubschemaConfig>;

}) => GraphQLNamedType;
declare module '@graphql-tools/utils' {
interface IFieldResolverOptions<TSource = any, TContext = any, TArgs = any> {
fragment?: string;
selectionSet?: string;
}
}

Sorry, the diff of this file is not supported yet

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