@unchainedshop/platform 3.0.0-rc8 → 3.0.0-rc9

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 (34) hide show
  1. package/lib/templates/order-parser/index.d.ts +3 -2
  2. package/lib/templates/order-parser/index.d.ts.map +1 -1
  3. package/lib/templates/order-parser/index.js +3 -4
  4. package/lib/templates/order-parser/index.js.map +1 -1
  5. package/lib/templates/resolveAccountActionTemplate.d.ts.map +1 -1
  6. package/lib/templates/resolveAccountActionTemplate.js +4 -3
  7. package/lib/templates/resolveAccountActionTemplate.js.map +1 -1
  8. package/lib/templates/resolveEnrollmentStatusTemplate.d.ts.map +1 -1
  9. package/lib/templates/resolveEnrollmentStatusTemplate.js +4 -3
  10. package/lib/templates/resolveEnrollmentStatusTemplate.js.map +1 -1
  11. package/lib/templates/resolveErrorReportTemplate.d.ts.map +1 -1
  12. package/lib/templates/resolveErrorReportTemplate.js +8 -7
  13. package/lib/templates/resolveErrorReportTemplate.js.map +1 -1
  14. package/lib/templates/resolveForwardDeliveryTemplate.d.ts.map +1 -1
  15. package/lib/templates/resolveForwardDeliveryTemplate.js +4 -3
  16. package/lib/templates/resolveForwardDeliveryTemplate.js.map +1 -1
  17. package/lib/templates/resolveOrderConfirmationTemplate.d.ts.map +1 -1
  18. package/lib/templates/resolveOrderConfirmationTemplate.js +4 -3
  19. package/lib/templates/resolveOrderConfirmationTemplate.js.map +1 -1
  20. package/lib/templates/resolveOrderRejectionTemplate.d.ts.map +1 -1
  21. package/lib/templates/resolveOrderRejectionTemplate.js +4 -3
  22. package/lib/templates/resolveOrderRejectionTemplate.js.map +1 -1
  23. package/lib/templates/resolveQuotationStatusTemplate.d.ts.map +1 -1
  24. package/lib/templates/resolveQuotationStatusTemplate.js +4 -3
  25. package/lib/templates/resolveQuotationStatusTemplate.js.map +1 -1
  26. package/package.json +12 -10
  27. package/src/templates/order-parser/index.ts +16 -11
  28. package/src/templates/resolveAccountActionTemplate.ts +13 -7
  29. package/src/templates/resolveEnrollmentStatusTemplate.ts +13 -8
  30. package/src/templates/resolveErrorReportTemplate.ts +13 -7
  31. package/src/templates/resolveForwardDeliveryTemplate.ts +12 -6
  32. package/src/templates/resolveOrderConfirmationTemplate.ts +12 -6
  33. package/src/templates/resolveOrderRejectionTemplate.ts +12 -6
  34. package/src/templates/resolveQuotationStatusTemplate.ts +13 -7
@@ -1,9 +1,10 @@
1
- import { Order } from '@unchainedshop/core-orders';
2
1
  import { getOrderPositionsData } from './getOrderPositionsData.js';
3
2
  import { getOrderSummaryData } from './getOrderSummaryData.js';
3
+ import { Order } from '@unchainedshop/core-orders';
4
+ import { UnchainedCore } from '@unchainedshop/core';
4
5
  export declare const transformOrderToText: ({ order, locale }: {
5
6
  order: Order;
6
7
  locale: string;
7
- }, context: any) => Promise<any>;
8
+ }, context: UnchainedCore) => Promise<string>;
8
9
  export { getOrderPositionsData, getOrderSummaryData };
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAgC/D,eAAO,MAAM,oBAAoB,sBACZ;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BAYpD,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkCpD,eAAO,MAAM,oBAAoB,sBACZ;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,WAC1C,aAAa,oBAavB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getOrderPositionsData } from './getOrderPositionsData.js';
2
2
  import { getOrderSummaryData } from './getOrderSummaryData.js';
3
+ import mustache from 'mustache';
3
4
  const textTemplate = `Order number: {{orderNumber}}
4
5
  Ordered: {{orderDate}}
5
6
  Payment method: {{summary.payment}}
@@ -30,14 +31,12 @@ Total: {{summary.prices.gross}}
30
31
  {{/summary.rawPrices.taxes.amount}}
31
32
  `;
32
33
  export const transformOrderToText = async ({ order, locale }, context) => {
33
- const { modules } = context;
34
- const data = {
34
+ return mustache.render(textTemplate, {
35
35
  orderDate: new Date(order.ordered).toLocaleString(),
36
36
  orderNumber: order.orderNumber,
37
37
  summary: await getOrderSummaryData(order, { locale }, context),
38
38
  positions: await getOrderPositionsData(order, { locale }, context),
39
- };
40
- return modules.messaging.renderToText(textTemplate, data);
39
+ }, undefined, { escape: (t) => t });
41
40
  };
