kernel-dns-client/src/index.ts

47 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-02-19 21:20:38 +00:00
import { Client, factory } from "@lumeweb/libkernel-universal";
2023-02-19 21:44:20 +00:00
import {
DNS_RECORD_TYPE,
DNSResult,
ResolverOptions,
} from "@lumeweb/libresolver";
import { createModule, ResolverModule } from "./module.js";
2023-04-09 18:03:57 +00:00
const MODULE = "vAA-phmM1ztqu8zGBKF2nM3b8N_IQGWlB6J_doi2FhqS-A";
2022-07-20 11:11:06 +00:00
2023-02-19 21:20:38 +00:00
export class DnsClient extends Client {
get resolvers(): Promise<Set<ResolverModule>> {
return this.callModuleReturn("getResolvers").then((resolvers: string[]) => {
return new Set(
resolvers.map((resolver: string): ResolverModule => {
return createModule(resolver, this);
})
);
});
2022-08-14 10:54:18 +00:00
}
2023-04-09 18:15:40 +00:00
public async register(): Promise<void> {
return this.callModuleReturn("register");
}
public async registerResolver(module: string): Promise<void> {
const bag = await this.loadBound(module);
const ret = await bag.callModule("register");
return ret[0];
}
public async clear(): Promise<void> {
return this.callModuleReturn("clear");
}
2023-02-19 21:42:03 +00:00
public async resolve(
domain: string,
options: ResolverOptions = { type: DNS_RECORD_TYPE.CONTENT },
bypassCache: boolean = false
2023-02-19 21:44:20 +00:00
): Promise<DNSResult> {
return this.callModuleReturn("resolve", { domain, options, bypassCache });
2023-02-19 21:42:03 +00:00
}
2022-08-18 23:45:31 +00:00
}
2023-02-19 21:20:38 +00:00
export const createClient = factory<DnsClient>(DnsClient, MODULE);
export * from "./module.js";