declare module emailAddresses { function parseOneAddress(input: string | Options): ParsedMailbox | ParsedGroup; function parseAddressList(input: string | Options): (ParsedMailbox | ParsedGroup)[]; function parseFrom(input: string | Options): (ParsedMailbox | ParsedGroup)[]; function parseSender(input: string | Options): ParsedMailbox | ParsedGroup; function parseReplyTo(input: string | Options): (ParsedMailbox | ParsedGroup)[]; interface ParsedMailbox { node?: ASTNode; parts: { name: ASTNode; address: ASTNode; local: ASTNode; domain: ASTNode; comments: ASTNode[]; }; type: string; name: string; address: string; local: string; domain: string; } interface ParsedGroup { node?: ASTNode; parts: { name: ASTNode; }; type: string; name: string; addresses: ParsedMailbox[]; } interface ASTNode { name: string; tokens: string; semantic: string; children: ASTNode[]; } interface Options { input: string; oneResult?: boolean; partial?: boolean; rejectTLD?: boolean; rfc6532?: boolean; simple?: boolean; startAt?: string; strict?: boolean; } interface ParsedResult { ast: ASTNode; addresses: (ParsedMailbox | ParsedGroup)[]; } } declare function emailAddresses(opts: emailAddresses.Options): emailAddresses.ParsedResult; declare module "email-addresses" { export = emailAddresses; } /* Example usage: // Run this file with: // tsc test.ts && NODE_PATH="../emailaddresses/lib" node test.js /// import emailAddresses = require('email-addresses'); function isParsedMailbox(mailboxOrGroup: emailAddresses.ParsedMailbox | emailAddresses.ParsedGroup): mailboxOrGroup is emailAddresses.ParsedMailbox { return mailboxOrGroup.type === 'mailbox'; } var testEmail : string = "TestName (a comment) "; console.log(testEmail); var parsed = emailAddresses.parseOneAddress(testEmail); console.log(parsed); var a : string = parsed.parts.name.children[0].name; console.log(a); if (isParsedMailbox(parsed)) { var comment : string = parsed.parts.comments[0].tokens; console.log(comment); } else { console.error('error, should be a ParsedMailbox'); } // var emailList : string = "TestName , TestName2 "; console.log(emailList); var parsedList = emailAddresses.parseAddressList(emailList); console.log(parsedList); var b : string = parsedList[1].parts.name.children[0].semantic; console.log(b); // var parsedByModuleFxn = emailAddresses({ input: emailList, rfc6532: true }); console.log(parsedByModuleFxn.addresses[0].name); */