@teleporthq/teleport-plugin-next-workflows 0.44.0 → 0.44.1
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/fake-store-database.ts +428 -0
- package/__tests__/_helpers/invoice-store.ts +382 -0
- package/__tests__/email-locale-senders.test.ts +3 -1
- package/__tests__/email-sender-name.test.ts +513 -0
- package/__tests__/graph-utils-topological-order.test.ts +155 -1
- package/__tests__/invoice-billing-details.test.ts +107 -1
- package/__tests__/invoice-data-access-replace.test.ts +236 -2
- package/__tests__/invoice-order-items-settle.test.ts +1 -1
- package/__tests__/invoice-payment-email.test.ts +191 -0
- package/__tests__/invoice-regenerate-email.test.ts +288 -0
- package/__tests__/invoice-regenerate-route.test.ts +9 -7
- package/__tests__/invoice-reservation.test.ts +1 -1
- package/__tests__/invoice-tender.test.ts +1 -1
- package/__tests__/segment-splitter-checkout-order.test.ts +306 -0
- package/__tests__/streaming-on-end-env-filter.test.ts +18 -18
- package/__tests__/streaming-on-end-order.test.ts +387 -0
- package/dist/cjs/account-delete-route-generator.d.ts +1 -0
- package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
- package/dist/cjs/account-delete-route-generator.js +2 -1
- package/dist/cjs/account-delete-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts +1 -0
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +2 -1
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +9 -26
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/graph-utils.d.ts +31 -1
- package/dist/cjs/graph-utils.d.ts.map +1 -1
- package/dist/cjs/graph-utils.js +112 -10
- package/dist/cjs/graph-utils.js.map +1 -1
- package/dist/cjs/invoice/api-routes-code.d.ts +12 -3
- package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/cjs/invoice/api-routes-code.js +152 -21
- package/dist/cjs/invoice/api-routes-code.js.map +1 -1
- package/dist/cjs/invoice/data-access-code.d.ts.map +1 -1
- package/dist/cjs/invoice/data-access-code.js +133 -21
- package/dist/cjs/invoice/data-access-code.js.map +1 -1
- package/dist/cjs/invoice/email-sender-code.d.ts.map +1 -1
- package/dist/cjs/invoice/email-sender-code.js +15 -25
- package/dist/cjs/invoice/email-sender-code.js.map +1 -1
- package/dist/cjs/invoice/index.js +1 -1
- package/dist/cjs/invoice/index.js.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.js +10 -6
- package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.js +3 -0
- package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-mailgun.js +4 -2
- package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-postmark.js +5 -2
- package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
- package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-resend.js +5 -2
- package/dist/cjs/nodes/email/email-resend.js.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/cjs/nodes/email/email-sendgrid.js +8 -2
- package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/cjs/nodes/storage/storage-local-remove.d.ts.map +1 -1
- package/dist/cjs/nodes/storage/storage-local-remove.js +2 -0
- package/dist/cjs/nodes/storage/storage-local-remove.js.map +1 -1
- package/dist/cjs/nodes/storage/storage-local-set.d.ts.map +1 -1
- package/dist/cjs/nodes/storage/storage-local-set.js +4 -0
- package/dist/cjs/nodes/storage/storage-local-set.js.map +1 -1
- package/dist/cjs/segment-splitter.d.ts.map +1 -1
- package/dist/cjs/segment-splitter.js +65 -27
- package/dist/cjs/segment-splitter.js.map +1 -1
- package/dist/cjs/transactional-email-code.d.ts.map +1 -1
- package/dist/cjs/transactional-email-code.js +32 -18
- package/dist/cjs/transactional-email-code.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +2 -0
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/esm/account-delete-route-generator.d.ts +1 -0
- package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
- package/dist/esm/account-delete-route-generator.js +2 -1
- package/dist/esm/account-delete-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts +1 -0
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +2 -1
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +9 -26
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/graph-utils.d.ts +31 -1
- package/dist/esm/graph-utils.d.ts.map +1 -1
- package/dist/esm/graph-utils.js +109 -9
- package/dist/esm/graph-utils.js.map +1 -1
- package/dist/esm/invoice/api-routes-code.d.ts +12 -3
- package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/esm/invoice/api-routes-code.js +152 -21
- package/dist/esm/invoice/api-routes-code.js.map +1 -1
- package/dist/esm/invoice/data-access-code.d.ts.map +1 -1
- package/dist/esm/invoice/data-access-code.js +133 -21
- package/dist/esm/invoice/data-access-code.js.map +1 -1
- package/dist/esm/invoice/email-sender-code.d.ts.map +1 -1
- package/dist/esm/invoice/email-sender-code.js +15 -25
- package/dist/esm/invoice/email-sender-code.js.map +1 -1
- package/dist/esm/invoice/index.js +1 -1
- package/dist/esm/invoice/index.js.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.js +10 -6
- package/dist/esm/invoice/invoice-assembly-code.js.map +1 -1
- package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-html-code.js +3 -0
- package/dist/esm/invoice/invoice-html-code.js.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-mailgun.js +4 -2
- package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
- package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-postmark.js +5 -2
- package/dist/esm/nodes/email/email-postmark.js.map +1 -1
- package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-resend.js +5 -2
- package/dist/esm/nodes/email/email-resend.js.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
- package/dist/esm/nodes/email/email-sendgrid.js +8 -2
- package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
- package/dist/esm/nodes/storage/storage-local-remove.d.ts.map +1 -1
- package/dist/esm/nodes/storage/storage-local-remove.js +2 -0
- package/dist/esm/nodes/storage/storage-local-remove.js.map +1 -1
- package/dist/esm/nodes/storage/storage-local-set.d.ts.map +1 -1
- package/dist/esm/nodes/storage/storage-local-set.js +4 -0
- package/dist/esm/nodes/storage/storage-local-set.js.map +1 -1
- package/dist/esm/segment-splitter.d.ts.map +1 -1
- package/dist/esm/segment-splitter.js +66 -28
- package/dist/esm/segment-splitter.js.map +1 -1
- package/dist/esm/transactional-email-code.d.ts.map +1 -1
- package/dist/esm/transactional-email-code.js +32 -18
- package/dist/esm/transactional-email-code.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +2 -0
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/package.json +3 -3
- package/src/account-delete-route-generator.ts +3 -1
- package/src/auth-generator.ts +3 -1
- package/src/executor-generator.ts +9 -26
- package/src/graph-utils.ts +143 -11
- package/src/invoice/api-routes-code.ts +166 -21
- package/src/invoice/data-access-code.ts +139 -21
- package/src/invoice/email-sender-code.ts +15 -25
- package/src/invoice/index.ts +1 -1
- package/src/invoice/invoice-assembly-code.ts +10 -6
- package/src/invoice/invoice-html-code.ts +3 -0
- package/src/nodes/email/email-mailgun.ts +11 -2
- package/src/nodes/email/email-postmark.ts +12 -2
- package/src/nodes/email/email-resend.ts +12 -2
- package/src/nodes/email/email-sendgrid.ts +15 -2
- package/src/nodes/storage/storage-local-remove.ts +4 -0
- package/src/nodes/storage/storage-local-set.ts +6 -0
- package/src/segment-splitter.ts +90 -36
- package/src/transactional-email-code.ts +32 -21
- package/src/workflow-project-plugin.ts +2 -0
|
@@ -21,7 +21,7 @@ ${generateGetInvoiceByIdCode(dsType, invoicesTable)}
|
|
|
21
21
|
|
|
22
22
|
${generateUpdateInvoiceCode(dsType, invoicesTable)}
|
|
23
23
|
|
|
24
|
-
${generateStoreInvoicePdfCode(dsType)}
|
|
24
|
+
${generateStoreInvoicePdfCode(dsType, invoicesTable)}
|
|
25
25
|
|
|
26
26
|
${generateGetOrderWithItemsCode(dsType)}
|
|
27
27
|
|
|
@@ -29,6 +29,8 @@ ${generateReplaceInvoiceCode(dsType, invoicesTable, invoiceItemsTable)}
|
|
|
29
29
|
|
|
30
30
|
${generateLinkOrderToInvoiceCode(dsType)}
|
|
31
31
|
|
|
32
|
+
${generateRecordOrderEventCode(dsType)}
|
|
33
|
+
|
|
32
34
|
module.exports = {
|
|
33
35
|
getClient: getClient,
|
|
34
36
|
reserveInvoice: reserveInvoice,
|
|
@@ -39,6 +41,7 @@ module.exports = {
|
|
|
39
41
|
getOrderWithItems: getOrderWithItems,
|
|
40
42
|
replaceInvoice: replaceInvoice,
|
|
41
43
|
linkOrderToInvoice: linkOrderToInvoice,
|
|
44
|
+
recordOrderEvent: recordOrderEvent,
|
|
42
45
|
};
|
|
43
46
|
`;
|
|
44
47
|
};
|
|
@@ -334,18 +337,45 @@ ${cutoff}
|
|
|
334
337
|
return result.rowCount > 0;
|
|
335
338
|
}`;
|
|
336
339
|
}
|
|
337
|
-
// Puts the rendered PDF on the reserved row
|
|
338
|
-
// the invoice
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
340
|
+
// Puts the rendered PDF on the reserved row — only while the row has none —
|
|
341
|
+
// and resolves to `{ firstPdf }`: whether this write gave the invoice its
|
|
342
|
+
// first PDF. `pdf_size_bytes` marks the invoice finished (see
|
|
343
|
+
// `claimStaleInvoice`), and the invoice's first PDF is what its email is
|
|
344
|
+
// claimed by: `replaceInvoice` writes first under the same condition, so of a
|
|
345
|
+
// retried payment finishing a stale invoice and a regeneration racing it, one
|
|
346
|
+
// writes the PDF and emails the buyer, and the other is told it was not first.
|
|
347
|
+
function generateStoreInvoicePdfCode(dsType, table) {
|
|
348
|
+
if (dsType === 'supabase') {
|
|
349
|
+
return `
|
|
342
350
|
async function storeInvoicePdf(invoiceId, pdfBuffer, pdfUrl) {
|
|
343
|
-
|
|
344
|
-
pdf_data:
|
|
351
|
+
var result = await getClient().from('${table}').update({
|
|
352
|
+
pdf_data: pdfBuffer.toString('base64'),
|
|
345
353
|
pdf_size_bytes: pdfBuffer.length,
|
|
346
354
|
pdf_content_type: 'application/pdf',
|
|
347
355
|
pdf_url: pdfUrl,
|
|
348
|
-
|
|
356
|
+
updated_at: new Date().toISOString(),
|
|
357
|
+
}).eq('id', invoiceId).is('pdf_size_bytes', null).select('id');
|
|
358
|
+
if (result.error) throw new Error(result.error.message);
|
|
359
|
+
return { firstPdf: !!(result.data && result.data.length > 0) };
|
|
360
|
+
}`;
|
|
361
|
+
}
|
|
362
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
363
|
+
return `
|
|
364
|
+
async function storeInvoicePdf(invoiceId, pdfBuffer, pdfUrl) {
|
|
365
|
+
var [result] = await getClient().execute(
|
|
366
|
+
'UPDATE ${table} SET pdf_data = ?, pdf_size_bytes = ?, pdf_content_type = ?, pdf_url = ?, updated_at = ? WHERE id = ? AND pdf_size_bytes IS NULL',
|
|
367
|
+
[pdfBuffer, pdfBuffer.length, 'application/pdf', pdfUrl, new Date().toISOString(), invoiceId]
|
|
368
|
+
);
|
|
369
|
+
return { firstPdf: !!(result && result.affectedRows > 0) };
|
|
370
|
+
}`;
|
|
371
|
+
}
|
|
372
|
+
return `
|
|
373
|
+
async function storeInvoicePdf(invoiceId, pdfBuffer, pdfUrl) {
|
|
374
|
+
var result = await getClient().query(
|
|
375
|
+
'UPDATE ${table} SET pdf_data = $1, pdf_size_bytes = $2, pdf_content_type = $3, pdf_url = $4, updated_at = $5 WHERE id = $6 AND pdf_size_bytes IS NULL',
|
|
376
|
+
[pdfBuffer, pdfBuffer.length, 'application/pdf', pdfUrl, new Date().toISOString(), invoiceId]
|
|
377
|
+
);
|
|
378
|
+
return { firstPdf: result.rowCount > 0 };
|
|
349
379
|
}`;
|
|
350
380
|
}
|
|
351
381
|
function generateInsertInvoiceItemsCode(dsType, table) {
|
|
@@ -530,6 +560,15 @@ async function getOrderWithItems(orderId) {
|
|
|
530
560
|
// points at it (the order, the sent-email ledger) stays valid. Postgres and
|
|
531
561
|
// MySQL do it in one transaction, and Supabase undoes its steps, so a failure
|
|
532
562
|
// leaves the old invoice whole.
|
|
563
|
+
//
|
|
564
|
+
// Resolves to `{ firstPdf }`: whether this write gave the invoice its first
|
|
565
|
+
// PDF — one whose PDF never came at payment, so its buyer was never emailed
|
|
566
|
+
// it. The database decides: the row is first written only where it has no PDF
|
|
567
|
+
// (the `pdf_size_bytes IS NULL` that `claimStaleInvoice` reads as
|
|
568
|
+
// "unfinished"), and of two regenerations racing for the same invoice the
|
|
569
|
+
// second waits for the first's row lock, then finds the PDF and matches
|
|
570
|
+
// nothing. `storeInvoicePdf` writes the payment's PDF under the same
|
|
571
|
+
// condition, so exactly one write is ever told `firstPdf: true`.
|
|
533
572
|
function generateReplaceInvoiceCode(dsType, table, itemsTable) {
|
|
534
573
|
if (dsType === 'supabase') {
|
|
535
574
|
return `
|
|
@@ -549,18 +588,23 @@ async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
|
549
588
|
var insertedIds = (inserted || []).map(function (row) { return row.id; });
|
|
550
589
|
var written = null;
|
|
551
590
|
try {
|
|
552
|
-
var
|
|
553
|
-
var
|
|
554
|
-
if (
|
|
555
|
-
|
|
591
|
+
var outcome = await writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
592
|
+
var first = await client.from('${table}').update(fields).eq('id', invoiceId).is('pdf_size_bytes', null).select('id');
|
|
593
|
+
if (first.error) throw new Error(first.error.message);
|
|
594
|
+
var firstPdf = !!(first.data && first.data.length > 0);
|
|
595
|
+
if (!firstPdf) {
|
|
596
|
+
var result = await client.from('${table}').update(fields).eq('id', invoiceId).select('id');
|
|
597
|
+
if (result.error) throw new Error(result.error.message);
|
|
598
|
+
if (!result.data || result.data.length === 0) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
599
|
+
}
|
|
556
600
|
written = fields;
|
|
557
|
-
return
|
|
601
|
+
return { firstPdf: firstPdf };
|
|
558
602
|
});
|
|
559
603
|
if (previousIds.length > 0) {
|
|
560
604
|
var removed = await client.from('${itemsTable}').delete().in('id', previousIds);
|
|
561
605
|
if (removed.error) throw new Error(removed.error.message);
|
|
562
606
|
}
|
|
563
|
-
return
|
|
607
|
+
return outcome;
|
|
564
608
|
} catch (err) {
|
|
565
609
|
if (written) {
|
|
566
610
|
var restored = {};
|
|
@@ -588,12 +632,17 @@ async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
|
588
632
|
var setClauses = columns.map(function(k) { return quoteIdent(k) + ' = ?'; }).join(', ');
|
|
589
633
|
var values = columns.map(function(k) { return fields[k]; });
|
|
590
634
|
values.push(invoiceId);
|
|
591
|
-
var
|
|
592
|
-
|
|
635
|
+
var update = 'UPDATE ${table} SET ' + setClauses + ' WHERE id = ?';
|
|
636
|
+
var [first] = await conn.execute(update + ' AND pdf_size_bytes IS NULL', values);
|
|
637
|
+
var firstPdf = !!(first && first.affectedRows > 0);
|
|
638
|
+
if (!firstPdf) {
|
|
639
|
+
var [updated] = await conn.execute(update, values);
|
|
640
|
+
if (!updated || !updated.affectedRows) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
641
|
+
}
|
|
593
642
|
await conn.execute('DELETE FROM ${itemsTable} WHERE invoice_id = ?', [invoiceId]);
|
|
594
643
|
await insertInvoiceItemRows(conn, invoiceId, items);
|
|
595
644
|
await conn.commit();
|
|
596
|
-
return
|
|
645
|
+
return { firstPdf: firstPdf };
|
|
597
646
|
} catch (err) {
|
|
598
647
|
try { await conn.rollback(); } catch (_rollbackErr) {}
|
|
599
648
|
throw err;
|
|
@@ -616,12 +665,16 @@ async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
|
616
665
|
values.push(invoiceId);
|
|
617
666
|
// The UPDATE takes the row lock first, so two regenerations of the same
|
|
618
667
|
// invoice run one after the other instead of interleaving their lines.
|
|
619
|
-
var
|
|
620
|
-
|
|
668
|
+
var update = 'UPDATE ${table} SET ' + setClauses + ' WHERE id = $' + values.length;
|
|
669
|
+
var firstPdf = (await client.query(update + ' AND pdf_size_bytes IS NULL', values)).rowCount > 0;
|
|
670
|
+
if (!firstPdf) {
|
|
671
|
+
var updated = await client.query(update, values);
|
|
672
|
+
if (!updated.rowCount) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
673
|
+
}
|
|
621
674
|
await client.query('DELETE FROM ${itemsTable} WHERE invoice_id = $1', [invoiceId]);
|
|
622
675
|
await insertInvoiceItemRows(client, invoiceId, items);
|
|
623
676
|
await client.query('COMMIT');
|
|
624
|
-
return
|
|
677
|
+
return { firstPdf: firstPdf };
|
|
625
678
|
} catch (err) {
|
|
626
679
|
try { await client.query('ROLLBACK'); } catch (_rollbackErr) {}
|
|
627
680
|
throw err;
|
|
@@ -678,6 +731,65 @@ async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
|
678
731
|
return result.rowCount > 0;
|
|
679
732
|
}`;
|
|
680
733
|
}
|
|
734
|
+
// One line of an order's history: a row of the activity log the editor
|
|
735
|
+
// provisions (`teleport_events`) and both order timelines read. Written like
|
|
736
|
+
// every line the store's workflows write — teleport-gui's
|
|
737
|
+
// `constants/order-event-types.ts` owns the vocabulary — so a replay collides
|
|
738
|
+
// on the UNIQUE `dedupe_key` and adds nothing. `event` is
|
|
739
|
+
// `{ type, dedupeKey, orderId, payload, actor, actorType }`.
|
|
740
|
+
function generateRecordOrderEventCode(dsType) {
|
|
741
|
+
const row = `
|
|
742
|
+
var ORDER_EVENTS_TABLE = 'teleport_events';
|
|
743
|
+
var ORDER_EVENT_DEDUPE_KEY_MAX_LENGTH = 255;
|
|
744
|
+
|
|
745
|
+
function orderEventRow(event) {
|
|
746
|
+
return {
|
|
747
|
+
id: require('crypto').randomUUID(),
|
|
748
|
+
event_type: event.type,
|
|
749
|
+
dedupe_key: String(event.dedupeKey).slice(0, ORDER_EVENT_DEDUPE_KEY_MAX_LENGTH),
|
|
750
|
+
order_id: event.orderId || null,
|
|
751
|
+
payload: JSON.stringify(event.payload || {}),
|
|
752
|
+
actor: event.actor || '',
|
|
753
|
+
actor_type: event.actorType,
|
|
754
|
+
// Logged; a dispatcher claims the rows it delivers itself.
|
|
755
|
+
status: 'recorded',
|
|
756
|
+
};
|
|
757
|
+
}`;
|
|
758
|
+
if (dsType === 'supabase') {
|
|
759
|
+
return `${row}
|
|
760
|
+
|
|
761
|
+
async function recordOrderEvent(event) {
|
|
762
|
+
var result = await getClient()
|
|
763
|
+
.from(ORDER_EVENTS_TABLE)
|
|
764
|
+
.upsert(orderEventRow(event), { onConflict: 'dedupe_key', ignoreDuplicates: true });
|
|
765
|
+
if (result.error) throw new Error(result.error.message);
|
|
766
|
+
}`;
|
|
767
|
+
}
|
|
768
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
769
|
+
return `${row}
|
|
770
|
+
|
|
771
|
+
async function recordOrderEvent(event) {
|
|
772
|
+
var record = orderEventRow(event);
|
|
773
|
+
var columns = Object.keys(record);
|
|
774
|
+
var placeholders = columns.map(function() { return '?'; }).join(', ');
|
|
775
|
+
await getClient().execute(
|
|
776
|
+
'INSERT INTO ' + ORDER_EVENTS_TABLE + ' (' + columns.join(', ') + ') VALUES (' + placeholders + ') ON DUPLICATE KEY UPDATE dedupe_key = dedupe_key',
|
|
777
|
+
columns.map(function(k) { return record[k]; })
|
|
778
|
+
);
|
|
779
|
+
}`;
|
|
780
|
+
}
|
|
781
|
+
return `${row}
|
|
782
|
+
|
|
783
|
+
async function recordOrderEvent(event) {
|
|
784
|
+
var record = orderEventRow(event);
|
|
785
|
+
var columns = Object.keys(record);
|
|
786
|
+
var placeholders = columns.map(function(_, i) { return '$' + (i + 1); }).join(', ');
|
|
787
|
+
await getClient().query(
|
|
788
|
+
'INSERT INTO ' + ORDER_EVENTS_TABLE + ' (' + columns.join(', ') + ') VALUES (' + placeholders + ') ON CONFLICT (dedupe_key) DO NOTHING',
|
|
789
|
+
columns.map(function(k) { return record[k]; })
|
|
790
|
+
);
|
|
791
|
+
}`;
|
|
792
|
+
}
|
|
681
793
|
export const getRecordMappingCode = (dsType) => `
|
|
682
794
|
function mapInvoiceToRecord(data) {
|
|
683
795
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access-code.js","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAA6B,EAC7B,cAAqC,EACrC,gBAAgD,EACxC,EAAE;;IACV,MAAM,aAAa,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,aAAa,KAAI,mBAAmB,CAAA;IAC3E,MAAM,iBAAiB,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,iBAAiB,KAAI,wBAAwB,CAAA;IACxF,MAAM,MAAM,GAAG,cAAc,IAAI,YAAY,CAAA;IAE7C,OAAO;;uBAEc,MAAM;aAChB,aAAa,KAAK,iBAAiB;;;EAG9C,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC;;EAEhD,8BAA8B,CAAC,MAAM,EAAE,iBAAiB,CAAC;;EAEzD,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEjD,6BAA6B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEpD,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEjD,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEhD,2BAA2B,CAAC,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"data-access-code.js","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/email-sender-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"email-sender-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/email-sender-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAGrE,eAAO,MAAM,uBAAuB,kBAAmB,wBAAwB,KAAG,MA2GjF,CAAA;AAoMD,eAAO,MAAM,4BAA4B,aAAc,MAAM,GAAG,IAAI,KAAG,OAAO,MAAM,EAAE,MAAM,CAkB3F,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EmailSender } from '@teleporthq/teleport-shared';
|
|
1
2
|
export const generateEmailSenderCode = (emailDelivery) => {
|
|
2
3
|
if (!emailDelivery || !emailDelivery.enabled || !emailDelivery.provider) {
|
|
3
4
|
return `module.exports = { sendInvoiceEmail: async function() { return { success: false, error: 'Email delivery not configured' }; } };`;
|
|
@@ -29,6 +30,8 @@ var BODY_TEMPLATE = ${JSON.stringify(bodyTemplate)};
|
|
|
29
30
|
// Per-language copies of the subject/body (main language excluded), chosen by
|
|
30
31
|
// the locale the generate route resolved for the invoice (the order's).
|
|
31
32
|
var LOCALIZED_TEMPLATES = ${JSON.stringify(localizedTemplates)};
|
|
33
|
+
${EmailSender.generateEmailSenderHelperCode()}
|
|
34
|
+
var SENDER = __emailSender(${JSON.stringify({ from: fromEmail, name: fromName })});
|
|
32
35
|
|
|
33
36
|
function resolveSecretKey(keyName) {
|
|
34
37
|
var envName = SECRET_KEYS[keyName];
|
|
@@ -48,7 +51,8 @@ function buildEmailData(invoiceData) {
|
|
|
48
51
|
subject: replacePlaceholders(copy.subject, data),
|
|
49
52
|
body: replacePlaceholders(copy.body, data),
|
|
50
53
|
to: invoiceData.customerEmail || '',
|
|
51
|
-
from:
|
|
54
|
+
from: SENDER.header,
|
|
55
|
+
sender: SENDER,
|
|
52
56
|
templateData: data,
|
|
53
57
|
};
|
|
54
58
|
}
|
|
@@ -59,7 +63,9 @@ function attachmentName(invoiceData) {
|
|
|
59
63
|
|
|
60
64
|
${generateProviderSendFunction(emailDelivery.provider)}
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
// sourceRef names the route that sent it in the ledger: the payment's
|
|
67
|
+
// generate route unless the caller says otherwise.
|
|
68
|
+
async function sendInvoiceEmail(invoiceData, pdfBuffer, sourceRef) {
|
|
63
69
|
var emailData = buildEmailData(invoiceData);
|
|
64
70
|
if (!emailData.to) return { success: false, error: 'No customer email provided' };
|
|
65
71
|
var result;
|
|
@@ -73,6 +79,7 @@ async function sendInvoiceEmail(invoiceData, pdfBuffer) {
|
|
|
73
79
|
audience: 'customer',
|
|
74
80
|
to: emailData.to,
|
|
75
81
|
from: emailData.from,
|
|
82
|
+
fromName: emailData.sender.name,
|
|
76
83
|
subject: emailData.subject,
|
|
77
84
|
html: emailData.body,
|
|
78
85
|
payload: emailData.templateData,
|
|
@@ -87,7 +94,7 @@ async function sendInvoiceEmail(invoiceData, pdfBuffer) {
|
|
|
87
94
|
status: result && result.success ? 'sent' : 'failed',
|
|
88
95
|
error: result && !result.success ? result.error : null,
|
|
89
96
|
source: 'invoice',
|
|
90
|
-
sourceRef: 'api/invoices/generate',
|
|
97
|
+
sourceRef: sourceRef || 'api/invoices/generate',
|
|
91
98
|
orderId: invoiceData.orderId,
|
|
92
99
|
referenceType: 'invoice',
|
|
93
100
|
referenceId: invoiceData.id,
|
|
@@ -133,9 +140,12 @@ async function sendInvoiceEmailWithProvider(emailData, invoiceData, pdfBuffer) {
|
|
|
133
140
|
var apiKey = resolveSecretKey('apiKey');
|
|
134
141
|
if (!apiKey) return { success: false, error: 'SendGrid API key not configured' };
|
|
135
142
|
sgMail.setApiKey(apiKey);
|
|
143
|
+
// SendGrid reads a "Name <email>" string's name verbatim, quotes included,
|
|
144
|
+
// so a named sender goes as its two parts.
|
|
145
|
+
var sender = emailData.sender;
|
|
136
146
|
var msg = {
|
|
137
147
|
to: emailData.to,
|
|
138
|
-
from:
|
|
148
|
+
from: sender.name ? { email: sender.email, name: sender.name } : sender.email,
|
|
139
149
|
subject: emailData.subject,
|
|
140
150
|
html: emailData.body,
|
|
141
151
|
attachments: [{
|
|
@@ -208,26 +218,6 @@ async function sendInvoiceEmailWithProvider(emailData, invoiceData, pdfBuffer) {
|
|
|
208
218
|
}`;
|
|
209
219
|
case 'mailersend':
|
|
210
220
|
return `
|
|
211
|
-
// Pulls "name" and "email" out of the RFC-5322-ish \`from\` string the
|
|
212
|
-
// builder assembles. Three shapes in the wild:
|
|
213
|
-
// 1. "Acme Billing <billing@acme.com>" → name="Acme Billing", email="billing@acme.com"
|
|
214
|
-
// 2. "billing@acme.com" → name="", email="billing@acme.com"
|
|
215
|
-
// 3. "" → {}, caller handles the fallback
|
|
216
|
-
// The old implementation used naive \`.replace()\` chains that produced
|
|
217
|
-
// \`name="billing@acme.com"\` in case (2) — MailerSend accepts that but the
|
|
218
|
-
// email then appears in the recipient's client with itself as the sender
|
|
219
|
-
// name, which is ugly. Kept as a pure helper (no fallbacks baked in) so
|
|
220
|
-
// the caller decides what to do when a field is missing.
|
|
221
|
-
function parseFromString(from) {
|
|
222
|
-
var str = String(from || '').trim();
|
|
223
|
-
if (!str) return { name: '', email: '' };
|
|
224
|
-
var m = /^(.*)<([^<>]+)>\\s*$/.exec(str);
|
|
225
|
-
if (m) {
|
|
226
|
-
return { name: m[1].trim(), email: m[2].trim() };
|
|
227
|
-
}
|
|
228
|
-
return { name: '', email: str };
|
|
229
|
-
}
|
|
230
|
-
|
|
231
221
|
async function sendInvoiceEmailWithProvider(emailData, invoiceData, pdfBuffer) {
|
|
232
222
|
var invoiceNumber = invoiceData && invoiceData.invoiceNumber ? invoiceData.invoiceNumber : '(no number)';
|
|
233
223
|
try {
|
|
@@ -247,7 +237,7 @@ async function sendInvoiceEmailWithProvider(emailData, invoiceData, pdfBuffer) {
|
|
|
247
237
|
|
|
248
238
|
var mailerSend = new MailerSend({ apiKey: apiKey });
|
|
249
239
|
|
|
250
|
-
var parsedFrom =
|
|
240
|
+
var parsedFrom = emailData.sender;
|
|
251
241
|
if (!parsedFrom.email) {
|
|
252
242
|
console.error('[invoice-email][mailersend] skip — from address is empty (set invoiceSettings.emailDelivery.fromEmail)');
|
|
253
243
|
return { success: false, error: 'Sender email not configured' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender-code.js","sourceRoot":"","sources":["../../../src/invoice/email-sender-code.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-sender-code.js","sourceRoot":"","sources":["../../../src/invoice/email-sender-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,aAAuC,EAAU,EAAE;IACzF,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;QACvE,OAAO,iIAAiI,CAAA;KACzI;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;IACrE,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,IAAI,EAAE,CAAA;IAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC7C,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,IAAI,2BAA2B,CAAA;IAC5E,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,IAAI,2CAA2C,CAAA;IACtF,MAAM,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,IAAI,EAAE,CAAA;IAEjE,OAAO;;eAEM,aAAa,CAAC,QAAQ;;;;;;;;;;;;;oBAajB,cAAc;yBACT,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;sBAClC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;4BAGtB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;EAC5D,WAAW,CAAC,6BAA6B,EAAE;6BAChB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9E,4BAA4B,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA4BtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;CAcrD,CAAA;AACD,CAAC,CAAA;AAED,SAAS,4BAA4B,CAAC,QAAgB;IACpD,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ;YACX,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAuBX,CAAA;QAEE,KAAK,UAAU;YACb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BX,CAAA;QAEE,KAAK,SAAS;YACZ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BX,CAAA;QAEE,KAAK,UAAU;YACb,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAuBX,CAAA;QAEE,KAAK,YAAY;YACf,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEX,CAAA;QAEE;YACE,OAAO;;iEAEoD,QAAQ;EACvE,CAAA;KACC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,QAAuB,EAA0B,EAAE;IAC9F,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,EAAE,CAAA;KACV;IACD,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QAC7B,KAAK,UAAU;YACb,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAA;QACvC,KAAK,SAAS;YACZ,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;QAC3D,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QAC/B,KAAK,YAAY;YACf,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;QACjC;YACE,OAAO,EAAE,CAAA;KACZ;AACH,CAAC,CAAA"}
|
|
@@ -127,7 +127,7 @@ export const generateInvoiceFiles = (invoiceSettings, structure, dataSourceType,
|
|
|
127
127
|
{
|
|
128
128
|
name: 'regenerate',
|
|
129
129
|
fileType: FileType.JS,
|
|
130
|
-
content: generateInvoiceRegenerateRouteCode(),
|
|
130
|
+
content: generateInvoiceRegenerateRouteCode(invoiceSettings),
|
|
131
131
|
},
|
|
132
132
|
],
|
|
133
133
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/invoice/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/invoice/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-assembly-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAIhE;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,aAAc,mBAAmB,KAAG,
|
|
1
|
+
{"version":3,"file":"invoice-assembly-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAIhE;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,aAAc,mBAAmB,KAAG,MAgiB3E,CAAA"}
|
|
@@ -33,8 +33,9 @@ ${ProductOptions.generateProductOptionsHelperCode()}
|
|
|
33
33
|
|
|
34
34
|
// The invoice details an order's metadata (JSON text) carries beside its
|
|
35
35
|
// billing columns — the keys \`ORDER_BILLING_METADATA_KEYS\` (teleport-gui)
|
|
36
|
-
// writes: the address in its parts and the buyer's tax or VAT
|
|
37
|
-
// part is '' when the order has none or its metadata is no JSON
|
|
36
|
+
// writes: the address in its parts, the company and the buyer's tax or VAT
|
|
37
|
+
// number. Every part is '' when the order has none or its metadata is no JSON
|
|
38
|
+
// object.
|
|
38
39
|
function readOrderBillingMetadata(raw) {
|
|
39
40
|
var parsed = raw;
|
|
40
41
|
if (typeof raw === 'string') {
|
|
@@ -51,6 +52,7 @@ function readOrderBillingMetadata(raw) {
|
|
|
51
52
|
}
|
|
52
53
|
return {
|
|
53
54
|
taxId: part('billingTaxId'),
|
|
55
|
+
company: part('billingCompany'),
|
|
54
56
|
street: part('billingStreet'),
|
|
55
57
|
city: part('billingCity'),
|
|
56
58
|
postalCode: part('billingPostalCode'),
|
|
@@ -444,10 +446,11 @@ function assembleInvoiceData(body, hydratedOrder, hydratedItems) {
|
|
|
444
446
|
// who checked "bill to a different address" has both on the order.
|
|
445
447
|
//
|
|
446
448
|
// An order whose buyer gave invoice details of their own (a booking's
|
|
447
|
-
// "Add invoice details"
|
|
448
|
-
// in its
|
|
449
|
-
//
|
|
450
|
-
// buyer's
|
|
449
|
+
// "Add invoice details", a store checkout's "Billing Details") carries them
|
|
450
|
+
// in its metadata as well: the address in its parts, the company and the tax
|
|
451
|
+
// or VAT number. Those parts are the invoice's address — never mixed with a
|
|
452
|
+
// shipping address — the company is printed under the buyer's name, and the
|
|
453
|
+
// number is the buyer's VAT.
|
|
451
454
|
var orderRow = orderShippingSource;
|
|
452
455
|
var orderBilling = readOrderBillingMetadata(orderRow.metadata);
|
|
453
456
|
var billedApart = !!(orderBilling.street || orderBilling.city || orderBilling.country);
|
|
@@ -485,6 +488,7 @@ function assembleInvoiceData(body, hydratedOrder, hydratedItems) {
|
|
|
485
488
|
customerZip: body.customerZip || fallbackCustomerZip || '',
|
|
486
489
|
customerCountry: body.customerCountry || fallbackCustomerCountry || '',
|
|
487
490
|
customerVat: body.customerVat || orderBilling.taxId || '',
|
|
491
|
+
customerCompany: body.customerCompany || orderBilling.company || '',
|
|
488
492
|
companyName: pdfGenerator.COMPANY_DETAILS.companyName || '',
|
|
489
493
|
companyAddress: pdfGenerator.COMPANY_DETAILS.companyAddress || '',
|
|
490
494
|
companyCity: pdfGenerator.COMPANY_DETAILS.companyCity || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-assembly-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAA6B,EAAU,EAAE;;IACnF,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,CAAC,CAAA;IACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAA;IAC/D,MAAM,oBAAoB,GAAG,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,QAAQ;QACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAA;IAEV,OAAO;;;;;;;;yBAQgB,cAAc;;8BAET,kBAAkB;0BACtB,oBAAoB;EAC5C,yBAAyB;EACzB,cAAc,CAAC,gCAAgC,EAAE
|
|
1
|
+
{"version":3,"file":"invoice-assembly-code.js","sourceRoot":"","sources":["../../../src/invoice/invoice-assembly-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAA6B,EAAU,EAAE;;IACnF,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,CAAC,CAAA;IACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAA;IAC/D,MAAM,oBAAoB,GAAG,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,QAAQ;QACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAA;IAEV,OAAO;;;;;;;;yBAQgB,cAAc;;8BAET,kBAAkB;0BACtB,oBAAoB;EAC5C,yBAAyB;EACzB,cAAc,CAAC,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2gBlD,CAAA;AACD,CAAC,CAAA"}
|
|
@@ -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,
|
|
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,MA8gCF,CAAA"}
|
|
@@ -341,6 +341,7 @@ function buildInvoiceDataScope(invoiceData) {
|
|
|
341
341
|
|
|
342
342
|
var realCustomer = {
|
|
343
343
|
name: invoiceData.customerName || '',
|
|
344
|
+
company: invoiceData.customerCompany || '',
|
|
344
345
|
email: invoiceData.customerEmail || '',
|
|
345
346
|
address: invoiceData.customerAddress || '',
|
|
346
347
|
city: invoiceData.customerCity || '',
|
|
@@ -351,6 +352,7 @@ function buildInvoiceDataScope(invoiceData) {
|
|
|
351
352
|
};
|
|
352
353
|
// The "Bill to" lines a buyer may leave out show only when they did not
|
|
353
354
|
// (string flags: the template compares strings, as with \`hasShipping\`).
|
|
355
|
+
realCustomer.hasCompany = realCustomer.company ? 'true' : 'false';
|
|
354
356
|
realCustomer.hasZip = realCustomer.zip ? 'true' : 'false';
|
|
355
357
|
realCustomer.hasCountry = realCustomer.country ? 'true' : 'false';
|
|
356
358
|
realCustomer.hasVat = realCustomer.vat ? 'true' : 'false';
|
|
@@ -960,6 +962,7 @@ function buildFallbackInvoiceHtml(scope) {
|
|
|
960
962
|
escapeHtml(comp.city || '') + '<br/>' +
|
|
961
963
|
escapeHtml(comp.email || '') + '</div>');
|
|
962
964
|
parts.push('<div style="flex:1;"><strong>' + escapeHtml(cust.name || '') + '</strong><br/>' +
|
|
965
|
+
(cust.company ? escapeHtml(cust.company) + '<br/>' : '') +
|
|
963
966
|
escapeHtml(cust.email || '') + '<br/>' +
|
|
964
967
|
escapeHtml(cust.address || '') + '<br/>' +
|
|
965
968
|
escapeHtml(cust.city || '') + '</div>');
|
|
@@ -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":"email-mailgun.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-mailgun.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA4DhE,eAAO,MAAM,YAAY,EAAE,oBAa1B,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { EmailSender } from '@teleporthq/teleport-shared';
|
|
1
2
|
import { handlerToString } from '../types';
|
|
3
|
+
import { assertHandlerHasNoModuleRefs } from '../analytics/commerce-tracking';
|
|
2
4
|
async function email_mailgun(config, context) {
|
|
3
5
|
const apiKey = config.apiKey;
|
|
4
6
|
const domain = config.domain;
|
|
@@ -20,7 +22,7 @@ async function email_mailgun(config, context) {
|
|
|
20
22
|
clientOpts.url = 'https://api.eu.mailgun.net';
|
|
21
23
|
}
|
|
22
24
|
const mg = mailgun.client(clientOpts);
|
|
23
|
-
const fromField =
|
|
25
|
+
const fromField = __emailSender({ from, name: fromName }).header;
|
|
24
26
|
const toField = Array.isArray(to) ? to : [to];
|
|
25
27
|
const msgPayload = {
|
|
26
28
|
from: fromField,
|
|
@@ -53,7 +55,7 @@ export const emailMailgun = {
|
|
|
53
55
|
'form-data': '^4.0.0',
|
|
54
56
|
},
|
|
55
57
|
generateHandler() {
|
|
56
|
-
return handlerToString(email_mailgun);
|
|
58
|
+
return assertHandlerHasNoModuleRefs(handlerToString(email_mailgun) + '\n' + EmailSender.generateEmailSenderHelperCode(), 'email-mailgun');
|
|
57
59
|
},
|
|
58
60
|
};
|
|
59
61
|
//# sourceMappingURL=email-mailgun.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-mailgun.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"email-mailgun.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-mailgun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-postmark.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-postmark.d.ts","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA2DhE,eAAO,MAAM,aAAa,EAAE,oBAY3B,CAAA"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { EmailSender } from '@teleporthq/teleport-shared';
|
|
1
2
|
import { handlerToString } from '../types';
|
|
3
|
+
import { assertHandlerHasNoModuleRefs } from '../analytics/commerce-tracking';
|
|
2
4
|
async function email_postmark(config, context) {
|
|
3
5
|
const serverToken = config.serverToken;
|
|
4
6
|
const from = config.from;
|
|
7
|
+
const fromName = config.fromName;
|
|
5
8
|
const to = config.to;
|
|
6
9
|
const subject = config.subject;
|
|
7
10
|
const body = config.body;
|
|
@@ -16,7 +19,7 @@ async function email_postmark(config, context) {
|
|
|
16
19
|
const client = new postmark.ServerClient(serverToken);
|
|
17
20
|
const toField = Array.isArray(to) ? to.join(', ') : to;
|
|
18
21
|
const emailPayload = {
|
|
19
|
-
From: from,
|
|
22
|
+
From: __emailSender({ from, name: fromName }).header,
|
|
20
23
|
To: toField,
|
|
21
24
|
Subject: subject,
|
|
22
25
|
HtmlBody: body,
|
|
@@ -51,7 +54,7 @@ export const emailPostmark = {
|
|
|
51
54
|
postmark: '^4.0.0',
|
|
52
55
|
},
|
|
53
56
|
generateHandler() {
|
|
54
|
-
return handlerToString(email_postmark);
|
|
57
|
+
return assertHandlerHasNoModuleRefs(handlerToString(email_postmark) + '\n' + EmailSender.generateEmailSenderHelperCode(), 'email-postmark');
|
|
55
58
|
},
|
|
56
59
|
};
|
|
57
60
|
//# sourceMappingURL=email-postmark.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-postmark.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"email-postmark.js","sourceRoot":"","sources":["../../../../src/nodes/email/email-postmark.ts"],"names":[],"mappings":"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"}
|