@perseidesjs/notification-nodemailer 3.1.0 → 3.2.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.
@@ -1,6 +1,7 @@
1
1
  import type { ProviderSendNotificationDTO, ProviderSendNotificationResultsDTO } from "@medusajs/framework/types";
2
2
  import { AbstractNotificationProviderService } from "@medusajs/framework/utils";
3
3
  import { type Transporter } from "nodemailer";
4
+ import type Mail from "nodemailer/lib/mailer";
4
5
  import type SMTPConnection from "nodemailer/lib/smtp-connection";
5
6
  import type SMTPTransport from "nodemailer/lib/smtp-transport";
6
7
  /**
@@ -17,6 +18,11 @@ export declare function isBinaryString(content: string): boolean;
17
18
  * of each byte, e.g., "0100100001101001" represents "Hi".
18
19
  */
19
20
  export declare function binaryStringToBuffer(binaryString: string): Buffer;
21
+ /**
22
+ * Checks if a string is valid base64 encoded data.
23
+ * Base64 strings contain only A-Z, a-z, 0-9, +, /, and optional = padding.
24
+ */
25
+ export declare function isBase64String(content: string): boolean;
20
26
  /**
21
27
  * Processes attachment content to ensure it's in a format Nodemailer can handle.
22
28
  * Supports:
@@ -25,6 +31,7 @@ export declare function binaryStringToBuffer(binaryString: string): Buffer;
25
31
  * - Regular string: Passed through as-is (assumed to be base64 or text content)
26
32
  */
27
33
  export declare function processAttachmentContent(content: string | Buffer): string | Buffer;
34
+ export declare function extractProviderData(provider_data: Record<string, unknown> | null | undefined): Pick<Mail.Options, "replyTo" | "cc" | "bcc">;
28
35
  export type PluginOptions = SMTPConnection.Options & SMTPTransport.MailOptions & {
29
36
  from: string;
30
37
  };
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NodemailerNotificationProviderService = void 0;
7
7
  exports.isBinaryString = isBinaryString;
8
8
  exports.binaryStringToBuffer = binaryStringToBuffer;
9
+ exports.isBase64String = isBase64String;
9
10
  exports.processAttachmentContent = processAttachmentContent;
11
+ exports.extractProviderData = extractProviderData;
10
12
  const utils_1 = require("@medusajs/framework/utils");
11
13
  const nodemailer_1 = __importDefault(require("nodemailer"));
