🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@fiado/type-kit

Package Overview
Dependencies
Maintainers
1
Versions
1020
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fiado/type-kit

latest
npmnpm
Version
3.104.0
Version published
Maintainers
1
Created
Source

Fiado Type Kit

Biblioteca de DTOs, Enums y Tipos Compartidos para el Ecosistema Fiado

npm TypeScript class-validator

Tabla de Contenidos

Descripcion General

@fiado/type-kit es la biblioteca central de tipos del ecosistema Fiado que proporciona:

  • DTOs (Data Transfer Objects): Clases tipadas para requests y responses de APIs
  • Enums: Enumeraciones para estados, tipos y categorias del negocio
  • Entities: Entidades base para modelos de datos
  • Interfaces: Contratos compartidos entre microservicios
  • Validaciones: Decoradores de class-validator para validacion de entrada

Proposito

En una arquitectura de microservicios, es fundamental mantener consistencia en los tipos de datos que se intercambian entre servicios. Esta biblioteca:

  • Centraliza todas las definiciones de tipos en un solo lugar
  • Garantiza que todos los microservicios usen las mismas estructuras
  • Facilita la validacion de datos de entrada con decoradores
  • Reduce duplicacion de codigo entre proyectos

Arquitectura

                    +------------------+
                    |  @fiado/type-kit |
                    +--------+---------+
                             |
        +--------------------+--------------------+
        |                    |                    |
        v                    v                    v
+---------------+    +---------------+    +---------------+
| Lambda Card   |    | Lambda Account|    | Lambda Trans  |
| Microservice  |    | Microservice  |    | Microservice  |
+---------------+    +---------------+    +---------------+
        |                    |                    |
        +--------------------+--------------------+
                             |
                             v
                    +------------------+
                    |   API Gateway    |
                    +------------------+

Flujo de Tipos

  • Request: Cliente envia datos -> API Gateway -> Lambda valida con DTOs de Request
  • Procesamiento: Lambda usa Enums y Entities para logica de negocio
  • Response: Lambda retorna datos usando DTOs de Response -> Cliente

Instalacion

npm install @fiado/type-kit

Peer Dependencies

Esta biblioteca no tiene peer dependencies, pero utiliza internamente:

{
  "class-transformer": "^0.5.1",
  "class-validator": "^0.14.2"
}

Dominios Disponibles

La biblioteca esta organizada en 60+ dominios que cubren todas las areas del negocio:

Servicios Core

DominioDescripcionContenido
accountCuentas bancarias y operaciones44 DTOs, 12 Enums
cardTarjetas fisicas y virtuales40 DTOs, 26 Enums
transactionTransacciones y movimientos24 DTOs, 6 Enums
directoryDirectorios de usuarios8 DTOs, 6 Enums
identityVerificacion de identidad (KYC)7 DTOs, 8 Enums
authenticationAutenticacion y sesiones10 DTOs

Servicios de Pago

DominioDescripcionContenido
transactionProcessorProcesamiento de transacciones39 DTOs, 7 Enums
centralPaymentsPagos centralizados14 DTOs/Enums
stpSpeiTransferencias SPEI10 DTOs/Enums
servicePaymentPago de servicios4 DTOs/Enums
collectorCobranza14 DTOs/Enums

Servicios de Usuario

DominioDescripcionContenido
beneficiaryBeneficiarios de transferencias5 DTOs/Enums
bankAccountCuentas bancarias externas10 DTOs/Enums
addressDirecciones24 DTOs/Enums
contactInfoInformacion de contacto9 DTOs/Enums
groupGrupos de usuarios11 DTOs/Enums
roleRoles y permisos9 DTOs/Enums

Servicios de Riesgo

DominioDescripcionContenido
riskProfilePerfiles de riesgo13 DTOs, 10 Enums
fraudPreventionEnginePrevencion de fraude5 DTOs/Enums
blacklistListas negras5 DTOs/Enums

Servicios de Negocio

DominioDescripcionContenido
issuanceBusinessEmision de tarjetas6 DTOs/Enums
pricelistListas de precios9 DTOs/Enums
servicesCatalogo de servicios18 DTOs/Enums
productCatalogCatalogo de productos7 DTOs/Enums
contractContratos3 DTOs/Enums
creditContractContratos de credito3 DTOs/Enums

Servicios de Comunicacion

DominioDescripcionContenido
notificationMessagesMensajes y notificaciones4 DTOs, 2 Enums
notificationWSWebSocket notifications2 DTOs/Enums
helpdeskSoporte al cliente3 DTOs/Enums

Servicios de Infraestructura

DominioDescripcionContenido
headerToken payload de JWTTokenPayload
eventBridgeMensajes de EventBridgeEventBridgeMessageRequest
genericMessageMensajes genericosGenericMessageSourceEnum
apiResponseRespuesta estandar de APIFiadoApiResponse
queueTipos de colas1 DTO

Otros Dominios

