prismake / typegql

Create GraphQL schema with TypeScript classes.
https://prismake.github.io/typegql/
MIT License
423 stars 21 forks source link

default params break the compileFieldArgs function #59

Open capaj opened 6 years ago

capaj commented 6 years ago

I have a field like this:

@Field({ type: UserEventModel })
  async inviteUser(
    @Context ctx: UserSessionModel,
    userId: number,
    attending: boolean,
    sendInviteEmail: boolean = true
  ): Promise<UserEventModel> {
    ... some implementeation
  }

when I run this, I get:

Error: Expected undefined to be a GraphQL nullable type.
    at invariant (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/graphql/jsutils/invariant.js:19:11)
    at assertNullableType (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/graphql/type/definition.js:327:51)
    at new GraphQLNonNull (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/graphql/type/definition.js:294:19)
    at enhanceType (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:635:21)
    at /home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:662:25
    at Array.forEach (<anonymous>)
    at convertArgsArrayToArgsMap (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:653:14)
    at compileFieldArgs (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:687:12)
    at compileFieldConfig$$1 (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:760:16)
    at /home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:787:39
    at Array.forEach (<anonymous>)
    at getAllFields (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:782:25)
    at /home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:795:39
    at Array.forEach (<anonymous>)
    at compileAllFields$$1 (/home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:794:23)
    at /home/capaj/git_projects/looop/project-alpha/back-end/node_modules/@capaj/typegql/lib/index.js:829:16

when I put a log into function convertArgsArrayToArgsMap(target, fieldName, argsTypes, registeredArgs) {

the last 4 argument name's are:

argName:  userId
originalType:  Float
argName:  attending
originalType:  Boolean
argName:  sendInviteEmail
originalType:  Boolean
argName:  [
originalType:  undefined

of course when I remove the default argument value, it all works.