@teleporthq/teleport-plugin-next-workflows 0.44.8 → 0.44.9

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 (117) hide show
  1. package/__tests__/_helpers/load-server-runtime.ts +6 -2
  2. package/__tests__/_helpers/run-account-delete-route.ts +140 -0
  3. package/__tests__/account-delete-current-password.test.ts +73 -0
  4. package/__tests__/account-delete-password-check.test.ts +113 -0
  5. package/__tests__/account-delete-visitor-details.test.ts +206 -0
  6. package/__tests__/auth-password-change-ends-sessions.test.ts +178 -0
  7. package/__tests__/data-api-invalid-body.test.ts +110 -0
  8. package/__tests__/data-node-not-awaited.test.ts +7 -6
  9. package/__tests__/invoice-payment-line.test.ts +68 -0
  10. package/__tests__/invoice-tender.test.ts +116 -0
  11. package/__tests__/pending-work-after-reply.test.ts +294 -0
  12. package/__tests__/runtime-condition-operands.test.ts +86 -0
  13. package/__tests__/webhook-delivery-lease.test.ts +68 -6
  14. package/dist/cjs/account-delete-route-generator.d.ts +7 -2
  15. package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
  16. package/dist/cjs/account-delete-route-generator.js +90 -43
  17. package/dist/cjs/account-delete-route-generator.js.map +1 -1
  18. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  19. package/dist/cjs/api-route-generator.js +12 -13
  20. package/dist/cjs/api-route-generator.js.map +1 -1
  21. package/dist/cjs/auth-generator.d.ts.map +1 -1
  22. package/dist/cjs/auth-generator.js +34 -1
  23. package/dist/cjs/auth-generator.js.map +1 -1
  24. package/dist/cjs/await-result.d.ts +13 -5
  25. package/dist/cjs/await-result.d.ts.map +1 -1
  26. package/dist/cjs/await-result.js +19 -8
  27. package/dist/cjs/await-result.js.map +1 -1
  28. package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
  29. package/dist/cjs/data-api-route-generator.js +9 -1
  30. package/dist/cjs/data-api-route-generator.js.map +1 -1
  31. package/dist/cjs/executor-generator.d.ts.map +1 -1
  32. package/dist/cjs/executor-generator.js +18 -6
  33. package/dist/cjs/executor-generator.js.map +1 -1
  34. package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
  35. package/dist/cjs/invoice/invoice-html-code.js +96 -5
  36. package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
  37. package/dist/cjs/nodes/account/account-delete-current.d.ts.map +1 -1
  38. package/dist/cjs/nodes/account/account-delete-current.js +4 -1
  39. package/dist/cjs/nodes/account/account-delete-current.js.map +1 -1
  40. package/dist/cjs/server-runtime-code.d.ts.map +1 -1
  41. package/dist/cjs/server-runtime-code.js +21 -0
  42. package/dist/cjs/server-runtime-code.js.map +1 -1
  43. package/dist/cjs/transactional-email-code.d.ts +7 -0
  44. package/dist/cjs/transactional-email-code.d.ts.map +1 -1
  45. package/dist/cjs/transactional-email-code.js +5 -5
  46. package/dist/cjs/transactional-email-code.js.map +1 -1
  47. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  48. package/dist/cjs/vercel-functions.d.ts +34 -0
  49. package/dist/cjs/vercel-functions.d.ts.map +1 -0
  50. package/dist/cjs/vercel-functions.js +62 -0
  51. package/dist/cjs/vercel-functions.js.map +1 -0
  52. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  53. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  54. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  55. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  56. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  57. package/dist/cjs/workflow-project-plugin.js +3 -0
  58. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  59. package/dist/esm/account-delete-route-generator.d.ts +7 -2
  60. package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
  61. package/dist/esm/account-delete-route-generator.js +90 -43
  62. package/dist/esm/account-delete-route-generator.js.map +1 -1
  63. package/dist/esm/api-route-generator.d.ts.map +1 -1
  64. package/dist/esm/api-route-generator.js +12 -13
  65. package/dist/esm/api-route-generator.js.map +1 -1
  66. package/dist/esm/auth-generator.d.ts.map +1 -1
  67. package/dist/esm/auth-generator.js +34 -1
  68. package/dist/esm/auth-generator.js.map +1 -1
  69. package/dist/esm/await-result.d.ts +13 -5
  70. package/dist/esm/await-result.d.ts.map +1 -1
  71. package/dist/esm/await-result.js +18 -7
  72. package/dist/esm/await-result.js.map +1 -1
  73. package/dist/esm/data-api-route-generator.d.ts.map +1 -1
  74. package/dist/esm/data-api-route-generator.js +9 -1
  75. package/dist/esm/data-api-route-generator.js.map +1 -1
  76. package/dist/esm/executor-generator.d.ts.map +1 -1
  77. package/dist/esm/executor-generator.js +18 -6
  78. package/dist/esm/executor-generator.js.map +1 -1
  79. package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
  80. package/dist/esm/invoice/invoice-html-code.js +96 -5
  81. package/dist/esm/invoice/invoice-html-code.js.map +1 -1
  82. package/dist/esm/nodes/account/account-delete-current.d.ts.map +1 -1
  83. package/dist/esm/nodes/account/account-delete-current.js +4 -1
  84. package/dist/esm/nodes/account/account-delete-current.js.map +1 -1
  85. package/dist/esm/server-runtime-code.d.ts.map +1 -1
  86. package/dist/esm/server-runtime-code.js +21 -0
  87. package/dist/esm/server-runtime-code.js.map +1 -1
  88. package/dist/esm/transactional-email-code.d.ts +7 -0
  89. package/dist/esm/transactional-email-code.d.ts.map +1 -1
  90. package/dist/esm/transactional-email-code.js +5 -5
  91. package/dist/esm/transactional-email-code.js.map +1 -1
  92. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  93. package/dist/esm/vercel-functions.d.ts +34 -0
  94. package/dist/esm/vercel-functions.d.ts.map +1 -0
  95. package/dist/esm/vercel-functions.js +57 -0
  96. package/dist/esm/vercel-functions.js.map +1 -0
  97. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  98. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  99. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  100. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  101. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  102. package/dist/esm/workflow-project-plugin.js +3 -0
  103. package/dist/esm/workflow-project-plugin.js.map +1 -1
  104. package/package.json +2 -2
  105. package/src/account-delete-route-generator.ts +97 -45
  106. package/src/api-route-generator.ts +12 -13
  107. package/src/auth-generator.ts +34 -1
  108. package/src/await-result.ts +19 -7
  109. package/src/data-api-route-generator.ts +9 -1
  110. package/src/executor-generator.ts +18 -6
  111. package/src/invoice/invoice-html-code.ts +96 -5
  112. package/src/nodes/account/account-delete-current.ts +4 -1
  113. package/src/server-runtime-code.ts +22 -0
  114. package/src/transactional-email-code.ts +12 -5
  115. package/src/vercel-functions.ts +67 -0
  116. package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +26 -11
  117. package/src/workflow-project-plugin.ts +3 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isFireAndForgetSegment = exports.isFireAndForgetNode = exports.AWAIT_RESULT_CONFIG_KEY = exports.DATA_NODE_TYPES = void 0;