DominioDescripcion
activityActividades de usuario
appConfiguracion de aplicacion
authAutorizacion
bbvaRstIntegracion BBVA
cnbvReportes CNBV
cognitoConnectorIntegracion Cognito
countryPaises y regiones
currencyMonedas
deviceDispositivos
exchangeRateTipos de cambio
observationsObservaciones KYC
p2pContactContactos P2P
providerProveedores
sessionActivityActividad de sesion
stpAccountCuentas STP

Uso

Importacion por Dominio (Recomendado)

// Importar desde el dominio especifico
import { 
    AccountCreateRequest, 
    AccountCreateResponse,
    AccountLevelEnum,
    BankAccountTypeEnum 
} from "@fiado/type-kit/bin/account";

import { 
    CardActivateRequest,
    CardResponse,
    CardType,
    CardIssuanceStatus 
} from "@fiado/type-kit/bin/card";

import { 
    TransactionCreateRequest,
    TransactionStatusEnum,
    OperationEnum 
} from "@fiado/type-kit/bin/transaction";

Importacion con Namespace

import { Account, Card, Transaction } from "@fiado/type-kit";

// Usar con namespace
const request: Account.AccountCreateRequest = { ... };
const cardType: Card.CardType = Card.CardType.VIRTUAL;
const status: Transaction.TransactionStatusEnum = Transaction.TransactionStatusEnum.COMPLETED;

Ejemplo: Crear una Cuenta

import { 
    AccountCreateRequest, 
    AccountCreateResponse,
    BankAccountTypeEnum,
    AccountLevelEnum 
} from "@fiado/type-kit/bin/account";

async function createAccount(data: AccountCreateRequest): Promise<AccountCreateResponse> {
    // Validar que el tipo de cuenta sea valido
    if (data.accountType === BankAccountTypeEnum.SAVINGS) {
        // Logica para cuenta de ahorro
    }
    
    // Verificar nivel de cuenta
    if (data.level === AccountLevelEnum.LEVEL_2) {
        // Requiere verificacion adicional
    }
    
    return { accountId: "...", status: "CREATED" };
}

Ejemplo: Procesar Transaccion

import { 
    TransactionCreateRequest,
    TransactionCreateResponse,
    TransactionStatusEnum,
    OperationEnum 
} from "@fiado/type-kit/bin/transaction";

async function processTransaction(
    request: TransactionCreateRequest
): Promise<TransactionCreateResponse> {
    
    if (request.operation === OperationEnum.CREDIT) {
        // Procesar credito
    } else if (request.operation === OperationEnum.DEBIT) {
        // Procesar debito
    }
    
    return {
        transactionId: "...",
        status: TransactionStatusEnum.COMPLETED
    };
}

Ejemplo: Validar Request con class-validator

import { validate } from 'class-validator';
import { plainToClass } from 'class-transformer';
import { CardActivateRequest } from "@fiado/type-kit/bin/card";

async function validateRequest(body: any): Promise<CardActivateRequest> {
    const request = plainToClass(CardActivateRequest, body);
    const errors = await validate(request);
    
    if (errors.length > 0) {
        throw new Error(`Validation failed: ${errors.map(e => e.toString()).join(', ')}`);
    }
    
    return request;
}

Convenciones de Desarrollo

Nomenclatura de DTOs

TipoPatronEjemplo
Request{Entity}{Action}RequestCardActivateRequest, AccountCreateRequest
Response{Entity}{Action}ResponseCardBalanceResponse, AccountCreateResponse
Query{Entity}QueryParamsTransactionQueryParams
Item{Entity}ItemTransactionItem, PocketItem

Nomenclatura de Enums

TipoPatronEjemplo
Status{Entity}StatusEnumCardIssuanceStatus, TransactionStatusEnum
Type{Entity}TypeEnumBankAccountTypeEnum, CardType
Operation{Action}EnumOperationEnum, PocketOperationTypeEnum

Validaciones con class-validator

Requests: DEBEN incluir decoradores de validacion

import { IsNotEmpty, IsString, IsNumber, IsEnum, IsOptional } from 'class-validator';

export class CardActivateRequest {
    @IsNotEmpty()
    @IsString()
    readonly cardId: string;

    @IsNotEmpty()
    @IsString()
    readonly userId: string;

    @IsOptional()
    @IsEnum(ActivationMethod)
    readonly method?: ActivationMethod;
}

Responses: NO deben incluir validaciones

export class CardActivateResponse {
    cardId: string;
    status: CardIssuanceStatus;
    activatedAt: string;
}

Estructura de Modulo

Cada dominio sigue esta estructura:

{domain}/
├── dtos/                    # Data Transfer Objects
│   ├── {Entity}Request.ts
│   ├── {Entity}Response.ts
│   └── Internal/            # DTOs internos (opcional)
├── enums/                   # Enumeraciones
│   ├── {Entity}StatusEnum.ts
│   └── {Entity}TypeEnum.ts
├── entities/                # Entidades base (opcional)
│   └── {Entity}EntityBase.ts
├── constants/               # Constantes (opcional)
│   └── {entity}Constants.ts
└── index.ts                 # Exportaciones del modulo

