@types/mdns
Version:
TypeScript definitions for mdns
312 lines (265 loc) • 11 kB
TypeScript
/// <reference types="node" />
declare namespace MDNS {
// --- Error ---
interface DnsSdError extends Error {
errorCode?: number | undefined;
}
// --- Ads ---
interface AdvertisementOptions {
name?: string | undefined;
interfaceIndex?: number | undefined;
networkInterface?: string | undefined;
txtRecord?: any;
host?: any;
domain?: any;
flags?: any;
context?: any;
}
interface AdvertisementCreatable {
new(
serviceType: ServiceType,
port: number,
options?: AdvertisementOptions,
callback?: (error: DnsSdError, service: Service) => void,
): Advertisement;
}
interface Advertisement extends NodeJS.EventEmitter {
start(): void;
stop(): void;
}
// --- Browser ---
interface BrowserOptions {
resolverSequence?: Array<(service: Service, next: () => void) => boolean> | undefined;
interfaceIndex?: number | undefined;
networkInterface?: string | undefined;
domain?: any;
context?: any;
flags?: any;
}
interface Browser extends NodeJS.EventEmitter {
start(): any;
stop(): any;
on(event: string, listener: Function): this;
on(event: "serviceUp", listener: (info: Service) => void): this;
on(event: "serviceDown", listener: (info: Service) => void): this;
}
interface BrowserStatic {
new(serviceType: ServiceType, options?: BrowserOptions): Browser;
defaultResolverSequence: Array<(service: Service, next: () => void) => boolean>;
}
// --- Services ---
interface Service {
addresses: string[];
flags: number;
fullname: string;
host: string;
interfaceIndex: number;
name?: string | undefined;
rawTxtRecord?: Buffer | undefined;
txtRecord?: any;
networkInterface: string;
port: number;
replyDomain: string;
type: ServiceType;
}
interface ServiceType {
new(serviceTypeIdentifier: string): ServiceType;
new(name: string, protocol: string, ...subtypes: string[]): ServiceType;
new(serviceTypeIdentifier: string[]): ServiceType;
new(
serviceTypeIdentifier: { name: string; protocol: string; subtypes?: string[] | undefined },
): ServiceType;
new(serviceType: ServiceType): ServiceType;
fullyQualified: boolean;
name: string;
protocol: string;
subtypes: string[];
toString(): string;
fromString(serviceTypeIdentifier: string): ServiceType;
toArray(): string[];
fromArray(serviceTypeIdentifier: string[]): ServiceType;
fromJSON(
serviceTypeIdentifier: { name: string; protocol: string; subtypes?: string[] | undefined },
): ServiceType;
fromJSON(serviceType: ServiceType): ServiceType;
}
// interface for extending with custom resolvers
interface MDNSResolverSequenceTasks {
}
interface DefaultResolverSequenceTasks extends MDNSResolverSequenceTasks {
DNSServiceResolve(options?: { flags: any }): (service: Service, next: () => void) => boolean;
DNSServiceGetAddrInfo(options?: any): (service: Service, next: () => void) => boolean;
getaddrinfo(options?: any): (service: Service, next: () => void) => boolean;
makeAddressesUnique(): (service: Service, next: () => void) => boolean;
filterAddresses(fn: (address: string, index?: number, addresses?: string[]) => boolean): void;
logService(): void;
}
// --- Statics & Classes ---
var Advertisement: AdvertisementCreatable;
var Browser: BrowserStatic;
var ServiceType: ServiceType;
var rst: DefaultResolverSequenceTasks;
var dns_sd: any;
// static functions
function tcp(name: string, ...subtypes: string[]): ServiceType;
function udp(name: string, ...subtypes: string[]): ServiceType;
function makeServiceType(name: string, protocol: string, ...subtypes: string[]): ServiceType;
function makeServiceType(serviceTypeIdentifier: string): ServiceType;
function makeServiceType(serviceTypeIdentifier: string[]): ServiceType;
function makeServiceType(
serviceTypeIdentifier: { name: string; protocol: string; subtypes?: string[] | undefined },
): ServiceType;
function makeServiceType(serviceType: ServiceType): ServiceType;
function createBrowser(serviceType: ServiceType, options?: BrowserOptions): Browser;
function createAdvertisement(
serviceType: ServiceType,
port: number,
options?: AdvertisementOptions,
callback?: (error: DnsSdError, service: Service) => void,
): Advertisement;
function resolve(
service: Service,
sequence?: Array<(service: Service, next: () => void) => boolean>,
callback?: (error: DnsSdError, service: Service) => void,
): void;
function browseThemAll(options: BrowserOptions): Browser;
function loopbackInterface(): any;
// constants
var isAvahi: boolean;
// -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
// Constants from dns_sd.h (C-Code of Bonjour -> see https://developer.apple.com/library/mac/documentation/Networking/Reference/DNSServiceDiscovery_CRef/Reference/reference.html)
var _DNS_SD_H: number;
var kDNSServiceMaxDomainName: string;
var kDNSServiceMaxServiceName: number;
var kDNSServiceOutputFlags: any;
var kDNSServiceProperty_DaemonVersion: number;
var kDNSServiceClass_IN: number;
var kDNSServiceErr_NoError: number;
var kDNSServiceErr_Unknown: number;
var kDNSServiceErr_NoSuchName: number;
var kDNSServiceErr_NoMemory: number;
var kDNSServiceErr_BadParam: number;
var kDNSServiceErr_BadReference: number;
var kDNSServiceErr_BadState: number;
var kDNSServiceErr_BadFlags: number;
var kDNSServiceErr_Unsupported: number;
var kDNSServiceErr_NotInitialized: number;
var kDNSServiceErr_AlreadyRegistered: number;
var kDNSServiceErr_NameConflict: number;
var kDNSServiceErr_Invalid: number;
var kDNSServiceErr_Firewall: number;
var kDNSServiceErr_Incompatible: number;
var kDNSServiceErr_BadInterfaceIndex: number;
var kDNSServiceErr_Refused: number;
var kDNSServiceErr_NoSuchRecord: number;
var kDNSServiceErr_NoAuth: number;
var kDNSServiceErr_NoSuchKey: number;
var kDNSServiceErr_NATTraversal: number;
var kDNSServiceErr_DoubleNAT: number;
var kDNSServiceErr_BadTime: number;
var kDNSServiceErr_BadSig: number;
var kDNSServiceErr_BadKey: number;
var kDNSServiceErr_Transient: number;
var kDNSServiceErr_ServiceNotRunning: number;
var kDNSServiceErr_NATPortMappingUnsupported: number;
var kDNSServiceErr_NATPortMappingDisabled: number;
var kDNSServiceErr_NoRouter: number;
var kDNSServiceErr_PollingMode: number;
var kDNSServiceErr_Timeout: number;
var kDNSServiceType_A: number;
var kDNSServiceType_NS: number;
var kDNSServiceType_MD: number;
var kDNSServiceType_MF: number;
var kDNSServiceType_CNAME: number;
var kDNSServiceType_SOA: number;
var kDNSServiceType_MB: number;
var kDNSServiceType_MG: number;
var kDNSServiceType_MR: number;
var kDNSServiceType_NULL: number;
var kDNSServiceType_WKS: number;
var kDNSServiceType_PTR: number;
var kDNSServiceType_HINFO: number;
var kDNSServiceType_MINFO: number;
var kDNSServiceType_MX: number;
var kDNSServiceType_TXT: number;
var kDNSServiceType_RP: number;
var kDNSServiceType_AFSDB: number;
var kDNSServiceType_X25: number;
var kDNSServiceType_ISDN: number;
var kDNSServiceType_RT: number;
var kDNSServiceType_NSAP: number;
var kDNSServiceType_NSAP_PTR: number;
var kDNSServiceType_SIG: number;
var kDNSServiceType_KEY: number;
var kDNSServiceType_PX: number;
var kDNSServiceType_GPOS: number;
var kDNSServiceType_AAAA: number;
var kDNSServiceType_LOC: number;
var kDNSServiceType_NXT: number;
var kDNSServiceType_EID: number;
var kDNSServiceType_NIMLOC: number;
var kDNSServiceType_SRV: number;
var kDNSServiceType_ATMA: number;
var kDNSServiceType_NAPTR: number;
var kDNSServiceType_KX: number;
var kDNSServiceType_CERT: number;
var kDNSServiceType_A6: number;
var kDNSServiceType_DNAME: number;
var kDNSServiceType_SINK: number;
var kDNSServiceType_OPT: number;
var kDNSServiceType_APL: number;
var kDNSServiceType_DS: number;
var kDNSServiceType_SSHFP: number;
var kDNSServiceType_IPSECKEY: number;
var kDNSServiceType_RRSIG: number;
var kDNSServiceType_NSEC: number;
var kDNSServiceType_DNSKEY: number;
var kDNSServiceType_DHCID: number;
var kDNSServiceType_NSEC3: number;
var kDNSServiceType_NSEC3PARAM: number;
var kDNSServiceType_HIP: number;
var kDNSServiceType_SPF: number;
var kDNSServiceType_UINFO: number;
var kDNSServiceType_UID: number;
var kDNSServiceType_GID: number;
var kDNSServiceType_UNSPEC: number;
var kDNSServiceType_TKEY: number;
var kDNSServiceType_TSIG: number;
var kDNSServiceType_IXFR: number;
var kDNSServiceType_AXFR: number;
var kDNSServiceType_MAILB: number;
var kDNSServiceType_MAILA: number;
var kDNSServiceType_ANY: number;
var kDNSServiceFlagsMoreComing: number;
var kDNSServiceFlagsAdd: number;
var kDNSServiceFlagsDefault: number;
var kDNSServiceFlagsNoAutoRename: number;
var kDNSServiceFlagsShared: number;
var kDNSServiceFlagsUnique: number;
var kDNSServiceFlagsBrowseDomains: number;
var kDNSServiceFlagsRegistrationDomains: number;
var kDNSServiceFlagsLongLivedQuery: number;
var kDNSServiceFlagsAllowRemoteQuery: number;
var kDNSServiceFlagsForceMulticast: number;
var kDNSServiceFlagsKnownUnique: number;
var kDNSServiceFlagsReturnIntermediates: number;
var kDNSServiceFlagsNonBrowsable: number;
var kDNSServiceFlagsShareConnection: number;
var kDNSServiceFlagsSuppressUnusable: number;
var kDNSServiceFlagsWakeOnResolve: number;
var kDNSServiceFlagsBackgroundTrafficClass: number;
var kDNSServiceFlagsIncludeAWDL: number;
var kDNSServiceFlagsValidate: number;
var kDNSServiceFlagsSecure: number;
var kDNSServiceFlagsInsecure: number;
var kDNSServiceFlagsBogus: number;
var kDNSServiceFlagsIndeterminate: number;
var kDNSServiceFlagsUnicastResponse: number;
var kDNSServiceFlagsValidateOptional: number;
var kDNSServiceFlagsWakeOnlyService: number;
var kDNSServiceProtocol_IPv4: number;
var kDNSServiceProtocol_IPv6: number;
var kDNSServiceProtocol_UDP: number;
var kDNSServiceProtocol_TCP: number;
}
export = MDNS;