Comments (10)
Thanks for sharing your use-cases @matcic @michaelbromley, appreciate that ❤️ I have just published 5.2.0, you can use GraphQLTypesLoader
now (exported from the root).
from graphql.
Fixed in v5.1.1. Thanks for reporting!
from graphql.
This still appears to be broken for me in v5.1.1.
from graphql.
Weird 😢 Reopening
from graphql.
Alright.
So basically GraphQLFactory
depends on ResolversExplorerService
and a few others which in turn depends on GRAPHQL_MODULE_OPTIONS
. It creates a circular infinite dependency. Since mergeTypesByPaths
doesn't need options object, we could extract this method to another class.
from graphql.
@kamilmysliwiec I was about to open the same issue and was going to suggest what you just said. Just in case the following is what I'm using for now @michaelbromley:
import { fileLoader, mergeTypes } from 'merge-graphql-schemas';
import { flatten } from 'lodash';
export function mergeGraphqlTypes(...patterns: string[]): string {
const files = patterns.map(pattern => fileLoader(pattern));
return mergeTypes(flatten(files));
}
from graphql.
One question @matcic @michaelbromley, could you share your sample use-cases of mergeGraphqlTypes
? It might be useful for another feature that I'm planning to introduce very soon.
from graphql.
Sure, here's my use-case (this is prior to Apollo Server v2 migration, so using the old style):
private createSchema(customFields: CustomFields) {
const typeDefs = this.graphQLFactory.mergeTypesByPaths(__dirname + '/**/*.graphql');
const extendedTypeDefs = addGraphQLCustomFields(typeDefs, customFields);
return this.graphQLFactory.createSchema({
typeDefs: extendedTypeDefs,
resolverValidationOptions: {
requireResolversForResolveType: false,
},
resolvers: {
JSON: GraphQLJSON,
DateTime: GraphQLDateTime,
},
});
}
The addGraphQLCustomFields()
function is internally using graphql-js's extendSchema
function to extend the existing objects with new fields according to user config. Implementation is here.
@matcic thanks - that's pretty much exactly what I've got at the moment ;)
from graphql.
@kamilmysliwiec my use-case is related to microservices: the idea is to have one schema per microservice (which in turn is generated by merging together several types belonging to different models) and then to merge all schemas into one. I am using Graphql bindings behind the scenes in order to delegate requests to the appropriate endpoint.
I am actually in the process of designing such architecture with a special focus on user authorization - I am pre-processing all resolvers as well in order to create some permission wrappers that can be applied through graphql-middleware. I am afraid I cannot share a complete implementation yet, but I'd be interested in knowing more about the feature you are planning to introduce 😄
from graphql.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
from graphql.
Related Issues (20)
- TypeScript definitions generated with wrong case HOT 2
- `GraphQLModule` should throw an error if schema files are not found HOT 2
- Expose GraphQLModule options and gqlSchemaHost to support Serverless
- How to send partial data with error object using @Context
- CustomScalar parseLiteral doesn't allow null return type HOT 2
- Unable to Specify forRoutes Argument When Assigning Middleware to '/graphql' Endpoint
- ResolveField shouldn't be called when the field already has a value HOT 1
- Support for Custom Fields Decorators in Mapped types
- Extend `dateScalarMode` and `numberScalarMode` to allow custom scalars to be used by default
- Subscription graphql this on resolve does not access services being injected in the constructor HOT 1
- Support for @defer directive in GraphQL HOT 2
- @nestjs/graphql compatibility with ts-morph 22.0.0 HOT 1
- Regular Expression Denial of Service (ReDoS) vulnerability HOT 2
- Feat | clarifying `DefinitionsGeneratorOptions#defaultTypeMapping` supported types
- Incomplete schema produced with code-first approach: directives are omitted HOT 1
- @nestjs/graphql depends on vulnerable version of ws HOT 1
- Upgrade WS dependency - ws affected by a DoS when handling a request with many HTTP headers HOT 3
- v12.2.0 - Error: Schema must contain uniquely named types but contains multiple types named "DateTime"
- npm warn deprecated @apollo/[email protected] HOT 1
- Allow sortSchema via GraphQLDefinitionsFactory HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql.