@l3dev/api-result
v0.4.0
Published
Result objects for API responses
Readme
api-result
Description
An extension of @l3dev/result for creating result shaped API responses.
Mainly to be used with @l3dev type-safe api libraries:
Installation
npm install @l3dev/api-resultpnpm add @l3dev/api-resultDocumentation
ok
Creates an OkResponse object, alias: ApiResult.ok
ok<T>(value: T): OkResponse<T, 200>
ok<T, S>(value: T, status: S): OkResponse<T, S>Example
import { ok } from "@l3dev/api-result";
const result = ok({
message: "Hello world"
});
result.ok; // true
result.value; // { message: "Hello world" }
result.status; // 200Use
EMPTYas a shorthand for a 204 No Content response, it is equivalent toOkResponse<null, 204>
err
Create an ErrResponse object, alias: ApiResult.err
err<T>(type: T): ErrResponse<T, null, 500>
err<T, S>(type: T, status: S): ErrResponse<T, null, S>
err<T, D>(type: T, context: D): ErrResponse<T, D, 500>
err<T, D, S>(type: T, context: D, status: S): ErrResponse<T, D, S>Example
import { err } from "@l3dev/api-result";
const result = err("error");
result.ok; // false
result.type; // 'error'
result.context; // null
result.status; // 500
const resultNotFound = err("not found", 404);
resultNotFound.ok; // false
resultNotFound.type; // 'not found'
resultNotFound.status; // 404Result.fromErr
Convert an Err object into an ErrResponse
fromErr<T, D>(err: Err<T, D>): ErrResponse<T, D, 500>
fromErr<T, D, S>(err: Err<T, D>, status: S): ErrResponse<T, D, S>redirect
Create a RedirectResponse object, alias: ApiResult.redirect
redirect<T, S>(url: T, status: S): RedirectResponse<T, S>Example
import { redirect } from "@l3dev/api-result";
const result = redirect("/home", 302);
result.ok; // true
result.redirect; // true
result.value; // { target: "/home" }
result.status; // 302ApiResult.isOk
Returns true if the result is an OkResponse object
isOk(result: ResponseResult<...>): booleanApiResult.isErr
Returns true if the result is an ErrResponse object
isErr(result: ResponseResult<...>): booleanApiResult.isRedirect
Returns true if the result is a RedirectResponse object
isRedirect(result: ResponseResult<...>): boolean