@fiado/type-kit

中文文档
3.692.0发布于 2026/11/14ISCTypeScriptCommonJS零依赖近 30 天下载 3.2万
原始使用文档
文档目录43 节
  1. Biblioteca de DTOs, Enums y Tipos Compartidos para el Ecosi…
  2. Tabla de Contenidos
  3. Descripcion General
  4. Proposito
  5. Arquitectura
  6. Flujo de Tipos
  7. Instalacion
  8. Peer Dependencies
  9. Dominios Disponibles
  10. Servicios Core
  11. Servicios de Pago
  12. Servicios de Usuario
  13. Servicios de Riesgo
  14. Servicios de Negocio
  15. Servicios de Comunicacion
  16. Servicios de Infraestructura
  17. Otros Dominios
  18. Uso
  19. Importacion por Dominio (Recomendado)
  20. Importacion con Namespace
  21. Ejemplo: Crear una Cuenta
  22. Ejemplo: Procesar Transaccion
  23. Ejemplo: Validar Request con class-validator
  24. Convenciones de Desarrollo
  25. Nomenclatura de DTOs
  26. Nomenclatura de Enums
  27. Validaciones con class-validator
  28. Estructura de Modulo
  29. Estructura de Modulos
  30. Ejemplo: Modulo Account
  31. Ejemplo: Modulo Card
  32. Tipos Especiales
  33. TokenPayload
  34. FiadoApiResponse
  35. EventBridgeMessageRequest
  36. Dependencias
  37. Runtime
  38. Desarrollo
  39. Compilacion y Publicacion
  40. Build
  41. Test
  42. Publicacion
  43. Estructura del Proyecto

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

  1. Request: Cliente envia datos -> API Gateway -> Lambda valida con DTOs de Request
  2. Procesamiento: Lambda usa Enums y Entities para logica de negocio
  3. 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

版本与发布记录

@fiado/type-kit 共发布 1,603 个版本,首次发布于 2024/02/26;过去 12 个月发布了 810 个版本。

版本发布日期距今
3.692.0latest2026/11/14今天
3.691.02026/11/14今天
3.690.02026/11/14今天
3.689.02026/11/14今天
3.688.02026/11/131 天前
3.687.02026/11/131 天前

关于 @fiado/type-kit 的常见问题

如何安装 @fiado/type-kit?

在项目目录运行 npm install @fiado/type-kit,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:class-validator(^0.14.2)、reflect-metadata(^0.2.2)、class-transformer(^0.5.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fiado/type-kit 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fiado/type-kit 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@fiado/type-kit 可以商用吗?

@fiado/type-kit 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fiado/type-kit 的下载量有多少?

根据 npm 官方下载统计,@fiado/type-kit 在 2026/10/15 – 2026/11/13 这 30 天内被下载 31,600 次,日均约 1,053 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fiado/type-kit 还在维护吗?

最新版本 3.692.0 发布于 2026/11/14(今天);至今共发布 1603 个版本,其中过去 12 个月发布了 810 个;首次发布于 2024/02/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。