client
Interfaces
CursorPaginationMeta
Defined in: src/client/index.ts:40
Properties
hasMore
hasMore: boolean;Defined in: src/client/index.ts:44
limit
limit: number;Defined in: src/client/index.ts:45
links?
optional links?: PaginationLinks;Defined in: src/client/index.ts:47
nextCursor
nextCursor: string | null;Defined in: src/client/index.ts:42
previousCursor
previousCursor: string | null;Defined in: src/client/index.ts:43
totalCount?
optional totalCount?: number;Defined in: src/client/index.ts:46
type
type: "cursor";Defined in: src/client/index.ts:41
DeprecationMeta
Defined in: src/client/index.ts:55
Properties
deprecated
deprecated: true;Defined in: src/client/index.ts:56
link?
optional link?: string;Defined in: src/client/index.ts:60
message?
optional message?: string;Defined in: src/client/index.ts:59
since?
optional since?: string;Defined in: src/client/index.ts:57
sunset?
optional sunset?: string;Defined in: src/client/index.ts:58
PaginationLinks
Defined in: src/client/index.ts:21
@nestarc/safe-response/client
Lightweight client-side types and type guards for consuming API responses. This module has ZERO runtime dependencies — no NestJS, no Swagger, no reflect-metadata.
Example
import type { SafeSuccessResponse, SafeErrorResponse } from '@nestarc/safe-response/client';
import { isSuccess, isError } from '@nestarc/safe-response/client';
const res = await fetch('/api/users').then(r => r.json());
if (isSuccess(res)) {
console.log(res.data);
}Properties
first
first: string;Defined in: src/client/index.ts:23
last
last: string | null;Defined in: src/client/index.ts:26
next
next: string | null;Defined in: src/client/index.ts:25
prev
prev: string | null;Defined in: src/client/index.ts:24
self
self: string;Defined in: src/client/index.ts:22
PaginationMeta
Defined in: src/client/index.ts:29
Properties
hasNext
hasNext: boolean;Defined in: src/client/index.ts:35
hasPrev
hasPrev: boolean;Defined in: src/client/index.ts:36
limit
limit: number;Defined in: src/client/index.ts:32
links?
optional links?: PaginationLinks;Defined in: src/client/index.ts:37
page
page: number;Defined in: src/client/index.ts:31
total
total: number;Defined in: src/client/index.ts:33
totalPages
totalPages: number;Defined in: src/client/index.ts:34
type?
optional type?: "offset";Defined in: src/client/index.ts:30
RateLimitMeta
Defined in: src/client/index.ts:63
Properties
limit
limit: number;Defined in: src/client/index.ts:64
remaining
remaining: number;Defined in: src/client/index.ts:65
reset
reset: number;Defined in: src/client/index.ts:66
retryAfter?
optional retryAfter?: number;Defined in: src/client/index.ts:67
ResponseMeta
Defined in: src/client/index.ts:70
Indexable
[key: string]: unknownProperties
deprecation?
optional deprecation?: DeprecationMeta;Defined in: src/client/index.ts:76
filters?
optional filters?: Record<string, unknown>;Defined in: src/client/index.ts:75
message?
optional message?: string;Defined in: src/client/index.ts:72
pagination?
optional pagination?:
| PaginationMeta
| CursorPaginationMeta;Defined in: src/client/index.ts:71
rateLimit?
optional rateLimit?: RateLimitMeta;Defined in: src/client/index.ts:77
responseTime?
optional responseTime?: number;Defined in: src/client/index.ts:73
sort?
optional sort?: SortInfo;Defined in: src/client/index.ts:74
SafeErrorResponse
Defined in: src/client/index.ts:92
Properties
error
error: {
code: string;
details?: unknown;
message: string;
};Defined in: src/client/index.ts:96
code
code: string;details?
optional details?: unknown;message
message: string;meta?
optional meta?: {
[key: string]: unknown;
deprecation?: DeprecationMeta;
rateLimit?: RateLimitMeta;
responseTime?: number;
};Defined in: src/client/index.ts:101
Index Signature
[key: string]: unknowndeprecation?
optional deprecation?: DeprecationMeta;rateLimit?
optional rateLimit?: RateLimitMeta;responseTime?
optional responseTime?: number;path?
optional path?: string;Defined in: src/client/index.ts:108
requestId?
optional requestId?: string;Defined in: src/client/index.ts:95
statusCode
statusCode: number;Defined in: src/client/index.ts:94
success
success: false;Defined in: src/client/index.ts:93
timestamp?
optional timestamp?: string;Defined in: src/client/index.ts:107
SafeProblemDetailsResponse
Defined in: src/client/index.ts:111
Properties
code?
optional code?: string;Defined in: src/client/index.ts:117
detail
detail: string;Defined in: src/client/index.ts:115
details?
optional details?: unknown;Defined in: src/client/index.ts:119
instance
instance: string;Defined in: src/client/index.ts:116
meta?
optional meta?: {
[key: string]: unknown;
deprecation?: DeprecationMeta;
rateLimit?: RateLimitMeta;
responseTime?: number;
};Defined in: src/client/index.ts:120
Index Signature
[key: string]: unknowndeprecation?
optional deprecation?: DeprecationMeta;rateLimit?
optional rateLimit?: RateLimitMeta;responseTime?
optional responseTime?: number;requestId?
optional requestId?: string;Defined in: src/client/index.ts:118
status
status: number;Defined in: src/client/index.ts:114
title
title: string;Defined in: src/client/index.ts:113
type
type: string;Defined in: src/client/index.ts:112
SafeSuccessResponse
Defined in: src/client/index.ts:81
Type Parameters
| Type Parameter | Default type |
|---|---|
T | unknown |
Properties
code?
optional code?: string;Defined in: src/client/index.ts:84
data
data: T;Defined in: src/client/index.ts:86
meta?
optional meta?: ResponseMeta;Defined in: src/client/index.ts:87
path?
optional path?: string;Defined in: src/client/index.ts:89
requestId?
optional requestId?: string;Defined in: src/client/index.ts:85
statusCode
statusCode: number;Defined in: src/client/index.ts:83
success
success: true;Defined in: src/client/index.ts:82
timestamp?
optional timestamp?: string;Defined in: src/client/index.ts:88
SortInfo
Defined in: src/client/index.ts:50
Properties
field
field: string;Defined in: src/client/index.ts:51
order
order: "asc" | "desc";Defined in: src/client/index.ts:52
Type Aliases
SafeAnyResponse
type SafeAnyResponse<T> =
| SafeSuccessResponse<T>
| SafeErrorResponse
| SafeProblemDetailsResponse;Defined in: src/client/index.ts:132
Broader union including RFC 9457 Problem Details (when problemDetails is enabled)
Type Parameters
| Type Parameter | Default type |
|---|---|
T | unknown |
SafeResponse
type SafeResponse<T> =
| SafeSuccessResponse<T>
| SafeErrorResponse;Defined in: src/client/index.ts:129
Union type for standard API responses (success or error envelope)
Type Parameters
| Type Parameter | Default type |
|---|---|
T | unknown |
Functions
hasFilters()
function hasFilters(meta?): meta is ResponseMeta & { filters: Record<string, unknown> };Defined in: src/client/index.ts:202
Check if response meta contains filter information with valid shape
Parameters
| Parameter | Type |
|---|---|
meta? | ResponseMeta |
Returns
meta is ResponseMeta & { filters: Record<string, unknown> }
hasRateLimit()
function hasRateLimit(meta?): meta is ResponseMeta & { rateLimit: RateLimitMeta };Defined in: src/client/index.ts:221
Check if response meta contains rate limit information with valid shape
Parameters
| Parameter | Type |
|---|---|
meta? | ResponseMeta |
Returns
meta is ResponseMeta & { rateLimit: RateLimitMeta }
hasResponseTime()
function hasResponseTime(meta?): meta is ResponseMeta & { responseTime: number };Defined in: src/client/index.ts:183
Check if response meta contains a response time measurement
Parameters
| Parameter | Type |
|---|---|
meta? | | ResponseMeta | { [key: string]: unknown; responseTime?: number; } |
Returns
meta is ResponseMeta & { responseTime: number }
hasSort()
function hasSort(meta?): meta is ResponseMeta & { sort: SortInfo };Defined in: src/client/index.ts:190
Check if response meta contains sort information with valid shape
Parameters
| Parameter | Type |
|---|---|
meta? | ResponseMeta |
Returns
meta is ResponseMeta & { sort: SortInfo }
isCursorPagination()
function isCursorPagination(pagination): pagination is CursorPaginationMeta;Defined in: src/client/index.ts:161
Check if pagination is cursor-based
Parameters
| Parameter | Type |
|---|---|
pagination | | PaginationMeta | CursorPaginationMeta |
Returns
pagination is CursorPaginationMeta
isDeprecated()
function isDeprecated(meta?): meta is ResponseMeta & { deprecation: DeprecationMeta };Defined in: src/client/index.ts:214
Check if response meta indicates a deprecated endpoint
Parameters
| Parameter | Type |
|---|---|
meta? | ResponseMeta |
Returns
meta is ResponseMeta & { deprecation: DeprecationMeta }
isError()
function isError(res): res is SafeErrorResponse;Defined in: src/client/index.ts:144
Check if a response is an error response
Parameters
| Parameter | Type |
|---|---|
res | SafeResponse |
Returns
res is SafeErrorResponse
isOffsetPagination()
function isOffsetPagination(pagination): pagination is PaginationMeta;Defined in: src/client/index.ts:154
Check if pagination is offset-based
Parameters
| Parameter | Type |
|---|---|
pagination | | PaginationMeta | CursorPaginationMeta |
Returns
pagination is PaginationMeta
isPaginated()
function isPaginated(meta?): meta is ResponseMeta & { pagination: PaginationMeta | CursorPaginationMeta };Defined in: src/client/index.ts:149
Check if response meta contains pagination
Parameters
| Parameter | Type |
|---|---|
meta? | ResponseMeta |
Returns
meta is ResponseMeta & { pagination: PaginationMeta | CursorPaginationMeta }
isProblemDetailsResponse()
function isProblemDetailsResponse(res): res is SafeProblemDetailsResponse;Defined in: src/client/index.ts:168
Check if a response is an RFC 9457 Problem Details response
Parameters
| Parameter | Type |
|---|---|
res | unknown |
Returns
res is SafeProblemDetailsResponse
isSuccess()
function isSuccess<T>(res): res is SafeSuccessResponse<T>;Defined in: src/client/index.ts:137
Check if a response is a successful response
Type Parameters
| Type Parameter | Default type |
|---|---|
T | unknown |
Parameters
| Parameter | Type |
|---|---|
res | SafeResponse<T> |
Returns
res is SafeSuccessResponse<T>