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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sentry-pkg/pkg

v1.6.3

Published

<p align="center"> <a href="http://nestjs.com/" target="blank"><img src="https://res.cloudinary.com/dtp6k3i4c/image/upload/v1749608674/sentry_slogan-removebg-preview_dx4h3m.png" width="400" alt="Nest Logo" /></a> </p>

Downloads

12

Readme

Un Paquete de autenticación basado en RSA para Javascript

Build Status License: GPL v3 Deps

Installacion de paquete

$ npm i @sentry-pkg/pkg

Modo de uso

El paquete debe ser inicializado antes de su uso para generar el par de claves (pública y privada) utilizando el algoritmo RSA. Utiliza el siguiente comando:

$ npx @sentry-pkg/pkg --init

Parametros de inicialización

  • --force: Inicialización forzada, para generar o reemplazar el par de claves (pública y privada) utilizando el algoritmo RSA

Integración

En NestJS, la integración con sentry-pkg/pkg se facilita a través de un módulo dedicado, como el SentryModule que estás importando. Este módulo encapsula la lógica necesaria para inicializar el paquete y hacer que sus funcionalidades estén disponibles en toda tu aplicación o sistema.

SentryModule.forRoot()

El método forRoot() es una convención común en NestJS para configurar módulos dinámicos. Permite que el módulo sentry-pkg/pkg se configure con opciones específicas en el momento en que se importa en el módulo raíz del sistema

import { SentryModule } from "@sentry-pkg/pkg";

@Module({
  imports: [
    SentryModule.forRoot({
      expiresIn: "1m",
      databaseOptions: {
        user: "postgres",
        host: "localhost",
        database: "business",
        password: "postgres",
        port: 5432,
      },
    }),
  ],
})
export class AppModule {}

Los parámetros son opcionales

import { SentryModule } from "@sentry-pkg/pkg";

@Module({
  imports: [SentryModule.forRoot()],
})
export class AppModule {}

Opciones de Configuración SentryOptions

El método estático forRoot acepta un objeto SentryOptions opcional, que te permite personalizar el módulo según tus necesidades.

| Opción | Tipo | Valor por defecto | Opciones | | ----------------- | ----------------- | ---------------------------- | ------------------------------------------------------------------------------------------ | | expiresIn | string number | 1m (un minuto) | 1s, 1m, 5h, 30d | | databaseOptions | DatabaseOptions | La data se guarda en memoria | Credenciales para la conexión a una base de datos PostgreSQL |

interface SentryOptions {
  expiresIn?: string | number;
  databaseOptions?: DatabaseOptions;
}

expiresIn?: string | number

  • Tipo: string | number
  • Valor por defecto: 1m (un minuto)

Esta opción define el tiempo de duración para el token interno utilizado por el módulo. Este token es usado para la autenticación, la validez de alguna sesión, o la duración de ciertos datos transitorios que maneja el módulo. Si no se especifica, el token tendrá una duración predeterminada de un minuto.

Puedes expresar la duración como:

  • Un número (en milisegundos).
  • Una cadena de texto con unidades (por ejemplo: 1s, 1m, 5h, 30d).

databaseOptions?: DatabaseOptions

  • Tipo: DatabaseOptions
  • Valor por defecto: La data se guarda en memoria si no se proporciona esta opción.

Esta opción permite configurar las credenciales para la conexión a una base de datos PostgreSQL. El módulo utilizará esta configuración para la persistencia de datos, lo que significa que la información relevante (usuario) se almacenará en la base de datos en lugar de solo en la memoria.

Si databaseOptions no se proporciona, el módulo operará en modo "solo en memoria". Esto es útil para entornos de desarrollo, pruebas o situaciones donde la persistencia de datos no es crítica o se gestiona externamente.

interface DatabaseOptions {
  user: string; // El nombre de usuario de la base de datos PostgreSQL.
  host: string; // La dirección del host de la base de datos (ej. 'localhost').
  database: string; // El nombre de la base de datos a la que conectarse.
  password: string; // La contraseña del usuario de la base de datos.
  port: number; // El puerto de conexión de la base de datos PostgreSQL (ej. 5432).
}

Ejemplo de Uso

