@teleporthq/teleport-plugin-next-workflows 0.43.67 → 0.43.68

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 (787) hide show
  1. package/__tests__/_helpers/bind-workflow-utils.ts +16 -1
  2. package/__tests__/_helpers/fake-fetch.ts +96 -0
  3. package/__tests__/_helpers/fake-stripe.ts +52 -0
  4. package/__tests__/_helpers/load-handler.ts +22 -3
  5. package/__tests__/_helpers/load-invoice-route.ts +75 -0
  6. package/__tests__/_helpers/load-payment-drivers.ts +69 -0
  7. package/__tests__/_helpers/load-server-runtime.ts +33 -0
  8. package/__tests__/_helpers/run-generated-middleware.ts +50 -9
  9. package/__tests__/admin-form-hydration-target.test.ts +39 -0
  10. package/__tests__/admin-form-row-hydration.test.ts +58 -0
  11. package/__tests__/ai-select-database-data-handler.test.ts +14 -3
  12. package/__tests__/api-route-file-name-segments.test.ts +33 -0
  13. package/__tests__/app-secret-env.test.ts +55 -0
  14. package/__tests__/auth-env-secret-preservation.test.ts +22 -3
  15. package/__tests__/auth-nextauth-url.test.ts +134 -50
  16. package/__tests__/cart-add-item-kinds.test.ts +259 -0
  17. package/__tests__/cart-add-item-line-fields.test.ts +328 -0
  18. package/__tests__/cart-availability-add-to-cart.test.ts +108 -0
  19. package/__tests__/cart-get-total-discounts.test.ts +499 -0
  20. package/__tests__/cart-get-total-product-options.test.ts +195 -0
  21. package/__tests__/cart-get-total-subscriptions.test.ts +221 -0
  22. package/__tests__/cart-price-order.test.ts +283 -0
  23. package/__tests__/cart-update-item-quantity-recurring.test.ts +75 -0
  24. package/__tests__/client-loop-current-item.test.ts +164 -0
  25. package/__tests__/cron-route-loop-custom-node.test.ts +123 -0
  26. package/__tests__/cron-route-loop-templateparams.test.ts +7 -0
  27. package/__tests__/cron-route-verification.test.ts +252 -0
  28. package/__tests__/custom-js-runtime-base-url.test.ts +64 -0
  29. package/__tests__/custom-nodes-admin-module.test.ts +310 -0
  30. package/__tests__/data-api-browser-reads.test.ts +341 -0
  31. package/__tests__/data-api-low-stock-autofire.test.ts +67 -17
  32. package/__tests__/data-api-optional-feature-columns.test.ts +240 -0
  33. package/__tests__/data-api-protected-tables.test.ts +948 -0
  34. package/__tests__/data-node-not-awaited.test.ts +7 -3
  35. package/__tests__/data-write-missing-filter.test.ts +119 -0
  36. package/__tests__/ecommerce-rewriter-product-options.test.ts +143 -0
  37. package/__tests__/email-locale-senders.test.ts +1 -1
  38. package/__tests__/file-storage-upload-picked-files.test.ts +20 -0
  39. package/__tests__/input-debounce-per-field.test.ts +141 -0
  40. package/__tests__/internal-request-headers.test.ts +7 -3
  41. package/__tests__/invoice-data-access-replace.test.ts +340 -0
  42. package/__tests__/invoice-delivery-fee.test.ts +3 -2
  43. package/__tests__/invoice-generate-hydration.test.ts +20 -12
  44. package/__tests__/invoice-order-items-settle.test.ts +51 -46
  45. package/__tests__/invoice-product-options.test.ts +177 -0
  46. package/__tests__/invoice-regenerate-route.test.ts +488 -0
  47. package/__tests__/invoice-regional-tax.test.ts +3 -2
  48. package/__tests__/invoice-reservation.test.ts +195 -0
  49. package/__tests__/invoice-route-access.test.ts +275 -0
  50. package/__tests__/invoice-self-call-origin.test.ts +117 -0
  51. package/__tests__/invoice-tender.test.ts +550 -0
  52. package/__tests__/legacy-webhook-self-calls.test.ts +187 -0
  53. package/__tests__/locale-aware-redirects.test.ts +55 -26
  54. package/__tests__/loop-collection-unwrap.test.ts +6 -1
  55. package/__tests__/middleware-subscriber-access.test.ts +269 -0
  56. package/__tests__/payment-charge-user-earlier-attempt.test.ts +267 -0
  57. package/__tests__/payment-charge-user-handler-serialization.test.ts +47 -82
  58. package/__tests__/payment-charge-user-line-descriptions.test.ts +124 -0
  59. package/__tests__/payment-charge-user-report-refusal.test.ts +105 -0
  60. package/__tests__/payment-close-checkout-node.test.ts +127 -0
  61. package/__tests__/payment-driver-close-checkout.test.ts +1163 -0
  62. package/__tests__/payment-driver-coingate.test.ts +470 -0
  63. package/__tests__/payment-driver-inspect-checkout.test.ts +648 -0
  64. package/__tests__/payment-driver-mollie.test.ts +864 -0
  65. package/__tests__/payment-driver-paddle.test.ts +870 -0
  66. package/__tests__/payment-driver-paypal-capture.test.ts +158 -0
  67. package/__tests__/payment-driver-paypal-webhook.test.ts +367 -0
  68. package/__tests__/payment-driver-razorpay.test.ts +895 -0
  69. package/__tests__/payment-driver-square.test.ts +977 -0
  70. package/__tests__/payment-driver-stripe.test.ts +267 -0
  71. package/__tests__/payment-drivers-module.test.ts +429 -0
  72. package/__tests__/payment-legacy-webhook-routes.test.ts +588 -0
  73. package/__tests__/payment-redirect-and-order-notification.test.ts +98 -39
  74. package/__tests__/payment-refund.test.ts +523 -22
  75. package/__tests__/payment-subscription-nodes.test.ts +1360 -0
  76. package/__tests__/payment-webhook-route.test.ts +523 -0
  77. package/__tests__/paypal-webhook-signature-verification.test.ts +205 -0
  78. package/__tests__/prune-context-oversized-leaf.test.ts +1 -0
  79. package/__tests__/prune-context-state-keys.test.ts +89 -0
  80. package/__tests__/push-node-handlers.test.ts +291 -0
  81. package/__tests__/route-changed-trigger.test.ts +40 -0
  82. package/__tests__/runtime-storage-upload-access.test.ts +255 -0
  83. package/__tests__/security-runtime-shadow.test.ts +103 -1
  84. package/__tests__/segment-reply-changed-keys.test.ts +146 -0
  85. package/__tests__/segment-state-keys-emission.test.ts +185 -0
  86. package/__tests__/segment-state-needs.test.ts +102 -0
  87. package/__tests__/server-segment-context-integrity.test.ts +210 -0
  88. package/__tests__/server-step-signing.test.ts +371 -0
  89. package/__tests__/session-cookie-resolver.test.ts +59 -0
  90. package/__tests__/stock-decrement-audit.test.ts +17 -0
  91. package/__tests__/subscriber-access-route.test.ts +406 -0
  92. package/__tests__/webhook-delivery-lease.test.ts +316 -0
  93. package/__tests__/workflow-auth-guard.test.ts +253 -2
  94. package/dist/cjs/admin-form-hydration.d.ts +10 -0
  95. package/dist/cjs/admin-form-hydration.d.ts.map +1 -0
  96. package/dist/cjs/admin-form-hydration.js +25 -0
  97. package/dist/cjs/admin-form-hydration.js.map +1 -0
  98. package/dist/cjs/api-route-generator.d.ts +19 -3
  99. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  100. package/dist/cjs/api-route-generator.js +190 -70
  101. package/dist/cjs/api-route-generator.js.map +1 -1
  102. package/dist/cjs/auth-generator.d.ts +4 -1
  103. package/dist/cjs/auth-generator.d.ts.map +1 -1
  104. package/dist/cjs/auth-generator.js +241 -62
  105. package/dist/cjs/auth-generator.js.map +1 -1
  106. package/dist/cjs/auth-return/signed-in-destination-code.d.ts +17 -0
  107. package/dist/cjs/auth-return/signed-in-destination-code.d.ts.map +1 -0
  108. package/dist/cjs/auth-return/signed-in-destination-code.js +37 -0
  109. package/dist/cjs/auth-return/signed-in-destination-code.js.map +1 -0
  110. package/dist/cjs/cart-pricing-preamble.d.ts +12 -0
  111. package/dist/cjs/cart-pricing-preamble.d.ts.map +1 -0
  112. package/dist/cjs/cart-pricing-preamble.js +23 -0
  113. package/dist/cjs/cart-pricing-preamble.js.map +1 -0
  114. package/dist/cjs/cron-request-verification.d.ts +24 -0
  115. package/dist/cjs/cron-request-verification.d.ts.map +1 -0
  116. package/dist/cjs/cron-request-verification.js +84 -0
  117. package/dist/cjs/cron-request-verification.js.map +1 -0
  118. package/dist/cjs/custom-node-modules.d.ts +30 -0
  119. package/dist/cjs/custom-node-modules.d.ts.map +1 -0
  120. package/dist/cjs/custom-node-modules.js +90 -0
  121. package/dist/cjs/custom-node-modules.js.map +1 -0
  122. package/dist/cjs/data-api-route-generator.d.ts +27 -0
  123. package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
  124. package/dist/cjs/data-api-route-generator.js +366 -29
  125. package/dist/cjs/data-api-route-generator.js.map +1 -1
  126. package/dist/cjs/ecommerce/cart-availability.d.ts.map +1 -1
  127. package/dist/cjs/ecommerce/cart-availability.js +22 -13
  128. package/dist/cjs/ecommerce/cart-availability.js.map +1 -1
  129. package/dist/cjs/ecommerce/stock-decrement.d.ts +2 -1
  130. package/dist/cjs/ecommerce/stock-decrement.d.ts.map +1 -1
  131. package/dist/cjs/ecommerce/stock-decrement.js +6 -0
  132. package/dist/cjs/ecommerce/stock-decrement.js.map +1 -1
  133. package/dist/cjs/executor-generator.d.ts +0 -1
  134. package/dist/cjs/executor-generator.d.ts.map +1 -1
  135. package/dist/cjs/executor-generator.js +213 -20
  136. package/dist/cjs/executor-generator.js.map +1 -1
  137. package/dist/cjs/index.d.ts +12 -4
  138. package/dist/cjs/index.d.ts.map +1 -1
  139. package/dist/cjs/index.js +25 -2
  140. package/dist/cjs/index.js.map +1 -1
  141. package/dist/cjs/invoice/api-routes-code.d.ts +26 -0
  142. package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
  143. package/dist/cjs/invoice/api-routes-code.js +423 -391
  144. package/dist/cjs/invoice/api-routes-code.js.map +1 -1
  145. package/dist/cjs/invoice/data-access-code.d.ts.map +1 -1
  146. package/dist/cjs/invoice/data-access-code.js +420 -107
  147. package/dist/cjs/invoice/data-access-code.js.map +1 -1
  148. package/dist/cjs/invoice/index.d.ts.map +1 -1
  149. package/dist/cjs/invoice/index.js +24 -0
  150. package/dist/cjs/invoice/index.js.map +1 -1
  151. package/dist/cjs/invoice/invoice-assembly-code.d.ts +12 -0
  152. package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -0
  153. package/dist/cjs/invoice/invoice-assembly-code.js +517 -0
  154. package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -0
  155. package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
  156. package/dist/cjs/invoice/invoice-html-code.js +111 -9
  157. package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
  158. package/dist/cjs/invoice/pdf-service-client-code.d.ts.map +1 -1
  159. package/dist/cjs/invoice/pdf-service-client-code.js +3 -4
  160. package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
  161. package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
  162. package/dist/cjs/nodes/account/account-login.js +4 -3
  163. package/dist/cjs/nodes/account/account-login.js.map +1 -1
  164. package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
  165. package/dist/cjs/nodes/account/account-signup.js +7 -4
  166. package/dist/cjs/nodes/account/account-signup.js.map +1 -1
  167. package/dist/cjs/nodes/ai/ai-select-database-data.d.ts.map +1 -1
  168. package/dist/cjs/nodes/ai/ai-select-database-data.js +6 -1
  169. package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
  170. package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts +9 -0
  171. package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
  172. package/dist/cjs/nodes/browser/browser-get-push-subscription.js +25 -0
  173. package/dist/cjs/nodes/browser/browser-get-push-subscription.js.map +1 -0
  174. package/dist/cjs/nodes/browser/browser-show-notification.d.ts +10 -0
  175. package/dist/cjs/nodes/browser/browser-show-notification.d.ts.map +1 -1
  176. package/dist/cjs/nodes/browser/browser-show-notification.js +65 -40
  177. package/dist/cjs/nodes/browser/browser-show-notification.js.map +1 -1
  178. package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
  179. package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
  180. package/dist/cjs/nodes/browser/browser-subscribe-to-push.js +21 -31
  181. package/dist/cjs/nodes/browser/browser-subscribe-to-push.js.map +1 -1
  182. package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
  183. package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
  184. package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js +24 -0
  185. package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
  186. package/dist/cjs/nodes/browser/push-api-access.d.ts +12 -0
  187. package/dist/cjs/nodes/browser/push-api-access.d.ts.map +1 -0
  188. package/dist/cjs/nodes/browser/push-api-access.js +19 -0
  189. package/dist/cjs/nodes/browser/push-api-access.js.map +1 -0
  190. package/dist/cjs/nodes/cart/cart-add-item.d.ts.map +1 -1
  191. package/dist/cjs/nodes/cart/cart-add-item.js +174 -10
  192. package/dist/cjs/nodes/cart/cart-add-item.js.map +1 -1
  193. package/dist/cjs/nodes/cart/cart-clear.d.ts.map +1 -1
  194. package/dist/cjs/nodes/cart/cart-clear.js +11 -0
  195. package/dist/cjs/nodes/cart/cart-clear.js.map +1 -1
  196. package/dist/cjs/nodes/cart/cart-get-total.d.ts.map +1 -1
  197. package/dist/cjs/nodes/cart/cart-get-total.js +260 -3
  198. package/dist/cjs/nodes/cart/cart-get-total.js.map +1 -1
  199. package/dist/cjs/nodes/cart/cart-price-order.d.ts +3 -0
  200. package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -0
  201. package/dist/cjs/nodes/cart/cart-price-order.js +281 -0
  202. package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -0
  203. package/dist/cjs/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
  204. package/dist/cjs/nodes/cart/cart-update-item-quantity.js +7 -0
  205. package/dist/cjs/nodes/cart/cart-update-item-quantity.js.map +1 -1
  206. package/dist/cjs/nodes/data/data-count.d.ts.map +1 -1
  207. package/dist/cjs/nodes/data/data-count.js +6 -1
  208. package/dist/cjs/nodes/data/data-count.js.map +1 -1
  209. package/dist/cjs/nodes/data/data-create-item.d.ts.map +1 -1
  210. package/dist/cjs/nodes/data/data-create-item.js +11 -1
  211. package/dist/cjs/nodes/data/data-create-item.js.map +1 -1
  212. package/dist/cjs/nodes/data/data-delete-item.d.ts.map +1 -1
  213. package/dist/cjs/nodes/data/data-delete-item.js +29 -0
  214. package/dist/cjs/nodes/data/data-delete-item.js.map +1 -1
  215. package/dist/cjs/nodes/data/data-raw-query.d.ts.map +1 -1
  216. package/dist/cjs/nodes/data/data-raw-query.js +6 -1
  217. package/dist/cjs/nodes/data/data-raw-query.js.map +1 -1
  218. package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
  219. package/dist/cjs/nodes/data/data-select.js +6 -1
  220. package/dist/cjs/nodes/data/data-select.js.map +1 -1
  221. package/dist/cjs/nodes/data/data-update-item.d.ts.map +1 -1
  222. package/dist/cjs/nodes/data/data-update-item.js +29 -0
  223. package/dist/cjs/nodes/data/data-update-item.js.map +1 -1
  224. package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
  225. package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
  226. package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
  227. package/dist/cjs/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
  228. package/dist/cjs/nodes/file-storage/file-storage-upload.js +7 -0
  229. package/dist/cjs/nodes/file-storage/file-storage-upload.js.map +1 -1
  230. package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
  231. package/dist/cjs/nodes/general/general-custom-js.js +21 -5
  232. package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
  233. package/dist/cjs/nodes/index.d.ts.map +1 -1
  234. package/dist/cjs/nodes/index.js +9 -4
  235. package/dist/cjs/nodes/index.js.map +1 -1
  236. package/dist/cjs/nodes/payment/payment-billing-portal.d.ts +3 -0
  237. package/dist/cjs/nodes/payment/payment-billing-portal.d.ts.map +1 -0
  238. package/dist/cjs/nodes/payment/payment-billing-portal.js +52 -0
  239. package/dist/cjs/nodes/payment/payment-billing-portal.js.map +1 -0
  240. package/dist/cjs/nodes/payment/payment-charge-user.d.ts.map +1 -1
  241. package/dist/cjs/nodes/payment/payment-charge-user.js +227 -360
  242. package/dist/cjs/nodes/payment/payment-charge-user.js.map +1 -1
  243. package/dist/cjs/nodes/payment/payment-close-checkout.d.ts +3 -0
  244. package/dist/cjs/nodes/payment/payment-close-checkout.d.ts.map +1 -0
  245. package/dist/cjs/nodes/payment/payment-close-checkout.js +141 -0
  246. package/dist/cjs/nodes/payment/payment-close-checkout.js.map +1 -0
  247. package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
  248. package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
  249. package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js +67 -0
  250. package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
  251. package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts +3 -0
  252. package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
  253. package/dist/cjs/nodes/payment/payment-manage-subscription.js +89 -0
  254. package/dist/cjs/nodes/payment/payment-manage-subscription.js.map +1 -0
  255. package/dist/cjs/nodes/payment/payment-refund.d.ts.map +1 -1
  256. package/dist/cjs/nodes/payment/payment-refund.js +50 -404
  257. package/dist/cjs/nodes/payment/payment-refund.js.map +1 -1
  258. package/dist/cjs/nodes/push/push-send-notification.d.ts +14 -0
  259. package/dist/cjs/nodes/push/push-send-notification.d.ts.map +1 -0
  260. package/dist/cjs/nodes/push/push-send-notification.js +83 -0
  261. package/dist/cjs/nodes/push/push-send-notification.js.map +1 -0
  262. package/dist/cjs/payments/drivers/coingate-driver-code.d.ts +16 -0
  263. package/dist/cjs/payments/drivers/coingate-driver-code.d.ts.map +1 -0
  264. package/dist/cjs/payments/drivers/coingate-driver-code.js +471 -0
  265. package/dist/cjs/payments/drivers/coingate-driver-code.js.map +1 -0
  266. package/dist/cjs/payments/drivers/mollie-driver-code.d.ts +16 -0
  267. package/dist/cjs/payments/drivers/mollie-driver-code.d.ts.map +1 -0
  268. package/dist/cjs/payments/drivers/mollie-driver-code.js +623 -0
  269. package/dist/cjs/payments/drivers/mollie-driver-code.js.map +1 -0
  270. package/dist/cjs/payments/drivers/paddle-driver-code.d.ts +12 -0
  271. package/dist/cjs/payments/drivers/paddle-driver-code.d.ts.map +1 -0
  272. package/dist/cjs/payments/drivers/paddle-driver-code.js +683 -0
  273. package/dist/cjs/payments/drivers/paddle-driver-code.js.map +1 -0
  274. package/dist/cjs/payments/drivers/paypal-driver-code.d.ts +12 -0
  275. package/dist/cjs/payments/drivers/paypal-driver-code.d.ts.map +1 -0
  276. package/dist/cjs/payments/drivers/paypal-driver-code.js +1261 -0
  277. package/dist/cjs/payments/drivers/paypal-driver-code.js.map +1 -0
  278. package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts +12 -0
  279. package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
  280. package/dist/cjs/payments/drivers/razorpay-driver-code.js +732 -0
  281. package/dist/cjs/payments/drivers/razorpay-driver-code.js.map +1 -0
  282. package/dist/cjs/payments/drivers/square-driver-code.d.ts +14 -0
  283. package/dist/cjs/payments/drivers/square-driver-code.d.ts.map +1 -0
  284. package/dist/cjs/payments/drivers/square-driver-code.js +931 -0
  285. package/dist/cjs/payments/drivers/square-driver-code.js.map +1 -0
  286. package/dist/cjs/payments/drivers/stripe-driver-code.d.ts +12 -0
  287. package/dist/cjs/payments/drivers/stripe-driver-code.d.ts.map +1 -0
  288. package/dist/cjs/payments/drivers/stripe-driver-code.js +778 -0
  289. package/dist/cjs/payments/drivers/stripe-driver-code.js.map +1 -0
  290. package/dist/cjs/payments/index.d.ts +66 -0
  291. package/dist/cjs/payments/index.d.ts.map +1 -0
  292. package/dist/cjs/payments/index.js +175 -0
  293. package/dist/cjs/payments/index.js.map +1 -0
  294. package/dist/cjs/payments/payment-core-code.d.ts +19 -0
  295. package/dist/cjs/payments/payment-core-code.d.ts.map +1 -0
  296. package/dist/cjs/payments/payment-core-code.js +422 -0
  297. package/dist/cjs/payments/payment-core-code.js.map +1 -0
  298. package/dist/cjs/payments/payment-driver-code-map.d.ts +4 -0
  299. package/dist/cjs/payments/payment-driver-code-map.d.ts.map +1 -0
  300. package/dist/cjs/payments/payment-driver-code-map.js +21 -0
  301. package/dist/cjs/payments/payment-driver-code-map.js.map +1 -0
  302. package/dist/cjs/payments/payment-drivers-scope.d.ts +35 -0
  303. package/dist/cjs/payments/payment-drivers-scope.d.ts.map +1 -0
  304. package/dist/cjs/payments/payment-drivers-scope.js +56 -0
  305. package/dist/cjs/payments/payment-drivers-scope.js.map +1 -0
  306. package/dist/cjs/payments/payment-registry-code.d.ts +8 -0
  307. package/dist/cjs/payments/payment-registry-code.d.ts.map +1 -0
  308. package/dist/cjs/payments/payment-registry-code.js +41 -0
  309. package/dist/cjs/payments/payment-registry-code.js.map +1 -0
  310. package/dist/cjs/pg-client-code.d.ts +10 -0
  311. package/dist/cjs/pg-client-code.d.ts.map +1 -1
  312. package/dist/cjs/pg-client-code.js +27 -1
  313. package/dist/cjs/pg-client-code.js.map +1 -1
  314. package/dist/cjs/runtime-storage-generator.d.ts +28 -0
  315. package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
  316. package/dist/cjs/runtime-storage-generator.js +240 -5
  317. package/dist/cjs/runtime-storage-generator.js.map +1 -1
  318. package/dist/cjs/secret-collector.d.ts.map +1 -1
  319. package/dist/cjs/secret-collector.js +8 -3
  320. package/dist/cjs/secret-collector.js.map +1 -1
  321. package/dist/cjs/security-scanner.d.ts +10 -1
  322. package/dist/cjs/security-scanner.d.ts.map +1 -1
  323. package/dist/cjs/security-scanner.js +19 -1
  324. package/dist/cjs/security-scanner.js.map +1 -1
  325. package/dist/cjs/segment-context-needs.d.ts +38 -0
  326. package/dist/cjs/segment-context-needs.d.ts.map +1 -0
  327. package/dist/cjs/segment-context-needs.js +129 -0
  328. package/dist/cjs/segment-context-needs.js.map +1 -0
  329. package/dist/cjs/segment-splitter.d.ts.map +1 -1
  330. package/dist/cjs/segment-splitter.js +6 -1
  331. package/dist/cjs/segment-splitter.js.map +1 -1
  332. package/dist/cjs/segment-trust.d.ts +50 -0
  333. package/dist/cjs/segment-trust.d.ts.map +1 -0
  334. package/dist/cjs/segment-trust.js +115 -0
  335. package/dist/cjs/segment-trust.js.map +1 -0
  336. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +19 -0
  337. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  338. package/dist/cjs/sent-email-log/sent-email-log-code.js +1 -24
  339. package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
  340. package/dist/cjs/server-runtime-code.d.ts +34 -0
  341. package/dist/cjs/server-runtime-code.d.ts.map +1 -0
  342. package/dist/cjs/server-runtime-code.js +303 -0
  343. package/dist/cjs/server-runtime-code.js.map +1 -0
  344. package/dist/cjs/session-cookie-resolver.d.ts +3 -78
  345. package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
  346. package/dist/cjs/session-cookie-resolver.js +7 -276
  347. package/dist/cjs/session-cookie-resolver.js.map +1 -1
  348. package/dist/cjs/subscriber-access-route-generator.d.ts +71 -0
  349. package/dist/cjs/subscriber-access-route-generator.d.ts.map +1 -0
  350. package/dist/cjs/subscriber-access-route-generator.js +301 -0
  351. package/dist/cjs/subscriber-access-route-generator.js.map +1 -0
  352. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  353. package/dist/cjs/types.d.ts +6 -0
  354. package/dist/cjs/types.d.ts.map +1 -1
  355. package/dist/cjs/webhook-delivery-lease/index.d.ts +8 -0
  356. package/dist/cjs/webhook-delivery-lease/index.d.ts.map +1 -0
  357. package/dist/cjs/webhook-delivery-lease/index.js +41 -0
  358. package/dist/cjs/webhook-delivery-lease/index.js.map +1 -0
  359. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
  360. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
  361. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +151 -0
  362. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
  363. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
  364. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
  365. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js +19 -0
  366. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
  367. package/dist/cjs/webhook-generator.d.ts +1 -1
  368. package/dist/cjs/webhook-generator.d.ts.map +1 -1
  369. package/dist/cjs/webhook-generator.js +342 -254
  370. package/dist/cjs/webhook-generator.js.map +1 -1
  371. package/dist/cjs/webhook-signature-verification.d.ts +17 -1
  372. package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
  373. package/dist/cjs/webhook-signature-verification.js +182 -27
  374. package/dist/cjs/webhook-signature-verification.js.map +1 -1
  375. package/dist/cjs/workflow-auth-generator.d.ts +9 -6
  376. package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
  377. package/dist/cjs/workflow-auth-generator.js +133 -29
  378. package/dist/cjs/workflow-auth-generator.js.map +1 -1
  379. package/dist/cjs/workflow-component-plugin.d.ts.map +1 -1
  380. package/dist/cjs/workflow-component-plugin.js +65 -28
  381. package/dist/cjs/workflow-component-plugin.js.map +1 -1
  382. package/dist/cjs/workflow-project-plugin.d.ts +13 -0
  383. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  384. package/dist/cjs/workflow-project-plugin.js +215 -65
  385. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  386. package/dist/esm/admin-form-hydration.d.ts +10 -0
  387. package/dist/esm/admin-form-hydration.d.ts.map +1 -0
  388. package/dist/esm/admin-form-hydration.js +21 -0
  389. package/dist/esm/admin-form-hydration.js.map +1 -0
  390. package/dist/esm/api-route-generator.d.ts +19 -3
  391. package/dist/esm/api-route-generator.d.ts.map +1 -1
  392. package/dist/esm/api-route-generator.js +189 -70
  393. package/dist/esm/api-route-generator.js.map +1 -1
  394. package/dist/esm/auth-generator.d.ts +4 -1
  395. package/dist/esm/auth-generator.d.ts.map +1 -1
  396. package/dist/esm/auth-generator.js +241 -62
  397. package/dist/esm/auth-generator.js.map +1 -1
  398. package/dist/esm/auth-return/signed-in-destination-code.d.ts +17 -0
  399. package/dist/esm/auth-return/signed-in-destination-code.d.ts.map +1 -0
  400. package/dist/esm/auth-return/signed-in-destination-code.js +33 -0
  401. package/dist/esm/auth-return/signed-in-destination-code.js.map +1 -0
  402. package/dist/esm/cart-pricing-preamble.d.ts +12 -0
  403. package/dist/esm/cart-pricing-preamble.d.ts.map +1 -0
  404. package/dist/esm/cart-pricing-preamble.js +19 -0
  405. package/dist/esm/cart-pricing-preamble.js.map +1 -0
  406. package/dist/esm/cron-request-verification.d.ts +24 -0
  407. package/dist/esm/cron-request-verification.d.ts.map +1 -0
  408. package/dist/esm/cron-request-verification.js +80 -0
  409. package/dist/esm/cron-request-verification.js.map +1 -0
  410. package/dist/esm/custom-node-modules.d.ts +30 -0
  411. package/dist/esm/custom-node-modules.d.ts.map +1 -0
  412. package/dist/esm/custom-node-modules.js +84 -0
  413. package/dist/esm/custom-node-modules.js.map +1 -0
  414. package/dist/esm/data-api-route-generator.d.ts +27 -0
  415. package/dist/esm/data-api-route-generator.d.ts.map +1 -1
  416. package/dist/esm/data-api-route-generator.js +365 -28
  417. package/dist/esm/data-api-route-generator.js.map +1 -1
  418. package/dist/esm/ecommerce/cart-availability.d.ts.map +1 -1
  419. package/dist/esm/ecommerce/cart-availability.js +22 -13
  420. package/dist/esm/ecommerce/cart-availability.js.map +1 -1
  421. package/dist/esm/ecommerce/stock-decrement.d.ts +2 -1
  422. package/dist/esm/ecommerce/stock-decrement.d.ts.map +1 -1
  423. package/dist/esm/ecommerce/stock-decrement.js +6 -0
  424. package/dist/esm/ecommerce/stock-decrement.js.map +1 -1
  425. package/dist/esm/executor-generator.d.ts +0 -1
  426. package/dist/esm/executor-generator.d.ts.map +1 -1
  427. package/dist/esm/executor-generator.js +212 -18
  428. package/dist/esm/executor-generator.js.map +1 -1
  429. package/dist/esm/index.d.ts +12 -4
  430. package/dist/esm/index.d.ts.map +1 -1
  431. package/dist/esm/index.js +10 -4
  432. package/dist/esm/index.js.map +1 -1
  433. package/dist/esm/invoice/api-routes-code.d.ts +26 -0
  434. package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
  435. package/dist/esm/invoice/api-routes-code.js +421 -390
  436. package/dist/esm/invoice/api-routes-code.js.map +1 -1
  437. package/dist/esm/invoice/data-access-code.d.ts.map +1 -1
  438. package/dist/esm/invoice/data-access-code.js +420 -107
  439. package/dist/esm/invoice/data-access-code.js.map +1 -1
  440. package/dist/esm/invoice/index.d.ts.map +1 -1
  441. package/dist/esm/invoice/index.js +25 -1
  442. package/dist/esm/invoice/index.js.map +1 -1
  443. package/dist/esm/invoice/invoice-assembly-code.d.ts +12 -0
  444. package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -0
  445. package/dist/esm/invoice/invoice-assembly-code.js +513 -0
  446. package/dist/esm/invoice/invoice-assembly-code.js.map +1 -0
  447. package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
  448. package/dist/esm/invoice/invoice-html-code.js +111 -9
  449. package/dist/esm/invoice/invoice-html-code.js.map +1 -1
  450. package/dist/esm/invoice/pdf-service-client-code.d.ts.map +1 -1
  451. package/dist/esm/invoice/pdf-service-client-code.js +3 -4
  452. package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
  453. package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
  454. package/dist/esm/nodes/account/account-login.js +4 -3
  455. package/dist/esm/nodes/account/account-login.js.map +1 -1
  456. package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
  457. package/dist/esm/nodes/account/account-signup.js +7 -4
  458. package/dist/esm/nodes/account/account-signup.js.map +1 -1
  459. package/dist/esm/nodes/ai/ai-select-database-data.d.ts.map +1 -1
  460. package/dist/esm/nodes/ai/ai-select-database-data.js +6 -1
  461. package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
  462. package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts +9 -0
  463. package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
  464. package/dist/esm/nodes/browser/browser-get-push-subscription.js +22 -0
  465. package/dist/esm/nodes/browser/browser-get-push-subscription.js.map +1 -0
  466. package/dist/esm/nodes/browser/browser-show-notification.d.ts +10 -0
  467. package/dist/esm/nodes/browser/browser-show-notification.d.ts.map +1 -1
  468. package/dist/esm/nodes/browser/browser-show-notification.js +65 -40
  469. package/dist/esm/nodes/browser/browser-show-notification.js.map +1 -1
  470. package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
  471. package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
  472. package/dist/esm/nodes/browser/browser-subscribe-to-push.js +21 -31
  473. package/dist/esm/nodes/browser/browser-subscribe-to-push.js.map +1 -1
  474. package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
  475. package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
  476. package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js +21 -0
  477. package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
  478. package/dist/esm/nodes/browser/push-api-access.d.ts +12 -0
  479. package/dist/esm/nodes/browser/push-api-access.d.ts.map +1 -0
  480. package/dist/esm/nodes/browser/push-api-access.js +13 -0
  481. package/dist/esm/nodes/browser/push-api-access.js.map +1 -0
  482. package/dist/esm/nodes/cart/cart-add-item.d.ts.map +1 -1
  483. package/dist/esm/nodes/cart/cart-add-item.js +174 -10
  484. package/dist/esm/nodes/cart/cart-add-item.js.map +1 -1
  485. package/dist/esm/nodes/cart/cart-clear.d.ts.map +1 -1
  486. package/dist/esm/nodes/cart/cart-clear.js +11 -0
  487. package/dist/esm/nodes/cart/cart-clear.js.map +1 -1
  488. package/dist/esm/nodes/cart/cart-get-total.d.ts.map +1 -1
  489. package/dist/esm/nodes/cart/cart-get-total.js +261 -4
  490. package/dist/esm/nodes/cart/cart-get-total.js.map +1 -1
  491. package/dist/esm/nodes/cart/cart-price-order.d.ts +3 -0
  492. package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -0
  493. package/dist/esm/nodes/cart/cart-price-order.js +278 -0
  494. package/dist/esm/nodes/cart/cart-price-order.js.map +1 -0
  495. package/dist/esm/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
  496. package/dist/esm/nodes/cart/cart-update-item-quantity.js +7 -0
  497. package/dist/esm/nodes/cart/cart-update-item-quantity.js.map +1 -1
  498. package/dist/esm/nodes/data/data-count.d.ts.map +1 -1
  499. package/dist/esm/nodes/data/data-count.js +6 -1
  500. package/dist/esm/nodes/data/data-count.js.map +1 -1
  501. package/dist/esm/nodes/data/data-create-item.d.ts.map +1 -1
  502. package/dist/esm/nodes/data/data-create-item.js +11 -1
  503. package/dist/esm/nodes/data/data-create-item.js.map +1 -1
  504. package/dist/esm/nodes/data/data-delete-item.d.ts.map +1 -1
  505. package/dist/esm/nodes/data/data-delete-item.js +29 -0
  506. package/dist/esm/nodes/data/data-delete-item.js.map +1 -1
  507. package/dist/esm/nodes/data/data-raw-query.d.ts.map +1 -1
  508. package/dist/esm/nodes/data/data-raw-query.js +6 -1
  509. package/dist/esm/nodes/data/data-raw-query.js.map +1 -1
  510. package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
  511. package/dist/esm/nodes/data/data-select.js +6 -1
  512. package/dist/esm/nodes/data/data-select.js.map +1 -1
  513. package/dist/esm/nodes/data/data-update-item.d.ts.map +1 -1
  514. package/dist/esm/nodes/data/data-update-item.js +29 -0
  515. package/dist/esm/nodes/data/data-update-item.js.map +1 -1
  516. package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
  517. package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
  518. package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
  519. package/dist/esm/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
  520. package/dist/esm/nodes/file-storage/file-storage-upload.js +7 -0
  521. package/dist/esm/nodes/file-storage/file-storage-upload.js.map +1 -1
  522. package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
  523. package/dist/esm/nodes/general/general-custom-js.js +21 -5
  524. package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
  525. package/dist/esm/nodes/index.d.ts.map +1 -1
  526. package/dist/esm/nodes/index.js +9 -4
  527. package/dist/esm/nodes/index.js.map +1 -1
  528. package/dist/esm/nodes/payment/payment-billing-portal.d.ts +3 -0
  529. package/dist/esm/nodes/payment/payment-billing-portal.d.ts.map +1 -0
  530. package/dist/esm/nodes/payment/payment-billing-portal.js +49 -0
  531. package/dist/esm/nodes/payment/payment-billing-portal.js.map +1 -0
  532. package/dist/esm/nodes/payment/payment-charge-user.d.ts.map +1 -1
  533. package/dist/esm/nodes/payment/payment-charge-user.js +227 -360
  534. package/dist/esm/nodes/payment/payment-charge-user.js.map +1 -1
  535. package/dist/esm/nodes/payment/payment-close-checkout.d.ts +3 -0
  536. package/dist/esm/nodes/payment/payment-close-checkout.d.ts.map +1 -0
  537. package/dist/esm/nodes/payment/payment-close-checkout.js +138 -0
  538. package/dist/esm/nodes/payment/payment-close-checkout.js.map +1 -0
  539. package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
  540. package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
  541. package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js +64 -0
  542. package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
  543. package/dist/esm/nodes/payment/payment-manage-subscription.d.ts +3 -0
  544. package/dist/esm/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
  545. package/dist/esm/nodes/payment/payment-manage-subscription.js +86 -0
  546. package/dist/esm/nodes/payment/payment-manage-subscription.js.map +1 -0
  547. package/dist/esm/nodes/payment/payment-refund.d.ts.map +1 -1
  548. package/dist/esm/nodes/payment/payment-refund.js +50 -404
  549. package/dist/esm/nodes/payment/payment-refund.js.map +1 -1
  550. package/dist/esm/nodes/push/push-send-notification.d.ts +14 -0
  551. package/dist/esm/nodes/push/push-send-notification.d.ts.map +1 -0
  552. package/dist/esm/nodes/push/push-send-notification.js +80 -0
  553. package/dist/esm/nodes/push/push-send-notification.js.map +1 -0
  554. package/dist/esm/payments/drivers/coingate-driver-code.d.ts +16 -0
  555. package/dist/esm/payments/drivers/coingate-driver-code.d.ts.map +1 -0
  556. package/dist/esm/payments/drivers/coingate-driver-code.js +467 -0
  557. package/dist/esm/payments/drivers/coingate-driver-code.js.map +1 -0
  558. package/dist/esm/payments/drivers/mollie-driver-code.d.ts +16 -0
  559. package/dist/esm/payments/drivers/mollie-driver-code.d.ts.map +1 -0
  560. package/dist/esm/payments/drivers/mollie-driver-code.js +619 -0
  561. package/dist/esm/payments/drivers/mollie-driver-code.js.map +1 -0
  562. package/dist/esm/payments/drivers/paddle-driver-code.d.ts +12 -0
  563. package/dist/esm/payments/drivers/paddle-driver-code.d.ts.map +1 -0
  564. package/dist/esm/payments/drivers/paddle-driver-code.js +679 -0
  565. package/dist/esm/payments/drivers/paddle-driver-code.js.map +1 -0
  566. package/dist/esm/payments/drivers/paypal-driver-code.d.ts +12 -0
  567. package/dist/esm/payments/drivers/paypal-driver-code.d.ts.map +1 -0
  568. package/dist/esm/payments/drivers/paypal-driver-code.js +1257 -0
  569. package/dist/esm/payments/drivers/paypal-driver-code.js.map +1 -0
  570. package/dist/esm/payments/drivers/razorpay-driver-code.d.ts +12 -0
  571. package/dist/esm/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
  572. package/dist/esm/payments/drivers/razorpay-driver-code.js +728 -0
  573. package/dist/esm/payments/drivers/razorpay-driver-code.js.map +1 -0
  574. package/dist/esm/payments/drivers/square-driver-code.d.ts +14 -0
  575. package/dist/esm/payments/drivers/square-driver-code.d.ts.map +1 -0
  576. package/dist/esm/payments/drivers/square-driver-code.js +927 -0
  577. package/dist/esm/payments/drivers/square-driver-code.js.map +1 -0
  578. package/dist/esm/payments/drivers/stripe-driver-code.d.ts +12 -0
  579. package/dist/esm/payments/drivers/stripe-driver-code.d.ts.map +1 -0
  580. package/dist/esm/payments/drivers/stripe-driver-code.js +774 -0
  581. package/dist/esm/payments/drivers/stripe-driver-code.js.map +1 -0
  582. package/dist/esm/payments/index.d.ts +66 -0
  583. package/dist/esm/payments/index.d.ts.map +1 -0
  584. package/dist/esm/payments/index.js +164 -0
  585. package/dist/esm/payments/index.js.map +1 -0
  586. package/dist/esm/payments/payment-core-code.d.ts +19 -0
  587. package/dist/esm/payments/payment-core-code.d.ts.map +1 -0
  588. package/dist/esm/payments/payment-core-code.js +418 -0
  589. package/dist/esm/payments/payment-core-code.js.map +1 -0
  590. package/dist/esm/payments/payment-driver-code-map.d.ts +4 -0
  591. package/dist/esm/payments/payment-driver-code-map.d.ts.map +1 -0
  592. package/dist/esm/payments/payment-driver-code-map.js +18 -0
  593. package/dist/esm/payments/payment-driver-code-map.js.map +1 -0
  594. package/dist/esm/payments/payment-drivers-scope.d.ts +35 -0
  595. package/dist/esm/payments/payment-drivers-scope.d.ts.map +1 -0
  596. package/dist/esm/payments/payment-drivers-scope.js +51 -0
  597. package/dist/esm/payments/payment-drivers-scope.js.map +1 -0
  598. package/dist/esm/payments/payment-registry-code.d.ts +8 -0
  599. package/dist/esm/payments/payment-registry-code.d.ts.map +1 -0
  600. package/dist/esm/payments/payment-registry-code.js +37 -0
  601. package/dist/esm/payments/payment-registry-code.js.map +1 -0
  602. package/dist/esm/pg-client-code.d.ts +10 -0
  603. package/dist/esm/pg-client-code.d.ts.map +1 -1
  604. package/dist/esm/pg-client-code.js +25 -0
  605. package/dist/esm/pg-client-code.js.map +1 -1
  606. package/dist/esm/runtime-storage-generator.d.ts +28 -0
  607. package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
  608. package/dist/esm/runtime-storage-generator.js +239 -4
  609. package/dist/esm/runtime-storage-generator.js.map +1 -1
  610. package/dist/esm/secret-collector.d.ts.map +1 -1
  611. package/dist/esm/secret-collector.js +8 -3
  612. package/dist/esm/secret-collector.js.map +1 -1
  613. package/dist/esm/security-scanner.d.ts +10 -1
  614. package/dist/esm/security-scanner.d.ts.map +1 -1
  615. package/dist/esm/security-scanner.js +18 -0
  616. package/dist/esm/security-scanner.js.map +1 -1
  617. package/dist/esm/segment-context-needs.d.ts +38 -0
  618. package/dist/esm/segment-context-needs.d.ts.map +1 -0
  619. package/dist/esm/segment-context-needs.js +125 -0
  620. package/dist/esm/segment-context-needs.js.map +1 -0
  621. package/dist/esm/segment-splitter.d.ts.map +1 -1
  622. package/dist/esm/segment-splitter.js +6 -1
  623. package/dist/esm/segment-splitter.js.map +1 -1
  624. package/dist/esm/segment-trust.d.ts +50 -0
  625. package/dist/esm/segment-trust.d.ts.map +1 -0
  626. package/dist/esm/segment-trust.js +111 -0
  627. package/dist/esm/segment-trust.js.map +1 -0
  628. package/dist/esm/sent-email-log/sent-email-log-code.d.ts +19 -0
  629. package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  630. package/dist/esm/sent-email-log/sent-email-log-code.js +2 -25
  631. package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
  632. package/dist/esm/server-runtime-code.d.ts +34 -0
  633. package/dist/esm/server-runtime-code.d.ts.map +1 -0
  634. package/dist/esm/server-runtime-code.js +299 -0
  635. package/dist/esm/server-runtime-code.js.map +1 -0
  636. package/dist/esm/session-cookie-resolver.d.ts +3 -78
  637. package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
  638. package/dist/esm/session-cookie-resolver.js +7 -274
  639. package/dist/esm/session-cookie-resolver.js.map +1 -1
  640. package/dist/esm/subscriber-access-route-generator.d.ts +71 -0
  641. package/dist/esm/subscriber-access-route-generator.d.ts.map +1 -0
  642. package/dist/esm/subscriber-access-route-generator.js +292 -0
  643. package/dist/esm/subscriber-access-route-generator.js.map +1 -0
  644. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  645. package/dist/esm/types.d.ts +6 -0
  646. package/dist/esm/types.d.ts.map +1 -1
  647. package/dist/esm/webhook-delivery-lease/index.d.ts +8 -0
  648. package/dist/esm/webhook-delivery-lease/index.d.ts.map +1 -0
  649. package/dist/esm/webhook-delivery-lease/index.js +37 -0
  650. package/dist/esm/webhook-delivery-lease/index.js.map +1 -0
  651. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
  652. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
  653. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +147 -0
  654. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
  655. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
  656. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
  657. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js +16 -0
  658. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
  659. package/dist/esm/webhook-generator.d.ts +1 -1
  660. package/dist/esm/webhook-generator.d.ts.map +1 -1
  661. package/dist/esm/webhook-generator.js +342 -254
  662. package/dist/esm/webhook-generator.js.map +1 -1
  663. package/dist/esm/webhook-signature-verification.d.ts +17 -1
  664. package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
  665. package/dist/esm/webhook-signature-verification.js +179 -25
  666. package/dist/esm/webhook-signature-verification.js.map +1 -1
  667. package/dist/esm/workflow-auth-generator.d.ts +9 -6
  668. package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
  669. package/dist/esm/workflow-auth-generator.js +132 -28
  670. package/dist/esm/workflow-auth-generator.js.map +1 -1
  671. package/dist/esm/workflow-component-plugin.d.ts.map +1 -1
  672. package/dist/esm/workflow-component-plugin.js +65 -28
  673. package/dist/esm/workflow-component-plugin.js.map +1 -1
  674. package/dist/esm/workflow-project-plugin.d.ts +13 -0
  675. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  676. package/dist/esm/workflow-project-plugin.js +212 -63
  677. package/dist/esm/workflow-project-plugin.js.map +1 -1
  678. package/package.json +4 -4
  679. package/src/admin-form-hydration.ts +28 -0
  680. package/src/api-route-generator.ts +251 -64
  681. package/src/auth-generator.ts +273 -53
  682. package/src/auth-return/signed-in-destination-code.ts +32 -0
  683. package/src/cart-pricing-preamble.ts +22 -0
  684. package/src/cron-request-verification.ts +79 -0
  685. package/src/custom-node-modules.ts +102 -0
  686. package/src/data-api-route-generator.ts +370 -28
  687. package/src/ecommerce/cart-availability.ts +22 -13
  688. package/src/ecommerce/stock-decrement.ts +13 -1
  689. package/src/executor-generator.ts +212 -19
  690. package/src/index.ts +28 -7
  691. package/src/invoice/api-routes-code.ts +424 -391
  692. package/src/invoice/data-access-code.ts +431 -110
  693. package/src/invoice/index.ts +31 -1
  694. package/src/invoice/invoice-assembly-code.ts +514 -0
  695. package/src/invoice/invoice-html-code.ts +111 -9
  696. package/src/invoice/pdf-service-client-code.ts +3 -4
  697. package/src/nodes/account/account-login.ts +4 -3
  698. package/src/nodes/account/account-signup.ts +7 -4
  699. package/src/nodes/ai/ai-select-database-data.ts +10 -1
  700. package/src/nodes/browser/browser-get-push-subscription.ts +23 -0
  701. package/src/nodes/browser/browser-show-notification.ts +61 -38
  702. package/src/nodes/browser/browser-subscribe-to-push.ts +26 -36
  703. package/src/nodes/browser/browser-unsubscribe-from-push.ts +22 -0
  704. package/src/nodes/browser/push-api-access.ts +20 -0
  705. package/src/nodes/cart/cart-add-item.ts +200 -9
  706. package/src/nodes/cart/cart-clear.ts +11 -0
  707. package/src/nodes/cart/cart-get-total.ts +279 -7
  708. package/src/nodes/cart/cart-price-order.ts +351 -0
  709. package/src/nodes/cart/cart-update-item-quantity.ts +7 -0
  710. package/src/nodes/data/data-count.ts +9 -1
  711. package/src/nodes/data/data-create-item.ts +15 -1
  712. package/src/nodes/data/data-delete-item.ts +32 -0
  713. package/src/nodes/data/data-raw-query.ts +9 -1
  714. package/src/nodes/data/data-select.ts +9 -1
  715. package/src/nodes/data/data-update-item.ts +32 -0
  716. package/src/nodes/ecommerce/ecommerce-generate-invoice.ts +11 -1
  717. package/src/nodes/file-storage/file-storage-upload.ts +8 -0
  718. package/src/nodes/general/general-custom-js.ts +21 -5
  719. package/src/nodes/index.ts +16 -6
  720. package/src/nodes/payment/payment-billing-portal.ts +51 -0
  721. package/src/nodes/payment/payment-charge-user.ts +236 -442
  722. package/src/nodes/payment/payment-close-checkout.ts +137 -0
  723. package/src/nodes/payment/payment-ensure-subscription-plan.ts +66 -0
  724. package/src/nodes/payment/payment-manage-subscription.ts +89 -0
  725. package/src/nodes/payment/payment-refund.ts +52 -467
  726. package/src/nodes/payment-drivers-global.d.ts +13 -0
  727. package/src/nodes/push/push-send-notification.ts +83 -0
  728. package/src/nodes/workflow-utils-global.d.ts +5 -0
  729. package/src/payments/drivers/coingate-driver-code.ts +466 -0
  730. package/src/payments/drivers/mollie-driver-code.ts +618 -0
  731. package/src/payments/drivers/paddle-driver-code.ts +678 -0
  732. package/src/payments/drivers/paypal-driver-code.ts +1256 -0
  733. package/src/payments/drivers/razorpay-driver-code.ts +727 -0
  734. package/src/payments/drivers/square-driver-code.ts +926 -0
  735. package/src/payments/drivers/stripe-driver-code.ts +773 -0
  736. package/src/payments/index.ts +204 -0
  737. package/src/payments/payment-core-code.ts +421 -0
  738. package/src/payments/payment-driver-code-map.ts +19 -0
  739. package/src/payments/payment-drivers-scope.ts +66 -0
  740. package/src/payments/payment-registry-code.ts +38 -0
  741. package/src/pg-client-code.ts +30 -0
  742. package/src/runtime-storage-generator.ts +241 -4
  743. package/src/secret-collector.ts +8 -3
  744. package/src/security-scanner.ts +22 -0
  745. package/src/segment-context-needs.ts +148 -0
  746. package/src/segment-splitter.ts +6 -1
  747. package/src/segment-trust.ts +170 -0
  748. package/src/sent-email-log/sent-email-log-code.ts +2 -32
  749. package/src/server-runtime-code.ts +298 -0
  750. package/src/session-cookie-resolver.ts +9 -277
  751. package/src/subscriber-access-route-generator.ts +351 -0
  752. package/src/types.ts +6 -0
  753. package/src/webhook-delivery-lease/index.ts +44 -0
  754. package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +151 -0
  755. package/src/webhook-delivery-lease/webhook-delivery-lease-scope.ts +18 -0
  756. package/src/webhook-generator.ts +359 -260
  757. package/src/webhook-signature-verification.ts +180 -25
  758. package/src/workflow-auth-generator.ts +137 -28
  759. package/src/workflow-component-plugin.ts +77 -20
  760. package/src/workflow-project-plugin.ts +247 -44
  761. package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts +0 -3
  762. package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
  763. package/dist/cjs/nodes/payment/payment-cancel-plan.js +0 -33
  764. package/dist/cjs/nodes/payment/payment-cancel-plan.js.map +0 -1
  765. package/dist/cjs/nodes/payment/payment-create-subscription.d.ts +0 -3
  766. package/dist/cjs/nodes/payment/payment-create-subscription.d.ts.map +0 -1
  767. package/dist/cjs/nodes/payment/payment-create-subscription.js +0 -41
  768. package/dist/cjs/nodes/payment/payment-create-subscription.js.map +0 -1
  769. package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
  770. package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
  771. package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js +0 -45
  772. package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
  773. package/dist/esm/nodes/payment/payment-cancel-plan.d.ts +0 -3
  774. package/dist/esm/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
  775. package/dist/esm/nodes/payment/payment-cancel-plan.js +0 -30
  776. package/dist/esm/nodes/payment/payment-cancel-plan.js.map +0 -1
  777. package/dist/esm/nodes/payment/payment-create-subscription.d.ts +0 -3
  778. package/dist/esm/nodes/payment/payment-create-subscription.d.ts.map +0 -1
  779. package/dist/esm/nodes/payment/payment-create-subscription.js +0 -38
  780. package/dist/esm/nodes/payment/payment-create-subscription.js.map +0 -1
  781. package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
  782. package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
  783. package/dist/esm/nodes/payment/payment-subscribe-to-plan.js +0 -42
  784. package/dist/esm/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
  785. package/src/nodes/payment/payment-cancel-plan.ts +0 -33
  786. package/src/nodes/payment/payment-create-subscription.ts +0 -42
  787. package/src/nodes/payment/payment-subscribe-to-plan.ts +0 -46
