typed-immutable-graphql
Generate graphql types from typed immutable models. Generate the code in compile time or with npm scripts. Refer example
Install instructions
npm install -D typed-immutable-graphql
Example 1
; const Ticket = ;
Ticket.resolve()
will yield you the following string
; const TicketType = name: 'TicketType' fields: id : type: GraphQLInt name : type: GraphQLString ;
Example 2 (With resolvers)
const Ticket = ; const Member = ; //resolve map for ticket model const ticketResolveMap = { return id: 1 message: `Member: , Ticket: 1` id: 2 message: `Member: , Ticket: 2` ; } ; //resolveMap for member which will be exposed const resolveMap = { return id: 1 message: `Member: , Ticket: 1` id: 2 message: `Member: , Ticket: 2` ; } ; resolveMapTicket = ticketResolveMap;
Member.resolve(resolveMap)
will yield you the following string
; const TicketType = name: 'TicketType' fields: id : type: GraphQLString message : type: GraphQLInt { return id: 1 message: 'Member: ' + memberid + ', Ticket: 1' id: 2 message: 'Member: ' + memberid + ', Ticket: 2' ; } ; const MemberType = name: 'MemberType' fields: id : type: GraphQLString tickets : type: TicketType { return id: 1 message: 'Member: ' + memberid + ', Ticket: 1' id: 2 message: 'Member: ' + memberid + ', Ticket: 2' ; } ;
Example 3 (Nested expression)
const Ticket = ; const Member = ; const Project = ;
Project.resolve()
will yield you the following string
; const TicketType = name: 'TicketType' fields: id : type: GraphQLString type : type: GraphQLString ; const MemberType = name: 'MemberType' fields: id : type: GraphQLString name : type: GraphQLString tickets : type: TicketType ; const ProjectType = name: 'ProjectType' fields: id : type: GraphQLInt type : type: GraphQLString tickets : type: MemberType members : type: TicketType ;
Example 4 (Enum)
const EnumVal = Typed; const Employee =
Employee.resolve()
will yield the following string
; const EnumValType = name: 'EnumValType' values: SALARY: value: 'SALARY' HOURLY: value: 'HOURLY' ; const EmployeeType = name: 'EmployeeType' fields: id : type: GraphQLString salaryType : type: EnumValType ;
You can place the generated code the code at compile time with a hook and use it.
Not sure how useful this project is. Refer test for more examples
License
MIT