Initial commit: libp2p-native-bridge package

- Extracted libp2p component from main app
- Created modular package structure with interfaces and implementations
- Added dependency injection for NativeModules
- Configured for IOR loading from Gitea
- Added comprehensive README and documentation
This commit is contained in:
Chris Daßler
2025-08-29 11:18:37 +02:00
commit 6f1d6ec37b
14 changed files with 2060 additions and 0 deletions

103
utils/eventHelpers.ts Normal file
View File

@@ -0,0 +1,103 @@
/**
* Helper functions for standardized event emission across platforms
* Import this file in native modules to ensure consistent event structures
*/
import type {
ConnectionStatusEvent,
ErrorEvent,
LogEvent,
PeerDiscoveredEvent,
PeerInfoEvent,
PeerLostEvent,
} from './types';
/**
* Creates a standardized connection status event payload
*/
export function createConnectionStatusEvent(
peerId: string,
status: string,
direction?: string,
multiaddr?: string,
error?: string,
reason?: string,
): ConnectionStatusEvent {
return {
peerId,
status: status as ConnectionStatus,
direction: direction as ConnectionDirection,
multiaddr,
error,
reason,
};
}
/**
* Creates a standardized peer discovered event payload
*/
export function createPeerDiscoveredEvent(
peerId: string,
addresses: string[],
): PeerDiscoveredEvent {
return {
peerId,
addresses,
multiaddrs: addresses, // Use same array for both for compatibility
};
}
/**
* Creates a standardized peer lost event payload
*/
export function createPeerLostEvent(peerId: string): PeerLostEvent {
return {
peerId,
};
}
/**
* Creates a standardized log event payload
*/
export function createLogEvent(
message: string,
level: 'debug' | 'info' | 'warn' | 'error' = 'info',
): LogEvent {
return {
message,
level,
};
}
/**
* Creates a standardized error event payload
*/
export function createErrorEvent(message: string, code?: string): ErrorEvent {
return {
message,
code,
};
}
/**
* Creates a standardized peer info event payload
*/
export function createPeerInfoEvent(peerId: string, multiaddrs: string[]): PeerInfoEvent {
return {
peerId,
multiaddrs,
};
}
/**
* Event names used across platforms
*/
export const EVENT_NAMES = {
PEER_INFO: 'onPeerInfo',
PEER_DISCOVERED: 'onPeerDiscovered',
PEER_LOST: 'onPeerLost',
CONNECTION_STATUS: 'onConnectionStatus',
INCOMING_CONNECTION: 'onIncomingConnection',
LOG: 'onLog',
ERROR: 'onError',
} as const;