Estructura de Modulos

Ejemplo: Modulo Account

account/
├── dtos/
│   ├── AccountCreateRequest.ts
│   ├── AccountCreateResponse.ts
│   ├── AccountUpdateRequest.ts
│   ├── GetAccountResponse.ts
│   ├── GetAccountBalanceResponse.ts
│   ├── BankAccountP2pTransferRequest.ts
│   ├── BankAccountP2pTransferResponse.ts
│   ├── SPEITransferCreateRequest.ts
│   ├── SPEITransferResponse.ts
│   └── ... (44 DTOs total)
├── entities/
│   ├── AccountEntityBase.ts
│   └── BankInfo.ts
├── enums/
│   ├── AccountEntityStatusEnum.ts
│   ├── BankAccountTypeEnum.ts
│   ├── AccountLevelEnum.ts
│   ├── SpeiTransferStatusEnum.ts
│   └── ... (12 Enums total)
└── index.ts

Ejemplo: Modulo Card

card/
├── dtos/
│   ├── CardActivateRequest.ts
│   ├── CardApplicationRequest.ts
│   ├── CardUpdateRequest.ts
│   ├── CardResponse.ts
│   ├── CardBalanceResponse.ts
│   ├── CardSensitiveInformationResponse.ts
│   └── Internal/
│       ├── CreateBankAccountCardRequest.ts
│       ├── CreateBankAccountCardResponse.ts
│       ├── ActivateBankAccountCardRequest.ts
│       └── ... (DTOs internos)
├── enums/
│   ├── CardType.ts
│   ├── CardIssuanceStatus.ts
│   ├── Brand.ts
│   ├── VirtualOrPhysical.ts
│   ├── ShippingStatus.ts
│   └── issuance/
│       ├── KycStatus.ts
│       ├── UserStatus.ts
│       └── IssuanceFlow.ts
├── validations/
│   └── cardValidations.ts
└── index.ts

Tipos Especiales

TokenPayload

Interface para el payload del token JWT de Cognito:

import { TokenPayload } from "@fiado/type-kit/bin/header";

interface TokenPayload {
    directoryId: string;           // ID del directorio
    typeOfDirectoryId: TypeOfDirectoryId;
    peopleId: string | null;       // ID de persona
    sub: string;                   // Subject (Cognito user ID)
    app: string;                   // Aplicacion origen
    issuer: string;                // Emisor del token
    scope: string;                 // Scope del token
    phoneNumber?: string | null;   // Telefono
    status: Status | null;         // Estado del usuario
    id: string;                    // ID interno
    profileId?: string | null;     // ID de perfil
    email?: string | null;         // Email
    event_id?: string;             // ID de evento
    sponsorDirectoryId?: string | null; // Sponsor
}

FiadoApiResponse

Interface estandar para respuestas de API:

import FiadoApiResponse from "@fiado/type-kit/bin/apiResponse";

interface FiadoApiResponse<T> {
    data: T;                    // Datos de respuesta
    date: string | null;        // Timestamp
    code: string | null;        // Codigo de respuesta
    msg: string | null;         // Mensaje
    description: string | null; // Descripcion
}

EventBridgeMessageRequest

Clase para mensajes de EventBridge:

import { EventBridgeMessageRequest } from "@fiado/type-kit/bin/eventBridge";

class EventBridgeMessageRequest<T> extends GenericMessageRequest<T> {
    // Hereda propiedades de GenericMessageRequest
    // - source: GenericMessageSourceEnum
    // - payload: T
    // - eventType: string
}

Dependencias

Runtime

DependenciaVersionProposito
class-transformer^0.5.1Transformacion de objetos planos a clases
class-validator^0.14.2Validacion de DTOs con decoradores

Desarrollo

DependenciaVersionProposito
@types/node^20.11.20Tipos de Node.js
typescript^5.3.3Compilador TypeScript

Compilacion y Publicacion

Build

npm run build

Genera archivos .js y .d.ts en el directorio bin/.

Test

npm test

Publicacion

npm version patch|minor|major
npm publish

Estructura del Proyecto

fiado-type-kit/
├── src/                        # Codigo fuente
│   ├── index.ts                # Exportaciones principales
│   ├── account/                # Dominio Account (59 items)
│   ├── card/                   # Dominio Card (69 items)
│   ├── transaction/            # Dominio Transaction (31 items)
│   ├── transactionProcessor/   # Dominio TransactionProcessor (47 items)
│   ├── directory/              # Dominio Directory (15 items)
│   ├── identity/               # Dominio Identity (16 items)
│   ├── riskProfile/            # Dominio RiskProfile (24 items)
│   ├── ... (60+ dominios)
│   └── header/                 # TokenPayload
├── bin/                        # Archivos compilados
├── package.json
├── tsconfig.json
└── README.md

Fiado Inc. | @fiado/type-kit v2.1.40

FAQs

Package last updated on 24 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts