@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.
Files changed (158) hide show
  1. package/__tests__/_helpers/fake-store-database.ts +428 -0
  2. package/__tests__/_helpers/invoice-store.ts +382 -0
  3. package/__tests__/email-locale-senders.test.ts +3 -1
  4. package/__tests__/email-sender-name.test.ts +513 -0
  5. package/__tests__/graph-utils-topological-order.test.ts +155 -1
  6. package/__tests__/invoice-billing-details.test.ts +107 -1
  7. package/__tests__/invoice-data-access-replace.test.ts +236 -2
  8. package/__tests__/invoice-order-items-settle.test.ts +1 -1
  9. package/__tests__/invoice-payment-email.test.ts +191 -0
  10. package/__tests__/invoice-regenerate-email.test.ts +288 -0
  11. package/__tests__/invoice-regenerate-route.test.ts +9 -7
  12. package/__tests__/invoice-reservation.test.ts +1 -1
  13. package/__tests__/invoice-tender.test.ts +1 -1
  14. package/__tests__/segment-splitter-checkout-order.test.ts +306 -0
  15. package/__tests__/streaming-on-end-env-filter.test.ts +18 -18
  16. package/__tests__/streaming-on-end-order.test.ts +387 -0
  17. package/dist/cjs/account-delete-route-generator.d.ts +1 -0
  18. package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
  19. package/dist/cjs/account-delete-route-generator.js +2 -1
  20. package/dist/cjs/account-delete-route-generator.js.map +1 -1
  21. package/dist/cjs/auth-generator.d.ts +1 -0
  22. package/dist/cjs/auth-generator.d.ts.map +1 -1
  23. package/dist/cjs/auth-generator.js +2 -1
  24. package/dist/cjs/auth-generator.js.map +1 -1
  25. package/dist/cjs/executor-generator.d.ts.map +1 -1
  26. package/dist/cjs/executor-generator.js +9 -26
  27. package/dist/cjs/executor-generator.js.map +1 -1
  28. package/dist/cjs/graph-utils.d.ts +31 -1
  29. package/dist/cjs/graph-utils.d.ts.map +1 -1
  30. package/dist/cjs/graph-utils.js +112 -10
  31. package/dist/cjs/graph-utils.js.map +1 -1
  32. package/dist/cjs/invoice/api-routes-code.d.ts +12 -3
  33. package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
  34. package/dist/cjs/invoice/api-routes-code.js +152 -21
  35. package/dist/cjs/invoice/api-routes-code.js.map +1 -1
  36. package/dist/cjs/invoice/data-access-code.d.ts.map +1 -1
  37. package/dist/cjs/invoice/data-access-code.js +133 -21
  38. package/dist/cjs/invoice/data-access-code.js.map +1 -1
  39. package/dist/cjs/invoice/email-sender-code.d.ts.map +1 -1
  40. package/dist/cjs/invoice/email-sender-code.js +15 -25
  41. package/dist/cjs/invoice/email-sender-code.js.map +1 -1
  42. package/dist/cjs/invoice/index.js +1 -1
  43. package/dist/cjs/invoice/index.js.map +1 -1
  44. package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -1
  45. package/dist/cjs/invoice/invoice-assembly-code.js +10 -6
  46. package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -1
  47. package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
  48. package/dist/cjs/invoice/invoice-html-code.js +3 -0
  49. package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
  50. package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
  51. package/dist/cjs/nodes/email/email-mailgun.js +4 -2
  52. package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
  53. package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
  54. package/dist/cjs/nodes/email/email-postmark.js +5 -2
  55. package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
  56. package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
  57. package/dist/cjs/nodes/email/email-resend.js +5 -2
  58. package/dist/cjs/nodes/email/email-resend.js.map +1 -1
  59. package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
  60. package/dist/cjs/nodes/email/email-sendgrid.js +8 -2
  61. package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
  62. package/dist/cjs/nodes/storage/storage-local-remove.d.ts.map +1 -1
  63. package/dist/cjs/nodes/storage/storage-local-remove.js +2 -0
  64. package/dist/cjs/nodes/storage/storage-local-remove.js.map +1 -1
  65. package/dist/cjs/nodes/storage/storage-local-set.d.ts.map +1 -1
  66. package/dist/cjs/nodes/storage/storage-local-set.js +4 -0
  67. package/dist/cjs/nodes/storage/storage-local-set.js.map +1 -1
  68. package/dist/cjs/segment-splitter.d.ts.map +1 -1
  69. package/dist/cjs/segment-splitter.js +65 -27
  70. package/dist/cjs/segment-splitter.js.map +1 -1
  71. package/dist/cjs/transactional-email-code.d.ts.map +1 -1
  72. package/dist/cjs/transactional-email-code.js +32 -18
  73. package/dist/cjs/transactional-email-code.js.map +1 -1
  74. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  75. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  76. package/dist/cjs/workflow-project-plugin.js +2 -0
  77. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  78. package/dist/esm/account-delete-route-generator.d.ts +1 -0
  79. package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
  80. package/dist/esm/account-delete-route-generator.js +2 -1
  81. package/dist/esm/account-delete-route-generator.js.map +1 -1
  82. package/dist/esm/auth-generator.d.ts +1 -0
  83. package/dist/esm/auth-generator.d.ts.map +1 -1
  84. package/dist/esm/auth-generator.js +2 -1
  85. package/dist/esm/auth-generator.js.map +1 -1
  86. package/dist/esm/executor-generator.d.ts.map +1 -1
  87. package/dist/esm/executor-generator.js +9 -26
  88. package/dist/esm/executor-generator.js.map +1 -1
  89. package/dist/esm/graph-utils.d.ts +31 -1
  90. package/dist/esm/graph-utils.d.ts.map +1 -1
  91. package/dist/esm/graph-utils.js +109 -9
  92. package/dist/esm/graph-utils.js.map +1 -1
  93. package/dist/esm/invoice/api-routes-code.d.ts +12 -3
  94. package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
  95. package/dist/esm/invoice/api-routes-code.js +152 -21
  96. package/dist/esm/invoice/api-routes-code.js.map +1 -1
  97. package/dist/esm/invoice/data-access-code.d.ts.map +1 -1
  98. package/dist/esm/invoice/data-access-code.js +133 -21
  99. package/dist/esm/invoice/data-access-code.js.map +1 -1
  100. package/dist/esm/invoice/email-sender-code.d.ts.map +1 -1
  101. package/dist/esm/invoice/email-sender-code.js +15 -25
  102. package/dist/esm/invoice/email-sender-code.js.map +1 -1
  103. package/dist/esm/invoice/index.js +1 -1
  104. package/dist/esm/invoice/index.js.map +1 -1
  105. package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -1
  106. package/dist/esm/invoice/invoice-assembly-code.js +10 -6
  107. package/dist/esm/invoice/invoice-assembly-code.js.map +1 -1
  108. package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
  109. package/dist/esm/invoice/invoice-html-code.js +3 -0
  110. package/dist/esm/invoice/invoice-html-code.js.map +1 -1
  111. package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
  112. package/dist/esm/nodes/email/email-mailgun.js +4 -2
  113. package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
  114. package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
  115. package/dist/esm/nodes/email/email-postmark.js +5 -2
  116. package/dist/esm/nodes/email/email-postmark.js.map +1 -1
  117. package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
  118. package/dist/esm/nodes/email/email-resend.js +5 -2
  119. package/dist/esm/nodes/email/email-resend.js.map +1 -1
  120. package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
  121. package/dist/esm/nodes/email/email-sendgrid.js +8 -2
  122. package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
  123. package/dist/esm/nodes/storage/storage-local-remove.d.ts.map +1 -1
  124. package/dist/esm/nodes/storage/storage-local-remove.js +2 -0
  125. package/dist/esm/nodes/storage/storage-local-remove.js.map +1 -1
  126. package/dist/esm/nodes/storage/storage-local-set.d.ts.map +1 -1
  127. package/dist/esm/nodes/storage/storage-local-set.js +4 -0
  128. package/dist/esm/nodes/storage/storage-local-set.js.map +1 -1
  129. package/dist/esm/segment-splitter.d.ts.map +1 -1
  130. package/dist/esm/segment-splitter.js +66 -28
  131. package/dist/esm/segment-splitter.js.map +1 -1
  132. package/dist/esm/transactional-email-code.d.ts.map +1 -1
  133. package/dist/esm/transactional-email-code.js +32 -18
  134. package/dist/esm/transactional-email-code.js.map +1 -1
  135. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  136. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  137. package/dist/esm/workflow-project-plugin.js +2 -0
  138. package/dist/esm/workflow-project-plugin.js.map +1 -1
  139. package/package.json +3 -3
  140. package/src/account-delete-route-generator.ts +3 -1
  141. package/src/auth-generator.ts +3 -1
  142. package/src/executor-generator.ts +9 -26
  143. package/src/graph-utils.ts +143 -11
  144. package/src/invoice/api-routes-code.ts +166 -21
  145. package/src/invoice/data-access-code.ts +139 -21
  146. package/src/invoice/email-sender-code.ts +15 -25
  147. package/src/invoice/index.ts +1 -1
  148. package/src/invoice/invoice-assembly-code.ts +10 -6
  149. package/src/invoice/invoice-html-code.ts +3 -0
  150. package/src/nodes/email/email-mailgun.ts +11 -2
  151. package/src/nodes/email/email-postmark.ts +12 -2
  152. package/src/nodes/email/email-resend.ts +12 -2
  153. package/src/nodes/email/email-sendgrid.ts +15 -2
  154. package/src/nodes/storage/storage-local-remove.ts +4 -0
  155. package/src/nodes/storage/storage-local-set.ts +6 -0
  156. package/src/segment-splitter.ts +90 -36
  157. package/src/transactional-email-code.ts +32 -21
  158. package/src/workflow-project-plugin.ts +2 -0
