npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@infosel-sdk/news

v1.0.2

Published

Financial news SDK for Infosel platform. Provides comprehensive tools for accessing, filtering, and managing financial news data, including news services, sectors, and detailed news items with advanced filtering capabilities.

Downloads

35

Readme

@infosel-sdk/news

SDK de noticias financieras para la plataforma Infosel. Proporciona herramientas integrales para acceder, filtrar y gestionar datos de noticias financieras, incluyendo servicios de noticias, sectores y elementos de noticias detallados con capacidades de filtrado avanzado.

🚀 Características

  • Recuperación de Noticias: Obtener elementos de noticias con filtrado avanzado y paginación
  • Gestión de Servicios: Acceder a servicios de noticias disponibles y sus descripciones
  • Clasificación por Sectores: Navegar por sectores de noticias para contenido dirigido
  • Noticias Detalladas: Recuperar detalles completos de elementos de noticias incluyendo archivos adjuntos
  • Filtrado Avanzado: Filtrar por rango de fechas, servicios, sectores y consultas personalizadas
  • Múltiples Tipos de Lista: Soporte para noticias trending, más relevantes, últimas y relacionadas
  • Noticias por Sector: Filtrar noticias específicamente por sector económico
  • Noticias del Día: Obtener noticias publicadas en el día actual
  • Noticias Más Leídas: Acceder a las noticias con mayor engagement
  • Metadatos de Respuesta: Información detallada sobre paginación y estado de las consultas

📦 Instalación

npm install @infosel-sdk/news

🔧 Prerrequisitos

Este SDK requiere que el paquete @infosel-sdk/core esté instalado y configurado:

npm install @infosel-sdk/core

🏗️ Configuración

import { InfoselSdkManager } from '@infosel-sdk/core';
import InfoselNews from '@infosel-sdk/news';

// Inicializar el gestor del SDK
const sdkManager = InfoselSdkManager.init({
  mode: 'prod', // o 'qa' para pruebas
  // ... otras opciones de configuración
});

// Inicializar el SDK de Noticias
const newsSDK = InfoselNews.init({ sdkManager });

📚 Referencia de la API

Métodos Principales

1. getServices() - Obtener Servicios de Noticias Disponibles

Recupera todos los servicios de noticias disponibles con sus IDs y descripciones.

const services = await newsSDK.getServices();
console.log(services);
// Salida: [
//   { id: 1, description: "Noticias Financieras" },
//   { id: 2, description: "Actualizaciones de Mercado" },
//   { id: 3, description: "Reportes Económicos" }
// ]

2. getSectors() - Obtener Sectores de Noticias

Recupera todos los sectores de noticias disponibles para categorización.

const sectors = await newsSDK.getSectors();
console.log(sectors);
// Salida: [
//   { id: 1, description: "Tecnología" },
//   { id: 2, description: "Finanzas" },
//   { id: 3, description: "Salud" }
// ]

3. getNews(request: NewsRequest) - Obtener Elementos de Noticias

Recupera elementos de noticias basados en criterios y filtros especificados.

const newsRequest = {
  listType: NewsListType.LATEST_NEWS,
  services: [1, 2], // Filtrar por IDs de servicios específicos
  sectors: [1, 3], // Filtrar por IDs de sectores específicos
  dateRange: {
    start: new Date('2024-01-01'),
    end: new Date('2024-01-31'),
  },
  pagination: {
    page: 1,
    rows: 20,
  },
  filter: {
    type: NewsFilterType.KEYWORDS,
    query: 'bitcoin criptomonedas',
  },
};

const newsItems = await newsSDK.getNews(newsRequest);
console.log(newsItems);

4. getDetail(id: number) - Obtener Detalle de Elemento de Noticia

Recupera información detallada sobre un elemento de noticia específico por ID.

const newsDetail = await newsSDK.getDetail(12345);
console.log(newsDetail);

5. getNewsBySector(sectorId: number, request?: NewsSectorRequest) - Obtener Noticias por Sector

Recupera noticias específicas de un sector económico particular con opciones de filtrado avanzado.

const sectorNews = await newsSDK.getNewsBySector(1, {
  services: [1, 2], // Filtrar por servicios específicos
  rows: 20,
  page: 1,
  symbol: 'AAPL', // Filtrar por símbolo financiero
  startDate: new Date('2024-01-01'),
  endDate: new Date('2024-01-31'),
  newsTypeId: 1, // Tipo específico de noticia
});

console.log(`Noticias del sector: ${sectorNews.data.length}`);
console.log('Metadatos:', sectorNews.metadata);

