2.8.1 • Published 2 years ago

@tdc-cl/async-stuff v2.8.1

Weekly downloads
155
License
MIT
Repository
github
Last release
2 years ago

@tdc-cl/async-stuff

Installation

Install async-stuff and its peer dependencies

TypeScript type definitions included

npm

npm install @tdc-cl/async-stuff decimal.js js-joda superstruct

yarn

yarn add @tdc-cl/async-stuff decimal.js js-joda superstruct

Basic example

// types.ts

export interface EmailPass {
    email: string;
    pass: string;
}

export interface Tokens {
    access: string;
    refresh: string;
}

export interface Todo {
    id: number;
    title: string;
    done: boolean;
}
// endpoints.ts

import { Server } from '@tdc-cl/async-stuff';
import { EmailPass, Tokens, Todo } from './types';

const server = new Server('http.../api');

export const login = server.endpoint.post<EmailPass, Tokens>('login/');

export const getAllTodos = server.endpoint.getAll<Todo[]>('/user/todos');
export const todoById = server.endpoint.get<number, Todo>('user/todos/');
export const createTodo = server.endpoint.post<Omit<Todo, 'id'>, void>('/user/todos/');
export const replaceTodo = server.endpoint.put<number, Omit<Todo, 'id'>, Todo>('user/todos');
export const patchTodo = server.endpoint.patch<number, Partial<Omit<Todo, 'id'>>, Todo>('/user/todos');
export const deleteTodo = server.endpoint.delete<number, void>('user/todos');
// LoginForm.tsx

import { login } from './endpoints';

export default function LoginForm() {
    async function onSubmit() {
        const tokens = await login.fetch({ user: ..., pass: ... });
        // `tokens` is of type `Tokens` as defined in the endpoint
        ...
    }
    ...
}
// Todos.tsx

import { getAllTodos, todoById, createTodo, replaceTodo, patchTodo, deleteTodo } from './endpoints';
import { Todo } from './types';

...

const todos: Todo[] = await getAllTodos.fetch();
const newTodo: Todo = await createTodo.fetch({ title: 'foo', done: false });
const thatTodo: Todo = await todoById.fetch(newTodo.id);
const anotherTodo: Todo = await replaceTodo.fetch(thatTodo.id, { title: 'bar', done: false });
const doneTodo: Todo = await patchTodo.fetch(anotherTodo.id, { done: true });
await deleteTodo.fetch(doneTodo.id);

Note: authentication tokens will be handled in a future version

2.8.1

2 years ago

2.8.0

2 years ago

2.7.0

2 years ago

2.6.0

2 years ago

2.5.0

3 years ago

2.4.0

3 years ago

2.3.6

3 years ago

2.3.5

3 years ago

2.3.4

3 years ago

2.3.3

3 years ago

2.3.2

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.3.1

3 years ago

2.1.2

3 years ago

2.1.4

3 years ago

2.1.3

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.5.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.2.0

3 years ago

1.1.1

3 years ago

1.0.2

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago