Skip to content

client

Interfaces

CursorPaginationMeta

Defined in: src/client/index.ts:40

Properties

hasMore
ts
hasMore: boolean;

Defined in: src/client/index.ts:44

limit
ts
limit: number;

Defined in: src/client/index.ts:45

ts
optional links?: PaginationLinks;

Defined in: src/client/index.ts:47

nextCursor
ts
nextCursor: string | null;

Defined in: src/client/index.ts:42

previousCursor
ts
previousCursor: string | null;

Defined in: src/client/index.ts:43

totalCount?
ts
optional totalCount?: number;

Defined in: src/client/index.ts:46

type
ts
type: "cursor";

Defined in: src/client/index.ts:41


DeprecationMeta

Defined in: src/client/index.ts:55

Properties

deprecated
ts
deprecated: true;

Defined in: src/client/index.ts:56

ts
optional link?: string;

Defined in: src/client/index.ts:60

message?
ts
optional message?: string;

Defined in: src/client/index.ts:59

since?
ts
optional since?: string;

Defined in: src/client/index.ts:57

sunset?
ts
optional sunset?: string;

Defined in: src/client/index.ts:58


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

typescript
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
ts
first: string;

Defined in: src/client/index.ts:23

last
ts
last: string | null;

Defined in: src/client/index.ts:26

next
ts
next: string | null;

Defined in: src/client/index.ts:25

prev
ts
prev: string | null;

Defined in: src/client/index.ts:24

self
ts
self: string;

Defined in: src/client/index.ts:22


PaginationMeta

Defined in: src/client/index.ts:29

Properties

hasNext
ts
hasNext: boolean;

Defined in: src/client/index.ts:35

hasPrev
ts
hasPrev: boolean;

Defined in: src/client/index.ts:36

limit
ts
limit: number;

Defined in: src/client/index.ts:32

ts
optional links?: PaginationLinks;

Defined in: src/client/index.ts:37

page
ts
page: number;

Defined in: src/client/index.ts:31

total
ts
total: number;

Defined in: src/client/index.ts:33

totalPages
ts
totalPages: number;

Defined in: src/client/index.ts:34

type?
ts
optional type?: "offset";

Defined in: src/client/index.ts:30


RateLimitMeta

Defined in: src/client/index.ts:63

Properties

limit
ts
limit: number;

Defined in: src/client/index.ts:64

remaining
ts
remaining: number;

Defined in: src/client/index.ts:65

reset
ts
reset: number;

Defined in: src/client/index.ts:66

retryAfter?
ts
optional retryAfter?: number;

Defined in: src/client/index.ts:67


ResponseMeta

Defined in: src/client/index.ts:70

Indexable

ts
[key: string]: unknown

Properties

apiVersion?
ts
optional apiVersion?: string;

Defined in: src/client/index.ts:78

deprecation?
ts
optional deprecation?: DeprecationMeta;

Defined in: src/client/index.ts:76

fields?
ts
optional fields?: string[];

Defined in: src/client/index.ts:79

filters?
ts
optional filters?: Record<string, unknown>;

Defined in: src/client/index.ts:75

message?
ts
optional message?: string;

Defined in: src/client/index.ts:72

pagination?
ts
optional pagination?:
  | PaginationMeta
  | CursorPaginationMeta;

Defined in: src/client/index.ts:71

rateLimit?
ts
optional rateLimit?: RateLimitMeta;

Defined in: src/client/index.ts:77

responseTime?
ts
optional responseTime?: number;

Defined in: src/client/index.ts:73

sort?
ts
optional sort?: SortInfo;

Defined in: src/client/index.ts:74


SafeErrorResponse

Defined in: src/client/index.ts:94

Properties

error
ts
error: {
  code: string;
  details?: unknown;
  message: string;
};

Defined in: src/client/index.ts:98

code
ts
code: string;
details?
ts
optional details?: unknown;
message
ts
message: string;

meta?
ts
optional meta?: {
[key: string]: unknown;
  apiVersion?: string;
  deprecation?: DeprecationMeta;
  rateLimit?: RateLimitMeta;
  responseTime?: number;
};

Defined in: src/client/index.ts:103

Index Signature
ts
[key: string]: unknown
apiVersion?
ts
optional apiVersion?: string;
deprecation?
ts
optional deprecation?: DeprecationMeta;
rateLimit?
ts
optional rateLimit?: RateLimitMeta;
responseTime?
ts
optional responseTime?: number;

path?
ts
optional path?: string;

Defined in: src/client/index.ts:111

requestId?
ts
optional requestId?: string;

Defined in: src/client/index.ts:97

statusCode
ts
statusCode: number;

Defined in: src/client/index.ts:96

success
ts
success: false;

Defined in: src/client/index.ts:95

timestamp?
ts
optional timestamp?: string;

Defined in: src/client/index.ts:110


SafeProblemDetailsResponse

Defined in: src/client/index.ts:114

Properties

code?
ts
optional code?: string;

Defined in: src/client/index.ts:120

detail
ts
detail: string;

Defined in: src/client/index.ts:118

details?
ts
optional details?: unknown;

Defined in: src/client/index.ts:122

instance
ts
instance: string;

Defined in: src/client/index.ts:119

meta?
ts
optional meta?: {
[key: string]: unknown;
  apiVersion?: string;
  deprecation?: DeprecationMeta;
  rateLimit?: RateLimitMeta;
  responseTime?: number;
};

Defined in: src/client/index.ts:123

