respondWith
respondWith
allows you to alter the status or headers of your response while maintaining the typing of the returned data.
Type definition
ts
const respondWith: <T>(data?: T, responseInit?: ResponseInit) => ResponseLike<T>;
Usage
ts
// app.ts
import { respondWith } from 'integro';
import { createSession } from './authService';
export const app = {
auth: {
login: async (username: string, password: string) => {
const sessionToken = await createSession(username, password);
return sessionToken
? respondWith('Welcome!', { headers: { 'Set-Cookie': `session=${sessionToken}` } })
: respondWith('Username does not exist or does not match password', { status: 401 });
},
logout: () =>
respondWith('Goodbye!', { headers: { 'Set-Cookie': 'session=deleted; expires=Thu, 01 Jan 1970 00:00:00 GMT' } }),
},
};
On the client side, your methods will return only the data portion of the response:
ts
const apiClient: {
auth: {
login: () => Promise<string>;
logout: () => Promise<string>;
};
};
Parameters
data
Type: any
Default: undefined
The intended result of calling your function.
responseInit
Type: ResponseInit
Default: undefined
An object to be passed to the Request constructor.