UNPKG

lotus-sdk

Version:

Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem

40 lines (39 loc) 1.76 kB
export { DHTAdvertiser } from './dht-advertiser.js'; export { DHTDiscoverer } from './dht-discoverer.js'; export { DiscoverySecurityValidator, createSecurityPolicy, musig2Validator, locationValidator, capabilityValidator, } from './security.js'; export { DiscoveryError, DiscoveryErrorType, DEFAULT_DISCOVERY_OPTIONS, DEFAULT_SECURITY_POLICY, } from './types.js'; import { DHTAdvertiser } from './dht-advertiser.js'; import { DHTDiscoverer } from './dht-discoverer.js'; import { DiscoverySecurityValidator, createSecurityPolicy } from './security.js'; export function createAdvertiser(coordinator, options) { const advertiser = new DHTAdvertiser(coordinator, options?.signingKey); return advertiser; } export function createDiscoverer(coordinator, options) { const discoverer = new DHTDiscoverer(coordinator); return discoverer; } export function createSecurityValidator(coordinator, protocol, policyOverrides) { const policy = protocol ? createSecurityPolicy(protocol, policyOverrides) : { ...policyOverrides }; return new DiscoverySecurityValidator(coordinator, policy); } export function createDiscoverySystem(coordinator, protocol, options) { const advertiser = createAdvertiser(coordinator, options); const discoverer = createDiscoverer(coordinator, options); const security = createSecurityValidator(coordinator, protocol, options?.securityPolicy); return { advertiser, discoverer, security, async start() { await Promise.all([advertiser.start(), discoverer.start()]); security.start(); }, async stop() { await Promise.all([advertiser.stop(), discoverer.stop()]); security.stop(); }, }; }