@yuno-payments/dashboard-api-sdk
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

@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)

  1. Replace direct axios usage in MFEs with createApiClient.
  2. Adopt normalizeError and shouldRetry.
  3. Use makeKey for cache key namespacing.
  4. Move queries/mutations from the central repo into their owning MFE.
  5. Remove imports of deprecated central queries.

Readme

Keywords

none

Package Sidebar

Install

npm i @yuno-payments/dashboard-api-sdk

Weekly Downloads

0

Version

0.2.0

License

none

Unpacked Size

38.8 kB

Total Files

8

Last publish

Collaborators

  • yunopayments
  • camilo_yuno
  • miguelchs2
  • ssethson
  • david-castrillon-yuno
  • cesar.guerrero
  • miguelvelasquez-yuno
  • rafael.pimienta
  • lmichailian
  • nicoprtenjaca