@impruthvi/nodemail 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -78
- package/dist/core/MailFacade.d.ts +49 -5
- package/dist/core/MailFacade.d.ts.map +1 -1
- package/dist/core/MailFacade.js +286 -4
- package/dist/core/MailFacade.js.map +1 -1
- package/dist/core/MailManager.d.ts +13 -1
- package/dist/core/MailManager.d.ts.map +1 -1
- package/dist/core/MailManager.js +64 -0
- package/dist/core/MailManager.js.map +1 -1
- package/dist/core/Mailable.d.ts +1 -0
- package/dist/core/Mailable.d.ts.map +1 -1
- package/dist/core/Mailable.js +4 -0
- package/dist/core/Mailable.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/queue/QueueManager.d.ts +21 -0
- package/dist/queue/QueueManager.d.ts.map +1 -0
- package/dist/queue/QueueManager.js +131 -0
- package/dist/queue/QueueManager.js.map +1 -0
- package/dist/queue/drivers/BullDriver.d.ts +16 -0
- package/dist/queue/drivers/BullDriver.d.ts.map +1 -0
- package/dist/queue/drivers/BullDriver.js +137 -0
- package/dist/queue/drivers/BullDriver.js.map +1 -0
- package/dist/queue/drivers/BullMQDriver.d.ts +18 -0
- package/dist/queue/drivers/BullMQDriver.d.ts.map +1 -0
- package/dist/queue/drivers/BullMQDriver.js +150 -0
- package/dist/queue/drivers/BullMQDriver.js.map +1 -0
- package/dist/queue/index.d.ts +4 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +10 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/testing/AssertableMessage.d.ts +40 -0
- package/dist/testing/AssertableMessage.d.ts.map +1 -0
- package/dist/testing/AssertableMessage.js +158 -0
- package/dist/testing/AssertableMessage.js.map +1 -0
- package/dist/testing/MailFake.d.ts +34 -0
- package/dist/testing/MailFake.d.ts.map +1 -0
- package/dist/testing/MailFake.js +161 -0
- package/dist/testing/MailFake.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +8 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/types/index.d.ts.map +1 -1
- package/examples/queue-example.ts +313 -0
- package/examples/testing-example.ts +303 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QueueConfig, QueueDriver, QueuedMailJob, QueueJobResult, MailResponse } from '../../types';
|
|
2
|
+
export declare class BullMQDriver implements QueueDriver {
|
|
3
|
+
private queues;
|
|
4
|
+
private workers;
|
|
5
|
+
private config;
|
|
6
|
+
private Queue;
|
|
7
|
+
private Worker;
|
|
8
|
+
constructor(config: QueueConfig);
|
|
9
|
+
private loadBullMQ;
|
|
10
|
+
private getQueue;
|
|
11
|
+
private getConnectionOptions;
|
|
12
|
+
add(job: QueuedMailJob, queueName?: string): Promise<QueueJobResult>;
|
|
13
|
+
addDelayed(job: QueuedMailJob, delaySeconds: number, queueName?: string): Promise<QueueJobResult>;
|
|
14
|
+
addScheduled(job: QueuedMailJob, date: Date, queueName?: string): Promise<QueueJobResult>;
|
|
15
|
+
process(queueName: string, handler: (job: QueuedMailJob) => Promise<MailResponse>): void;
|
|
16
|
+
close(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=BullMQDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BullMQDriver.d.ts","sourceRoot":"","sources":["../../../src/queue/drivers/BullMQDriver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAOrB,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,MAAM,CAA+C;gBAEjD,MAAM,EAAE,WAAW;YAOjB,UAAU;YAiBV,QAAQ;IA6BtB,OAAO,CAAC,oBAAoB;IAkBtB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BpE,UAAU,CACd,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;IA6BpB,YAAY,CAChB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;IAY1B,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,GACrD,IAAI;IA4CD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BullMQDriver = void 0;
|
|
4
|
+
class BullMQDriver {
|
|
5
|
+
queues = new Map();
|
|
6
|
+
workers = new Map();
|
|
7
|
+
config;
|
|
8
|
+
Queue = null;
|
|
9
|
+
Worker = null;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
async loadBullMQ() {
|
|
14
|
+
if (this.Queue && this.Worker)
|
|
15
|
+
return;
|
|
16
|
+
try {
|
|
17
|
+
const bullmq = await import('bullmq');
|
|
18
|
+
this.Queue = bullmq.Queue;
|
|
19
|
+
this.Worker = bullmq.Worker;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new Error('BullMQ is not installed. Please install it with: npm install bullmq ioredis');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async getQueue(name) {
|
|
26
|
+
await this.loadBullMQ();
|
|
27
|
+
const queueName = `${this.config.prefix}:${name}`;
|
|
28
|
+
let queue = this.queues.get(queueName);
|
|
29
|
+
if (!queue) {
|
|
30
|
+
const connectionOptions = this.getConnectionOptions();
|
|
31
|
+
queue = new this.Queue(queueName, {
|
|
32
|
+
connection: connectionOptions,
|
|
33
|
+
defaultJobOptions: {
|
|
34
|
+
attempts: this.config.retries || 3,
|
|
35
|
+
backoff: {
|
|
36
|
+
type: this.config.backoff?.type || 'exponential',
|
|
37
|
+
delay: this.config.backoff?.delay || 1000,
|
|
38
|
+
},
|
|
39
|
+
removeOnComplete: true,
|
|
40
|
+
removeOnFail: false,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
this.queues.set(queueName, queue);
|
|
44
|
+
}
|
|
45
|
+
return queue;
|
|
46
|
+
}
|
|
47
|
+
getConnectionOptions() {
|
|
48
|
+
const conn = this.config.connection || {};
|
|
49
|
+
if (conn.url) {
|
|
50
|
+
return { url: conn.url };
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
host: conn.host || 'localhost',
|
|
54
|
+
port: conn.port || 6379,
|
|
55
|
+
password: conn.password,
|
|
56
|
+
db: conn.db || 0,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async add(job, queueName) {
|
|
60
|
+
const name = queueName || this.config.defaultQueue || 'mail';
|
|
61
|
+
const queue = await this.getQueue(name);
|
|
62
|
+
try {
|
|
63
|
+
const bullJob = await queue.add('send-mail', job, {
|
|
64
|
+
jobId: job.id,
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
jobId: bullJob.id || job.id,
|
|
69
|
+
queue: name,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return {
|
|
74
|
+
success: false,
|
|
75
|
+
jobId: job.id,
|
|
76
|
+
queue: name,
|
|
77
|
+
error: error instanceof Error ? error.message : 'Failed to add job to queue',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async addDelayed(job, delaySeconds, queueName) {
|
|
82
|
+
const name = queueName || this.config.defaultQueue || 'mail';
|
|
83
|
+
const queue = await this.getQueue(name);
|
|
84
|
+
try {
|
|
85
|
+
const bullJob = await queue.add('send-mail', job, {
|
|
86
|
+
jobId: job.id,
|
|
87
|
+
delay: delaySeconds * 1000,
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
success: true,
|
|
91
|
+
jobId: bullJob.id || job.id,
|
|
92
|
+
queue: name,
|
|
93
|
+
scheduledAt: new Date(Date.now() + delaySeconds * 1000),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
jobId: job.id,
|
|
100
|
+
queue: name,
|
|
101
|
+
error: error instanceof Error ? error.message : 'Failed to add delayed job to queue',
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async addScheduled(job, date, queueName) {
|
|
106
|
+
const delayMs = date.getTime() - Date.now();
|
|
107
|
+
if (delayMs < 0) {
|
|
108
|
+
return this.add(job, queueName);
|
|
109
|
+
}
|
|
110
|
+
return this.addDelayed(job, Math.floor(delayMs / 1000), queueName);
|
|
111
|
+
}
|
|
112
|
+
process(queueName, handler) {
|
|
113
|
+
void (async () => {
|
|
114
|
+
await this.loadBullMQ();
|
|
115
|
+
const fullQueueName = `${this.config.prefix}:${queueName}`;
|
|
116
|
+
const connectionOptions = this.getConnectionOptions();
|
|
117
|
+
const worker = new this.Worker(fullQueueName, async (bullJob) => {
|
|
118
|
+
const mailJob = bullJob.data;
|
|
119
|
+
mailJob.attempts = (bullJob.attemptsMade || 0) + 1;
|
|
120
|
+
const result = await handler(mailJob);
|
|
121
|
+
if (!result.success) {
|
|
122
|
+
throw new Error(result.error || 'Failed to send email');
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}, {
|
|
126
|
+
connection: connectionOptions,
|
|
127
|
+
concurrency: 5,
|
|
128
|
+
});
|
|
129
|
+
worker.on('completed', (job) => {
|
|
130
|
+
console.warn(`[Queue] Job ${String(job.id)} completed`);
|
|
131
|
+
});
|
|
132
|
+
worker.on('failed', (job, error) => {
|
|
133
|
+
console.error(`[Queue] Job ${String(job?.id)} failed:`, error.message);
|
|
134
|
+
});
|
|
135
|
+
this.workers.set(fullQueueName, worker);
|
|
136
|
+
})();
|
|
137
|
+
}
|
|
138
|
+
async close() {
|
|
139
|
+
for (const worker of this.workers.values()) {
|
|
140
|
+
await worker.close();
|
|
141
|
+
}
|
|
142
|
+
this.workers.clear();
|
|
143
|
+
for (const queue of this.queues.values()) {
|
|
144
|
+
await queue.close();
|
|
145
|
+
}
|
|
146
|
+
this.queues.clear();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.BullMQDriver = BullMQDriver;
|
|
150
|
+
//# sourceMappingURL=BullMQDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BullMQDriver.js","sourceRoot":"","sources":["../../../src/queue/drivers/BullMQDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BullDriver = exports.BullMQDriver = exports.QueueManager = void 0;
|
|
4
|
+
var QueueManager_1 = require("./QueueManager");
|
|
5
|
+
Object.defineProperty(exports, "QueueManager", { enumerable: true, get: function () { return QueueManager_1.QueueManager; } });
|
|
6
|
+
var BullMQDriver_1 = require("./drivers/BullMQDriver");
|
|
7
|
+
Object.defineProperty(exports, "BullMQDriver", { enumerable: true, get: function () { return BullMQDriver_1.BullMQDriver; } });
|
|
8
|
+
var BullDriver_1 = require("./drivers/BullDriver");
|
|
9
|
+
Object.defineProperty(exports, "BullDriver", { enumerable: true, get: function () { return BullDriver_1.BullDriver; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":";;;AAIA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { MailOptions, Attachment } from '../types';
|
|
2
|
+
import type { Mailable } from '../core/Mailable';
|
|
3
|
+
export declare class AssertableMessage {
|
|
4
|
+
private readonly options;
|
|
5
|
+
private readonly mailable?;
|
|
6
|
+
constructor(options: MailOptions, mailable?: Mailable | undefined);
|
|
7
|
+
getOptions(): MailOptions;
|
|
8
|
+
getMailable(): Mailable | undefined;
|
|
9
|
+
hasTo(email: string): boolean;
|
|
10
|
+
hasCc(email: string): boolean;
|
|
11
|
+
hasBcc(email: string): boolean;
|
|
12
|
+
hasFrom(email: string): boolean;
|
|
13
|
+
hasSubject(subject: string): boolean;
|
|
14
|
+
subjectContains(text: string): boolean;
|
|
15
|
+
hasReplyTo(email: string): boolean;
|
|
16
|
+
hasHtml(): boolean;
|
|
17
|
+
htmlContains(text: string): boolean;
|
|
18
|
+
hasText(): boolean;
|
|
19
|
+
textContains(text: string): boolean;
|
|
20
|
+
hasAttachments(): boolean;
|
|
21
|
+
hasAttachment(filename: string): boolean;
|
|
22
|
+
getAttachments(): Attachment[];
|
|
23
|
+
hasHeader(name: string, value?: string): boolean;
|
|
24
|
+
getHeader(name: string): string | undefined;
|
|
25
|
+
hasTemplate(template: string): boolean;
|
|
26
|
+
hasData(key: string, value?: unknown): boolean;
|
|
27
|
+
getData(key: string): unknown;
|
|
28
|
+
getAllData(): Record<string, unknown> | undefined;
|
|
29
|
+
getTo(): string[];
|
|
30
|
+
getCc(): string[];
|
|
31
|
+
getBcc(): string[];
|
|
32
|
+
getSubject(): string;
|
|
33
|
+
getFrom(): string | undefined;
|
|
34
|
+
getHtml(): string | undefined;
|
|
35
|
+
getText(): string | undefined;
|
|
36
|
+
getTemplate(): string | undefined;
|
|
37
|
+
private hasRecipient;
|
|
38
|
+
private normalizeRecipients;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=AssertableMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssertableMessage.d.ts","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAMtC,UAAU,IAAI,WAAW;IAOzB,WAAW,IAAI,QAAQ,GAAG,SAAS;IAOnC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO7B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW/B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOpC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWlC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,cAAc,IAAI,OAAO;IAOzB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUxC,cAAc,IAAI,UAAU,EAAE;IAO9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAa9C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAO7B,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAOjD,KAAK,IAAI,MAAM,EAAE;IAOjB,KAAK,IAAI,MAAM,EAAE;IAQjB,MAAM,IAAI,MAAM,EAAE;IAQlB,UAAU,IAAI,MAAM;IAOpB,OAAO,IAAI,MAAM,GAAG,SAAS;IAS7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,WAAW,IAAI,MAAM,GAAG,SAAS;IAOjC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,mBAAmB;CAW5B"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssertableMessage = void 0;
|
|
4
|
+
class AssertableMessage {
|
|
5
|
+
options;
|
|
6
|
+
mailable;
|
|
7
|
+
constructor(options, mailable) {
|
|
8
|
+
this.options = options;
|
|
9
|
+
this.mailable = mailable;
|
|
10
|
+
}
|
|
11
|
+
getOptions() {
|
|
12
|
+
return this.options;
|
|
13
|
+
}
|
|
14
|
+
getMailable() {
|
|
15
|
+
return this.mailable;
|
|
16
|
+
}
|
|
17
|
+
hasTo(email) {
|
|
18
|
+
return this.hasRecipient(this.options.to, email);
|
|
19
|
+
}
|
|
20
|
+
hasCc(email) {
|
|
21
|
+
if (!this.options.cc)
|
|
22
|
+
return false;
|
|
23
|
+
return this.hasRecipient(this.options.cc, email);
|
|
24
|
+
}
|
|
25
|
+
hasBcc(email) {
|
|
26
|
+
if (!this.options.bcc)
|
|
27
|
+
return false;
|
|
28
|
+
return this.hasRecipient(this.options.bcc, email);
|
|
29
|
+
}
|
|
30
|
+
hasFrom(email) {
|
|
31
|
+
if (!this.options.from)
|
|
32
|
+
return false;
|
|
33
|
+
if (typeof this.options.from === 'string') {
|
|
34
|
+
return this.options.from.toLowerCase() === email.toLowerCase();
|
|
35
|
+
}
|
|
36
|
+
return this.options.from.address.toLowerCase() === email.toLowerCase();
|
|
37
|
+
}
|
|
38
|
+
hasSubject(subject) {
|
|
39
|
+
return this.options.subject === subject;
|
|
40
|
+
}
|
|
41
|
+
subjectContains(text) {
|
|
42
|
+
return this.options.subject.toLowerCase().includes(text.toLowerCase());
|
|
43
|
+
}
|
|
44
|
+
hasReplyTo(email) {
|
|
45
|
+
if (!this.options.replyTo)
|
|
46
|
+
return false;
|
|
47
|
+
if (typeof this.options.replyTo === 'string') {
|
|
48
|
+
return this.options.replyTo.toLowerCase() === email.toLowerCase();
|
|
49
|
+
}
|
|
50
|
+
return this.options.replyTo.address.toLowerCase() === email.toLowerCase();
|
|
51
|
+
}
|
|
52
|
+
hasHtml() {
|
|
53
|
+
return !!this.options.html;
|
|
54
|
+
}
|
|
55
|
+
htmlContains(text) {
|
|
56
|
+
if (!this.options.html)
|
|
57
|
+
return false;
|
|
58
|
+
return this.options.html.includes(text);
|
|
59
|
+
}
|
|
60
|
+
hasText() {
|
|
61
|
+
return !!this.options.text;
|
|
62
|
+
}
|
|
63
|
+
textContains(text) {
|
|
64
|
+
if (!this.options.text)
|
|
65
|
+
return false;
|
|
66
|
+
return this.options.text.includes(text);
|
|
67
|
+
}
|
|
68
|
+
hasAttachments() {
|
|
69
|
+
return !!this.options.attachments && this.options.attachments.length > 0;
|
|
70
|
+
}
|
|
71
|
+
hasAttachment(filename) {
|
|
72
|
+
if (!this.options.attachments)
|
|
73
|
+
return false;
|
|
74
|
+
return this.options.attachments.some((a) => a.filename.toLowerCase() === filename.toLowerCase());
|
|
75
|
+
}
|
|
76
|
+
getAttachments() {
|
|
77
|
+
return this.options.attachments || [];
|
|
78
|
+
}
|
|
79
|
+
hasHeader(name, value) {
|
|
80
|
+
if (!this.options.headers)
|
|
81
|
+
return false;
|
|
82
|
+
const headerValue = this.options.headers[name];
|
|
83
|
+
if (headerValue === undefined)
|
|
84
|
+
return false;
|
|
85
|
+
if (value !== undefined) {
|
|
86
|
+
return headerValue === value;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
getHeader(name) {
|
|
91
|
+
return this.options.headers?.[name];
|
|
92
|
+
}
|
|
93
|
+
hasTemplate(template) {
|
|
94
|
+
return this.options.template === template;
|
|
95
|
+
}
|
|
96
|
+
hasData(key, value) {
|
|
97
|
+
if (!this.options.data)
|
|
98
|
+
return false;
|
|
99
|
+
if (value !== undefined) {
|
|
100
|
+
return this.options.data[key] === value;
|
|
101
|
+
}
|
|
102
|
+
return key in this.options.data;
|
|
103
|
+
}
|
|
104
|
+
getData(key) {
|
|
105
|
+
return this.options.data?.[key];
|
|
106
|
+
}
|
|
107
|
+
getAllData() {
|
|
108
|
+
return this.options.data;
|
|
109
|
+
}
|
|
110
|
+
getTo() {
|
|
111
|
+
return this.normalizeRecipients(this.options.to);
|
|
112
|
+
}
|
|
113
|
+
getCc() {
|
|
114
|
+
if (!this.options.cc)
|
|
115
|
+
return [];
|
|
116
|
+
return this.normalizeRecipients(this.options.cc);
|
|
117
|
+
}
|
|
118
|
+
getBcc() {
|
|
119
|
+
if (!this.options.bcc)
|
|
120
|
+
return [];
|
|
121
|
+
return this.normalizeRecipients(this.options.bcc);
|
|
122
|
+
}
|
|
123
|
+
getSubject() {
|
|
124
|
+
return this.options.subject;
|
|
125
|
+
}
|
|
126
|
+
getFrom() {
|
|
127
|
+
if (!this.options.from)
|
|
128
|
+
return undefined;
|
|
129
|
+
if (typeof this.options.from === 'string')
|
|
130
|
+
return this.options.from;
|
|
131
|
+
return this.options.from.address;
|
|
132
|
+
}
|
|
133
|
+
getHtml() {
|
|
134
|
+
return this.options.html;
|
|
135
|
+
}
|
|
136
|
+
getText() {
|
|
137
|
+
return this.options.text;
|
|
138
|
+
}
|
|
139
|
+
getTemplate() {
|
|
140
|
+
return this.options.template;
|
|
141
|
+
}
|
|
142
|
+
hasRecipient(recipients, email) {
|
|
143
|
+
const normalizedEmail = email.toLowerCase();
|
|
144
|
+
const recipientList = this.normalizeRecipients(recipients);
|
|
145
|
+
return recipientList.some((r) => r.toLowerCase() === normalizedEmail);
|
|
146
|
+
}
|
|
147
|
+
normalizeRecipients(recipients) {
|
|
148
|
+
if (typeof recipients === 'string') {
|
|
149
|
+
return [recipients];
|
|
150
|
+
}
|
|
151
|
+
if (Array.isArray(recipients)) {
|
|
152
|
+
return recipients.map((r) => (typeof r === 'string' ? r : r.address));
|
|
153
|
+
}
|
|
154
|
+
return [recipients.address];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.AssertableMessage = AssertableMessage;
|
|
158
|
+
//# sourceMappingURL=AssertableMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssertableMessage.js","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MailOptions, MailResponse, MailProvider, MailConfig } from '../types';
|
|
2
|
+
import type { Mailable } from '../core/Mailable';
|
|
3
|
+
import { AssertableMessage } from './AssertableMessage';
|
|
4
|
+
export interface SentMessage {
|
|
5
|
+
options: MailOptions;
|
|
6
|
+
mailable: Mailable | undefined;
|
|
7
|
+
timestamp: Date;
|
|
8
|
+
}
|
|
9
|
+
export declare class MailFake implements MailProvider {
|
|
10
|
+
private sentMessages;
|
|
11
|
+
private queuedMessages;
|
|
12
|
+
constructor(_config?: MailConfig);
|
|
13
|
+
send(options: MailOptions, mailable?: Mailable): Promise<MailResponse>;
|
|
14
|
+
queue(options: MailOptions, mailable?: Mailable): Promise<MailResponse>;
|
|
15
|
+
later(options: MailOptions, _delaySeconds: number, mailable?: Mailable): Promise<MailResponse>;
|
|
16
|
+
at(options: MailOptions, _date: Date, mailable?: Mailable): Promise<MailResponse>;
|
|
17
|
+
sent<T extends Mailable>(mailableClass?: new (...args: any[]) => T): AssertableMessage[];
|
|
18
|
+
queued<T extends Mailable>(mailableClass?: new (...args: any[]) => T): AssertableMessage[];
|
|
19
|
+
assertSent<T extends Mailable>(mailableClass: new (...args: any[]) => T, callback?: (message: AssertableMessage) => boolean): void;
|
|
20
|
+
assertSentCount<T extends Mailable>(mailableClass: new (...args: any[]) => T, count: number): void;
|
|
21
|
+
assertNotSent<T extends Mailable>(mailableClass: new (...args: any[]) => T, callback?: (message: AssertableMessage) => boolean): void;
|
|
22
|
+
assertNothingSent(): void;
|
|
23
|
+
assertQueued<T extends Mailable>(mailableClass: new (...args: any[]) => T, callback?: (message: AssertableMessage) => boolean): void;
|
|
24
|
+
assertQueuedCount<T extends Mailable>(mailableClass: new (...args: any[]) => T, count: number): void;
|
|
25
|
+
assertNotQueued<T extends Mailable>(mailableClass: new (...args: any[]) => T, callback?: (message: AssertableMessage) => boolean): void;
|
|
26
|
+
assertNothingQueued(): void;
|
|
27
|
+
hasSent(): boolean;
|
|
28
|
+
hasQueued(): boolean;
|
|
29
|
+
sentCount(): number;
|
|
30
|
+
queuedCount(): number;
|
|
31
|
+
clear(): void;
|
|
32
|
+
private normalizeRecipients;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=MailFake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MailFake.d.ts","sourceRoot":"","sources":["../../src/testing/MailFake.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,QAAS,YAAW,YAAY;IAC3C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAqB;gBAE/B,OAAO,CAAC,EAAE,UAAU;IAOhC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBtE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBvE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAO9F,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAQjF,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,iBAAiB,EAAE;IAaxF,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,iBAAiB,EAAE;IAa1F,UAAU,CAAC,CAAC,SAAS,QAAQ,EAC3B,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,GACjD,IAAI;IAsBP,eAAe,CAAC,CAAC,SAAS,QAAQ,EAChC,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,IAAI;IAaP,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC9B,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,GACjD,IAAI;IAoBP,iBAAiB,IAAI,IAAI;IAczB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,GACjD,IAAI;IAsBP,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAClC,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,MAAM,GACZ,IAAI;IAaP,eAAe,CAAC,CAAC,SAAS,QAAQ,EAChC,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACxC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,GACjD,IAAI;IAoBP,mBAAmB,IAAI,IAAI;IAc3B,OAAO,IAAI,OAAO;IAOlB,SAAS,IAAI,OAAO;IAOpB,SAAS,IAAI,MAAM;IAOnB,WAAW,IAAI,MAAM;IAOrB,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,mBAAmB;CAa5B"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MailFake = void 0;
|
|
4
|
+
const AssertableMessage_1 = require("./AssertableMessage");
|
|
5
|
+
class MailFake {
|
|
6
|
+
sentMessages = [];
|
|
7
|
+
queuedMessages = [];
|
|
8
|
+
constructor(_config) {
|
|
9
|
+
}
|
|
10
|
+
send(options, mailable) {
|
|
11
|
+
const message = {
|
|
12
|
+
options,
|
|
13
|
+
mailable,
|
|
14
|
+
timestamp: new Date(),
|
|
15
|
+
};
|
|
16
|
+
this.sentMessages.push(message);
|
|
17
|
+
return Promise.resolve({
|
|
18
|
+
success: true,
|
|
19
|
+
messageId: `fake-${Date.now()}-${this.sentMessages.length}`,
|
|
20
|
+
accepted: this.normalizeRecipients(options.to),
|
|
21
|
+
rejected: [],
|
|
22
|
+
response: 'Message stored in fake mailer',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
queue(options, mailable) {
|
|
26
|
+
const message = {
|
|
27
|
+
options,
|
|
28
|
+
mailable,
|
|
29
|
+
timestamp: new Date(),
|
|
30
|
+
};
|
|
31
|
+
this.queuedMessages.push(message);
|
|
32
|
+
return Promise.resolve({
|
|
33
|
+
success: true,
|
|
34
|
+
messageId: `fake-queued-${Date.now()}-${this.queuedMessages.length}`,
|
|
35
|
+
response: 'Message queued in fake mailer',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
later(options, _delaySeconds, mailable) {
|
|
39
|
+
return this.queue(options, mailable);
|
|
40
|
+
}
|
|
41
|
+
at(options, _date, mailable) {
|
|
42
|
+
return this.queue(options, mailable);
|
|
43
|
+
}
|
|
44
|
+
sent(mailableClass) {
|
|
45
|
+
let messages = this.sentMessages;
|
|
46
|
+
if (mailableClass) {
|
|
47
|
+
messages = messages.filter((m) => m.mailable instanceof mailableClass);
|
|
48
|
+
}
|
|
49
|
+
return messages.map((m) => new AssertableMessage_1.AssertableMessage(m.options, m.mailable));
|
|
50
|
+
}
|
|
51
|
+
queued(mailableClass) {
|
|
52
|
+
let messages = this.queuedMessages;
|
|
53
|
+
if (mailableClass) {
|
|
54
|
+
messages = messages.filter((m) => m.mailable instanceof mailableClass);
|
|
55
|
+
}
|
|
56
|
+
return messages.map((m) => new AssertableMessage_1.AssertableMessage(m.options, m.mailable));
|
|
57
|
+
}
|
|
58
|
+
assertSent(mailableClass, callback) {
|
|
59
|
+
const messages = this.sent(mailableClass);
|
|
60
|
+
if (messages.length === 0) {
|
|
61
|
+
throw new Error(`The expected [${mailableClass.name}] mailable was not sent.`);
|
|
62
|
+
}
|
|
63
|
+
if (callback) {
|
|
64
|
+
const matchingMessages = messages.filter(callback);
|
|
65
|
+
if (matchingMessages.length === 0) {
|
|
66
|
+
throw new Error(`The expected [${mailableClass.name}] mailable was sent, but the callback returned false for all sent messages.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
assertSentCount(mailableClass, count) {
|
|
71
|
+
const messages = this.sent(mailableClass);
|
|
72
|
+
if (messages.length !== count) {
|
|
73
|
+
throw new Error(`Expected [${mailableClass.name}] to be sent ${count} time(s), but it was sent ${messages.length} time(s).`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
assertNotSent(mailableClass, callback) {
|
|
77
|
+
const messages = this.sent(mailableClass);
|
|
78
|
+
if (callback) {
|
|
79
|
+
const matchingMessages = messages.filter(callback);
|
|
80
|
+
if (matchingMessages.length > 0) {
|
|
81
|
+
throw new Error(`The unexpected [${mailableClass.name}] mailable was sent.`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (messages.length > 0) {
|
|
85
|
+
throw new Error(`The unexpected [${mailableClass.name}] mailable was sent.`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
assertNothingSent() {
|
|
89
|
+
if (this.sentMessages.length > 0) {
|
|
90
|
+
const mailableNames = this.sentMessages
|
|
91
|
+
.map((m) => m.mailable?.constructor.name || 'Unknown')
|
|
92
|
+
.join(', ');
|
|
93
|
+
throw new Error(`Expected no mailables to be sent, but ${this.sentMessages.length} were sent: [${mailableNames}]`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
assertQueued(mailableClass, callback) {
|
|
97
|
+
const messages = this.queued(mailableClass);
|
|
98
|
+
if (messages.length === 0) {
|
|
99
|
+
throw new Error(`The expected [${mailableClass.name}] mailable was not queued.`);
|
|
100
|
+
}
|
|
101
|
+
if (callback) {
|
|
102
|
+
const matchingMessages = messages.filter(callback);
|
|
103
|
+
if (matchingMessages.length === 0) {
|
|
104
|
+
throw new Error(`The expected [${mailableClass.name}] mailable was queued, but the callback returned false for all queued messages.`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
assertQueuedCount(mailableClass, count) {
|
|
109
|
+
const messages = this.queued(mailableClass);
|
|
110
|
+
if (messages.length !== count) {
|
|
111
|
+
throw new Error(`Expected [${mailableClass.name}] to be queued ${count} time(s), but it was queued ${messages.length} time(s).`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
assertNotQueued(mailableClass, callback) {
|
|
115
|
+
const messages = this.queued(mailableClass);
|
|
116
|
+
if (callback) {
|
|
117
|
+
const matchingMessages = messages.filter(callback);
|
|
118
|
+
if (matchingMessages.length > 0) {
|
|
119
|
+
throw new Error(`The unexpected [${mailableClass.name}] mailable was queued.`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (messages.length > 0) {
|
|
123
|
+
throw new Error(`The unexpected [${mailableClass.name}] mailable was queued.`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
assertNothingQueued() {
|
|
127
|
+
if (this.queuedMessages.length > 0) {
|
|
128
|
+
const mailableNames = this.queuedMessages
|
|
129
|
+
.map((m) => m.mailable?.constructor.name || 'Unknown')
|
|
130
|
+
.join(', ');
|
|
131
|
+
throw new Error(`Expected no mailables to be queued, but ${this.queuedMessages.length} were queued: [${mailableNames}]`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
hasSent() {
|
|
135
|
+
return this.sentMessages.length > 0;
|
|
136
|
+
}
|
|
137
|
+
hasQueued() {
|
|
138
|
+
return this.queuedMessages.length > 0;
|
|
139
|
+
}
|
|
140
|
+
sentCount() {
|
|
141
|
+
return this.sentMessages.length;
|
|
142
|
+
}
|
|
143
|
+
queuedCount() {
|
|
144
|
+
return this.queuedMessages.length;
|
|
145
|
+
}
|
|
146
|
+
clear() {
|
|
147
|
+
this.sentMessages = [];
|
|
148
|
+
this.queuedMessages = [];
|
|
149
|
+
}
|
|
150
|
+
normalizeRecipients(to) {
|
|
151
|
+
if (typeof to === 'string') {
|
|
152
|
+
return [to];
|
|
153
|
+
}
|
|
154
|
+
if (Array.isArray(to)) {
|
|
155
|
+
return to.map((recipient) => typeof recipient === 'string' ? recipient : recipient.address);
|
|
156
|
+
}
|
|
157
|
+
return [to.address];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.MailFake = MailFake;
|
|
161
|
+
//# sourceMappingURL=MailFake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MailFake.js","sourceRoot":"","sources":["../../src/testing/MailFake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssertableMessage = exports.MailFake = void 0;
|
|
4
|
+
var MailFake_1 = require("./MailFake");
|
|
5
|
+
Object.defineProperty(exports, "MailFake", { enumerable: true, get: function () { return MailFake_1.MailFake; } });
|
|
6
|
+
var AssertableMessage_1 = require("./AssertableMessage");
|
|
7
|
+
Object.defineProperty(exports, "AssertableMessage", { enumerable: true, get: function () { return AssertableMessage_1.AssertableMessage; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|