3
+ exports.isFireAndForgetSegment = exports.isFireAndForgetNode = exports.AWAIT_RESULT_CONFIG_KEY = exports.NOT_AWAITABLE_SERVER_NODE_TYPES = exports.DATA_NODE_TYPES = void 0;
4
4
  /**
5
5
  * Every node in the `data` category. Mirrors `DATA_NODE_TYPES` in
6
6
  * teleport-gui's `@teleport/workflow-schema` (`constants/data-node-await.ts`) —
@@ -14,19 +14,30 @@ exports.DATA_NODE_TYPES = [
14
14
  'data-update-item',
15
15
  'data-delete-item',
16
16
  ];
17
+ /**
18
+ * The other steps the author may choose not to wait for: server work whose
19
+ * result nothing downstream needs (a cash order's invoice, rendered, stored
20
+ * and mailed while the buyer is already on the confirmation page). The
21
+ * editor offers the choice on the same steps (`supportsAwaitResultOption` in
22
+ * teleport-gui's `@teleport/workflow-schema`) — a PAIRED EDIT.
23
+ */
24
+ exports.NOT_AWAITABLE_SERVER_NODE_TYPES = ['ecommerce-generate-invoice'];
17
25
  /**
18
26
  * Config key carrying the author's await choice. Only `false` opts out —
19
27
  * `undefined` (never configured) and `true` both mean "await", so every
20
28
  * project generated before this option existed keeps its old behaviour.
21
29
  */
22
30
  exports.AWAIT_RESULT_CONFIG_KEY = 'awaitResult';
23
- const DATA_NODE_TYPE_SET = new Set(exports.DATA_NODE_TYPES);
31
+ const AWAIT_OPTIONAL_NODE_TYPE_SET = new Set([
32
+ ...exports.DATA_NODE_TYPES,
33
+ ...exports.NOT_AWAITABLE_SERVER_NODE_TYPES,
34
+ ]);
24
35
  /**
25
- * True when this node runs fire-and-forget: the runtime starts the query,
36
+ * True when this node runs fire-and-forget: the runtime starts the step,
26
37
  * publishes `null` under the node's id and moves straight on to the next node.
27
38
  */
