@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,55 @@
1
+ import { NextWorkflowProjectPlugin } from '../src/workflow-project-plugin'
2
+
3
+ // Server code tells itself apart from a browser with the app secret: it keys
4
+ // the signatures on results relayed between workflow steps and the
5
+ // internal-call token, and server code presents it to its own data, invoice
6
+ // and notification routes. An app with such routes but no authentication
7
+ // used to ship without one — every one of those keyed from ''.
8
+
9
+ const structure = (uidl: unknown): any => ({
10
+ uidl,
11
+ strategy: { pages: { options: {} } },
12
+ files: new Map(),
13
+ dependencies: {},
14
+ devDependencies: {},
15
+ })
16
+
17
+ const app = (extra: Record<string, unknown> = {}): any => ({
18
+ name: 'Site',
19
+ globals: { settings: { title: 'Site' } },
20
+ root: { name: 'Root', stateDefinitions: {}, node: { type: 'element', content: {} } },
21
+ ...extra,
22
+ })
23
+
24
+ const secretOf = async (uidl: any): Promise<unknown> => {
25
+ await new NextWorkflowProjectPlugin().runBefore(structure(uidl))
26
+ return uidl.globals.env?.NEXTAUTH_SECRET
27
+ }
28
+
29
+ describe('the app secret of a generated app', () => {
30
+ it('is written for an app with server routes and no authentication', async () => {
31
+ for (const extra of [
32
+ { workflows: { workflows: { w1: { nodes: [], edges: [] } }, customNodes: {} } },
33
+ { dataSources: { ds1: { type: 'postgresql' } } },
34
+ { invoiceSettings: { enabled: true } },
35
+ { ecommerceSettings: { currency: 'USD' } },
36
+ ]) {
37
+ expect(await secretOf(app(extra))).toMatch(/^[0-9a-f]{64}$/)
38
+ }
39
+ })
40
+
41
+ it('is a fresh value each time, never a constant', async () => {
42
+ const extra = { dataSources: { ds1: { type: 'postgresql' } } }
43
+ expect(await secretOf(app(extra))).not.toBe(await secretOf(app(extra)))
44
+ })
45
+
46
+ it('keeps a secret the project already has', async () => {
47
+ const uidl = app({ dataSources: { ds1: { type: 'postgresql' } } })
48
+ uidl.globals.env = { NEXTAUTH_SECRET: 'configured-secret' }
49
+ expect(await secretOf(uidl)).toBe('configured-secret')
50
+ })
51
+
52
+ it('is not written for a static site', async () => {
53
+ expect(await secretOf(app())).toBeUndefined()
54
+ })
55
+ })
@@ -1,5 +1,8 @@
1
1
  import { resolveAuthEnvValue, collectOAuthCredentialEnvKeys } from '../src/workflow-project-plugin'
2
2
 
3
+ /** What a generated NEXTAUTH_SECRET default looks like: 32 random bytes, hex. */
4
+ const RANDOM_SECRET = /^[0-9a-f]{64}$/
5
+
3
6
  // Regression: OAuth provider credentials never reached the deployed env →
4
7
  // NextAuth `error=OAuthSignin` ("Continue with Google" does nothing). The auth
5
8
  // plugin's `resolveAuthEnvValue` EMPTIED every `teleporthq.secrets.X` env value
