Skip to content

Commit

Permalink
Preset for GraphQL-Modules (v1) integration (#3923)
Browse files Browse the repository at this point in the history
* GraphQL Modules preset

* Produce type for resolve middlewares

* match version

* Support enums

* Support InputObject types

* Support Scalars

* isTypeOf

* Support Interfaces

* Support Unions

* Fixes

* Version

* Fixes

* Fixes

* Use key-value objects in resolve middlewares

* Moar

* Examples

* Update snapshot

* Tweaks

* Middlewares

* fixes

* more fixes, added changeset

* fixes

* fixes

* Use canary config

* changeset

* yarn

* fix for scalars

* added encapsulation, fixed external scalars

* fixes

* fixes

* fixes

* fixes

* fixes

* more fixes

* fixes

* fixes

* fix

* added changeset

* fixes

* bring back custom plugin for scalars

* initial support for naming conventions

* fixes

* fix tests

* fixes for enums

* force enumsAsTypes to make it simpler to break to pieces

* fixes

* fixes

* bump config package

* update all examples

* better support for interfaces

* added docs
docs fixes
schema config fixes

Co-authored-by: Dotan Simha <dotansimha@gmail.com>
Co-authored-by: Arda TANRIKULU <ardatanrikulu@gmail.com>
  • Loading branch information
3 people authored Nov 17, 2020
1 parent 99f887e commit faa1397
Show file tree
Hide file tree
Showing 55 changed files with 5,967 additions and 2,819 deletions.
5 changes: 5 additions & 0 deletions .changeset/beige-dogs-enjoy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@graphql-codegen/graphql-modules-preset': major
---

New Plugin!
5 changes: 5 additions & 0 deletions .changeset/fair-clocks-itch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@graphql-codegen/cli': patch
---

Fix issues with missing sources in loadSchema
5 changes: 5 additions & 0 deletions .changeset/kind-countries-decide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@graphql-codegen/visitor-plugin-common': patch
---

Fixed a bug in `parseMapper` that were preventing to use mappers with complex type usages
6 changes: 6 additions & 0 deletions .changeset/smooth-seas-notice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@graphql-codegen/flow-resolvers': patch
'@graphql-codegen/typescript-resolvers': patch
---

Fixed issues with mappers setup
5 changes: 5 additions & 0 deletions .changeset/soft-waves-yell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@graphql-codegen/cli': patch
---

fix(cli): use default options of codegen for graphql-config's load methods
9 changes: 9 additions & 0 deletions dev-test/codegen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,15 @@ generates:
plugins:
- typescript-operations
- typescript-react-apollo
./dev-test/modules/:
schema: ./dev-test/modules/*/types/*.graphql
preset: graphql-modules
presetConfig:
baseTypesPath: types.ts
filename: generated.ts
plugins:
- typescript
- typescript-resolvers
./dev-test/star-wars/types.globallyAvailable.d.ts:
schema: ./dev-test/star-wars/schema.json
documents: ./dev-test/star-wars/**/*.graphql
Expand Down
39 changes: 39 additions & 0 deletions dev-test/modules/blog/generated.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import * as Types from '../types';
import * as gm from 'graphql-modules';
export namespace BlogModule {
interface DefinedFields {
Article: 'id' | 'title' | 'text' | 'author';
Query: 'articles' | 'articleById' | 'articlesByUser';
}

export type Article = Pick<Types.Article, DefinedFields['Article']>;
export type User = Types.User;
export type Query = Pick<Types.Query, DefinedFields['Query']>;

export type ArticleResolvers = Pick<Types.ArticleResolvers, DefinedFields['Article'] | '__isTypeOf'>;
export type QueryResolvers = Pick<Types.QueryResolvers, DefinedFields['Query']>;

export interface Resolvers {
Article?: ArticleResolvers;
Query?: QueryResolvers;
}

export interface MiddlewareMap {
'*'?: {
'*'?: gm.Middleware[];
};
Article?: {
'*'?: gm.Middleware[];
id?: gm.Middleware[];
title?: gm.Middleware[];
text?: gm.Middleware[];
author?: gm.Middleware[];
};
Query?: {
'*'?: gm.Middleware[];
articles?: gm.Middleware[];
articleById?: gm.Middleware[];
articlesByUser?: gm.Middleware[];
};
}
}
12 changes: 12 additions & 0 deletions dev-test/modules/blog/types/blog.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
type Article {
id: ID!
title: String!
text: String!
author: User!
}

extend type Query {
articles: [Article!]
articleById(id: ID!): Article
articlesByUser(userId: ID!): [Article!]
}
33 changes: 33 additions & 0 deletions dev-test/modules/common/generated.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import * as Types from '../types';
import * as gm from 'graphql-modules';
export namespace CommonModule {
interface DefinedFields {
Query: 'ping';
Mutation: 'pong';
}

export type Query = Pick<Types.Query, DefinedFields['Query']>;
export type Mutation = Pick<Types.Mutation, DefinedFields['Mutation']>;

export type QueryResolvers = Pick<Types.QueryResolvers, DefinedFields['Query']>;
export type MutationResolvers = Pick<Types.MutationResolvers, DefinedFields['Mutation']>;

export interface Resolvers {
Query?: QueryResolvers;
Mutation?: MutationResolvers;
}

export interface MiddlewareMap {
'*'?: {
'*'?: gm.Middleware[];
};
Query?: {
'*'?: gm.Middleware[];
ping?: gm.Middleware[];
};
Mutation?: {
'*'?: gm.Middleware[];
pong?: gm.Middleware[];
};
}
}
7 changes: 7 additions & 0 deletions dev-test/modules/common/types/common.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type Query {
ping: Int
}

type Mutation {
pong: Int
}
69 changes: 69 additions & 0 deletions dev-test/modules/dotanions/generated.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import * as Types from '../types';
import * as gm from 'graphql-modules';
export namespace DotanionsModule {
interface DefinedFields {
Paypal: 'id' | 'url';
CreditCard: 'id' | 'cardNumber' | 'cardOwner';
Donation: 'id' | 'sender' | 'recipient' | 'amount';
Mutation: 'donate';
User: 'paymentOptions';
}

interface DefinedInputFields {
DonationInput: 'user' | 'amount' | 'paymentOption';
}

export type Paypal = Pick<Types.Paypal, DefinedFields['Paypal']>;
export type CreditCard = Pick<Types.CreditCard, DefinedFields['CreditCard']>;
export type PaymentOption = Types.PaymentOption;
export type User = Types.User;
export type Donation = Pick<Types.Donation, DefinedFields['Donation']>;
export type DonationInput = Pick<Types.DonationInput, DefinedInputFields['DonationInput']>;
export type Mutation = Pick<Types.Mutation, DefinedFields['Mutation']>;

export type PaypalResolvers = Pick<Types.PaypalResolvers, DefinedFields['Paypal'] | '__isTypeOf'>;
export type CreditCardResolvers = Pick<Types.CreditCardResolvers, DefinedFields['CreditCard'] | '__isTypeOf'>;
export type DonationResolvers = Pick<Types.DonationResolvers, DefinedFields['Donation'] | '__isTypeOf'>;
export type MutationResolvers = Pick<Types.MutationResolvers, DefinedFields['Mutation']>;
export type UserResolvers = Pick<Types.UserResolvers, DefinedFields['User']>;

export interface Resolvers {
Paypal?: PaypalResolvers;
CreditCard?: CreditCardResolvers;
Donation?: DonationResolvers;
Mutation?: MutationResolvers;
User?: UserResolvers;
}

export interface MiddlewareMap {
'*'?: {
'*'?: gm.Middleware[];
};
Paypal?: {
'*'?: gm.Middleware[];
id?: gm.Middleware[];
url?: gm.Middleware[];
};
CreditCard?: {
'*'?: gm.Middleware[];
id?: gm.Middleware[];
cardNumber?: gm.Middleware[];
cardOwner?: gm.Middleware[];
};
User?: {
'*'?: gm.Middleware[];
paymentOptions?: gm.Middleware[];
};
Donation?: {
'*'?: gm.Middleware[];
id?: gm.Middleware[];
sender?: gm.Middleware[];
recipient?: gm.Middleware[];
amount?: gm.Middleware[];
};
Mutation?: {
'*'?: gm.Middleware[];
donate?: gm.Middleware[];
};
}
}
33 changes: 33 additions & 0 deletions dev-test/modules/dotanions/types/donations.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
type Paypal {
id: ID!
url: String!
}

type CreditCard {
id: ID!
cardNumber: Int!
cardOwner: String!
}

union PaymentOption = Paypal | CreditCard

extend type User {
paymentOptions: [PaymentOption!]
}

type Donation {
id: ID!
sender: User!
recipient: User!
amount: Float!
}

input DonationInput {
user: ID!
amount: Float!
paymentOption: ID!
}

extend type Mutation {
donate(donation: DonationInput): Donation
}
Loading

0 comments on commit faa1397

Please sign in to comment.