@webiny/api-mailer 5.34.8 → 5.35.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.js +0 -7
- package/context.js.map +1 -1
- package/crud/group.js +0 -3
- package/crud/group.js.map +1 -1
- package/crud/settings/hooks.js +3 -15
- package/crud/settings/hooks.js.map +1 -1
- package/crud/settings/model.js +2 -13
- package/crud/settings/model.js.map +1 -1
- package/crud/settings/password.js +0 -18
- package/crud/settings/password.js.map +1 -1
- package/crud/settings/secret.js +0 -6
- package/crud/settings/secret.js.map +1 -1
- package/crud/settings/transform.js +0 -12
- package/crud/settings/transform.js.map +1 -1
- package/crud/settings/validation.d.ts +45 -4
- package/crud/settings/validation.js +11 -24
- package/crud/settings/validation.js.map +1 -1
- package/crud/settings.crud.js +132 -195
- package/crud/settings.crud.js.map +1 -1
- package/crud/transport/onTransportBeforeSend.js +28 -37
- package/crud/transport/onTransportBeforeSend.js.map +1 -1
- package/crud/transporter.crud.js +3 -40
- package/crud/transporter.crud.js.map +1 -1
- package/graphql/index.js +0 -3
- package/graphql/index.js.map +1 -1
- package/graphql/settings.js +0 -8
- package/graphql/settings.js.map +1 -1
- package/index.d.ts +2 -5
- package/index.js +29 -35
- package/index.js.map +1 -1
- package/package.json +24 -24
- package/plugins/CreateTransportPlugin.js +0 -9
- package/plugins/CreateTransportPlugin.js.map +1 -1
- package/plugins/index.js +0 -2
- package/plugins/index.js.map +1 -1
- package/transports/createDummyTransport.js +1 -3
- package/transports/createDummyTransport.js.map +1 -1
- package/transports/createSmtpTransport.js +1 -16
- package/transports/createSmtpTransport.js.map +1 -1
- package/transports/index.d.ts +2 -0
- package/transports/index.js +27 -0
- package/transports/index.js.map +1 -0
- package/types.d.ts +1 -1
- package/types.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["requiredString","zod","string","requiredEmail","email","schema","object","to","array","optional","from","subject","max","min","cc","bcc","replyTo","text","html","refine","data","attachOnTransportBeforeSend","params","onTransportBeforeSend","subscribe","input","result","safeParse","success","WebinyError","message","code","error","ex"],"sources":["onTransportBeforeSend.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport zod from \"zod\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { OnTransportBeforeSendParams } from \"~/types\";\nimport { SafeParseReturnType } from \"zod/lib/types\";\n\nconst requiredString = zod.string();\nconst requiredEmail = requiredString.email();\n\nconst schema = zod\n .object({\n to: zod.array(requiredEmail).optional(),\n from: zod.string().email().optional(),\n subject: requiredString.max(1024).min(2),\n cc: zod.array(requiredEmail).optional(),\n bcc: zod.array(requiredEmail).optional(),\n replyTo: zod.string().email().optional(),\n text: zod.string().optional(),\n html: zod.string().optional()\n })\n .refine(data => {\n return !!data.text || !!data.html;\n }, \"Either text or html is required.\");\n\ntype SchemaType = zod.infer<typeof schema>;\n\ninterface Params {\n onTransportBeforeSend: Topic<OnTransportBeforeSendParams>;\n}\nexport const attachOnTransportBeforeSend = (params: Params) => {\n const { onTransportBeforeSend } = params;\n\n onTransportBeforeSend.subscribe(async ({ data: input }) => {\n let result: SafeParseReturnType<SchemaType, SchemaType>;\n try {\n result = schema.safeParse(input);\n\n if (result.success) {\n return;\n }\n throw new WebinyError({\n message: \"Error while validating e-mail params.\",\n code: \"VALIDATION_ERROR\",\n data: {\n error: result.error,\n input\n }\n });\n } catch (ex) {\n if (ex instanceof WebinyError) {\n throw ex;\n }\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 });\n};\n"],"mappings":";;;;;;;AAAA;AACA;AAKA,MAAMA,cAAc,GAAGC,YAAG,CAACC,MAAM,EAAE;AACnC,MAAMC,aAAa,GAAGH,cAAc,CAACI,KAAK,EAAE;AAE5C,MAAMC,MAAM,GAAGJ,YAAG,CACbK,MAAM,CAAC;EACJC,EAAE,EAAEN,YAAG,CAACO,KAAK,CAACL,aAAa,CAAC,CAACM,QAAQ,EAAE;EACvCC,IAAI,EAAET,YAAG,CAACC,MAAM,EAAE,CAACE,KAAK,EAAE,CAACK,QAAQ,EAAE;EACrCE,OAAO,EAAEX,cAAc,CAACY,GAAG,CAAC,IAAI,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACxCC,EAAE,EAAEb,YAAG,CAACO,KAAK,CAACL,aAAa,CAAC,CAACM,QAAQ,EAAE;EACvCM,GAAG,EAAEd,YAAG,CAACO,KAAK,CAACL,aAAa,CAAC,CAACM,QAAQ,EAAE;EACxCO,OAAO,EAAEf,YAAG,CAACC,MAAM,EAAE,CAACE,KAAK,EAAE,CAACK,QAAQ,EAAE;EACxCQ,IAAI,EAAEhB,YAAG,CAACC,MAAM,EAAE,CAACO,QAAQ,EAAE;EAC7BS,IAAI,EAAEjB,YAAG,CAACC,MAAM,EAAE,CAACO,QAAQ;AAC/B,CAAC,CAAC,CACDU,MAAM,CAACC,IAAI,IAAI;EACZ,OAAO,CAAC,CAACA,IAAI,CAACH,IAAI,IAAI,CAAC,CAACG,IAAI,CAACF,IAAI;AACrC,CAAC,EAAE,kCAAkC,CAAC;AAOnC,MAAMG,2BAA2B,GAAIC,MAAc,IAAK;EAC3D,MAAM;IAAEC;EAAsB,CAAC,GAAGD,MAAM;EAExCC,qBAAqB,CAACC,SAAS,CAAC,OAAO;IAAEJ,IAAI,EAAEK;EAAM,CAAC,KAAK;IACvD,IAAIC,MAAmD;IACvD,IAAI;MACAA,MAAM,GAAGrB,MAAM,CAACsB,SAAS,CAACF,KAAK,CAAC;MAEhC,IAAIC,MAAM,CAACE,OAAO,EAAE;QAChB;MACJ;MACA,MAAM,IAAIC,cAAW,CAAC;QAClBC,OAAO,EAAE,uCAAuC;QAChDC,IAAI,EAAE,kBAAkB;QACxBX,IAAI,EAAE;UACFY,KAAK,EAAEN,MAAM,CAACM,KAAK;UACnBP;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOQ,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYJ,cAAW,EAAE;QAC3B,MAAMI,EAAE;MACZ;MACA,MAAM,IAAIJ,cAAW,CAAC;QAClBC,OAAO,EAAE,uCAAuC;QAChDC,IAAI,EAAE,kBAAkB;QACxBX,IAAI,EAAE;UACFK,KAAK;UACLO,KAAK,EAAEC;QACX;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
|
package/crud/transporter.crud.js
CHANGED
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createTransporterCrud = void 0;
|
|
9
|
-
|
|
10
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
9
|
var _pubsub = require("@webiny/pubsub");
|
|
13
|
-
|
|
14
10
|
var _onTransportBeforeSend = require("./transport/onTransportBeforeSend");
|
|
15
|
-
|
|
16
11
|
var _plugins = require("../plugins");
|
|
17
|
-
|
|
18
12
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
19
|
-
|
|
20
13
|
var _validation = require("./settings/validation");
|
|
21
|
-
|
|
22
14
|
const buildTransporter = async params => {
|
|
23
15
|
const {
|
|
24
16
|
settings,
|
|
25
17
|
context,
|
|
26
18
|
plugins
|
|
27
19
|
} = params;
|
|
28
|
-
|
|
29
20
|
for (const plugin of plugins) {
|
|
30
21
|
try {
|
|
31
22
|
return await plugin.buildMailerTransport({
|
|
@@ -37,20 +28,15 @@ const buildTransporter = async params => {
|
|
|
37
28
|
console.log(ex.message);
|
|
38
29
|
}
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
throw new _error.default("Could not build mailer via any of the available plugins.", "MAILER_PLUGINS_ERROR");
|
|
42
32
|
};
|
|
43
|
-
|
|
44
33
|
const getPort = value => {
|
|
45
34
|
const port = Number(value);
|
|
46
|
-
|
|
47
35
|
if (!!value && isNaN(port) === false) {
|
|
48
36
|
return port;
|
|
49
37
|
}
|
|
50
|
-
|
|
51
38
|
return 25;
|
|
52
39
|
};
|
|
53
|
-
|
|
54
40
|
const getDefaultSettings = () => {
|
|
55
41
|
const input = {
|
|
56
42
|
host: process.env.WEBINY_MAILER_HOST,
|
|
@@ -63,24 +49,13 @@ const getDefaultSettings = () => {
|
|
|
63
49
|
/**
|
|
64
50
|
* No need to do the validation if there is not at least one variable defined.
|
|
65
51
|
*/
|
|
66
|
-
|
|
67
52
|
const hasAtLeastOneValue = Object.values(input).some(value => !!String(value).trim());
|
|
68
|
-
|
|
69
53
|
if (!hasAtLeastOneValue) {
|
|
70
54
|
return null;
|
|
71
55
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const result = _validation.createValidation.validate(input);
|
|
75
|
-
|
|
76
|
-
if (!result.error) {
|
|
77
|
-
return result.value;
|
|
78
|
-
}
|
|
79
|
-
} catch (ex) {}
|
|
80
|
-
|
|
81
|
-
return null;
|
|
56
|
+
const result = _validation.createValidation.safeParse(input);
|
|
57
|
+
return result.success ? result.data : null;
|
|
82
58
|
};
|
|
83
|
-
|
|
84
59
|
const createTransporterCrud = async context => {
|
|
85
60
|
const transporters = {};
|
|
86
61
|
const defaultSettings = getDefaultSettings();
|
|
@@ -89,32 +64,26 @@ const createTransporterCrud = async context => {
|
|
|
89
64
|
* The last plugins are our default ones with the default configurations.
|
|
90
65
|
* If users wants to override them, they just need to add new plugin with their own configuration and it will be constructed first.
|
|
91
66
|
*/
|
|
92
|
-
|
|
93
67
|
const plugins = context.plugins.byType(_plugins.CreateTransportPlugin.type).reverse();
|
|
68
|
+
|
|
94
69
|
/**
|
|
95
70
|
* We define possible events to be hooked into.
|
|
96
71
|
*/
|
|
97
|
-
|
|
98
72
|
const onTransportBeforeSend = (0, _pubsub.createTopic)("mailer.onTransportBeforeSend");
|
|
99
73
|
const onTransportAfterSend = (0, _pubsub.createTopic)("mailer.onTransportAfterSend");
|
|
100
74
|
const onTransportError = (0, _pubsub.createTopic)("mailer.onTransportError");
|
|
101
75
|
/**
|
|
102
76
|
* We attach our default ones.
|
|
103
77
|
*/
|
|
104
|
-
|
|
105
78
|
(0, _onTransportBeforeSend.attachOnTransportBeforeSend)({
|
|
106
79
|
onTransportBeforeSend
|
|
107
80
|
});
|
|
108
|
-
|
|
109
81
|
const getTransport = async () => {
|
|
110
82
|
const tenant = context.tenancy.getCurrentTenant().id;
|
|
111
|
-
|
|
112
83
|
if (transporters[tenant]) {
|
|
113
84
|
return transporters[tenant];
|
|
114
85
|
}
|
|
115
|
-
|
|
116
86
|
let settings = null;
|
|
117
|
-
|
|
118
87
|
try {
|
|
119
88
|
settings = await context.mailer.getSettings();
|
|
120
89
|
} catch (ex) {
|
|
@@ -123,11 +92,9 @@ const createTransporterCrud = async context => {
|
|
|
123
92
|
console.log(ex.code);
|
|
124
93
|
}
|
|
125
94
|
}
|
|
126
|
-
|
|
127
95
|
if (!settings && !defaultSettings) {
|
|
128
96
|
console.log(`There are no Mailer transport settings for tenant "${tenant}".`);
|
|
129
97
|
}
|
|
130
|
-
|
|
131
98
|
const transporter = await buildTransporter({
|
|
132
99
|
settings: settings || defaultSettings,
|
|
133
100
|
plugins,
|
|
@@ -136,7 +103,6 @@ const createTransporterCrud = async context => {
|
|
|
136
103
|
transporters[tenant] = transporter;
|
|
137
104
|
return transporter;
|
|
138
105
|
};
|
|
139
|
-
|
|
140
106
|
return {
|
|
141
107
|
onTransportBeforeSend,
|
|
142
108
|
onTransportAfterSend,
|
|
@@ -144,7 +110,6 @@ const createTransporterCrud = async context => {
|
|
|
144
110
|
getTransport,
|
|
145
111
|
sendMail: async data => {
|
|
146
112
|
const transport = await getTransport();
|
|
147
|
-
|
|
148
113
|
if (!transport) {
|
|
149
114
|
return {
|
|
150
115
|
result: null,
|
|
@@ -154,7 +119,6 @@ const createTransporterCrud = async context => {
|
|
|
154
119
|
}
|
|
155
120
|
};
|
|
156
121
|
}
|
|
157
|
-
|
|
158
122
|
try {
|
|
159
123
|
await onTransportBeforeSend.publish({
|
|
160
124
|
data,
|
|
@@ -189,5 +153,4 @@ const createTransporterCrud = async context => {
|
|
|
189
153
|
}
|
|
190
154
|
};
|
|
191
155
|
};
|
|
192
|
-
|
|
193
156
|
exports.createTransporterCrud = createTransporterCrud;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["buildTransporter","params","settings","context","plugins","plugin","buildMailerTransport","ex","console","log","name","message","WebinyError","getPort","value","port","Number","isNaN","getDefaultSettings","input","host","process","env","WEBINY_MAILER_HOST","WEBINY_MAILER_PORT","user","WEBINY_MAILER_USER","password","WEBINY_MAILER_PASSWORD","replyTo","WEBINY_MAILER_REPLY_TO","from","WEBINY_MAILER_FROM","hasAtLeastOneValue","Object","values","some","String","trim","result","createValidation","validate","error","createTransporterCrud","transporters","defaultSettings","byType","CreateTransportPlugin","type","reverse","onTransportBeforeSend","createTopic","onTransportAfterSend","onTransportError","attachOnTransportBeforeSend","getTransport","tenant","tenancy","getCurrentTenant","id","mailer","getSettings","code","transporter","sendMail","data","transport","publish","response","send"],"sources":["transporter.crud.ts"],"sourcesContent":["import {\n MailerContext,\n Transport,\n OnTransportAfterSendParams,\n OnTransportBeforeSendParams,\n OnTransportErrorParams,\n TransportSettings,\n MailerTransporterContext\n} from \"~/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { attachOnTransportBeforeSend } from \"~/crud/transport/onTransportBeforeSend\";\nimport { CreateTransportPlugin } from \"~/plugins\";\nimport WebinyError from \"@webiny/error\";\n\nimport { createValidation } from \"./settings/validation\";\n\ninterface BuildMailerParams {\n plugins: CreateTransportPlugin[];\n settings: TransportSettings | null;\n context: MailerContext;\n}\n\nconst buildTransporter = async (params: BuildMailerParams): Promise<Transport> => {\n const { settings, context, plugins } = params;\n\n for (const plugin of plugins) {\n try {\n return await plugin.buildMailerTransport({\n settings,\n context\n });\n } catch (ex) {\n console.log(`Could not build mailer with plugin \"${plugin.name}\".`);\n console.log(ex.message);\n }\n }\n throw new WebinyError(\n \"Could not build mailer via any of the available plugins.\",\n \"MAILER_PLUGINS_ERROR\"\n );\n};\n\nconst getPort = (value: any) => {\n const port = Number(value);\n if (!!value && isNaN(port) === false) {\n return port;\n }\n return 25;\n};\n\nconst getDefaultSettings = (): TransportSettings | null => {\n const input: Partial<TransportSettings> = {\n host: process.env.WEBINY_MAILER_HOST,\n port: getPort(process.env.WEBINY_MAILER_PORT),\n user: process.env.WEBINY_MAILER_USER,\n password: process.env.WEBINY_MAILER_PASSWORD,\n replyTo: process.env.WEBINY_MAILER_REPLY_TO,\n from: process.env.WEBINY_MAILER_FROM\n };\n /**\n * No need to do the validation if there is not at least one variable defined.\n */\n const hasAtLeastOneValue = Object.values(input).some(value => !!String(value).trim());\n if (!hasAtLeastOneValue) {\n return null;\n }\n\n try {\n const result = createValidation.validate(input);\n\n if (!result.error) {\n return result.value;\n }\n } catch (ex) {}\n\n return null;\n};\n\nexport const createTransporterCrud = async (\n context: MailerContext\n): Promise<MailerTransporterContext> => {\n const transporters: Record<string, Transport> = {};\n\n const defaultSettings: TransportSettings | null = getDefaultSettings();\n /**\n * We need the last possible plugin which is defined.\n * The last plugins are our default ones with the default configurations.\n * If users wants to override them, they just need to add new plugin with their own configuration and it will be constructed first.\n */\n const plugins = context.plugins\n .byType<CreateTransportPlugin>(CreateTransportPlugin.type)\n .reverse();\n\n /**\n * We define possible events to be hooked into.\n */\n const onTransportBeforeSend = createTopic<OnTransportBeforeSendParams>(\n \"mailer.onTransportBeforeSend\"\n );\n const onTransportAfterSend = createTopic<OnTransportAfterSendParams>(\n \"mailer.onTransportAfterSend\"\n );\n const onTransportError = createTopic<OnTransportErrorParams>(\"mailer.onTransportError\");\n /**\n * We attach our default ones.\n */\n attachOnTransportBeforeSend({\n onTransportBeforeSend\n });\n\n const getTransport = async (): Promise<Transport | null> => {\n const tenant = context.tenancy.getCurrentTenant().id;\n\n if (transporters[tenant]) {\n return transporters[tenant];\n }\n\n let settings: TransportSettings | null = null;\n try {\n settings = await context.mailer.getSettings();\n } catch (ex) {\n if (ex.code !== \"PASSWORD_SECRET_ERROR\") {\n console.log(ex.message);\n console.log(ex.code);\n }\n }\n if (!settings && !defaultSettings) {\n console.log(`There are no Mailer transport settings for tenant \"${tenant}\".`);\n }\n const transporter = await buildTransporter({\n settings: settings || defaultSettings,\n plugins,\n context\n });\n\n transporters[tenant] = transporter;\n\n return transporter;\n };\n\n return {\n onTransportBeforeSend,\n onTransportAfterSend,\n onTransportError,\n getTransport,\n sendMail: async data => {\n const transport = await getTransport();\n if (!transport) {\n return {\n result: null,\n error: {\n message: \"There is no transport available.\",\n code: \"NO_TRANSPORT_DEFINED\"\n }\n };\n }\n try {\n await onTransportBeforeSend.publish({\n data,\n transport\n });\n const response = await transport.send(data);\n await onTransportAfterSend.publish({\n data,\n transport\n });\n\n return {\n result: response.result,\n error: response.error\n };\n } catch (ex) {\n await onTransportError.publish({\n error: ex,\n data,\n transport\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":"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"}
|
|
1
|
+
{"version":3,"names":["buildTransporter","params","settings","context","plugins","plugin","buildMailerTransport","ex","console","log","name","message","WebinyError","getPort","value","port","Number","isNaN","getDefaultSettings","input","host","process","env","WEBINY_MAILER_HOST","WEBINY_MAILER_PORT","user","WEBINY_MAILER_USER","password","WEBINY_MAILER_PASSWORD","replyTo","WEBINY_MAILER_REPLY_TO","from","WEBINY_MAILER_FROM","hasAtLeastOneValue","Object","values","some","String","trim","result","createValidation","safeParse","success","data","createTransporterCrud","transporters","defaultSettings","byType","CreateTransportPlugin","type","reverse","onTransportBeforeSend","createTopic","onTransportAfterSend","onTransportError","attachOnTransportBeforeSend","getTransport","tenant","tenancy","getCurrentTenant","id","mailer","getSettings","code","transporter","sendMail","transport","error","publish","response","send"],"sources":["transporter.crud.ts"],"sourcesContent":["import {\n MailerContext,\n Transport,\n OnTransportAfterSendParams,\n OnTransportBeforeSendParams,\n OnTransportErrorParams,\n TransportSettings,\n MailerTransporterContext\n} from \"~/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { attachOnTransportBeforeSend } from \"~/crud/transport/onTransportBeforeSend\";\nimport { CreateTransportPlugin } from \"~/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { createValidation } from \"./settings/validation\";\n\ninterface BuildMailerParams {\n plugins: CreateTransportPlugin[];\n settings: TransportSettings | null;\n context: MailerContext;\n}\n\nconst buildTransporter = async (params: BuildMailerParams): Promise<Transport> => {\n const { settings, context, plugins } = params;\n\n for (const plugin of plugins) {\n try {\n return await plugin.buildMailerTransport({\n settings,\n context\n });\n } catch (ex) {\n console.log(`Could not build mailer with plugin \"${plugin.name}\".`);\n console.log(ex.message);\n }\n }\n throw new WebinyError(\n \"Could not build mailer via any of the available plugins.\",\n \"MAILER_PLUGINS_ERROR\"\n );\n};\n\nconst getPort = (value: any): number => {\n const port = Number(value);\n if (!!value && isNaN(port) === false) {\n return port;\n }\n return 25;\n};\n\nconst getDefaultSettings = (): TransportSettings | null => {\n const input: Partial<TransportSettings> = {\n host: process.env.WEBINY_MAILER_HOST,\n port: getPort(process.env.WEBINY_MAILER_PORT),\n user: process.env.WEBINY_MAILER_USER,\n password: process.env.WEBINY_MAILER_PASSWORD,\n replyTo: process.env.WEBINY_MAILER_REPLY_TO,\n from: process.env.WEBINY_MAILER_FROM\n };\n /**\n * No need to do the validation if there is not at least one variable defined.\n */\n const hasAtLeastOneValue = Object.values(input).some(value => !!String(value).trim());\n if (!hasAtLeastOneValue) {\n return null;\n }\n\n const result = createValidation.safeParse(input);\n\n return result.success ? (result.data as TransportSettings) : null;\n};\n\nexport const createTransporterCrud = async (\n context: MailerContext\n): Promise<MailerTransporterContext> => {\n const transporters: Record<string, Transport> = {};\n\n const defaultSettings: TransportSettings | null = getDefaultSettings();\n /**\n * We need the last possible plugin which is defined.\n * The last plugins are our default ones with the default configurations.\n * If users wants to override them, they just need to add new plugin with their own configuration and it will be constructed first.\n */\n const plugins = context.plugins\n .byType<CreateTransportPlugin>(CreateTransportPlugin.type)\n .reverse();\n\n /**\n * We define possible events to be hooked into.\n */\n const onTransportBeforeSend = createTopic<OnTransportBeforeSendParams>(\n \"mailer.onTransportBeforeSend\"\n );\n const onTransportAfterSend = createTopic<OnTransportAfterSendParams>(\n \"mailer.onTransportAfterSend\"\n );\n const onTransportError = createTopic<OnTransportErrorParams>(\"mailer.onTransportError\");\n /**\n * We attach our default ones.\n */\n attachOnTransportBeforeSend({\n onTransportBeforeSend\n });\n\n const getTransport = async (): Promise<Transport | null> => {\n const tenant = context.tenancy.getCurrentTenant().id;\n\n if (transporters[tenant]) {\n return transporters[tenant];\n }\n\n let settings: TransportSettings | null = null;\n try {\n settings = await context.mailer.getSettings();\n } catch (ex) {\n if (ex.code !== \"PASSWORD_SECRET_ERROR\") {\n console.log(ex.message);\n console.log(ex.code);\n }\n }\n if (!settings && !defaultSettings) {\n console.log(`There are no Mailer transport settings for tenant \"${tenant}\".`);\n }\n const transporter = await buildTransporter({\n settings: settings || defaultSettings,\n plugins,\n context\n });\n\n transporters[tenant] = transporter;\n\n return transporter;\n };\n\n return {\n onTransportBeforeSend,\n onTransportAfterSend,\n onTransportError,\n getTransport,\n sendMail: async data => {\n const transport = await getTransport();\n if (!transport) {\n return {\n result: null,\n error: {\n message: \"There is no transport available.\",\n code: \"NO_TRANSPORT_DEFINED\"\n }\n };\n }\n try {\n await onTransportBeforeSend.publish({\n data,\n transport\n });\n const response = await transport.send(data);\n await onTransportAfterSend.publish({\n data,\n transport\n });\n\n return {\n result: response.result,\n error: response.error\n };\n } catch (ex) {\n await onTransportError.publish({\n error: ex,\n data,\n transport\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":"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"}
|
package/graphql/index.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createGraphQL = void 0;
|
|
7
|
-
|
|
8
7
|
var _settings = require("./settings");
|
|
9
|
-
|
|
10
8
|
const createGraphQL = () => {
|
|
11
9
|
return [(0, _settings.createSettingsGraphQL)()];
|
|
12
10
|
};
|
|
13
|
-
|
|
14
11
|
exports.createGraphQL = createGraphQL;
|
package/graphql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createGraphQL","createSettingsGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createSettingsGraphQL } from \"~/graphql/settings\";\n\nexport const createGraphQL = () => {\n return [createSettingsGraphQL()];\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["createGraphQL","createSettingsGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createSettingsGraphQL } from \"~/graphql/settings\";\n\nexport const createGraphQL = () => {\n return [createSettingsGraphQL()];\n};\n"],"mappings":";;;;;;AAAA;AAEO,MAAMA,aAAa,GAAG,MAAM;EAC/B,OAAO,CAAC,IAAAC,+BAAqB,GAAE,CAAC;AACpC,CAAC;AAAC"}
|
package/graphql/settings.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createSettingsGraphQL = void 0;
|
|
7
|
-
|
|
8
7
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
9
|
-
|
|
10
8
|
const emptyResolver = () => ({});
|
|
11
|
-
|
|
12
9
|
const createSettingsGraphQL = () => {
|
|
13
10
|
return new _handlerGraphql.GraphQLSchemaPlugin({
|
|
14
11
|
typeDefs: `
|
|
@@ -66,12 +63,10 @@ const createSettingsGraphQL = () => {
|
|
|
66
63
|
/**
|
|
67
64
|
* We want to remove the password from the response, if it exists.
|
|
68
65
|
*/
|
|
69
|
-
|
|
70
66
|
if (settings !== null && settings !== void 0 && settings.password) {
|
|
71
67
|
// @ts-ignore
|
|
72
68
|
delete settings.password;
|
|
73
69
|
}
|
|
74
|
-
|
|
75
70
|
return new _handlerGraphql.Response(settings);
|
|
76
71
|
} catch (ex) {
|
|
77
72
|
return new _handlerGraphql.ErrorResponse(ex);
|
|
@@ -90,12 +85,10 @@ const createSettingsGraphQL = () => {
|
|
|
90
85
|
/**
|
|
91
86
|
* We want to remove the password from the response, if it exists.
|
|
92
87
|
*/
|
|
93
|
-
|
|
94
88
|
if (settings !== null && settings !== void 0 && settings.password) {
|
|
95
89
|
// @ts-ignore
|
|
96
90
|
delete settings.password;
|
|
97
91
|
}
|
|
98
|
-
|
|
99
92
|
return new _handlerGraphql.Response(settings);
|
|
100
93
|
} catch (ex) {
|
|
101
94
|
return new _handlerGraphql.ErrorResponse(ex);
|
|
@@ -105,5 +98,4 @@ const createSettingsGraphQL = () => {
|
|
|
105
98
|
}
|
|
106
99
|
});
|
|
107
100
|
};
|
|
108
|
-
|
|
109
101
|
exports.createSettingsGraphQL = createSettingsGraphQL;
|
package/graphql/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["emptyResolver","createSettingsGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","mailer","MailerQuery","getSettings","_","__","context","settings","password","Response","ex","ErrorResponse","Mutation","MailerMutation","saveSettings","args","input","data"],"sources":["settings.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin, Response } from \"@webiny/handler-graphql\";\nimport { MailerContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nexport const createSettingsGraphQL = () => {\n return new GraphQLSchemaPlugin<MailerContext>({\n typeDefs: `\n type MailerTransportSettingsError {\n message: String!\n code: String\n data: JSON\n }\n \n type MailerTransportSettings {\n host: String\n port: Number\n user: String\n from: String\n replyTo: String\n }\n \n type MailerTransportSettingsResponse {\n data: MailerTransportSettings\n error: MailerTransportSettingsError\n }\n \n type MailerQuery {\n getSettings: MailerTransportSettingsResponse!\n }\n \n input MailerTransportSettingsInput {\n host: String!\n port: Number\n user: String!\n password: String\n from: String!\n replyTo: String\n }\n \n type MailerMutation {\n saveSettings(data: MailerTransportSettingsInput!): MailerTransportSettingsResponse!\n }\n \n extend type Query {\n mailer: MailerQuery\n }\n extend type Mutation {\n mailer: MailerMutation\n }\n `,\n resolvers: {\n Query: {\n mailer: emptyResolver\n },\n MailerQuery: {\n getSettings: async (_, __, context) => {\n try {\n const settings = await context.mailer.getSettings();\n /**\n * We want to remove the password from the response, if it exists.\n */\n if (settings?.password) {\n // @ts-ignore\n delete settings.password;\n }\n return new Response(settings);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n },\n Mutation: {\n mailer: emptyResolver\n },\n MailerMutation: {\n saveSettings: async (_, args: any, context) => {\n try {\n const settings = await context.mailer.saveSettings({\n input: args.data\n });\n /**\n * We want to remove the password from the response, if it exists.\n */\n if (settings?.password) {\n // @ts-ignore\n delete settings.password;\n }\n return new Response(settings);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n }\n }\n });\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["emptyResolver","createSettingsGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","mailer","MailerQuery","getSettings","_","__","context","settings","password","Response","ex","ErrorResponse","Mutation","MailerMutation","saveSettings","args","input","data"],"sources":["settings.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin, Response } from \"@webiny/handler-graphql\";\nimport { MailerContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nexport const createSettingsGraphQL = () => {\n return new GraphQLSchemaPlugin<MailerContext>({\n typeDefs: `\n type MailerTransportSettingsError {\n message: String!\n code: String\n data: JSON\n }\n \n type MailerTransportSettings {\n host: String\n port: Number\n user: String\n from: String\n replyTo: String\n }\n \n type MailerTransportSettingsResponse {\n data: MailerTransportSettings\n error: MailerTransportSettingsError\n }\n \n type MailerQuery {\n getSettings: MailerTransportSettingsResponse!\n }\n \n input MailerTransportSettingsInput {\n host: String!\n port: Number\n user: String!\n password: String\n from: String!\n replyTo: String\n }\n \n type MailerMutation {\n saveSettings(data: MailerTransportSettingsInput!): MailerTransportSettingsResponse!\n }\n \n extend type Query {\n mailer: MailerQuery\n }\n extend type Mutation {\n mailer: MailerMutation\n }\n `,\n resolvers: {\n Query: {\n mailer: emptyResolver\n },\n MailerQuery: {\n getSettings: async (_, __, context) => {\n try {\n const settings = await context.mailer.getSettings();\n /**\n * We want to remove the password from the response, if it exists.\n */\n if (settings?.password) {\n // @ts-ignore\n delete settings.password;\n }\n return new Response(settings);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n },\n Mutation: {\n mailer: emptyResolver\n },\n MailerMutation: {\n saveSettings: async (_, args: any, context) => {\n try {\n const settings = await context.mailer.saveSettings({\n input: args.data\n });\n /**\n * We want to remove the password from the response, if it exists.\n */\n if (settings?.password) {\n // @ts-ignore\n delete settings.password;\n }\n return new Response(settings);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n }\n }\n }\n });\n};\n"],"mappings":";;;;;;AAAA;AAGA,MAAMA,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;AAEzB,MAAMC,qBAAqB,GAAG,MAAM;EACvC,OAAO,IAAIC,mCAAmB,CAAgB;IAC1CC,QAAQ,EAAG;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,MAAM,EAAEN;MACZ,CAAC;MACDO,WAAW,EAAE;QACTC,WAAW,EAAE,OAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UACnC,IAAI;YACA,MAAMC,QAAQ,GAAG,MAAMD,OAAO,CAACL,MAAM,CAACE,WAAW,EAAE;YACnD;AACxB;AACA;YACwB,IAAII,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,QAAQ,EAAE;cACpB;cACA,OAAOD,QAAQ,CAACC,QAAQ;YAC5B;YACA,OAAO,IAAIC,wBAAQ,CAACF,QAAQ,CAAC;UACjC,CAAC,CAAC,OAAOG,EAAE,EAAE;YACT,OAAO,IAAIC,6BAAa,CAACD,EAAE,CAAC;UAChC;QACJ;MACJ,CAAC;MACDE,QAAQ,EAAE;QACNX,MAAM,EAAEN;MACZ,CAAC;MACDkB,cAAc,EAAE;QACZC,YAAY,EAAE,OAAOV,CAAC,EAAEW,IAAS,EAAET,OAAO,KAAK;UAC3C,IAAI;YACA,MAAMC,QAAQ,GAAG,MAAMD,OAAO,CAACL,MAAM,CAACa,YAAY,CAAC;cAC/CE,KAAK,EAAED,IAAI,CAACE;YAChB,CAAC,CAAC;YACF;AACxB;AACA;YACwB,IAAIV,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEC,QAAQ,EAAE;cACpB;cACA,OAAOD,QAAQ,CAACC,QAAQ;YAC5B;YACA,OAAO,IAAIC,wBAAQ,CAACF,QAAQ,CAAC;UACjC,CAAC,CAAC,OAAOG,EAAE,EAAE;YACT,OAAO,IAAIC,6BAAa,CAACD,EAAE,CAAC;UAChC;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
|
package/index.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { PluginCollection } from "@webiny/plugins/types";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { createTransport } from "./plugins";
|
|
5
|
-
export { createDummyTransport, createSmtpTransport, createTransport };
|
|
6
|
-
export type { SmtpTransport, SmtpTransportConfig, DummyTransport };
|
|
2
|
+
export * from "./plugins";
|
|
3
|
+
export * from "./transports";
|
|
7
4
|
export declare const createMailerContext: () => PluginCollection;
|
|
8
5
|
export declare const createMailerGraphQL: () => import("@webiny/handler-graphql").GraphQLSchemaPlugin<import("./types").MailerContext>[];
|
package/index.js
CHANGED
|
@@ -1,46 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
});
|
|
7
|
+
var _exportNames = {
|
|
8
|
+
createMailerContext: true,
|
|
9
|
+
createMailerGraphQL: true
|
|
10
|
+
};
|
|
14
11
|
exports.createMailerGraphQL = exports.createMailerContext = void 0;
|
|
15
|
-
Object.defineProperty(exports, "createSmtpTransport", {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function () {
|
|
18
|
-
return _createSmtpTransport.createSmtpTransport;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
Object.defineProperty(exports, "createTransport", {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _plugins.createTransport;
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
|
|
28
12
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
29
|
-
|
|
30
13
|
var _context = require("./context");
|
|
31
|
-
|
|
32
14
|
var _createDummyTransport = require("./transports/createDummyTransport");
|
|
33
|
-
|
|
34
15
|
var _createSmtpTransport = require("./transports/createSmtpTransport");
|
|
35
|
-
|
|
36
16
|
var _plugins = require("./plugins");
|
|
37
|
-
|
|
17
|
+
Object.keys(_plugins).forEach(function (key) {
|
|
18
|
+
if (key === "default" || key === "__esModule") return;
|
|
19
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
|
+
if (key in exports && exports[key] === _plugins[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _plugins[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
38
28
|
var _model = require("./crud/settings/model");
|
|
39
|
-
|
|
40
29
|
var _group = require("./crud/group");
|
|
41
|
-
|
|
42
30
|
var _graphql = require("./graphql");
|
|
43
|
-
|
|
31
|
+
var _transports = require("./transports");
|
|
32
|
+
Object.keys(_transports).forEach(function (key) {
|
|
33
|
+
if (key === "default" || key === "__esModule") return;
|
|
34
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
35
|
+
if (key in exports && exports[key] === _transports[key]) return;
|
|
36
|
+
Object.defineProperty(exports, key, {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _transports[key];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
44
43
|
const createMailerContext = () => {
|
|
45
44
|
const group = (0, _group.createGroup)();
|
|
46
45
|
return [group,
|
|
@@ -53,7 +52,7 @@ const createMailerContext = () => {
|
|
|
53
52
|
*/
|
|
54
53
|
(0, _plugins.createTransport)(async () => {
|
|
55
54
|
const plugin = await (0, _createDummyTransport.createDummyTransport)();
|
|
56
|
-
plugin.name = "dummy-default";
|
|
55
|
+
plugin.name = "mailer.dummy-default";
|
|
57
56
|
return plugin;
|
|
58
57
|
}),
|
|
59
58
|
/**
|
|
@@ -66,24 +65,19 @@ const createMailerContext = () => {
|
|
|
66
65
|
* We need to map our settings to the required settings for the SMTP NodeMailer transport.
|
|
67
66
|
*/
|
|
68
67
|
const config = (0, _objectSpread2.default)({}, settings || {});
|
|
69
|
-
|
|
70
68
|
if (settings) {
|
|
71
69
|
config.auth = {
|
|
72
70
|
user: settings.user,
|
|
73
71
|
pass: settings.password
|
|
74
72
|
};
|
|
75
73
|
}
|
|
76
|
-
|
|
77
74
|
const plugin = await (0, _createSmtpTransport.createSmtpTransport)(config);
|
|
78
|
-
plugin.name = "smtp-default";
|
|
75
|
+
plugin.name = "mailer.smtp-default";
|
|
79
76
|
return plugin;
|
|
80
77
|
}), (0, _context.createMailerContext)()];
|
|
81
78
|
};
|
|
82
|
-
|
|
83
79
|
exports.createMailerContext = createMailerContext;
|
|
84
|
-
|
|
85
80
|
const createMailerGraphQL = () => {
|
|
86
81
|
return [...(0, _graphql.createGraphQL)()];
|
|
87
82
|
};
|
|
88
|
-
|
|
89
83
|
exports.createMailerGraphQL = createMailerGraphQL;
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createMailerContext","group","createGroup","createSettingsModel","createTransport","plugin","createDummyTransport","name","settings","config","auth","user","pass","password","createSmtpTransport","createMailerContextPlugin","createMailerGraphQL","createGraphQL"],"sources":["index.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"names":["createMailerContext","group","createGroup","createSettingsModel","createTransport","plugin","createDummyTransport","name","settings","config","auth","user","pass","password","createSmtpTransport","createMailerContextPlugin","createMailerGraphQL","createGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createMailerContext as createMailerContextPlugin } from \"~/context\";\nimport { createDummyTransport } from \"~/transports/createDummyTransport\";\nimport { createSmtpTransport, SmtpTransportConfig } from \"~/transports/createSmtpTransport\";\nimport { createTransport } from \"~/plugins\";\nimport { createSettingsModel } from \"~/crud/settings/model\";\nimport { createGroup } from \"~/crud/group\";\nimport { createGraphQL } from \"~/graphql\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\n\nexport * from \"~/plugins\";\nexport * from \"~/transports\";\n\nexport const createMailerContext = (): PluginCollection => {\n const group = createGroup();\n return [\n group,\n /**\n * Groups and models to use via the CMS\n */\n createSettingsModel(group),\n /**\n * If something is wrong with the smtp mailer, we will initialize the dummy one.\n */\n createTransport(async () => {\n const plugin = await createDummyTransport();\n plugin.name = \"mailer.dummy-default\";\n return plugin;\n }),\n /**\n * Smtp mailer goes into the plugins after the dummy one because plugins are loaded in reverse.\n */\n createTransport(async ({ settings }) => {\n /**\n * We need to map our settings to the required settings for the SMTP NodeMailer transport.\n */\n const config: SmtpTransportConfig = {\n ...(settings || {})\n };\n if (settings) {\n config.auth = {\n user: settings.user,\n pass: settings.password\n };\n }\n const plugin = await createSmtpTransport(config);\n plugin.name = \"mailer.smtp-default\";\n return plugin;\n }),\n createMailerContextPlugin()\n ];\n};\n\nexport const createMailerGraphQL = () => {\n return [...createGraphQL()];\n};\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAMA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AALA;AACA;AACA;AAIA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAEO,MAAMA,mBAAmB,GAAG,MAAwB;EACvD,MAAMC,KAAK,GAAG,IAAAC,kBAAW,GAAE;EAC3B,OAAO,CACHD,KAAK;EACL;AACR;AACA;EACQ,IAAAE,0BAAmB,EAACF,KAAK,CAAC;EAC1B;AACR;AACA;EACQ,IAAAG,wBAAe,EAAC,YAAY;IACxB,MAAMC,MAAM,GAAG,MAAM,IAAAC,0CAAoB,GAAE;IAC3CD,MAAM,CAACE,IAAI,GAAG,sBAAsB;IACpC,OAAOF,MAAM;EACjB,CAAC,CAAC;EACF;AACR;AACA;EACQ,IAAAD,wBAAe,EAAC,OAAO;IAAEI;EAAS,CAAC,KAAK;IACpC;AACZ;AACA;IACY,MAAMC,MAA2B,mCACzBD,QAAQ,IAAI,CAAC,CAAC,CACrB;IACD,IAAIA,QAAQ,EAAE;MACVC,MAAM,CAACC,IAAI,GAAG;QACVC,IAAI,EAAEH,QAAQ,CAACG,IAAI;QACnBC,IAAI,EAAEJ,QAAQ,CAACK;MACnB,CAAC;IACL;IACA,MAAMR,MAAM,GAAG,MAAM,IAAAS,wCAAmB,EAACL,MAAM,CAAC;IAChDJ,MAAM,CAACE,IAAI,GAAG,qBAAqB;IACnC,OAAOF,MAAM;EACjB,CAAC,CAAC,EACF,IAAAU,4BAAyB,GAAE,CAC9B;AACL,CAAC;AAAC;AAEK,MAAMC,mBAAmB,GAAG,MAAM;EACrC,OAAO,CAAC,GAAG,IAAAC,sBAAa,GAAE,CAAC;AAC/B,CAAC;AAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-mailer",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.35.0-beta.1",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
"description": "The API to send e-mails.",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@babel/runtime": "7.
|
|
18
|
-
"@webiny/api": "5.
|
|
19
|
-
"@webiny/api-headless-cms": "5.
|
|
20
|
-
"@webiny/error": "5.
|
|
21
|
-
"@webiny/handler-graphql": "5.
|
|
22
|
-
"@webiny/plugins": "5.
|
|
23
|
-
"@webiny/pubsub": "5.
|
|
17
|
+
"@babel/runtime": "7.20.13",
|
|
18
|
+
"@webiny/api": "5.35.0-beta.1",
|
|
19
|
+
"@webiny/api-headless-cms": "5.35.0-beta.1",
|
|
20
|
+
"@webiny/error": "5.35.0-beta.1",
|
|
21
|
+
"@webiny/handler-graphql": "5.35.0-beta.1",
|
|
22
|
+
"@webiny/plugins": "5.35.0-beta.1",
|
|
23
|
+
"@webiny/pubsub": "5.35.0-beta.1",
|
|
24
24
|
"crypto-js": "4.1.1",
|
|
25
|
-
"joi": "17.6.2",
|
|
26
25
|
"lodash": "4.17.21",
|
|
27
|
-
"nodemailer": "6.
|
|
26
|
+
"nodemailer": "6.9.1",
|
|
27
|
+
"zod": "3.20.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@babel/cli": "^7.19.3",
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
"@babel/preset-typescript": "^7.18.6",
|
|
34
34
|
"@types/crypto-js": "^4.1.1",
|
|
35
35
|
"@types/nodemailer": "^6.4.4",
|
|
36
|
-
"@webiny/api-headless-cms-ddb": "^5.
|
|
37
|
-
"@webiny/api-i18n": "^5.
|
|
38
|
-
"@webiny/api-i18n-ddb": "^5.
|
|
39
|
-
"@webiny/api-security": "^5.
|
|
40
|
-
"@webiny/api-security-so-ddb": "^5.
|
|
41
|
-
"@webiny/api-tenancy": "^5.
|
|
42
|
-
"@webiny/api-tenancy-so-ddb": "^5.
|
|
43
|
-
"@webiny/cli": "^5.
|
|
44
|
-
"@webiny/db-dynamodb": "^5.
|
|
45
|
-
"@webiny/handler": "^5.
|
|
46
|
-
"@webiny/handler-aws": "^5.
|
|
47
|
-
"@webiny/handler-db": "^5.
|
|
48
|
-
"@webiny/project-utils": "^5.
|
|
36
|
+
"@webiny/api-headless-cms-ddb": "^5.35.0-beta.1",
|
|
37
|
+
"@webiny/api-i18n": "^5.35.0-beta.1",
|
|
38
|
+
"@webiny/api-i18n-ddb": "^5.35.0-beta.1",
|
|
39
|
+
"@webiny/api-security": "^5.35.0-beta.1",
|
|
40
|
+
"@webiny/api-security-so-ddb": "^5.35.0-beta.1",
|
|
41
|
+
"@webiny/api-tenancy": "^5.35.0-beta.1",
|
|
42
|
+
"@webiny/api-tenancy-so-ddb": "^5.35.0-beta.1",
|
|
43
|
+
"@webiny/cli": "^5.35.0-beta.1",
|
|
44
|
+
"@webiny/db-dynamodb": "^5.35.0-beta.1",
|
|
45
|
+
"@webiny/handler": "^5.35.0-beta.1",
|
|
46
|
+
"@webiny/handler-aws": "^5.35.0-beta.1",
|
|
47
|
+
"@webiny/handler-db": "^5.35.0-beta.1",
|
|
48
|
+
"@webiny/project-utils": "^5.35.0-beta.1",
|
|
49
49
|
"graphql": "^15.7.2",
|
|
50
50
|
"jest": "^28.1.0",
|
|
51
51
|
"jest-dynalite": "^3.6.1",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"build": "yarn webiny run build",
|
|
62
62
|
"watch": "yarn webiny run watch"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "6b376faedf02e056efbbf1e4d46d537850773ce0"
|
|
65
65
|
}
|
|
@@ -1,34 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createTransport = exports.CreateTransportPlugin = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _plugins = require("@webiny/plugins");
|
|
13
|
-
|
|
14
10
|
class CreateTransportPlugin extends _plugins.Plugin {
|
|
15
11
|
constructor(cb) {
|
|
16
12
|
super();
|
|
17
13
|
(0, _defineProperty2.default)(this, "cb", void 0);
|
|
18
14
|
this.cb = cb;
|
|
19
15
|
}
|
|
20
|
-
|
|
21
16
|
async buildMailerTransport(params) {
|
|
22
17
|
return this.cb(params);
|
|
23
18
|
}
|
|
24
|
-
|
|
25
19
|
}
|
|
26
|
-
|
|
27
20
|
exports.CreateTransportPlugin = CreateTransportPlugin;
|
|
28
21
|
(0, _defineProperty2.default)(CreateTransportPlugin, "type", "mailer.builder.plugin");
|
|
29
|
-
|
|
30
22
|
const createTransport = cb => {
|
|
31
23
|
return new CreateTransportPlugin(cb);
|
|
32
24
|
};
|
|
33
|
-
|
|
34
25
|
exports.createTransport = createTransport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CreateTransportPlugin","BasePlugin","constructor","cb","buildMailerTransport","params","createTransport"],"sources":["CreateTransportPlugin.ts"],"sourcesContent":["import { Plugin as BasePlugin } from \"@webiny/plugins\";\nimport { Transport, MailerContext, TransportSettings } from \"~/types\";\n\ninterface TransportParams {\n settings: TransportSettings | null;\n context: MailerContext;\n}\n\nexport interface CreateTransportCallable<T> {\n (params: TransportParams): Promise<T>;\n}\n\nexport class CreateTransportPlugin<T extends Transport = Transport> extends BasePlugin {\n public static override type = \"mailer.builder.plugin\";\n\n private readonly cb: CreateTransportCallable<T>;\n\n public constructor(cb: CreateTransportCallable<T>) {\n super();\n this.cb = cb;\n }\n\n public async buildMailerTransport(params: TransportParams): Promise<T> {\n return this.cb(params);\n }\n}\n\nexport const createTransport = <T extends Transport = Transport>(\n cb: CreateTransportCallable<T>\n) => {\n return new CreateTransportPlugin<T>(cb);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["CreateTransportPlugin","BasePlugin","constructor","cb","buildMailerTransport","params","createTransport"],"sources":["CreateTransportPlugin.ts"],"sourcesContent":["import { Plugin as BasePlugin } from \"@webiny/plugins\";\nimport { Transport, MailerContext, TransportSettings } from \"~/types\";\n\ninterface TransportParams {\n settings: TransportSettings | null;\n context: MailerContext;\n}\n\nexport interface CreateTransportCallable<T> {\n (params: TransportParams): Promise<T>;\n}\n\nexport class CreateTransportPlugin<T extends Transport = Transport> extends BasePlugin {\n public static override type = \"mailer.builder.plugin\";\n\n private readonly cb: CreateTransportCallable<T>;\n\n public constructor(cb: CreateTransportCallable<T>) {\n super();\n this.cb = cb;\n }\n\n public async buildMailerTransport(params: TransportParams): Promise<T> {\n return this.cb(params);\n }\n}\n\nexport const createTransport = <T extends Transport = Transport>(\n cb: CreateTransportCallable<T>\n) => {\n return new CreateTransportPlugin<T>(cb);\n};\n"],"mappings":";;;;;;;;AAAA;AAYO,MAAMA,qBAAqB,SAA0CC,eAAU,CAAC;EAK5EC,WAAW,CAACC,EAA8B,EAAE;IAC/C,KAAK,EAAE;IAAC;IACR,IAAI,CAACA,EAAE,GAAGA,EAAE;EAChB;EAEA,MAAaC,oBAAoB,CAACC,MAAuB,EAAc;IACnE,OAAO,IAAI,CAACF,EAAE,CAACE,MAAM,CAAC;EAC1B;AACJ;AAAC;AAAA,8BAbYL,qBAAqB,UACA,uBAAuB;AAclD,MAAMM,eAAe,GACxBH,EAA8B,IAC7B;EACD,OAAO,IAAIH,qBAAqB,CAAIG,EAAE,CAAC;AAC3C,CAAC;AAAC"}
|
package/plugins/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _CreateTransportPlugin = require("./CreateTransportPlugin");
|
|
8
|
-
|
|
9
7
|
Object.keys(_CreateTransportPlugin).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _CreateTransportPlugin[key]) return;
|
package/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./CreateTransportPlugin\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./CreateTransportPlugin\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createDummyTransport = void 0;
|
|
7
|
-
|
|
8
7
|
const createDummyTransport = () => {
|
|
9
8
|
const sent = [];
|
|
10
9
|
return {
|
|
11
|
-
name: "dummy-default",
|
|
10
|
+
name: "mailer.dummy-default",
|
|
12
11
|
send: async params => {
|
|
13
12
|
sent.push(params);
|
|
14
13
|
return {
|
|
@@ -21,5 +20,4 @@ const createDummyTransport = () => {
|
|
|
21
20
|
}
|
|
22
21
|
};
|
|
23
22
|
};
|
|
24
|
-
|
|
25
23
|
exports.createDummyTransport = createDummyTransport;
|