
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
SSignal es una clase reactiva que extiende EventTarget para la gestión de estados. Proporciona una API simple para suscribirse a cambios de valor en cualquier tipo de dato, incluyendo ahora la capacidad de observar mutaciones en objetos Map.
| Propiedad | Tipo | Descripción |
|---|---|---|
constructor(value: T) | Método | Crea una nueva instancia de SSignal. Puede ser inicializada con cualquier valor, incluyendo objetos Map, los cuales serán observados de forma reactiva. |
value | Propiedad (getter/setter) | Propiedad (getter/setter) Lee o escribe el valor actual del Signal. Si el valor es diferente al actual, dispara el evento change. El setter también acepta una función de actualización (prev: T) => T. |
subscribe(callback: (value: T) => void) | Método | Registra una función callback que será llamada cada vez que el valor del Signal cambie. Retorna: Una función de desuscripción que, al ser llamada, elimina el listener. |
dispatchEvent('change', ...) | Método | Emite el evento 'change' a todos los suscriptores. Es invocado automáticamente por el setter y por las mutaciones en un Map observado. |
addEventListener('change', ...) | Método | Extiende el método nativo de EventTarget para agregar un listener al evento 'change'. |
removeEventListener('change', ...) | Método | Extiende el método nativo de EventTarget para eliminar un listener. |
La clase SSignal emite los siguientes eventos:
| Evento | Tipo | Descripción |
|---|---|---|
change | CustomEvent<T> | Disparado cuando el valor de Signal cambia. El detalle del evento (event.detail) contiene el nuevo valor. |
<!DOCTYPE html>
<head>
<head>
<script src="https://unpkg.com/ssignal@latest/lib/ssignal.umd.js" />
...
npm install ssignal
import SSignal from 'ssignal';
const signal = new SSignal(0);
const SSignal = require('ssignal');
const signal = new SSignal(0);
value, subscribe y unsubscribe.'change' cuando el valor cambia, permitiendo una gestión de estado eficiente.Map: Observa de forma automática las mutaciones en objetos Map, disparando eventos sin necesidad de intervención manual.MapAhora SSignal puede manejar de forma reactiva instancias de Map. Cuando inicializas SSignal con un objeto Map, cualquier modificación realizada a través de los métodos nativos set(), delete() o clear() disparará un evento de change, notificando a todos los suscriptores.
Al inicializar SSignal con una instancia de Map, la clase envuelve el objeto en un Proxy. Este Proxy intercepta las llamadas a los métodos que modifican el Map y emite un evento de change de forma automática. También se asegura de que los métodos de lectura (get(), has(), entries(), etc.) funcionen correctamente.
Map// SSignal.ts
import SSignal from './SSignal';
// 1. Crear una instancia de SSignal con un Map
const signalMap = new SSignal(new Map<string, number>());
// 2. Suscribirse a los cambios
const unsubscribe = signalMap.subscribe((value) => {
console.log('El Map ha cambiado:', value);
console.log('El tamaño del Map es:', value.size); // Acceder a propiedades como 'size' funciona
});
// 3. Modificar el Map y observar los eventos
signalMap.value.set('a', 1);
// Salida:
// El Map ha cambiado: Map(1) { 'a' => 1 }
// El tamaño del Map es: 1
signalMap.value.set('b', 2);
// Salida:
// El Map ha cambiado: Map(2) { 'a' => 1, 'b' => 2 }
// El tamaño del Map es: 2
signalMap.value.delete('a');
// Salida:
// El Map ha cambiado: Map(1) { 'b' => 2 }
// El tamaño del Map es: 1
// 4. Desuscribirse para dejar de recibir notificaciones
unsubscribe();
import SSignal from './SSignal';
const signalNumber = new SSignal<number>(0);
signalNumber.subscribe((value) => {
console.log('El número ha cambiado a:', value);
});
signalNumber.value = 10;
// Salida: El número ha cambiado a: 10
// También soporta la actualización con una función
signalNumber.value = (prev) => prev + 5;
// Salida: El número ha cambiado a: 15
npm run build: Compila TypeScript a la carpeta lib.npm test: Ejecuta los tests.npm run test:coverage: Ejecuta los tests con cobertura.
MIT
Repositorio: https://github.com/ElJijuna/ssignal
FAQs
Signal Pattern
We found that ssignal demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.