@vendure/email-plugin 3.0.0 → 3.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md CHANGED
@@ -31,6 +31,7 @@ Commercial Distributions - must be used in accordance with the terms and conditi
31
31
  contained in a separate written agreement between you and Vendure GmbH.
32
32
  For more information about the Vendure Commercial License (VCL) please contact contact@vendure.io.
33
33
 
34
- Please see also (files in this directory):
35
- [Licensing FAQ - license-faq.md](license/license-faq.md)
36
- [GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - gpl-3.0.txt](license/gpl-3.0.txt)
34
+ Please see also:
35
+
36
+ - [Licensing FAQ - license-faq.md](license/license-faq.md)
37
+ - [GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - gpl-3.0.txt](license/gpl-3.0.txt)
@@ -66,7 +66,7 @@ let EmailProcessor = class EmailProcessor {
66
66
  emailDetails = Object.assign(Object.assign({}, generated), { recipient: data.recipient, attachments: (0, attachment_utils_1.deserializeAttachments)(data.attachments), cc: data.cc, bcc: data.bcc, replyTo: data.replyTo });
67
67
  const transportSettings = await this.getTransportSettings(ctx);
68
68
  await this.emailSender.send(emailDetails, transportSettings);
69
- await this.eventBus.publish(new email_send_event_1.EmailSendEvent(ctx, emailDetails, true));
69
+ await this.eventBus.publish(new email_send_event_1.EmailSendEvent(ctx, emailDetails, true, undefined, data.metadata));
70
70
  return true;
71
71
  }
