libresolver/src/resolverModule.ts

36 lines
792 B
TypeScript
Raw Normal View History

2022-08-18 14:49:10 +00:00
import type { DNSResult, ResolverOptions } from "./types.js";
import { getTld } from "./util.js";
2022-08-18 17:02:27 +00:00
import ResolverRegistry from "@lumeweb/resolver";
2022-08-18 14:49:10 +00:00
2022-08-18 15:01:07 +00:00
export interface ResolverModule {
2022-08-18 17:02:27 +00:00
constructor(resolver: ResolverRegistry): void;
2022-08-18 14:49:10 +00:00
resolve(
domain: string,
options: ResolverOptions,
bypassCache: boolean
): Promise<DNSResult>;
}
export abstract class AbstractResolverModule {
2022-08-18 17:02:27 +00:00
protected resolver: ResolverRegistry;
2022-08-18 14:49:10 +00:00
2022-08-18 17:02:27 +00:00
constructor(resolver: ResolverRegistry) {
2022-08-18 14:49:10 +00:00
this.resolver = resolver;
}
abstract resolve(
input: string,
options: ResolverOptions,
force: boolean
): Promise<DNSResult>;
getSupportedTlds(): string[] {
return [];
}
isTldSupported(domain: string): boolean {
return this.getSupportedTlds().includes(getTld(domain));
}
}