@federa/federation
v0.6.5
Published
Federation utilities for Federa
Readme
@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/federationUso
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('[email protected]');
// 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ónRelació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
