0.2.0 • Published 8 months ago

@federa/federation v0.2.0

Weekly downloads
-
License
AGPL-3.0
Repository
-
Last release
8 months ago

@federa/federation

Este paquete proporciona utilidades para protocolos de federación como ActivityPub y WebFinger, permitiendo la interoperabilidad entre diferentes plataformas de redes sociales.

Características

  • Utilidades ActivityPub: Funciones para crear y manipular objetos ActivityPub.
  • Utilidades WebFinger: Funciones para descubrir recursos mediante WebFinger.
  • Utilidades de firma: Funciones para firmar y verificar peticiones HTTP.
  • Adaptadores ActivityPub: Implementaciones de la interfaz ActivityPubAdapter.

Instalación

npm install @federa/federation

Uso

import { 
  createNote, 
  createCreateActivity, 
  WebFinger, 
  sendSignedRequest,
  ActivityPubAdapter,
  DefaultActivityPubAdapter
} from '@federa/federation';

// Crear una nota ActivityPub
const note = createNote(
  'Hello world!',
  'https://example.com/users/user1',
  ['https://www.w3.org/ns/activitystreams#Public'],
  []
);

// Crear una actividad de creación
const activity = createCreateActivity(
  note,
  'https://example.com/users/user1',
  ['https://www.w3.org/ns/activitystreams#Public'],
  []
);

// Enviar una petición firmada
const response = await sendSignedRequest({
  method: 'POST',
  url: 'https://example.com/inbox',
  body: activity,
  keyId: 'https://example.com/users/user1#main-key',
  privateKey: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
});

// Usar WebFinger para descubrir un recurso
const webfinger = new WebFinger();
const actorUrl = await webfinger.findActorUrl('user@example.com');

// Usar un adaptador ActivityPub
const adapter = new DefaultActivityPubAdapter(
  'https://example.com/users/user1#main-key',
  '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
);

const actor = await adapter.getActor('https://example.com/users/user2');

Estructura

federa-federation
├── interfaces
│   └── ActivityPubAdapter.ts  # Interfaz para adaptadores ActivityPub
├── adapters
│   └── DefaultActivityPubAdapter.ts  # Implementación por defecto
├── activitypub.ts  # Utilidades para ActivityPub
├── webfinger.ts    # Utilidades para WebFinger
├── signature.ts    # Utilidades para firmar peticiones
└── http.ts         # Utilidades HTTP específicas para federación

Relación con otros paquetes

  • @federa/shared: Utiliza los tipos y utilidades comunes.
  • @federa/integration: Puede utilizar este paquete para implementar adaptadores para plataformas ActivityPub.

Licencia

AGPL-3.0

0.2.0

8 months ago

0.1.4

8 months ago

0.1.3

11 months ago

0.1.2

11 months ago

0.1.1

11 months ago

0.1.0

11 months ago