@@ -0,0 +1,267 @@
1
+ import { loadHandler } from './_helpers/load-handler'
2
+ import { PaymentDriverRegistry, loadPaymentDrivers } from './_helpers/load-payment-drivers'
3
+
4
+ /**
5
+ * `payment-charge-user` with the checkout an order opened earlier
6
+ * (`previousAttempt`): the node asks the provider about it before opening
7
+ * another, because two open checkouts are how one order gets paid twice.
8
+ * With `deferRedirect` it answers with the page instead of sending the buyer
9
+ * there, so the workflow can record the checkout first.
10
+ */
11
+
12
+ interface FakeDriverCalls {
13
+ inspected: unknown[]
14
+ created: any[]
15
+ }
16
+
17
+ const fakeDriver = (inspection: unknown, calls: FakeDriverCalls) => ({
18
+ inspectCheckout: async (input: unknown) => {
19
+ calls.inspected.push(input)
20
+ if (inspection instanceof Error) {
21
+ throw inspection
22
+ }
23
+ return inspection
24
+ },
25
+ createCheckout: async (input: any) => {
26
+ calls.created.push(input)
27
+ return { checkoutUrl: 'https://pay.test/new', sessionId: 'new-1' }
28
+ },
29
+ })
30
+
31
+ const registryOf = (driver: unknown): PaymentDriverRegistry => ({
32
+ ids: ['stripe'],
33
+ core: {},
34
+ get: (id: string) => (id === 'stripe' ? driver : null),
35
+ })
36
+
37
+ const CHARGE = {
38
+ providerId: 'stripe',
39
+ amount: 20,
40
+ currency: 'eur',
41
+ successUrl: '/order-details/ORD-1?payment=success',
42
+ cancelUrl: '/order-details/ORD-1',
43
+ metadata: '{"orderId":"order-1","orderNumber":"ORD-1"}',
44
+ }
45
+ const CONTEXT = { __baseUrl: 'https://shop.test' }
46
+
47
+ const run = async (inspection: unknown, config: Record<string, unknown>) => {
48
+ const calls: FakeDriverCalls = { inspected: [], created: [] }
49
+ const handler = loadHandler('payment-charge-user', {
50
+ paymentDrivers: registryOf(fakeDriver(inspection, calls)),
51
+ })
52
+ const result = (await handler({ ...CHARGE, ...config }, CONTEXT)) as Record<string, unknown>
53
+ return { result, calls }
54
+ }
55
+
56
+ describe('payment-charge-user — the checkout opened earlier', () => {
57
+ beforeAll(() => {
58
+ ;(globalThis as { __workflowUtils?: unknown }).__workflowUtils = {
59
+ localizeHref: (href: string) => href,
60
+ }
61
+ })
62
+ afterAll(() => {
63
+ delete (globalThis as { __workflowUtils?: unknown }).__workflowUtils
64
+ })
65
+
66
+ it('sends the buyer back to a checkout they can still pay, opening no other', async () => {
67
+ const { result, calls } = await run(
68
+ { state: 'open', checkoutUrl: 'https://pay.test/earlier' },
69
+ { previousAttempt: 'cs_earlier', deferRedirect: true }
70
+ )
71
+ expect(calls.inspected).toEqual([{ reference: 'cs_earlier' }])
72
+ expect(calls.created).toEqual([])
73
+ expect(result).toEqual({
74
+ checkoutUrl: 'https://pay.test/earlier',
75
+ sessionId: 'cs_earlier',
76
+ attemptRef: 'cs_earlier',
77
+ attemptOutcome: 'reused',
78
+ redirectUrl: 'https://pay.test/earlier',
79
+ })
80
+ })
81
+
82
+ it.each(['paid', 'confirming'])(
83
+ 'opens nothing while the earlier checkout is %s, and points the buyer at the confirmation',
84
+ async (state) => {
85
+ const { result, calls } = await run(
86
+ { state, checkoutUrl: '' },
87
+ { previousAttempt: 'cs_earlier', deferRedirect: true }
88
+ )
89
+ expect(calls.created).toEqual([])
90
+ expect(result).toEqual({
91
+ checkoutUrl: '',
92
+ sessionId: 'cs_earlier',
93
+ attemptRef: 'cs_earlier',
94
+ attemptOutcome: 'in-progress',
95
+ redirectUrl: 'https://shop.test/order-details/ORD-1?payment=success',
96
+ })
97
+ }
98
+ )
99
+
100
+ it('opens a new checkout once the earlier one can take no more money', async () => {
101
+ const { result, calls } = await run(
102
+ { state: 'closed', checkoutUrl: '' },
103
+ { previousAttempt: 'cs_earlier', deferRedirect: true }
104
+ )
105
+ expect(calls.created).toHaveLength(1)
106
+ // The driver learns which checkout this one follows (Square keys its link on it).
107
+ expect(calls.created[0].previousAttempt).toBe('cs_earlier')
108
+ expect(result).toEqual({
109
+ checkoutUrl: 'https://pay.test/new',
110
+ sessionId: 'new-1',
111
+ attemptRef: 'new-1',
112
+ attemptOutcome: 'created',
113
+ redirectUrl: 'https://pay.test/new',
114
+ })
115
+ })
116
+
117
+ it('refuses with a 400 when the provider cannot say what became of the earlier checkout', async () => {
118
+ for (const inspection of [
119
+ { state: '', checkoutUrl: '', error: 'Stripe is unavailable' },
120
+ new Error('socket hang up'),
121
+ ]) {
122
+ const { result, calls } = await run(inspection, {
123
+ previousAttempt: 'cs_earlier',
124
+ deferRedirect: true,
125
+ })
126
+ expect(calls.created).toEqual([])
127
+ expect(result).toMatchObject({ __earlyResponse: { status: 400 } })
128
+ }
129
+ })
130
+
131
+ it('opens a checkout without asking anyone when no earlier one is known', async () => {
132
+ const { result, calls } = await run(new Error('never asked'), { deferRedirect: 'true' })
133
+ expect(calls.inspected).toEqual([])
134
+ expect(calls.created).toHaveLength(1)
135
+ expect(result.attemptOutcome).toBe('created')
136
+ expect(result).not.toHaveProperty('__terminal')
137
+ })
138
+
139
+ it('without deferRedirect stays terminal, and sends a payment in progress to the confirmation', async () => {
140
+ const { result } = await run({ state: 'confirming' }, { previousAttempt: 'cs_earlier' })
141
+ expect(result).toMatchObject({
142
+ __terminal: true,
143
+ __redirectUrl: 'https://shop.test/order-details/ORD-1?payment=success',
144
+ attemptOutcome: 'in-progress',
145
+ })
146
+ })
147
+
148
+ it('opens a checkout as before with a driver that cannot inspect one', async () => {
149
+ const calls: FakeDriverCalls = { inspected: [], created: [] }
150
+ const { inspectCheckout, ...withoutInspect } = fakeDriver({ state: 'open' }, calls)
151
+ expect(typeof inspectCheckout).toBe('function')
152
+ const handler = loadHandler('payment-charge-user', {
153
+ paymentDrivers: registryOf(withoutInspect),
154
+ })
155
+ const result = await handler({ ...CHARGE, previousAttempt: 'cs_earlier' }, CONTEXT)
156
+ expect(calls.created).toHaveLength(1)
157
+ expect(result).toMatchObject({ attemptOutcome: 'created', __terminal: true })
158
+ })
159
+ })
160
+
161
+ describe('payment-charge-user — an order that recorded no checkout', () => {
162
+ const PLACED_AT = '2026-09-28T10:00:00.000Z'
163
+ const { core } = loadPaymentDrivers({ ids: [] })
164
+
165
+ beforeAll(() => {
166
+ ;(globalThis as { __workflowUtils?: unknown }).__workflowUtils = {
167
+ localizeHref: (href: string) => href,
168
+ }
169
+ })
170
+ afterAll(() => {
171
+ delete (globalThis as { __workflowUtils?: unknown }).__workflowUtils
172
+ })
173
+
174
+ const lookup = async (found: unknown, states: Record<string, unknown> = {}) => {
175
+ const calls = { found: [] as unknown[], closed: [] as string[], created: [] as unknown[] }
176
+ const driver = {
177
+ findCheckouts: async (input: unknown) => {
178
+ calls.found.push(input)
179
+ return found
180
+ },
181
+ closeCheckout: async ({ reference }: { reference: string }) => {
182
+ calls.closed.push(reference)
183
+ return states[reference]
184
+ },
185
+ createCheckout: async (input: unknown) => {
186
+ calls.created.push(input)
187
+ return { checkoutUrl: 'https://pay.test/new', sessionId: 'new-1' }
188
+ },
189
+ }
190
+ const handler = loadHandler('payment-charge-user', {
191
+ paymentDrivers: {
192
+ ids: ['stripe'],
193
+ core,
194
+ get: (id: string) => (id === 'stripe' ? driver : null),
195
+ },
196
+ })
197
+ const result = (await handler(
198
+ { ...CHARGE, deferRedirect: true, lookupOrderId: 'order-1', lookupPlacedAt: PLACED_AT },
199
+ CONTEXT
200
+ )) as Record<string, unknown>
201
+ return { result, calls }
202
+ }
203
+
204
+ it('closes the pages its placing opened, then opens a new one', async () => {
205
+ const { result, calls } = await lookup({ references: ['cs_a'] }, { cs_a: { state: 'closed' } })
206
+ expect(calls.found).toEqual([{ orderId: 'order-1', placedAt: PLACED_AT }])
207
+ expect(calls.closed).toEqual(['cs_a'])
208
+ expect(calls.created).toHaveLength(1)
209
+ expect(result).toMatchObject({ attemptOutcome: 'created', attemptRef: 'new-1' })
210
+ })
211
+
212
+ it('opens nothing when a page it finds took the money, or is taking it', async () => {
213
+ for (const state of ['paid', 'confirming']) {
214
+ const { result, calls } = await lookup({ references: ['cs_a'] }, { cs_a: { state } })
215
+ expect(calls.created).toEqual([])
216
+ expect(result).toMatchObject({
217
+ attemptOutcome: 'in-progress',
218
+ attemptRef: '',
219
+ redirectUrl: 'https://shop.test/order-details/ORD-1?payment=success',
220
+ })
221
+ }
222
+ })
223
+
224
+ it('reopens a page the provider cannot close, answered to be recorded', async () => {
225
+ const { result, calls } = await lookup(
226
+ { references: ['42'] },
227
+ {
228
+ 42: {
229
+ state: 'open',
230
+ checkoutUrl: 'https://coingate.test/42',
231
+ openUntil: '2026-09-28T10:20:00Z',
232
+ },
233
+ }
234
+ )
235
+ expect(calls.created).toEqual([])
236
+ expect(result).toEqual({
237
+ checkoutUrl: 'https://coingate.test/42',
238
+ sessionId: '42',
239
+ attemptRef: '42',
240
+ attemptOutcome: 'adopted',
241
+ redirectUrl: 'https://coingate.test/42',
242
+ })
243
+ })
244
+
245
+ it('waits out a page it cannot find (PayPal), saying until when', async () => {
246
+ const until = new Date(Date.now() + 3 * 60 * 60 * 1000)
247
+ const { result, calls } = await lookup({ searchable: false, openUntil: until.toISOString() })
248
+ expect(calls.created).toEqual([])
249
+ const early = result.__earlyResponse as { status: number; body: { error: string } }
250
+ expect(early.status).toBe(400)
251
+ expect(early.body.error).toContain(until.toISOString().slice(0, 16).replace('T', ' ') + ' UTC')
252
+ })
253
+
254
+ it('opens a new page once a page it cannot find has certainly run out', async () => {
255
+ const { result, calls } = await lookup({ searchable: false, openUntil: PLACED_AT })
256
+ expect(calls.created).toHaveLength(1)
257
+ expect(result.attemptOutcome).toBe('created')
258
+ })
259
+
260
+ it('refuses when the provider cannot be searched', async () => {
261
+ const { result, calls } = await lookup({ error: 'Stripe is down' })
262
+ expect(calls.created).toEqual([])
263
+ expect(result).toMatchObject({
264
+ __earlyResponse: { status: 400, body: { error: 'Stripe is down' } },
265
+ })
266
+ })
267
+ })
@@ -1,96 +1,61 @@
1
1
  import { paymentChargeUser } from '../src/nodes/payment/payment-charge-user'
