@webiny/api-mailer 0.0.0-unstable.fcdad0bc61 → 0.0.0-unstable.fdd9228b5d

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.
Files changed (69) hide show
  1. package/context.d.ts +1 -1
  2. package/context.js +6 -10
  3. package/context.js.map +1 -1
  4. package/crud/settings/hooks.d.ts +1 -1
  5. package/crud/settings/hooks.js +5 -18
  6. package/crud/settings/hooks.js.map +1 -1
  7. package/crud/settings/model.d.ts +1 -2
  8. package/crud/settings/model.js +15 -33
  9. package/crud/settings/model.js.map +1 -1
  10. package/crud/settings/password.js +2 -18
  11. package/crud/settings/password.js.map +1 -1
  12. package/crud/settings/secret.js +2 -6
  13. package/crud/settings/secret.js.map +1 -1
  14. package/crud/settings/transform.d.ts +2 -2
  15. package/crud/settings/transform.js +9 -19
  16. package/crud/settings/transform.js.map +1 -1
  17. package/crud/settings/validation.d.ts +45 -4
  18. package/crud/settings/validation.js +18 -28
  19. package/crud/settings/validation.js.map +1 -1
  20. package/crud/settings.crud.d.ts +1 -1
  21. package/crud/settings.crud.js +138 -200
  22. package/crud/settings.crud.js.map +1 -1
  23. package/crud/transport/onTransportBeforeSend.d.ts +2 -2
  24. package/crud/transport/onTransportBeforeSend.js +30 -37
  25. package/crud/transport/onTransportBeforeSend.js.map +1 -1
  26. package/crud/transporter.crud.d.ts +1 -1
  27. package/crud/transporter.crud.js +9 -44
  28. package/crud/transporter.crud.js.map +1 -1
  29. package/graphql/index.js +2 -3
  30. package/graphql/index.js.map +1 -1
  31. package/graphql/settings.d.ts +1 -1
  32. package/graphql/settings.js +12 -18
  33. package/graphql/settings.js.map +1 -1
  34. package/index.d.ts +3 -6
  35. package/index.js +37 -43
  36. package/index.js.map +1 -1
  37. package/package.json +28 -39
  38. package/plugins/CreateTransportPlugin.d.ts +1 -1
  39. package/plugins/CreateTransportPlugin.js +3 -13
  40. package/plugins/CreateTransportPlugin.js.map +1 -1
  41. package/plugins/index.js +3 -3
  42. package/plugins/index.js.map +1 -1
  43. package/transports/createDummyTransport.d.ts +1 -1
  44. package/transports/createDummyTransport.js +3 -3
  45. package/transports/createDummyTransport.js.map +1 -1
  46. package/transports/createSmtpTransport.d.ts +5 -4
  47. package/transports/createSmtpTransport.js +14 -21
  48. package/transports/createSmtpTransport.js.map +1 -1
  49. package/transports/index.d.ts +2 -0
  50. package/transports/index.js +29 -0
  51. package/transports/index.js.map +1 -0
  52. package/types.d.ts +4 -4
  53. package/types.js +3 -1
  54. package/types.js.map +1 -1
  55. package/crud/group.d.ts +0 -2
  56. package/crud/group.js +0 -21
  57. package/crud/group.js.map +0 -1
  58. package/crud/mailer/onBeforeSend.d.ts +0 -7
  59. package/crud/mailer/onBeforeSend.js +0 -69
  60. package/crud/mailer/onBeforeSend.js.map +0 -1
  61. package/crud/mailer.crud.d.ts +0 -2
  62. package/crud/mailer.crud.js +0 -123
  63. package/crud/mailer.crud.js.map +0 -1
  64. package/mailers/createDummyMailer.d.ts +0 -5
  65. package/mailers/createDummyMailer.js +0 -24
  66. package/mailers/createDummyMailer.js.map +0 -1
  67. package/mailers/createSmtpMailer.d.ts +0 -13
  68. package/mailers/createSmtpMailer.js +0 -106
  69. package/mailers/createSmtpMailer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["options","tlds","requiredString","joi","string","required","requiredEmail","email","schema","object","to","array","items","from","subject","max","cc","bcc","replyTo","text","min","html","attachOnTransportBeforeSend","params","onTransportBeforeSend","subscribe","data","input","result","validate","error","ex","WebinyError","message","code"],"sources":["onTransportBeforeSend.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { TransportSendData, OnTransportBeforeSendParams } from \"~/types\";\nimport joi, { EmailOptions } from \"joi\";\nimport WebinyError from \"@webiny/error\";\n\nconst options: EmailOptions = {\n tlds: false\n};\n\nconst requiredString = joi.string().required();\nconst requiredEmail = requiredString.email(options);\n\nconst schema = joi.object<TransportSendData>({\n to: joi.array().items(requiredEmail),\n from: joi.string().email(options),\n subject: requiredString.max(1024),\n cc: joi.array().items(requiredEmail),\n bcc: joi.array().items(requiredEmail),\n replyTo: joi.string().email(options),\n text: requiredString.min(10),\n html: joi.string()\n});\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: joi.ValidationResult<TransportSendData>;\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,OAAqB,GAAG;EAC1BC,IAAI,EAAE;AADoB,CAA9B;;AAIA,MAAMC,cAAc,GAAGC,YAAA,CAAIC,MAAJ,GAAaC,QAAb,EAAvB;;AACA,MAAMC,aAAa,GAAGJ,cAAc,CAACK,KAAf,CAAqBP,OAArB,CAAtB;;AAEA,MAAMQ,MAAM,GAAGL,YAAA,CAAIM,MAAJ,CAA8B;EACzCC,EAAE,EAAEP,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,CADqC;EAEzCO,IAAI,EAAEV,YAAA,CAAIC,MAAJ,GAAaG,KAAb,CAAmBP,OAAnB,CAFmC;EAGzCc,OAAO,EAAEZ,cAAc,CAACa,GAAf,CAAmB,IAAnB,CAHgC;EAIzCC,EAAE,EAAEb,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,CAJqC;EAKzCW,GAAG,EAAEd,YAAA,CAAIQ,KAAJ,GAAYC,KAAZ,CAAkBN,aAAlB,CALoC;EAMzCY,OAAO,EAAEf,YAAA,CAAIC,MAAJ,GAAaG,KAAb,CAAmBP,OAAnB,CANgC;EAOzCmB,IAAI,EAAEjB,cAAc,CAACkB,GAAf,CAAmB,EAAnB,CAPmC;EAQzCC,IAAI,EAAElB,YAAA,CAAIC,MAAJ;AARmC,CAA9B,CAAf;;AAcO,MAAMkB,2BAA2B,GAAIC,MAAD,IAAoB;EAC3D,MAAM;IAAEC;EAAF,IAA4BD,MAAlC;EAEAC,qBAAqB,CAACC,SAAtB,CAAgC,OAAO;IAAEC,IAAI,EAAEC;EAAR,CAAP,KAA2B;IACvD,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,kCACGE,MAAM,CAACE,KADV;IAHc,CAAhB,CAAN;EAOH,CAzBD;AA0BH,CA7BM"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_zod","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","exports"],"sources":["onTransportBeforeSend.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport zod from \"zod\";\nimport type { Topic } from \"@webiny/pubsub/types\";\nimport type { OnTransportBeforeSendParams } from \"~/types\";\nimport type { 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,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AAKA,MAAME,cAAc,GAAGC,YAAG,CAACC,MAAM,CAAC,CAAC;AACnC,MAAMC,aAAa,GAAGH,cAAc,CAACI,KAAK,CAAC,CAAC;AAE5C,MAAMC,MAAM,GAAGJ,YAAG,CACbK,MAAM,CAAC;EACJC,EAAE,EAAEN,YAAG,CAACO,KAAK,CAACL,aAAa,CAAC,CAACM,QAAQ,CAAC,CAAC;EACvCC,IAAI,EAAET,YAAG,CAACC,MAAM,CAAC,CAAC,CAACE,KAAK,CAAC,CAAC,CAACK,QAAQ,CAAC,CAAC;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,CAAC,CAAC;EACvCM,GAAG,EAAEd,YAAG,CAACO,KAAK,CAACL,aAAa,CAAC,CAACM,QAAQ,CAAC,CAAC;EACxCO,OAAO,EAAEf,YAAG,CAACC,MAAM,CAAC,CAAC,CAACE,KAAK,CAAC,CAAC,CAACK,QAAQ,CAAC,CAAC;EACxCQ,IAAI,EAAEhB,YAAG,CAACC,MAAM,CAAC,CAAC,CAACO,QAAQ,CAAC,CAAC;EAC7BS,IAAI,EAAEjB,YAAG,CAACC,MAAM,CAAC,CAAC,CAACO,QAAQ,CAAC;AAChC,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;AAACC,OAAA,CAAAb,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { MailerContext, MailerTransporterContext } from "../types";
1
+ import type { MailerContext, MailerTransporterContext } from "../types";
2
2
  export declare const createTransporterCrud: (context: MailerContext) => Promise<MailerTransporterContext>;
@@ -1,31 +1,21 @@
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
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
8
  var _pubsub = require("@webiny/pubsub");
13
-
14
9
  var _onTransportBeforeSend = require("./transport/onTransportBeforeSend");
15
-
16
10
  var _plugins = require("../plugins");
17
-
18
11
  var _error = _interopRequireDefault(require("@webiny/error"));
19
-
20
12
  var _validation = require("./settings/validation");
21
-
22
13
  const buildTransporter = async params => {
23
14
  const {
24
15
  settings,
25
16
  context,
26
17
  plugins
27
18
  } = params;
28
-
29
19
  for (const plugin of plugins) {
30
20
  try {
31
21
  return await plugin.buildMailerTransport({
@@ -37,20 +27,15 @@ const buildTransporter = async params => {
37
27
  console.log(ex.message);
38
28
  }
39
29
  }
40
-
41
30
  throw new _error.default("Could not build mailer via any of the available plugins.", "MAILER_PLUGINS_ERROR");
42
31
  };
43
-
44
32
  const getPort = value => {
45
33
  const port = Number(value);
46
-
47
34
  if (!!value && isNaN(port) === false) {
48
35
  return port;
49
36
  }
50
-
51
37
  return 25;
52
38
  };
53
-
54
39
  const getDefaultSettings = () => {
55
40
  const input = {
56
41
  host: process.env.WEBINY_MAILER_HOST,
@@ -63,24 +48,13 @@ const getDefaultSettings = () => {
63
48
  /**
64
49
  * No need to do the validation if there is not at least one variable defined.
65
50
  */
66
-
67
51
  const hasAtLeastOneValue = Object.values(input).some(value => !!String(value).trim());
68
-
69
52
  if (!hasAtLeastOneValue) {
70
53
  return null;
71
54
  }
72
-
73
- try {
74
- const result = _validation.createValidation.validate(input);
75
-
76
- if (!result.error) {
77
- return result.value;
78
- }
79
- } catch (ex) {}
80
-
81
- return null;
55
+ const result = _validation.createValidation.safeParse(input);
56
+ return result.success ? result.data : null;
82
57
  };
83
-
84
58
  const createTransporterCrud = async context => {
85
59
  const transporters = {};
86
60
  const defaultSettings = getDefaultSettings();
@@ -89,32 +63,26 @@ const createTransporterCrud = async context => {
89
63
  * The last plugins are our default ones with the default configurations.
90
64
  * If users wants to override them, they just need to add new plugin with their own configuration and it will be constructed first.
91
65
  */
92
-
93
66
  const plugins = context.plugins.byType(_plugins.CreateTransportPlugin.type).reverse();
67
+
94
68
  /**
95
69
  * We define possible events to be hooked into.
96
70
  */
97
-
98
71
  const onTransportBeforeSend = (0, _pubsub.createTopic)("mailer.onTransportBeforeSend");
99
72
  const onTransportAfterSend = (0, _pubsub.createTopic)("mailer.onTransportAfterSend");
100
73
  const onTransportError = (0, _pubsub.createTopic)("mailer.onTransportError");
101
74
  /**
102
75
  * We attach our default ones.
103
76
  */
104
-
105
77
  (0, _onTransportBeforeSend.attachOnTransportBeforeSend)({
106
78
  onTransportBeforeSend
107
79
  });
108
-
109
80
  const getTransport = async () => {
110
81
  const tenant = context.tenancy.getCurrentTenant().id;
111
-
112
82
  if (transporters[tenant]) {
113
83
  return transporters[tenant];
114
84
  }
115
-
116
85
  let settings = null;
117
-
118
86
  try {
119
87
  settings = await context.mailer.getSettings();
120
88
  } catch (ex) {
@@ -123,11 +91,9 @@ const createTransporterCrud = async context => {
123
91
  console.log(ex.code);
124
92
  }
125
93
  }
126
-
127
94
  if (!settings && !defaultSettings) {
128
95
  console.log(`There are no Mailer transport settings for tenant "${tenant}".`);
129
96
  }
130
-
131
97
  const transporter = await buildTransporter({
132
98
  settings: settings || defaultSettings,
133
99
  plugins,
@@ -136,7 +102,6 @@ const createTransporterCrud = async context => {
136
102
  transporters[tenant] = transporter;
137
103
  return transporter;
138
104
  };
139
-
140
105
  return {
141
106
  onTransportBeforeSend,
142
107
  onTransportAfterSend,
@@ -144,7 +109,6 @@ const createTransporterCrud = async context => {
144
109
  getTransport,
145
110
  sendMail: async data => {
146
111
  const transport = await getTransport();
147
-
148
112
  if (!transport) {
149
113
  return {
150
114
  result: null,
@@ -154,7 +118,6 @@ const createTransporterCrud = async context => {
154
118
  }
155
119
  };
156
120
  }
157
-
158
121
  try {
159
122
  await onTransportBeforeSend.publish({
160
123
  data,
@@ -180,14 +143,16 @@ const createTransporterCrud = async context => {
180
143
  error: {
181
144
  message: ex.message,
182
145
  code: ex.code,
183
- data: (0, _objectSpread2.default)({
184
- data
185
- }, ex.data)
146
+ data: {
147
+ data,
148
+ ...ex.data
149
+ }
186
150
  }
187
151
  };
188
152
  }
189
153
  }
190
154
  };
191
155
  };
156
+ exports.createTransporterCrud = createTransporterCrud;
192
157
 
193
- exports.createTransporterCrud = createTransporterCrud;
158
+ //# sourceMappingURL=transporter.crud.js.map
@@ -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":["_pubsub","require","_onTransportBeforeSend","_plugins","_error","_interopRequireDefault","_validation","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","exports"],"sources":["transporter.crud.ts"],"sourcesContent":["import type {\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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","ignoreList":[]}
package/graphql/index.js CHANGED
@@ -4,11 +4,10 @@ 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
  };
11
+ exports.createGraphQL = createGraphQL;
13
12
 
14
- exports.createGraphQL = createGraphQL;
13
+ //# sourceMappingURL=index.js.map
@@ -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":";;;;;;;AAAA;;AAEO,MAAMA,aAAa,GAAG,MAAM;EAC/B,OAAO,CAAC,IAAAC,+BAAA,GAAD,CAAP;AACH,CAFM"}
1
+ {"version":3,"names":["_settings","require","createGraphQL","createSettingsGraphQL","exports"],"sources":["index.ts"],"sourcesContent":["import { createSettingsGraphQL } from \"~/graphql/settings\";\n\nexport const createGraphQL = () => {\n return [createSettingsGraphQL()];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC/B,OAAO,CAAC,IAAAC,+BAAqB,EAAC,CAAC,CAAC;AACpC,CAAC;AAACC,OAAA,CAAAF,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { MailerContext } from "../types";
2
+ import type { MailerContext } from "../types";
3
3
  export declare const createSettingsGraphQL: () => GraphQLSchemaPlugin<MailerContext>;
@@ -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: `
@@ -26,16 +23,16 @@ const createSettingsGraphQL = () => {
26
23
  replyTo: String
27
24
  }
28
25
 
29
- type MailerSettingsResponse {
26
+ type MailerTransportSettingsResponse {
30
27
  data: MailerTransportSettings
31
28
  error: MailerTransportSettingsError
32
29
  }
33
30
 
34
31
  type MailerQuery {
35
- getSettings: MailerSettingsResponse!
32
+ getSettings: MailerTransportSettingsResponse!
36
33
  }
37
34
 
38
- input TransportSettingsInput {
35
+ input MailerTransportSettingsInput {
39
36
  host: String!
40
37
  port: Number
41
38
  user: String!
@@ -45,7 +42,7 @@ const createSettingsGraphQL = () => {
45
42
  }
46
43
 
47
44
  type MailerMutation {
48
- saveSettings(data: TransportSettingsInput!): MailerSettingsResponse!
45
+ saveSettings(data: MailerTransportSettingsInput!): MailerTransportSettingsResponse!
49
46
  }
50
47
 
51
48
  extend type Query {
@@ -64,14 +61,12 @@ const createSettingsGraphQL = () => {
64
61
  try {
65
62
  const settings = await context.mailer.getSettings();
66
63
  /**
67
- * We want to remove the password from the response
64
+ * We want to remove the password from the response, if it exists.
68
65
  */
69
-
70
- if (settings) {
71
- // @ts-ignore
66
+ if (settings?.password) {
67
+ // @ts-expect-error
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);
@@ -88,14 +83,12 @@ const createSettingsGraphQL = () => {
88
83
  input: args.data
89
84
  });
90
85
  /**
91
- * We want to remove the password from the response
86
+ * We want to remove the password from the response, if it exists.
92
87
  */
93
-
94
- if (settings) {
95
- // @ts-ignore
88
+ if (settings?.password) {
89
+ // @ts-expect-error
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,6 @@ const createSettingsGraphQL = () => {
105
98
  }
106
99
  });
107
100
  };
101
+ exports.createSettingsGraphQL = createSettingsGraphQL;
108
102
 
109
- exports.createSettingsGraphQL = createSettingsGraphQL;
103
+ //# sourceMappingURL=settings.js.map
@@ -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 MailerSettingsResponse {\n data: MailerTransportSettings\n error: MailerTransportSettingsError\n }\n \n type MailerQuery {\n getSettings: MailerSettingsResponse!\n }\n \n input TransportSettingsInput {\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: TransportSettingsInput!): MailerSettingsResponse!\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\n */\n if (settings) {\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\n */\n if (settings) {\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,EAAP,CAAtB;;AAEO,MAAMC,qBAAqB,GAAG,MAAM;EACvC,OAAO,IAAIC,mCAAJ,CAAuC;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,SA5CkD;IA6C1CC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,MAAM,EAAEN;MADL,CADA;MAIPO,WAAW,EAAE;QACTC,WAAW,EAAE,OAAOC,CAAP,EAAUC,EAAV,EAAcC,OAAd,KAA0B;UACnC,IAAI;YACA,MAAMC,QAAQ,GAAG,MAAMD,OAAO,CAACL,MAAR,CAAeE,WAAf,EAAvB;YACA;AACxB;AACA;;YACwB,IAAII,QAAJ,EAAc;cACV;cACA,OAAOA,QAAQ,CAACC,QAAhB;YACH;;YACD,OAAO,IAAIC,wBAAJ,CAAaF,QAAb,CAAP;UACH,CAVD,CAUE,OAAOG,EAAP,EAAW;YACT,OAAO,IAAIC,6BAAJ,CAAkBD,EAAlB,CAAP;UACH;QACJ;MAfQ,CAJN;MAqBPE,QAAQ,EAAE;QACNX,MAAM,EAAEN;MADF,CArBH;MAwBPkB,cAAc,EAAE;QACZC,YAAY,EAAE,OAAOV,CAAP,EAAUW,IAAV,EAAqBT,OAArB,KAAiC;UAC3C,IAAI;YACA,MAAMC,QAAQ,GAAG,MAAMD,OAAO,CAACL,MAAR,CAAea,YAAf,CAA4B;cAC/CE,KAAK,EAAED,IAAI,CAACE;YADmC,CAA5B,CAAvB;YAGA;AACxB;AACA;;YACwB,IAAIV,QAAJ,EAAc;cACV;cACA,OAAOA,QAAQ,CAACC,QAAhB;YACH;;YACD,OAAO,IAAIC,wBAAJ,CAAaF,QAAb,CAAP;UACH,CAZD,CAYE,OAAOG,EAAP,EAAW;YACT,OAAO,IAAIC,6BAAJ,CAAkBD,EAAlB,CAAP;UACH;QACJ;MAjBW;IAxBT;EA7C+B,CAAvC,CAAP;AA0FH,CA3FM"}
1
+ {"version":3,"names":["_handlerGraphql","require","emptyResolver","createSettingsGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","mailer","MailerQuery","getSettings","_","__","context","settings","password","Response","ex","ErrorResponse","Mutation","MailerMutation","saveSettings","args","input","data","exports"],"sources":["settings.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin, Response } from \"@webiny/handler-graphql\";\nimport type { 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-expect-error\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-expect-error\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,IAAAA,eAAA,GAAAC,OAAA;AAGA,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEzB,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,OAAO,IAAIC,mCAAmB,CAAgB;IAC1CC,QAAQ,EAAE;AAClB;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,MAAAA,CAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UACnC,IAAI;YACA,MAAMC,QAAQ,GAAG,MAAMD,OAAO,CAACL,MAAM,CAACE,WAAW,CAAC,CAAC;YACnD;AACxB;AACA;YACwB,IAAII,QAAQ,EAAEC,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,MAAAA,CAAOV,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,EAAEC,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;AAACQ,OAAA,CAAAtB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,8 +1,5 @@
1
- import { PluginCollection } from "@webiny/plugins/types";
2
- import { createDummyTransport, DummyTransport } from "./transports/createDummyTransport";
3
- import { createSmtpTransport, SmtpTransport, SmtpTransportConfig } from "./transports/createSmtpTransport";
4
- import { createTransport } from "./plugins";
5
- export { createDummyTransport, createSmtpTransport, createTransport };
6
- export type { SmtpTransport, SmtpTransportConfig, DummyTransport };
1
+ import type { PluginCollection } from "@webiny/plugins/types";
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,59 +1,54 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- Object.defineProperty(exports, "createDummyTransport", {
9
- enumerable: true,
10
- get: function () {
11
- return _createDummyTransport.createDummyTransport;
12
- }
13
- });
6
+ var _exportNames = {
7
+ createMailerContext: true,
8
+ createMailerGraphQL: true
9
+ };
14
10
  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
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
29
-
30
11
  var _context = require("./context");
31
-
32
12
  var _createDummyTransport = require("./transports/createDummyTransport");
33
-
34
13
  var _createSmtpTransport = require("./transports/createSmtpTransport");
35
-
36
14
  var _plugins = require("./plugins");
37
-
15
+ Object.keys(_plugins).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _plugins[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _plugins[key];
23
+ }
24
+ });
25
+ });
38
26
  var _model = require("./crud/settings/model");
39
-
40
- var _group = require("./crud/group");
41
-
42
27
  var _graphql = require("./graphql");
43
-
28
+ var _transports = require("./transports");
29
+ Object.keys(_transports).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
32
+ if (key in exports && exports[key] === _transports[key]) return;
33
+ Object.defineProperty(exports, key, {
34
+ enumerable: true,
35
+ get: function () {
36
+ return _transports[key];
37
+ }
38
+ });
39
+ });
44
40
  const createMailerContext = () => {
45
- const group = (0, _group.createGroup)();
46
- return [group,
41
+ return [
47
42
  /**
48
- * Groups and models to use via the CMS
43
+ * Models to use via the CMS
49
44
  */
50
- (0, _model.createSettingsModel)(group),
45
+ (0, _model.createSettingsModel)(),
51
46
  /**
52
47
  * If something is wrong with the smtp mailer, we will initialize the dummy one.
53
48
  */
54
49
  (0, _plugins.createTransport)(async () => {
55
50
  const plugin = await (0, _createDummyTransport.createDummyTransport)();
56
- plugin.name = "dummy-default";
51
+ plugin.name = "mailer.dummy-default";
57
52
  return plugin;
58
53
  }),
59
54
  /**
@@ -65,25 +60,24 @@ const createMailerContext = () => {
65
60
  /**
66
61
  * We need to map our settings to the required settings for the SMTP NodeMailer transport.
67
62
  */
68
- const config = (0, _objectSpread2.default)({}, settings || {});
69
-
63
+ const config = {
64
+ ...(settings || {})
65
+ };
70
66
  if (settings) {
71
67
  config.auth = {
72
68
  user: settings.user,
73
69
  pass: settings.password
74
70
  };
75
71
  }
76
-
77
72
  const plugin = await (0, _createSmtpTransport.createSmtpTransport)(config);
78
- plugin.name = "smtp-default";
73
+ plugin.name = "mailer.smtp-default";
79
74
  return plugin;
80
75
  }), (0, _context.createMailerContext)()];
81
76
  };
82
-
83
77
  exports.createMailerContext = createMailerContext;
84
-
85
78
  const createMailerGraphQL = () => {
86
79
  return [...(0, _graphql.createGraphQL)()];
87
80
  };
81
+ exports.createMailerGraphQL = createMailerGraphQL;
88
82
 
89
- exports.createMailerGraphQL = createMailerGraphQL;
83
+ //# sourceMappingURL=index.js.map
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 { PluginCollection } from \"@webiny/plugins/types\";\nimport { createMailerContext as createMailerContextPlugin } from \"~/context\";\nimport { createDummyTransport, DummyTransport } from \"~/transports/createDummyTransport\";\nimport {\n createSmtpTransport,\n SmtpTransport,\n SmtpTransportConfig\n} from \"~/transports/createSmtpTransport\";\nimport { createTransport } from \"~/plugins\";\nimport { createSettingsModel } from \"~/crud/settings/model\";\nimport { createGroup } from \"~/crud/group\";\nimport { createGraphQL } from \"~/graphql\";\n\nexport { createDummyTransport, createSmtpTransport, createTransport };\nexport type { SmtpTransport, SmtpTransportConfig, DummyTransport };\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 = \"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 = \"smtp-default\";\n return plugin;\n }),\n createMailerContextPlugin()\n ];\n};\n\nexport const createMailerGraphQL = () => {\n return [...createGraphQL()];\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AAKO,MAAMA,mBAAmB,GAAG,MAAwB;EACvD,MAAMC,KAAK,GAAG,IAAAC,kBAAA,GAAd;EACA,OAAO,CACHD,KADG;EAEH;AACR;AACA;EACQ,IAAAE,0BAAA,EAAoBF,KAApB,CALG;EAMH;AACR;AACA;EACQ,IAAAG,wBAAA,EAAgB,YAAY;IACxB,MAAMC,MAAM,GAAG,MAAM,IAAAC,0CAAA,GAArB;IACAD,MAAM,CAACE,IAAP,GAAc,eAAd;IACA,OAAOF,MAAP;EACH,CAJD,CATG;EAcH;AACR;AACA;EACQ,IAAAD,wBAAA,EAAgB,OAAO;IAAEI;EAAF,CAAP,KAAwB;IACpC;AACZ;AACA;IACY,MAAMC,MAA2B,mCACzBD,QAAQ,IAAI,EADa,CAAjC;;IAGA,IAAIA,QAAJ,EAAc;MACVC,MAAM,CAACC,IAAP,GAAc;QACVC,IAAI,EAAEH,QAAQ,CAACG,IADL;QAEVC,IAAI,EAAEJ,QAAQ,CAACK;MAFL,CAAd;IAIH;;IACD,MAAMR,MAAM,GAAG,MAAM,IAAAS,wCAAA,EAAoBL,MAApB,CAArB;IACAJ,MAAM,CAACE,IAAP,GAAc,cAAd;IACA,OAAOF,MAAP;EACH,CAhBD,CAjBG,EAkCH,IAAAU,4BAAA,GAlCG,CAAP;AAoCH,CAtCM;;;;AAwCA,MAAMC,mBAAmB,GAAG,MAAM;EACrC,OAAO,CAAC,GAAG,IAAAC,sBAAA,GAAJ,CAAP;AACH,CAFM"}
1
+ {"version":3,"names":["_context","require","_createDummyTransport","_createSmtpTransport","_plugins","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_model","_graphql","_transports","createMailerContext","createSettingsModel","createTransport","plugin","createDummyTransport","name","settings","config","auth","user","pass","password","createSmtpTransport","createMailerContextPlugin","createMailerGraphQL","createGraphQL"],"sources":["index.ts"],"sourcesContent":["import type { PluginCollection } from \"@webiny/plugins/types\";\nimport { createMailerContext as createMailerContextPlugin } from \"~/context\";\nimport { createDummyTransport } from \"~/transports/createDummyTransport\";\nimport type { SmtpTransportConfig } from \"~/transports/createSmtpTransport\";\nimport { createSmtpTransport } from \"~/transports/createSmtpTransport\";\nimport { createTransport } from \"~/plugins\";\nimport { createSettingsModel } from \"~/crud/settings/model\";\nimport { createGraphQL } from \"~/graphql\";\n\nexport * from \"~/plugins\";\nexport * from \"~/transports\";\n\nexport const createMailerContext = (): PluginCollection => {\n return [\n /**\n * Models to use via the CMS\n */\n createSettingsModel(),\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":";;;;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAIAI,MAAA,CAAAC,IAAA,CAAAF,QAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,QAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,QAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAHA,IAAAS,MAAA,GAAAhB,OAAA;AACA,IAAAiB,QAAA,GAAAjB,OAAA;AAGA,IAAAkB,WAAA,GAAAlB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAa,WAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,WAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,WAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AAEO,MAAMY,mBAAmB,GAAGA,CAAA,KAAwB;EACvD,OAAO;EACH;AACR;AACA;EACQ,IAAAC,0BAAmB,EAAC,CAAC;EACrB;AACR;AACA;EACQ,IAAAC,wBAAe,EAAC,YAAY;IACxB,MAAMC,MAAM,GAAG,MAAM,IAAAC,0CAAoB,EAAC,CAAC;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,GAAG;MAChC,IAAID,QAAQ,IAAI,CAAC,CAAC;IACtB,CAAC;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,EAAC,CAAC,CAC9B;AACL,CAAC;AAACpB,OAAA,CAAAO,mBAAA,GAAAA,mBAAA;AAEK,MAAMc,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAO,CAAC,GAAG,IAAAC,sBAAa,EAAC,CAAC,CAAC;AAC/B,CAAC;AAACtB,OAAA,CAAAqB,mBAAA,GAAAA,mBAAA","ignoreList":[]}