@@ -105,7 +108,7 @@ describe('resolveAuthEnvValue', () => {
105
108
  it('keeps NEXTAUTH defaults and leaves non-auth behavior unchanged', () => {
106
109
  expect(
107
110
  resolveAuthEnvValue('NEXTAUTH_SECRET', 'teleporthq.secrets.NEXTAUTH_SECRET', oauthKeys)
108
- ).toBe('CHANGE_ME_TO_A_RANDOM_SECRET')
111
+ ).toMatch(RANDOM_SECRET)
109
112
  expect(resolveAuthEnvValue('NEXTAUTH_URL', 'teleporthq.secrets.NEXTAUTH_URL', oauthKeys)).toBe(
110
113
  'http://localhost:3000'
111
114
  )
@@ -133,8 +136,24 @@ describe('resolveAuthEnvValue', () => {
133
136
  }
134
137
  )
135
138
 
136
- it('a blank NEXTAUTH_SECRET heals to the placeholder default', () => {
137
- expect(resolveAuthEnvValue('NEXTAUTH_SECRET', '', oauthKeys)).toBe(
139
+ // NEXTAUTH_SECRET signs every session and is the secret server code shows
140
+ // its own routes: a default anyone can read in the generator is no secret.
141
+ // Each generation draws its own; the deploy worker still replaces the line.
142
+ it('a blank NEXTAUTH_SECRET heals to a fresh random secret, never a known constant', () => {
143
+ const first = resolveAuthEnvValue('NEXTAUTH_SECRET', '', oauthKeys)
144
+ const second = resolveAuthEnvValue('NEXTAUTH_SECRET', '', oauthKeys)
145
+ expect(first).toMatch(RANDOM_SECRET)
146
+ expect(second).toMatch(RANDOM_SECRET)
147
+ expect(first).not.toBe(second)
148
+ expect(first).not.toBe('CHANGE_ME_TO_A_RANDOM_SECRET')
149
+ })
150
+
151
+ it('the constant earlier generations shipped is replaced, not carried over from a .env', () => {
152
+ expect(
153
+ resolveAuthEnvValue('NEXTAUTH_SECRET', 'CHANGE_ME_TO_A_RANDOM_SECRET', oauthKeys)
154
+ ).toMatch(RANDOM_SECRET)
155
+ // Only for the secret: another key holding that text is left alone.
156
+ expect(resolveAuthEnvValue('SOME_OTHER_KEY', 'CHANGE_ME_TO_A_RANDOM_SECRET', oauthKeys)).toBe(
138
157
  'CHANGE_ME_TO_A_RANDOM_SECRET'
139
158
  )
140
159
  })
@@ -1,87 +1,171 @@
1
1
  /* tslint:disable:no-eval */
2
2
  import { generateNextAuthRouteFile } from '../src/auth-generator'
3
3
 
4
- // The generated .env ships a localhost NEXTAUTH_URL (the deploy domain is
5
- // unknown at build time). NextAuth builds OAuth callback/redirect URLs from
6
- // NEXTAUTH_URL, so on a published domain that localhost value would break the
7
- // OAuth round-trip. The generated /api/auth/[...nextauth] route now derives the
8
- // real origin from the incoming request — without hardcoding it — while
9
- // respecting an explicitly-set NEXTAUTH_URL and leaving local dev alone.
10
-
11
- // Load the emitted route with `next-auth` + auth-options stubbed so we can
12
- // exercise the per-request NEXTAUTH_URL derivation against a fake request.
13
- function loadRoute(): (req: any, res: any) => any {
14
- const code = generateNextAuthRouteFile()
15
- const fakeNextAuth = () => (_req: any, _res: any) => ({ usedUrl: process.env.NEXTAUTH_URL })
4
+ // The generated .env ships a localhost (or empty) NEXTAUTH_URL — the deploy
5
+ // domain is unknown at build time. NextAuth builds OAuth callback/redirect URLs
6
+ // AND picks its cookie names ("__Secure-" on https) from NEXTAUTH_URL, so the
7
+ // generated /api/auth/[...nextauth] route derives the origin from the incoming
8
+ // request — without hardcoding it — while respecting an explicitly-set real
9
+ // NEXTAUTH_URL.
10
+ //
11
+ // The configured value is read ONCE per process, before any request; every request
12
+ // then gets its own origin. It used to be written back and kept, so one request
13
+ // through an https tunnel (ngrok forwarding webhooks to a local dev server)
14
+ // turned every later localhost request into an https one: NextAuth issued
15
+ // "__Secure-" cookies on localhost beside the plain ones, and the middleware,
16
+ // reading the stale plain cookie, refused a signed-in admin.
17
+
18
+ type Handler = (req: unknown, res: unknown) => unknown
19
+
20
+ const CONFIGURED_STORE_KEY = '__tqConfiguredNextAuthUrl'
21
+
22
+ // Loads the emitted route with `next-auth` + auth-options stubbed, under the
23
+ // NEXTAUTH_URL the deployment configured — as a fresh process would, unless
24
+ // `hotReload` re-evaluates it inside the same process. Returns the handler and
25
+ // a reader for the origin NextAuth saw on the last call.
26
+ function loadRoute(
27
+ configured: string | undefined,
28
+ options: { hotReload?: boolean } = {}
29
+ ): {
30
+ handler: Handler
31
+ originSeen: () => string | undefined
32
+ } {
33
+ if (!options.hotReload) {
34
+ delete (globalThis as Record<string, unknown>)[CONFIGURED_STORE_KEY]
35
+ if (configured === undefined) {
36
+ delete process.env.NEXTAUTH_URL
37
+ } else {
38
+ process.env.NEXTAUTH_URL = configured
39
+ }
40
+ }
41
+ let seen: string | undefined
42
+ const fakeNextAuth = () => () => {
43
+ // NextAuth reads the env var synchronously when the handler is entered.
44
+ seen = process.env.NEXTAUTH_URL
45
+ }
16
46
  const fakeRequire = (id: string) => (id === 'next-auth' ? fakeNextAuth : {})
17
- const moduleObj: { exports: any } = { exports: {} }
47
+ const moduleObj: { exports: Handler } = { exports: (() => undefined) as Handler }
18
48
  // eslint-disable-next-line @typescript-eslint/no-implied-eval
19
- const fn = new Function('require', 'module', 'process', code)
20
- fn(fakeRequire, moduleObj, process)
21
- return moduleObj.exports
49
+ const fn = new Function('require', 'module', 'process', 'console', generateNextAuthRouteFile())
50
+ fn(fakeRequire, moduleObj, process, { error: () => undefined })
51
+ return { handler: moduleObj.exports, originSeen: () => seen }
22
52
  }
23
53
 
24
- describe('generated NextAuth route — dynamic NEXTAUTH_URL', () => {
25
- const handler = loadRoute()
54
+ const request = (headers: Record<string, string | string[]>) => ({ headers })
55
+
56
+ describe('generated NextAuth route — per-request NEXTAUTH_URL', () => {
26
57
  let saved: string | undefined
27
58
 
28
59
  beforeEach(() => {
29
60
  saved = process.env.NEXTAUTH_URL
30
61
  })
31
62
  afterEach(() => {
32
- if (saved === undefined) delete process.env.NEXTAUTH_URL
33
- else process.env.NEXTAUTH_URL = saved
63
+ delete (globalThis as Record<string, unknown>)[CONFIGURED_STORE_KEY]
64
+ if (saved === undefined) {
65
+ delete process.env.NEXTAUTH_URL
66
+ } else {
67
+ process.env.NEXTAUTH_URL = saved
68
+ }
34
69
  })
35
70
 
36
71
  it('derives the origin from the request host when NEXTAUTH_URL is the localhost default', () => {
37
- process.env.NEXTAUTH_URL = 'http://localhost:3000'
38
- handler({ headers: { host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' } }, {})
39
- expect(process.env.NEXTAUTH_URL).toBe('https://my-app.teleporthq.dev')
72
+ const { handler, originSeen } = loadRoute('http://localhost:3000')
73
+ handler(request({ host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' }), {})
74
+ expect(originSeen()).toBe('https://my-app.teleporthq.dev')
40
75
  })
41
76
 
42
- it('uses x-forwarded-host and defaults the protocol to https', () => {
43
- process.env.NEXTAUTH_URL = ''
44
- handler({ headers: { 'x-forwarded-host': 'sugary.teleporthq.dev', host: 'internal:3000' } }, {})
45
- expect(process.env.NEXTAUTH_URL).toBe('https://sugary.teleporthq.dev')
77
+ it('uses x-forwarded-host and defaults the protocol to https for a real domain', () => {
78
+ const { handler, originSeen } = loadRoute('')
79
+ handler(request({ 'x-forwarded-host': 'sugary.teleporthq.dev', host: 'internal:3000' }), {})
80
+ expect(originSeen()).toBe('https://sugary.teleporthq.dev')
46
81
  })
47
82
 
48
- it('respects an explicitly-configured real NEXTAUTH_URL (does not clobber it)', () => {
49
- process.env.NEXTAUTH_URL = 'https://custom-domain.com'
50
- handler({ headers: { host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' } }, {})
51
- expect(process.env.NEXTAUTH_URL).toBe('https://custom-domain.com')
83
+ it('respects an explicitly-configured real NEXTAUTH_URL on every request', () => {
84
+ const { handler, originSeen } = loadRoute('https://custom-domain.com')
85
+ handler(request({ host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' }), {})
86
+ expect(originSeen()).toBe('https://custom-domain.com')
87
+ handler(request({ host: 'localhost:3001' }), {})
88
+ expect(originSeen()).toBe('https://custom-domain.com')
52
89
  })
53
90
 
54
- it('leaves local development untouched', () => {
55
- process.env.NEXTAUTH_URL = 'http://localhost:3000'
56
- handler({ headers: { host: 'localhost:3000' } }, {})
57
- expect(process.env.NEXTAUTH_URL).toBe('http://localhost:3000')
91
+ it('gives local development its own plain-http origin, port included', () => {
92
+ const { handler, originSeen } = loadRoute('http://localhost:3000')
93
+ handler(request({ host: 'localhost:3000' }), {})
94
+ expect(originSeen()).toBe('http://localhost:3000')
95
+ handler(request({ host: 'localhost:3001' }), {})
96
+ expect(originSeen()).toBe('http://localhost:3001')
97
+ handler(request({ host: '[::1]:3001' }), {})
98
+ expect(originSeen()).toBe('http://[::1]:3001')
99
+ })
100
+
101
+ it('THE DEFECT: a request through an https tunnel does not change the origin of the next localhost request', () => {
102
+ const { handler, originSeen } = loadRoute('')
103
+ handler(
104
+ request({
105
+ host: 'localhost:3001',
106
+ 'x-forwarded-host': 'b16a-example.ngrok-free.app',
107
+ 'x-forwarded-proto': 'https',
108
+ }),
109
+ {}
110
+ )
111
+ expect(originSeen()).toBe('https://b16a-example.ngrok-free.app')
112
+
113
+ // The next browser request on localhost: plain http again, so NextAuth
114
+ // keeps using (and refreshing) the plain session cookie.
115
+ handler(request({ host: 'localhost:3001' }), {})
116
+ expect(originSeen()).toBe('http://localhost:3001')
117
+ })
118
+
119
+ it('a dev server reloading the route after a tunnel request still knows what was configured', () => {
120
+ const first = loadRoute('')
121
+ first.handler(
122
+ request({ host: 'b16a-example.ngrok-free.app', 'x-forwarded-proto': 'https' }),
123
+ {}
124
+ )
125
+ // process.env now holds the tunnel origin; the module is evaluated again.
126
+ const reloaded = loadRoute(undefined, { hotReload: true })
127
+ reloaded.handler(request({ host: 'localhost:3001' }), {})
128
+ expect(reloaded.originSeen()).toBe('http://localhost:3001')
129
+ })
130
+
131
+ it('reads the client-facing hop of a proxy chain', () => {
132
+ const { handler, originSeen } = loadRoute(undefined)
133
+ handler(request({ host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https,http' }), {})
134
+ expect(originSeen()).toBe('https://my-app.teleporthq.dev')
135
+ handler(request({ host: ['shop.example.com'], 'x-forwarded-proto': ['https'] }), {})
136
+ expect(originSeen()).toBe('https://shop.example.com')
58
137
  })
59
138
 
60
139
  // Project a62338f9 published with `NEXTAUTH_URL=teleporthq.secrets.NEXTAUTH_URL`.
61
140
  // The old check saw a non-empty, non-localhost string and treated it as
62
141
  // explicitly configured, so NextAuth normalised it to
63
142
  // `https://teleporthq.secrets.nextauth_url`, advertised that as the sign-in
64
- // origin and issued `__Host-`/`__Secure-` cookies against it. Sign-in failed
65
- // with a bare `credentialsSignin`. An unresolved placeholder is now treated
66
- // as unset, so an already-published site self-heals on its next request.
143
+ // origin and issued `__Host-`/`__Secure-` cookies against it. An unresolved
144
+ // placeholder is treated as unset, so an already-published site self-heals.
67
145
  it('overrides an unresolved secret placeholder on a published domain', () => {
68
- process.env.NEXTAUTH_URL = 'teleporthq.secrets.NEXTAUTH_URL'
69
- handler(
70
- { headers: { host: 'rare-last-dunlin.teleporthq.dev', 'x-forwarded-proto': 'https' } },
71
- {}
72
- )
73
- expect(process.env.NEXTAUTH_URL).toBe('https://rare-last-dunlin.teleporthq.dev')
146
+ const { handler, originSeen } = loadRoute('teleporthq.secrets.NEXTAUTH_URL')
147
+ handler(request({ host: 'rare-last-dunlin.teleporthq.dev', 'x-forwarded-proto': 'https' }), {})
148
+ expect(originSeen()).toBe('https://rare-last-dunlin.teleporthq.dev')
74
149
  })
75
150
 
76
151
  it('falls back to an http origin locally, so cookies are not Secure-prefixed', () => {
77
- process.env.NEXTAUTH_URL = 'teleporthq.secrets.NEXTAUTH_URL'
78
- handler({ headers: { host: 'localhost:3001' } }, {})
79
- expect(process.env.NEXTAUTH_URL).toBe('http://localhost:3001')
152
+ const { handler, originSeen } = loadRoute('teleporthq.secrets.NEXTAUTH_URL')
153
+ handler(request({ host: 'localhost:3001' }), {})
154
+ expect(originSeen()).toBe('http://localhost:3001')
80
155
  })
81
156
 
82
157
  it('overrides any value that is not an absolute http(s) origin', () => {
83
- process.env.NEXTAUTH_URL = 'my-app.teleporthq.dev'
84
- handler({ headers: { host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' } }, {})
85
- expect(process.env.NEXTAUTH_URL).toBe('https://my-app.teleporthq.dev')
158
+ const { handler, originSeen } = loadRoute('my-app.teleporthq.dev')
159
+ handler(request({ host: 'my-app.teleporthq.dev', 'x-forwarded-proto': 'https' }), {})
160
+ expect(originSeen()).toBe('https://my-app.teleporthq.dev')
161
+ })
162
+
163
+ it('keeps the configured value when the request names no host at all', () => {
164
+ const { handler, originSeen } = loadRoute('http://localhost:3000')
165
+ handler(request({}), {})
166
+ expect(originSeen()).toBe('http://localhost:3000')
167
+ const bare = loadRoute(undefined)
168
+ bare.handler(request({}), {})
169
+ expect(bare.originSeen()).toBe('http://localhost:3000')
86
170
  })
87
171
  })
@@ -0,0 +1,259 @@
1
+ /* tslint:disable:function-constructor */
2
+ import { cartAddItem } from '../src/nodes/cart/cart-add-item'
3
+
4
+ /**
5
+ * One order holds ONE kind of line — a subscription (billed by the provider,
6
+ * alone, quantity one), digital goods (delivered from the order page) or
7
+ * physical goods (shipped) — so the cart does too. `cart-add-item` refuses a
8
+ * line of another kind BEFORE anything is written and says which kind needs
9
+ * its own order; the workflow toasts that message. A storefront line written
10
+ * before the flags existed reads as physical.
11
+ */
12
+
13
+ interface AddToCartResult {
14
+ added: boolean
15
+ reason?: string
16
+ message?: string
17
+ quantity?: number
18
+ }
19
+
20
+ type Handler = (config: Record<string, unknown>) => Promise<AddToCartResult>
21
+
22
+ function loadHandler(store: Record<string, string>): Handler {
23
+ ;(global as any).localStorage = {
24
+ getItem: (key: string) => (key in store ? store[key] : null),
25
+ setItem: (key: string, value: string) => {
26
+ store[key] = value
27
+ },
28
+ }
29
+ ;(global as any).window = { dispatchEvent: () => true }
30
+ ;(global as any).CustomEvent = function CustomEvent() {
31
+ return {}
32
+ }
33
+ const source = cartAddItem.generateHandler()
34
+ return new Function('config', `${source}\nreturn cart_add_item(config)`) as Handler
35
+ }
36
+
37
+ const storedCart = (store: Record<string, string>): Array<Record<string, unknown>> =>
38
+ JSON.parse(store.workflow_cart)
39
+
40
+ const withCart = (lines: Array<Record<string, unknown>>): Record<string, string> => ({
41
+ workflow_cart: JSON.stringify(lines),
42
+ })
43
+
44
+ afterEach(() => {
45
+ delete (global as any).localStorage
46
+ delete (global as any).window
47
+ delete (global as any).CustomEvent
48
+ })
49
+
50
+ describe('cart-add-item — one kind of line per cart', () => {
51
+ it('answers added: true for a line that joins an empty cart, carrying its kind', async () => {
52
+ const store: Record<string, string> = {}
53
+ const result = await loadHandler(store)({
54
+ productId: 'sub',
55
+ quantity: 3,
56
+ price: 24,
57
+ isRecurring: 'true',
58
+ recurringInterval: 'month',
59
+ recurringIntervalCount: '3',
60
+ trialDays: '14',
61
+ })
62
+ expect(result).toMatchObject({ added: true, quantity: 1 })
63
+ expect(storedCart(store)[0]).toMatchObject({
64
+ isRecurring: true,
65
+ recurringInterval: 'month',
66
+ recurringIntervalCount: 3,
67
+ trialDays: 14,
68
+ isDigital: false,
69
+ quantity: 1,
70
+ })
71
+ })
72
+
73
+ it('refuses a digital line beside a physical one, naming the digital kind', async () => {
74
+ const store = withCart([{ id: 'c1', productId: 'mug', quantity: 1, price: 12 }])
75
+ const result = await loadHandler(store)({ productId: 'ebook', price: 9, isDigital: true })
76
+ expect(result).toEqual({
77
+ added: false,
78
+ reason: 'mixed-cart',
79
+ message:
80
+ 'Digital products need a separate order. Complete your current order or remove the other items from your cart first.',
81
+ })
82
+ expect(storedCart(store)).toHaveLength(1)
83
+ })
84
+
85
+ it('refuses a physical line beside a digital one, naming the physical kind', async () => {
86
+ const store = withCart([
87
+ { id: 'c1', productId: 'ebook', quantity: 1, price: 9, isDigital: true },
88
+ ])
89
+ const result = await loadHandler(store)({ productId: 'mug', price: 12 })
90
+ expect(result).toMatchObject({ added: false, reason: 'mixed-cart' })
91
+ expect(result.message).toMatch(/^Physical products need a separate order\./)
92
+ expect(storedCart(store)).toHaveLength(1)
93
+ })
94
+
95
+ it('refuses a subscription beside anything, and anything beside a subscription', async () => {
96
+ const besidePhysical = withCart([{ id: 'c1', productId: 'mug', quantity: 1, price: 12 }])
97
+ expect(
98
+ await loadHandler(besidePhysical)({ productId: 'plan', price: 24, isRecurring: 'true' })
99
+ ).toEqual({
100
+ added: false,
101
+ reason: 'one-subscription',
102
+ message:
103
+ 'Subscriptions are checked out on their own. Finish or empty your current cart first.',
104
+ })
105
+ const besideSubscription = withCart([
106
+ { id: 'c1', productId: 'plan', quantity: 1, price: 24, isRecurring: 'true' },
107
+ ])
108
+ expect(
109
+ await loadHandler(besideSubscription)({ productId: 'ebook', price: 9, isDigital: 't' })
110
+ ).toMatchObject({
111
+ added: false,
112
+ reason: 'one-subscription',
113
+ })
114
+ })
115
+
116
+ it('keeps a gift card on its own: it joins no other kind, and no other kind joins it', async () => {
117
+ const besidePhysical = withCart([{ id: 'c1', productId: 'mug', quantity: 1, price: 12 }])
118
+ expect(
119
+ await loadHandler(besidePhysical)({ productId: 'card', price: 50, isGiftCard: 'true' })
120
+ ).toEqual({
121
+ added: false,
122
+ reason: 'mixed-cart',
123
+ message:
124
+ 'Gift cards need a separate order. Complete your current order or remove the other items from your cart first.',
125
+ })
126
+ const besideDigital = withCart([
127
+ { id: 'c1', productId: 'ebook', quantity: 1, price: 9, isDigital: true },
128
+ ])
129
+ expect(
130
+ await loadHandler(besideDigital)({ productId: 'card', price: 50, isGiftCard: true })
131
+ ).toMatchObject({ added: false, reason: 'mixed-cart' })
132
+ const besideCard = withCart([
133
+ { id: 'c1', productId: 'card', quantity: 1, price: 50, isGiftCard: true },
134
+ ])
135
+ expect(
136
+ await loadHandler(besideCard)({ productId: 'ebook', price: 9, isDigital: true })
137
+ ).toMatchObject({
138
+ added: false,
139
+ reason: 'mixed-cart',
140
+ message: expect.stringMatching(/^Digital products need a separate order\./),
141
+ })
142
+ const secondCard = await loadHandler(besideCard)({
143
+ productId: 'card-100',
144
+ price: 100,
145
+ isGiftCard: true,
146
+ })
147
+ expect(secondCard).toMatchObject({ added: true })
148
+ expect(storedCart(besideCard).map((line) => line.isGiftCard)).toEqual([true, true])
149
+ })
150
+
151
+ it('never turns the one subscription in the cart into two units', async () => {
152
+ const store = withCart([
153
+ { id: 'c1', productId: 'plan', quantity: 1, price: 24, isRecurring: true },
154
+ ])
155
+ const result = await loadHandler(store)({ productId: 'plan', price: 24, isRecurring: true })
156
+ expect(result).toMatchObject({ added: false, reason: 'one-subscription' })
157
+ expect(storedCart(store)[0].quantity).toBe(1)
158
+ })
159
+
160
+ it('refuses the same subscription again with other options: another configuration is another line', async () => {
161
+ const store = withCart([
162
+ {
163
+ id: 'c1',
164
+ productId: 'plan',
165
+ quantity: 1,
166
+ price: 24,
167
+ isRecurring: true,
168
+ configuration: '[{"key":"roast","value":"dark"}]',
169
+ configurationKey: 'aaaaaaaaaaaaaaaa',
170
+ },
171
+ ])
172
+ const result = await loadHandler(store)({
173
+ productId: 'plan',
174
+ price: 24,
175
+ isRecurring: true,
176
+ configuration: '[{"key":"roast","value":"light"}]',
177
+ configurationKey: 'bbbbbbbbbbbbbbbb',
178
+ })
179
+ expect(result).toEqual({
180
+ added: false,
181
+ reason: 'one-subscription',
182
+ message:
183
+ 'Subscriptions are checked out on their own. Finish or empty your current cart first.',
184
+ })
185
+ expect(storedCart(store)).toHaveLength(1)
186
+ })
187
+
188
+ it('lets a line of the same kind join, and re-stamps the kind on an existing line', async () => {
189
+ const store = withCart([
190
+ { id: 'c1', productId: 'ebook', quantity: 1, price: 9, isDigital: true },
191
+ ])
192
+ const joined = await loadHandler(store)({ productId: 'preset', price: 19, isDigital: 'yes' })
193
+ expect(joined).toMatchObject({ added: true })
194
+ const bumped = await loadHandler(store)({
195
+ productId: 'ebook',
196
+ quantity: 1,
197
+ price: 9,
198
+ isDigital: true,
199
+ })
200
+ expect(bumped).toMatchObject({ added: true, quantity: 2 })
201
+ expect(storedCart(store).map((line) => line.isDigital)).toEqual([true, true])
202
+ })
203
+ })
204
+
205
+ describe('cart-add-item — one currency per cart', () => {
206
+ it('refuses a line priced in another currency, naming both, and writes nothing', async () => {
207
+ const store = withCart([
208
+ { id: 'c1', productId: 'mug', quantity: 1, price: 12, currency: 'USD' },
209
+ ])
210
+ const result = await loadHandler(store)({ productId: 'tea', price: 19.99, currency: 'ron' })
211
+ expect(result).toEqual({
212
+ added: false,
213
+ reason: 'mixed-currency',
214
+ message:
215
+ 'Products priced in RON need a separate order. Complete your current order or remove the items priced in USD from your cart first.',
216
+ })
217
+ expect(storedCart(store)).toHaveLength(1)
218
+ })
219
+
220
+ it('judges the kind first', async () => {
221
+ const store = withCart([
222
+ { id: 'c1', productId: 'mug', quantity: 1, price: 12, currency: 'USD' },
223
+ ])
224
+ const result = await loadHandler(store)({
225
+ productId: 'ebook',
226
+ isDigital: true,
227
+ currency: 'EUR',
228
+ })
229
+ expect(result).toMatchObject({ added: false, reason: 'mixed-cart' })
230
+ })
231
+
232
+ it('lets a line of the same currency join, and a re-added line change its own', async () => {
233
+ const store = withCart([
234
+ { id: 'c1', productId: 'mug', quantity: 1, price: 12, currency: 'usd' },
235
+ ])
236
+ const joined = await loadHandler(store)({ productId: 'tea', price: 5, currency: 'USD' })
237
+ expect(joined).toMatchObject({ added: true })
238
+ // The only line: nothing else to be priced against.
239
+ const alone = withCart([
240
+ { id: 'c1', productId: 'mug', quantity: 1, price: 12, currency: 'USD' },
241
+ ])
242
+ const bumped = await loadHandler(alone)({ productId: 'mug', price: 12, currency: 'EUR' })
243
+ expect(bumped).toMatchObject({ added: true, quantity: 2 })
244
+ expect(storedCart(alone)[0]).toMatchObject({ currency: 'EUR' })
245
+ })
246
+
247
+ it('does not judge a line, or a cart, that names no currency', async () => {
248
+ const legacy = withCart([{ id: 'c1', productId: 'mug', quantity: 1, price: 12 }])
249
+ expect(
250
+ await loadHandler(legacy)({ productId: 'tea', price: 5, currency: 'RON' })
251
+ ).toMatchObject({ added: true })
252
+ const priced = withCart([
253
+ { id: 'c1', productId: 'mug', quantity: 1, price: 12, currency: 'USD' },
254
+ ])
255
+ expect(await loadHandler(priced)({ productId: 'tea', price: 5 })).toMatchObject({
256
+ added: true,
257
+ })
258
+ })
259
+ })