72
72
  catch (err) {
@@ -76,7 +76,7 @@ let EmailProcessor = class EmailProcessor {
76
76
  else {
77
77
  core_2.Logger.error(String(err), constants_1.loggerCtx);
78
78
  }
79
- await this.eventBus.publish(new email_send_event_1.EmailSendEvent(ctx, emailDetails, false, err));
79
+ await this.eventBus.publish(new email_send_event_1.EmailSendEvent(ctx, emailDetails, false, err, data.metadata));
80
80
  throw err;
81
81
  }
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"email-processor.js","sourceRoot":"","sources":["../../src/email-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-processor.js","sourceRoot":"","sources":["../../src/email-processor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { RequestContext, VendureEvent } from '@vendure/core';
2
- import { EmailDetails } from './types';
2
+ import { EmailDetails, EmailMetadata } from './types';
3
3
  /**
4
4
  * @description
5
5
  * This event is fired when an email sending attempt has been made. If the sending was successful,
@@ -14,5 +14,6 @@ export declare class EmailSendEvent extends VendureEvent {
14
14
  readonly details: EmailDetails;
15
15
  readonly success: boolean;
16
16
  readonly error?: Error | undefined;
17
- constructor(ctx: RequestContext, details: EmailDetails, success: boolean, error?: Error | undefined);
17
+ readonly metadata?: EmailMetadata | undefined;
18
+ constructor(ctx: RequestContext, details: EmailDetails, success: boolean, error?: Error | undefined, metadata?: EmailMetadata | undefined);
18
19
  }
@@ -12,12 +12,13 @@ const core_1 = require("@vendure/core");
12
12
  * @since 2.2.0
13
13
  */
14
14
  class EmailSendEvent extends core_1.VendureEvent {
15
- constructor(ctx, details, success, error) {
15
+ constructor(ctx, details, success, error, metadata) {
16
16
  super();
17
17
  this.ctx = ctx;
18
18
  this.details = details;
19
19
  this.success = success;
20
20
  this.error = error;
21
+ this.metadata = metadata;
21
22
  }
22
23
  }
23
24
  exports.EmailSendEvent = EmailSendEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"email-send-event.js","sourceRoot":"","sources":["../../src/email-send-event.ts"],"names":[],"mappings":";;;AAAA,wCAA6D;AAI7D;;;;;;;;GAQG;AACH,MAAa,cAAe,SAAQ,mBAAY;IAC5C,YACoB,GAAmB,EACnB,OAAqB,EACrB,OAAgB,EAChB,KAAa;QAE7B,KAAK,EAAE,CAAC;QALQ,QAAG,GAAH,GAAG,CAAgB;QACnB,YAAO,GAAP,OAAO,CAAc;QACrB,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAQ;IAGjC,CAAC;CACJ;AATD,wCASC"}
1
+ {"version":3,"file":"email-send-event.js","sourceRoot":"","sources":["../../src/email-send-event.ts"],"names":[],"mappings":";;;AAAA,wCAA6D;AAI7D;;;;;;;;GAQG;AACH,MAAa,cAAe,SAAQ,mBAAY;IAC5C,YACoB,GAAmB,EACnB,OAAqB,EACrB,OAAgB,EAChB,KAAa,EACb,QAAwB;QAExC,KAAK,EAAE,CAAC;QANQ,QAAG,GAAH,GAAG,CAAgB;QACnB,YAAO,GAAP,OAAO,CAAc;QACrB,YAAO,GAAP,OAAO,CAAS;QAChB,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAgB;IAG5C,CAAC;CACJ;AAVD,wCAUC"}
@@ -2,7 +2,7 @@ import { LanguageCode } from '@vendure/common/lib/generated-types';
2
2
  import { Type } from '@vendure/common/lib/shared-types';
3
3
  import { Injector } from '@vendure/core';
4
4
  import { EmailEventListener } from '../event-listener';
5
- import { EmailTemplateConfig, EventWithAsyncData, EventWithContext, IntermediateEmailDetails, LoadDataFn, SetAttachmentsFn, SetOptionalAddressFieldsFn, SetSubjectFn, SetTemplateVarsFn } from '../types';
5
+ import { EmailTemplateConfig, EventWithAsyncData, EventWithContext, IntermediateEmailDetails, LoadDataFn, SetAttachmentsFn, SetMetadataFn, SetOptionalAddressFieldsFn, SetSubjectFn, SetTemplateVarsFn } from '../types';
6
6
  /**
7
7
  * @description
8
8
  * The EmailEventHandler defines how the EmailPlugin will respond to a given event.
@@ -109,7 +109,6 @@ import { EmailTemplateConfig, EventWithAsyncData, EventWithContext, Intermediate
109
109
  * plugins: [
110
110
  * EmailPlugin.init({
111
111
  * handler: [...defaultEmailHandlers, quoteRequestedHandler],
112
- * templatePath: path.join(__dirname, 'vendure/email/templates'),
113
112
  * // ... etc
114
113
  * }),
115
114
  * ],
@@ -127,6 +126,7 @@ export declare class EmailEventHandler<T extends string = string, Event extends
127
126
  private setTemplateVarsFn;
128
127
  private setAttachmentsFn?;
129
128
  private setOptionalAddressFieldsFn?;
129
+ private setMetadataFn?;
130
130
  private filterFns;
131
131
  private configurations;
132
132
  private defaultSubject;
@@ -185,6 +185,33 @@ export declare class EmailEventHandler<T extends string = string, Event extends
185
185
  * @since 1.1.0
186
186
  */
187
187
  setOptionalAddressFields(optionalAddressFieldsFn: SetOptionalAddressFieldsFn<Event>): this;
188
+ /**
189
+ * @description
190
+ * A function which allows {@link EmailMetadata} to be specified for the email. This can be used
191
+ * to store arbitrary data about the email which can be used for tracking or other purposes.
192
+ *
193
+ * It will be exposed in the {@link EmailSendEvent} as `event.metadata`. Here's an example of usage:
194
+ *
195
+ * - An {@link OrderStateTransitionEvent} occurs, and the EmailEventListener starts processing it.
196
+ * - The EmailEventHandler attaches metadata to the email:
197
+ * ```ts
198
+ * new EmailEventListener(EventType.ORDER_CONFIRMATION)
199
+ * .on(OrderStateTransitionEvent)
200
+ * .setMetadata(event => ({
201
+ * type: EventType.ORDER_CONFIRMATION,
202
+ * orderId: event.order.id,
203
+ * }));
204
+ * ```
205
+ * - Then, the EmailPlugin tries to send the email and publishes {@link EmailSendEvent},
206
+ * passing ctx, emailDetails, error or success, and this metadata.
207
+ * - In another part of the server, we have an eventBus that subscribes to EmailSendEvent. We can use
208
+ * `metadata.type` and `metadata.orderId` to identify the related order. For example, we can indicate on the
209
+ * order that the email was successfully sent, or in case of an error, send a notification confirming
210
+ * the order in another available way.
211
+ *
212
+ * @since 3.1.0
213
+ */
214
+ setMetadata(optionalSetMetadataFn: SetMetadataFn<Event>): this;
188
215
  /**
189
216
  * @description
190
217
  * Defines one or more files to be attached to the email. An attachment can be specified
@@ -110,7 +110,6 @@ const constants_1 = require("../constants");
110
110
  * plugins: [
111
111
  * EmailPlugin.init({
112
112
  * handler: [...defaultEmailHandlers, quoteRequestedHandler],
113
- * templatePath: path.join(__dirname, 'vendure/email/templates'),
114
113
  * // ... etc
115
114
  * }),
116
115
  * ],
@@ -207,6 +206,36 @@ class EmailEventHandler {
207
206
  this.setOptionalAddressFieldsFn = optionalAddressFieldsFn;
208
207
  return this;
209
208
  }
209
+ /**
210
+ * @description
211
+ * A function which allows {@link EmailMetadata} to be specified for the email. This can be used
212
+ * to store arbitrary data about the email which can be used for tracking or other purposes.
213
+ *
214
+ * It will be exposed in the {@link EmailSendEvent} as `event.metadata`. Here's an example of usage:
215
+ *
216
+ * - An {@link OrderStateTransitionEvent} occurs, and the EmailEventListener starts processing it.
217
+ * - The EmailEventHandler attaches metadata to the email:
218
+ * ```ts
219
+ * new EmailEventListener(EventType.ORDER_CONFIRMATION)
220
+ * .on(OrderStateTransitionEvent)
221
+ * .setMetadata(event => ({
222
+ * type: EventType.ORDER_CONFIRMATION,
223
+ * orderId: event.order.id,
224
+ * }));
225
+ * ```
226
+ * - Then, the EmailPlugin tries to send the email and publishes {@link EmailSendEvent},
227
+ * passing ctx, emailDetails, error or success, and this metadata.
228
+ * - In another part of the server, we have an eventBus that subscribes to EmailSendEvent. We can use
229
+ * `metadata.type` and `metadata.orderId` to identify the related order. For example, we can indicate on the
230
+ * order that the email was successfully sent, or in case of an error, send a notification confirming
231
+ * the order in another available way.
232
+ *
233
+ * @since 3.1.0
234
+ */
235
+ setMetadata(optionalSetMetadataFn) {
236
+ this.setMetadataFn = optionalSetMetadataFn;
237
+ return this;
238
+ }
210
239
  /**
211
240
  * @description
212
241
  * Defines one or more files to be attached to the email. An attachment can be specified
@@ -279,6 +308,7 @@ class EmailEventHandler {
279
308
  asyncHandler.setTemplateVarsFn = this.setTemplateVarsFn;
280
309
  asyncHandler.setAttachmentsFn = this.setAttachmentsFn;
281
310
  asyncHandler.setOptionalAddressFieldsFn = this.setOptionalAddressFieldsFn;
311
+ asyncHandler.setMetadataFn = this.setMetadataFn;
282
312
  asyncHandler.filterFns = this.filterFns;
283
313
  asyncHandler.configurations = this.configurations;
284
314
  asyncHandler.defaultSubject = this.defaultSubject;
@@ -347,7 +377,9 @@ class EmailEventHandler {
347
377
  }
348
378
  const attachments = await (0, attachment_utils_1.serializeAttachments)(attachmentsArray);
349
379
  const optionalAddressFields = (_e = (await ((_d = this.setOptionalAddressFieldsFn) === null || _d === void 0 ? void 0 : _d.call(this, event)))) !== null && _e !== void 0 ? _e : {};
350
- return Object.assign({ ctx: event.ctx.serialize(), type: this.type, recipient, from: this.from, templateVars: Object.assign(Object.assign({}, globals), templateVars), subject, templateFile: configuration ? configuration.templateFile : 'body.hbs', attachments }, optionalAddressFields);
380
+ const metadata = this.setMetadataFn ? await this.setMetadataFn(event) : {};
381
+ return Object.assign({ ctx: event.ctx.serialize(), type: this.type, recipient, from: this.from, templateVars: Object.assign(Object.assign({}, globals), templateVars), subject, templateFile: configuration ? configuration.templateFile : 'body.hbs', attachments,
382
+ metadata }, optionalAddressFields);
351
383
  }
352
384
  /**
353
385
  * @description
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../../src/handler/event-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../../src/handler/event-handler.ts"],"names":[],"mappings":"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"}
@@ -30,14 +30,14 @@ import { EmailPluginDevModeOptions, EmailPluginOptions, InitializedEmailPluginOp
30
30
  *
31
31
  * @example
32
32
  * ```ts
33
- * import { defaultEmailHandlers, EmailPlugin } from '\@vendure/email-plugin';
33
+ * import { defaultEmailHandlers, EmailPlugin, FileBasedTemplateLoader } from '\@vendure/email-plugin';
34
34
  *
35
35
  * const config: VendureConfig = {
36
36
  * // Add an instance of the plugin to the plugins array
37
37
  * plugins: [
38
38
  * EmailPlugin.init({
39
39
  * handler: defaultEmailHandlers,
40
- * templatePath: path.join(__dirname, 'static/email/templates'),
40
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
41
41
  * transport: {
42
42
  * type: 'smtp',
43
43
  * host: 'smtp.example.com',
@@ -196,13 +196,13 @@ import { EmailPluginDevModeOptions, EmailPluginOptions, InitializedEmailPluginOp
196
196
  *
197
197
  * @example
198
198
  * ```ts
199
- * import { defaultEmailHandlers, EmailPlugin } from '\@vendure/email-plugin';
199
+ * import { defaultEmailHandlers, EmailPlugin, FileBasedTemplateLoader } from '\@vendure/email-plugin';
200
200
  * import { MyTransportService } from './transport.services.ts';
201
201
  * const config: VendureConfig = {
202
202
  * plugins: [
203
203
  * EmailPlugin.init({
204
204
  * handler: defaultEmailHandlers,
205
- * templatePath: path.join(__dirname, 'static/email/templates'),
205
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
206
206
  * transport: (injector, ctx) => {
207
207
  * if (ctx) {
208
208
  * return injector.get(MyTransportService).getSettings(ctx);
@@ -230,7 +230,7 @@ import { EmailPluginDevModeOptions, EmailPluginOptions, InitializedEmailPluginOp
230
230
  * devMode: true,
231
231
  * route: 'mailbox',
232
232
  * handler: defaultEmailHandlers,
233
- * templatePath: path.join(__dirname, 'vendure/email/templates'),
233
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
234
234
  * outputPath: path.join(__dirname, 'test-emails'),
235
235
  * })
236
236
  * ```
package/lib/src/plugin.js CHANGED
@@ -49,14 +49,14 @@ const file_based_template_loader_1 = require("./template-loader/file-based-templ
49
49
  *
50
50
  * @example
51
51
  * ```ts
52
- * import { defaultEmailHandlers, EmailPlugin } from '\@vendure/email-plugin';
52
+ * import { defaultEmailHandlers, EmailPlugin, FileBasedTemplateLoader } from '\@vendure/email-plugin';
53
53
  *
54
54
  * const config: VendureConfig = {
55
55
  * // Add an instance of the plugin to the plugins array
56
56
  * plugins: [
57
57
  * EmailPlugin.init({
58
58
  * handler: defaultEmailHandlers,
59
- * templatePath: path.join(__dirname, 'static/email/templates'),
59
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
60
60
  * transport: {
61
61
  * type: 'smtp',
62
62
  * host: 'smtp.example.com',
@@ -215,13 +215,13 @@ const file_based_template_loader_1 = require("./template-loader/file-based-templ
215
215
  *
216
216
  * @example
217
217
  * ```ts
218
- * import { defaultEmailHandlers, EmailPlugin } from '\@vendure/email-plugin';
218
+ * import { defaultEmailHandlers, EmailPlugin, FileBasedTemplateLoader } from '\@vendure/email-plugin';
219
219
  * import { MyTransportService } from './transport.services.ts';
220
220
  * const config: VendureConfig = {
221
221
  * plugins: [
222
222
  * EmailPlugin.init({
223
223
  * handler: defaultEmailHandlers,
224
- * templatePath: path.join(__dirname, 'static/email/templates'),
224
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
225
225
  * transport: (injector, ctx) => {
226
226
  * if (ctx) {
227
227
  * return injector.get(MyTransportService).getSettings(ctx);
@@ -249,7 +249,7 @@ const file_based_template_loader_1 = require("./template-loader/file-based-templ
249
249
  * devMode: true,
250
250
  * route: 'mailbox',
251
251
  * handler: defaultEmailHandlers,
252
- * templatePath: path.join(__dirname, 'vendure/email/templates'),
252
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
253
253
  * outputPath: path.join(__dirname, 'test-emails'),
254
254
  * })
255
255
  * ```
@@ -203,7 +203,7 @@ export interface SMTPTransportOptions extends SMTPTransport.Options {
203
203
  * plugins: [
204
204
  * EmailPlugin.init({
205
205
  * handler: defaultEmailHandlers,
206
- * templatePath: path.join(__dirname, 'static/email/templates'),
206
+ * templateLoader: new FileBasedTemplateLoader(path.join(__dirname, '../static/email/templates')),
207
207
  * transport: {
208
208
  * type: 'ses',
209
209
  * SES: { ses, aws: { SendRawEmailCommand } },
@@ -332,6 +332,7 @@ export type IntermediateEmailDetails = {
332
332
  cc?: string;
333
333
  bcc?: string;
334
334
  replyTo?: string;
335
+ metadata?: EmailMetadata;
335
336
  };
336
337
  /**
337
338
  * @description
@@ -365,9 +366,30 @@ export interface EmailTemplateConfig {
365
366
  */
366
367
  subject: string;
367
368
  }
369
+ /**
370
+ * @description
371
+ * The object passed to the {@link TemplateLoader} `loadTemplate()` method.
372
+ *
373
+ * @docsCategory core plugins/EmailPlugin
374
+ * @docsPage Email Plugin Types
375
+ */
368
376
  export interface LoadTemplateInput {
377
+ /**
378
+ * @description
379
+ * The type corresponds to the string passed to the EmailEventListener constructor.
380
+ */
369
381
  type: string;
382
+ /**
383
+ * @description
384
+ * The template name is specified by the EmailEventHander's call to
385
+ * the `addTemplate()` method, and will default to `body.hbs`
386
+ */
370
387
  templateName: string;
388
+ /**
389
+ * @description
390
+ * The variables defined by the globalTemplateVars as well as any variables defined in the
391
+ * EmailEventHandler's `setTemplateVars()` method.
392
+ */
371
393
  templateVars: any;
372
394
  }
373
395
  export interface Partial {
@@ -438,3 +460,14 @@ export interface OptionalAddressFields {
438
460
  * @docsPage Email Plugin Types
439
461
  */
440
462
  export type SetOptionalAddressFieldsFn<Event> = (event: Event) => OptionalAddressFields | Promise<OptionalAddressFields>;
463
+ /**
464
+ * @description
465
+ * A function used to set the {@link EmailMetadata}.
466
+ *
467
+ * @since 3.1.0
468
+ * @docsCategory core plugins/EmailPlugin
469
+ * @docsPage Email Plugin Types
470
+ *
471
+ */
472
+ export type SetMetadataFn<Event> = (event: Event) => EmailMetadata | Promise<EmailMetadata>;
473
+ export type EmailMetadata = Record<string, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vendure/email-plugin",
3
- "version": "3.0.0",
3
+ "version": "3.1.0-next.0",
4
4
  "license": "GPL-3.0-or-later",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -34,10 +34,10 @@
34
34
  "@types/express": "^4.17.21",
35
35
  "@types/fs-extra": "^11.0.4",
36
36
  "@types/mjml": "^4.7.4",
37
- "@vendure/common": "^3.0.0",
38
- "@vendure/core": "^3.0.0",
37
+ "@vendure/common": "3.1.0-next.0",
38
+ "@vendure/core": "3.1.0-next.0",
39
39
  "rimraf": "^5.0.5",
40
40
  "typescript": "5.3.3"
41
41
  },
42
- "gitHead": "a23b3ae5d4675eb459bb646ba7dd4ab0b085eb08"
42
+ "gitHead": "5fb37225c199c0110f12c260821c13bb34174894"
43
43
  }