6. getNewsToday(request?: NewsTodayRequest) - Obtener Noticias del Día

Recupera noticias publicadas en el día actual con múltiples opciones de filtrado.

const todayNews = await newsSDK.getNewsToday({
  services: [1], // Solo noticias financieras
  limit: 50, // Límite de resultados
  offset: 0, // Desplazamiento para paginación
  onlyTop: true, // Solo noticias destacadas
  rows: 25,
  page: 1,
  sourcesId: [1, 2], // Fuentes específicas
  sectors: [1, 3], // Sectores específicos
  symbol: 'TSLA', // Símbolo financiero
  newsTypeId: [1, 2], // Tipos de noticia
});

console.log(`Noticias del día: ${todayNews.data.length}`);
todayNews.data.forEach(news => {
  console.log(`📰 ${news.header} - ${news.date} ${news.time}`);
});

7. getNewsDetails(request?: NewsDetailsRequest) - Obtener Detalles de Noticias

Recupera noticias con información detallada y opciones de búsqueda avanzada.

const detailedNews = await newsSDK.getNewsDetails({
  services: [1, 2],
  rows: 30,
  page: 1,
  limit: 100,
  offset: 0,
  symbol: 'MSFT',
  startDate: new Date('2024-01-01'),
  endDate: new Date('2024-01-31'),
  newsTypeId: 1,
  keyword: 'inteligencia artificial',
});

console.log(`Noticias detalladas encontradas: ${detailedNews.data.length}`);
detailedNews.data.forEach(news => {
  console.log(`📰 ${news.header}`);
  console.log(`🏷️ ${news.tags}`);
  console.log(`🌍 ${news.countries}`);
  console.log(`📄 ${news.body.substring(0, 100)}...`);
});

8. getNewsMostRead(request?: NewsMostReadRequest) - Obtener Noticias Más Leídas

Recupera las noticias con mayor engagement y lectura, perfectas para análisis de tendencias.

const mostReadNews = await newsSDK.getNewsMostRead({
  services: [1], // Servicios específicos
  sourcesId: [1, 2, 3], // Fuentes de noticias
  rows: 50,
  page: 1,
});

console.log(`Noticias más leídas: ${mostReadNews.data.length}`);
mostReadNews.data.forEach((news, index) => {
  console.log(`${index + 1}. 📰 ${news.header}`);
  console.log(`   📅 ${news.date} ${news.time}`);
  console.log(`   🏷️ ${news.tags}`);
  console.log(`   📊 Prioridad: ${news.priority}`);
  console.log(`   📎 Archivos: ${news.numberAttachedFiles}`);
});

🏷️ Tipos de Datos

NewsRequest

Interfaz para configurar búsqueda y filtrado de noticias:

interface NewsRequest {
  listType?: NewsListType; // Tipo de lista de noticias a recuperar
  services?: number[]; // Array de IDs de servicios para filtrar
  sectors?: number[]; // Array de IDs de sectores para filtrar
  dateRange?: {
    // Filtro de rango de fechas
    start: Date;
    end: Date;
  };
  pagination?: {
    // Configuración de paginación
    page: number;
    rows: number;
  };
  filter?: {
    // Filtrado basado en texto
    type: NewsFilterType;
    query: string;
  };
}

NewsSectorRequest

Interfaz para filtrar noticias por sector:

interface NewsSectorRequest {
  services?: number[]; // Servicios específicos
  rows?: number; // Número de filas por página
  page?: number; // Número de página
  symbol?: string; // Símbolo financiero
  startDate?: Date; // Fecha de inicio
  endDate?: Date; // Fecha de fin
  newsTypeId?: number; // ID del tipo de noticia
}

NewsTodayRequest

Interfaz para obtener noticias del día:

interface NewsTodayRequest {
  services?: number[]; // Servicios específicos
  limit?: number; // Límite de resultados
  offset?: number; // Desplazamiento
  onlyTop?: boolean; // Solo noticias destacadas
  rows?: number; // Filas por página
  page?: number; // Número de página
  sourcesId?: number[]; // IDs de fuentes
  sectors?: number[]; // IDs de sectores
  symbol?: string; // Símbolo financiero
  newsTypeId?: number[]; // IDs de tipos de noticia
}

NewsDetailsRequest

Interfaz para obtener noticias con detalles completos:

interface NewsDetailsRequest {
  services?: number[]; // Servicios específicos
  rows?: number; // Filas por página
  page?: number; // Número de página
  limit?: number; // Límite de resultados
  offset?: number; // Desplazamiento
  symbol?: string; // Símbolo financiero
  startDate?: Date; // Fecha de inicio
  endDate?: Date; // Fecha de fin
  newsTypeId?: number; // ID del tipo de noticia
  keyword?: string; // Palabra clave para búsqueda
}

