UNPKG

@mikkelscheike/email-provider-links

Version:

TypeScript library for email provider detection with 140 providers (259 domains), concurrent DNS resolution, alias normalization, and HTTPS login URL validation for login and password reset flows

86 lines 2.39 kB
/** * Provider Data Schema * * This represents the compressed format for provider data * designed to reduce file size and improve parsing performance. */ /** * Provider interface * Uses compact field names for smaller JSON size */ /** * Provider types: * - public_provider: Regular email providers (Gmail, Yahoo, etc.) * - custom_provider: Business email services (Google Workspace, Microsoft 365) * - proxy_service: Email proxy services (Cloudflare, etc.) */ export type ProviderType = 'public_provider' | 'custom_provider' | 'proxy_service'; export interface Provider { /** Provider ID (short identifier) */ id: string; /** Provider display name */ companyProvider: string; /** Login/webmail URL (or null if not available) */ loginUrl: string | null; /** Email domains (omitted if empty) */ domains?: string[]; /** DNS detection patterns (flattened) */ mx?: string[]; txt?: string[]; /** Provider type */ type: ProviderType; /** Alias rules for username part */ alias?: { dots?: { ignore: boolean; strip: boolean; }; plus?: { ignore: boolean; strip: boolean; }; case?: { ignore: boolean; strip: boolean; }; }; } /** * Providers file structure */ export interface ProvidersData { /** Schema version for future migrations */ version: string; /** Compressed providers array */ providers: Provider[]; /** Metadata */ meta: { count: number; domains: number; generated: string; }; } /** * Common TXT pattern prefixes that can be compressed */ export declare const TXT_PATTERN_COMPRESSION: { readonly 'v=spf1 include:': "spf:"; readonly 'v=spf1 ': "spf1:"; readonly 'google-site-verification=': "gsv:"; readonly 'MS=ms': "ms"; readonly 'zoho-verification=': "zv:"; readonly 'mailgun-verification=': "mv:"; }; /** * Compress TXT patterns by removing common prefixes */ export declare function compressTxtPattern(pattern: string): string; /** * Decompress TXT patterns by restoring prefixes */ export declare function decompressTxtPattern(compressed: string): string; /** * Validation schema for providers */ export declare function validateProvider(provider: Provider): string[]; //# sourceMappingURL=schema.d.ts.map