libresolver/src/resolverModule.ts

70 lines
1.7 KiB
TypeScript
Raw Normal View History

2022-08-18 14:49:10 +00:00
import type { DNSResult, ResolverOptions } from "./types.js";
import { getTld, isPromise } from "./util.js";
declare class ResolverRegistry {
2023-02-19 22:47:33 +00:00
get resolvers(): Set<ResolverModule> | Promise<Set<ResolverModule>>;
2022-08-19 19:49:30 +00:00
resolve(
domain: string,
options?: ResolverOptions,
bypassCache?: boolean
): Promise<DNSResult>;
register(resolver: ResolverModule): void;
clear(): void;
}
export interface ResolverModule {
get resolver(): ResolverRegistry;
set resolver(value: ResolverRegistry);
2022-08-18 14:49:10 +00:00
resolve(
domain: string,
options: ResolverOptions,
bypassCache: boolean
): Promise<DNSResult>;
getSupportedTlds(): string[];
getSupportedTlds(): Promise<string[]>;
getSupportedTlds(): any;
2022-08-18 14:49:10 +00:00
}
2022-08-19 15:53:26 +00:00
// ts-ignore
export abstract class AbstractResolverModule {
constructor(resolver?: ResolverRegistry) {
this._resolver = resolver;
}
private _resolver?: ResolverRegistry;
get resolver(): ResolverRegistry {
return this._resolver as ResolverRegistry;
}
2022-08-18 14:49:10 +00:00
set resolver(value: ResolverRegistry) {
this._resolver = value;
2022-08-18 14:49:10 +00:00
}
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[];
getSupportedTlds(): Promise<string[]>;
getSupportedTlds(): any {
2022-08-18 14:49:10 +00:00
return [];
}
2023-02-19 23:18:00 +00:00
isTldSupported(domain: string): Promise<boolean>;
isTldSupported(domain: string): boolean;
isTldSupported(domain: string): any {
2023-02-20 01:02:24 +00:00
let supported = this.getSupportedTlds() as any;
if (isPromise(supported)) {
return (supported as Promise<string[]>).then((supported: string[]) => {
return supported.includes(getTld(domain));
});
}
return (supported as string[]).includes(getTld(domain));
2022-08-18 14:49:10 +00:00
}
}