1.0.17 • Published 6 months ago

no-brainer-sdk v1.0.17

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

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.

1.0.17

6 months ago

1.0.16

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.11

10 months ago

1.0.10

11 months ago

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

11 months ago

1.0.3

11 months ago

1.0.2

11 months ago

1.0.0

11 months ago