From 2bf62cbd3ed9169f3629185ea609fc434186cbb1 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sun, 19 Feb 2023 20:49:06 -0500 Subject: [PATCH] *add ResolverModule client class and factory --- src/module.ts | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/module.ts diff --git a/src/module.ts b/src/module.ts new file mode 100644 index 0000000..dc71e58 --- /dev/null +++ b/src/module.ts @@ -0,0 +1,52 @@ +import { Client, factory } from "@lumeweb/libkernel-universal"; +import { DnsClient } from "./index.js"; +import { + DNSResult, + resolverError, + ResolverOptions, +} from "@lumeweb/libresolver"; + +export class ResolverModule extends Client { + private domain: string; + + constructor(domain: string, resolver?: DnsClient) { + super(); + this._resolver = resolver; + this.domain = domain; + } + + private _resolver?: DnsClient; + + get resolver(): DnsClient { + return this._resolver as DnsClient; + } + + set resolver(value: DnsClient) { + this._resolver = value; + } + + async resolve( + domain: string, + options: ResolverOptions, + bypassCache: boolean + ): Promise { + try { + return this.callModuleReturn("resolve", { + domain, + options, + bypassCache, + }); + } catch (e) { + return resolverError(e as Error); + } + } + async getSupportedTlds(): Promise { + return this.callModuleReturn("getSupportedTlds"); + } +} + +export const createModule = ( + module: string, + client: DnsClient +): ResolverModule => + factory(ResolverModule, module)(module, client);