@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
@@ -1,3 +1,4 @@
1
+ import { CartCurrency } from '@teleporthq/teleport-shared'
1
2
  import { NodeHandlerGenerator, handlerToString } from '../types'
2
3
  import {
3
4
  COMMERCE_TRACKING_HELPER_SOURCE,
@@ -10,6 +11,11 @@ import {
10
11
  // module scope. Declaring the name emits nothing and leaves a bare identifier
11
12
  // that the appended helper source defines. See `commerce-tracking.ts`.
12
13
  declare function trackCommerceStep(step: { name: string; detail?: Record<string, unknown> }): void
14
+ // Same, for the cart-currency rule (`CartCurrency` in teleport-shared).
15
+ declare function __ccCurrencyRefusal(input: {
16
+ lines: unknown[]
17
+ currency: unknown
18
+ }): { added: false; reason: string; message: string } | null
13
19
 
14
20
  async function cart_add_item(config: any) {
15
21
  const productId = config.productId
@@ -30,6 +36,120 @@ async function cart_add_item(config: any) {
30
36
  const discountType = config.discountType || null
31
37
  const discountValue = config.discountValue != null ? Number(config.discountValue) : null
32
38
  const discountAmount = config.discountAmount != null ? Number(config.discountAmount) : 0
39
+ // What the discount engine prices the line by: its category ids INCLUDING
40
+ // ancestors (`category_filter_ids`), and whether the product IS a gift card
41
+ // — never discounted, and a cart holding one cannot be paid with one. The
42
+ // workflow may hand either the parsed array or the raw JSON column, and a
43
+ // config boolean arrives as the string 'true'; anything unreadable is
44
+ // "no categories" / "not a gift card", never a thrown add-to-cart.
45
+ let categoryIds: string[] = []
46
+ try {
47
+ let rawCategories = config.categoryIds
48
+ if (typeof rawCategories === 'string' && rawCategories !== '') {
49
+ rawCategories = JSON.parse(rawCategories)
50
+ }
51
+ if (Array.isArray(rawCategories)) {
52
+ categoryIds = rawCategories
53
+ .filter((entry: unknown) => entry !== null && entry !== undefined && entry !== '')
54
+ .map((entry: unknown) => String(entry))
55
+ }
56
+ } catch {
57
+ categoryIds = []
58
+ }
59
+ const readFlag = (value: unknown): boolean =>
60
+ value === true ||
61
+ value === 1 ||
62
+ (typeof value === 'string' && ['true', 't', '1', 'yes'].indexOf(value.toLowerCase()) !== -1)
63
+ const isGiftCard = readFlag(config.isGiftCard)
64
+ // The line's kind, from the product row the workflow fetched: a subscription
65
+ // is billed by the provider every interval and checks out alone at quantity
66
+ // one; a gift card is issued by email once paid; a digital line is delivered
67
+ // from the order page; anything else ships. One order holds ONE kind, so the
68
+ // cart does too — a line of another kind is refused here, before anything is
69
+ // written, and the workflow toasts why. One order is also charged in ONE
70
+ // currency, so a line priced in another currency is refused the same way.
71
+ const isRecurring = readFlag(config.isRecurring)
72
+ const isDigital = readFlag(config.isDigital)
73
+ const recurringInterval = isRecurring ? String(config.recurringInterval || 'month') : null
74
+ const recurringIntervalCount = isRecurring
75
+ ? Math.max(1, Math.floor(Number(config.recurringIntervalCount)) || 1)
76
+ : null
77
+ const trialDays = isRecurring ? Math.max(0, Math.floor(Number(config.trialDays)) || 0) : null
78
+ const kindOf = (line: any): 'subscription' | 'gift-card' | 'digital' | 'physical' =>
79
+ readFlag(line && line.isRecurring)
80
+ ? 'subscription'
81
+ : readFlag(line && line.isGiftCard)
82
+ ? 'gift-card'
83
+ : readFlag(line && line.isDigital)
84
+ ? 'digital'
85
+ : 'physical'
86
+ const KIND_LABELS = {
87
+ subscription: 'Subscriptions',
88
+ 'gift-card': 'Gift cards',
89
+ digital: 'Digital products',
90
+ physical: 'Physical products',
91
+ }
92
+ const lineKind = kindOf({ isRecurring, isGiftCard, isDigital })
93
+ const refuse = (
94
+ reason: 'mixed-cart' | 'mixed-currency' | 'one-subscription' | 'options-invalid',
95
+ message: string
96
+ ) => ({
97
+ added: false,
98
+ reason,
99
+ message,
100
+ })
101
+
102
+ // The options the shopper chose, priced by the add-to-cart workflow:
103
+ // `configuration` is the canonical JSON of the answers and `configurationKey`
104
+ // its hash. A line is identified by product, variant AND configuration, so
105
+ // two configurations of one product are two lines. `price` already includes
106
+ // the options' surcharge (`configurationPriceDelta`, NET per unit) on top of
107
+ // `basePrice`, the charged base, so every total downstream reads `price`
108
+ // unchanged. A line without options carries none of these fields.
109
+ const rawConfiguration = config.configuration
110
+ const configuration = Array.isArray(rawConfiguration)
111
+ ? rawConfiguration.length > 0
112
+ ? JSON.stringify(rawConfiguration)
113
+ : ''
114
+ : typeof rawConfiguration === 'string'
115
+ ? rawConfiguration.trim()
116
+ : ''
117
+ const configurationKey = configuration
118
+ ? String(config.configurationKey == null ? '' : config.configurationKey)
119
+ .trim()
120
+ .slice(0, 64)
121
+ : ''
122
+ const configurationPriceDelta =
123
+ config.configurationPriceDelta == null || config.configurationPriceDelta === ''
124
+ ? 0
125
+ : Number(config.configurationPriceDelta)
126
+ // The same 8000-character cap the checkout enforces, so a line the checkout
127
+ // would refuse never reaches the cart.
128
+ if (configuration.length > 8000) {
129
+ return refuse('options-invalid', 'Your personalisation is too long. Please shorten it.')
130
+ }
131
+ if (
132
+ configuration &&
133
+ (!configurationKey || !isFinite(configurationPriceDelta) || configurationPriceDelta < 0)
134
+ ) {
135
+ return refuse(
136
+ 'options-invalid',
137
+ 'Some of the options you chose are no longer available. Please review them.'
138
+ )
139
+ }
140
+ const statedBasePrice =
141
+ config.basePrice == null || config.basePrice === '' ? NaN : Number(config.basePrice)
142
+ const lineOptions = configurationKey
143
+ ? {
144
+ configuration,
145
+ configurationKey,
146
+ configurationLabel: String(config.configurationLabel || '').slice(0, 500),
147
+ configurationPriceDelta,
148
+ basePrice: isFinite(statedBasePrice)
149
+ ? statedBasePrice
150
+ : Math.round((price - configurationPriceDelta) * 100) / 100,
151
+ }
152
+ : null
33
153
 
34
154
  // Per-product cap is published by `EcommerceProvider` to localStorage so
35
155
  // workflow handlers (which run outside React) can enforce the same limit
@@ -49,11 +169,44 @@ async function cart_add_item(config: any) {
49
169
  const raw = localStorage.getItem('workflow_cart')
50
170
  const cart: any[] = raw ? JSON.parse(raw) : []
51
171
 
172
+ // The key is a lookup hint, not an identity: a configured line is the same
173
+ // line only when its configuration is identical too.
52
174
  const existingIndex = cart.findIndex(
53
175
  (item: any) =>
54
- item.productId === productId && (item.variantId || null) === (variantId || null)
176
+ item.productId === productId &&
177
+ (item.variantId || null) === (variantId || null) &&
178
+ String(item.configurationKey || '') === configurationKey &&
179
+ (!configurationKey || item.configuration === configuration)
55
180
  )
56
181
 
182
+ // A subscription already in the cart is the one unit it will ever be.
183
+ if (existingIndex >= 0 && (isRecurring || kindOf(cart[existingIndex]) === 'subscription')) {
184
+ return refuse(
185
+ 'one-subscription',
186
+ 'Subscriptions are checked out on their own. Finish or empty your current cart first.'
187
+ )
188
+ }
189
+ const otherLines = cart.filter((_line: any, index: number) => index !== existingIndex)
190
+ if (otherLines.length > 0) {
191
+ if (isRecurring || kindOf(otherLines[0]) === 'subscription') {
192
+ return refuse(
193
+ 'one-subscription',
194
+ 'Subscriptions are checked out on their own. Finish or empty your current cart first.'
195
+ )
196
+ }
197
+ if (kindOf(otherLines[0]) !== lineKind) {
198
+ return refuse(
199
+ 'mixed-cart',
200
+ KIND_LABELS[lineKind] +
201
+ ' need a separate order. Complete your current order or remove the other items from your cart first.'
202
+ )
203
+ }
204
+ const currencyRefusal = __ccCurrencyRefusal({ lines: otherLines, currency })
205
+ if (currencyRefusal) {
206
+ return refuse('mixed-currency', currencyRefusal.message)
207
+ }
208
+ }
209
+
57
210
  if (existingIndex >= 0) {
58
211
  let nextQty = (Number(cart[existingIndex].quantity) || 0) + quantity
59
212
  if (maxQty !== null && nextQty > maxQty) {
@@ -86,6 +239,21 @@ async function cart_add_item(config: any) {
86
239
  cart[existingIndex].discountType = discountType
87
240
  cart[existingIndex].discountValue = discountValue
88
241
  cart[existingIndex].discountAmount = discountAmount
242
+ // Same rule: a product moved to another category, or turned into a gift
243
+ // card, must re-price on the next add — the empty list and `false` are
244
+ // the values that say "none".
245
+ cart[existingIndex].categoryIds = categoryIds
246
+ cart[existingIndex].isGiftCard = isGiftCard
247
+ cart[existingIndex].isRecurring = isRecurring
248
+ cart[existingIndex].recurringInterval = recurringInterval
249
+ cart[existingIndex].recurringIntervalCount = recurringIntervalCount
250
+ cart[existingIndex].trialDays = trialDays
251
+ cart[existingIndex].isDigital = isDigital
252
+ // The same answers can carry a new label or surcharge (an option renamed
253
+ // or repriced since the line was added).
254
+ if (lineOptions) {
255
+ Object.assign(cart[existingIndex], lineOptions)
256
+ }
89
257
  localStorage.setItem('workflow_cart', JSON.stringify(cart))
90
258
  if (typeof window !== 'undefined') {
91
259
  window.dispatchEvent(new CustomEvent('teleport:cart-changed'))
@@ -100,13 +268,18 @@ async function cart_add_item(config: any) {
100
268
  items: [{ item_id: productId, item_name: name, price, quantity }],
101
269
  },
102
270
  })
103
- return {
271
+ const updated: any = {
104
272
  id: cart[existingIndex].id,
105
273
  productId,
106
274
  quantity: cart[existingIndex].quantity,
275
+ added: true,
276
+ }
277
+ if (lineOptions) {
278
+ updated.configurationKey = configurationKey
107
279
  }
280
+ return updated
108
281
  } else {
109
- let initialQty = quantity
282
+ let initialQty = isRecurring ? 1 : quantity
110
283
  if (maxQty !== null && initialQty > maxQty) {
111
284
  initialQty = maxQty
112
285
  }
@@ -125,6 +298,16 @@ async function cart_add_item(config: any) {
125
298
  discountType,
126
299
  discountValue,
127
300
  discountAmount,
301
+ categoryIds,
302
+ isGiftCard,
303
+ isRecurring,
304
+ recurringInterval,
305
+ recurringIntervalCount,
306
+ trialDays,
307
+ isDigital,
308
+ }
309
+ if (lineOptions) {
310
+ Object.assign(newItem, lineOptions)
128
311
  }
129
312
  cart.push(newItem)
130
313
  localStorage.setItem('workflow_cart', JSON.stringify(cart))
@@ -139,7 +322,11 @@ async function cart_add_item(config: any) {
139
322
  items: [{ item_id: productId, item_name: name, price, quantity: initialQty }],
140
323
  },
141
324
  })
142
- return { id: newItem.id, productId, quantity: initialQty }
325
+ const added: any = { id: newItem.id, productId, quantity: initialQty, added: true }
326
+ if (lineOptions) {
327
+ added.configurationKey = configurationKey
328
+ }
329
+ return added
143
330
  }
144
331
  } catch (err: unknown) {
145
332
  return { success: false, error: (err as Error).message }
@@ -149,12 +336,16 @@ export const cartAddItem: NodeHandlerGenerator = {
149
336
  nodeType: 'cart-add-item',
150
337
  executionEnv: 'client',
151
338
  generateHandler(): string {
152
- // The helper is concatenated rather than imported: the handler ships as a
153
- // serialized function body with no module scope. It is a string literal
154
- // rather than a `.toString()` so a consumer's minifier cannot strip its
155
- // declaration name. See `commerce-tracking.ts`.
339
+ // The helpers are concatenated rather than imported: the handler ships as
340
+ // a serialized function body with no module scope. They are string
341
+ // literals rather than a `.toString()` so a consumer's minifier cannot
342
+ // strip their declaration names. See `commerce-tracking.ts`.
156
343
  return assertHandlerHasNoModuleRefs(
157
- handlerToString(cart_add_item) + '\n' + COMMERCE_TRACKING_HELPER_SOURCE,
344
+ handlerToString(cart_add_item) +
345
+ '\n' +
346
+ COMMERCE_TRACKING_HELPER_SOURCE +
347
+ '\n' +
348
+ CartCurrency.generateCartCurrencyHelperCode(),
158
349
  'cart-add-item'
159
350
  )
160
351
  },
@@ -43,6 +43,15 @@ async function cart_clear() {
43
43
  // key — a serialized handler cannot import
44
44
  // `RegionalPricing.SHIPPING_RATE_STORAGE_KEY`.
45
45
  localStorage.removeItem('workflow_shipping_rate')
46
+ // And the gift card applied to it: its balance belongs to the shopper,
47
+ // not to this cart, so the next order asks for the code again rather
48
+ // than silently spending what is left. Literal key — a serialized
49
+ // handler cannot import `DiscountEngine.GIFT_CARD_STORAGE_KEY`.
50
+ localStorage.removeItem('workflow_gift_card')
51
+ // And the discount set chosen for it: the next order's choice is made
52
+ // over the next order's discounts. Literal key — a serialized handler
53
+ // cannot import `DiscountEngine.DISCOUNT_CHOICE_STORAGE_KEY`.
54
+ localStorage.removeItem('workflow_discount_choice')
46
55
  const sessionId = localStorage.getItem('workflow_cart_session_id') || null
47
56
  fetch('/api/cart/sync', {
48
57
  method: 'POST',
@@ -55,6 +64,8 @@ async function cart_clear() {
55
64
  window.dispatchEvent(new CustomEvent('teleport:cart-changed'))
56
65
  window.dispatchEvent(new CustomEvent('teleport:voucher-changed'))
57
66
  window.dispatchEvent(new CustomEvent('teleport:shipping-rate-changed'))
67
+ window.dispatchEvent(new CustomEvent('teleport:gift-card-changed'))
68
+ window.dispatchEvent(new CustomEvent('teleport:discount-choice-changed'))
58
69
  }
59
70
  return { success: true }
60
71
  } catch (err: unknown) {
@@ -1,13 +1,21 @@
1
- import { RegionalPricing } from '@teleporthq/teleport-shared'
1
+ import { CartCurrency, DiscountEngine, RegionalPricing } from '@teleporthq/teleport-shared'
2
2
  import { NodeHandlerGenerator, handlerToString } from '../types'
3
3
 
4
4
  // AMBIENT, not imported: the handler ships as a serialized function with no
5
- // module scope, and the shared regional-pricing helpers are spliced into its
6
- // body by `generateHandler` below. See `commerce-tracking.ts` for why an import
7
- // would compile to a module reference that throws in the browser.
5
+ // module scope, and the shared regional-pricing and discount-engine helpers
6
+ // are spliced into its body by `generateHandler` below. See
7
+ // `commerce-tracking.ts` for why an import would compile to a module reference
8
+ // that throws in the browser.
8
9
  declare function __rpQuote(input: Record<string, unknown>): any
9
10
  declare function __rpNormalizeConfig(rows: unknown): Record<string, unknown>
10
11
  declare function __rpReadCheckoutDestination(countryCodes: unknown): Record<string, string> | null
12
+ declare function __deNormalizeRule(row: unknown, source: string): Record<string, unknown> | null
13
+ declare function __deLinesFromCart(items: unknown): unknown[]
14
+ declare function __deResolve(input: Record<string, unknown>): any
15
+ declare function __deTender(input: Record<string, unknown>): { applied: number; amountDue: number }
16
+ declare function __deBool(value: unknown, fallback: boolean): boolean
17
+ declare function __ccCode(value: unknown): string
18
+ declare function __ccCartCurrency(lines: unknown): string
11
19
 
12
20
  async function cart_get_total() {
13
21
  try {
@@ -55,6 +63,39 @@ async function cart_get_total() {
55
63
  // provider priced the page from, mirrored for exactly this moment. Present
56
64
  // only on a store with regional pricing.
57
65
  let regionalSnapshot: Record<string, any> | null = null
66
+ // The discount engine's rule feed (`{ enabled, automaticDiscounts, rows,
67
+ // customer }`), the shopper context the checkout page-load workflow wrote
68
+ // (`{ isFirstOrder, resolvedAt }`) and the gift-card feature
69
+ // (`{ enabled, currency }`), all mirrored by the provider for exactly this
70
+ // moment. Each is absent on a store without the feature, and on a
71
+ // storefront exported before it existed — which correctly resolves to the
72
+ // flat voucher rule and no tender. Whether a stored voucher is honoured
73
+ // at all travels the same way; absent means no objection.
74
+ let discountsSnapshot: Record<string, any> | null = null
75
+ let customerSnapshot: Record<string, any> | null = null
76
+ let giftCardsSnapshot: Record<string, any> | null = null
77
+ // Whether recurring products can be sold and by which providers — mirrored
78
+ // at export, so the place-order script reads the CURRENT capability rather
79
+ // than the list baked into it when the checkout page was built.
80
+ let subscriptionsSnapshot: Record<string, any> | null = null
81
+ // Which cart kinds each provider may be paid for (see the storefront context).
82
+ let paymentKindsSnapshot: Record<string, unknown> | null = null
83
+ let vouchersEnabled = true
84
+ // The gift card the shopper applied — `{ id, last4, balance, currency }`
85
+ // as the Apply Gift Card workflow left it. The place-order workflow uses
86
+ // ONLY its `id`, to re-read and debit the row; the balance here decides
87
+ // what the summary showed, never what is charged.
88
+ let storedGiftCard: Record<string, any> | null = null
89
+ // The set of discounts the shopper chose when several could apply but not
90
+ // together — the checkout's chooser writes it; unknown reads as "the set
91
+ // that saves the most". Literal key: a serialized handler cannot import
92
+ // `DiscountEngine.DISCOUNT_CHOICE_STORAGE_KEY`.
93
+ let discountChoice = ''
94
+ try {
95
+ discountChoice = localStorage.getItem('workflow_discount_choice') || ''
96
+ } catch (_choiceErr) {
97
+ discountChoice = ''
98
+ }
58
99
  try {
59
100
  const voucherRaw = localStorage.getItem('workflow_voucher')
60
101
  if (voucherRaw) {
@@ -97,10 +138,41 @@ async function cart_get_total() {
97
138
  const parsedRate = Number(parsed.taxConfig.storefrontTaxRate)
98
139
  storefrontTaxRate = isFinite(parsedRate) && parsedRate > 0 ? parsedRate : 0
99
140
  }
141
+ if (parsed && typeof parsed === 'object') {
142
+ if (parsed.discounts && typeof parsed.discounts === 'object') {
143
+ discountsSnapshot = parsed.discounts
144
+ }
145
+ if (parsed.customer && typeof parsed.customer === 'object') {
146
+ customerSnapshot = parsed.customer
147
+ }
148
+ if (parsed.giftCards && typeof parsed.giftCards === 'object') {
149
+ giftCardsSnapshot = parsed.giftCards
150
+ }
151
+ if (typeof parsed.vouchersEnabled === 'boolean') {
152
+ vouchersEnabled = parsed.vouchersEnabled
153
+ }
154
+ if (parsed.subscriptions && typeof parsed.subscriptions === 'object') {
155
+ subscriptionsSnapshot = parsed.subscriptions
156
+ }
157
+ if (parsed.paymentKinds && typeof parsed.paymentKinds === 'object') {
158
+ paymentKindsSnapshot = parsed.paymentKinds
159
+ }
160
+ }
100
161
  }
101
162
  } catch (_settingsErr) {
102
163
  /* ignore — fall back to absent deliveryConfig / no tax */
103
164
  }
165
+ try {
166
+ const giftCardRaw = localStorage.getItem('workflow_gift_card')
167
+ if (giftCardRaw) {
168
+ const parsedGiftCard = JSON.parse(giftCardRaw)
169
+ if (parsedGiftCard && typeof parsedGiftCard === 'object' && parsedGiftCard.id) {
170
+ storedGiftCard = parsedGiftCard
171
+ }
172
+ }
173
+ } catch (_giftCardErr) {
174
+ /* ignore — malformed or unavailable storage reads as no gift card */
175
+ }
104
176
 
105
177
  const round = (n: number) => Math.round(n * 100) / 100
106
178
  // Per-UNIT rounding, matching EcommerceProvider exactly, so the amount the
@@ -133,11 +205,35 @@ async function cart_get_total() {
133
205
 
134
206
  let roundedGross = round(gross)
135
207
  let tax = round(gross - net)
208
+ // The currency every line is priced in — one per cart (the add-to-cart
209
+ // node refuses a second) — or '' for a cart whose lines name none. The
210
+ // place-order workflow records and charges the order in it.
211
+ const cartCurrency = __ccCartCurrency(cart)
212
+
213
+ // The subscription in the basket (at most one — the add-to-cart node
214
+ // refuses a second), whether its first charge is a free trial, and
215
+ // whether every line is delivered without a parcel (a download or a gift
216
+ // card). Read off the flags the add-to-cart node and the provider's
217
+ // hydration stamp, so a storefront exported before them reads as neither.
218
+ let hasRecurringLines = false
219
+ let hasRecurringTrial = false
220
+ let digitalLines = 0
221
+ for (const item of cart) {
222
+ if (item && __deBool(item.isRecurring, false)) {
223
+ hasRecurringLines = true
224
+ if (Math.floor(Number(item.trialDays)) > 0) hasRecurringTrial = true
225
+ }
226
+ if (item && (__deBool(item.isDigital, false) || __deBool(item.isGiftCard, false))) {
227
+ digitalLines += 1
228
+ }
229
+ }
230
+ const isDigitalOnly = cart.length > 0 && digitalLines === cart.length
136
231
 
137
232
  // Re-priced HERE, at submit, for the address on the checkout form right
138
233
  // now — with the same rule and the same rows the provider displayed from —
139
234
  // rather than trusting a figure computed before the buyer's last edit.
140
235
  let regional: Record<string, unknown> | null = null
236
+ let regionalQuote: any = null
141
237
  if (regionalSnapshot) {
142
238
  const store =
143
239
  regionalSnapshot.store && typeof regionalSnapshot.store === 'object'
@@ -163,6 +259,7 @@ async function cart_get_total() {
163
259
  selectedRateId,
164
260
  currency: regionalSnapshot.currency,
165
261
  })
262
+ regionalQuote = quote
166
263
  tax = quote.goodsTax
167
264
  roundedGross = quote.goodsGross
168
265
  regional = {
@@ -170,13 +267,17 @@ async function cart_get_total() {
170
267
  destination: quote.destination,
171
268
  zoneName: quote.zone ? quote.zone.name : '',
172
269
  rateName: quote.rateName,
270
+ // The rate the buyer picked, so the server step prices the same one.
271
+ selectedRateId: quote.selectedRateId || '',
173
272
  codAvailable: quote.codAvailable,
174
273
  goodsNet: quote.goodsNet,
175
274
  goodsTax: quote.goodsTax,
176
275
  goodsGross: quote.goodsGross,
177
- shippingNet: quote.shippingNet,
178
- shippingTax: quote.shippingTax,
179
- shippingGross: quote.shippingGross,
276
+ // A digital-only cart ships nothing, so the zone's fee is not charged
277
+ // — the provider priced the page the same way.
278
+ shippingNet: isDigitalOnly ? 0 : quote.shippingNet,
279
+ shippingTax: isDigitalOnly ? 0 : quote.shippingTax,
280
+ shippingGross: isDigitalOnly ? 0 : quote.shippingGross,
180
281
  taxRate: quote.taxRate,
181
282
  taxIncluded: quote.taxIncluded,
182
283
  taxDecimals: quote.taxDecimals,
@@ -208,18 +309,185 @@ async function cart_get_total() {
208
309
  // rounding, same source of truth.
209
310
  total: roundedGross,
210
311
  itemCount,
312
+ currency: cartCurrency,
211
313
  // NET sum of the per-product markdowns already reflected in the prices
212
314
  // above. Recorded on the order for reporting; never subtracted again.
213
315
  productDiscountTotal: round(productDiscount),
214
316
  deliveryConfig,
215
317
  taxConfig: { storefrontTaxRate },
216
318
  voucher,
319
+ // What the place-order workflow branches on: a subscription opens the
320
+ // provider's checkout in subscription mode, a digital-only order is
321
+ // charged no delivery and completes on payment.
322
+ hasRecurringLines,
323
+ isDigitalOnly,
217
324
  }
218
325
  // Absent on a store without regional pricing, which is what tells the
219
326
  // place-order workflow to price shipping from `deliveryConfig` as before.
220
327
  if (regional) {
221
328
  result.regional = regional
222
329
  }
330
+ if (subscriptionsSnapshot) {
331
+ result.subscriptions = subscriptionsSnapshot
332
+ }
333
+ if (paymentKindsSnapshot) {
334
+ result.paymentKinds = paymentKindsSnapshot
335
+ }
336
+
337
+ // The discount engine and the gift-card tender, re-priced HERE, at submit,
338
+ // exactly as the provider priced the summary: the same shared rule over the
339
+ // same lines, rules and shopper context, so the amount the place-order
340
+ // workflow compares against (`displayedAmountDue`) is the amount the buyer
341
+ // was shown. Only for a store that mirrored either feature — a legacy
342
+ // storefront's result keeps every key it ever had and gains none.
343
+ const discountsEnabled = discountsSnapshot !== null && discountsSnapshot.enabled === true
344
+ const giftCardsEnabled = giftCardsSnapshot !== null && giftCardsSnapshot.enabled === true
345
+ if (discountsEnabled || giftCardsEnabled) {
346
+ // The lines the engine prices: on a regional store already GROSS in the
347
+ // destination's tax (rate 0), otherwise the stored NET lines with the
348
+ // storefront rate — the provider's `regionalVoucherItems` projection.
349
+ let engineItems: any[] = cart
350
+ let engineTaxRate = storefrontTaxRate
351
+ // The delivery fee that would be charged before any discount, priced the
352
+ // way the provider's `computeShippingMeta` / regional quote prices it.
353
+ let shippingPrice = 0
354
+ if (regionalQuote) {
355
+ engineTaxRate = 0
356
+ shippingPrice = round(Number(regionalQuote.shippingGross) || 0)
357
+ engineItems = cart.map((item: any, index: number) => {
358
+ const key =
359
+ item && item.id !== undefined && item.id !== null ? String(item.id) : String(index)
360
+ const quoteLines: any[] = Array.isArray(regionalQuote.lines) ? regionalQuote.lines : []
361
+ for (const line of quoteLines) {
362
+ if (line && line.key === key) {
363
+ return { ...item, price: line.unitGross }
364
+ }
365
+ }
366
+ return item
367
+ })
368
+ } else if (deliveryConfig && deliveryConfig.deliveryEnabled === true) {
369
+ const threshold = round(deliveryConfig.freeDeliveryThreshold)
370
+ // Same half-cent epsilon as the provider, for the same IEEE-754 drift.
371
+ const shippingIsFree =
372
+ deliveryConfig.freeDeliveryEnabled && roundedGross + 0.005 >= threshold
373
+ shippingPrice = shippingIsFree ? 0 : round(deliveryConfig.deliveryPrice)
374
+ }
375
+ // Nothing to ship on a digital-only cart: no fee, so nothing to waive —
376
+ // the provider priced the page the same way.
377
+ if (isDigitalOnly) {
378
+ shippingPrice = 0
379
+ }
380
+ const customer = customerSnapshot || (discountsSnapshot && discountsSnapshot.customer) || null
381
+ const rules: unknown[] = []
382
+ if (
383
+ discountsEnabled &&
384
+ discountsSnapshot.automaticDiscounts === true &&
385
+ Array.isArray(discountsSnapshot.rows)
386
+ ) {
387
+ // Exactly the rows the provider priced: the data route served only the
388
+ // rules the DATABASE calls live, and the browser clock is not asked
389
+ // again — the same clock re-prices the order server-side, so a rule
390
+ // that has since ended is caught there and the feed re-read.
391
+ for (const row of discountsSnapshot.rows) {
392
+ if (!row || typeof row !== 'object' || row.status !== 'active') continue
393
+ const rule = __deNormalizeRule(row, 'automatic')
394
+ if (rule) rules.push(rule)
395
+ }
396
+ }
397
+ const evaluation = __deResolve({
398
+ rules,
399
+ voucher: vouchersEnabled && voucher ? __deNormalizeRule(voucher, 'voucher') : null,
400
+ lines: __deLinesFromCart(engineItems),
401
+ taxRatePercent: engineTaxRate,
402
+ shippingPrice,
403
+ customer: {
404
+ isFirstOrder:
405
+ customer && typeof customer.isFirstOrder === 'boolean' ? customer.isFirstOrder : null,
406
+ },
407
+ // A store without the rule feed prices its voucher the way its baked
408
+ // place-order workflow does: no conditions, no stacking.
409
+ legacy: !discountsEnabled,
410
+ choice: discountChoice,
411
+ })
412
+ const effectiveShipping = Math.max(0, round(shippingPrice - evaluation.shippingDiscount))
413
+ const deliveryTotal = Math.max(
414
+ 0,
415
+ round(roundedGross + effectiveShipping - evaluation.goodsDiscount)
416
+ )
417
+ if (discountsEnabled) {
418
+ const appliedIds: string[] = []
419
+ for (const entry of evaluation.applied) {
420
+ appliedIds.push(String(entry.id))
421
+ }
422
+ result.discounts = {
423
+ enabled: true,
424
+ automaticDiscounts: discountsSnapshot.automaticDiscounts === true,
425
+ rows: Array.isArray(discountsSnapshot.rows) ? discountsSnapshot.rows : null,
426
+ customer,
427
+ applied: evaluation.applied,
428
+ goodsDiscount: evaluation.goodsDiscount,
429
+ shippingDiscount: evaluation.shippingDiscount,
430
+ // Order-column shaped: everything each source took, goods and waived
431
+ // shipping alike, the way `automatic_discount_amount` records it.
432
+ automaticDiscount: round(
433
+ evaluation.automaticGoodsDiscount + evaluation.automaticShippingDiscount
434
+ ),
435
+ voucherDiscount: round(
436
+ evaluation.voucherGoodsDiscount + evaluation.voucherShippingDiscount
437
+ ),
438
+ appliedIds,
439
+ // The sets the shopper could choose between and the one applied, so
440
+ // the place-order workflow prices the order with the same pick.
441
+ options: evaluation.options,
442
+ choice: evaluation.choice,
443
+ }
444
+ }
445
+ let displayedAmountDue = deliveryTotal
446
+ if (giftCardsEnabled) {
447
+ let giftCard: Record<string, unknown> | null = null
448
+ // A card pays only in its own currency, so only a cart priced in it:
449
+ // the cart's currency, or the store's for a cart whose lines name
450
+ // none — the same gate the provider's tender applies.
451
+ const tenderCurrency = cartCurrency || __ccCode(giftCardsSnapshot.currency)
452
+ const cardCurrency = storedGiftCard ? __ccCode(storedGiftCard.currency) : ''
453
+ if (storedGiftCard && tenderCurrency !== '' && cardCurrency === tenderCurrency) {
454
+ let hasGiftCardLines = false
455
+ for (const item of cart) {
456
+ if (item && __deBool(item.isGiftCard, false)) hasGiftCardLines = true
457
+ }
458
+ const balance = Number(storedGiftCard.balance)
459
+ const tender = __deTender({
460
+ balance: isFinite(balance) ? balance : 0,
461
+ // On the DELIVERY total: the larger of the two shapes, so a pickup
462
+ // order's amount due can only come out lower than what was shown.
463
+ total: deliveryTotal,
464
+ currency: tenderCurrency,
465
+ hasGiftCardLines,
466
+ // A subscription is billed by the provider every cycle: the card
467
+ // pays part of the first charge only, none of a free trial, and
468
+ // nothing at all on a checkout that cannot reduce the first
469
+ // charge (the provider mirrors whether this one can).
470
+ hasRecurringLines,
471
+ recurringTenderAllowed: giftCardsSnapshot.recurringTender === true,
472
+ hasRecurringTrial,
473
+ })
474
+ // A card that pays nothing (no balance, a gift card in the basket) is
475
+ // not in play — the provider hides it the same way.
476
+ if (tender.applied > 0) {
477
+ giftCard = {
478
+ id: String(storedGiftCard.id),
479
+ last4: String(storedGiftCard.last4 || ''),
480
+ balance: isFinite(balance) ? balance : 0,
481
+ amount: tender.applied,
482
+ amountDue: tender.amountDue,
483
+ }
484
+ displayedAmountDue = tender.amountDue
485
+ }
486
+ }
487
+ result.giftCard = giftCard
488
+ }
489
+ result.displayedAmountDue = displayedAmountDue
490
+ }
223
491
  return result
224
492
  } catch (_err) {
225
493
  return {
@@ -246,6 +514,10 @@ export const cartGetTotal: NodeHandlerGenerator = {
246
514
  return (
247
515
  source.slice(0, bodyStart) +
248
516
  RegionalPricing.generateRegionalPricingHelperCode() +
517
+ '\n' +
518
+ DiscountEngine.generateDiscountEngineHelperCode() +
519
+ '\n' +
520
+ CartCurrency.generateCartCurrencyHelperCode() +
249
521
  source.slice(bodyStart)
250
522
  )
251
523
  },