2
-
3
- // Regression coverage for a production bug: clicking "Pay Now" on a
4
- // Stripe checkout failed with
5
- // { "success": false, "error": "Oo is not defined", "provider": "stripe" }
6
- //
7
- // Root cause: `generateHandler()` builds the final server-route handler by
8
- // calling `.toString()` on several TypeScript functions independently and
9
- // concatenating the source text (see `../src/nodes/types.ts`'s
10
- // `handlerToString` docs). Two currency-code arrays
11
- // (STRIPE_ZERO_DECIMAL_CURRENCIES / STRIPE_THREE_DECIMAL_CURRENCIES) used
12
- // to be declared as top-level consts and referenced from inside
13
- // `toStripeMinorUnits`. That's fine in an unminified build, but this
14
- // package is itself bundled + minified by consumers (teleport-gui's
15
- // browser packer, via webpack/Terser) before `generateHandler()` ever
16
- // runs — the minifier is free to rename an unused-by-name top-level
17
- // const (nothing calls it by string, only a runtime `.toString()` read
18
- // does, which the minifier can't see), and it renamed the declaration
19
- // away from what the reconstructed `var STRIPE_ZERO_DECIMAL_CURRENCIES =
20
- // [...]` text in `generateHandler()` assumed. The result: the generated
21
- // workflow segment file declared the array under the ORIGINAL name but
22
- // `toStripeMinorUnits`'s serialized body referenced the MINIFIER-RENAMED
23
- // name (e.g. a mangled `Oo`), which was never declared anywhere in the
24
- // generated file — a `ReferenceError` the first time a Stripe charge ran
25
- // with a zero- or three-decimal currency.
26
- //
27
- // The fix moves both arrays to be declared LOCAL to `toStripeMinorUnits`
28
- // so the declaration and every reference to it live in the SAME
29
- // `.toString()` snapshot — a consistent rename can never separate them.
30
- describe('payment-charge-user handler serialization survives minification-style renaming', () => {
2
+ import { generatePaymentCoreCode } from '../src/payments/payment-core-code'
3
+ import { evaluateEmittedModule } from './_helpers/load-invoice-route'
4
+
5
+ // A production bug once made every Stripe charge in a minified build fail
6
+ // with "Oo is not defined": the handler was assembled from several
7
+ // `.toString()`'d functions, and a minifier renamed a top-level currency list
8
+ // away from the name the serialized function referenced. The provider code
9
+ // now ships as STRING modules (`utils/payments/*.js`, see src/payments), which
10
+ // no minifier rewrites; these tests pin what is left of that hazard — the
11
+ // handler itself — and the money conversion the drivers share.
12
+ describe('payment-charge-user handler serialization', () => {
31
13
  const handlerSource = paymentChargeUser.generateHandler()
32
14
 
33
- it('does not reference the old top-level currency-array identifiers anywhere', () => {
34
- // These names no longer exist ANYWHERE in the source — not as a
35
- // declaration, not as a reference. If a future edit reintroduces a
36
- // top-level const referenced only from inside a separately
37
- // `.toString()`'d function, this is the shape of bug that comes back.
38
- expect(handlerSource).not.toContain('STRIPE_ZERO_DECIMAL_CURRENCIES')
39
- expect(handlerSource).not.toContain('STRIPE_THREE_DECIMAL_CURRENCIES')
15
+ it('produces syntactically valid, runnable JavaScript end-to-end', () => {
16
+ // Evaluating the FULL concatenated source is what catches an orphaned
17
+ // free-variable reference, exactly like requiring the generated segment.
18
+ expect(() => new Function(handlerSource + '\nreturn payment_charge_user;')()).not.toThrow()
40
19
  })
41
20
 
42
- it('declares the currency arrays INSIDE toStripeMinorUnits, not reconstructed separately', () => {
43
- const fnStart = handlerSource.indexOf('function toStripeMinorUnits')
44
- expect(fnStart).toBeGreaterThan(-1)
45
- // The next function declaration marks the end of toStripeMinorUnits's
46
- // body (functions are concatenated back-to-back by generateHandler()).
47
- // chargeWithStripe is `async function …` — the slice must stop BEFORE the
48
- // `async` keyword or the extracted body ends with a dangling `async`.
49
- const nextFn = /(?:async\s+)?function chargeWithStripe/.exec(handlerSource.slice(fnStart))
50
- expect(nextFn).not.toBeNull()
51
- const body = handlerSource.slice(fnStart, fnStart + nextFn!.index)
52
- expect(body).toContain('JPY')
53
- expect(body).toContain('BHD')
21
+ it('reads no environment and requires no module: providers are reached through the drivers', () => {
22
+ expect(handlerSource).toContain('__paymentDrivers')
23
+ expect(handlerSource).not.toContain('process')
24
+ expect(handlerSource).not.toMatch(/\brequire\(/)
54
25
  })
26
+ })
55
27
 
56
- it('produces syntactically valid, runnable JavaScript end-to-end', () => {
57
- // Evaluating the FULL concatenated handler source (not just one
58
- // function in isolation) is what actually catches an orphaned
59
- // free-variable reference — exactly like requiring the generated
60
- // workflow segment .js file would in production.
61
- expect(() => new Function(handlerSource + '\nreturn payment_charge_user;')()).not.toThrow()
62
- })
28
+ describe('the drivers’ minor-unit conversion (utils/payments/core.js)', () => {
29
+ const core = evaluateEmittedModule<{
30
+ toMinor: (major: unknown, currency: string) => number
31
+ fromMinor: (minor: unknown, currency: string) => number
32
+ decimalString: (major: unknown, currency: string) => string
33
+ }>(generatePaymentCoreCode(), require)
63
34
 
64
- describe('toStripeMinorUnits — extracted from the serialized handler source', () => {
65
- const toStripeMinorUnits = (() => {
66
- const fnStart = handlerSource.indexOf('function toStripeMinorUnits')
67
- const nextFn = /(?:async\s+)?function chargeWithStripe/.exec(handlerSource.slice(fnStart))
68
- const body = handlerSource.slice(fnStart, fnStart + (nextFn as RegExpExecArray).index)
69
- return new Function(body + '\nreturn toStripeMinorUnits;')() as (
70
- major: unknown,
71
- currency: string
72
- ) => number
73
- })()
35
+ it('converts a two-decimal currency to cents', () => {
36
+ expect(core.toMinor(19.99, 'usd')).toBe(1999)
37
+ })
74
38
 
75
- it('converts a standard (2-decimal) currency to minor units', () => {
76
- expect(toStripeMinorUnits(19.99, 'usd')).toBe(1999)
77
- })
39
+ it('passes zero-decimal currencies through rounded, unmultiplied', () => {
40
+ expect(core.toMinor(500, 'JPY')).toBe(500)
41
+ expect(core.toMinor(500.6, 'jpy')).toBe(501)
42
+ })
78
43
 
79
- it('passes zero-decimal currencies through rounded, unmultiplied', () => {
80
- // This is the exact code path that threw "Oo is not defined" in
81
- // production — a JPY (zero-decimal) charge.
82
- expect(toStripeMinorUnits(500, 'JPY')).toBe(500)
83
- expect(toStripeMinorUnits(500.6, 'jpy')).toBe(501)
84
- })
44
+ it('multiplies three-decimal currencies by 1000', () => {
45
+ expect(core.toMinor(1.5, 'BHD')).toBe(1500)
46
+ })
85
47
 
86
- it('multiplies three-decimal currencies by 1000', () => {
87
- expect(toStripeMinorUnits(1.5, 'BHD')).toBe(1500)
88
- })
48
+ it('returns 0 for non-finite or non-positive amounts', () => {
49
+ expect(core.toMinor(0, 'usd')).toBe(0)
50
+ expect(core.toMinor(-5, 'usd')).toBe(0)
51
+ expect(core.toMinor(NaN, 'usd')).toBe(0)
52
+ })
89
53
 
90
- it('returns 0 for non-finite or non-positive amounts', () => {
91
- expect(toStripeMinorUnits(0, 'usd')).toBe(0)
92
- expect(toStripeMinorUnits(-5, 'usd')).toBe(0)
93
- expect(toStripeMinorUnits(NaN, 'usd')).toBe(0)
94
- })
54
+ it('reads a provider amount back and prints one with the currency’s decimals', () => {
55
+ expect(core.fromMinor(1999, 'usd')).toBe(19.99)
56
+ expect(core.fromMinor(1500, 'BHD')).toBe(1.5)
57
+ expect(core.decimalString(12.5, 'EUR')).toBe('12.50')
58
+ expect(core.decimalString(12.5, 'JPY')).toBe('13')
59
+ expect(core.decimalString(1.2345, 'KWD')).toBe('1.235')
95
60
  })
96
61
  })
@@ -0,0 +1,124 @@
1
+ import { loadHandler, HandlerFn } from './_helpers/load-handler'
2
+
3
+ /**
4
+ * A line bought with product options carries its short configuration label as
5
+ * `description` in the checkout's line items, and Stripe shows it under the
6
+ * product on the hosted page and the receipt. Stripe rejects an empty-string
7
+ * description, so a line without options must reach Stripe exactly as before.
8
+ */
9
+
10
+ type SessionParams = Record<string, any>
11
+
12
+ const withFakeStripe = async (run: (sessions: SessionParams[]) => Promise<void>) => {
13
+ const sessions: SessionParams[] = []
14
+ function FakeStripe() {
15
+ return {
16
+ checkout: {
17
+ sessions: {
18
+ create: async (params: SessionParams) => {
19
+ sessions.push(params)
20
+ return { id: 'cs_test_1', url: 'https://checkout.stripe.test/cs_test_1' }
21
+ },
22
+ },
23
+ },
24
+ }
25
+ }
26
+ const scope = globalThis as { __non_webpack_require__?: unknown; __workflowUtils?: unknown }
27
+ const savedKey = process.env.STRIPE_SECRET_KEY
28
+ scope.__non_webpack_require__ = (name: string) => {
29
+ if (name !== 'stripe') {
30
+ throw new Error('unexpected require ' + name)
31
+ }
32
+ return FakeStripe
33
+ }
34
+ scope.__workflowUtils = { localizeHref: (href: string) => href }
35
+ process.env.STRIPE_SECRET_KEY = 'sk_test_1'
36
+ try {
37
+ await run(sessions)
38
+ } finally {
39
+ delete scope.__non_webpack_require__
40
+ delete scope.__workflowUtils
41
+ if (savedKey === undefined) {
42
+ delete process.env.STRIPE_SECRET_KEY
43
+ } else {
44
+ process.env.STRIPE_SECRET_KEY = savedKey
45
+ }
46
+ }
47
+ }
48
+
49
+ describe('payment-charge-user — Stripe line descriptions', () => {
50
+ const handler: HandlerFn = loadHandler('payment-charge-user')
51
+ const charge = (lineItems: unknown[]) =>
52
+ handler(
53
+ {
54
+ providerId: 'stripe',
55
+ amount: 41,
56
+ currency: 'usd',
57
+ successUrl: 'https://store.test/order-details/ORD-1',
58
+ cancelUrl: 'https://store.test/checkout',
59
+ lineItems,
60
+ },
61
+ {}
62
+ )
63
+
64
+ it('sends the configuration label as the product description', async () => {
65
+ await withFakeStripe(async (sessions) => {
66
+ await charge([
67
+ {
68
+ name: 'Photo print',
69
+ unitAmount: 27,
70
+ quantity: 1,
71
+ description: ' Size: A3 · Paper: Glossy ',
72
+ },
73
+ ])
74
+ expect(sessions[0].line_items[0].price_data.product_data).toEqual({
75
+ name: 'Photo print',
76
+ description: 'Size: A3 · Paper: Glossy',
77
+ })
78
+ })
79
+ })
80
+
81
+ it('omits the description when a line has none, an empty one or a non-string', async () => {
82
+ await withFakeStripe(async (sessions) => {
83
+ await charge([
84
+ { name: 'Mug', unitAmount: 12, quantity: 2 },
85
+ { name: 'Tote', unitAmount: 8, quantity: 1, description: ' ' },
86
+ { name: 'Cap', unitAmount: 6, quantity: 1, description: { label: 'x' } },
87
+ ])
88
+ expect(
89
+ sessions[0].line_items.map((line: SessionParams) => line.price_data.product_data)
90
+ ).toEqual([{ name: 'Mug' }, { name: 'Tote' }, { name: 'Cap' }])
91
+ })
92
+ })
93
+
94
+ it('caps the description at the 500 characters Stripe accepts', async () => {
95
+ await withFakeStripe(async (sessions) => {
96
+ await charge([
97
+ { name: 'Engraved pen', unitAmount: 20, quantity: 1, description: 'E'.repeat(700) },
98
+ ])
99
+ expect(sessions[0].line_items[0].price_data.product_data.description).toBe('E'.repeat(500))
100
+ })
101
+ })
102
+
103
+ it('keeps the single-line session for a charge without line items', async () => {
104
+ await withFakeStripe(async (sessions) => {
105
+ await handler(
106
+ {
107
+ providerId: 'stripe',
108
+ amount: 41,
109
+ currency: 'usd',
110
+ description: 'Order ORD-1',
111
+ successUrl: 'https://store.test/done',
112
+ cancelUrl: 'https://store.test/checkout',
113
+ },
114
+ {}
115
+ )
116
+ expect(sessions[0].line_items).toEqual([
117
+ {
118
+ price_data: { currency: 'usd', product_data: { name: 'Order ORD-1' }, unit_amount: 4100 },
119
+ quantity: 1,
120
+ },
121
+ ])
122
+ })
123
+ })
124
+ })
@@ -0,0 +1,105 @@
1
+ import { loadHandler } from './_helpers/load-handler'
2
+ import { PaymentDriverRegistry } from './_helpers/load-payment-drivers'
3
+
4
+ /**
5
+ * `payment-charge-user` with `reportRefusal`: a provider that will not open
6
+ * the checkout (keys refused, a currency its account cannot charge, a
7
+ * business it has not verified) is answered as the node's result, so the
8
+ * workflow can give back what the order held and tell the buyer why —
9
+ * never under `error`, which would end the run.
10
+ */
11
+
12
+ const registryOf = (driver: unknown): PaymentDriverRegistry => ({
13
+ ids: ['coingate'],
14
+ core: {},
15
+ get: (id: string) => (id === 'coingate' ? driver : null),
16
+ })
17
+
18
+ const refusing = {
19
+ createCheckout: async () => ({
20
+ checkoutUrl: '',
21
+ sessionId: '',
22
+ error: 'Order is not valid: Business is not verified',
23
+ }),
24
+ }
25
+ const opening = {
26
+ createCheckout: async () => ({ checkoutUrl: 'https://pay.test/1', sessionId: '1234' }),
27
+ }
28
+
29
+ const CHARGE = {
30
+ providerId: 'CoinGate',
31
+ amount: 20,
32
+ currency: 'eur',
33
+ successUrl: '/order-details/ORD-1?payment=success',
34
+ cancelUrl: '/order-details/ORD-1',
35
+ metadata: '{"orderId":"order-1","orderNumber":"ORD-1"}',
36
+ deferRedirect: true,
37
+ }
38
+ const CONTEXT = { __baseUrl: 'https://shop.test' }
39
+
40
+ const run = async (driver: unknown, config: Record<string, unknown>) =>
41
+ (await loadHandler('payment-charge-user', { paymentDrivers: registryOf(driver) })(
42
+ { ...CHARGE, ...config },
43
+ CONTEXT
44
+ )) as Record<string, unknown>
45
+
46
+ describe('payment-charge-user — reportRefusal', () => {
47
+ beforeAll(() => {
48
+ ;(globalThis as { __workflowUtils?: unknown }).__workflowUtils = {
49
+ localizeHref: (href: string) => href,
50
+ }
51
+ })
52
+ afterAll(() => {
53
+ delete (globalThis as { __workflowUtils?: unknown }).__workflowUtils
54
+ })
55
+
56
+ it("answers the provider's refusal in its own words, for the workflow to act on", async () => {
57
+ const result = await run(refusing, { reportRefusal: true })
58
+ expect(result).toEqual({
59
+ refused: 'true',
60
+ refusal: 'Order is not valid: Business is not verified',
61
+ provider: 'coingate',
62
+ checkoutUrl: '',
63
+ sessionId: '',
64
+ attemptRef: '',
65
+ attemptOutcome: '',
66
+ redirectUrl: '',
67
+ })
68
+ expect(result).not.toHaveProperty('error')
69
+ })
70
+
71
+ it('says a provider the store has no driver for refused too', async () => {
72
+ const result = await run(null, { reportRefusal: 'true' })
73
+ expect(result).toMatchObject({
74
+ refused: 'true',
75
+ refusal: 'Payment provider "coingate" is not supported by this store.',
76
+ })
77
+ })
78
+
79
+ it('names the provider and no refusal when the checkout opened', async () => {
80
+ expect(await run(opening, { reportRefusal: true })).toEqual({
81
+ checkoutUrl: 'https://pay.test/1',
82
+ sessionId: '1234',
83
+ attemptRef: '1234',
84
+ attemptOutcome: 'created',
85
+ redirectUrl: 'https://pay.test/1',
86
+ refused: 'false',
87
+ refusal: '',
88
+ provider: 'coingate',
89
+ })
90
+ })
91
+
92
+ it('still ends the run with a 400 without it', async () => {
93
+ expect(await run(refusing, {})).toEqual({
94
+ __earlyResponse: {
95
+ status: 400,
96
+ headers: { 'Content-Type': 'application/json' },
97
+ body: {
98
+ success: false,
99
+ error: 'Order is not valid: Business is not verified',
100
+ provider: 'coingate',
101
+ },
102
+ },
103
+ })
104
+ })
105
+ })