Pular para o conteúdo principal

SDK — @cactus-agents/* Packages

O SDK vive em front-cactus-core/, um monorepo pnpm com pnpm-workspace.yaml.

Os pacotes são publicados no GitHub Packages como registry npm privado da org cactus-agents.

Pacotes implementados

PacoteDescriçãoTestes
@cactus-agents/api-clientHTTP client framework-agnostic (fetch)22
@cactus-agents/typesTipos canônicos compartilhados
@cactus-agents/brandTransform API → BrandConfig26
@cactus-agents/authAuth service + token refresh18
@cactus-agents/utilsHelpers compartilhados (images, CDN)15
@cactus-agents/userPerfil, segurança, responsible gaming e income report30
@cactus-agents/walletCarteira, bonus, cashback, rollover e transacoes29
@cactus-agents/paymentsProviders, depósito, saque, PIX/SPEI/MX, bank-list
@cactus-agents/gamesCasino games, categorias, providers, start-game, votes, stats, image helpers
@cactus-agents/gamificationSmartico SDK — service logado + visitante, hash, widget actions, events
@cactus-agents/sportsSportsbook multi-provider (First, Altenar, Betby)
@cactus-agents/kycKYC service (start, status), helpers de status, multi-operador
@cactus-agents/validationsEngine de regras — force/regulatory/global+contexts, 10 módulos, predicados

Pacotes planejados

PacoteDescrição
@cactus-agents/pusherWebSocket real-time

Tooling

Cada pacote segue a mesma configuração:

  • Build: tsup (ESM + CJS + .d.ts)
  • Testes: Vitest
  • TypeScript: strict mode
  • Lint/format: Biome 1.9.4
  • Pre-commit: Husky + lint-staged

Comandos

cd front-cactus-core

pnpm build # Build todos os pacotes
pnpm test # Rodar todos os testes
pnpm lint # Biome lint

Convenção de interface

Todos os pacotes que fazem HTTP seguem o padrão de fetcher injection, mantendo-os framework-agnostic:

interface BrandFetcher {
get(path: string): Promise<unknown>;
post(path: string, body?: unknown): Promise<unknown>;
}

Wrappers createXFromClient (recomendado)

Para quem usa o @cactus-agents/api-client, cada pacote expõe um wrapper de conveniência que aceita o ApiClient diretamente — sem necessidade de montar o fetcher manualmente:

import { createApiClient } from '@cactus-agents/api-client';
import { createAuthFromClient } from '@cactus-agents/auth';
import { createBrandFromClient } from '@cactus-agents/brand';
import { createUserFromClient } from '@cactus-agents/user';
import { createWalletFromClient } from '@cactus-agents/wallet';
import { createPaymentsFromClient } from '@cactus-agents/payments';
import { createGamesFromClient } from '@cactus-agents/games';

const client = createApiClient({ baseUrl, tenant, language });

const auth = createAuthFromClient(client);
const brand = await createBrandFromClient(client, { country: 'BRA', language: 'pt-br' });
const user = createUserFromClient(client);
const wallet = createWalletFromClient(client);
const payments = createPaymentsFromClient(client);
const games = createGamesFromClient(client);
const kyc = createKycFromClient(client);
PacoteWrapperFunção de baixo nível
@cactus-agents/authcreateAuthFromClient(client)createAuthService(fetcher)
@cactus-agents/brandcreateBrandFromClient(client, opts)createBrandConfig(opts)
@cactus-agents/usercreateUserFromClient(client)createUserService(fetcher)
@cactus-agents/walletcreateWalletFromClient(client)createWalletService(fetcher)
@cactus-agents/paymentscreatePaymentsFromClient(client)createPaymentsService(fetcher)
@cactus-agents/gamescreateGamesFromClient(client)createGamesService(fetcher)
@cactus-agents/kyccreateKycFromClient(client)createKycService(fetcher)
@cactus-agents/validations— (import direto)fetchAllValidations(input)

Fetcher manual (baixo nível)

Para uso com HTTP clients arbitrários (não-ApiClient), injete um fetcher manualmente:

const brand = await createBrandConfig({
fetcher: { get: myClient.get, post: myClient.post },
country: 'BRA',
language: 'pt-br',
});