import { SentryModule } from "@sentry-pkg/pkg";

@Module({
  imports: [
    SentryModule.forRoot({
      expiresIn: "5m", // El token durará 5 minutos
      databaseOptions: {
        user: "myuser",
        host: "localhost",
        database: "myapp",
        password: "mypassword",
        port: 5432,
      },
    }),
  ],
  // ... otros controladores y proveedores
})
export class AppModule {}

En este ejemplo, el SentryModule se inicializa para que sus tokens internos duren 5 minutos y toda la data persistente se guarde en la base de datos PostgreSQL especificada. Si databaseOptions se omitiera, la data se manejaría en memoria.

Guarda de Autenticación RSA: RsaAuthGuard

RsaAuthGuard es un guard de autenticación dinámica diseñada para ser utilizada en varios controladores y validar la autenticidad del usuario a través de firmas digitales RSA.

import { Controller, Get, UseGuards } from "@nestjs/common";
import { AppService } from "./app.service";
import { RsaAuthGuard } from "@sentry-pkg/pkg";

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @UseGuards(RsaAuthGuard)
  getHello(): string {
    return this.appService.getHello();
  }
}

Endpoints del paquetes

Este controlador maneja las operaciones relacionadas con la autenticación de usuarios, incluyendo registro, inicio de sesión, refresco de tokens y obtención de la información del usuario autenticado.

Registro de Usuario

| Registro | Descripción | | -------------------------- | --------------------------------------------------------------------------------------------------------- | | 1. Registro de Usuario | Permite a un nuevo usuario registrarse en el sistema. | | Endpoint | POST /auth/signup | | Descripción | Crea una nueva cuenta de usuario con la información proporcionada. | | Cuerpo de la Petición | Tipo: application/json Esquema: { "email": "string", "password": "string", "username": "string" } |

Inicio de Sesión de Usuario

| Inicio de Sesión | Descripción | | ---------------------------------- | ----------------------------------------------------------------------------------------------------- | | 2. Inicio de Sesión de Usuario | Permite a un usuario existente iniciar sesión y obtener un token de autenticación. | | Endpoint | POST /auth/login | | Descripción | Autentica a un usuario utilizando sus credenciales y emite un token de acceso y un token de refresco. | | Protección | Requiere un proceso de autenticación previo para validar las credenciales. | | Cuerpo de la Petición | Tipo: application/json Esquema: { "email": "string", "password": "string" } | | Cuerpo de la Respuesta | Esquema: { "access_token": "string", "refresh_token": "string" } |

Refrescar Tokens de Acceso

| Refrescar Tokens | Descripción | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | 3. Refrescar Tokens de Acceso | Permite obtener un nuevo token de acceso utilizando un token de actualización válido. | | Endpoint | POST /auth/refresh | | Descripción | Intercambia un token caducado por un nuevo token de acceso. Mantiene el token de actualización hasta que expire. | | Protección | Requiere un bearer token refresh token. | | Cuerpo de la Petición | Ninguno. | | Cuerpo de la Respuesta | Esquema: { "access_token": "string" } |

Obtener Información del Usuario Autenticado

| Obtener Información del Usuario | Descripción | | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | 4. Obtener Información del Usuario Autenticado | Permite a un usuario autenticado obtener su propia información de perfil. | | Endpoint | GET /auth/me | | Descripción | Retorna los detalles del perfil del usuario actualmente autenticado. | | Protección | Requiere bearer token, un token de acceso válido en el encabezado Authorization. | | Parámetros de la Petición | Ninguno. | | Cuerpo de la Respuesta | Esquema: { "id": "string", "username": "string", "email": "string", "createdAt": "timestamp", "updatedAt": "timestamp" } |

Manejo de errores

AllExceptionsFilter es una clase especializada (un filtro de excepciones) proporcionada por @sentry-pkg/pkg que se encarga de capturar todas las excepciones no manejadas que ocurren durante el procesamiento de una petición HTTP en el sistema.

import { AllExceptionsFilter } from "@sentry-pkg/pkg";

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  app.useGlobalPipes(new ValidationPipe());
  app.useGlobalFilters(new AllExceptionsFilter());

  await app.listen(3000);
}
bootstrap();