42
41
  export { getOrderPositionsData, getOrderSummaryData };
43
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,EAAE,KAAK,EAAE,MAAM,EAAoC,EACnD,OAAO,EACP,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;QACnD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;QAC9D,SAAS,EAAE,MAAM,qBAAqB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACnE,CAAC;IAEF,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/order-parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,EAAE,KAAK,EAAE,MAAM,EAAoC,EACnD,OAAsB,EACtB,EAAE;IACF,OAAO,QAAQ,CAAC,MAAM,CACpB,YAAY,EACZ;QACE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;QACnD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;QAC9D,SAAS,EAAE,MAAM,qBAAqB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACnE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveAccountActionTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveAccountActionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAsFvD,eAAO,MAAM,4BAA4B,EAAE,gBA8B1C,CAAC"}
1
+ {"version":3,"file":"resolveAccountActionTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveAccountActionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAuFvD,eAAO,MAAM,4BAA4B,EAAE,gBAmC1C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import mustache from 'mustache';
1
2
  const { EMAIL_FROM, EMAIL_WEBSITE_URL, EMAIL_WEBSITE_NAME } = process.env;
2
3
  const verifyEmailEnglishConfig = {
3
4
  buttonText: 'Verify email address',
@@ -84,12 +85,12 @@ export const resolveAccountActionTemplate = async ({ userId, action, recipientEm
84
85
  const locale = modules.users.userLocale(user);
85
86
  const { url } = emailConfig[action];
86
87
  const { subject, message, buttonText } = emailConfig[action][locale.language];
87
- const data = {
88
+ const text = mustache.render(textTemplate, {
88
89
  buttonText,
89
90
  message,
90
91
  subject,
91
92
  url: url(token),
92
- };
93
+ }, undefined, { escape: (t) => t });
93
94
  return [
94
95
  {
95
96
  type: 'EMAIL',
@@ -97,7 +98,7 @@ export const resolveAccountActionTemplate = async ({ userId, action, recipientEm
97
98
  from: EMAIL_FROM || 'noreply@unchained.local',
98
99
  to: recipientEmail || modules.users.primaryEmail(user)?.address,
99
100
  subject,
100
- text: modules.messaging.renderToText(textTemplate, data),
101
+ text,
101
102
  },
102
103
  },
103
104
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveAccountActionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveAccountActionTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolveAccountActionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveAccountActionTemplate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveEnrollmentStatusTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveEnrollmentStatusTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcvD,eAAO,MAAM,+BAA+B,EAAE,gBA4B7C,CAAC"}
1
+ {"version":3,"file":"resolveEnrollmentStatusTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveEnrollmentStatusTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcvD,eAAO,MAAM,+BAA+B,EAAE,gBAiC7C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import mustache from 'mustache';
1
2
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
2
3
  const textTemplate = `
3
4
  {{subject}}\n
@@ -13,12 +14,12 @@ export const resolveEnrollmentStatusTemplate = async ({ enrollmentId, locale },
13
14
  const enrollment = await modules.enrollments.findEnrollment({ enrollmentId });
14
15
  const user = await modules.users.findUserById(enrollment.userId);
15
16
  const subject = `${EMAIL_WEBSITE_NAME}: Updated Enrollment / ${enrollment.enrollmentNumber}`;
16
- const data = {
17
+ const text = mustache.render(textTemplate, {
17
18
  enrollment,
18
19
  locale,
19
20
  subject,
20
21
  url: `${EMAIL_WEBSITE_URL}/enrollment?_id=${enrollment._id}`,
21
- };
22
+ }, undefined, { escape: (t) => t });
22
23
  return [
23
24
  {
24
25
  type: 'EMAIL',
@@ -26,7 +27,7 @@ export const resolveEnrollmentStatusTemplate = async ({ enrollmentId, locale },
26
27
  from: EMAIL_FROM || 'noreply@unchained.local',
27
28
  to: modules.users.primaryEmail(user)?.address,
28
29
  subject,
29
- text: modules.messaging.renderToText(textTemplate, data),
30
+ text,
30
31
  },
31
32
  },
32
33
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveEnrollmentStatusTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveEnrollmentStatusTemplate.ts"],"names":[],"mappings":"AAEA,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAqB,KAAK,EACpE,EAAE,YAAY,EAAE,MAAM,EAAE,EACxB,OAAO,EACP,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,GAAG,kBAAkB,0BAA0B,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAE7F,MAAM,IAAI,GAAG;QACX,UAAU;QACV,MAAM;QACN,OAAO;QACP,GAAG,EAAE,GAAG,iBAAiB,mBAAmB,UAAU,CAAC,GAAG,EAAE;KAC7D,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU,IAAI,yBAAyB;gBAC7C,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;gBAC7C,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;aACzD;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveEnrollmentStatusTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveEnrollmentStatusTemplate.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAqB,KAAK,EACpE,EAAE,YAAY,EAAE,MAAM,EAAE,EACxB,OAAO,EACP,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,GAAG,kBAAkB,0BAA0B,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAE7F,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,UAAU;QACV,MAAM;QACN,OAAO;QACP,GAAG,EAAE,GAAG,iBAAiB,mBAAmB,UAAU,CAAC,GAAG,EAAE;KAC7D,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU,IAAI,yBAAyB;gBAC7C,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;gBAC7C,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveErrorReportTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveErrorReportTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA4BvD,QAAA,MAAM,0BAA0B,EAAE,gBAkBjC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"resolveErrorReportTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveErrorReportTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA6BvD,QAAA,MAAM,0BAA0B,EAAE,gBAuBjC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,eAAe,0BAA0B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { stringify } from 'safe-stable-stringify';
2
+ import mustache from 'mustache';
2
3
  const { EMAIL_FROM = 'noreply@unchained.local', EMAIL_ERROR_REPORT_RECIPIENT = 'support@unchained.local', EMAIL_WEBSITE_NAME = 'Unchained', ROOT_URL, } = process.env;
3
4
  const formatWorkItems = (workItems) => {
4
5
  return workItems
@@ -16,8 +17,12 @@ Shop Name: {{name}}
16
17
 
17
18
  {{content}}
18
19
  `;
19
- const resolveErrorReportTemplate = async ({ workItems }, context) => {
20
- const { modules } = context;
20
+ const resolveErrorReportTemplate = async ({ workItems }) => {
21
+ const text = mustache.render(textTemplate, {
22
+ endpoint: ROOT_URL,
23
+ content: formatWorkItems(workItems),
24
+ name: EMAIL_WEBSITE_NAME,
25
+ }, undefined, { escape: (t) => t });
21
26
  return [
22
27
  {
23
28
  type: 'EMAIL',
@@ -25,11 +30,7 @@ const resolveErrorReportTemplate = async ({ workItems }, context) => {
25
30
  from: EMAIL_FROM || 'noreply@unchained.local',
26
31
  to: EMAIL_ERROR_REPORT_RECIPIENT,
27
32
  subject: `${EMAIL_WEBSITE_NAME}: Queue Errors`,
28
- text: modules.messaging.renderToText(textTemplate, {
29
- endpoint: ROOT_URL,
30
- content: formatWorkItems(workItems),
31
- name: EMAIL_WEBSITE_NAME,
32
- }),
33
+ text,
33
34
  },
34
35
  },
35
36
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveErrorReportTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveErrorReportTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,EACJ,UAAU,GAAG,yBAAyB,EACtC,4BAA4B,GAAG,yBAAyB,EACxD,kBAAkB,GAAG,WAAW,EAChC,QAAQ,GACT,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,EAAE;IACpC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACxF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;CAOpB,CAAC;AAEF,MAAM,0BAA0B,GAAqB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;IACpF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU,IAAI,yBAAyB;gBAC7C,EAAE,EAAE,4BAA4B;gBAChC,OAAO,EAAE,GAAG,kBAAkB,gBAAgB;gBAC9C,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE;oBACjD,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC;oBACnC,IAAI,EAAE,kBAAkB;iBACzB,CAAC;aACH;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"resolveErrorReportTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveErrorReportTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EACJ,UAAU,GAAG,yBAAyB,EACtC,4BAA4B,GAAG,yBAAyB,EACxD,kBAAkB,GAAG,WAAW,EAChC,QAAQ,GACT,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,EAAE;IACpC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACxF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;CAOpB,CAAC;AAEF,MAAM,0BAA0B,GAAqB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3E,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC;QACnC,IAAI,EAAE,kBAAkB;KACzB,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU,IAAI,yBAAyB;gBAC7C,EAAE,EAAE,4BAA4B;gBAChC,OAAO,EAAE,GAAG,kBAAkB,gBAAgB;gBAC9C,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,eAAe,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveForwardDeliveryTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcvD,eAAO,MAAM,8BAA8B,EAAE,gBA+B5C,CAAC"}
1
+ {"version":3,"file":"resolveForwardDeliveryTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAevD,eAAO,MAAM,8BAA8B,EAAE,gBAoC5C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { systemLocale } from '@unchainedshop/utils';
2
2
  import { transformOrderToText } from './order-parser/index.js';
3
+ import mustache from 'mustache';
3
4
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
4
5
  const textTemplate = `
5
6
  New Order received:
@@ -18,11 +19,11 @@ export const resolveForwardDeliveryTemplate = async ({ config, orderId }, contex
18
19
  };
19
20
  }, {});
20
21
  const subject = `${EMAIL_WEBSITE_NAME} Order ${order.orderNumber}`;
21
- const data = {
22
+ const text = mustache.render(textTemplate, {
22
23
  shopName: EMAIL_WEBSITE_NAME,
23
24
  shopUrl: EMAIL_WEBSITE_URL,
24
25
  orderDetails: await transformOrderToText({ order, locale: systemLocale.baseName }, context),
25
- };
26
+ }, undefined, { escape: (t) => t });
26
27
  return [
27
28
  {
28
29
  type: 'EMAIL',
@@ -31,7 +32,7 @@ export const resolveForwardDeliveryTemplate = async ({ config, orderId }, contex
31
32
  to: configObject.to || 'orders@unchained.local',
32
33
  cc: configObject.cc,
33
34
  subject,
34
- text: modules.messaging.renderToText(textTemplate, data),
35
+ text,
35
36
  },
36
37
  },
37
38
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveForwardDeliveryTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IACrG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,OAAO;YACL,GAAG,GAAG;YACN,CAAC,GAAG,CAAC,EAAE,KAAK;SACb,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,kBAAkB,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC;KAC5F,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,YAAY,CAAC,IAAI,IAAI,UAAU,IAAI,yBAAyB,GAAG;gBAC/F,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,wBAAwB;gBAC/C,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;aACzD;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveForwardDeliveryTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveForwardDeliveryTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IACrG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,OAAO;YACL,GAAG,GAAG;YACN,CAAC,GAAG,CAAC,EAAE,KAAK;SACb,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,kBAAkB,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC;KAC5F,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,YAAY,CAAC,IAAI,IAAI,UAAU,IAAI,yBAAyB,GAAG;gBAC/F,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,wBAAwB;gBAC/C,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderConfirmationTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAavD,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CA2BA,CAAC"}
1
+ {"version":3,"file":"resolveOrderConfirmationTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcvD,eAAO,MAAM,gCAAgC,EAAE,gBAAgB,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAgCA,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { transformOrderToText } from './order-parser/index.js';
2
+ import mustache from 'mustache';
2
3
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
3
4
  const textTemplate = `
4
5
  Thank you very much for your order.
@@ -14,11 +15,11 @@ export const resolveOrderConfirmationTemplate = async ({ orderId, locale }, cont
14
15
  return [];
15
16
  }
16
17
  const subject = `Order ${order.orderNumber}`;
17
- const data = {
18
+ const text = mustache.render(textTemplate, {
18
19
  shopName: EMAIL_WEBSITE_NAME,
19
20
  shopUrl: EMAIL_WEBSITE_URL,
20
21
  orderDetails: await transformOrderToText({ order, locale }, context),
21
- };
22
+ }, undefined, { escape: (t) => t });
22
23
  return [
23
24
  {
24
25
  type: 'EMAIL',
@@ -26,7 +27,7 @@ export const resolveOrderConfirmationTemplate = async ({ orderId, locale }, cont
26
27
  from: `${EMAIL_WEBSITE_NAME} <${EMAIL_FROM || 'noreply@unchained.local'}>`,
27
28
  to: order.contact.emailAddress,
28
29
  subject,
29
- text: modules.messaging.renderToText(textTemplate, data),
30
+ text,
30
31
  },
31
32
  },
32
33
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderConfirmationTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAGxC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;aACzD;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveOrderConfirmationTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderConfirmationTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAGxC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderRejectionTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAiBvD,eAAO,MAAM,6BAA6B,EAAE,gBA2B3C,CAAC"}
1
+ {"version":3,"file":"resolveOrderRejectionTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkBvD,eAAO,MAAM,6BAA6B,EAAE,gBAgC3C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { transformOrderToText } from './order-parser/index.js';
2
+ import mustache from 'mustache';
2
3
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
3
4
  const textTemplate = `
4
5
  I'm sorry we can't confirm your order.
@@ -18,11 +19,11 @@ export const resolveOrderRejectionTemplate = async ({ orderId, locale }, context
18
19
  return [];
19
20
  }
20
21
  const subject = `Order rejected ${order.orderNumber}`;
21
- const data = {
22
+ const text = mustache.render(textTemplate, {
22
23
  shopName: EMAIL_WEBSITE_NAME,
23
24
  shopUrl: EMAIL_WEBSITE_URL,
24
25
  orderDetails: await transformOrderToText({ order, locale }, context),
25
- };
26
+ }, undefined, { escape: (t) => t });
26
27
  return [
27
28
  {
28
29
  type: 'EMAIL',
@@ -30,7 +31,7 @@ export const resolveOrderRejectionTemplate = async ({ orderId, locale }, context
30
31
  from: `${EMAIL_WEBSITE_NAME} <${EMAIL_FROM || 'noreply@unchained.local'}>`,
31
32
  to: order.contact.emailAddress,
32
33
  subject,
33
- text: modules.messaging.renderToText(textTemplate, data),
34
+ text,
34
35
  },
35
36
  },
36
37
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resolveOrderRejectionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;;;CAUpB,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAqB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;aACzD;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveOrderRejectionTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveOrderRejectionTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;;;CAUpB,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAqB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC;KACrE,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG,kBAAkB,KAAK,UAAU,IAAI,yBAAyB,GAAG;gBAC1E,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC9B,OAAO;gBACP,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveQuotationStatusTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveQuotationStatusTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAcvD,eAAO,MAAM,8BAA8B,EAAE,gBAuC5C,CAAC"}
1
+ {"version":3,"file":"resolveQuotationStatusTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/resolveQuotationStatusTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAevD,eAAO,MAAM,8BAA8B,EAAE,gBA4C5C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import mustache from 'mustache';
1
2
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
2
3
  const textTemplate = `
3
4
  {{subject}}\n
@@ -18,12 +19,12 @@ export const resolveQuotationStatusTemplate = async ({ quotationId, locale }, {
18
19
  path: file.url,
19
20
  }));
20
21
  const subject = `${EMAIL_WEBSITE_NAME}: Updated Quotation / ${quotation.quotationNumber}`;
21
- const data = {
22
+ const text = mustache.render(textTemplate, {
22
23
  locale,
23
24
  quotation,
24
25
  subject,
25
26
  url: `${EMAIL_WEBSITE_URL}/quotation?_id=${quotation._id}`,
26
- };
27
+ }, undefined, { escape: (t) => t });
27
28
  return [
28
29
  {
29
30
  type: 'EMAIL',
@@ -31,7 +32,7 @@ export const resolveQuotationStatusTemplate = async ({ quotationId, locale }, {
31
32
  from: EMAIL_FROM,
32
33
  to: modules.users.primaryEmail(user)?.address,
33
34
  subject,
34
- text: modules.messaging.renderToText(textTemplate, data),
35
+ text,
35
36
  attachments,
36
37
  },
37
38
  },
@@ -1 +1 @@
1
- {"version":3,"file":"resolveQuotationStatusTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveQuotationStatusTemplate.ts"],"names":[],"mappings":"AAEA,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EACnE,EAAE,WAAW,EAAE,MAAM,EAAE,EACvB,EAAE,OAAO,EAAE,EACX,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,CAClB,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAC3B,EAAE,kBAAkB,EAAE,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,EAC9D,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9B,CACF;SACE,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,GAAG,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,EAAE;QACrD,IAAI,EAAE,IAAI,CAAC,GAAG;KACf,CAAC,CAAC,CAAC;IAEN,MAAM,OAAO,GAAG,GAAG,kBAAkB,yBAAyB,SAAS,CAAC,eAAe,EAAE,CAAC;IAE1F,MAAM,IAAI,GAAG;QACX,MAAM;QACN,SAAS;QACT,OAAO;QACP,GAAG,EAAE,GAAG,iBAAiB,kBAAkB,SAAS,CAAC,GAAG,EAAE;KAC3D,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;gBAC7C,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;gBACxD,WAAW;aACZ;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resolveQuotationStatusTemplate.js","sourceRoot":"","sources":["../../src/templates/resolveQuotationStatusTemplate.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1E,MAAM,YAAY,GAAG;;;;;;;;CAQpB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAqB,KAAK,EACnE,EAAE,WAAW,EAAE,MAAM,EAAE,EACvB,EAAE,OAAO,EAAE,EACX,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,CAClB,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAC3B,EAAE,kBAAkB,EAAE,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,EAC9D,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9B,CACF;SACE,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,GAAG,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,EAAE;QACrD,IAAI,EAAE,IAAI,CAAC,GAAG;KACf,CAAC,CAAC,CAAC;IAEN,MAAM,OAAO,GAAG,GAAG,kBAAkB,yBAAyB,SAAS,CAAC,eAAe,EAAE,CAAC;IAE1F,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,YAAY,EACZ;QACE,MAAM;QACN,SAAS;QACT,OAAO;QACP,GAAG,EAAE,GAAG,iBAAiB,kBAAkB,SAAS,CAAC,GAAG,EAAE;KAC3D,EACD,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CACrB,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;gBAC7C,OAAO;gBACP,IAAI;gBACJ,WAAW;aACZ;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/platform",
3
- "version": "3.0.0-rc8",
3
+ "version": "3.0.0-rc9",
4
4
  "main": "lib/platform-index.js",
5
5
  "types": "lib/platform-index.d.ts",
6
6
  "type": "module",
@@ -34,18 +34,20 @@
34
34
  "node": ">=22.0.0"
35
35
  },
36
36
  "dependencies": {
37
- "@unchainedshop/api": "^3.0.0-rc8",
38
- "@unchainedshop/core": "^3.0.0-rc8",
39
- "@unchainedshop/events": "^3.0.0-rc8",
40
- "@unchainedshop/file-upload": "^3.0.0-rc8",
41
- "@unchainedshop/logger": "^3.0.0-rc8",
42
- "@unchainedshop/mongodb": "^3.0.0-rc8",
43
- "@unchainedshop/plugins": "^3.0.0-rc8",
44
- "@unchainedshop/roles": "^3.0.0-rc8",
45
- "@unchainedshop/utils": "^3.0.0-rc8",
37
+ "@unchainedshop/api": "^3.0.0-rc9",
38
+ "@unchainedshop/core": "^3.0.0-rc9",
39
+ "@unchainedshop/events": "^3.0.0-rc9",
40
+ "@unchainedshop/file-upload": "^3.0.0-rc9",
41
+ "@unchainedshop/logger": "^3.0.0-rc9",
42
+ "@unchainedshop/mongodb": "^3.0.0-rc9",
43
+ "@unchainedshop/plugins": "^3.0.0-rc9",
44
+ "@unchainedshop/roles": "^3.0.0-rc9",
45
+ "@unchainedshop/utils": "^3.0.0-rc9",
46
+ "mustache": "^4.2.0",
46
47
  "safe-stable-stringify": "^2.5.0"
47
48
  },
48
49
  "devDependencies": {
50
+ "@types/mustache": "^4.2.5",
49
51
  "@types/node": "^22.10.2",
50
52
  "jest": "^29.7.0",
51
53
  "ts-jest": "^29.2.5",
@@ -1,6 +1,9 @@
1
- import { Order } from '@unchainedshop/core-orders';
2
1
  import { getOrderPositionsData } from './getOrderPositionsData.js';
3
2
  import { getOrderSummaryData } from './getOrderSummaryData.js';
3
+ import { Order } from '@unchainedshop/core-orders';
4
+ import { UnchainedCore } from '@unchainedshop/core';
5
+
6
+ import mustache from 'mustache';
4
7
 
5
8
  const textTemplate = `Order number: {{orderNumber}}
6
9
  Ordered: {{orderDate}}
@@ -34,17 +37,19 @@ Total: {{summary.prices.gross}}
34
37
 
35
38
  export const transformOrderToText = async (
36
39
  { order, locale }: { order: Order; locale: string },
37
- context,
40
+ context: UnchainedCore,
38
41
  ) => {
39
- const { modules } = context;
40
- const data = {
41
- orderDate: new Date(order.ordered).toLocaleString(),
42
- orderNumber: order.orderNumber,
43
- summary: await getOrderSummaryData(order, { locale }, context),
44
- positions: await getOrderPositionsData(order, { locale }, context),
45
- };
46
-
47
- return modules.messaging.renderToText(textTemplate, data);
42
+ return mustache.render(
43
+ textTemplate,
44
+ {
45
+ orderDate: new Date(order.ordered).toLocaleString(),
46
+ orderNumber: order.orderNumber,
47
+ summary: await getOrderSummaryData(order, { locale }, context),
48
+ positions: await getOrderPositionsData(order, { locale }, context),
49
+ },
50
+ undefined,
51
+ { escape: (t) => t },
52
+ );
48
53
  };
49
54
 
50
55
  export { getOrderPositionsData, getOrderSummaryData };
@@ -1,4 +1,5 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
+ import mustache from 'mustache';
2
3
 
3
4
  const { EMAIL_FROM, EMAIL_WEBSITE_URL, EMAIL_WEBSITE_NAME } = process.env;
4
5
 
@@ -96,12 +97,17 @@ export const resolveAccountActionTemplate: TemplateResolver = async (
96
97
  const { url } = emailConfig[action];
97
98
  const { subject, message, buttonText } = emailConfig[action][locale.language];
98
99
 
99
- const data = {
100
- buttonText,
101
- message,
102
- subject,
103
- url: url(token),
104
- };
100
+ const text = mustache.render(
101
+ textTemplate,
102
+ {
103
+ buttonText,
104
+ message,
105
+ subject,
106
+ url: url(token),
107
+ },
108
+ undefined,
109
+ { escape: (t) => t },
110
+ );
105
111
 
106
112
  return [
107
113
  {
@@ -110,7 +116,7 @@ export const resolveAccountActionTemplate: TemplateResolver = async (
110
116
  from: EMAIL_FROM || 'noreply@unchained.local',
111
117
  to: recipientEmail || modules.users.primaryEmail(user)?.address,
112
118
  subject,
113
- text: modules.messaging.renderToText(textTemplate, data),
119
+ text,
114
120
  },
115
121
  },
116
122
  ];
@@ -1,5 +1,5 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
-
2
+ import mustache from 'mustache';
3
3
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
4
4
 
5
5
  const textTemplate = `
@@ -22,12 +22,17 @@ export const resolveEnrollmentStatusTemplate: TemplateResolver = async (
22
22
 
23
23
  const subject = `${EMAIL_WEBSITE_NAME}: Updated Enrollment / ${enrollment.enrollmentNumber}`;
24
24
 
25
- const data = {
26
- enrollment,
27
- locale,
28
- subject,
29
- url: `${EMAIL_WEBSITE_URL}/enrollment?_id=${enrollment._id}`,
30
- };
25
+ const text = mustache.render(
26
+ textTemplate,
27
+ {
28
+ enrollment,
29
+ locale,
30
+ subject,
31
+ url: `${EMAIL_WEBSITE_URL}/enrollment?_id=${enrollment._id}`,
32
+ },
33
+ undefined,
34
+ { escape: (t) => t },
35
+ );
31
36
 
32
37
  return [
33
38
  {
@@ -36,7 +41,7 @@ export const resolveEnrollmentStatusTemplate: TemplateResolver = async (
36
41
  from: EMAIL_FROM || 'noreply@unchained.local',
37
42
  to: modules.users.primaryEmail(user)?.address,
38
43
  subject,
39
- text: modules.messaging.renderToText(textTemplate, data),
44
+ text,
40
45
  },
41
46
  },
42
47
  ];
@@ -1,5 +1,6 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
2
  import { stringify } from 'safe-stable-stringify';
3
+ import mustache from 'mustache';
3
4
 
4
5
  const {
5
6
  EMAIL_FROM = 'noreply@unchained.local',
@@ -26,8 +27,17 @@ Shop Name: {{name}}
26
27
  {{content}}
27
28
  `;
28
29
 
29
- const resolveErrorReportTemplate: TemplateResolver = async ({ workItems }, context) => {
30
- const { modules } = context;
30
+ const resolveErrorReportTemplate: TemplateResolver = async ({ workItems }) => {
31
+ const text = mustache.render(
32
+ textTemplate,
33
+ {
34
+ endpoint: ROOT_URL,
35
+ content: formatWorkItems(workItems),
36
+ name: EMAIL_WEBSITE_NAME,
37
+ },
38
+ undefined,
39
+ { escape: (t) => t },
40
+ );
31
41
 
32
42
  return [
33
43
  {
@@ -36,11 +46,7 @@ const resolveErrorReportTemplate: TemplateResolver = async ({ workItems }, conte
36
46
  from: EMAIL_FROM || 'noreply@unchained.local',
37
47
  to: EMAIL_ERROR_REPORT_RECIPIENT,
38
48
  subject: `${EMAIL_WEBSITE_NAME}: Queue Errors`,
39
- text: modules.messaging.renderToText(textTemplate, {
40
- endpoint: ROOT_URL,
41
- content: formatWorkItems(workItems),
42
- name: EMAIL_WEBSITE_NAME,
43
- }),
49
+ text,
44
50
  },
45
51
  },
46
52
  ];
@@ -1,6 +1,7 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
2
  import { systemLocale } from '@unchainedshop/utils';
3
3
  import { transformOrderToText } from './order-parser/index.js';
4
+ import mustache from 'mustache';
4
5
 
5
6
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
6
7
 
@@ -25,11 +26,16 @@ export const resolveForwardDeliveryTemplate: TemplateResolver = async ({ config,
25
26
 
26
27
  const subject = `${EMAIL_WEBSITE_NAME} Order ${order.orderNumber}`;
27
28
 
28
- const data = {
29
- shopName: EMAIL_WEBSITE_NAME,
30
- shopUrl: EMAIL_WEBSITE_URL,
31
- orderDetails: await transformOrderToText({ order, locale: systemLocale.baseName }, context),
32
- };
29
+ const text = mustache.render(
30
+ textTemplate,
31
+ {
32
+ shopName: EMAIL_WEBSITE_NAME,
33
+ shopUrl: EMAIL_WEBSITE_URL,
34
+ orderDetails: await transformOrderToText({ order, locale: systemLocale.baseName }, context),
35
+ },
36
+ undefined,
37
+ { escape: (t) => t },
38
+ );
33
39
 
34
40
  return [
35
41
  {
@@ -39,7 +45,7 @@ export const resolveForwardDeliveryTemplate: TemplateResolver = async ({ config,
39
45
  to: configObject.to || 'orders@unchained.local',
40
46
  cc: configObject.cc,
41
47
  subject,
42
- text: modules.messaging.renderToText(textTemplate, data),
48
+ text,
43
49
  },
44
50
  },
45
51
  ];
@@ -1,5 +1,6 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
2
  import { transformOrderToText } from './order-parser/index.js';
3
+ import mustache from 'mustache';
3
4
 
4
5
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
5
6
 
@@ -24,11 +25,16 @@ export const resolveOrderConfirmationTemplate: TemplateResolver<{
24
25
 
25
26
  const subject = `Order ${order.orderNumber}`;
26
27
 
27
- const data = {
28
- shopName: EMAIL_WEBSITE_NAME,
29
- shopUrl: EMAIL_WEBSITE_URL,
30
- orderDetails: await transformOrderToText({ order, locale }, context),
31
- };
28
+ const text = mustache.render(
29
+ textTemplate,
30
+ {
31
+ shopName: EMAIL_WEBSITE_NAME,
32
+ shopUrl: EMAIL_WEBSITE_URL,
33
+ orderDetails: await transformOrderToText({ order, locale }, context),
34
+ },
35
+ undefined,
36
+ { escape: (t) => t },
37
+ );
32
38
 
33
39
  return [
34
40
  {
@@ -37,7 +43,7 @@ export const resolveOrderConfirmationTemplate: TemplateResolver<{
37
43
  from: `${EMAIL_WEBSITE_NAME} <${EMAIL_FROM || 'noreply@unchained.local'}>`,
38
44
  to: order.contact.emailAddress,
39
45
  subject,
40
- text: modules.messaging.renderToText(textTemplate, data),
46
+ text,
41
47
  },
42
48
  },
43
49
  ];
@@ -1,5 +1,6 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
2
  import { transformOrderToText } from './order-parser/index.js';
3
+ import mustache from 'mustache';
3
4
 
4
5
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
5
6
 
@@ -25,11 +26,16 @@ export const resolveOrderRejectionTemplate: TemplateResolver = async ({ orderId,
25
26
 
26
27
  const subject = `Order rejected ${order.orderNumber}`;
27
28
 
28
- const data = {
29
- shopName: EMAIL_WEBSITE_NAME,
30
- shopUrl: EMAIL_WEBSITE_URL,
31
- orderDetails: await transformOrderToText({ order, locale }, context),
32
- };
29
+ const text = mustache.render(
30
+ textTemplate,
31
+ {
32
+ shopName: EMAIL_WEBSITE_NAME,
33
+ shopUrl: EMAIL_WEBSITE_URL,
34
+ orderDetails: await transformOrderToText({ order, locale }, context),
35
+ },
36
+ undefined,
37
+ { escape: (t) => t },
38
+ );
33
39
 
34
40
  return [
35
41
  {
@@ -38,7 +44,7 @@ export const resolveOrderRejectionTemplate: TemplateResolver = async ({ orderId,
38
44
  from: `${EMAIL_WEBSITE_NAME} <${EMAIL_FROM || 'noreply@unchained.local'}>`,
39
45
  to: order.contact.emailAddress,
40
46
  subject,
41
- text: modules.messaging.renderToText(textTemplate, data),
47
+ text,
42
48
  },
43
49
  },
44
50
  ];
@@ -1,4 +1,5 @@
1
1
  import { TemplateResolver } from '@unchainedshop/core';
2
+ import mustache from 'mustache';
2
3
 
3
4
  const { EMAIL_FROM, EMAIL_WEBSITE_NAME, EMAIL_WEBSITE_URL } = process.env;
4
5
 
@@ -32,12 +33,17 @@ export const resolveQuotationStatusTemplate: TemplateResolver = async (
32
33
 
33
34
  const subject = `${EMAIL_WEBSITE_NAME}: Updated Quotation / ${quotation.quotationNumber}`;
34
35
 
35
- const data = {
36
- locale,
37
- quotation,
38
- subject,
39
- url: `${EMAIL_WEBSITE_URL}/quotation?_id=${quotation._id}`,
40
- };
36
+ const text = mustache.render(
37
+ textTemplate,
38
+ {
39
+ locale,
40
+ quotation,
41
+ subject,
42
+ url: `${EMAIL_WEBSITE_URL}/quotation?_id=${quotation._id}`,
43
+ },
44
+ undefined,
45
+ { escape: (t) => t },
46
+ );
41
47
 
42
48
  return [
43
49
  {
@@ -46,7 +52,7 @@ export const resolveQuotationStatusTemplate: TemplateResolver = async (
46
52
  from: EMAIL_FROM,
47
53
  to: modules.users.primaryEmail(user)?.address,
48
54
  subject,
49
- text: modules.messaging.renderToText(textTemplate, data),
55
+ text,
50
56
  attachments,
51
57
  },
52
58
  },