NewsMostReadRequest

Interfaz para obtener noticias más leídas:

interface NewsMostReadRequest {
  services?: number[]; // Servicios específicos
  sourcesId?: number[]; // IDs de fuentes
  rows?: number; // Filas por página
  page?: number; // Número de página
}

NewsItem

Información completa del elemento de noticia:

interface NewsItem {
  id: number; // Identificador único
  serviceId: number; // ID del servicio asociado
  priority: number; // Nivel de prioridad de la noticia
  sectors: NewsSector[]; // Sectores asociados
  date: Date; // Fecha de publicación
  source: string; // Fuente de la noticia
  countries: string[]; // Países relacionados
  tags: string[]; // Etiquetas asociadas
  header: string; // Título de la noticia
  abstract: string; // Resumen de la noticia
  body: string; // Contenido completo de la noticia
  symbols: string[]; // Símbolos financieros relacionados
  image: string; // URL de la imagen destacada
  numberOfAttachedFiles: number; // Cantidad de archivos adjuntos
  files: NewsFile[]; // Archivos adjuntos
}

NewsMetadata

Metadatos de respuesta para paginación y estado:

interface NewsMetadata {
  statuscode: number; // Código de estado de la respuesta
  pagination?: {
    // Información de paginación
    total: number; // Total de registros
    limit: number; // Límite por página
    offset: number; // Desplazamiento actual
  };
  totalRegistros?: number; // Total de registros (alternativo)
}

NewsListType

Enumeración de tipos de lista de noticias disponibles:

enum NewsListType {
  MOST_RELEVANT = 1, // Noticias más relevantes
  MOST_READ = 2, // Artículos más leídos
  RELATED = 3, // Noticias relacionadas
  TRENDING = 4, // Temas trending
  NEWS_BY_INSTRUMENT = 8, // Noticias por instrumento financiero
  LATEST_NEWS = 9, // Últimas noticias
  FAVORITE = 10, // Noticias favoritas/guardadas
}

NewsFilterType

Enumeración de tipos de filtro:

enum NewsFilterType {
  NO_FILTER = 0, // Sin filtro aplicado
  KEYWORDS = 1, // Filtrar por palabras clave
  TAGS = 2, // Filtrar por etiquetas
}

NewsService & NewsSector

Interfaces básicas de entidades:

interface NewsService {
  id: number; // Identificador del servicio
  description: string; // Descripción del servicio
}

interface NewsSector {
  id: number; // Identificador del sector
  description: string; // Descripción del sector
}

NewsFile

Información de archivo adjunto:

interface NewsFile {
  type: NewsFileType; // Tipo de archivo (Archivo, Imagen, o -)
  url: string; // URL de descarga del archivo
  size: number; // Tamaño del archivo en bytes
  format: string; // Formato del archivo
  alt: string; // Texto alternativo
}

type NewsFileType = 'File' | 'Image' | '-';

💡 Ejemplos de Uso

Ejemplo 1: Dashboard de Noticias Financieras

import { NewsListType, NewsFilterType } from '@infosel-sdk/news';

// Obtener últimas noticias financieras
const financialNews = await newsSDK.getNews({
  listType: NewsListType.LATEST_NEWS,
  services: [1], // Servicio de noticias financieras
  pagination: {
    page: 1,
    rows: 10,
  },
});

// Mostrar elementos de noticias
financialNews.forEach(news => {
  console.log(`📰 ${news.header}`);
  console.log(`📅 ${news.date.toLocaleDateString()}`);
  console.log(`🏷️ ${news.tags.join(', ')}`);
  console.log(`📄 ${news.abstract}`);
  console.log('---');
});

Ejemplo 2: Monitoreo de Noticias por Sector

// Obtener noticias del sector tecnológico de la última semana
const techNews = await newsSDK.getNewsBySector(1, {
  startDate: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
  endDate: new Date(),
  rows: 25,
  page: 1,
});

console.log(
  `Se encontraron ${techNews.data.length} elementos de noticias tecnológicas`,
);
console.log('Metadatos de paginación:', techNews.metadata);

Ejemplo 3: Búsqueda Avanzada con Palabras Clave

// Buscar noticias sobre empresas específicas
const companyNews = await newsSDK.getNewsDetails({
  keyword: 'Apple Microsoft Google',
  limit: 50,
  rows: 15,
  page: 1,
});

