email-addresses.d.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. declare module emailAddresses {
  2. function parseOneAddress(input: string | Options): ParsedMailbox | ParsedGroup;
  3. function parseAddressList(input: string | Options): (ParsedMailbox | ParsedGroup)[];
  4. function parseFrom(input: string | Options): (ParsedMailbox | ParsedGroup)[];
  5. function parseSender(input: string | Options): ParsedMailbox | ParsedGroup;
  6. function parseReplyTo(input: string | Options): (ParsedMailbox | ParsedGroup)[];
  7. interface ParsedMailbox {
  8. node?: ASTNode;
  9. parts: {
  10. name: ASTNode;
  11. address: ASTNode;
  12. local: ASTNode;
  13. domain: ASTNode;
  14. comments: ASTNode[];
  15. };
  16. type: string;
  17. name: string;
  18. address: string;
  19. local: string;
  20. domain: string;
  21. }
  22. interface ParsedGroup {
  23. node?: ASTNode;
  24. parts: {
  25. name: ASTNode;
  26. };
  27. type: string;
  28. name: string;
  29. addresses: ParsedMailbox[];
  30. }
  31. interface ASTNode {
  32. name: string;
  33. tokens: string;
  34. semantic: string;
  35. children: ASTNode[];
  36. }
  37. interface Options {
  38. input: string;
  39. oneResult?: boolean;
  40. partial?: boolean;
  41. rejectTLD?: boolean;
  42. rfc6532?: boolean;
  43. simple?: boolean;
  44. startAt?: string;
  45. strict?: boolean;
  46. }
  47. interface ParsedResult {
  48. ast: ASTNode;
  49. addresses: (ParsedMailbox | ParsedGroup)[];
  50. }
  51. }
  52. declare function emailAddresses(opts: emailAddresses.Options): emailAddresses.ParsedResult;
  53. declare module "email-addresses" {
  54. export = emailAddresses;
  55. }
  56. /* Example usage:
  57. // Run this file with:
  58. // tsc test.ts && NODE_PATH="../emailaddresses/lib" node test.js
  59. /// <reference path="../emailaddresses/lib/email-addresses.d.ts"/>
  60. import emailAddresses = require('email-addresses');
  61. function isParsedMailbox(mailboxOrGroup: emailAddresses.ParsedMailbox | emailAddresses.ParsedGroup): mailboxOrGroup is emailAddresses.ParsedMailbox {
  62. return mailboxOrGroup.type === 'mailbox';
  63. }
  64. var testEmail : string = "TestName (a comment) <test@example.com>";
  65. console.log(testEmail);
  66. var parsed = emailAddresses.parseOneAddress(testEmail);
  67. console.log(parsed);
  68. var a : string = parsed.parts.name.children[0].name;
  69. console.log(a);
  70. if (isParsedMailbox(parsed)) {
  71. var comment : string = parsed.parts.comments[0].tokens;
  72. console.log(comment);
  73. } else {
  74. console.error('error, should be a ParsedMailbox');
  75. }
  76. //
  77. var emailList : string = "TestName <test@example.com>, TestName2 <test2@example.com>";
  78. console.log(emailList);
  79. var parsedList = emailAddresses.parseAddressList(emailList);
  80. console.log(parsedList);
  81. var b : string = parsedList[1].parts.name.children[0].semantic;
  82. console.log(b);
  83. //
  84. var parsedByModuleFxn = emailAddresses({ input: emailList, rfc6532: true });
  85. console.log(parsedByModuleFxn.addresses[0].name);
  86. */