@teleporthq/teleport-plugin-next-workflows 0.44.7 → 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.
- package/__tests__/_helpers/load-server-runtime.ts +6 -2
- package/__tests__/_helpers/run-account-delete-route.ts +140 -0
- package/__tests__/account-delete-current-password.test.ts +73 -0
- package/__tests__/account-delete-password-check.test.ts +113 -0
- package/__tests__/account-delete-visitor-details.test.ts +206 -0
- package/__tests__/auth-password-change-ends-sessions.test.ts +178 -0
- package/__tests__/credential-result-reply.test.ts +509 -0
- package/__tests__/data-api-invalid-body.test.ts +110 -0
- package/__tests__/data-node-not-awaited.test.ts +7 -6
- package/__tests__/invoice-payment-line.test.ts +68 -0
- package/__tests__/invoice-tender.test.ts +116 -0
- package/__tests__/pending-work-after-reply.test.ts +294 -0
- package/__tests__/runtime-condition-operands.test.ts +86 -0
- package/__tests__/webhook-delivery-lease.test.ts +68 -6
- package/dist/cjs/account-delete-route-generator.d.ts +7 -2
- package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
- package/dist/cjs/account-delete-route-generator.js +90 -43
- package/dist/cjs/account-delete-route-generator.js.map +1 -1
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +17 -15
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +34 -1
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/await-result.d.ts +13 -5
- package/dist/cjs/await-result.d.ts.map +1 -1
- package/dist/cjs/await-result.js +19 -8
- package/dist/cjs/await-result.js.map +1 -1
- package/dist/cjs/credential-results.d.ts +18 -0
- package/dist/cjs/credential-results.d.ts.map +1 -0
- package/dist/cjs/credential-results.js +72 -0
- package/dist/cjs/credential-results.js.map +1 -0
- package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
- package/dist/cjs/data-api-route-generator.js +9 -1
- package/dist/cjs/data-api-route-generator.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +26 -7
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.js +96 -5
- package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
- package/dist/cjs/nodes/account/account-delete-current.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-delete-current.js +4 -1
- package/dist/cjs/nodes/account/account-delete-current.js.map +1 -1
- package/dist/cjs/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-hash-password.js +1 -0
- package/dist/cjs/nodes/account/account-hash-password.js.map +1 -1
- package/dist/cjs/nodes/types.d.ts +6 -0
- package/dist/cjs/nodes/types.d.ts.map +1 -1
- package/dist/cjs/server-runtime-code.d.ts +8 -0
- package/dist/cjs/server-runtime-code.d.ts.map +1 -1
- package/dist/cjs/server-runtime-code.js +127 -0
- package/dist/cjs/server-runtime-code.js.map +1 -1
- package/dist/cjs/transactional-email-code.d.ts +7 -0
- package/dist/cjs/transactional-email-code.d.ts.map +1 -1
- package/dist/cjs/transactional-email-code.js +5 -5
- package/dist/cjs/transactional-email-code.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/vercel-functions.d.ts +34 -0
- package/dist/cjs/vercel-functions.d.ts.map +1 -0
- package/dist/cjs/vercel-functions.js +62 -0
- package/dist/cjs/vercel-functions.js.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +3 -0
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/esm/account-delete-route-generator.d.ts +7 -2
- package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
- package/dist/esm/account-delete-route-generator.js +90 -43
- package/dist/esm/account-delete-route-generator.js.map +1 -1
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +17 -15
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +34 -1
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/await-result.d.ts +13 -5
- package/dist/esm/await-result.d.ts.map +1 -1
- package/dist/esm/await-result.js +18 -7
- package/dist/esm/await-result.js.map +1 -1
- package/dist/esm/credential-results.d.ts +18 -0
- package/dist/esm/credential-results.d.ts.map +1 -0
- package/dist/esm/credential-results.js +68 -0
- package/dist/esm/credential-results.js.map +1 -0
- package/dist/esm/data-api-route-generator.d.ts.map +1 -1
- package/dist/esm/data-api-route-generator.js +9 -1
- package/dist/esm/data-api-route-generator.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +26 -7
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-html-code.js +96 -5
- package/dist/esm/invoice/invoice-html-code.js.map +1 -1
- package/dist/esm/nodes/account/account-delete-current.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-delete-current.js +4 -1
- package/dist/esm/nodes/account/account-delete-current.js.map +1 -1
- package/dist/esm/nodes/account/account-hash-password.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-hash-password.js +1 -0
- package/dist/esm/nodes/account/account-hash-password.js.map +1 -1
- package/dist/esm/nodes/types.d.ts +6 -0
- package/dist/esm/nodes/types.d.ts.map +1 -1
- package/dist/esm/server-runtime-code.d.ts +8 -0
- package/dist/esm/server-runtime-code.d.ts.map +1 -1
- package/dist/esm/server-runtime-code.js +127 -0
- package/dist/esm/server-runtime-code.js.map +1 -1
- package/dist/esm/transactional-email-code.d.ts +7 -0
- package/dist/esm/transactional-email-code.d.ts.map +1 -1
- package/dist/esm/transactional-email-code.js +5 -5
- package/dist/esm/transactional-email-code.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/vercel-functions.d.ts +34 -0
- package/dist/esm/vercel-functions.d.ts.map +1 -0
- package/dist/esm/vercel-functions.js +57 -0
- package/dist/esm/vercel-functions.js.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +3 -0
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/account-delete-route-generator.ts +97 -45
- package/src/api-route-generator.ts +17 -15
- package/src/auth-generator.ts +34 -1
- package/src/await-result.ts +19 -7
- package/src/credential-results.ts +71 -0
- package/src/data-api-route-generator.ts +9 -1
- package/src/executor-generator.ts +26 -7
- package/src/invoice/invoice-html-code.ts +96 -5
- package/src/nodes/account/account-delete-current.ts +4 -1
- package/src/nodes/account/account-hash-password.ts +1 -0
- package/src/nodes/types.ts +6 -0
- package/src/server-runtime-code.ts +128 -0
- package/src/transactional-email-code.ts +12 -5
- package/src/vercel-functions.ts +67 -0
- package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +26 -11
- package/src/workflow-project-plugin.ts +3 -0
|
@@ -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
|
-
|
|
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;
|
|
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;
|
|
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":"account-hash-password.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-hash-password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA8ChE,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"account-hash-password.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-hash-password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA8ChE,eAAO,MAAM,mBAAmB,EAAE,oBAUjC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-hash-password.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-hash-password.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,KAAK,UAAU,qBAAqB,CAAC,MAAW,EAAE,OAAgC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEnF,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACxC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEpC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;KACnD;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE;QACtE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;KACnE;IAED,yEAAyE;IACzE,mEAAmE;IACnE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,aAAa,GACjB,OAAO,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAA;IACpF,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,MAAM,GAAI,UAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM;SACf,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;SAC5B,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAE7C,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC;AAEY,QAAA,mBAAmB,GAAyB;IACvD,QAAQ,EAAE,uBAAuB;IACjC,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE;QACZ,QAAQ,EAAE,QAAQ;KACnB;IACD,eAAe;QACb,OAAO,IAAA,uBAAe,EAAC,qBAAqB,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"account-hash-password.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-hash-password.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,KAAK,UAAU,qBAAqB,CAAC,MAAW,EAAE,OAAgC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEnF,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACxC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEpC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;KACnD;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE;QACtE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;KACnE;IAED,yEAAyE;IACzE,mEAAmE;IACnE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,aAAa,GACjB,OAAO,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAA;IACpF,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,MAAM,GAAI,UAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM;SACf,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;SAC5B,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAE7C,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC;AAEY,QAAA,mBAAmB,GAAyB;IACvD,QAAQ,EAAE,uBAAuB;IACjC,YAAY,EAAE,QAAQ;IACtB,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE;QACZ,QAAQ,EAAE,QAAQ;KACnB;IACD,eAAe;QACb,OAAO,IAAA,uBAAe,EAAC,qBAAqB,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA"}
|
|
@@ -5,6 +5,12 @@ export interface NodeHandlerGenerator {
|
|
|
5
5
|
nodeType: string;
|
|
6
6
|
executionEnv: 'client' | 'server' | 'universal';
|
|
7
7
|
isTerminal?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The node's result is a credential (a password hash). A server segment
|
|
10
|
+
* never replies it as it is: the browser receives it sealed, and only the
|
|
11
|
+
* app's own later server segments can open it (see credential-results.ts).
|
|
12
|
+
*/
|
|
13
|
+
resultIsCredential?: boolean;
|
|
8
14
|
dependencies?: Record<string, string>;
|
|
9
15
|
generateHandler(): string;
|
|
10
16
|
generateServerHandler?(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/nodes/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE/F,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAErD;AAkCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwEhF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,eAAe,IAAI,MAAM,CAAA;IACzB,qBAAqB,CAAC,IAAI,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/nodes/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE/F,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAErD;AAkCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwEhF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,eAAe,IAAI,MAAM,CAAA;IACzB,qBAAqB,CAAC,IAAI,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB"}
|
|
@@ -27,6 +27,14 @@
|
|
|
27
27
|
* that needs a trustworthy figure (a price, an owner) reads it from the
|
|
28
28
|
* database itself.
|
|
29
29
|
*
|
|
30
|
+
* A result that is a credential (a password hash, see credential-results.ts)
|
|
31
|
+
* makes the same trip SEALED: `segmentReply` replies it encrypted with a key
|
|
32
|
+
* derived from NEXTAUTH_SECRET (AES-256-GCM) and signs the sealed form, and
|
|
33
|
+
* `claimSegmentContext` opens every sealed value a request hands it (a
|
|
34
|
+
* relayed result once its signature holds). The browser relays it without
|
|
35
|
+
* ever reading it, and a later segment's reply hands back the sealed form,
|
|
36
|
+
* never the opened one.
|
|
37
|
+
*
|
|
30
38
|
* The facts about the graph each route needs are baked into its
|
|
31
39
|
* SEGMENT_CONFIG at generation time (see segment-trust.ts).
|
|
32
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime-code.d.ts","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":"
|
|
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
|
|
@@ -30,6 +31,14 @@ exports.generateServerRuntimeCode = void 0;
|
|
|
30
31
|
* that needs a trustworthy figure (a price, an owner) reads it from the
|
|
31
32
|
* database itself.
|
|
32
33
|
*
|
|
34
|
+
* A result that is a credential (a password hash, see credential-results.ts)
|
|
35
|
+
* makes the same trip SEALED: `segmentReply` replies it encrypted with a key
|
|
36
|
+
* derived from NEXTAUTH_SECRET (AES-256-GCM) and signs the sealed form, and
|
|
37
|
+
* `claimSegmentContext` opens every sealed value a request hands it (a
|
|
38
|
+
* relayed result once its signature holds). The browser relays it without
|
|
39
|
+
* ever reading it, and a later segment's reply hands back the sealed form,
|
|
40
|
+
* never the opened one.
|
|
41
|
+
*
|
|
33
42
|
* The facts about the graph each route needs are baked into its
|
|
34
43
|
* SEGMENT_CONFIG at generation time (see segment-trust.ts).
|
|
35
44
|
*/
|
|
@@ -37,6 +46,8 @@ const generateServerRuntimeCode = () => `'use strict';
|
|
|
37
46
|
var crypto = require('crypto');
|
|
38
47
|
var utils = require('./runtime-utils');
|
|
39
48
|
|
|
49
|
+
${(0, vercel_functions_1.generateVercelFunctionsLoaderCode)()}
|
|
50
|
+
|
|
40
51
|
var __stepKeyCache = { secret: null, key: null };
|
|
41
52
|
|
|
42
53
|
function stepKey() {
|
|
@@ -54,6 +65,59 @@ function mac(text) {
|
|
|
54
65
|
return crypto.createHmac('sha256', stepKey()).update(text).digest('hex');
|
|
55
66
|
}
|
|
56
67
|
|
|
68
|
+
var __sealKeyCache = { secret: null, key: null };
|
|
69
|
+
|
|
70
|
+
function sealKey() {
|
|
71
|
+
var secret = process.env.NEXTAUTH_SECRET || '';
|
|
72
|
+
if (__sealKeyCache.secret !== secret) {
|
|
73
|
+
__sealKeyCache = {
|
|
74
|
+
secret: secret,
|
|
75
|
+
key: crypto.createHmac('sha256', secret).update('teleport-workflow-seal:v1').digest()
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return __sealKeyCache.key;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var SEAL_IV_BYTES = 12;
|
|
82
|
+
var SEAL_TAG_BYTES = 16;
|
|
83
|
+
|
|
84
|
+
var SEAL_AAD = Buffer.from('teleport-workflow-sealed-result:v1', 'utf8');
|
|
85
|
+
|
|
86
|
+
// The sealed form of a credential result; undefined (the result is then not
|
|
87
|
+
// replied at all) without an app secret, whose key anyone could derive.
|
|
88
|
+
function sealResult(value) {
|
|
89
|
+
if (!process.env.NEXTAUTH_SECRET) return undefined;
|
|
90
|
+
var serialized;
|
|
91
|
+
try { serialized = JSON.stringify(value); } catch (e) { return undefined; }
|
|
92
|
+
if (serialized === undefined) return undefined;
|
|
93
|
+
var iv = crypto.randomBytes(SEAL_IV_BYTES);
|
|
94
|
+
var cipher = crypto.createCipheriv('aes-256-gcm', sealKey(), iv);
|
|
95
|
+
cipher.setAAD(SEAL_AAD);
|
|
96
|
+
var data = Buffer.concat([cipher.update(serialized, 'utf8'), cipher.final()]);
|
|
97
|
+
return { __sealed: Buffer.concat([iv, cipher.getAuthTag(), data]).toString('base64') };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function isSealedResult(value) {
|
|
101
|
+
return !!value && typeof value === 'object' && !Array.isArray(value) &&
|
|
102
|
+
typeof value.__sealed === 'string' && Object.keys(value).length === 1;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// { value } when the sealed form opens under this app's key, else null.
|
|
106
|
+
function openSealedResult(sealed) {
|
|
107
|
+
if (!process.env.NEXTAUTH_SECRET) return null;
|
|
108
|
+
try {
|
|
109
|
+
var raw = Buffer.from(sealed.__sealed, 'base64');
|
|
110
|
+
if (raw.length <= SEAL_IV_BYTES + SEAL_TAG_BYTES) return null;
|
|
111
|
+
var decipher = crypto.createDecipheriv('aes-256-gcm', sealKey(), raw.subarray(0, SEAL_IV_BYTES));
|
|
112
|
+
decipher.setAAD(SEAL_AAD);
|
|
113
|
+
decipher.setAuthTag(raw.subarray(SEAL_IV_BYTES, SEAL_IV_BYTES + SEAL_TAG_BYTES));
|
|
114
|
+
var data = Buffer.concat([decipher.update(raw.subarray(SEAL_IV_BYTES + SEAL_TAG_BYTES)), decipher.final()]);
|
|
115
|
+
return { value: JSON.parse(data.toString('utf8')) };
|
|
116
|
+
} catch (e) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
57
121
|
// Without an app secret every key here would derive from '' — a value anyone
|
|
58
122
|
// can compute — so nothing verifies: relayed server results are dropped and no
|
|
59
123
|
// request passes as an internal call. (The generator gives every app with
|
|
@@ -209,10 +273,48 @@ function resetPreviousResult(segmentConfig, context) {
|
|
|
209
273
|
// merge will.
|
|
210
274
|
var __incomingOrders = new WeakMap();
|
|
211
275
|
|
|
276
|
+
// The sealed results this segment opened, so its reply hands the caller back
|
|
277
|
+
// the sealed form it relayed (see resealRelayedResults).
|
|
278
|
+
var __openedResults = new WeakMap();
|
|
279
|
+
|
|
280
|
+
// Opens every sealed value the request hands this segment, so its nodes read
|
|
281
|
+
// the credential itself: a relayed server result (whose signature
|
|
282
|
+
// dropUnsignedResults checked first), or a value the browser holds from one
|
|
283
|
+
// (a custom node's output, the previous result). Only this app's server
|
|
284
|
+
// seals, so what opens is what it sealed.
|
|
285
|
+
function openSealedResults(context) {
|
|
286
|
+
var opened = [];
|
|
287
|
+
Object.keys(context).forEach(function(key) {
|
|
288
|
+
if (isControlKey(key) && key !== '__previousNodeResult') return;
|
|
289
|
+
if (!isSealedResult(context[key])) return;
|
|
290
|
+
var result = openSealedResult(context[key]);
|
|
291
|
+
if (!result) return;
|
|
292
|
+
opened.push({ sealed: context[key], value: result.value });
|
|
293
|
+
context[key] = result.value;
|
|
294
|
+
});
|
|
295
|
+
__openedResults.set(context, opened);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Every reply entry that is an opened value (the value itself, or the previous
|
|
299
|
+
// result taken from it) goes back sealed.
|
|
300
|
+
function resealRelayedResults(context, reply) {
|
|
301
|
+
var opened = __openedResults.get(context) || [];
|
|
302
|
+
if (opened.length === 0) return;
|
|
303
|
+
Object.keys(reply).forEach(function(key) {
|
|
304
|
+
for (var i = 0; i < opened.length; i++) {
|
|
305
|
+
if (reply[key] === opened[i].value) {
|
|
306
|
+
reply[key] = opened[i].sealed;
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
|
|
212
313
|
function claimSegmentContext(segmentConfig, context) {
|
|
213
314
|
var orderKeys = readSignedOrder(context);
|
|
214
315
|
if (orderKeys) restoreOrder(context, orderKeys);
|
|
215
316
|
dropUnsignedResults(segmentConfig, context, orderKeys);
|
|
317
|
+
openSealedResults(context);
|
|
216
318
|
stripForeignControlKeys(segmentConfig, context);
|
|
217
319
|
__incomingOrders.set(context, Object.keys(context).filter(function(k) { return !isControlKey(k); }));
|
|
218
320
|
utils.claimSegmentContext(segmentConfig, context);
|
|
@@ -222,6 +324,13 @@ function claimSegmentContext(segmentConfig, context) {
|
|
|
222
324
|
|
|
223
325
|
function segmentReply(segmentConfig, context, snapshot) {
|
|
224
326
|
var reply = utils.segmentReply(segmentConfig, context, snapshot);
|
|
327
|
+
resealRelayedResults(context, reply);
|
|
328
|
+
var credentialIds = utils.credentialResultNodeIds(segmentConfig);
|
|
329
|
+
Object.keys(credentialIds).forEach(function(id) {
|
|
330
|
+
if (context[id] === undefined) return;
|
|
331
|
+
var sealed = sealResult(context[id]);
|
|
332
|
+
if (sealed) reply[id] = sealed;
|
|
333
|
+
});
|
|
225
334
|
var sigs = {};
|
|
226
335
|
var incoming = context.__sig && typeof context.__sig === 'object' && !Array.isArray(context.__sig) ? context.__sig : {};
|
|
227
336
|
Object.keys(incoming).forEach(function(id) {
|
|
@@ -291,7 +400,25 @@ function trustedBaseUrl(req) {
|
|
|
291
400
|
return origin;
|
|
292
401
|
}
|
|
293
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
|
+
|
|
294
420
|
module.exports = Object.assign({}, utils, {
|
|
421
|
+
handOffPendingNodePromises: handOffPendingNodePromises,
|
|
295
422
|
claimSegmentContext: claimSegmentContext,
|
|
296
423
|
segmentReply: segmentReply,
|
|
297
424
|
internalRequestHeaders: internalRequestHeaders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime-code.js","sourceRoot":"","sources":["../../src/server-runtime-code.ts"],"names":[],"mappings":";;;AAAA
|
|
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;
|
|
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,
|
|
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":";;;AAOA,iEAAyD;AACzD,mEAA0E;AAC1E,0EAA6F;AAEhF,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;IACT,YAAY;CACb,CAAC,CAAA;AAEF,+EAA+E;AAC/E,8BAA8B;AACvB,MAAM,8BAA8B,GAAG,CAC5C,QAAwB,EACA,EAAE;IAC1B,IAAI,CAAC,QAAQ,IAAI,CAAC,iCAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACzD,OAAO,EAAE,CAAA;KACV;IACD,OAAO,IAAA,gDAA4B,EAAC,QAAQ,CAAC,CAAA;AAC/C,CAAC,CAAA;AAPY,QAAA,8BAA8B,kCAO1C;
|
|
1
|
+
{"version":3,"file":"transactional-email-code.js","sourceRoot":"","sources":["../../src/transactional-email-code.ts"],"names":[],"mappings":"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"}
|