12
14
  /**
@@ -41,6 +43,20 @@ function binaryStringToBuffer(binaryString) {
41
43
  }
42
44
  return Buffer.from(bytes);
43
45
  }
46
+ /**
47
+ * Checks if a string is valid base64 encoded data.
48
+ * Base64 strings contain only A-Z, a-z, 0-9, +, /, and optional = padding.
49
+ */
50
+ function isBase64String(content) {
51
+ if (content.length < 4)
52
+ return false;
53
+ // Binary strings (only 0s and 1s) are NOT base64
54
+ if (isBinaryString(content))
55
+ return false;
56
+ // Base64 pattern: alphanumeric, +, /, with optional = padding at end
57
+ // Allow strings not divisible by 4 (some encoders omit padding)
58
+ return /^[A-Za-z0-9+/]+=*$/.test(content);
59
+ }
44
60
  /**
45
61
  * Processes attachment content to ensure it's in a format Nodemailer can handle.
46
62
  * Supports:
@@ -57,6 +73,21 @@ function processAttachmentContent(content) {
57
73
  }
58
74
  return content;
59
75
  }
76
+ function extractProviderData(provider_data) {
77
+ if (!provider_data)
78
+ return {};
79
+ const result = {};
80
+ if ((0, utils_1.isDefined)(provider_data.replyTo)) {
81
+ result.replyTo = provider_data.replyTo;
82
+ }
83
+ if ((0, utils_1.isDefined)(provider_data.cc)) {
84
+ result.cc = provider_data.cc;
85
+ }
86
+ if ((0, utils_1.isDefined)(provider_data.bcc)) {
87
+ result.bcc = provider_data.bcc;
88
+ }
89
+ return result;
90
+ }
60
91
  class NodemailerNotificationProviderService extends utils_1.AbstractNotificationProviderService {
61
92
  constructor(_, options) {
62
93
  super();
@@ -72,7 +103,7 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
72
103
  }
73
104
  }
74
105
  async send(notification) {
75
- const { to, content } = notification;
106
+ const { to, content, provider_data } = notification;
76
107
  if (!(0, utils_1.isDefined)(this.options_.from) && !(0, utils_1.isDefined)(notification.from)) {
77
108
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"from" is required in the ${NodemailerNotificationProviderService.identifier} provider's options.`);
78
109
  }
@@ -84,24 +115,29 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
84
115
  if ((0, utils_1.isDefined)(notification.attachments) &&
85
116
  Array.isArray(notification.attachments) &&
86
117
  notification.attachments.length > 0) {
87
- attachments = notification.attachments.map((attachment) => ({
88
- content: processAttachmentContent(attachment.content),
89
- filename: attachment.filename,
90
- contentType: attachment.content_type,
91
- contentDisposition: attachment.disposition === "inline" ||
92
- attachment.disposition === "attachment"
93
- ? attachment.disposition
94
- : undefined,
95
- cid: attachment.id,
96
- contentTransferEncoding: attachment.content_type === "text/html"
97
- ? "quoted-printable"
98
- : "base64",
99
- }));
118
+ attachments = notification.attachments.map((attachment) => {
119
+ const processedContent = processAttachmentContent(attachment.content);
120
+ const isBase64Content = typeof processedContent === "string" &&
121
+ isBase64String(processedContent);
122
+ return {
123
+ content: processedContent,
124
+ filename: attachment.filename,
125
+ contentType: attachment.content_type,
126
+ contentDisposition: attachment.disposition === "inline" ||
127
+ attachment.disposition === "attachment"
128
+ ? attachment.disposition
129
+ : undefined,
130
+ cid: attachment.id,
131
+ // Tell nodemailer the content is base64-encoded so it decodes first
132
+ encoding: isBase64Content ? "base64" : undefined,
133
+ };
134
+ });
100
135
  }
101
136
  const mailOptions = {
102
137
  from: notification.from ?? this.options_.from,
103
138
  to,
104
139
  subject: content?.subject,
140
+ ...extractProviderData(provider_data),
105
141
  };
106
142
  if ((0, utils_1.isDefined)(html)) {
107
143
  mailOptions.html = html;
@@ -118,4 +154,4 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
118
154
  exports.NodemailerNotificationProviderService = NodemailerNotificationProviderService;
119
155
  NodemailerNotificationProviderService.identifier = "nodemailer";
120
156
  exports.default = NodemailerNotificationProviderService;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbm9kZW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXFCQSx3Q0FXQztBQU9ELG9EQU9DO0FBU0QsNERBVUM7QUE3REQscURBSWtDO0FBQ2xDLDREQUF5RDtBQUt6RDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM3Qyw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFDRCw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFDRCxrREFBa0Q7SUFDbEQsT0FBTyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFlBQW9CO0lBQ3hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNI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
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbm9kZW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXFCQSx3Q0FXQztBQU9ELG9EQU9DO0FBTUQsd0NBT0M7QUFTRCw0REFVQztBQUVELGtEQWVDO0FBM0ZELHFEQUlrQztBQUNsQyw0REFBeUQ7QUFLekQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQWU7SUFDN0MsOEJBQThCO0lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUE7SUFDYixDQUFDO0lBQ0QsOENBQThDO0lBQzlDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUE7SUFDYixDQUFDO0lBQ0Qsa0RBQWtEO0lBQ2xELE9BQU8sT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxZQUFvQjtJQUN4RCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUE7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLENB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
package/README.md CHANGED
@@ -41,7 +41,7 @@ pnpm add @perseidesjs/notification-nodemailer
41
41
 
42
42
  ## Documentation
43
43
 
44
- Access the full documentation at [docs.perseides.org/plugins/notification-nodemailer](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)
44
+ Access the full documentation at [https://docs.perseides.org/docs/plugins/notification-nodemailer/getting-started](https://docs.perseides.org/docs/plugins/notification-nodemailer/getting-started)
45
45
 
46
46
  ## License
47
47
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perseidesjs/notification-nodemailer",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "A Medusa plugin for sending notifications via Nodemailer (SMTP)",
5
5
  "author": "adevinwild",
6
6
  "license": "MIT",
@@ -43,13 +43,15 @@
43
43
  "devDependencies": {
44
44
  "@biomejs/biome": "2.3.11",
45
45
  "@changesets/cli": "^2.29.5",
46
- "@medusajs/cli": "2.13.0",
47
- "@medusajs/framework": "2.13.0",
48
- "@medusajs/medusa": "2.13.0",
46
+ "@medusajs/cli": "2.14.1",
47
+ "@medusajs/framework": "2.14.1",
48
+ "@medusajs/medusa": "2.14.1",
49
49
  "@swc/core": "1.5.7",
50
50
  "@types/node": "^20.0.0",
51
51
  "@types/nodemailer": "^6.4.17",
52
- "nodemailer": "^7.0.5",
52
+ "@types/qrcode": "^1.5.6",
53
+ "nodemailer": "^8.0.5",
54
+ "qrcode": "^1.5.4",
53
55
  "ts-node": "^10.9.2",
54
56
  "typescript": "^5.6.2",
55
57
  "vitest": "^4.0.16",
@@ -59,7 +61,7 @@
59
61
  "@medusajs/cli": ">=2.13.0",
60
62
  "@medusajs/framework": ">=2.13.0",
61
63
  "@medusajs/medusa": ">=2.13.0",
62
- "nodemailer": "^7.0.5"
64
+ "nodemailer": "^8.0.5"
63
65
  },
64
66
  "engines": {
65
67
  "node": ">=20"