28
39
  const isFireAndForgetNode = (node) => {
29
- if (!node || !DATA_NODE_TYPE_SET.has(node.type)) {
40
+ if (!node || !AWAIT_OPTIONAL_NODE_TYPE_SET.has(node.type)) {
30
41
  return false;
31
42
  }
32
43
  const config = node.config;
@@ -38,10 +49,10 @@ exports.isFireAndForgetNode = isFireAndForgetNode;
38
49
  * response — i.e. every node it holds is fire-and-forget, so nothing
39
50
  * downstream can read anything the segment produces.
40
51
  *
41
- * The API route itself still awaits each query before replying (a serverless
42
- * function may be frozen the moment it responds, which would drop an in-flight
43
- * write); what this flag removes is the CLIENT's wait on that round trip, which
44
- * is where the latency the visitor feels actually comes from.
52
+ * The API route itself still lands each step (a serverless function may be
53
+ * frozen the moment it responds, which would drop an in-flight write: on
54
+ * Vercel the step finishes after the reply, elsewhere the reply waits); what
55
+ * this flag removes is the CLIENT's wait on that round trip.
45
56
  */
46
57
  const isFireAndForgetSegment = (segment) => segment.env === 'server' &&
47
58
  segment.nodes.length > 0 &&
@@ -1 +1 @@
1
- {"version":3,"file":"await-result.js","sourceRoot":"","sources":["../../src/await-result.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACU,QAAA,eAAe,GAA0B;IACpD,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;CACnB,CAAA;AAED;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,aAAa,CAAA;AAEpD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS,uBAAe,CAAC,CAAA;AAE3D;;;GAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,IAAyC,EAAW,EAAE;IACxF,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC/C,OAAO,KAAK,CAAA;KACb;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6C,CAAA;IACjE,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,+BAAuB,CAAC,KAAK,KAAK,CAAA;AAC9D,CAAC,CAAA;AANY,QAAA,mBAAmB,uBAM/B;AAED;;;;;;;;;GASG;AACI,MAAM,sBAAsB,GAAG,CAAC,OAAwB,EAAW,EAAE,CAC1E,OAAO,CAAC,GAAG,KAAK,QAAQ;IACxB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC,CAAA;AAH7C,QAAA,sBAAsB,0BAGuB"}
1
+ {"version":3,"file":"await-result.js","sourceRoot":"","sources":["../../src/await-result.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACU,QAAA,eAAe,GAA0B;IACpD,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;CACnB,CAAA;AAED;;;;;;GAMG;AACU,QAAA,+BAA+B,GAA0B,CAAC,4BAA4B,CAAC,CAAA;AAEpG;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,aAAa,CAAA;AAEpD,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAS;IACnD,GAAG,uBAAe;IAClB,GAAG,uCAA+B;CACnC,CAAC,CAAA;AAEF;;;GAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,IAAyC,EAAW,EAAE;IACxF,IAAI,CAAC,IAAI,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzD,OAAO,KAAK,CAAA;KACb;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6C,CAAA;IACjE,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,+BAAuB,CAAC,KAAK,KAAK,CAAA;AAC9D,CAAC,CAAA;AANY,QAAA,mBAAmB,uBAM/B;AAED;;;;;;;;;GASG;AACI,MAAM,sBAAsB,GAAG,CAAC,OAAwB,EAAW,EAAE,CAC1E,OAAO,CAAC,GAAG,KAAK,QAAQ;IACxB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC,CAAA;AAH7C,QAAA,sBAAsB,0BAGuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-api-route-generator.d.ts","sourceRoot":"","sources":["../../src/data-api-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,aAAa,EAAe,MAAM,6BAA6B,CAAA;AAExE,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAW9C,CAAA;AAEF,eAAO,MAAM,iBAAiB,kBAAmB,IAAI,MAAM,CAAC,KAAG,OAO9D,CAAA;AAED,MAAM,WAAW,mBAAmB;IAIlC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAQ3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,MAAM,CASzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CACtD,CAAA;AAEpC,eAAO,MAAM,oBAAoB,aAAa,mBAAmB,KAAQ,MA8qCxE,CAAA"}
1
+ {"version":3,"file":"data-api-route-generator.d.ts","sourceRoot":"","sources":["../../src/data-api-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,aAAa,EAAe,MAAM,6BAA6B,CAAA;AAExE,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAW9C,CAAA;AAEF,eAAO,MAAM,iBAAiB,kBAAmB,IAAI,MAAM,CAAC,KAAG,OAO9D,CAAA;AAED,MAAM,WAAW,mBAAmB;IAIlC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAQ3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,MAAM,CASzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CACtD,CAAA;AAEpC,eAAO,MAAM,oBAAoB,aAAa,mBAAmB,KAAQ,MAsrCxE,CAAA"}
@@ -1193,7 +1193,15 @@ module.exports = async function handler(req, res) {
1193
1193
  }
1194
1194
 
1195
1195
  var operation = params[params.length - 1];
1196
- var body = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
1196
+ var body;
1197
+ try {
1198
+ body = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
1199
+ } catch (e) {
1200
+ body = null;
1201
+ }
1202
+ if (!body || typeof body !== 'object' || Array.isArray(body)) {
1203
+ return res.status(400).json({ error: 'Invalid request body. Expected a JSON object.' });
1204
+ }
1197
1205
  var client = getClient();
1198
1206
 
1199
1207
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"data-api-route-generator.js","sourceRoot":"","sources":["../../src/data-api-route-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-api-route-generator.js","sourceRoot":"","sources":["../../src/data-api-route-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAA;AAKvB,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAID,eAAO,MAAM,8BAA8B,aAAa,yBAAyB,KAAQ,MAw/CxF,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MA+nB5C,CAAA"}
1
+ {"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAA;AAKvB,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAID,eAAO,MAAM,8BAA8B,aAAa,yBAAyB,KAAQ,MAogDxF,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MA+nB5C,CAAA"}
@@ -642,9 +642,15 @@ function normalizeComparisonOperator(op) {
642
642
  .toLowerCase();
643
643
  }
644
644
 
645
+ // The editor's templates write a comparison's sides as leftOperand /
646
+ // rightOperand; everything else writes leftValue / rightValue.
647
+ function comparisonSide(config, valueKey, operandKey) {
648
+ return config[valueKey] !== undefined ? config[valueKey] : config[operandKey];
649
+ }
650
+
645
651
  function evaluateSingleComparison(config, context) {
646
- var rawLeft = resolveValue(config.leftValue, context);
647
- var rawRight = resolveValue(config.rightValue, context);
652
+ var rawLeft = resolveValue(comparisonSide(config, 'leftValue', 'leftOperand'), context);
653
+ var rawRight = resolveValue(comparisonSide(config, 'rightValue', 'rightOperand'), context);
648
654
  const op = normalizeComparisonOperator(config.operator || 'equals');
649
655
  var isUnary = op === 'is-empty' || op === 'is-not-empty' || op === 'is-truthy' || op === 'is-falsy' ||
650
656
  op === 'is-null' || op === 'is-not-null' || op === 'is-true' || op === 'is-false';
@@ -654,7 +660,7 @@ function evaluateSingleComparison(config, context) {
654
660
  switch (op) {
655
661
  case '===': return left === right;
656
662
  case '!==': return left !== right;
657
- case '==': case 'equals': return left == right;
663
+ case '=': case '==': case 'equals': return left == right;
658
664
  case '!=': case 'not-equals': return left != right;
659
665
  case '>': case 'greater-than': return left > right;
660
666
  case '<': case 'less-than': return left < right;
@@ -796,10 +802,16 @@ var __DATA_NODE_TYPES = {
796
802
  'data-delete-item': true
797
803
  };
798
804
 
799
- // A data node the author opted out of awaiting. Only an explicit \`false\` opts
800
- // out, so a config written before the option existed keeps awaiting.
805
+ // Mirrors NOT_AWAITABLE_SERVER_NODE_TYPES in await-result.ts — PAIRED EDIT.
806
+ var __NOT_AWAITABLE_SERVER_NODE_TYPES = {
807
+ 'ecommerce-generate-invoice': true
808
+ };
809
+
810
+ // A data node (or a step listed above) the author opted out of awaiting. Only
811
+ // an explicit \`false\` opts out, so a config written before the option existed
812
+ // keeps awaiting.
801
813
  function isFireAndForgetNode(node) {
802
- if (!node || !__DATA_NODE_TYPES[node.type]) return false;
814
+ if (!node || !(__DATA_NODE_TYPES[node.type] || __NOT_AWAITABLE_SERVER_NODE_TYPES[node.type])) return false;
803
815
  return !!node.config && node.config.awaitResult === false;
804
816
  }
805
817
 
@@ -1 +1 @@
1
- {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoice-html-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/invoice-html-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4HhE,eAAO,MAAM,uBAAuB,aACxB,mBAAmB,uBACR,OAAO,iBACb,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACxD,MA2iCF,CAAA"}
1
+ {"version":3,"file":"invoice-html-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/invoice-html-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4HhE,eAAO,MAAM,uBAAuB,aACxB,mBAAmB,uBACR,OAAO,iBACb,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACxD,MAsoCF,CAAA"}
@@ -248,6 +248,54 @@ function formatDateValue(raw) {
248
248
  }
249
249
  }
250
250
 
251
+ // How the invoice says it was paid: the method in words, with the provider that
252
+ // took the money when a provider did ("Card (Stripe)", "Paid online" for a
253
+ // booking paid through the site, "Cash on delivery", "Gift card"), and the
254
+ // provider's payment id as "Ref. pi_…". The stored values are ids.
255
+ var PAYMENT_PROVIDER_LABELS = {
256
+ stripe: 'Stripe', paypal: 'PayPal', mollie: 'Mollie', razorpay: 'Razorpay',
257
+ square: 'Square', paddle: 'Paddle', coingate: 'CoinGate',
258
+ };
259
+ var PAYMENT_METHOD_LABELS = {
260
+ card: 'Card',
261
+ online: 'Paid online',
262
+ cash_on_delivery: 'Cash on delivery',
263
+ cod: 'Cash on delivery',
264
+ cash: 'Cash',
265
+ store_pickup: 'Paid at pickup',
266
+ pickup: 'Paid at pickup',
267
+ gift_card: 'Gift card',
268
+ bank_transfer: 'Bank transfer',
269
+ };
270
+ var PAYMENT_METHODS_NAMING_PROVIDER = { card: true, online: true };
271
+
272
+ function humanizePaymentId(value) {
273
+ var words = String(value).replace(/[_-]+/g, ' ').trim();
274
+ return words.charAt(0).toUpperCase() + words.slice(1);
275
+ }
276
+
277
+ function paymentProviderLabel(provider) {
278
+ var id = String(provider || '').trim().toLowerCase();
279
+ return PAYMENT_PROVIDER_LABELS[id] || (id ? humanizePaymentId(id) : '');
280
+ }
281
+
282
+ function paymentMethodLabel(method, provider) {
283
+ var id = String(method || '').trim().toLowerCase();
284
+ var providerLabel = paymentProviderLabel(provider);
285
+ if (PAYMENT_METHOD_LABELS[id]) {
286
+ return PAYMENT_METHOD_LABELS[id] +
287
+ (PAYMENT_METHODS_NAMING_PROVIDER[id] && providerLabel ? ' (' + providerLabel + ')' : '');
288
+ }
289
+ if (PAYMENT_PROVIDER_LABELS[id]) return 'Paid online (' + PAYMENT_PROVIDER_LABELS[id] + ')';
290
+ if (!id) return providerLabel ? 'Paid online (' + providerLabel + ')' : '';
291
+ return humanizePaymentId(id);
292
+ }
293
+
294
+ function paymentReference(paymentId) {
295
+ var ref = String(paymentId || '').trim();
296
+ return ref ? 'Ref. ' + ref : '';
297
+ }
298
+
251
299
  function buildInvoiceDataScope(invoiceData) {
252
300
  var contextCompany = extractStaticAttrsFromContext(TEMPLATE_COMPONENT_UIDL).Company || {};
253
301
  var sym = invoiceData.currencySymbol || '$';
@@ -294,10 +342,13 @@ function buildInvoiceDataScope(invoiceData) {
294
342
  var giftCardLast4 = String(invoiceData.giftCardLast4 || '').trim();
295
343
  var totalNumber = Number(invoiceData.total);
296
344
  if (!isFinite(totalNumber)) totalNumber = 0;
345
+ // What is left to pay after the gift card. The invoice records what the
346
+ // provider or the courier was to collect; once that is paid, nothing is left.
297
347
  var amountDueNumber = Number(invoiceData.amountDue);
298
348
  if (invoiceData.amountDue == null || !isFinite(amountDueNumber)) {
299
349
  amountDueNumber = Math.max(0, totalNumber - giftCardAmountNumber);
300
350
  }
351
+ if (isSettledInvoice(invoiceData.status)) amountDueNumber = 0;
301
352
 
302
353
  // A paid invoice asks for nothing: where the due date would print, it says
303
354
  // when it was paid. The order keeps no payment method finer than its
@@ -359,9 +410,9 @@ function buildInvoiceDataScope(invoiceData) {
359
410
  realCustomer.hasVat = realCustomer.vat ? 'true' : 'false';
360
411
 
361
412
  var realPayment = {
362
- method: invoiceData.paymentMethod || '',
363
- provider: invoiceData.paymentProvider || '',
364
- intentId: invoiceData.paymentIntentId || '',
413
+ method: paymentMethodLabel(invoiceData.paymentMethod, invoiceData.paymentProvider),
414
+ provider: paymentProviderLabel(invoiceData.paymentProvider),
415
+ intentId: paymentReference(invoiceData.paymentIntentId),
365
416
  orderId: invoiceData.orderId || '',
366
417
  };
367
418
 
@@ -729,6 +780,39 @@ function renderComponentReference(content, scope, depth) {
729
780
  return rendered;
730
781
  }
731
782
 
783
+ // A paid invoice asks for nothing, so, as in the email, its amount-due line is
784
+ // left out. The template shows that line whenever a gift card was used, which
785
+ // cannot tell whether the rest was paid since. The line is the innermost
786
+ // container holding the field (the editor lays each summary line out as a row
787
+ // of texts), and only when the field is all it holds: a container that also
788
+ // holds a block or another field is the merchant's own, and stays.
789
+ var AMOUNT_DUE_FIELD = /\\bInvoice\\??\\.amountDue\\b/;
790
+
791
+ function isPaidAmountDueLine(content, scope) {
792
+ var inv = scope.invoiceData && scope.invoiceData.Invoice;
793
+ if (!inv || !isSettledInvoice(inv.status)) return false;
794
+ var fields = { amountDue: 0, other: 0 };
795
+ return countLineFields(content.children, fields) && fields.amountDue > 0 && fields.other === 0;
796
+ }
797
+
798
+ // Counts the fields a line prints into \`fields\`; false when it holds anything
799
+ // but text, which makes it a block rather than a line.
800
+ function countLineFields(children, fields) {
801
+ var list = children || [];
802
+ for (var i = 0; i < list.length; i++) {
803
+ var child = list[i];
804
+ if (!child || child.type === 'static') continue;
805
+ if (child.type === 'expr') {
806
+ if (AMOUNT_DUE_FIELD.test(String(child.content))) fields.amountDue++;
807
+ else fields.other++;
808
+ continue;
809
+ }
810
+ var isText = child.type === 'element' && child.content && child.content.elementType === 'text';
811
+ if (!isText || !countLineFields(child.content.children, fields)) return false;
812
+ }
813
+ return true;
814
+ }
815
+
732
816
  function renderNode(node, scope, componentName, depth) {
733
817
  if (!node) return '';
734
818
  if (typeof depth !== 'number') depth = 0;
@@ -784,6 +868,10 @@ function renderNode(node, scope, componentName, depth) {
784
868
  return fragChildren.map(function (c) { return renderNode(c, scope, componentName, depth); }).join('');
785
869
  }
786
870
 
871
+ if (elementType === 'container' && isPaidAmountDueLine(content, scope)) {
872
+ return '';
873
+ }
874
+
787
875
  var tag = content.semanticType || elementTypeToTag(elementType);
788
876
  var baseClass = classNameForNode(componentName, content.name);
789
877
  var referencedClasses = collectReferencedStyleClasses(content.referencedStyles);
@@ -1017,11 +1105,14 @@ function buildFallbackInvoiceHtml(scope) {
1017
1105
  }
1018
1106
  totalsRows += '<div style="display:flex;justify-content:space-between;font-weight:bold;border-top:2px solid #333;padding-top:4px;"><span>Total</span><span>' + escapeHtml(inv.total) + '</span></div>';
1019
1107
  // A gift card settles part (or all) of the total, so what is left to pay is
1020
- // printed beneath it — 0.00 included, which is the buyer's proof of that.
1108
+ // printed beneath it — 0.00 included, which is the buyer's proof of that —
1109
+ // until the invoice is paid, whose paid date says nothing is left.
1021
1110
  if (inv.hasGiftCard === 'true') {
1022
1111
  var giftCardLabel = 'Paid by gift card' + (inv.giftCardLast4 ? ' \\u2022\\u2022\\u2022\\u2022' + inv.giftCardLast4 : '');
1023
1112
  totalsRows += '<div style="display:flex;justify-content:space-between;margin-top:4px;margin-bottom:4px;"><span>' + escapeHtml(giftCardLabel) + '</span><span>\\u2212' + escapeHtml(inv.giftCardAmount) + '</span></div>';
1024
- totalsRows += '<div style="display:flex;justify-content:space-between;font-weight:bold;"><span>Amount due</span><span>' + escapeHtml(inv.amountDue) + '</span></div>';
1113
+ if (!isSettledInvoice(inv.status)) {
1114
+ totalsRows += '<div style="display:flex;justify-content:space-between;font-weight:bold;"><span>Amount due</span><span>' + escapeHtml(inv.amountDue) + '</span></div>';
1115
+ }
1025
1116
  }
1026
1117
  parts.push('<div style="display:flex;justify-content:flex-end;margin-top:16px;"><div style="width:240px;">' +
1027
1118
  totalsRows +
@@ -1 +1 @@
1
- {"version":3,"file":"invoice-html-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-html-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoice-html-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-html-code.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"account-delete-current.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-delete-current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAkFhE,eAAO,MAAM,oBAAoB,EAAE,oBAUlC,CAAA"}
1
+ {"version":3,"file":"account-delete-current.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-delete-current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAqFhE,eAAO,MAAM,oBAAoB,EAAE,oBAUlC,CAAA"}
@@ -19,10 +19,13 @@ async function account_delete_current(config, context) {
19
19
  if (typeof runLocale === 'string' && runLocale) {
20
20
  deleteHeaders['x-teleport-locale'] = runLocale;
21
21
  }
22
+ // A template that asks for the password passes what the visitor typed; the
23
+ // route checks it the way sign-in does and deletes nothing when it is wrong.
24
+ const password = config && typeof config.password === 'string' ? config.password : '';
22
25
  const response = await fetch(baseUrl + '/api/account/delete-current', {
23
26
  method: 'POST',
24
27
  headers: deleteHeaders,
25
- body: '{}',
28
+ body: JSON.stringify(password ? { password } : {}),
26
29
  });
27
30
  let data = {};
28
31
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"account-delete-current.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-delete-current.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,uEAAuE;AACvE,KAAK,UAAU,sBAAsB,CAAC,MAAW,EAAE,OAAgC;IACjF,MAAM,OAAO,GAAG,CAAC,OAAO,IAAK,OAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAE7D,8EAA8E;IAC9E,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,aAAa,GAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACjE,MAAM,SAAS,GAAG,OAAO,IAAK,OAAe,CAAC,QAAQ,CAAA;IACtD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,EAAE;QAC9C,aAAa,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAA;KAC/C;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,6BAA6B,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,IAAI;KACX,CAAC,CAAA;IAEF,IAAI,IAAI,GAAQ,EAAE,CAAA;IAClB,IAAI;QACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;KAC7B;IAAC,OAAO,EAAE,EAAE,GAAE;IAEf,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAA;KACpE;IAED,+EAA+E;IAC/E,yEAAyE;IACzE,6EAA6E;IAC7E,0CAA0C;IAC1C,MAAM,aAAa,GACjB,CAAC,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAA;IAC/E,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE;QAChE,IAAI;YACF,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;SACjD;QAAC,OAAO,EAAE,EAAE,GAAE;KAChB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,IAAI;YACF,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;SACrD;QAAC,OAAO,EAAE,EAAE,GAAE;QACf,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAE/F,MAAM,OAAO,GACX,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,yDAAyD,CAAA;QAChG,0EAA0E;QAC1E,6EAA6E;QAC7E,sCAAsC;QACtC,IAAI;YACF,MAAM,GAAG,GAAG,MAAa,CAAA;YACzB,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC5C,EAAE,CAAC,WAAW,GAAG,OAAO,CAAA;YACxB,EAAE,CAAC,YAAY,CACb,OAAO,EACP,wEAAwE;gBACtE,wEAAwE;gBACxE,uEAAuE;gBACvE,wEAAwE,CAC3E,CAAA;YACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;SAClC;QAAC,OAAO,EAAE,EAAE,GAAE;QAEf,oEAAoE;QACpE,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,CAAA;QAChG,MAAM,CAAC,UAAU,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAA;QACnC,CAAC,EAAE,IAAI,CAAC,CAAA;KACT;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;AAC5C,CAAC;AAEY,QAAA,oBAAoB,GAAyB;IACxD,QAAQ,EAAE,wBAAwB;IAClC,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE;QACZ,WAAW,EAAE,SAAS;KACvB;IACD,eAAe;QACb,OAAO,IAAA,uBAAe,EAAC,sBAAsB,CAAC,CAAA;IAChD,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"account-delete-current.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-delete-current.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-runtime-code.d.ts","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,yBAAyB,QAAO,MA2W5C,CAAA"}
1
+ {"version":3,"file":"server-runtime-code.d.ts","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,yBAAyB,QAAO,MA+X5C,CAAA"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateServerRuntimeCode = void 0;
4
+ const vercel_functions_1 = require("./vercel-functions");
4
5
  /**
5
6
  * `utils/workflows/server-runtime.js`: what every server route loads. It is the
6
7
  * shared runtime utilities plus the parts only a server may run — the signed
@@ -45,6 +46,8 @@ const generateServerRuntimeCode = () => `'use strict';
45
46
  var crypto = require('crypto');
46
47
  var utils = require('./runtime-utils');
47
48
 
49
+ ${(0, vercel_functions_1.generateVercelFunctionsLoaderCode)()}
50
+
48
51
  var __stepKeyCache = { secret: null, key: null };
49
52
 
50
53
  function stepKey() {
@@ -397,7 +400,25 @@ function trustedBaseUrl(req) {
397
400
  return origin;
398
401
  }
399
402
 
403
+ // The work a segment's not-awaited steps left running (an invoice being
404
+ // rendered and mailed) must still finish, but the visitor need not wait for
405
+ // it: on Vercel it is handed to waitUntil, which keeps the function running
406
+ // after the reply. Anywhere else the route awaits it before replying, since a
407
+ // function frozen after its reply would drop it.
408
+ function handOffPendingNodePromises(context) {
409
+ var queue = context && context.__pendingNodePromises;
410
+ if (!queue || queue.length === 0) return Promise.resolve();
411
+ // Drained through the queue itself: the route deletes it from the context
412
+ // before replying, and a parallel branch still running pushes onto it.
413
+ var drained = utils.settlePendingNodePromises({ __pendingNodePromises: queue });
414
+ var waitUntil = __vercelWaitUntil();
415
+ if (!waitUntil) return drained;
416
+ waitUntil(drained);
417
+ return Promise.resolve();
418
+ }
419
+
400
420
  module.exports = Object.assign({}, utils, {
421
+ handOffPendingNodePromises: handOffPendingNodePromises,
401
422
  claimSegmentContext: claimSegmentContext,
402
423
  segmentReply: segmentReply,
403
424
  internalRequestHeaders: internalRequestHeaders,
@@ -1 +1 @@
1
- {"version":3,"file":"server-runtime-code.js","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACI,MAAM,yBAAyB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2WtD,CAAA;AA3WY,QAAA,yBAAyB,6BA2WrC"}
1
+ {"version":3,"file":"server-runtime-code.js","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":";;;AAAA,yDAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACI,MAAM,yBAAyB,GAAG,GAAW,EAAE,CAAC;;;;EAIrD,IAAA,oDAAiC,GAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2XpC,CAAA;AA/XY,QAAA,yBAAyB,6BA+XrC"}
@@ -17,6 +17,13 @@ export interface TransactionalEmailLedger {
17
17
  source: string;
18
18
  sourceRef: string;
19
19
  relativePrefix: string;
20
+ /**
21
+ * Records the send without the recipient's details: `msg.recordedTo` in
22
+ * place of the address, and neither the body nor the values it was filled
23
+ * with. For an email to someone whose details the route is removing (the
24
+ * farewell after an account deletion).
25
+ */
26
+ withoutRecipientDetails?: boolean;
20
27
  }
21
28
  export declare const generateProviderSendFunction: (provider?: string | null, ledger?: TransactionalEmailLedger) => string;
22
29
  export declare const generateFillTemplateFn: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"transactional-email-code.d.ts","sourceRoot":"","sources":["../../src/transactional-email-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAKxE,eAAO,MAAM,yBAAyB,aAMpC,CAAA;AAIF,eAAO,MAAM,8BAA8B,cAC9B,MAAM,GAAG,IAAI,KACvB,OAAO,MAAM,EAAE,MAAM,CAKvB,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB;AASD,eAAO,MAAM,4BAA4B,cAC5B,MAAM,GAAG,IAAI,WACf,wBAAwB,KAChC,MA0CF,CAAA;AA6DD,eAAO,MAAM,sBAAsB,QAAO,MASxC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,UAAW,OAAO,KAAG,2BAgB5D,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,mBAAoB,MAAM,KAAG,MAGlC,CAAA;AAElC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,WAAY;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB,KAAG,MAMF,CAAA;AAKF,eAAO,MAAM,yBAAyB,UAarC,CAAA"}
1
+ {"version":3,"file":"transactional-email-code.d.ts","sourceRoot":"","sources":["../../src/transactional-email-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAKxE,eAAO,MAAM,yBAAyB,aAMpC,CAAA;AAIF,eAAO,MAAM,8BAA8B,cAC9B,MAAM,GAAG,IAAI,KACvB,OAAO,MAAM,EAAE,MAAM,CAKvB,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AASD,eAAO,MAAM,4BAA4B,cAC5B,MAAM,GAAG,IAAI,WACf,wBAAwB,KAChC,MA0CF,CAAA;AA6DD,eAAO,MAAM,sBAAsB,QAAO,MASxC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,UAAW,OAAO,KAAG,2BAgB5D,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,mBAAoB,MAAM,KAAG,MAGlC,CAAA;AAElC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,WAAY;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB,KAAG,MAMF,CAAA;AAKF,eAAO,MAAM,yBAAyB,UAarC,CAAA"}
@@ -20,8 +20,8 @@ const transactionalEmailDependencies = (provider) => {
20
20
  return (0, email_sender_code_1.getEmailProviderDependencies)(provider);
21
21
  };
22
22
  exports.transactionalEmailDependencies = transactionalEmailDependencies;
23
- // Provider-specific `__sendProviderEmail({ from, fromName?, to, subject, html,
24
- // apiKey, tokenValues?, userId? })`, preceded by the `__emailSender` helper that
23
+ // Provider-specific `__sendProviderEmail({ from, fromName?, to, recordedTo?,
24
+ // subject, html, apiKey, tokenValues?, userId? })`, preceded by the `__emailSender` helper that
25
25
  // names the sender. No attachment (unlike the invoice sender). When no provider
26
26
  // is configured the function is a no-op so the route stays self-contained and
27
27
  // never throws. With `ledger`, the provider function is emitted as
@@ -54,12 +54,12 @@ async function __sendProviderEmail(msg) {
54
54
  __sentEmailLog.recordSentEmail({
55
55
  emailType: ${JSON.stringify(ledger.emailType)},
56
56
  audience: 'customer',
57
- to: msg.to,
57
+ to: ${ledger.withoutRecipientDetails ? 'msg.recordedTo' : 'msg.to'},
58
58
  from: sender.email,
59
59
  fromName: sender.name,
60
60
  subject: msg.subject,
61
- html: msg.html,
62
- payload: msg.tokenValues,
61
+ html: ${ledger.withoutRecipientDetails ? "''" : 'msg.html'},
62
+ payload: ${ledger.withoutRecipientDetails ? 'null' : 'msg.tokenValues'},
63
63
  provider: ${JSON.stringify(provider)},
64
64
  status: failure ? 'failed' : 'sent',
65
65
  error: failure ? (failure.message || String(failure)) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"transactional-email-code.js","sourceRoot":"","sources":["../../src/transactional-email-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactional-email-code.js","sourceRoot":"","sources":["../../src/transactional-email-code.ts"],"names":[],"mappings":"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"}