no-brainer-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.17 • Public • Published

No-Brainer SDK Builder 😎

The No-Brainer SDK Builder is a tool that generates an SDK based on a GraphQL schema. It simplifies the process of interacting with a GraphQL API by automatically creating TypeScript types and client methods for queries and mutations.

Generating SDK file

To use the No-Brainer SDK Builder, run the following command to:

npx no-brainer-sdk@latest http://localhost:3001/graphql ./src/types/sdk-types.ts

This command will generate the SDK based on the provided GraphQL schema and output it to the specified TypeScript file (sdk-types.ts in this case).

At your first installation, remember to install graphql-request as well

npm i graphql-request@6.1.0

Usage Example

Once you have generated the SDK, you can start using it in your project. Here's an example of how to use the generated SDK:

import { SdkClient, SdkClientInstance, CreateCriticalTaskArgs, CriticalTaskStatus } from '../types/sdk-types';

const client = new SdkClient('http://localhost:3001/graphql');
// Alternatively, you can use the pre-configured instance
SdkClientInstance; // Ready with the configured endpoint

client.setGlobalAuthToken('jwt'); // Sets Authorization header
client.setGlobalCustomHeader('custom-header', 'custom-value');

// Specify normal fields, or nested ones with object {}
await client.user({ fields: ['user_id', { sessions: ['id', 'session_id'] }] });

const args: CreateCriticalTaskArgs = {
    title: 'test',
    date: '2020-01-01',
};

// Queries and mutations map to functions, with strict types safety
const task = await client.create_critical_task({
    args,
    fields: ['id'],
    headers: { 'custom-header': 'override' },
});

if (task.status === CriticalTaskStatus.win) {
    console.log('You won!');
}

In this example, the generated SDK allows you to perform GraphQL queries and mutations. You can customize request headers, set global authentication tokens, and access auto-generated methods for specific queries and mutations.

Auto generated types, interfaces and enums

It's just an example, of what structures SDK generates

export const SdkClientInstance = new SdkClient('http://localhost:3001/graphql');

// Interfaces
export interface User {
    created_at: string;
    user_id: string;
    email: string;
    sessions: Session[];
    critical_tasks: CriticalTask[];
}

// Enums
export enum CriticalTaskStatus {
    win = 'win',
    lose = 'lose',
    in_progress = 'in_progress',
}

// Query & Mutations types!
export type QueryType = 'user' | 'user_power_list';

export type MutationType = 'create_critical_task' | 'update_critical_task';

export enum QueryEnum {
    user = 'user',
    user_power_list = 'user_power_list',
}

export enum MutationEnum {
    create_critical_task = 'create_critical_task',
    update_critical_task = 'update_critical_task',
}

Enjoy 🚀🚀🚀

I appreciate all ideas for improvement, feel free to create a pull request or just contact me.

Reach me out on

Gmail Gmail Linkedin Protonmail

Dependencies (1)

Dev Dependencies (9)

Package Sidebar

Install

npm i no-brainer-sdk

Weekly Downloads

39

Version

1.0.17

License

ISC

Unpacked Size

92 kB

Total Files

24

Last publish

Collaborators

  • devkica