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:
103
utils/eventHelpers.ts
Normal file
103
utils/eventHelpers.ts
Normal 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;
|
||||
Reference in New Issue
Block a user