@@ -1836,25 +1836,19 @@ function findStreamingAINodes(allNodes, allEdges) {
1836
1836
  const n = allNodes[ni];
1837
1837
  if (aiTypes.indexOf(n.type) >= 0 && n.config && n.config.streaming) {
1838
1838
  let onStreamEdge = null;
1839
- let onEndEdge = null;
1840
1839
  for (let ei = 0; ei < allEdges.length; ei++) {
1841
- if (allEdges[ei].source === n.id) {
1842
- if (allEdges[ei].sourceHandle === 'on-stream') onStreamEdge = allEdges[ei];
1843
- if (allEdges[ei].sourceHandle === 'on-end') onEndEdge = allEdges[ei];
1844
- }
1840
+ if (allEdges[ei].source === n.id && allEdges[ei].sourceHandle === 'on-stream') onStreamEdge = allEdges[ei];
1845
1841
  }
1846
1842
  const onStreamNodes = onStreamEdge ? utils.collectBranchNodes(onStreamEdge.target, allNodes, allEdges, n.id) : [];
1847
- const onEndNodes = onEndEdge ? utils.collectBranchNodes(onEndEdge.target, allNodes, allEdges, n.id) : [];
1848
- map[n.id] = { node: n, onStreamNodes: onStreamNodes, onEndNodes: onEndNodes };
1843
+ map[n.id] = { node: n, onStreamNodes: onStreamNodes };
1849
1844
  }
1850
1845
  }
