libresolver/src/resolverModule.ts

56 lines
1.3 KiB
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-19 19:49:30 +00:00
import type { RpcNetwork } from "@lumeweb/dht-rpc-client";
declare class ResolverRegistry {
2022-08-19 19:49:30 +00:00
private _resolvers;
private _rpcNetwork;
constructor(network?: RpcNetwork);
get resolvers(): Set<ResolverModule>;
get rpcNetwork(): RpcNetwork;
resolve(
domain: string,
options?: ResolverOptions,
bypassCache?: boolean
): Promise<DNSResult>;
register(resolver: ResolverModule): void;
clear(): void;
}
export interface ResolverModuleConstructor {
new (resolver: ResolverRegistry);
}
2022-08-18 14:49:10 +00:00
export interface ResolverModule extends ResolverModuleConstructor {
2022-08-18 14:49:10 +00:00
resolve(
domain: string,
options: ResolverOptions,
bypassCache: boolean
): Promise<DNSResult>;
getSupportedTlds(): string[];
2022-08-18 14:49:10 +00:00
}
2022-08-19 15:53:26 +00:00
// ts-ignore
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;
}
2022-08-19 18:48:35 +00:00
abstract resolve(
2022-08-19 17:42:32 +00:00
domain: string,
2022-08-18 14:49:10 +00:00
options: ResolverOptions,
2022-08-18 18:08:53 +00:00
bypassCache: boolean
2022-08-18 14:49:10 +00:00
): Promise<DNSResult>;
getSupportedTlds(): string[] {
return [];
}
isTldSupported(domain: string): boolean {
return this.getSupportedTlds().includes(getTld(domain));
}
}