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

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,499 @@
1
+ /* tslint:disable:no-eval */
2
+ import { cartGetTotal } from '../src/nodes/cart/cart-get-total'
3
+ import { cartClear } from '../src/nodes/cart/cart-clear'
4
+ import { resolveHandlerEntryName } from '../src/nodes/types'
5
+
6
+ /**
7
+ * `cart-get-total` is where the place-order workflow's money comes from, so on
8
+ * a store with the discount engine it re-prices the basket AT SUBMIT — the same
9
+ * shared rule, the same rules and shopper context the provider mirrored — and
10
+ * on a store with gift cards it says how much of that a stored card would pay.
11
+ * The workflow compares its own server-side figure against
12
+ * `displayedAmountDue` and refreshes the summary when they disagree.
13
+ *
14
+ * A store without either feature must come out exactly as before: no
15
+ * `discounts`, `giftCard` or `displayedAmountDue` key, and the untouched
16
+ * single-rate fields.
17
+ */
18
+
19
+ function evalHandler(code: string): any {
20
+ return eval('(' + code + ')')
21
+ }
22
+
23
+ const runHandler = async () => evalHandler(cartGetTotal.generateHandler())()
24
+
25
+ function mount(storage: Record<string, unknown>, fields: Record<string, string> = {}): void {
26
+ const store: Record<string, string> = {}
27
+ for (const key of Object.keys(storage)) {
28
+ const value = storage[key]
29
+ store[key] = typeof value === 'string' ? value : JSON.stringify(value)
30
+ }
31
+ ;(global as any).localStorage = {
32
+ getItem: (key: string) => (key in store ? store[key] : null),
33
+ }
34
+ ;(global as any).document = {
35
+ querySelector: (selector: string) => {
36
+ const match = /^\[name="([^"]+)"\]$/.exec(selector)
37
+ const name = match ? match[1] : ''
38
+ return name in fields ? { value: fields[name] } : null
39
+ },
40
+ }
41
+ }
42
+
43
+ afterEach(() => {
44
+ delete (global as any).localStorage
45
+ delete (global as any).document
46
+ })
47
+
48
+ const CART = [
49
+ { id: 'l1', productId: 'p1', price: 100, quantity: 2, categoryIds: ['c1'] },
50
+ { id: 'l2', productId: 'p2', price: 50, quantity: 1, categoryIds: ['c2'] },
51
+ ]
52
+
53
+ const TEN_PERCENT = {
54
+ id: 'a-ten',
55
+ name: 'Ten percent',
56
+ status: 'active',
57
+ discount_type: 'percentage',
58
+ discount_value: '10.00',
59
+ applies_to_all_products: 't',
60
+ priority: 1,
61
+ stackable: 't',
62
+ starts_at: null,
63
+ ends_at: null,
64
+ }
65
+
66
+ const FIRST_ORDER = {
67
+ id: 'a-first',
68
+ name: 'Welcome',
69
+ status: 'active',
70
+ discount_type: 'fixed',
71
+ discount_value: '5.00',
72
+ applies_to_all_products: 't',
73
+ first_order_only: 't',
74
+ stackable: 't',
75
+ starts_at: null,
76
+ ends_at: null,
77
+ }
78
+
79
+ const VOUCHER = {
80
+ id: 'v1',
81
+ code: 'SAVE20',
82
+ discount_type: 'fixed',
83
+ discount_value: 20,
84
+ applies_to_all_products: true,
85
+ product_ids: [],
86
+ }
87
+
88
+ const CARD = { id: 'gc-1', last4: 'ABCD', balance: 40, currency: 'EUR', checkedAt: null }
89
+
90
+ const DELIVERY = {
91
+ deliveryPrice: 10,
92
+ freeDeliveryEnabled: false,
93
+ freeDeliveryThreshold: 0,
94
+ deliveryEnabled: true,
95
+ storePickupEnabled: true,
96
+ }
97
+
98
+ const settingsWith = (extra: Record<string, unknown>) => ({
99
+ maxQuantityPerProduct: null,
100
+ deliveryConfig: DELIVERY,
101
+ taxConfig: { storefrontTaxRate: 0 },
102
+ vouchersEnabled: true,
103
+ ...extra,
104
+ })
105
+
106
+ const discountsWith = (rows: unknown[] | null, customer: unknown = null) => ({
107
+ enabled: true,
108
+ automaticDiscounts: true,
109
+ rows,
110
+ customer,
111
+ })
112
+
113
+ describe('cart-get-total — discount engine and gift-card tender', () => {
114
+ it('stays one function expression whose entry point still resolves', () => {
115
+ const source = cartGetTotal.generateHandler()
116
+ expect(source.trim().startsWith('async function cart_get_total()')).toBe(true)
117
+ expect(resolveHandlerEntryName(source, 'cart-get-total')).toBe('cart_get_total')
118
+ expect(source).toContain('var __deResolve = function')
119
+ })
120
+
121
+ it('adds nothing for a store without either feature', async () => {
122
+ mount({
123
+ workflow_cart: CART,
124
+ workflow_cart_settings: settingsWith({}),
125
+ workflow_voucher: VOUCHER,
126
+ })
127
+ const out = await runHandler()
128
+ expect(out.discounts).toBeUndefined()
129
+ expect(out.giftCard).toBeUndefined()
130
+ expect(out.displayedAmountDue).toBeUndefined()
131
+ expect(out.subtotal).toBe(250)
132
+ expect(out.total).toBe(250)
133
+ expect(out.voucher).toEqual(VOUCHER)
134
+ })
135
+
136
+ it('prices the automatic rules and the voucher exactly as the summary did', async () => {
137
+ mount({
138
+ workflow_cart: CART,
139
+ workflow_cart_settings: settingsWith({ discounts: discountsWith([TEN_PERCENT]) }),
140
+ workflow_voucher: VOUCHER,
141
+ })
142
+ const out = await runHandler()
143
+ // NET goods stay NET; the discounts arrive additively.
144
+ expect(out.subtotal).toBe(250)
145
+ expect(out.total).toBe(250)
146
+ expect(out.discounts).toMatchObject({
147
+ enabled: true,
148
+ automaticDiscounts: true,
149
+ rows: [TEN_PERCENT],
150
+ customer: null,
151
+ goodsDiscount: 45,
152
+ shippingDiscount: 0,
153
+ automaticDiscount: 25,
154
+ voucherDiscount: 20,
155
+ appliedIds: ['a-ten', 'v1'],
156
+ })
157
+ expect(out.discounts.applied.map((entry: { source: string }) => entry.source)).toEqual([
158
+ 'automatic',
159
+ 'voucher',
160
+ ])
161
+ // 250 goods + 10 delivery − 45.
162
+ expect(out.displayedAmountDue).toBe(215)
163
+ expect(out.giftCard).toBeUndefined()
164
+ })
165
+
166
+ it('reads the shopper context the checkout page-load workflow wrote', async () => {
167
+ mount({
168
+ workflow_cart: CART,
169
+ workflow_cart_settings: settingsWith({
170
+ discounts: discountsWith([FIRST_ORDER]),
171
+ customer: { isFirstOrder: true, resolvedAt: 1 },
172
+ }),
173
+ })
174
+ const out = await runHandler()
175
+ expect(out.discounts.customer).toEqual({ isFirstOrder: true, resolvedAt: 1 })
176
+ expect(out.discounts.automaticDiscount).toBe(5)
177
+
178
+ mount({
179
+ workflow_cart: CART,
180
+ workflow_cart_settings: settingsWith({ discounts: discountsWith([FIRST_ORDER]) }),
181
+ })
182
+ expect((await runHandler()).discounts.automaticDiscount).toBe(0)
183
+ })
184
+
185
+ it('prices exactly the active rows the feed served, whatever the browser clock says', async () => {
186
+ // The data route narrowed the rows to the rules the DATABASE calls live;
187
+ // the server re-prices with that same clock at submit. Re-judging the
188
+ // window here — by a skewed browser clock, or bounds read in another
189
+ // timezone — would price a different set of rules than the one charged.
190
+ const realNow = Date.now
191
+ Date.now = () => Date.parse('2999-06-01T00:00:00.000Z')
192
+ try {
193
+ mount({
194
+ workflow_cart: CART,
195
+ workflow_cart_settings: settingsWith({
196
+ discounts: discountsWith([
197
+ { ...TEN_PERCENT, ends_at: '2000-01-01T00:00:00.000Z' },
198
+ { ...TEN_PERCENT, id: 'a-off', status: 'disabled' },
199
+ ]),
200
+ }),
201
+ })
202
+ const out = await runHandler()
203
+ expect(out.discounts.appliedIds).toEqual(['a-ten'])
204
+ expect(out.discounts.automaticDiscount).toBe(25)
205
+ } finally {
206
+ Date.now = realNow
207
+ }
208
+ })
209
+
210
+ it('prices the order with the set the shopper chose, and reports the sets beside the pick', async () => {
211
+ const fifteen = {
212
+ id: 'a-fifteen',
213
+ name: 'Fifteen off',
214
+ status: 'active',
215
+ discount_type: 'fixed',
216
+ discount_value: '15',
217
+ applies_to_all_products: 't',
218
+ priority: 5,
219
+ stackable: 'f',
220
+ }
221
+ mount({
222
+ workflow_cart: CART,
223
+ workflow_cart_settings: settingsWith({ discounts: discountsWith([TEN_PERCENT, fifteen]) }),
224
+ workflow_discount_choice: 'a-fifteen',
225
+ })
226
+ const picked = await runHandler()
227
+ expect(picked.discounts).toMatchObject({
228
+ automaticDiscount: 15,
229
+ appliedIds: ['a-fifteen'],
230
+ choice: 'a-fifteen',
231
+ })
232
+ expect(
233
+ picked.discounts.options.map((option: { key: string; selected: boolean }) => [
234
+ option.key,
235
+ option.selected,
236
+ ])
237
+ ).toEqual([
238
+ ['a-fifteen', true],
239
+ ['combination', false],
240
+ ])
241
+ // 250 + 10 − 15.
242
+ expect(picked.displayedAmountDue).toBe(245)
243
+
244
+ // A pick the engine no longer offers falls back to the best set.
245
+ mount({
246
+ workflow_cart: CART,
247
+ workflow_cart_settings: settingsWith({ discounts: discountsWith([TEN_PERCENT, fifteen]) }),
248
+ workflow_discount_choice: 'gone',
249
+ })
250
+ const best = await runHandler()
251
+ expect(best.discounts).toMatchObject({ automaticDiscount: 25, choice: 'combination' })
252
+ })
253
+
254
+ it('loads no rules when the merchant left automatic discounts off, but still prices the voucher through the engine', async () => {
255
+ mount({
256
+ workflow_cart: CART,
257
+ workflow_cart_settings: settingsWith({
258
+ discounts: {
259
+ enabled: true,
260
+ automaticDiscounts: false,
261
+ rows: [TEN_PERCENT],
262
+ customer: null,
263
+ },
264
+ }),
265
+ workflow_voucher: VOUCHER,
266
+ })
267
+ const out = await runHandler()
268
+ expect(out.discounts.automaticDiscount).toBe(0)
269
+ expect(out.discounts.voucherDiscount).toBe(20)
270
+ expect(out.discounts.automaticDiscounts).toBe(false)
271
+ })
272
+
273
+ it('honours the vouchers flag the provider mirrored', async () => {
274
+ mount({
275
+ workflow_cart: CART,
276
+ workflow_cart_settings: settingsWith({
277
+ vouchersEnabled: false,
278
+ discounts: discountsWith([]),
279
+ }),
280
+ workflow_voucher: VOUCHER,
281
+ })
282
+ const out = await runHandler()
283
+ expect(out.discounts.voucherDiscount).toBe(0)
284
+ expect(out.discounts.appliedIds).toEqual([])
285
+ // The stored copy is still reported: the workflow decides what to do with it.
286
+ expect(out.voucher).toEqual(VOUCHER)
287
+ })
288
+
289
+ it('nets a waived delivery off the amount due exactly once', async () => {
290
+ mount({
291
+ workflow_cart: CART,
292
+ workflow_cart_settings: settingsWith({ discounts: discountsWith([]) }),
293
+ workflow_voucher: { ...VOUCHER, discount_type: 'free_shipping', discount_value: 0 },
294
+ })
295
+ const out = await runHandler()
296
+ expect(out.discounts.shippingDiscount).toBe(10)
297
+ expect(out.discounts.voucherDiscount).toBe(10)
298
+ expect(out.displayedAmountDue).toBe(250)
299
+ })
300
+
301
+ it('prices the delivery fee the way the provider does, threshold included', async () => {
302
+ mount({
303
+ workflow_cart: CART,
304
+ workflow_cart_settings: settingsWith({
305
+ deliveryConfig: { ...DELIVERY, freeDeliveryEnabled: true, freeDeliveryThreshold: 200 },
306
+ discounts: discountsWith([]),
307
+ }),
308
+ })
309
+ expect((await runHandler()).displayedAmountDue).toBe(250)
310
+
311
+ mount({
312
+ workflow_cart: CART,
313
+ workflow_cart_settings: settingsWith({
314
+ deliveryConfig: { ...DELIVERY, deliveryEnabled: false },
315
+ discounts: discountsWith([]),
316
+ }),
317
+ })
318
+ expect((await runHandler()).displayedAmountDue).toBe(250)
319
+ })
320
+
321
+ it('prices gross lines from the tax rate on a single-rate store', async () => {
322
+ mount({
323
+ workflow_cart: [{ id: 'l1', productId: 'p1', price: 100, quantity: 1 }],
324
+ workflow_cart_settings: settingsWith({
325
+ taxConfig: { storefrontTaxRate: 20 },
326
+ discounts: discountsWith([TEN_PERCENT]),
327
+ }),
328
+ })
329
+ const out = await runHandler()
330
+ expect(out.total).toBe(120)
331
+ expect(out.discounts.automaticDiscount).toBe(12)
332
+ expect(out.displayedAmountDue).toBe(118)
333
+ })
334
+
335
+ it('prices lines already grossed by the regional quote, with its shipping', async () => {
336
+ mount(
337
+ {
338
+ workflow_cart: [{ id: 'l1', productId: 'p1', price: 100, quantity: 1 }],
339
+ workflow_cart_settings: settingsWith({
340
+ discounts: discountsWith([TEN_PERCENT]),
341
+ regional: {
342
+ store: {
343
+ deliveryEnabled: true,
344
+ storePickupEnabled: true,
345
+ deliveryPrice: 5,
346
+ freeDeliveryEnabled: false,
347
+ freeDeliveryThreshold: 0,
348
+ defaultTaxRate: 20,
349
+ defaultTaxIncluded: false,
350
+ },
351
+ currency: 'EUR',
352
+ countryCodes: { germany: 'DE' },
353
+ rows: {
354
+ zones: [{ id: 'z1', name: 'Germany', countries: 'DE', is_active: 't' }],
355
+ rates: [
356
+ { id: 'r1', zone_id: 'z1', name: 'Standard', rate_type: 'flat', price: '10.00' },
357
+ ],
358
+ taxRates: [
359
+ { id: 't1', country_code: 'DE', rate: '19', tax_mode: 'added', tax_shipping: true },
360
+ ],
361
+ },
362
+ },
363
+ }),
364
+ },
365
+ { billingCountry: 'Germany', state: '' }
366
+ )
367
+ const out = await runHandler()
368
+ expect(out.regional).toMatchObject({ goodsGross: 119, shippingGross: 11.9 })
369
+ // 10% of the 119 gross line, never re-taxed.
370
+ expect(out.discounts.automaticDiscount).toBe(11.9)
371
+ expect(out.displayedAmountDue).toBe(119)
372
+ })
373
+
374
+ it('says how much a stored gift card pays of the delivery total', async () => {
375
+ mount({
376
+ workflow_cart: CART,
377
+ workflow_cart_settings: settingsWith({
378
+ discounts: discountsWith([TEN_PERCENT]),
379
+ giftCards: { enabled: true, currency: 'EUR' },
380
+ }),
381
+ workflow_gift_card: CARD,
382
+ })
383
+ const out = await runHandler()
384
+ // 250 + 10 − 25 = 235 owed; the card covers 40 of it.
385
+ expect(out.giftCard).toEqual({
386
+ id: 'gc-1',
387
+ last4: 'ABCD',
388
+ balance: 40,
389
+ amount: 40,
390
+ amountDue: 195,
391
+ })
392
+ expect(out.displayedAmountDue).toBe(195)
393
+ })
394
+
395
+ it('takes a gift card without the discount engine, pricing the voucher in legacy mode', async () => {
396
+ mount({
397
+ workflow_cart: CART,
398
+ workflow_cart_settings: settingsWith({ giftCards: { enabled: true, currency: 'EUR' } }),
399
+ workflow_voucher: VOUCHER,
400
+ workflow_gift_card: { ...CARD, balance: 1000 },
401
+ })
402
+ const out = await runHandler()
403
+ expect(out.discounts).toBeUndefined()
404
+ // 250 + 10 − 20 = 240, all of it on the card.
405
+ expect(out.giftCard).toMatchObject({ amount: 240, amountDue: 0 })
406
+ expect(out.displayedAmountDue).toBe(0)
407
+ })
408
+
409
+ it('reports no gift card when the stored one pays nothing', async () => {
410
+ const settings = settingsWith({ giftCards: { enabled: true, currency: 'EUR' } })
411
+ // Another currency.
412
+ mount({
413
+ workflow_cart: CART,
414
+ workflow_cart_settings: settings,
415
+ workflow_gift_card: { ...CARD, currency: 'USD' },
416
+ })
417
+ expect((await runHandler()).giftCard).toBeNull()
418
+ // A gift card in the basket.
419
+ mount({
420
+ workflow_cart: [
421
+ ...CART,
422
+ { id: 'l3', productId: 'g1', price: 25, quantity: 1, isGiftCard: true },
423
+ ],
424
+ workflow_cart_settings: settings,
425
+ workflow_gift_card: CARD,
426
+ })
427
+ const out = await runHandler()
428
+ expect(out.giftCard).toBeNull()
429
+ expect(out.displayedAmountDue).toBe(285)
430
+ // Nothing stored, or nothing readable.
431
+ mount({ workflow_cart: CART, workflow_cart_settings: settings })
432
+ expect((await runHandler()).giftCard).toBeNull()
433
+ mount({ workflow_cart: CART, workflow_cart_settings: settings, workflow_gift_card: 'not json' })
434
+ expect((await runHandler()).giftCard).toBeNull()
435
+ })
436
+
437
+ it("pays a gift card only on a cart priced in the card's currency, and names the cart's", async () => {
438
+ const settings = settingsWith({ giftCards: { enabled: true, currency: 'EUR' } })
439
+ const priced = (currency: string) => CART.map((line) => ({ ...line, currency }))
440
+ // A USD cart in an EUR store: an EUR card pays nothing, a USD card pays.
441
+ mount({
442
+ workflow_cart: priced('USD'),
443
+ workflow_cart_settings: settings,
444
+ workflow_gift_card: CARD,
445
+ })
446
+ const eurCard = await runHandler()
447
+ expect(eurCard.currency).toBe('USD')
448
+ expect(eurCard.giftCard).toBeNull()
449
+ mount({
450
+ workflow_cart: priced('usd'),
451
+ workflow_cart_settings: settings,
452
+ workflow_gift_card: { ...CARD, currency: 'USD' },
453
+ })
454
+ expect((await runHandler()).giftCard).toMatchObject({ amount: 40, amountDue: 220 })
455
+ // Lines that name no currency are priced in the store's.
456
+ mount({ workflow_cart: CART, workflow_cart_settings: settings, workflow_gift_card: CARD })
457
+ const unnamed = await runHandler()
458
+ expect(unnamed.currency).toBe('')
459
+ expect(unnamed.giftCard).toMatchObject({ amount: 40 })
460
+ })
461
+
462
+ it('returns the untouched zeroed shape when localStorage is unreadable', async () => {
463
+ ;(global as any).localStorage = {
464
+ getItem: () => {
465
+ throw new Error('denied')
466
+ },
467
+ }
468
+ const out = await runHandler()
469
+ expect(Object.keys(out).sort()).toEqual(
470
+ [
471
+ 'deliveryConfig',
472
+ 'itemCount',
473
+ 'productDiscountTotal',
474
+ 'subtotal',
475
+ 'tax',
476
+ 'taxConfig',
477
+ 'total',
478
+ 'voucher',
479
+ ].sort()
480
+ )
481
+ })
482
+ })
483
+
484
+ describe('cart-clear — forgets the applied gift card', () => {
485
+ const handlerCode = cartClear.generateHandler()
486
+
487
+ it('forgets the discount choice with the cart, and tells the provider', () => {
488
+ const source = cartClear.generateHandler()
489
+ expect(source).toContain("localStorage.removeItem('workflow_discount_choice')")
490
+ expect(source).toContain("new CustomEvent('teleport:discount-choice-changed')")
491
+ })
492
+
493
+ it('removes the stored card and tells the provider', () => {
494
+ // The balance belongs to the shopper, not to the emptied cart: the next
495
+ // order asks for the code again rather than silently spending it.
496
+ expect(handlerCode).toContain("localStorage.removeItem('workflow_gift_card')")
497
+ expect(handlerCode).toContain("dispatchEvent(new CustomEvent('teleport:gift-card-changed'))")
498
+ })
499
+ })
@@ -0,0 +1,195 @@
1
+ /* tslint:disable:no-eval function-constructor */
2
+ import { cartGetTotal } from '../src/nodes/cart/cart-get-total'
3
+ import { cartUpdateItemQuantity } from '../src/nodes/cart/cart-update-item-quantity'
4
+ import { cartRemoveItem } from '../src/nodes/cart/cart-remove-item'
5
+ import { cartGetItems } from '../src/nodes/cart/cart-get-items'
6
+ import { cartClear } from '../src/nodes/cart/cart-clear'
7
+
8
+ /**
9
+ * Configured lines need nothing new from the cart totals: a line's `price` is
10
+ * already the NET unit price charged — the charged base plus the options'
11
+ * surcharge — so the subtotal, the storefront tax and the regional quote price
12
+ * it like any other line, and `productDiscountTotal` (which reads only the
13
+ * base's `discountAmount`) counts the base saving alone. Two configurations of
14
+ * one product are two lines, each changed and removed by its own id; reading
15
+ * and clearing the cart need no change either.
16
+ */
17
+
18
+ function evalHandler(code: string): any {
19
+ return eval('(' + code + ')')
20
+ }
21
+
22
+ const runTotal = async () => evalHandler(cartGetTotal.generateHandler())()
23
+
24
+ const load = (generator: { generateHandler: () => string }, entry: string) =>
25
+ new Function('config', `${generator.generateHandler()}\nreturn ${entry}(config)`) as (
26
+ config: Record<string, unknown>
27
+ ) => Promise<unknown>
28
+
29
+ function mount(storage: Record<string, unknown>, fields: Record<string, string> = {}) {
30
+ const store: Record<string, string> = {}
31
+ for (const key of Object.keys(storage)) {
32
+ const value = storage[key]
33
+ store[key] = typeof value === 'string' ? value : JSON.stringify(value)
34
+ }
35
+ ;(global as any).localStorage = {
36
+ getItem: (key: string) => (key in store ? store[key] : null),
37
+ setItem: (key: string, value: string) => {
38
+ store[key] = value
39
+ },
40
+ }
41
+ ;(global as any).window = { dispatchEvent: () => true }
42
+ ;(global as any).CustomEvent = function CustomEvent() {
43
+ return {}
44
+ }
45
+ ;(global as any).document = {
46
+ querySelector: (selector: string) => {
47
+ const match = /^\[name="([^"]+)"\]$/.exec(selector)
48
+ const name = match ? match[1] : ''
49
+ return name in fields ? { value: fields[name] } : null
50
+ },
51
+ }
52
+ return store
53
+ }
54
+
55
+ afterEach(() => {
56
+ delete (global as any).localStorage
57
+ delete (global as any).window
58
+ delete (global as any).CustomEvent
59
+ delete (global as any).document
60
+ })
61
+
62
+ // The worked print example: base $10 with a 10% product discount (charged base
63
+ // 9), A3 +9 and Glossy-on-A3 +8 → 26 per unit; A5 Matte adds nothing.
64
+ const PRINT_LINES = [
65
+ {
66
+ id: 'l-a3',
67
+ productId: 'print',
68
+ quantity: 2,
69
+ price: 26,
70
+ basePrice: 9,
71
+ configuration: '[{"key":"paper","value":"glossy"},{"key":"size","value":"a3"}]',
72
+ configurationKey: '0123456789abcdef',
73
+ configurationLabel: 'Size: A3 · Paper: Glossy',
74
+ configurationPriceDelta: 17,
75
+ originalPrice: 27,
76
+ discountType: 'percentage',
77
+ discountValue: 10,
78
+ discountAmount: 1,
79
+ },
80
+ {
81
+ id: 'l-a5',
82
+ productId: 'print',
83
+ quantity: 1,
84
+ price: 9,
85
+ basePrice: 9,
86
+ configuration: '[{"key":"paper","value":"matte"},{"key":"size","value":"a5"}]',
87
+ configurationKey: 'fedcba9876543210',
88
+ configurationLabel: 'Size: A5 · Paper: Matte',
89
+ configurationPriceDelta: 0,
90
+ originalPrice: 10,
91
+ discountType: 'percentage',
92
+ discountValue: 10,
93
+ discountAmount: 1,
94
+ },
95
+ ]
96
+
97
+ const SETTINGS = {
98
+ maxQuantityPerProduct: null,
99
+ deliveryConfig: { deliveryPrice: 0, freeDeliveryEnabled: false, freeDeliveryThreshold: 0 },
100
+ taxConfig: { storefrontTaxRate: 20 },
101
+ }
102
+
103
+ describe('cart-get-total — configured lines', () => {
104
+ it('totals each configured line at its own price, taxed per unit', async () => {
105
+ mount({ workflow_cart: PRINT_LINES, workflow_cart_settings: SETTINGS })
106
+ const out = await runTotal()
107
+ expect(out.subtotal).toBe(61)
108
+ // 26 → 31.20 gross per unit, 9 → 10.80.
109
+ expect(out.total).toBe(73.2)
110
+ expect(out.tax).toBe(12.2)
111
+ expect(out.itemCount).toBe(3)
112
+ })
113
+
114
+ it('counts the product discount on the base only, never on the options', async () => {
115
+ mount({ workflow_cart: PRINT_LINES, workflow_cart_settings: SETTINGS })
116
+ expect((await runTotal()).productDiscountTotal).toBe(3)
117
+ })
118
+
119
+ it('quotes a regional line per configured line', async () => {
120
+ mount(
121
+ {
122
+ workflow_cart: PRINT_LINES,
123
+ workflow_cart_settings: {
124
+ ...SETTINGS,
125
+ regional: {
126
+ store: {
127
+ deliveryEnabled: true,
128
+ storePickupEnabled: false,
129
+ deliveryPrice: 0,
130
+ freeDeliveryEnabled: false,
131
+ freeDeliveryThreshold: 0,
132
+ defaultTaxRate: 20,
133
+ defaultTaxIncluded: false,
134
+ },
135
+ currency: 'EUR',
136
+ countryCodes: { germany: 'DE' },
137
+ rows: {
138
+ zones: [{ id: 'z1', name: 'DE', countries: 'DE', is_active: 't' }],
139
+ rates: [{ id: 'r1', zone_id: 'z1', name: 'Std', rate_type: 'flat', price: '0' }],
140
+ taxRates: [{ id: 't1', country_code: 'DE', rate: '19', tax_mode: 'added' }],
141
+ },
142
+ },
143
+ },
144
+ },
145
+ { billingCountry: 'Germany', state: '' }
146
+ )
147
+ const out = await runTotal()
148
+ expect(out.regional.lines).toMatchObject([
149
+ { key: 'l-a3', productId: 'print', unitGross: 30.94, taxRate: 19 },
150
+ { key: 'l-a5', productId: 'print', unitGross: 10.71, taxRate: 19 },
151
+ ])
152
+ })
153
+ })
154
+
155
+ describe('cart line changes by id — two configurations of one product', () => {
156
+ it('increments only the line it names', async () => {
157
+ const store = mount({ workflow_cart: PRINT_LINES })
158
+ await load(
159
+ cartUpdateItemQuantity,
160
+ 'cart_update_item_quantity'
161
+ )({
162
+ itemId: 'l-a5',
163
+ quantity: 2,
164
+ updateMode: 'increment',
165
+ })
166
+ const cart = JSON.parse(store.workflow_cart)
167
+ expect(cart.map((line: { quantity: number }) => line.quantity)).toEqual([2, 3])
168
+ expect(cart[1].configurationKey).toBe('fedcba9876543210')
169
+ })
170
+
171
+ it('removes only the line it names', async () => {
172
+ const store = mount({ workflow_cart: PRINT_LINES })
173
+ await load(cartRemoveItem, 'cart_remove_item')({ itemId: 'l-a3' })
174
+ const cart = JSON.parse(store.workflow_cart)
175
+ expect(cart.map((line: { id: string }) => line.id)).toEqual(['l-a5'])
176
+ })
177
+ })
178
+
179
+ describe('cart-get-items and cart-clear — configured lines', () => {
180
+ it('hands the workflow every configured line as stored, at its own price', async () => {
181
+ mount({ workflow_cart: PRINT_LINES })
182
+ expect(await load(cartGetItems, 'cart_get_items')({})).toEqual({
183
+ items: PRINT_LINES,
184
+ itemCount: 3,
185
+ subtotal: 61,
186
+ currency: '',
187
+ })
188
+ })
189
+
190
+ it('clears every configuration', async () => {
191
+ const store = mount({ workflow_cart: PRINT_LINES })
192
+ expect(await load(cartClear, 'cart_clear')({})).toEqual({ success: true })
193
+ expect(JSON.parse(store.workflow_cart)).toEqual([])
194
+ })
195
+ })