@webiny/api-mailer 5.33.5 → 5.34.0-beta.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.
- package/context.d.ts +2 -2
- package/context.js +9 -3
- package/context.js.map +1 -1
- package/crud/group.d.ts +2 -0
- package/crud/group.js +21 -0
- package/crud/group.js.map +1 -0
- package/crud/settings/hooks.d.ts +5 -0
- package/crud/settings/hooks.js +55 -0
- package/crud/settings/hooks.js.map +1 -0
- package/crud/settings/model.d.ts +3 -0
- package/crud/settings/model.js +90 -0
- package/crud/settings/model.js.map +1 -0
- package/crud/settings/password.d.ts +7 -0
- package/crud/settings/password.js +71 -0
- package/crud/settings/password.js.map +1 -0
- package/crud/settings/secret.d.ts +1 -0
- package/crud/settings/secret.js +23 -0
- package/crud/settings/secret.js.map +1 -0
- package/crud/settings/transform.d.ts +13 -0
- package/crud/settings/transform.js +56 -0
- package/crud/settings/transform.js.map +1 -0
- package/crud/settings/validation.d.ts +4 -0
- package/crud/settings/validation.js +38 -0
- package/crud/settings/validation.js.map +1 -0
- package/crud/settings.crud.d.ts +5 -0
- package/crud/settings.crud.js +331 -0
- package/crud/settings.crud.js.map +1 -0
- package/crud/transport/onTransportBeforeSend.d.ts +7 -0
- package/crud/transport/onTransportBeforeSend.js +69 -0
- package/crud/transport/onTransportBeforeSend.js.map +1 -0
- package/crud/transporter.crud.d.ts +2 -0
- package/crud/transporter.crud.js +193 -0
- package/crud/transporter.crud.js.map +1 -0
- package/graphql/index.d.ts +1 -0
- package/graphql/index.js +14 -0
- package/graphql/index.js.map +1 -0
- package/graphql/settings.d.ts +3 -0
- package/graphql/settings.js +109 -0
- package/graphql/settings.js.map +1 -0
- package/index.d.ts +7 -6
- package/index.js +69 -10
- package/index.js.map +1 -1
- package/package.json +33 -15
- package/plugins/CreateTransportPlugin.d.ts +17 -0
- package/plugins/CreateTransportPlugin.js +34 -0
- package/plugins/CreateTransportPlugin.js.map +1 -0
- package/plugins/index.d.ts +1 -0
- package/plugins/index.js +18 -0
- package/plugins/index.js.map +1 -0
- package/transports/createDummyTransport.d.ts +5 -0
- package/{mailers/createDummyMailer.js → transports/createDummyTransport.js} +4 -3
- package/transports/createDummyTransport.js.map +1 -0
- package/transports/createSmtpTransport.d.ts +12 -0
- package/transports/createSmtpTransport.js +101 -0
- package/transports/createSmtpTransport.js.map +1 -0
- package/types.d.ts +124 -34
- package/types.js.map +1 -1
- package/crud/mailer/onBeforeSend.d.ts +0 -7
- package/crud/mailer/onBeforeSend.js +0 -69
- package/crud/mailer/onBeforeSend.js.map +0 -1
- package/crud/mailer.crud.d.ts +0 -2
- package/crud/mailer.crud.js +0 -123
- package/crud/mailer.crud.js.map +0 -1
- package/mailers/createDummyMailer.d.ts +0 -5
- package/mailers/createDummyMailer.js.map +0 -1
- package/mailers/createSmtpMailer.d.ts +0 -13
- package/mailers/createSmtpMailer.js +0 -106
- package/mailers/createSmtpMailer.js.map +0 -1
package/types.d.ts
CHANGED
|
@@ -1,59 +1,149 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CmsContext } from "@webiny/api-headless-cms/types";
|
|
2
2
|
import { Topic } from "@webiny/pubsub/types";
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
(
|
|
9
|
-
}
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
3
|
+
export interface MailerTransporterContext<T extends Transport = Transport> {
|
|
4
|
+
onTransportBeforeSend: Topic<OnTransportBeforeSendParams>;
|
|
5
|
+
onTransportAfterSend: Topic<OnTransportAfterSendParams>;
|
|
6
|
+
onTransportError: Topic<OnTransportErrorParams>;
|
|
7
|
+
getTransport: () => Promise<T | null>;
|
|
8
|
+
sendMail: <D>(data: TransportSendData) => Promise<TransportSendResponse<D>>;
|
|
9
|
+
}
|
|
10
|
+
export interface MailerSettingsCreateParams {
|
|
11
|
+
input: Partial<TransportSettings>;
|
|
12
|
+
}
|
|
13
|
+
export interface MailerSettingsUpdateParams {
|
|
14
|
+
input: Partial<TransportSettings>;
|
|
15
|
+
original?: ExtendedTransportSettings | null;
|
|
16
|
+
}
|
|
17
|
+
export interface MailerSettingsSaveParams {
|
|
18
|
+
input: Partial<TransportSettings>;
|
|
19
|
+
}
|
|
20
|
+
export interface OnSettingsBeforeGetTopicParams {
|
|
21
|
+
tenant: string;
|
|
22
|
+
}
|
|
23
|
+
export interface OnSettingsAfterGetTopicParams {
|
|
24
|
+
tenant: string;
|
|
25
|
+
settings: TransportSettings | null;
|
|
26
|
+
}
|
|
27
|
+
export interface OnSettingsGetErrorTopicParams {
|
|
28
|
+
tenant: string;
|
|
29
|
+
error: Error;
|
|
20
30
|
}
|
|
21
|
-
export interface
|
|
22
|
-
|
|
31
|
+
export interface OnSettingsBeforeCreateTopicParams {
|
|
32
|
+
settings: TransportSettings;
|
|
23
33
|
}
|
|
24
|
-
export interface
|
|
25
|
-
|
|
34
|
+
export interface OnSettingsAfterCreateTopicParams {
|
|
35
|
+
settings: TransportSettings;
|
|
26
36
|
}
|
|
27
|
-
export interface
|
|
28
|
-
|
|
37
|
+
export interface OnSettingsCreateErrorTopicParams {
|
|
38
|
+
settings: TransportSettings;
|
|
39
|
+
error: Error;
|
|
40
|
+
}
|
|
41
|
+
export interface OnSettingsBeforeUpdateTopicParams {
|
|
42
|
+
settings: TransportSettings;
|
|
43
|
+
original: TransportSettings;
|
|
29
44
|
}
|
|
30
|
-
export interface
|
|
45
|
+
export interface OnSettingsAfterUpdateTopicParams {
|
|
46
|
+
original: TransportSettings;
|
|
47
|
+
settings: TransportSettings;
|
|
48
|
+
}
|
|
49
|
+
export interface OnSettingsUpdateErrorTopicParams {
|
|
50
|
+
original: TransportSettings;
|
|
51
|
+
settings: TransportSettings;
|
|
31
52
|
error: Error;
|
|
32
|
-
|
|
53
|
+
}
|
|
54
|
+
export interface ExtendedTransportSettings extends TransportSettings {
|
|
55
|
+
id: string;
|
|
56
|
+
}
|
|
57
|
+
export interface MailerSettingsContext {
|
|
58
|
+
getSettings: () => Promise<ExtendedTransportSettings | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Method should not be used outside of mailer
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
createSettings: (params: MailerSettingsCreateParams) => Promise<TransportSettings>;
|
|
64
|
+
/**
|
|
65
|
+
* Method should not be used outside of mailer
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
updateSettings: (params: MailerSettingsUpdateParams) => Promise<TransportSettings>;
|
|
69
|
+
/**
|
|
70
|
+
* Use to store the settings data.
|
|
71
|
+
*/
|
|
72
|
+
saveSettings: (params: MailerSettingsSaveParams) => Promise<TransportSettings>;
|
|
73
|
+
/**
|
|
74
|
+
* Lifecycle events
|
|
75
|
+
*/
|
|
76
|
+
onSettingsBeforeGet: Topic<OnSettingsBeforeGetTopicParams>;
|
|
77
|
+
onSettingsAfterGet: Topic<OnSettingsAfterGetTopicParams>;
|
|
78
|
+
onSettingsGetError: Topic<OnSettingsGetErrorTopicParams>;
|
|
79
|
+
onSettingsBeforeCreate: Topic<OnSettingsBeforeCreateTopicParams>;
|
|
80
|
+
onSettingsAfterCreate: Topic<OnSettingsAfterCreateTopicParams>;
|
|
81
|
+
onSettingsCreateError: Topic<OnSettingsCreateErrorTopicParams>;
|
|
82
|
+
onSettingsBeforeUpdate: Topic<OnSettingsBeforeUpdateTopicParams>;
|
|
83
|
+
onSettingsAfterUpdate: Topic<OnSettingsAfterUpdateTopicParams>;
|
|
84
|
+
onSettingsUpdateError: Topic<OnSettingsUpdateErrorTopicParams>;
|
|
85
|
+
}
|
|
86
|
+
export interface MailerContextObject<T extends Transport = Transport> extends MailerTransporterContext<T>, MailerSettingsContext {
|
|
87
|
+
}
|
|
88
|
+
export interface MailerContext extends CmsContext {
|
|
89
|
+
mailer: MailerContextObject;
|
|
90
|
+
}
|
|
91
|
+
export interface OnTransportBeforeSendParams {
|
|
92
|
+
data: TransportSendData;
|
|
93
|
+
transport: Transport;
|
|
94
|
+
}
|
|
95
|
+
export interface OnTransportAfterSendParams {
|
|
96
|
+
data: TransportSendData;
|
|
97
|
+
transport: Transport;
|
|
98
|
+
}
|
|
99
|
+
export interface OnTransportErrorParams {
|
|
100
|
+
error: Error;
|
|
101
|
+
data: TransportSendData;
|
|
102
|
+
transport: Transport;
|
|
33
103
|
}
|
|
34
104
|
/**
|
|
35
105
|
* Interface to implement the actual mailer.
|
|
36
106
|
*/
|
|
37
|
-
export interface
|
|
107
|
+
export interface TransportSendResponse<T = any> {
|
|
38
108
|
result: T | null;
|
|
39
109
|
error: {
|
|
40
110
|
message: string;
|
|
41
111
|
code: string;
|
|
42
|
-
data
|
|
112
|
+
data?: {
|
|
43
113
|
[key: string]: any;
|
|
44
114
|
};
|
|
45
115
|
} | null;
|
|
46
116
|
}
|
|
47
|
-
|
|
117
|
+
interface TransportSendToData {
|
|
48
118
|
to: string[];
|
|
49
|
-
|
|
119
|
+
}
|
|
120
|
+
interface TransportSendCcData {
|
|
121
|
+
cc: string[];
|
|
122
|
+
}
|
|
123
|
+
interface TransportSendBccData {
|
|
124
|
+
bcc: string[];
|
|
125
|
+
}
|
|
126
|
+
interface BaseTransportSendData {
|
|
127
|
+
to?: string[];
|
|
128
|
+
cc?: string[];
|
|
129
|
+
bcc?: string[];
|
|
130
|
+
from?: string;
|
|
50
131
|
subject: string;
|
|
51
132
|
text: string;
|
|
52
133
|
html?: string;
|
|
53
134
|
replyTo?: string;
|
|
54
|
-
cc?: string[];
|
|
55
|
-
bcc?: string[];
|
|
56
135
|
}
|
|
57
|
-
export
|
|
58
|
-
|
|
136
|
+
export declare type TransportSendData = BaseTransportSendData & (TransportSendToData | TransportSendBccData | TransportSendCcData);
|
|
137
|
+
export interface Transport<T = any> {
|
|
138
|
+
name: string;
|
|
139
|
+
send: (params: TransportSendData) => Promise<TransportSendResponse<T>>;
|
|
140
|
+
}
|
|
141
|
+
export interface TransportSettings {
|
|
142
|
+
host: string;
|
|
143
|
+
port: number;
|
|
144
|
+
user: string;
|
|
145
|
+
password: string;
|
|
146
|
+
from: string;
|
|
147
|
+
replyTo?: string;
|
|
59
148
|
}
|
|
149
|
+
export {};
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport interface MailerTransporterContext<T extends Transport = Transport> {\n onTransportBeforeSend: Topic<OnTransportBeforeSendParams>;\n onTransportAfterSend: Topic<OnTransportAfterSendParams>;\n onTransportError: Topic<OnTransportErrorParams>;\n getTransport: () => Promise<T | null>;\n sendMail: <D>(data: TransportSendData) => Promise<TransportSendResponse<D>>;\n}\n\nexport interface MailerSettingsCreateParams {\n input: Partial<TransportSettings>;\n}\nexport interface MailerSettingsUpdateParams {\n input: Partial<TransportSettings>;\n original?: ExtendedTransportSettings | null;\n}\n\nexport interface MailerSettingsSaveParams {\n input: Partial<TransportSettings>;\n}\n\nexport interface OnSettingsBeforeGetTopicParams {\n tenant: string;\n}\n\nexport interface OnSettingsAfterGetTopicParams {\n tenant: string;\n settings: TransportSettings | null;\n}\n\nexport interface OnSettingsGetErrorTopicParams {\n tenant: string;\n error: Error;\n}\n\nexport interface OnSettingsBeforeCreateTopicParams {\n settings: TransportSettings;\n}\n\nexport interface OnSettingsAfterCreateTopicParams {\n settings: TransportSettings;\n}\n\nexport interface OnSettingsCreateErrorTopicParams {\n settings: TransportSettings;\n error: Error;\n}\n\nexport interface OnSettingsBeforeUpdateTopicParams {\n settings: TransportSettings;\n original: TransportSettings;\n}\n\nexport interface OnSettingsAfterUpdateTopicParams {\n original: TransportSettings;\n settings: TransportSettings;\n}\n\nexport interface OnSettingsUpdateErrorTopicParams {\n original: TransportSettings;\n settings: TransportSettings;\n error: Error;\n}\n\nexport interface ExtendedTransportSettings extends TransportSettings {\n id: string;\n}\n\nexport interface MailerSettingsContext {\n getSettings: () => Promise<ExtendedTransportSettings | null>;\n /**\n * Method should not be used outside of mailer\n * @internal\n */\n createSettings: (params: MailerSettingsCreateParams) => Promise<TransportSettings>;\n /**\n * Method should not be used outside of mailer\n * @internal\n */\n updateSettings: (params: MailerSettingsUpdateParams) => Promise<TransportSettings>;\n /**\n * Use to store the settings data.\n */\n saveSettings: (params: MailerSettingsSaveParams) => Promise<TransportSettings>;\n /**\n * Lifecycle events\n */\n onSettingsBeforeGet: Topic<OnSettingsBeforeGetTopicParams>;\n onSettingsAfterGet: Topic<OnSettingsAfterGetTopicParams>;\n onSettingsGetError: Topic<OnSettingsGetErrorTopicParams>;\n onSettingsBeforeCreate: Topic<OnSettingsBeforeCreateTopicParams>;\n onSettingsAfterCreate: Topic<OnSettingsAfterCreateTopicParams>;\n onSettingsCreateError: Topic<OnSettingsCreateErrorTopicParams>;\n onSettingsBeforeUpdate: Topic<OnSettingsBeforeUpdateTopicParams>;\n onSettingsAfterUpdate: Topic<OnSettingsAfterUpdateTopicParams>;\n onSettingsUpdateError: Topic<OnSettingsUpdateErrorTopicParams>;\n}\n\nexport interface MailerContextObject<T extends Transport = Transport>\n extends MailerTransporterContext<T>,\n MailerSettingsContext {}\nexport interface MailerContext extends CmsContext {\n mailer: MailerContextObject;\n}\n\nexport interface OnTransportBeforeSendParams {\n data: TransportSendData;\n transport: Transport;\n}\nexport interface OnTransportAfterSendParams {\n data: TransportSendData;\n transport: Transport;\n}\nexport interface OnTransportErrorParams {\n error: Error;\n data: TransportSendData;\n transport: Transport;\n}\n\n/**\n * Interface to implement the actual mailer.\n */\nexport interface TransportSendResponse<T = any> {\n result: T | null;\n error: {\n message: string;\n code: string;\n data?: {\n [key: string]: any;\n };\n } | null;\n}\n\ninterface TransportSendToData {\n to: string[];\n}\ninterface TransportSendCcData {\n cc: string[];\n}\ninterface TransportSendBccData {\n bcc: string[];\n}\n\ninterface BaseTransportSendData {\n to?: string[];\n cc?: string[];\n bcc?: string[];\n from?: string;\n subject: string;\n text: string;\n html?: string;\n replyTo?: string;\n}\n\nexport type TransportSendData = BaseTransportSendData &\n (TransportSendToData | TransportSendBccData | TransportSendCcData);\nexport interface Transport<T = any> {\n name: string;\n send: (params: TransportSendData) => Promise<TransportSendResponse<T>>;\n}\n\nexport interface TransportSettings {\n host: string;\n port: number;\n user: string;\n password: string;\n from: string;\n replyTo?: string;\n}\n"],"mappings":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Topic } from "@webiny/pubsub/types";
|
|
2
|
-
import { OnBeforeMailerSendParams } from "../../types";
|
|
3
|
-
interface AttachOnBeforeSendParams {
|
|
4
|
-
onBeforeSend: Topic<OnBeforeMailerSendParams>;
|
|
5
|
-
}
|
|
6
|
-
export declare const attachOnBeforeSend: (params: AttachOnBeforeSendParams) => void;
|
|
7
|
-
export {};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.attachOnBeforeSend = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _joi = _interopRequireDefault(require("joi"));
|
|
13
|
-
|
|
14
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
15
|
-
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
|
-
const requiredString = _joi.default.string().required();
|
|
21
|
-
|
|
22
|
-
const requiredEmail = requiredString.email();
|
|
23
|
-
|
|
24
|
-
const schema = _joi.default.object({
|
|
25
|
-
to: _joi.default.array().items(requiredEmail).required(),
|
|
26
|
-
from: requiredEmail,
|
|
27
|
-
subject: requiredString.max(1024),
|
|
28
|
-
cc: _joi.default.array().items(requiredEmail),
|
|
29
|
-
bcc: _joi.default.array().items(requiredEmail),
|
|
30
|
-
replyTo: _joi.default.string().email(),
|
|
31
|
-
text: requiredString.min(10),
|
|
32
|
-
html: _joi.default.string()
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const attachOnBeforeSend = params => {
|
|
36
|
-
const {
|
|
37
|
-
onBeforeSend
|
|
38
|
-
} = params;
|
|
39
|
-
onBeforeSend.subscribe(async ({
|
|
40
|
-
data: input
|
|
41
|
-
}) => {
|
|
42
|
-
let result;
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
result = await schema.validate(input);
|
|
46
|
-
|
|
47
|
-
if (!result.error) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
} catch (ex) {
|
|
51
|
-
throw new _error.default({
|
|
52
|
-
message: "Error while validating e-mail params.",
|
|
53
|
-
code: "VALIDATION_ERROR",
|
|
54
|
-
data: {
|
|
55
|
-
input,
|
|
56
|
-
error: ex
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
throw new _error.default({
|
|
62
|
-
message: "Error while validating e-mail params.",
|
|
63
|
-
code: "VALIDATION_ERROR",
|
|
64
|
-
data: _objectSpread({}, result.error)
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
exports.attachOnBeforeSend = attachOnBeforeSend;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["requiredString","joi","string","required","requiredEmail","email","schema","object","to","array","items","from","subject","max","cc","bcc","replyTo","text","min","html","attachOnBeforeSend","params","onBeforeSend","subscribe","data","input","result","validate","error","ex","WebinyError","message","code"],"sources":["onBeforeSend.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { MailerSendData, OnBeforeMailerSendParams } from \"~/types\";\nimport joi from \"joi\";\nimport WebinyError from \"@webiny/error\";\n\nconst requiredString = joi.string().required();\nconst requiredEmail = requiredString.email();\n\nconst schema = joi.object<MailerSendData>({\n to: joi.array().items(requiredEmail).required(),\n from: requiredEmail,\n subject: requiredString.max(1024),\n cc: joi.array().items(requiredEmail),\n bcc: joi.array().items(requiredEmail),\n replyTo: joi.string().email(),\n text: requiredString.min(10),\n html: joi.string()\n});\n\ninterface AttachOnBeforeSendParams {\n onBeforeSend: Topic<OnBeforeMailerSendParams>;\n}\nexport const attachOnBeforeSend = (params: AttachOnBeforeSendParams) => {\n const { onBeforeSend } = params;\n\n onBeforeSend.subscribe(async ({ data: input }) => {\n let result: joi.ValidationResult<MailerSendData>;\n try {\n result = await schema.validate(input);\n\n if (!result.error) {\n return;\n }\n } catch (ex) {\n throw new WebinyError({\n message: \"Error while validating e-mail params.\",\n code: \"VALIDATION_ERROR\",\n data: {\n input,\n error: ex\n }\n });\n }\n throw new WebinyError({\n message: \"Error while validating e-mail params.\",\n code: \"VALIDATION_ERROR\",\n data: {\n ...result.error\n }\n });\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AACA;;;;;;AAEA,MAAMA,cAAc,GAAGC,YAAA,CAAIC,MAAJ,GAAaC,QAAb,EAAvB;;AACA,MAAMC,aAAa,GAAGJ,cAAc,CAACK,KAAf,EAAtB;;AAEA,MAAMC,MAAM,GAAGL,YAAA,CAAIM,MAAJ,CAA2B;EACtCC,EAAE,EAAEP,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,EAAiCD,QAAjC,EADkC;EAEtCQ,IAAI,EAAEP,aAFgC;EAGtCQ,OAAO,EAAEZ,cAAc,CAACa,GAAf,CAAmB,IAAnB,CAH6B;EAItCC,EAAE,EAAEb,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,CAJkC;EAKtCW,GAAG,EAAEd,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,CALiC;EAMtCY,OAAO,EAAEf,YAAA,CAAIC,MAAJ,GAAaG,KAAb,EAN6B;EAOtCY,IAAI,EAAEjB,cAAc,CAACkB,GAAf,CAAmB,EAAnB,CAPgC;EAQtCC,IAAI,EAAElB,YAAA,CAAIC,MAAJ;AARgC,CAA3B,CAAf;;AAcO,MAAMkB,kBAAkB,GAAIC,MAAD,IAAsC;EACpE,MAAM;IAAEC;EAAF,IAAmBD,MAAzB;EAEAC,YAAY,CAACC,SAAb,CAAuB,OAAO;IAAEC,IAAI,EAAEC;EAAR,CAAP,KAA2B;IAC9C,IAAIC,MAAJ;;IACA,IAAI;MACAA,MAAM,GAAG,MAAMpB,MAAM,CAACqB,QAAP,CAAgBF,KAAhB,CAAf;;MAEA,IAAI,CAACC,MAAM,CAACE,KAAZ,EAAmB;QACf;MACH;IACJ,CAND,CAME,OAAOC,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CAAgB;QAClBC,OAAO,EAAE,uCADS;QAElBC,IAAI,EAAE,kBAFY;QAGlBR,IAAI,EAAE;UACFC,KADE;UAEFG,KAAK,EAAEC;QAFL;MAHY,CAAhB,CAAN;IAQH;;IACD,MAAM,IAAIC,cAAJ,CAAgB;MAClBC,OAAO,EAAE,uCADS;MAElBC,IAAI,EAAE,kBAFY;MAGlBR,IAAI,oBACGE,MAAM,CAACE,KADV;IAHc,CAAhB,CAAN;EAOH,CAzBD;AA0BH,CA7BM"}
|
package/crud/mailer.crud.d.ts
DELETED
package/crud/mailer.crud.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createMailerCrud = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _pubsub = require("@webiny/pubsub");
|
|
13
|
-
|
|
14
|
-
var _onBeforeSend = require("./mailer/onBeforeSend");
|
|
15
|
-
|
|
16
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
|
-
const createDefaultMailer = async () => {
|
|
27
|
-
return Promise.resolve().then(() => _interopRequireWildcard(require("../mailers/createSmtpMailer"))).then(module => {
|
|
28
|
-
return module.createSmtpMailer();
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const createMailerCrud = config => {
|
|
33
|
-
let defaultMailer = (config === null || config === void 0 ? void 0 : config.mailer) || createDefaultMailer;
|
|
34
|
-
/**
|
|
35
|
-
* We define possible events to be hooked into.
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
const onBeforeSend = (0, _pubsub.createTopic)();
|
|
39
|
-
const onAfterSend = (0, _pubsub.createTopic)();
|
|
40
|
-
const onError = (0, _pubsub.createTopic)();
|
|
41
|
-
/**
|
|
42
|
-
* We attach our default ones.
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
(0, _onBeforeSend.attachOnBeforeSend)({
|
|
46
|
-
onBeforeSend
|
|
47
|
-
});
|
|
48
|
-
let initializedMailer;
|
|
49
|
-
|
|
50
|
-
const getMailer = async () => {
|
|
51
|
-
if (initializedMailer) {
|
|
52
|
-
return initializedMailer;
|
|
53
|
-
} else if (!defaultMailer) {
|
|
54
|
-
throw new _error.default({
|
|
55
|
-
message: "Mailer is not set.",
|
|
56
|
-
code: "MAILER_NOT_SET_ERROR"
|
|
57
|
-
});
|
|
58
|
-
} else if (typeof defaultMailer === "function") {
|
|
59
|
-
try {
|
|
60
|
-
initializedMailer = await defaultMailer();
|
|
61
|
-
return initializedMailer;
|
|
62
|
-
} catch (ex) {
|
|
63
|
-
throw new _error.default({
|
|
64
|
-
message: "Error while getting mailer.",
|
|
65
|
-
code: "MAILER_ERROR",
|
|
66
|
-
data: {
|
|
67
|
-
error: ex
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
initializedMailer = defaultMailer;
|
|
74
|
-
return initializedMailer;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
onBeforeSend,
|
|
79
|
-
onAfterSend,
|
|
80
|
-
onError,
|
|
81
|
-
getMailer,
|
|
82
|
-
setMailer: target => {
|
|
83
|
-
initializedMailer = undefined;
|
|
84
|
-
defaultMailer = target;
|
|
85
|
-
},
|
|
86
|
-
send: async ({
|
|
87
|
-
data
|
|
88
|
-
}) => {
|
|
89
|
-
const mailer = await getMailer();
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
await onBeforeSend.publish({
|
|
93
|
-
data
|
|
94
|
-
});
|
|
95
|
-
const response = await mailer.send(data);
|
|
96
|
-
await onAfterSend.publish({
|
|
97
|
-
data
|
|
98
|
-
});
|
|
99
|
-
return {
|
|
100
|
-
result: response.result,
|
|
101
|
-
error: response.error
|
|
102
|
-
};
|
|
103
|
-
} catch (ex) {
|
|
104
|
-
await onError.publish({
|
|
105
|
-
error: ex,
|
|
106
|
-
data
|
|
107
|
-
});
|
|
108
|
-
return {
|
|
109
|
-
result: null,
|
|
110
|
-
error: {
|
|
111
|
-
message: ex.message,
|
|
112
|
-
code: ex.code,
|
|
113
|
-
data: _objectSpread({
|
|
114
|
-
data
|
|
115
|
-
}, ex.data)
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
exports.createMailerCrud = createMailerCrud;
|
package/crud/mailer.crud.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createDefaultMailer","then","module","createSmtpMailer","createMailerCrud","config","defaultMailer","mailer","onBeforeSend","createTopic","onAfterSend","onError","attachOnBeforeSend","initializedMailer","getMailer","WebinyError","message","code","ex","data","error","setMailer","target","undefined","send","publish","response","result"],"sources":["mailer.crud.ts"],"sourcesContent":["import {\n MailerConfig,\n MailerContextObject,\n Mailer,\n MailerSetterParams,\n OnAfterMailerSendParams,\n OnBeforeMailerSendParams,\n OnErrorMailerParams\n} from \"~/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { attachOnBeforeSend } from \"~/crud/mailer/onBeforeSend\";\nimport WebinyError from \"@webiny/error\";\n\nconst createDefaultMailer = async () => {\n return import(\"~/mailers/createSmtpMailer\").then(module => {\n return module.createSmtpMailer();\n });\n};\n\nexport const createMailerCrud = (config?: MailerConfig): MailerContextObject => {\n let defaultMailer: MailerSetterParams | undefined = config?.mailer || createDefaultMailer;\n /**\n * We define possible events to be hooked into.\n */\n const onBeforeSend = createTopic<OnBeforeMailerSendParams>();\n const onAfterSend = createTopic<OnAfterMailerSendParams>();\n const onError = createTopic<OnErrorMailerParams>();\n /**\n * We attach our default ones.\n */\n attachOnBeforeSend({\n onBeforeSend\n });\n\n let initializedMailer: Mailer | undefined;\n\n const getMailer = async <T extends Mailer = Mailer>(): Promise<T> => {\n if (initializedMailer) {\n return initializedMailer as T;\n } else if (!defaultMailer) {\n throw new WebinyError({\n message: \"Mailer is not set.\",\n code: \"MAILER_NOT_SET_ERROR\"\n });\n } else if (typeof defaultMailer === \"function\") {\n try {\n initializedMailer = await defaultMailer();\n\n return initializedMailer as T;\n } catch (ex) {\n throw new WebinyError({\n message: \"Error while getting mailer.\",\n code: \"MAILER_ERROR\",\n data: {\n error: ex\n }\n });\n }\n }\n initializedMailer = defaultMailer;\n return initializedMailer as T;\n };\n\n return {\n onBeforeSend,\n onAfterSend,\n onError,\n getMailer,\n setMailer: target => {\n initializedMailer = undefined;\n defaultMailer = target;\n },\n send: async ({ data }) => {\n const mailer = await getMailer();\n try {\n await onBeforeSend.publish({\n data\n });\n const response = await mailer.send(data);\n await onAfterSend.publish({\n data\n });\n\n return {\n result: response.result,\n error: response.error\n };\n } catch (ex) {\n await onError.publish({\n error: ex,\n data\n });\n return {\n result: null,\n error: {\n message: ex.message,\n code: ex.code,\n data: {\n data,\n ...ex.data\n }\n }\n };\n }\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AASA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,mBAAmB,GAAG,YAAY;EACpC,OAAO,8FAAqCC,IAArC,CAA0CC,MAAM,IAAI;IACvD,OAAOA,MAAM,CAACC,gBAAP,EAAP;EACH,CAFM,CAAP;AAGH,CAJD;;AAMO,MAAMC,gBAAgB,GAAIC,MAAD,IAAgD;EAC5E,IAAIC,aAA6C,GAAG,CAAAD,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEE,MAAR,KAAkBP,mBAAtE;EACA;AACJ;AACA;;EACI,MAAMQ,YAAY,GAAG,IAAAC,mBAAA,GAArB;EACA,MAAMC,WAAW,GAAG,IAAAD,mBAAA,GAApB;EACA,MAAME,OAAO,GAAG,IAAAF,mBAAA,GAAhB;EACA;AACJ;AACA;;EACI,IAAAG,gCAAA,EAAmB;IACfJ;EADe,CAAnB;EAIA,IAAIK,iBAAJ;;EAEA,MAAMC,SAAS,GAAG,YAAmD;IACjE,IAAID,iBAAJ,EAAuB;MACnB,OAAOA,iBAAP;IACH,CAFD,MAEO,IAAI,CAACP,aAAL,EAAoB;MACvB,MAAM,IAAIS,cAAJ,CAAgB;QAClBC,OAAO,EAAE,oBADS;QAElBC,IAAI,EAAE;MAFY,CAAhB,CAAN;IAIH,CALM,MAKA,IAAI,OAAOX,aAAP,KAAyB,UAA7B,EAAyC;MAC5C,IAAI;QACAO,iBAAiB,GAAG,MAAMP,aAAa,EAAvC;QAEA,OAAOO,iBAAP;MACH,CAJD,CAIE,OAAOK,EAAP,EAAW;QACT,MAAM,IAAIH,cAAJ,CAAgB;UAClBC,OAAO,EAAE,6BADS;UAElBC,IAAI,EAAE,cAFY;UAGlBE,IAAI,EAAE;YACFC,KAAK,EAAEF;UADL;QAHY,CAAhB,CAAN;MAOH;IACJ;;IACDL,iBAAiB,GAAGP,aAApB;IACA,OAAOO,iBAAP;EACH,CAzBD;;EA2BA,OAAO;IACHL,YADG;IAEHE,WAFG;IAGHC,OAHG;IAIHG,SAJG;IAKHO,SAAS,EAAEC,MAAM,IAAI;MACjBT,iBAAiB,GAAGU,SAApB;MACAjB,aAAa,GAAGgB,MAAhB;IACH,CARE;IASHE,IAAI,EAAE,OAAO;MAAEL;IAAF,CAAP,KAAoB;MACtB,MAAMZ,MAAM,GAAG,MAAMO,SAAS,EAA9B;;MACA,IAAI;QACA,MAAMN,YAAY,CAACiB,OAAb,CAAqB;UACvBN;QADuB,CAArB,CAAN;QAGA,MAAMO,QAAQ,GAAG,MAAMnB,MAAM,CAACiB,IAAP,CAAYL,IAAZ,CAAvB;QACA,MAAMT,WAAW,CAACe,OAAZ,CAAoB;UACtBN;QADsB,CAApB,CAAN;QAIA,OAAO;UACHQ,MAAM,EAAED,QAAQ,CAACC,MADd;UAEHP,KAAK,EAAEM,QAAQ,CAACN;QAFb,CAAP;MAIH,CAbD,CAaE,OAAOF,EAAP,EAAW;QACT,MAAMP,OAAO,CAACc,OAAR,CAAgB;UAClBL,KAAK,EAAEF,EADW;UAElBC;QAFkB,CAAhB,CAAN;QAIA,OAAO;UACHQ,MAAM,EAAE,IADL;UAEHP,KAAK,EAAE;YACHJ,OAAO,EAAEE,EAAE,CAACF,OADT;YAEHC,IAAI,EAAEC,EAAE,CAACD,IAFN;YAGHE,IAAI;cACAA;YADA,GAEGD,EAAE,CAACC,IAFN;UAHD;QAFJ,CAAP;MAWH;IACJ;EAzCE,CAAP;AA2CH,CAvFM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createDummyMailer","sent","send","params","push","result","error","getAllSent"],"sources":["createDummyMailer.ts"],"sourcesContent":["import { Mailer, MailerSendData } from \"~/types\";\n\nexport interface DummyMailer extends Mailer {\n getAllSent: () => MailerSendData[];\n}\nexport const createDummyMailer = (): DummyMailer => {\n const sent: MailerSendData[] = [];\n\n return {\n send: async params => {\n sent.push(params);\n return {\n result: true,\n error: null\n };\n },\n getAllSent: () => {\n return sent;\n }\n };\n};\n"],"mappings":";;;;;;;AAKO,MAAMA,iBAAiB,GAAG,MAAmB;EAChD,MAAMC,IAAsB,GAAG,EAA/B;EAEA,OAAO;IACHC,IAAI,EAAE,MAAMC,MAAN,IAAgB;MAClBF,IAAI,CAACG,IAAL,CAAUD,MAAV;MACA,OAAO;QACHE,MAAM,EAAE,IADL;QAEHC,KAAK,EAAE;MAFJ,CAAP;IAIH,CAPE;IAQHC,UAAU,EAAE,MAAM;MACd,OAAON,IAAP;IACH;EAVE,CAAP;AAYH,CAfM"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Nodemailer docs
|
|
3
|
-
* https://nodemailer.com/about/
|
|
4
|
-
*/
|
|
5
|
-
import { Mailer } from "../types";
|
|
6
|
-
import { Transporter } from "nodemailer";
|
|
7
|
-
import SMTPTransport, { Options } from "nodemailer/lib/smtp-transport";
|
|
8
|
-
import { DummyMailer } from "./createDummyMailer";
|
|
9
|
-
export declare type SmtpMailerConfig = Options;
|
|
10
|
-
export interface SmtpMailer extends Mailer {
|
|
11
|
-
transporter: Transporter<SMTPTransport.SentMessageInfo>;
|
|
12
|
-
}
|
|
13
|
-
export declare const createSmtpMailer: (config?: SmtpMailerConfig) => SmtpMailer | DummyMailer;
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createSmtpMailer = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
|
-
var _nodemailer = _interopRequireDefault(require("nodemailer"));
|
|
15
|
-
|
|
16
|
-
var _createDummyMailer = require("./createDummyMailer");
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
22
|
-
const variables = {
|
|
23
|
-
host: process.env.WEBINY_MAILER_HOST,
|
|
24
|
-
user: process.env.WEBINY_MAILER_USER,
|
|
25
|
-
password: process.env.WEBINY_MAILER_PASSWORD
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const createSmtpMailer = config => {
|
|
29
|
-
/**
|
|
30
|
-
* If we have environment variables, use those as config.
|
|
31
|
-
*/
|
|
32
|
-
if (variables.host && variables.user && variables.password) {
|
|
33
|
-
if (config) {
|
|
34
|
-
throw new _error.default({
|
|
35
|
-
message: `Cannot use both config and environment variables to setup the nodemailer.`,
|
|
36
|
-
code: "SMTP_MAILER_INIT_ERROR"
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
config = {
|
|
41
|
-
host: variables.host,
|
|
42
|
-
auth: {
|
|
43
|
-
user: variables.user,
|
|
44
|
-
pass: variables.password
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
} else if (!config) {
|
|
48
|
-
console.log("There is no config or required environment variables defined. Using dummy mailer.");
|
|
49
|
-
return (0, _createDummyMailer.createDummyMailer)();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const transporter = _nodemailer.default.createTransport(_objectSpread({}, config));
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
transporter,
|
|
56
|
-
send: async params => {
|
|
57
|
-
const {
|
|
58
|
-
replyTo,
|
|
59
|
-
text,
|
|
60
|
-
html,
|
|
61
|
-
to,
|
|
62
|
-
bcc,
|
|
63
|
-
cc,
|
|
64
|
-
from,
|
|
65
|
-
subject
|
|
66
|
-
} = params;
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
const result = await transporter.sendMail({
|
|
70
|
-
replyTo,
|
|
71
|
-
bcc,
|
|
72
|
-
cc,
|
|
73
|
-
from,
|
|
74
|
-
text,
|
|
75
|
-
html,
|
|
76
|
-
to,
|
|
77
|
-
subject
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
if (result.messageId) {
|
|
81
|
-
return {
|
|
82
|
-
result: true,
|
|
83
|
-
error: null
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
throw new _error.default({
|
|
88
|
-
message: "nodemailer.sendMail does not have a messageId in the result. Something went wrong...",
|
|
89
|
-
code: "MAILER_ERROR",
|
|
90
|
-
data: _objectSpread({}, result)
|
|
91
|
-
});
|
|
92
|
-
} catch (ex) {
|
|
93
|
-
return {
|
|
94
|
-
result: null,
|
|
95
|
-
error: {
|
|
96
|
-
message: ex.message,
|
|
97
|
-
code: ex.code,
|
|
98
|
-
data: _objectSpread(_objectSpread({}, params), ex.data)
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
exports.createSmtpMailer = createSmtpMailer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["variables","host","process","env","WEBINY_MAILER_HOST","user","WEBINY_MAILER_USER","password","WEBINY_MAILER_PASSWORD","createSmtpMailer","config","WebinyError","message","code","auth","pass","console","log","createDummyMailer","transporter","nodemailer","createTransport","send","params","replyTo","text","html","to","bcc","cc","from","subject","result","sendMail","messageId","error","data","ex"],"sources":["createSmtpMailer.ts"],"sourcesContent":["/**\n * Nodemailer docs\n * https://nodemailer.com/about/\n */\nimport { Mailer } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport nodemailer, { Transporter } from \"nodemailer\";\nimport SMTPTransport, { Options } from \"nodemailer/lib/smtp-transport\";\nimport { createDummyMailer, DummyMailer } from \"~/mailers/createDummyMailer\";\n\nexport type SmtpMailerConfig = Options;\n\nexport interface SmtpMailer extends Mailer {\n transporter: Transporter<SMTPTransport.SentMessageInfo>;\n}\n\ninterface SmtpMailerEnvironmentVariables {\n host?: string;\n user?: string;\n password?: string;\n}\nconst variables: SmtpMailerEnvironmentVariables = {\n host: process.env.WEBINY_MAILER_HOST,\n user: process.env.WEBINY_MAILER_USER,\n password: process.env.WEBINY_MAILER_PASSWORD\n};\n\nexport const createSmtpMailer = (config?: SmtpMailerConfig): SmtpMailer | DummyMailer => {\n /**\n * If we have environment variables, use those as config.\n */\n if (variables.host && variables.user && variables.password) {\n if (config) {\n throw new WebinyError({\n message: `Cannot use both config and environment variables to setup the nodemailer.`,\n code: \"SMTP_MAILER_INIT_ERROR\"\n });\n }\n config = {\n host: variables.host,\n auth: {\n user: variables.user,\n pass: variables.password\n }\n };\n } else if (!config) {\n console.log(\n \"There is no config or required environment variables defined. Using dummy mailer.\"\n );\n return createDummyMailer();\n }\n const transporter = nodemailer.createTransport({\n ...config\n });\n\n return {\n transporter,\n send: async params => {\n const { replyTo, text, html, to, bcc, cc, from, subject } = params;\n\n try {\n const result = await transporter.sendMail({\n replyTo,\n bcc,\n cc,\n from,\n text,\n html,\n to,\n subject\n });\n if (result.messageId) {\n return {\n result: true,\n error: null\n };\n }\n\n throw new WebinyError({\n message:\n \"nodemailer.sendMail does not have a messageId in the result. Something went wrong...\",\n code: \"MAILER_ERROR\",\n data: {\n ...result\n }\n });\n } catch (ex) {\n return {\n result: null,\n error: {\n message: ex.message,\n code: ex.code,\n data: {\n ...params,\n ...ex.data\n }\n }\n };\n }\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AAKA;;AACA;;AAEA;;;;;;AAaA,MAAMA,SAAyC,GAAG;EAC9CC,IAAI,EAAEC,OAAO,CAACC,GAAR,CAAYC,kBAD4B;EAE9CC,IAAI,EAAEH,OAAO,CAACC,GAAR,CAAYG,kBAF4B;EAG9CC,QAAQ,EAAEL,OAAO,CAACC,GAAR,CAAYK;AAHwB,CAAlD;;AAMO,MAAMC,gBAAgB,GAAIC,MAAD,IAAyD;EACrF;AACJ;AACA;EACI,IAAIV,SAAS,CAACC,IAAV,IAAkBD,SAAS,CAACK,IAA5B,IAAoCL,SAAS,CAACO,QAAlD,EAA4D;IACxD,IAAIG,MAAJ,EAAY;MACR,MAAM,IAAIC,cAAJ,CAAgB;QAClBC,OAAO,EAAG,2EADQ;QAElBC,IAAI,EAAE;MAFY,CAAhB,CAAN;IAIH;;IACDH,MAAM,GAAG;MACLT,IAAI,EAAED,SAAS,CAACC,IADX;MAELa,IAAI,EAAE;QACFT,IAAI,EAAEL,SAAS,CAACK,IADd;QAEFU,IAAI,EAAEf,SAAS,CAACO;MAFd;IAFD,CAAT;EAOH,CAdD,MAcO,IAAI,CAACG,MAAL,EAAa;IAChBM,OAAO,CAACC,GAAR,CACI,mFADJ;IAGA,OAAO,IAAAC,oCAAA,GAAP;EACH;;EACD,MAAMC,WAAW,GAAGC,mBAAA,CAAWC,eAAX,mBACbX,MADa,EAApB;;EAIA,OAAO;IACHS,WADG;IAEHG,IAAI,EAAE,MAAMC,MAAN,IAAgB;MAClB,MAAM;QAAEC,OAAF;QAAWC,IAAX;QAAiBC,IAAjB;QAAuBC,EAAvB;QAA2BC,GAA3B;QAAgCC,EAAhC;QAAoCC,IAApC;QAA0CC;MAA1C,IAAsDR,MAA5D;;MAEA,IAAI;QACA,MAAMS,MAAM,GAAG,MAAMb,WAAW,CAACc,QAAZ,CAAqB;UACtCT,OADsC;UAEtCI,GAFsC;UAGtCC,EAHsC;UAItCC,IAJsC;UAKtCL,IALsC;UAMtCC,IANsC;UAOtCC,EAPsC;UAQtCI;QARsC,CAArB,CAArB;;QAUA,IAAIC,MAAM,CAACE,SAAX,EAAsB;UAClB,OAAO;YACHF,MAAM,EAAE,IADL;YAEHG,KAAK,EAAE;UAFJ,CAAP;QAIH;;QAED,MAAM,IAAIxB,cAAJ,CAAgB;UAClBC,OAAO,EACH,sFAFc;UAGlBC,IAAI,EAAE,cAHY;UAIlBuB,IAAI,oBACGJ,MADH;QAJc,CAAhB,CAAN;MAQH,CA1BD,CA0BE,OAAOK,EAAP,EAAW;QACT,OAAO;UACHL,MAAM,EAAE,IADL;UAEHG,KAAK,EAAE;YACHvB,OAAO,EAAEyB,EAAE,CAACzB,OADT;YAEHC,IAAI,EAAEwB,EAAE,CAACxB,IAFN;YAGHuB,IAAI,kCACGb,MADH,GAEGc,EAAE,CAACD,IAFN;UAHD;QAFJ,CAAP;MAWH;IACJ;EA5CE,CAAP;AA8CH,CA1EM"}
|