44 lines
958 B
TypeScript
44 lines
958 B
TypeScript
import { addHandler, ActiveQuery, handleMessage } from "libkmodule";
|
|
import { register } from "@lumeweb/kernel-dns-client";
|
|
import type { DNSResult, ResolverModule } from "@lumeweb/resolver-common";
|
|
|
|
let resolver: ResolverModule;
|
|
|
|
export function setup(rm: ResolverModule) {
|
|
addHandler("resolve", handleResolve);
|
|
addHandler("register", handleRegister);
|
|
onmessage = handleMessage;
|
|
resolver = rm;
|
|
}
|
|
|
|
async function handleRegister(aq: ActiveQuery) {
|
|
await register();
|
|
aq.respond();
|
|
}
|
|
|
|
async function handleResolve(aq: ActiveQuery) {
|
|
if (!("domain" in aq.callerInput)) {
|
|
aq.reject("domain required");
|
|
return;
|
|
}
|
|
|
|
let ret: DNSResult;
|
|
try {
|
|
ret = await resolver.resolve(
|
|
aq.callerInput.domain,
|
|
aq.callerInput?.options ?? {},
|
|
aq.callerInput?.bypassCache || false
|
|
);
|
|
} catch (e: any) {
|
|
aq.reject(e);
|
|
return;
|
|
}
|
|
|
|
if (ret.error) {
|
|
aq.reject(ret.error as any);
|
|
return;
|
|
}
|
|
|
|
aq.respond(ret);
|
|
}
|