// Filtrar por símbolos específicos
const relevantNews = companyNews.data.filter(
  news =>
    news.header.toLowerCase().includes('apple') ||
    news.header.toLowerCase().includes('microsoft') ||
    news.header.toLowerCase().includes('google'),
);

console.log(`Noticias relevantes encontradas: ${relevantNews.length}`);

Ejemplo 4: Análisis de Noticias Trending

// Obtener noticias más leídas para análisis de tendencias
const mostReadNews = await newsSDK.getNewsMostRead({
  services: [1, 2], // Servicios financieros y de mercado
  rows: 100,
  page: 1,
});

// Analizar temas trending
const trendingTopics = mostReadNews.data.reduce((acc, news) => {
  const tags = news.tags.split(',').map(tag => tag.trim());
  tags.forEach(tag => {
    acc[tag] = (acc[tag] || 0) + 1;
  });
  return acc;
}, {} as Record<string, number>);

// Ordenar por frecuencia
const sortedTopics = Object.entries(trendingTopics)
  .sort(([, a], [, b]) => b - a)
  .slice(0, 10);

console.log('🔥 Temas Trending Principales:');
sortedTopics.forEach(([topic, count]) => {
  console.log(`${topic}: ${count} menciones`);
});

Ejemplo 5: Noticias del Día con Filtros Avanzados

// Obtener noticias destacadas del día en sectores específicos
const todayHighlights = await newsSDK.getNewsToday({
  onlyTop: true, // Solo noticias destacadas
  sectors: [1, 2, 3], // Tecnología, Finanzas, Salud
  services: [1], // Servicio principal
  limit: 30,
  rows: 15,
  page: 1,
});

console.log(`📰 Noticias destacadas del día: ${todayHighlights.data.length}`);

// Agrupar por sector
const newsBySector = todayHighlights.data.reduce((acc, news) => {
  const sector = news.sectors || 'General';
  if (!acc[sector]) acc[sector] = [];
  acc[sector].push(news);
  return acc;
}, {} as Record<string, typeof todayHighlights.data>);

Object.entries(newsBySector).forEach(([sector, news]) => {
  console.log(`\n🏢 ${sector}: ${news.length} noticias`);
  news.forEach(item => {
    console.log(`  • ${item.header} (${item.date} ${item.time})`);
  });
});

Ejemplo 6: Sistema de Monitoreo de Noticias en Tiempo Real

// Función para monitorear noticias en tiempo real
async function monitorNews() {
  try {
    // Obtener noticias del día cada hora
    const todayNews = await newsSDK.getNewsToday({
      limit: 100,
      rows: 50,
      page: 1,
    });

    // Obtener noticias más leídas
    const mostRead = await newsSDK.getNewsMostRead({
      rows: 25,
      page: 1,
    });

    // Combinar y analizar
    const allNews = [...todayNews.data, ...mostRead.data];

    console.log(`📊 Resumen de Monitoreo:`);
    console.log(`   • Noticias del día: ${todayNews.data.length}`);
    console.log(`   • Noticias más leídas: ${mostRead.data.length}`);
    console.log(`   • Total analizado: ${allNews.length}`);

    // Detectar noticias urgentes (alta prioridad)
    const urgentNews = allNews.filter(news => news.priority >= 8);
    if (urgentNews.length > 0) {
      console.log(`🚨 Noticias urgentes: ${urgentNews.length}`);
      urgentNews.forEach(news => {
        console.log(`   ⚠️ ${news.header} - Prioridad: ${news.priority}`);
      });
    }
  } catch (error) {
    console.error('Error en monitoreo de noticias:', error);
  }
}

// Ejecutar monitoreo
monitorNews();

🔍 Manejo de Errores

Los métodos del SDK devuelven Promesas que pueden rechazarse con varios tipos de errores. Siempre envuelve tus llamadas en bloques try-catch:

try {
  const news = await newsSDK.getNewsToday({
    limit: 50,
    rows: 10,
    page: 1,
  });
  console.log('Noticias recuperadas exitosamente:', news.data.length);
  console.log('Metadatos:', news.metadata);
} catch (error) {
  console.error('Error al recuperar noticias:', error);
  // Manejar tipos de error específicos apropiadamente
}

🔗 Paquetes Relacionados

  • @infosel-sdk/core - Funcionalidad principal del SDK
  • @infosel-sdk/markets - Datos de mercados financieros
  • @infosel-sdk/securities - Información de valores
  • @infosel-sdk/users - Gestión de usuarios

Para más información, visita el Portal de Desarrolladores de Infosel o contacta a nuestro equipo de soporte.