Skip to content

Commit 45c127d

Browse files
tw-ydyd-tw
andauthored
🤖 Merge PR DefinitelyTyped#74624 [nodemailer] Update type definitions to v8 by @tw-yd
Co-authored-by: yd-tw <yd960528@gmail.com>
1 parent 32e85e2 commit 45c127d

File tree

38 files changed

+4340
-1
lines changed

38 files changed

+4340
-1
lines changed

types/nodemailer/.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
!**/*.d.mts
55
!**/*.d.*.ts
66
/v6/
7+
/v7/

types/nodemailer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "@types/nodemailer",
4-
"version": "7.0.9999",
4+
"version": "8.0.9999",
55
"projects": [
66
"https://github.com/nodemailer/nodemailer",
77
"https://nodemailer.com"

types/nodemailer/v7/.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts

types/nodemailer/v7/index.d.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/// <reference types="node" />
2+
3+
import JSONTransport = require("./lib/json-transport");
4+
import Mail = require("./lib/mailer");
5+
import MailMessage = require("./lib/mailer/mail-message");
6+
import SendmailTransport = require("./lib/sendmail-transport");
7+
import SESTransport = require("./lib/ses-transport");
8+
import SMTPPool = require("./lib/smtp-pool");
9+
import SMTPTransport = require("./lib/smtp-transport");
10+
import StreamTransport = require("./lib/stream-transport");
11+
12+
export type SendMailOptions = Mail.Options;
13+
14+
export type Transporter<T = any, D extends TransportOptions = TransportOptions> = Mail<T, D>;
15+
16+
export type SentMessageInfo = any;
17+
18+
export interface Transport<T = any, D extends TransportOptions = TransportOptions> {
19+
mailer?: Transporter<T, D> | undefined;
20+
21+
name: string;
22+
version: string;
23+
24+
send(mail: MailMessage<T>, callback: (err: Error | null, info: T) => void): void;
25+
26+
verify?(callback: (err: Error | null, success: true) => void): void;
27+
verify?(): Promise<true>;
28+
29+
close?(): void;
30+
}
31+
32+
export interface TransportOptions {
33+
component?: string | undefined;
34+
}
35+
36+
export interface TestAccount {
37+
user: string;
38+
pass: string;
39+
smtp: { host: string; port: number; secure: boolean };
40+
imap: { host: string; port: number; secure: boolean };
41+
pop3: { host: string; port: number; secure: boolean };
42+
web: string;
43+
}
44+
45+
export function createTransport(
46+
transport: SMTPPool | SMTPPool.Options,
47+
defaults?: SMTPPool.Options,
48+
): Transporter<SMTPPool.SentMessageInfo, SMTPPool.Options>;
49+
export function createTransport(
50+
transport: SendmailTransport | SendmailTransport.Options,
51+
defaults?: SendmailTransport.Options,
52+
): Transporter<SendmailTransport.SentMessageInfo, SendmailTransport.Options>;
53+
export function createTransport(
54+
transport: StreamTransport | StreamTransport.Options,
55+
defaults?: StreamTransport.Options,
56+
): Transporter<StreamTransport.SentMessageInfo, StreamTransport.Options>;
57+
export function createTransport(
58+
transport: JSONTransport | JSONTransport.Options,
59+
defaults?: JSONTransport.Options,
60+
): Transporter<JSONTransport.SentMessageInfo, JSONTransport.Options>;
61+
export function createTransport(
62+
transport: SESTransport | SESTransport.Options,
63+
defaults?: SESTransport.Options,
64+
): Transporter<SESTransport.SentMessageInfo, SESTransport.Options>;
65+
export function createTransport(
66+
transport?: SMTPTransport | SMTPTransport.Options | string,
67+
defaults?: SMTPTransport.Options,
68+
): Transporter<SMTPTransport.SentMessageInfo, SMTPTransport.Options>;
69+
// eslint-disable-next-line @definitelytyped/no-unnecessary-generics
70+
export function createTransport<T>(
71+
transport: Transport<T> | TransportOptions,
72+
defaults?: TransportOptions,
73+
): Transporter<SMTPTransport.SentMessageInfo, SMTPTransport.Options>;
74+
75+
export function createTestAccount(
76+
apiUrl: string,
77+
callback: (err: Error | null, testAccount: TestAccount) => void,
78+
): void;
79+
export function createTestAccount(callback: (err: Error | null, testAccount: TestAccount) => void): void;
80+
export function createTestAccount(apiUrl?: string): Promise<TestAccount>;
81+
82+
export function getTestMessageUrl(info: SESTransport.SentMessageInfo | SMTPTransport.SentMessageInfo): string | false;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
declare namespace addressparser {
2+
interface Address {
3+
name: string;
4+
address: string;
5+
}
6+
7+
interface Group {
8+
name: string;
9+
group: Address[];
10+
}
11+
12+
type AddressOrGroup = Address | Group;
13+
}
14+
15+
/**
16+
* Parses structured e-mail addresses from an address field
17+
*
18+
* Example:
19+
*
20+
* 'Name <address@domain>'
21+
*
22+
* will be converted to
23+
*
24+
* [{name: 'Name', address: 'address@domain'}]
25+
*
26+
* @return An array of address objects
27+
*/
28+
declare function addressparser(address: string, options: { flatten: true }): addressparser.Address[];
29+
declare function addressparser(address: string, options?: { flatten: false }): addressparser.AddressOrGroup[];
30+
31+
export = addressparser;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/// <reference types="node" />
2+
3+
import { Transform, TransformOptions } from "stream";
4+
5+
/** Encodes a Buffer into a base64 encoded string */
6+
export function encode(buffer: Buffer | string): string;
7+
8+
/** Adds soft line breaks to a base64 string */
9+
export function wrap(str: string, lineLength?: number): string;
10+
11+
export interface EncoderOptions extends TransformOptions {
12+
lineLength?: number | false | undefined;
13+
}
14+
15+
export class Encoder extends Transform {
16+
options: EncoderOptions;
17+
18+
inputBytes: number;
19+
outputBytes: number;
20+
21+
constructor(options?: EncoderOptions);
22+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/// <reference types="node" />
2+
3+
import { PassThrough, Readable } from "stream";
4+
5+
declare namespace DKIM {
6+
interface OptionalOptions {
7+
/** optional location for cached messages. If not set then caching is not used. */
8+
cacheDir?: string | false | undefined;
9+
/** optional size in bytes, if message is larger than this treshold it gets cached to disk (assuming cacheDir is set and writable). Defaults to 131072 (128 kB). */
10+
cacheTreshold?: number | undefined;
11+
/** optional algorithm for the body hash, defaults to ‘sha256’ */
12+
hashAlgo?: string | undefined;
13+
/** an optional colon separated list of header keys to sign (eg. message-id:date:from:to...') */
14+
headerFieldNames?: string | undefined;
15+
/** optional colon separated list of header keys not to sign. This is useful if you want to sign all the relevant keys but your provider changes some values, ie Message-ID and Date. In this case you should use 'message-id:date' to prevent signing these values. */
16+
skipFields?: string | undefined;
17+
}
18+
19+
interface SingleKeyOptions extends OptionalOptions {
20+
/** is the domain name to use in the signature */
21+
domainName: string;
22+
/** is the DKIM key selector */
23+
keySelector: string;
24+
/** is the private key for the selector in PEM format */
25+
privateKey: string | { key: string; passphrase: string };
26+
}
27+
28+
interface MultipleKeysOptions extends OptionalOptions {
29+
/** is an optional array of key objects (domainName, keySelector, privateKey) if you want to add more than one signature to the message. If this value is set then the default key values are ignored */
30+
keys: SingleKeyOptions[];
31+
}
32+
33+
type Options = SingleKeyOptions | MultipleKeysOptions;
34+
}
35+
36+
declare class DKIM {
37+
options: DKIM.Options;
38+
keys: DKIM.SingleKeyOptions[];
39+
40+
constructor(options?: DKIM.Options);
41+
42+
sign(input: string | Buffer | Readable, extraOptions?: DKIM.Options): PassThrough;
43+
}
44+
45+
export = DKIM;
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/// <reference types="node" />
2+
3+
import { Transform } from "stream";
4+
5+
declare namespace MessageParser {
6+
interface Header {
7+
key: string;
8+
line: string;
9+
}
10+
}
11+
12+
/**
13+
* MessageParser instance is a transform stream that separates message headers
14+
* from the rest of the body. Headers are emitted with the 'headers' event. Message
15+
* body is passed on as the resulting stream.
16+
*/
17+
declare class MessageParser extends Transform {
18+
addListener(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
19+
addListener(event: "close", listener: () => void): this;
20+
addListener(event: "data", listener: (chunk: any) => void): this;
21+
addListener(event: "end", listener: () => void): this;
22+
addListener(event: "readable", listener: () => void): this;
23+
addListener(event: "error", listener: (err: Error) => void): this;
24+
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
25+
26+
emit(event: "headers", headers: MessageParser.Header[]): boolean;
27+
emit(event: "close"): boolean;
28+
emit(event: "data", chunk: any): boolean;
29+
emit(event: "end"): boolean;
30+
emit(event: "readable"): boolean;
31+
emit(event: "error", err: Error): boolean;
32+
emit(event: string | symbol, ...args: any[]): boolean;
33+
34+
on(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
35+
on(event: "close", listener: () => void): this;
36+
on(event: "data", listener: (chunk: any) => void): this;
37+
on(event: "end", listener: () => void): this;
38+
on(event: "readable", listener: () => void): this;
39+
on(event: "error", listener: (err: Error) => void): this;
40+
on(event: string | symbol, listener: (...args: any[]) => void): this;
41+
42+
once(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
43+
once(event: "close", listener: () => void): this;
44+
once(event: "data", listener: (chunk: any) => void): this;
45+
once(event: "end", listener: () => void): this;
46+
once(event: "readable", listener: () => void): this;
47+
once(event: "error", listener: (err: Error) => void): this;
48+
once(event: string | symbol, listener: (...args: any[]) => void): this;
49+
50+
prependListener(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
51+
prependListener(event: "close", listener: () => void): this;
52+
prependListener(event: "data", listener: (chunk: any) => void): this;
53+
prependListener(event: "end", listener: () => void): this;
54+
prependListener(event: "readable", listener: () => void): this;
55+
prependListener(event: "error", listener: (err: Error) => void): this;
56+
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
57+
58+
prependOnceListener(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
59+
prependOnceListener(event: "close", listener: () => void): this;
60+
prependOnceListener(event: "data", listener: (chunk: any) => void): this;
61+
prependOnceListener(event: "end", listener: () => void): this;
62+
prependOnceListener(event: "readable", listener: () => void): this;
63+
prependOnceListener(event: "error", listener: (err: Error) => void): this;
64+
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
65+
66+
removeListener(event: "headers", listener: (headers: MessageParser.Header[]) => void): this;
67+
removeListener(event: "close", listener: () => void): this;
68+
removeListener(event: "data", listener: (chunk: any) => void): this;
69+
removeListener(event: "end", listener: () => void): this;
70+
removeListener(event: "readable", listener: () => void): this;
71+
removeListener(event: "error", listener: (err: Error) => void): this;
72+
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
73+
}
74+
75+
export = MessageParser;
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/// <reference types="node" />
2+
3+
import { Transform, TransformOptions } from "stream";
4+
5+
declare namespace RelaxedBody {
6+
interface Options extends TransformOptions {
7+
hashAlgo?: string;
8+
debug?: boolean;
9+
}
10+
}
11+
12+
/**
13+
* Streams through a message body and calculates relaxed body hash
14+
*/
15+
declare class RelaxedBody extends Transform {
16+
constructor(options?: RelaxedBody.Options);
17+
18+
addListener(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
19+
addListener(event: "close", listener: () => void): this;
20+
addListener(event: "data", listener: (chunk: any) => void): this;
21+
addListener(event: "end", listener: () => void): this;
22+
addListener(event: "readable", listener: () => void): this;
23+
addListener(event: "error", listener: (err: Error) => void): this;
24+
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
25+
26+
emit(event: "hash", digest: Buffer, debugBody: Buffer | false): boolean;
27+
emit(event: "close"): boolean;
28+
emit(event: "data", chunk: any): boolean;
29+
emit(event: "end"): boolean;
30+
emit(event: "readable"): boolean;
31+
emit(event: "error", err: Error): boolean;
32+
emit(event: string | symbol, ...args: any[]): boolean;
33+
34+
on(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
35+
on(event: "close", listener: () => void): this;
36+
on(event: "data", listener: (chunk: any) => void): this;
37+
on(event: "end", listener: () => void): this;
38+
on(event: "readable", listener: () => void): this;
39+
on(event: "error", listener: (err: Error) => void): this;
40+
on(event: string | symbol, listener: (...args: any[]) => void): this;
41+
42+
once(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
43+
once(event: "close", listener: () => void): this;
44+
once(event: "data", listener: (chunk: any) => void): this;
45+
once(event: "end", listener: () => void): this;
46+
once(event: "readable", listener: () => void): this;
47+
once(event: "error", listener: (err: Error) => void): this;
48+
once(event: string | symbol, listener: (...args: any[]) => void): this;
49+
50+
prependListener(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
51+
prependListener(event: "close", listener: () => void): this;
52+
prependListener(event: "data", listener: (chunk: any) => void): this;
53+
prependListener(event: "end", listener: () => void): this;
54+
prependListener(event: "readable", listener: () => void): this;
55+
prependListener(event: "error", listener: (err: Error) => void): this;
56+
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
57+
58+
prependOnceListener(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
59+
prependOnceListener(event: "close", listener: () => void): this;
60+
prependOnceListener(event: "data", listener: (chunk: any) => void): this;
61+
prependOnceListener(event: "end", listener: () => void): this;
62+
prependOnceListener(event: "readable", listener: () => void): this;
63+
prependOnceListener(event: "error", listener: (err: Error) => void): this;
64+
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
65+
66+
removeListener(event: "hash", listener: (digest: Buffer, debugBody: Buffer | false) => void): this;
67+
removeListener(event: "close", listener: () => void): this;
68+
removeListener(event: "data", listener: (chunk: any) => void): this;
69+
removeListener(event: "end", listener: () => void): this;
70+
removeListener(event: "readable", listener: () => void): this;
71+
removeListener(event: "error", listener: (err: Error) => void): this;
72+
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
73+
}
74+
75+
export = RelaxedBody;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import DKIM = require(".");
2+
import MessageParser = require("./message-parser");
3+
4+
/** Returns DKIM signature header line */
5+
declare function relaxedHeaders(
6+
headers: MessageParser.Header[],
7+
hashAlgo: string,
8+
bodyHash: string,
9+
options?: DKIM.SingleKeyOptions,
10+
): string;
11+
12+
declare namespace relaxedHeaders {
13+
function relaxedHeaders(
14+
headers: MessageParser.Header[],
15+
hashAlgo: string,
16+
bodyHash: string,
17+
options?: DKIM.SingleKeyOptions,
18+
): string;
19+
}
20+
21+
export = relaxedHeaders;

0 commit comments

Comments
 (0)