https://github.com/DiyorUmarkulov/gql-module
GraphQL Module Builder is a library designed to simplify working with GraphQL modules, enabling you to quickly create, register, and combine types and resolvers into a modular structure.
https://github.com/DiyorUmarkulov/gql-module
apollo-server gql-api graphql library module package typescript-library
Last synced: 11 months ago
JSON representation
GraphQL Module Builder is a library designed to simplify working with GraphQL modules, enabling you to quickly create, register, and combine types and resolvers into a modular structure.
- Host: GitHub
- URL: https://github.com/DiyorUmarkulov/gql-module
- Owner: DiyorUmarkulov
- License: mit
- Created: 2024-12-10T10:41:37.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-20T14:36:48.000Z (over 1 year ago)
- Last Synced: 2025-08-09T07:27:26.260Z (11 months ago)
- Topics: apollo-server, gql-api, graphql, library, module, package, typescript-library
- Language: TypeScript
- Homepage:
- Size: 34.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GraphQL Module Builder π
**GraphQL Module Builder** is a library designed to simplify working with GraphQL modules, enabling you to quickly create, register, and combine types and resolvers into a modular structure.
## Purpose and Motivation π
### 1. **Simplifying Modular Architecture Development in GraphQL** π οΈ
As GraphQL applications scale, organizing the codebase can become challenging. This library allows developers to structure code using modules, where each module encapsulates types and resolvers for a specific functionality.
### 2. **Improved Readability and Maintainability** π
A clear, module-based structure makes the code easy to understand and maintain. Each module manages a distinct part of the application, reducing conflicts between resolvers and simplifying the addition of new features.
### 3. **Automated Type and Resolver Aggregation** π€
Instead of manually aggregating types and resolvers, the library automatically generates the final `typeDefs` and `resolvers`. This eliminates repetitive tasks, reduces errors, and accelerates development.
### 4. **Flexibility in Resolver Creation** β‘
The library provides a straightforward API for creating resolvers with clear separation of queries, mutations, and subscriptions. This lets developers focus on business logic rather than infrastructure details.
---
## Installation π¦
Install the library using npm or yarn:
```bash
npm install gql-module
```
or
```bash
yarn add gql-module
```
---
## Usage π‘
Hereβs an example of how to use **GraphQL Module Builder**:
```typescript
import { gql } from "apollo-server-core";
import { resolvers, gqlModule, registerModules } from "gql-module";
// π Define GraphQL types
const userTypes = gql`
type User {
name: String
password: String
}
type UsersOutput {
payload: [User]
}
`;
// π§ Define GraphQL resolvers
const userQueries = resolvers({
getAllUsers: {
handler: async () => {
// Simulate fetching data
return { payload: [{ name: "Alice", password: "hidden" }] };
},
type: ": UsersOutput",
},
});
// π§© Create a GraphQL module
const userModule = gqlModule({
resolvers: {
queries: userQueries,
},
types: [userTypes],
});
// π Register modules and retrieve final types and resolvers
const { resolvers: builtResolvers, typeDefs } = registerModules([userModule]);
// β
Log results
console.log("builtResolvers", builtResolvers);
// Result:
// builtResolvers { Query: { getAllUsers: [Function: builtResolver] } }
console.log("typeDefs", typeDefs.loc.source.body);
// Result:
// typeDefs
// type User {
// name: String
// password: String
// }
//
// type UsersOutput {
// payload: [User]
// }
//
// type Query {
// getAllUsers: UsersOutput
// }
```
---
## License π
This library is distributed under the MIT License. The full license text can be found in the [LICENSE](./LICENSE) file.
---
We hope this library simplifies your work with GraphQL! π» If you have ideas for improvements or encounter issues, weβd love to hear from you in the [Issues](https://github.com/Diyor2009/gql-module/issues) section!