1851
1846
  return map;
1852
1847
  }
1853
1848
 
1854
- // A streaming AI node's on-stream / on-end branches are collected from the
1855
- // FULL workflow node list, so they may contain server nodes (e.g. the SQL
1856
- // insert persisting a chat answer). Those already execute inside their own
1857
- // server segments with full configs; the browser bundle only ships their
1849
+ // A streaming AI node's on-stream branch is collected from the FULL workflow
1850
+ // node list, so it may contain server nodes. Those already execute inside their
1851
+ // own server segments with full configs; the browser bundle only ships their
1858
1852
  // config redacted down to the client-safe whitelist (segment-splitter's
1859
1853
  // redactServerNodeConfig), so executing them here with CLIENT handlers both
1860
1854
  // double-executes them and crashes on the missing config. Emitted nodes carry
@@ -1867,7 +1861,6 @@ function clientExecutableBranchNodes(branchNodes) {
1867
1861
  async function callStreamingServerSegment(segmentUrl, context, streamingInfo, allNodes, allEdges, clientHandlers, workflowConfig, executionId, stateKeys) {
1868
1862
  const prunedContext = pruneContext(context, stateKeys);
1869
1863
  const handledNodeIds = {};
1870
- const streamedNodeIds = {};
1871
1864
  // Same relative-URL problem as callServerSegment above — required even
1872
1865
  // for streaming segments because a server-side caller (e.g. an AI
1873
1866
  // chat webhook) would otherwise fail to parse the URL.
@@ -1914,7 +1907,6 @@ async function callStreamingServerSegment(segmentUrl, context, streamingInfo, al
1914
1907
  try { data = JSON.parse(jsonStr); } catch(e) { continue; }
1915
1908
 
1916
1909
  if (data.type === 'chunk' && data.nodeId) {
1917
- streamedNodeIds[data.nodeId] = true;
1918
1910
  context[data.nodeId] = { chunk: data.chunk, fullResponse: data.fullResponse };
1919
1911
  const info = streamingInfo[data.nodeId];
1920
1912
  if (info && info.onStreamNodes.length > 0) {
@@ -1929,22 +1921,13 @@ async function callStreamingServerSegment(segmentUrl, context, streamingInfo, al
1929
1921
  } else if (data.type === 'node-result' && data.nodeId) {
1930
1922
  context[data.nodeId] = data.result;
1931
1923
  } else if (data.type === 'done') {
1924
+ // The on-end branch is not run here: its steps sit in the segments after
1925
+ // this one, and the caller runs those in graph order, so a browser step
1926
+ // waits for the server steps before it (the chat's "Bump Conversation
1927
+ // After Reply" -> "Get Chat Messages for Final Update").
1932
1928
  if (data.results) {
1933
1929
  mergeServerResults(context, data.results, workflowConfig && workflowConfig.triggerNodeId);
1934
1930
  }
1935
- const streamedKeys = Object.keys(streamedNodeIds);
1936
- for (let sk = 0; sk < streamedKeys.length; sk++) {
1937
- const endInfo = streamingInfo[streamedKeys[sk]];
1938
- if (endInfo && endInfo.onEndNodes.length > 0) {
1939
- const runnableEndNodes = clientExecutableBranchNodes(endInfo.onEndNodes);
1940
- if (runnableEndNodes.length > 0) {
1941
- await utils.executeNodes(runnableEndNodes, allEdges, context, clientHandlers, workflowConfig, null, executionId);
1942
- }
1943
- for (let eni = 0; eni < endInfo.onEndNodes.length; eni++) {
1944
- handledNodeIds[endInfo.onEndNodes[eni].id] = true;
1945
- }
1946
- }
1947
- }
1948
1931
  } else if (data.type === 'error') {
1949
1932
  throw new Error(data.error || 'Streaming workflow segment failed');
1950
1933
  }
@@ -1 +1 @@
1
- {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,37 @@ export declare const getEdgesTo: (nodeId: string, edges: UIDLWorkflowEdge[]) =>
11
11
  * loop collections, custom-js params, …).
12
12
  */
13
13
  export declare const collectWorkflowContextNodeIds: (value: unknown, out: Set<string>) => void;
14
- export declare const getTopologicalOrder: (nodes: UIDLWorkflowNode[], edges: UIDLWorkflowEdge[]) => string[];
14
+ /**
15
+ * Where a node runs once the segment splitter places it, or `null` for a node
16
+ * that runs wherever the node before it ran (an if-statement), so it never
17
+ * forces a switch between browser and server.
18
+ */
19
+ export type ExecutionSide = 'client' | 'server';
20
+ export type ExecutionSideOf = (node: UIDLWorkflowNode) => ExecutionSide | null;
21
+ /**
22
+ * Every dependency each node waits for: the source of each edge into it (but a
23
+ * loop's back edge) and every node whose output it reads through a
24
+ * `workflowContext` reference. Listed per SOURCE, in edge order then reference
25
+ * order — the order the topological sort below releases them in.
26
+ */
27
+ export declare const getDependents: (nodes: UIDLWorkflowNode[], edges: UIDLWorkflowEdge[]) => Record<string, string[]>;
28
+ /**
29
+ * Whether two nodes can never both run: they lie on different branches of the
30
+ * same if-statement or switch, and the runtime skips everything reachable from
31
+ * the branch it did not take.
32
+ */
33
+ export declare const getNeverRunTogether: (nodes: UIDLWorkflowNode[], edges: UIDLWorkflowEdge[]) => (a: string, b: string) => boolean;
34
+ /**
35
+ * Kahn's order, the lowest `stepNumber` first among the nodes ready to run.
36
+ *
37
+ * With `sideOf` (the segment splitter), a ready node that stays on the side
38
+ * the previous node ran on may go ahead of lower-step nodes on the other side —
39
+ * one client/server switch fewer, so one server round trip fewer — but only of
40
+ * nodes it never runs together with. A refusal branch's toast waits for the
41
+ * main chain's server steps; two steps that both run keep their order, which
42
+ * custom JavaScript reads `params` by.
43
+ */
44
+ export declare const getTopologicalOrder: (nodes: UIDLWorkflowNode[], edges: UIDLWorkflowEdge[], sideOf?: ExecutionSideOf) => string[];
15
45
  export declare const getLoopBodyNodes: (loopNodeId: string, edges: UIDLWorkflowEdge[]) => string[];
16
46
  export declare const getParallelBranches: (parallelNodeId: string, edges: UIDLWorkflowEdge[]) => {
17
47
  branchStartIds: string[];
@@ -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,KACxB,MAAM,EAqFR,CAAA;AAED,eAAO,MAAM,gBAAgB,eAAgB,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EA8BtF,CAAA;AAED,eAAO,MAAM,mBAAmB,mBACd,MAAM,SACf,gBAAgB,EAAE,KACxB;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAY9E,CAAA;AAED,eAAO,MAAM,cAAc,iBACX,MAAM,SACb,gBAAgB,EAAE,KACxB,MAAM;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAc5C,CAAA;AAED,eAAO,MAAM,aAAa,aACd,MAAM,SACT,gBAAgB,EAAE,KACxB;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAQjD,CAAA;AAED,eAAO,MAAM,iBAAiB,eAChB,MAAM,SACX,gBAAgB,EAAE,KACxB,MAAM,GAAG,SAGX,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAe,aAAa,KAAG,IAAI,MAAM,CAoBzE,CAAA;AAED,eAAO,MAAM,aAAa,aAOxB,CAAA;AAEF,eAAO,MAAM,iBAAiB,SAAU,gBAAgB,KAAG,OAE1D,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,MAAM,SACP,gBAAgB,EAAE,KACxB;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAOrD,CAAA;AAED,eAAO,MAAM,iBAAiB,aAAc,MAAM,KAAG,OAIpD,CAAA;AAED,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAajD,CAAA;AAED,eAAO,MAAM,mBAAmB,aAW9B,CAAA;AAEF,eAAO,MAAM,sBAAsB,aAKjC,CAAA;AAEF,eAAO,MAAM,mBAAmB,cAAe,aAAa,KAAG,OAiC9D,CAAA;AAED,eAAO,MAAM,8BAA8B,cAAe,aAAa,KAAG,IAAI,MAAM,CAoCnF,CAAA"}
1
+ {"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectUsedRealtimeActionTypes = exports.projectUsesRealtime = exports.REALTIME_TRIGGER_TYPES = exports.REALTIME_NODE_TYPES = exports.isTerminalNode = exports.isControlFlowNode = exports.getStreamingBranches = exports.isStreamingAINode = exports.AI_NODE_TYPES = exports.collectUsedNodeTypes = exports.getLoopExitTarget = exports.getIfBranches = exports.getSwitchCases = exports.getParallelBranches = exports.getLoopBodyNodes = exports.getTopologicalOrder = exports.collectWorkflowContextNodeIds = exports.getEdgesTo = exports.getEdgesFrom = exports.getNodeChildren = exports.getNodeDependencies = exports.getNodeById = void 0;
3
+ exports.collectUsedRealtimeActionTypes = exports.projectUsesRealtime = exports.REALTIME_TRIGGER_TYPES = exports.REALTIME_NODE_TYPES = exports.isTerminalNode = exports.isControlFlowNode = exports.getStreamingBranches = exports.isStreamingAINode = exports.AI_NODE_TYPES = exports.collectUsedNodeTypes = exports.getLoopExitTarget = exports.getIfBranches = exports.getSwitchCases = exports.getParallelBranches = exports.getLoopBodyNodes = exports.getTopologicalOrder = exports.getNeverRunTogether = exports.getDependents = exports.collectWorkflowContextNodeIds = exports.getEdgesTo = exports.getEdgesFrom = exports.getNodeChildren = exports.getNodeDependencies = exports.getNodeById = void 0;
4
4
  const getNodeById = (nodes, nodeId) => {
5
5
  return nodes.find((n) => n.id === nodeId);
6
6
  };
@@ -42,19 +42,27 @@ const collectWorkflowContextNodeIds = (value, out) => {
42
42
  Object.values(record).forEach((child) => (0, exports.collectWorkflowContextNodeIds)(child, out));
43
43
  };
44
44
  exports.collectWorkflowContextNodeIds = collectWorkflowContextNodeIds;
45
- const getTopologicalOrder = (nodes, edges) => {
45
+ /**
46
+ * The edge that sends a loop body back to its loop for the next item. The loop
47
+ * does not wait for it: counted as a dependency it left the loop, and every
48
+ * node after it, waiting forever.
49
+ */
50
+ const isLoopBackEdge = (edge) => edge.targetHandle === 'loop-back';
51
+ /**
52
+ * Every dependency each node waits for: the source of each edge into it (but a
53
+ * loop's back edge) and every node whose output it reads through a
54
+ * `workflowContext` reference. Listed per SOURCE, in edge order then reference
55
+ * order — the order the topological sort below releases them in.
56
+ */
57
+ const getDependents = (nodes, edges) => {
46
58
  const nodeIds = new Set(nodes.map((n) => n.id));
47
- const inDegree = {};
48
59
  const adjacency = {};
49
- const nodeIdArr = Array.from(nodeIds);
50
- nodeIdArr.forEach((id) => {
51
- inDegree[id] = 0;
60
+ nodeIds.forEach((id) => {
52
61
  adjacency[id] = [];
53
62
  });
54
63
  edges.forEach((edge) => {
55
- if (nodeIds.has(edge.source) && nodeIds.has(edge.target)) {
64
+ if (nodeIds.has(edge.source) && nodeIds.has(edge.target) && !isLoopBackEdge(edge)) {
56
65
  adjacency[edge.source].push(edge.target);
57
- inDegree[edge.target]++;
58
66
  }
59
67
  });
60
68
  // Virtual dependency edges from IMPLICIT data dependencies: a node that
@@ -84,15 +92,108 @@ const getTopologicalOrder = (nodes, edges) => {
84
92
  return;
85
93
  }
86
94
  adjacency[refId].push(node.id);
87
- inDegree[node.id]++;
88
95
  });
89
96
  });
97
+ return adjacency;
98
+ };
99
+ exports.getDependents = getDependents;
100
+ /**
101
+ * Every node reachable from `startId` without passing through `parentId` or a
102
+ * loop's back edge: what the runtime skips when `parentId` does not take the
103
+ * branch starting at `startId`.
104
+ */
105
+ const collectBranchNodeIds = (startId, targetsBySource, parentId) => {
106
+ const reached = new Set();
107
+ const queue = [startId];
108
+ while (queue.length > 0) {
109
+ const current = queue.shift();
110
+ if (reached.has(current) || current === parentId) {
111
+ continue;
112
+ }
113
+ reached.add(current);
114
+ queue.push(...(targetsBySource.get(current) || []));
115
+ }
116
+ return reached;
117
+ };
118
+ /**
119
+ * Whether two nodes can never both run: they lie on different branches of the
120
+ * same if-statement or switch, and the runtime skips everything reachable from
121
+ * the branch it did not take.
122
+ */
123
+ const getNeverRunTogether = (nodes, edges) => {
124
+ const targetsBySource = new Map();
125
+ edges.forEach((edge) => {
126
+ if (!isLoopBackEdge(edge)) {
127
+ targetsBySource.set(edge.source, [...(targetsBySource.get(edge.source) || []), edge.target]);
128
+ }
129
+ });
130
+ const branchesByNodeId = new Map();
131
+ nodes.forEach((gate) => {
132
+ const branchTargets = gate.type === 'general-if-statement'
133
+ ? Object.entries((0, exports.getIfBranches)(gate.id, edges))
134
+ : gate.type === 'general-switch'
135
+ ? (0, exports.getSwitchCases)(gate.id, edges).map(({ caseId, targetId }) => [caseId, targetId])
136
+ : [];
137
+ branchTargets.forEach(([branch, targetId]) => {
138
+ if (!targetId) {
139
+ return;
140
+ }
141
+ collectBranchNodeIds(targetId, targetsBySource, gate.id).forEach((id) => {
142
+ const branches = branchesByNodeId.get(id) || [];
143
+ branches.push({ gateId: gate.id, branch });
144
+ branchesByNodeId.set(id, branches);
145
+ });
146
+ });
147
+ });
148
+ return (a, b) => {
149
+ const branchesOfB = branchesByNodeId.get(b) || [];
150
+ return (branchesByNodeId.get(a) || []).some((x) => branchesOfB.some((y) => x.gateId === y.gateId && x.branch !== y.branch));
151
+ };
152
+ };
153
+ exports.getNeverRunTogether = getNeverRunTogether;
154
+ /**
155
+ * Kahn's order, the lowest `stepNumber` first among the nodes ready to run.
156
+ *
157
+ * With `sideOf` (the segment splitter), a ready node that stays on the side
158
+ * the previous node ran on may go ahead of lower-step nodes on the other side —
159
+ * one client/server switch fewer, so one server round trip fewer — but only of
160
+ * nodes it never runs together with. A refusal branch's toast waits for the
161
+ * main chain's server steps; two steps that both run keep their order, which
162
+ * custom JavaScript reads `params` by.
163
+ */
164
+ const getTopologicalOrder = (nodes, edges, sideOf) => {
165
+ const nodeIds = new Set(nodes.map((n) => n.id));
166
+ const adjacency = (0, exports.getDependents)(nodes, edges);
167
+ const inDegree = {};
168
+ const nodeIdArr = Array.from(nodeIds);
169
+ nodeIdArr.forEach((id) => {
170
+ inDegree[id] = 0;
171
+ });
172
+ nodeIdArr.forEach((id) => adjacency[id].forEach((dependent) => {
173
+ inDegree[dependent]++;
174
+ }));
90
175
  const queue = [];
91
176
  nodeIdArr.forEach((id) => {
92
177
  if (inDegree[id] === 0) {
93
178
  queue.push(id);
94
179
  }
95
180
  });
181
+ const nodeById = new Map(nodes.map((n) => [n.id, n]));
182
+ const neverRunTogether = sideOf ? (0, exports.getNeverRunTogether)(nodes, edges) : null;
183
+ let currentSide = null;
184
+ const staysOnCurrentSide = (id) => {
185
+ const side = sideOf(nodeById.get(id));
186
+ return side === null || side === currentSide;
187
+ };
188
+ const nextIndex = () => {
189
+ if (!sideOf || currentSide === null || staysOnCurrentSide(queue[0])) {
190
+ return 0;
191
+ }
192
+ const index = queue.findIndex((id, i) => i > 0 &&
193
+ staysOnCurrentSide(id) &&
194
+ queue.slice(0, i).every((ahead) => neverRunTogether(id, ahead)));
195
+ return Math.max(index, 0);
196
+ };
96
197
  const order = [];
97
198
  while (queue.length > 0) {
98
199
  queue.sort((a, b) => {
@@ -100,7 +201,8 @@ const getTopologicalOrder = (nodes, edges) => {
100
201
  const nodeB = nodes.find((n) => n.id === b);
101
202
  return ((nodeA === null || nodeA === void 0 ? void 0 : nodeA.stepNumber) || 0) - ((nodeB === null || nodeB === void 0 ? void 0 : nodeB.stepNumber) || 0);
102
203
  });
103
- const current = queue.shift();
204
+ const [current] = queue.splice(nextIndex(), 1);
205
+ currentSide = (sideOf && sideOf(nodeById.get(current))) || currentSide;
104
206
  order.push(current);
105
207
  for (const neighbor of adjacency[current] || []) {
106
208
  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 — and the customer is never
13
- * emailed.
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;AA2DhE,eAAO,MAAM,gCAAgC,aAAc,mBAAmB,KAAG,MAsYhF,CAAA;AAKD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kCAAkC,QAAO,MAmNrD,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAsF9C,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"}