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
JavaScript
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();
},
};
}