@yuno-payments/dashboard-api-sdk
v0.2.0
Published
Infra SDK for Dashboard MFEs. Provides HTTP client factory, auth refresh wrapper, error normalization, React Query helpers, and base types. Does not include feature queries or mutations.
Downloads
50
Maintainers
Keywords
Readme
@yuno-payments/dashboard-api-sdk
Infra SDK for Dashboard MFEs. Provides HTTP client factory, auth refresh wrapper, error normalization, React Query helpers, and base types. Does not include feature queries or mutations.
Install
Peer deps are expected to be provided by consumers.
Usage
Client
import { createApiClient } from '@yuno-payments/dashboard-api-sdk'
const api = createApiClient({
baseURL: 'https://api.example.com',
getToken: () => localStorage.getItem('token') || '',
timeoutMs: 15000,
headers: async () => ({
'X-Environment': 'PROD',
'x-organization-code': 'ORG',
'x-account-code': 'ACC'
})
})
const res = await api.get('/health')Auth refresh single-flight
import { createApiClient, wrapWithAuthRefresh } from '@yuno-payments/dashboard-api-sdk'
const api = createApiClient({ baseURL: '...' })
wrapWithAuthRefresh(api, {
refreshToken: async () => {
const token = await fetch('/auth/refresh').then(r => r.json())
localStorage.setItem('token', token.access_token)
return token.access_token
}
})Errors
import { normalizeError } from '@yuno-payments/dashboard-api-sdk'
try {
await api.get('/protected')
} catch (e) {
const err = normalizeError(e)
if (err.kind === 'Unauthorized') {
// handle
}
}React Query helpers
import { makeKey, shouldRetry, defaultQueryOptions } from '@yuno-payments/dashboard-api-sdk'
import { QueryClient } from '@tanstack/react-query'
const key = makeKey('payments', 'list', { page: 1 })
const client = new QueryClient({
defaultOptions: defaultQueryOptions
})Types
import { Money, Pagination, DateRange } from '@yuno-payments/dashboard-api-sdk'Governance
- SDK provides infra only: client, auth refresh, errors, React Query helpers, base types.
- Feature queries and mutations live in each MFE.
- No OpenAPI code generation; manual types and optional runtime validation in consumers if needed.
- Monetary values must not be rounded.
Migration (from dashboard-api-mfe)
- Replace direct axios usage in MFEs with
createApiClient. - Adopt
normalizeErrorandshouldRetry. - Use
makeKeyfor cache key namespacing. - Move queries/mutations from the central repo into their owning MFE.
- Remove imports of deprecated central queries.