Index Signature
ts
[key: string]: unknown
apiVersion?
ts
optional apiVersion?: string;
deprecation?
ts
optional deprecation?: DeprecationMeta;
rateLimit?
ts
optional rateLimit?: RateLimitMeta;
responseTime?
ts
optional responseTime?: number;

requestId?
ts
optional requestId?: string;

Defined in: src/client/index.ts:121

status
ts
status: number;

Defined in: src/client/index.ts:117

title
ts
title: string;

Defined in: src/client/index.ts:116

type
ts
type: string;

Defined in: src/client/index.ts:115


SafeSuccessResponse

Defined in: src/client/index.ts:83

Type Parameters

Type ParameterDefault type
Tunknown

Properties

code?
ts
optional code?: string;

Defined in: src/client/index.ts:86

data
ts
data: T;

Defined in: src/client/index.ts:88

meta?
ts
optional meta?: ResponseMeta;

Defined in: src/client/index.ts:89

path?
ts
optional path?: string;

Defined in: src/client/index.ts:91

requestId?
ts
optional requestId?: string;

Defined in: src/client/index.ts:87

statusCode
ts
statusCode: number;

Defined in: src/client/index.ts:85

success
ts
success: true;

Defined in: src/client/index.ts:84

timestamp?
ts
optional timestamp?: string;

Defined in: src/client/index.ts:90


SortInfo

Defined in: src/client/index.ts:50

Properties

field
ts
field: string;

Defined in: src/client/index.ts:51

order
ts
order: "asc" | "desc";

Defined in: src/client/index.ts:52

Type Aliases

SafeAnyResponse

ts
type SafeAnyResponse<T> =
  | SafeSuccessResponse<T>
  | SafeErrorResponse
  | SafeProblemDetailsResponse;

Defined in: src/client/index.ts:136

Broader union including RFC 9457 Problem Details (when problemDetails is enabled)

Type Parameters

Type ParameterDefault type
Tunknown

SafeResponse

ts
type SafeResponse<T> =
  | SafeSuccessResponse<T>
  | SafeErrorResponse;

Defined in: src/client/index.ts:133

Union type for standard API responses (success or error envelope)

Type Parameters

Type ParameterDefault type
Tunknown

Functions

hasFieldSelection()

ts
function hasFieldSelection(meta?): meta is ResponseMeta & { fields: string[] };

Defined in: src/client/index.ts:225

Check if response meta contains field selection information

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { fields: string[] }


hasFilters()

ts
function hasFilters(meta?): meta is ResponseMeta & { filters: Record<string, unknown> };

Defined in: src/client/index.ts:206

Check if response meta contains filter information with valid shape

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { filters: Record<string, unknown> }


hasRateLimit()

ts
function hasRateLimit(meta?): meta is ResponseMeta & { rateLimit: RateLimitMeta };

Defined in: src/client/index.ts:237

Check if response meta contains rate limit information with valid shape

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { rateLimit: RateLimitMeta }


hasResponseTime()

ts
function hasResponseTime(meta?): meta is ResponseMeta & { responseTime: number };

Defined in: src/client/index.ts:187

Check if response meta contains a response time measurement

Parameters

ParameterType
meta?| ResponseMeta | { [key: string]: unknown; responseTime?: number; }

Returns

meta is ResponseMeta & { responseTime: number }


hasSort()

ts
function hasSort(meta?): meta is ResponseMeta & { sort: SortInfo };

Defined in: src/client/index.ts:194

Check if response meta contains sort information with valid shape

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { sort: SortInfo }


isCursorPagination()

ts
function isCursorPagination(pagination): pagination is CursorPaginationMeta;

Defined in: src/client/index.ts:165

Check if pagination is cursor-based

Parameters

ParameterType
pagination| PaginationMeta | CursorPaginationMeta

Returns

pagination is CursorPaginationMeta


isDeprecated()

ts
function isDeprecated(meta?): meta is ResponseMeta & { deprecation: DeprecationMeta };

Defined in: src/client/index.ts:218

Check if response meta indicates a deprecated endpoint

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { deprecation: DeprecationMeta }


isError()

ts
function isError(res): res is SafeErrorResponse;

Defined in: src/client/index.ts:148

Check if a response is an error response

Parameters

ParameterType
resSafeResponse

Returns

res is SafeErrorResponse


isOffsetPagination()

ts
function isOffsetPagination(pagination): pagination is PaginationMeta;

Defined in: src/client/index.ts:158

Check if pagination is offset-based

Parameters

ParameterType
pagination| PaginationMeta | CursorPaginationMeta

Returns

pagination is PaginationMeta


isPaginated()

ts
function isPaginated(meta?): meta is ResponseMeta & { pagination: PaginationMeta | CursorPaginationMeta };

Defined in: src/client/index.ts:153

Check if response meta contains pagination

Parameters

ParameterType
meta?ResponseMeta

Returns

meta is ResponseMeta & { pagination: PaginationMeta | CursorPaginationMeta }


isProblemDetailsResponse()

ts
function isProblemDetailsResponse(res): res is SafeProblemDetailsResponse;

Defined in: src/client/index.ts:172

Check if a response is an RFC 9457 Problem Details response

Parameters

ParameterType
resunknown

Returns

res is SafeProblemDetailsResponse


isSuccess()

ts
function isSuccess<T>(res): res is SafeSuccessResponse<T>;

Defined in: src/client/index.ts:141

Check if a response is a successful response

Type Parameters

Type ParameterDefault type
Tunknown

Parameters

ParameterType
resSafeResponse<T>

Returns

res is SafeSuccessResponse<T>

Released under the MIT License.