@perseidesjs/notification-nodemailer 3.0.0 → 3.1.1
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 +1 @@
|
|
|
1
|
-
export { NodemailerNotificationProviderService, PluginOptions, } from
|
|
1
|
+
export { NodemailerNotificationProviderService, PluginOptions, } from "./providers/nodemailer/service";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AbstractNotificationProviderService } from
|
|
3
|
-
import { type Transporter } from
|
|
4
|
-
import type SMTPConnection from
|
|
5
|
-
import type SMTPTransport from
|
|
1
|
+
import type { ProviderSendNotificationDTO, ProviderSendNotificationResultsDTO } from "@medusajs/framework/types";
|
|
2
|
+
import { AbstractNotificationProviderService } from "@medusajs/framework/utils";
|
|
3
|
+
import { type Transporter } from "nodemailer";
|
|
4
|
+
import type SMTPConnection from "nodemailer/lib/smtp-connection";
|
|
5
|
+
import type SMTPTransport from "nodemailer/lib/smtp-transport";
|
|
6
6
|
/**
|
|
7
7
|
* Checks if a string is in binary digit format.
|
|
8
8
|
* This format is created by converting a Buffer using:
|
|
@@ -17,6 +17,11 @@ export declare function isBinaryString(content: string): boolean;
|
|
|
17
17
|
* of each byte, e.g., "0100100001101001" represents "Hi".
|
|
18
18
|
*/
|
|
19
19
|
export declare function binaryStringToBuffer(binaryString: string): Buffer;
|
|
20
|
+
/**
|
|
21
|
+
* Checks if a string is valid base64 encoded data.
|
|
22
|
+
* Base64 strings contain only A-Z, a-z, 0-9, +, /, and optional = padding.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isBase64String(content: string): boolean;
|
|
20
25
|
/**
|
|
21
26
|
* Processes attachment content to ensure it's in a format Nodemailer can handle.
|
|
22
27
|
* Supports:
|
|
@@ -6,6 +6,7 @@ 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;
|
|
10
11
|
const utils_1 = require("@medusajs/framework/utils");
|
|
11
12
|
const nodemailer_1 = __importDefault(require("nodemailer"));
|
|
@@ -41,6 +42,20 @@ function binaryStringToBuffer(binaryString) {
|
|
|
41
42
|
}
|
|
42
43
|
return Buffer.from(bytes);
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks if a string is valid base64 encoded data.
|
|
47
|
+
* Base64 strings contain only A-Z, a-z, 0-9, +, /, and optional = padding.
|
|
48
|
+
*/
|
|
49
|
+
function isBase64String(content) {
|
|
50
|
+
if (content.length < 4)
|
|
51
|
+
return false;
|
|
52
|
+
// Binary strings (only 0s and 1s) are NOT base64
|
|
53
|
+
if (isBinaryString(content))
|
|
54
|
+
return false;
|
|
55
|
+
// Base64 pattern: alphanumeric, +, /, with optional = padding at end
|
|
56
|
+
// Allow strings not divisible by 4 (some encoders omit padding)
|
|
57
|
+
return /^[A-Za-z0-9+/]+=*$/.test(content);
|
|
58
|
+
}
|
|
44
59
|
/**
|
|
45
60
|
* Processes attachment content to ensure it's in a format Nodemailer can handle.
|
|
46
61
|
* Supports:
|
|
@@ -52,7 +67,7 @@ function processAttachmentContent(content) {
|
|
|
52
67
|
if (Buffer.isBuffer(content)) {
|
|
53
68
|
return content;
|
|
54
69
|
}
|
|
55
|
-
if (typeof content ===
|
|
70
|
+
if (typeof content === "string" && isBinaryString(content)) {
|
|
56
71
|
return binaryStringToBuffer(content);
|
|
57
72
|
}
|
|
58
73
|
return content;
|
|
@@ -65,10 +80,10 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
|
|
|
65
80
|
}
|
|
66
81
|
static validateOptions(options) {
|
|
67
82
|
if (!options.host) {
|
|
68
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"host" is required in the ${
|
|
83
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"host" is required in the ${NodemailerNotificationProviderService.identifier} provider's options.`);
|
|
69
84
|
}
|
|
70
85
|
if (!options.port) {
|
|
71
|
-
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"port" is required in the ${
|
|
86
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"port" is required in the ${NodemailerNotificationProviderService.identifier} provider's options.`);
|
|
72
87
|
}
|
|
73
88
|
}
|
|
74
89
|
async send(notification) {
|
|
@@ -84,19 +99,23 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
|
|
|
84
99
|
if ((0, utils_1.isDefined)(notification.attachments) &&
|
|
85
100
|
Array.isArray(notification.attachments) &&
|
|
86
101
|
notification.attachments.length > 0) {
|
|
87
|
-
attachments = notification.attachments.map((attachment) =>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
attachments = notification.attachments.map((attachment) => {
|
|
103
|
+
const processedContent = processAttachmentContent(attachment.content);
|
|
104
|
+
const isBase64Content = typeof processedContent === "string" &&
|
|
105
|
+
isBase64String(processedContent);
|
|
106
|
+
return {
|
|
107
|
+
content: processedContent,
|
|
108
|
+
filename: attachment.filename,
|
|
109
|
+
contentType: attachment.content_type,
|
|
110
|
+
contentDisposition: attachment.disposition === "inline" ||
|
|
111
|
+
attachment.disposition === "attachment"
|
|
112
|
+
? attachment.disposition
|
|
113
|
+
: undefined,
|
|
114
|
+
cid: attachment.id,
|
|
115
|
+
// Tell nodemailer the content is base64-encoded so it decodes first
|
|
116
|
+
encoding: isBase64Content ? "base64" : undefined,
|
|
117
|
+
};
|
|
118
|
+
});
|
|
100
119
|
}
|
|
101
120
|
const mailOptions = {
|
|
102
121
|
from: notification.from ?? this.options_.from,
|
|
@@ -116,6 +135,6 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
|
|
|
116
135
|
}
|
|
117
136
|
}
|
|
118
137
|
exports.NodemailerNotificationProviderService = NodemailerNotificationProviderService;
|
|
119
|
-
NodemailerNotificationProviderService.identifier =
|
|
138
|
+
NodemailerNotificationProviderService.identifier = "nodemailer";
|
|
120
139
|
exports.default = NodemailerNotificationProviderService;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbm9kZW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXFCQSx3Q0FXQztBQU9ELG9EQU9DO0FBTUQsd0NBT0M7QUFTRCw0REFVQztBQTFFRCxxREFJa0M7QUFDbEMsNERBQXlEO0FBS3pEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzdDLDhCQUE4QjtJQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUNELDhDQUE4QztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUNELGtEQUFrRDtJQUNsRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsWUFBb0I7SUFDeEQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQ7OztH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
|
package/README.md
CHANGED
|
@@ -11,8 +11,17 @@
|
|
|
11
11
|
@perseidesjs/notification-nodemailer
|
|
12
12
|
</h1>
|
|
13
13
|
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/v/@perseidesjs/notification-nodemailer.svg" alt="npm version"></a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/dm/@perseidesjs/notification-nodemailer.svg" alt="npm downloads"></a>
|
|
17
|
+
<a href="https://github.com/perseidesjs/notification-nodemailer/blob/develop/LICENSE.md"><img src="https://img.shields.io/npm/l/@perseidesjs/notification-nodemailer.svg" alt="license"></a>
|
|
18
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
|
|
19
|
+
<img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript">
|
|
20
|
+
</p>
|
|
21
|
+
|
|
14
22
|
<h4 align="center">
|
|
15
23
|
<a href="https://perseides.org">Website</a> |
|
|
24
|
+
<a href="https://docs.perseides.org/plugins/notification-nodemailer/getting-started">Documentation</a> |
|
|
16
25
|
<a href="https://www.medusajs.com">Medusa</a>
|
|
17
26
|
</h4>
|
|
18
27
|
|
|
@@ -20,6 +29,20 @@
|
|
|
20
29
|
A Medusa plugin for sending notifications via Nodemailer (SMTP)
|
|
21
30
|
</p>
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install @perseidesjs/notification-nodemailer
|
|
36
|
+
# or
|
|
37
|
+
yarn add @perseidesjs/notification-nodemailer
|
|
38
|
+
# or
|
|
39
|
+
pnpm add @perseidesjs/notification-nodemailer
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Documentation
|
|
43
|
+
|
|
44
|
+
Access the full documentation at [docs.perseides.org/plugins/notification-nodemailer](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)
|
|
45
|
+
|
|
46
|
+
## License
|
|
24
47
|
|
|
25
|
-
|
|
48
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@perseidesjs/notification-nodemailer",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "A Medusa plugin for sending notifications via Nodemailer (SMTP)",
|
|
5
5
|
"author": "adevinwild",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,51 +32,39 @@
|
|
|
32
32
|
"changeset": "changeset",
|
|
33
33
|
"version": "changeset version",
|
|
34
34
|
"release": "yarn build && changeset publish",
|
|
35
|
-
"lint": "
|
|
36
|
-
"lint:
|
|
37
|
-
"format": "
|
|
38
|
-
"format:check": "
|
|
35
|
+
"lint": "biome lint --write",
|
|
36
|
+
"lint:check": "biome lint",
|
|
37
|
+
"format": "biome format --write",
|
|
38
|
+
"format:check": "biome format",
|
|
39
39
|
"typecheck": "tsc --noEmit",
|
|
40
40
|
"test": "vitest run",
|
|
41
|
-
"test:watch": "vitest"
|
|
42
|
-
"prepare": "husky"
|
|
41
|
+
"test:watch": "vitest"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
44
|
+
"@biomejs/biome": "2.3.11",
|
|
45
45
|
"@changesets/cli": "^2.29.5",
|
|
46
|
-
"@
|
|
47
|
-
"@medusajs/
|
|
48
|
-
"@medusajs/
|
|
49
|
-
"@medusajs/medusa": "2.12.4",
|
|
46
|
+
"@medusajs/cli": "2.13.0",
|
|
47
|
+
"@medusajs/framework": "2.13.0",
|
|
48
|
+
"@medusajs/medusa": "2.13.0",
|
|
50
49
|
"@swc/core": "1.5.7",
|
|
51
50
|
"@types/node": "^20.0.0",
|
|
52
51
|
"@types/nodemailer": "^6.4.17",
|
|
53
|
-
"
|
|
54
|
-
"husky": "^9.1.7",
|
|
55
|
-
"lint-staged": "^16.1.2",
|
|
52
|
+
"@types/qrcode": "^1.5.6",
|
|
56
53
|
"nodemailer": "^7.0.5",
|
|
57
|
-
"
|
|
54
|
+
"qrcode": "^1.5.4",
|
|
58
55
|
"ts-node": "^10.9.2",
|
|
59
56
|
"typescript": "^5.6.2",
|
|
60
57
|
"vitest": "^4.0.16",
|
|
61
58
|
"yalc": "^1.0.0-pre.53"
|
|
62
59
|
},
|
|
63
60
|
"peerDependencies": {
|
|
64
|
-
"@medusajs/cli": ">=2.
|
|
65
|
-
"@medusajs/framework": "
|
|
66
|
-
"@medusajs/medusa": "
|
|
61
|
+
"@medusajs/cli": ">=2.13.0",
|
|
62
|
+
"@medusajs/framework": ">=2.13.0",
|
|
63
|
+
"@medusajs/medusa": ">=2.13.0",
|
|
67
64
|
"nodemailer": "^7.0.5"
|
|
68
65
|
},
|
|
69
66
|
"engines": {
|
|
70
67
|
"node": ">=20"
|
|
71
68
|
},
|
|
72
|
-
"packageManager": "yarn@4.9.2"
|
|
73
|
-
"lint-staged": {
|
|
74
|
-
"*.{js,jsx,ts,tsx,mjs,cjs}": [
|
|
75
|
-
"eslint --fix",
|
|
76
|
-
"prettier --write"
|
|
77
|
-
],
|
|
78
|
-
"*.{json,md,yml,yaml}": [
|
|
79
|
-
"prettier --write"
|
|
80
|
-
]
|
|
81
|
-
}
|
|
69
|
+
"packageManager": "yarn@4.9.2"
|
|
82
70
|
}
|