@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE9F,eAAO,MAAM,WAAW,UACf,gBAAgB,EAAE,UACjB,MAAM,KACb,gBAAgB,GAAG,SAErB,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAErF,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAEjF,CAAA;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAExF,CAAA;AAED,eAAO,MAAM,UAAU,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAEtF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,UAAW,OAAO,OAAO,IAAI,MAAM,CAAC,KAAG,IAahF,CAAA;AAED,eAAO,MAAM,mBAAmB,UACvB,gBAAgB,EAAE,SAClB,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/graph-utils.js
CHANGED
|
@@ -33,19 +33,27 @@ export const collectWorkflowContextNodeIds = (value, out) => {
|
|
|
33
33
|
}
|
|
34
34
|
Object.values(record).forEach((child) => collectWorkflowContextNodeIds(child, out));
|
|
35
35
|
};
|
|
36
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The edge that sends a loop body back to its loop for the next item. The loop
|
|
38
|
+
* does not wait for it: counted as a dependency it left the loop, and every
|
|
39
|
+
* node after it, waiting forever.
|
|
40
|
+
*/
|
|
41
|
+
const isLoopBackEdge = (edge) => edge.targetHandle === 'loop-back';
|
|
42
|
+
/**
|
|
43
|
+
* Every dependency each node waits for: the source of each edge into it (but a
|
|
44
|
+
* loop's back edge) and every node whose output it reads through a
|
|
45
|
+
* `workflowContext` reference. Listed per SOURCE, in edge order then reference
|
|
46
|
+
* order — the order the topological sort below releases them in.
|
|
47
|
+
*/
|
|
48
|
+
export const getDependents = (nodes, edges) => {
|
|
37
49
|
const nodeIds = new Set(nodes.map((n) => n.id));
|
|
38
|
-
const inDegree = {};
|
|
39
50
|
const adjacency = {};
|
|
40
|
-
|
|
41
|
-
nodeIdArr.forEach((id) => {
|
|
42
|
-
inDegree[id] = 0;
|
|
51
|
+
nodeIds.forEach((id) => {
|
|
43
52
|
adjacency[id] = [];
|
|
44
53
|
});
|
|
45
54
|
edges.forEach((edge) => {
|
|
46
|
-
if (nodeIds.has(edge.source) && nodeIds.has(edge.target)) {
|
|
55
|
+
if (nodeIds.has(edge.source) && nodeIds.has(edge.target) && !isLoopBackEdge(edge)) {
|
|
47
56
|
adjacency[edge.source].push(edge.target);
|
|
48
|
-
inDegree[edge.target]++;
|
|
49
57
|
}
|
|
50
58
|
});
|
|
51
59
|
// Virtual dependency edges from IMPLICIT data dependencies: a node that
|
|
@@ -75,15 +83,106 @@ export const getTopologicalOrder = (nodes, edges) => {
|
|
|
75
83
|
return;
|
|
76
84
|
}
|
|
77
85
|
adjacency[refId].push(node.id);
|
|
78
|
-
inDegree[node.id]++;
|
|
79
86
|
});
|
|
80
87
|
});
|
|
88
|
+
return adjacency;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Every node reachable from `startId` without passing through `parentId` or a
|
|
92
|
+
* loop's back edge: what the runtime skips when `parentId` does not take the
|
|
93
|
+
* branch starting at `startId`.
|
|
94
|
+
*/
|
|
95
|
+
const collectBranchNodeIds = (startId, targetsBySource, parentId) => {
|
|
96
|
+
const reached = new Set();
|
|
97
|
+
const queue = [startId];
|
|
98
|
+
while (queue.length > 0) {
|
|
99
|
+
const current = queue.shift();
|
|
100
|
+
if (reached.has(current) || current === parentId) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
reached.add(current);
|
|
104
|
+
queue.push(...(targetsBySource.get(current) || []));
|
|
105
|
+
}
|
|
106
|
+
return reached;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Whether two nodes can never both run: they lie on different branches of the
|
|
110
|
+
* same if-statement or switch, and the runtime skips everything reachable from
|
|
111
|
+
* the branch it did not take.
|
|
112
|
+
*/
|
|
113
|
+
export const getNeverRunTogether = (nodes, edges) => {
|
|
114
|
+
const targetsBySource = new Map();
|
|
115
|
+
edges.forEach((edge) => {
|
|
116
|
+
if (!isLoopBackEdge(edge)) {
|
|
117
|
+
targetsBySource.set(edge.source, [...(targetsBySource.get(edge.source) || []), edge.target]);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const branchesByNodeId = new Map();
|
|
121
|
+
nodes.forEach((gate) => {
|
|
122
|
+
const branchTargets = gate.type === 'general-if-statement'
|
|
123
|
+
? Object.entries(getIfBranches(gate.id, edges))
|
|
124
|
+
: gate.type === 'general-switch'
|
|
125
|
+
? getSwitchCases(gate.id, edges).map(({ caseId, targetId }) => [caseId, targetId])
|
|
126
|
+
: [];
|
|
127
|
+
branchTargets.forEach(([branch, targetId]) => {
|
|
128
|
+
if (!targetId) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
collectBranchNodeIds(targetId, targetsBySource, gate.id).forEach((id) => {
|
|
132
|
+
const branches = branchesByNodeId.get(id) || [];
|
|
133
|
+
branches.push({ gateId: gate.id, branch });
|
|
134
|
+
branchesByNodeId.set(id, branches);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
return (a, b) => {
|
|
139
|
+
const branchesOfB = branchesByNodeId.get(b) || [];
|
|
140
|
+
return (branchesByNodeId.get(a) || []).some((x) => branchesOfB.some((y) => x.gateId === y.gateId && x.branch !== y.branch));
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Kahn's order, the lowest `stepNumber` first among the nodes ready to run.
|
|
145
|
+
*
|
|
146
|
+
* With `sideOf` (the segment splitter), a ready node that stays on the side
|
|
147
|
+
* the previous node ran on may go ahead of lower-step nodes on the other side —
|
|
148
|
+
* one client/server switch fewer, so one server round trip fewer — but only of
|
|
149
|
+
* nodes it never runs together with. A refusal branch's toast waits for the
|
|
150
|
+
* main chain's server steps; two steps that both run keep their order, which
|
|
151
|
+
* custom JavaScript reads `params` by.
|
|
152
|
+
*/
|
|
153
|
+
export const getTopologicalOrder = (nodes, edges, sideOf) => {
|
|
154
|
+
const nodeIds = new Set(nodes.map((n) => n.id));
|
|
155
|
+
const adjacency = getDependents(nodes, edges);
|
|
156
|
+
const inDegree = {};
|
|
157
|
+
const nodeIdArr = Array.from(nodeIds);
|
|
158
|
+
nodeIdArr.forEach((id) => {
|
|
159
|
+
inDegree[id] = 0;
|
|
160
|
+
});
|
|
161
|
+
nodeIdArr.forEach((id) => adjacency[id].forEach((dependent) => {
|
|
162
|
+
inDegree[dependent]++;
|
|
163
|
+
}));
|
|
81
164
|
const queue = [];
|
|
82
165
|
nodeIdArr.forEach((id) => {
|
|
83
166
|
if (inDegree[id] === 0) {
|
|
84
167
|
queue.push(id);
|
|
85
168
|
}
|
|
86
169
|
});
|
|
170
|
+
const nodeById = new Map(nodes.map((n) => [n.id, n]));
|
|
171
|
+
const neverRunTogether = sideOf ? getNeverRunTogether(nodes, edges) : null;
|
|
172
|
+
let currentSide = null;
|
|
173
|
+
const staysOnCurrentSide = (id) => {
|
|
174
|
+
const side = sideOf(nodeById.get(id));
|
|
175
|
+
return side === null || side === currentSide;
|
|
176
|
+
};
|
|
177
|
+
const nextIndex = () => {
|
|
178
|
+
if (!sideOf || currentSide === null || staysOnCurrentSide(queue[0])) {
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
const index = queue.findIndex((id, i) => i > 0 &&
|
|
182
|
+
staysOnCurrentSide(id) &&
|
|
183
|
+
queue.slice(0, i).every((ahead) => neverRunTogether(id, ahead)));
|
|
184
|
+
return Math.max(index, 0);
|
|
185
|
+
};
|
|
87
186
|
const order = [];
|
|
88
187
|
while (queue.length > 0) {
|
|
89
188
|
queue.sort((a, b) => {
|
|
@@ -91,7 +190,8 @@ export const getTopologicalOrder = (nodes, edges) => {
|
|
|
91
190
|
const nodeB = nodes.find((n) => n.id === b);
|
|
92
191
|
return ((nodeA === null || nodeA === void 0 ? void 0 : nodeA.stepNumber) || 0) - ((nodeB === null || nodeB === void 0 ? void 0 : nodeB.stepNumber) || 0);
|
|
93
192
|
});
|
|
94
|
-
const current = queue.
|
|
193
|
+
const [current] = queue.splice(nextIndex(), 1);
|
|
194
|
+
currentSide = (sideOf && sideOf(nodeById.get(current))) || currentSide;
|
|
95
195
|
order.push(current);
|
|
96
196
|
for (const neighbor of adjacency[current] || []) {
|
|
97
197
|
inDegree[neighbor]--;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,23 @@ export declare const generateInvoiceGenerateRouteCode: (settings: UIDLInvoiceSet
|
|
|
9
9
|
* against it keep pointing at a valid invoice. What a merchant corrected on the
|
|
10
10
|
* invoice itself (customer details, notes, payment method) wins over the order;
|
|
11
11
|
* the lines and every figure are recomputed from the order. The old PDF is
|
|
12
|
-
* replaced — and its runtime-storage copy deleted
|
|
13
|
-
*
|
|
12
|
+
* replaced — and its runtime-storage copy deleted.
|
|
13
|
+
*
|
|
14
|
+
* The customer is emailed once: by the regeneration that gives an invoice its
|
|
15
|
+
* FIRST PDF — one whose PDF failed at payment, so the payment's invoice email
|
|
16
|
+
* never went out — and only when the store emails invoices (Invoice Email
|
|
17
|
+
* Delivery). It is the payment's email: the same sender, template, attachment,
|
|
18
|
+
* link and language, recorded in the sent-email ledger and on the order's
|
|
19
|
+
* history. Which write gives the first PDF, the database decides (see
|
|
20
|
+
* `replaceInvoice` and `storeInvoicePdf`), so a second regeneration, a double
|
|
21
|
+
* click, two requests at once or a retried payment finishing the same invoice
|
|
22
|
+
* never send it again; a failed send costs the merchant nothing.
|
|
14
23
|
*
|
|
15
24
|
* Unlike `/generate`, which the payment webhook calls server-to-server, this
|
|
16
25
|
* route is reached from the merchant's browser only, so it checks the session
|
|
17
26
|
* itself: signed in, with an admin role.
|
|
18
27
|
*/
|
|
19
|
-
export declare const generateInvoiceRegenerateRouteCode: () => string;
|
|
28
|
+
export declare const generateInvoiceRegenerateRouteCode: (settings: UIDLInvoiceSettings) => string;
|
|
20
29
|
/**
|
|
21
30
|
* GET /api/invoices/[id]/pdf — the invoice PDF kept in the database, the link
|
|
22
31
|
* an order shows when runtime storage is not configured.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"api-routes-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA+FhE,eAAO,MAAM,gCAAgC,aAAc,mBAAmB,KAAG,MAgahF,CAAA;AAoCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kCAAkC,aAAc,mBAAmB,KAAG,MA8PlF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAsF9C,CAAA"}
|
|
@@ -53,6 +53,39 @@ async function invoiceCaller(req) {
|
|
|
53
53
|
userId: userId != null ? String(userId) : null,
|
|
54
54
|
};
|
|
55
55
|
}`;
|
|
56
|
+
/**
|
|
57
|
+
* The order-history line of an invoice email the provider accepted: an
|
|
58
|
+
* `order-email-sent` line of the email's purpose, keyed on the invoice, so the
|
|
59
|
+
* email is on its order's history once, whichever route sent it. The strings
|
|
60
|
+
* are data in the merchant's database, owned by teleport-gui's
|
|
61
|
+
* `order-event-types.ts` and `EmailTemplatePurpose.INVOICE_EMAIL`.
|
|
62
|
+
*/
|
|
63
|
+
const INVOICE_EMAIL_EVENT = { type: 'order-email-sent', purpose: 'invoice-email' };
|
|
64
|
+
/** Who sent an invoice email, as the order's history names them. */
|
|
65
|
+
const INVOICE_EMAIL_SENDERS = {
|
|
66
|
+
// The store's own code: the payment webhook's invoice step, the checkout.
|
|
67
|
+
store: { actor: '', actorType: 'system' },
|
|
68
|
+
// A signed-in admin: the admin panel's Regenerate, or an invoice issued by hand.
|
|
69
|
+
admin: { actor: 'Store admin', actorType: 'merchant' },
|
|
70
|
+
};
|
|
71
|
+
/** `recordInvoiceEmailSent(invoiceData, sender)`, as emitted source; needs `dataAccess`. */
|
|
72
|
+
const RECORD_INVOICE_EMAIL_CODE = `
|
|
73
|
+
var INVOICE_EMAIL_EVENT = ${JSON.stringify(INVOICE_EMAIL_EVENT)};
|
|
74
|
+
var INVOICE_EMAIL_SENDERS = ${JSON.stringify(INVOICE_EMAIL_SENDERS)};
|
|
75
|
+
|
|
76
|
+
// Writes the order's history line for an invoice email the provider accepted.
|
|
77
|
+
// The key is the invoice's, so the line is written once per invoice email.
|
|
78
|
+
async function recordInvoiceEmailSent(invoiceData, sender) {
|
|
79
|
+
if (!invoiceData.orderId) return;
|
|
80
|
+
await dataAccess.recordOrderEvent({
|
|
81
|
+
type: INVOICE_EMAIL_EVENT.type,
|
|
82
|
+
dedupeKey: INVOICE_EMAIL_EVENT.type + ':' + invoiceData.id + ':' + INVOICE_EMAIL_EVENT.purpose,
|
|
83
|
+
orderId: invoiceData.orderId,
|
|
84
|
+
payload: { purpose: INVOICE_EMAIL_EVENT.purpose, to: invoiceData.customerEmail },
|
|
85
|
+
actor: sender.actor,
|
|
86
|
+
actorType: sender.actorType,
|
|
87
|
+
});
|
|
88
|
+
}`;
|
|
56
89
|
export const generateInvoiceGenerateRouteCode = (settings) => {
|
|
57
90
|
var _a;
|
|
58
91
|
const prefix = settings.invoicePrefix || 'INV-';
|
|
@@ -86,6 +119,7 @@ var INVOICE_PREFIX = ${JSON.stringify(prefix)};
|
|
|
86
119
|
var UNFINISHED_INVOICE_STALE_SECONDS = 900;
|
|
87
120
|
|
|
88
121
|
${INVOICE_CALLER_CODE}
|
|
122
|
+
${emailEnabled ? RECORD_INVOICE_EMAIL_CODE : ''}
|
|
89
123
|
|
|
90
124
|
// ---------------------------------------------------------------------------
|
|
91
125
|
// Waiting for the order's line items to be fully written.
|
|
@@ -121,6 +155,21 @@ function sleepMs(ms) {
|
|
|
121
155
|
return new Promise(function (resolve) { setTimeout(resolve, ms); });
|
|
122
156
|
}
|
|
123
157
|
|
|
158
|
+
// The answer for an invoice the order already has: its number and its PDF.
|
|
159
|
+
function issuedInvoiceAnswer(invoice, currency) {
|
|
160
|
+
var pdfUrl = invoice.pdf_url || ('/api/invoices/' + invoice.id + '/pdf');
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
alreadyIssued: true,
|
|
164
|
+
invoiceId: invoice.id,
|
|
165
|
+
invoiceNumber: invoice.invoice_number,
|
|
166
|
+
storageUrl: pdfUrl.indexOf('/api/invoices/') === 0 ? '' : pdfUrl,
|
|
167
|
+
pdfUrl: pdfUrl,
|
|
168
|
+
total: Number(invoice.total) || 0,
|
|
169
|
+
currency: invoice.currency || currency,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
124
173
|
async function hydrateOrderWhenSettled(orderId) {
|
|
125
174
|
var deadline = Date.now() + SETTLE_TIMEOUT_MS;
|
|
126
175
|
var lastCount = -1;
|
|
@@ -261,17 +310,7 @@ module.exports = async function handler(req, res) {
|
|
|
261
310
|
if (!reservation.created) {
|
|
262
311
|
if (Number(held.pdf_size_bytes) > 0) {
|
|
263
312
|
console.info('[invoice] Order ' + body.orderId + ' already has invoice ' + held.invoice_number + ' — returning it');
|
|
264
|
-
|
|
265
|
-
res.status(200).json({
|
|
266
|
-
success: true,
|
|
267
|
-
alreadyIssued: true,
|
|
268
|
-
invoiceId: held.id,
|
|
269
|
-
invoiceNumber: held.invoice_number,
|
|
270
|
-
storageUrl: heldPdfUrl.indexOf('/api/invoices/') === 0 ? '' : heldPdfUrl,
|
|
271
|
-
pdfUrl: heldPdfUrl,
|
|
272
|
-
total: Number(held.total) || 0,
|
|
273
|
-
currency: held.currency || currency,
|
|
274
|
-
});
|
|
313
|
+
res.status(200).json(issuedInvoiceAnswer(held, currency));
|
|
275
314
|
return;
|
|
276
315
|
}
|
|
277
316
|
// Reserved, never finished: another request is rendering it now, or the
|
|
@@ -305,7 +344,18 @@ ${emailEnabled
|
|
|
305
344
|
console.info('[invoice] PDF generated: ' + pdfBuffer.length + ' bytes for ' + invoiceData.invoiceNumber);
|
|
306
345
|
|
|
307
346
|
invoiceData.pdfUrl = '/api/invoices/' + invoiceData.id + '/pdf';
|
|
308
|
-
|
|
347
|
+
// The PDF is written only on an invoice that has none, and the invoice's
|
|
348
|
+
// first PDF is what its email is claimed by (see storeInvoicePdf). A
|
|
349
|
+
// regeneration that gave a reserved invoice its PDF while this request
|
|
350
|
+
// rendered it — a retried payment finishing a stale reservation — emailed
|
|
351
|
+
// the buyer itself, so this request answers with that invoice and sends
|
|
352
|
+
// nothing.
|
|
353
|
+
var stored = await dataAccess.storeInvoicePdf(invoiceData.id, pdfBuffer, invoiceData.pdfUrl);
|
|
354
|
+
if (!stored.firstPdf) {
|
|
355
|
+
console.info('[invoice] Invoice ' + invoiceNumber + ' was given its PDF by a regeneration meanwhile — returning it');
|
|
356
|
+
res.status(200).json(issuedInvoiceAnswer((await dataAccess.getInvoiceById(invoiceData.id)) || held, currency));
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
309
359
|
console.info('[invoice] PDF stored — teleport_invoices.id=' + invoiceData.id + ', number=' + invoiceData.invoiceNumber + ', pdf_size_bytes=' + pdfBuffer.length + ', items=' + items.length + ' (accessible at ' + invoiceData.pdfUrl + ')');
|
|
310
360
|
|
|
311
361
|
var safeFileName = String(invoiceNumber || invoiceData.id).replace(/[^a-zA-Z0-9._-]/g, '_') + '.pdf';
|
|
@@ -373,9 +423,11 @@ ${emailEnabled
|
|
|
373
423
|
${emailEnabled
|
|
374
424
|
? `
|
|
375
425
|
if (invoiceData.customerEmail) {
|
|
426
|
+
var emailed = false;
|
|
376
427
|
try {
|
|
377
428
|
var emailResult = await emailSender.sendInvoiceEmail(invoiceData, pdfBuffer);
|
|
378
|
-
|
|
429
|
+
emailed = !!(emailResult && emailResult.success);
|
|
430
|
+
if (emailed) {
|
|
379
431
|
console.info('[invoice] Email delivery OK — to=' + invoiceData.customerEmail + ', messageId=' + (emailResult.messageId || '(empty)'));
|
|
380
432
|
} else {
|
|
381
433
|
console.error('[invoice] Email delivery FAILED — to=' + invoiceData.customerEmail + ', error=' + (emailResult && emailResult.error ? emailResult.error : 'unknown'));
|
|
@@ -383,6 +435,13 @@ ${emailEnabled
|
|
|
383
435
|
} catch (emailErr) {
|
|
384
436
|
console.error('[invoice] Email delivery threw — to=' + invoiceData.customerEmail + ', error=' + (emailErr && emailErr.message ? emailErr.message : emailErr));
|
|
385
437
|
}
|
|
438
|
+
if (emailed) {
|
|
439
|
+
try {
|
|
440
|
+
await recordInvoiceEmailSent(invoiceData, caller.admin ? INVOICE_EMAIL_SENDERS.admin : INVOICE_EMAIL_SENDERS.store);
|
|
441
|
+
} catch (recordErr) {
|
|
442
|
+
console.error('[invoice] Invoice ' + invoiceNumber + ' was emailed, but the order history could not record it — ' + (recordErr && recordErr.message));
|
|
443
|
+
}
|
|
444
|
+
}
|
|
386
445
|
} else {
|
|
387
446
|
console.info('[invoice] Skipping email delivery — invoiceData.customerEmail is empty. (Check teleport_orders.billing_email for order ' + (body.orderId || '(no orderId)') + ')');
|
|
388
447
|
}
|
|
@@ -436,6 +495,36 @@ ${emailEnabled
|
|
|
436
495
|
};
|
|
437
496
|
/** The roles allowed to rebuild an invoice (the admin panel is the only caller). */
|
|
438
497
|
const REGENERATE_INVOICE_ROLES = INVOICE_ADMIN_ROLES;
|
|
498
|
+
/** The regenerate route's `emailFirstInvoice`, as emitted source. */
|
|
499
|
+
const generateFirstInvoiceEmailCode = () => `${RECORD_INVOICE_EMAIL_CODE}
|
|
500
|
+
|
|
501
|
+
var REGENERATE_SOURCE_REF = 'api/invoices/[id]/regenerate';
|
|
502
|
+
|
|
503
|
+
// The invoice email the payment would have sent: the same sender, template,
|
|
504
|
+
// attachment and link, in the buyer's language — the one stamped on the order
|
|
505
|
+
// at checkout, else the store's main language, never the language of this
|
|
506
|
+
// request, which is the merchant's. The sender records it in the sent-email
|
|
507
|
+
// ledger; the order's history records it once the provider accepted it. A
|
|
508
|
+
// failure is logged and goes no further: the merchant has the PDF either way.
|
|
509
|
+
async function emailFirstInvoice(invoiceData, pdfBuffer, order) {
|
|
510
|
+
if (!invoiceData.customerEmail) return;
|
|
511
|
+
invoiceData.locale = emailLocale.normalizeEmailLocale(order && order.locale) || emailLocale.DEFAULT_EMAIL_LOCALE;
|
|
512
|
+
try {
|
|
513
|
+
var sent = await emailSender.sendInvoiceEmail(invoiceData, pdfBuffer, REGENERATE_SOURCE_REF);
|
|
514
|
+
if (!sent || !sent.success) {
|
|
515
|
+
throw new Error((sent && sent.error) || 'the email provider did not accept it');
|
|
516
|
+
}
|
|
517
|
+
} catch (sendErr) {
|
|
518
|
+
console.error('[invoice] Regenerate: invoice ' + invoiceData.invoiceNumber + ' could not be emailed to its customer — ' + (sendErr && sendErr.message));
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
try {
|
|
522
|
+
await recordInvoiceEmailSent(invoiceData, INVOICE_EMAIL_SENDERS.admin);
|
|
523
|
+
} catch (recordErr) {
|
|
524
|
+
console.error('[invoice] Regenerate: invoice ' + invoiceData.invoiceNumber + ' was emailed, but the order history could not record it — ' + (recordErr && recordErr.message));
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
`;
|
|
439
528
|
/**
|
|
440
529
|
* POST /api/invoices/[id]/regenerate — the admin panel's "Regenerate" action.
|
|
441
530
|
*
|
|
@@ -445,23 +534,43 @@ const REGENERATE_INVOICE_ROLES = INVOICE_ADMIN_ROLES;
|
|
|
445
534
|
* against it keep pointing at a valid invoice. What a merchant corrected on the
|
|
446
535
|
* invoice itself (customer details, notes, payment method) wins over the order;
|
|
447
536
|
* the lines and every figure are recomputed from the order. The old PDF is
|
|
448
|
-
* replaced — and its runtime-storage copy deleted
|
|
449
|
-
*
|
|
537
|
+
* replaced — and its runtime-storage copy deleted.
|
|
538
|
+
*
|
|
539
|
+
* The customer is emailed once: by the regeneration that gives an invoice its
|
|
540
|
+
* FIRST PDF — one whose PDF failed at payment, so the payment's invoice email
|
|
541
|
+
* never went out — and only when the store emails invoices (Invoice Email
|
|
542
|
+
* Delivery). It is the payment's email: the same sender, template, attachment,
|
|
543
|
+
* link and language, recorded in the sent-email ledger and on the order's
|
|
544
|
+
* history. Which write gives the first PDF, the database decides (see
|
|
545
|
+
* `replaceInvoice` and `storeInvoicePdf`), so a second regeneration, a double
|
|
546
|
+
* click, two requests at once or a retried payment finishing the same invoice
|
|
547
|
+
* never send it again; a failed send costs the merchant nothing.
|
|
450
548
|
*
|
|
451
549
|
* Unlike `/generate`, which the payment webhook calls server-to-server, this
|
|
452
550
|
* route is reached from the merchant's browser only, so it checks the session
|
|
453
551
|
* itself: signed in, with an admin role.
|
|
454
552
|
*/
|
|
455
|
-
export const generateInvoiceRegenerateRouteCode = () => {
|
|
553
|
+
export const generateInvoiceRegenerateRouteCode = (settings) => {
|
|
554
|
+
var _a;
|
|
555
|
+
const emailEnabled = ((_a = settings.emailDelivery) === null || _a === void 0 ? void 0 : _a.enabled) === true;
|
|
456
556
|
return `/**
|
|
457
557
|
* POST /api/invoices/[id]/regenerate
|
|
458
558
|
* Rebuilds one invoice from its order, in place, for the admin panel. Same
|
|
459
|
-
* number, id and dates; a freshly rendered PDF replaces the old one
|
|
559
|
+
* number, id and dates; a freshly rendered PDF replaces the old one.${emailEnabled
|
|
560
|
+
? `
|
|
561
|
+
* The first PDF an invoice ever gets is emailed to its customer, once.`
|
|
562
|
+
: `
|
|
563
|
+
* No email: this store does not email invoices.`}
|
|
460
564
|
*/
|
|
461
565
|
|
|
462
566
|
var dataAccess = require('../../../../utils/invoices/data-access');
|
|
463
567
|
var pdfGenerator = require('../../../../utils/invoices/pdf-generator');
|
|
464
568
|
var invoiceAssembly = require('../../../../utils/invoices/invoice-assembly');
|
|
569
|
+
${emailEnabled
|
|
570
|
+
? `var emailSender = require('../../../../utils/invoices/email-sender');
|
|
571
|
+
var sentEmailLog = require('../../../../utils/email/sent-email-log');
|
|
572
|
+
var emailLocale = require('../../../../utils/email/email-locale');`
|
|
573
|
+
: ''}
|
|
465
574
|
|
|
466
575
|
${generateCommonJsSessionTokenResolverCode()}
|
|
467
576
|
${ROLE_OF_TOKEN_CODE}
|
|
@@ -547,7 +656,7 @@ async function findInvoice(invoiceId) {
|
|
|
547
656
|
throw err;
|
|
548
657
|
}
|
|
549
658
|
}
|
|
550
|
-
|
|
659
|
+
${emailEnabled ? generateFirstInvoiceEmailCode() : ''}
|
|
551
660
|
module.exports = async function handler(req, res) {
|
|
552
661
|
if (req.method !== 'POST') {
|
|
553
662
|
res.setHeader('Allow', 'POST');
|
|
@@ -606,7 +715,12 @@ module.exports = async function handler(req, res) {
|
|
|
606
715
|
invoiceData.pdfSizeBytes = pdfBuffer.length;
|
|
607
716
|
invoiceData.pdfUrl = '/api/invoices/' + invoiceData.id + '/pdf';
|
|
608
717
|
|
|
609
|
-
|
|
718
|
+
${emailEnabled
|
|
719
|
+
? ` var replaced = await dataAccess.replaceInvoice(invoiceData.id, invoiceData, invoiceData.items);
|
|
720
|
+
// This regeneration gave the invoice its first PDF, so the payment's
|
|
721
|
+
// invoice email never went out: this one sends it.
|
|
722
|
+
var emailsCustomer = !!(replaced && replaced.firstPdf);`
|
|
723
|
+
: ` await dataAccess.replaceInvoice(invoiceData.id, invoiceData, invoiceData.items);`}
|
|
610
724
|
console.info('[invoice] Regenerated ' + invoiceData.invoiceNumber + ' (id=' + invoiceData.id + ', items=' + invoiceData.items.length + ', pdf_size_bytes=' + pdfBuffer.length + ')');
|
|
611
725
|
|
|
612
726
|
// The new PDF's public copy. The row already serves the new bytes through
|
|
@@ -629,7 +743,15 @@ module.exports = async function handler(req, res) {
|
|
|
629
743
|
if (storageKey) {
|
|
630
744
|
await invoiceAssembly.deleteStoredInvoicePdf(storageKey);
|
|
631
745
|
}
|
|
632
|
-
|
|
746
|
+
${emailEnabled
|
|
747
|
+
? ` // The invoice has its first PDF all the same — served from the database,
|
|
748
|
+
// its public copy just went — and no later regeneration will send it.
|
|
749
|
+
if (emailsCustomer) {
|
|
750
|
+
await emailFirstInvoice(invoiceData, pdfBuffer, hydrated.order);
|
|
751
|
+
}
|
|
752
|
+
await sentEmailLog.settleSentEmailLog();
|
|
753
|
+
`
|
|
754
|
+
: ''} res.status(500).json({ success: false, error: MESSAGES.orderNotUpdated });
|
|
633
755
|
return;
|
|
634
756
|
}
|
|
635
757
|
|
|
@@ -647,7 +769,16 @@ module.exports = async function handler(req, res) {
|
|
|
647
769
|
if (previousStorageKey && previousStorageKey !== storageKey) {
|
|
648
770
|
await invoiceAssembly.deleteStoredInvoicePdf(previousStorageKey);
|
|
649
771
|
}
|
|
650
|
-
|
|
772
|
+
${emailEnabled
|
|
773
|
+
? `
|
|
774
|
+
if (emailsCustomer) {
|
|
775
|
+
await emailFirstInvoice(invoiceData, pdfBuffer, hydrated.order);
|
|
776
|
+
}
|
|
777
|
+
// The email's ledger row is written in the background — land it before
|
|
778
|
+
// replying, a serverless function may be frozen the instant it responds.
|
|
779
|
+
await sentEmailLog.settleSentEmailLog();
|
|
780
|
+
`
|
|
781
|
+
: ''}
|
|
651
782
|
res.status(200).json({
|
|
652
783
|
success: true,
|
|
653
784
|
invoiceId: invoiceData.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes-code.js","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,CAAA;AAErC;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,GAAG,wCAAwC,EAAE;EACvE,kBAAkB;;4BAEQ,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC7D,CAAA;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,QAA6B,EAAU,EAAE;;IACxF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAA;IAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,KAAK,KAAK,CAAA;IAC7D,MAAM,YAAY,GAAG,CAAA,MAAA,QAAQ,CAAC,aAAa,0CAAE,OAAO,MAAK,IAAI,CAAA;IAE7D,OAAO;;;;;;;;;;;;;;;;EAiBP,YAAY;QACV,CAAC,CAAC;;gEAE0D;QAC5D,CAAC,CAAC,EACN;;uBAEuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;EAK3C,mBAAmB
|
|
1
|
+
{"version":3,"file":"api-routes-code.js","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhF,eAAO,MAAM,sBAAsB,aACvB,mBAAmB,kBACb,cAAc,GAAG,IAAI,oBACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAC/C,
|
|
1
|
+
{"version":3,"file":"data-access-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhF,eAAO,MAAM,sBAAsB,aACvB,mBAAmB,kBACb,cAAc,GAAG,IAAI,oBACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAC/C,MA8CF,CAAA;AAmxBD,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,MAsItD,CAAA"}
|