@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,931 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSquareDriverCode = void 0;
4
+ /**
5
+ * Emits `utils/payments/drivers/square.js`: Square Checkout payment links (an
6
+ * itemised order for a one-time purchase, a quick-pay link on a subscription
7
+ * plan variation for a recurring one), refunds, subscription management and
8
+ * the `x-square-hmacsha256-signature` webhook check the store REQUIRES.
9
+ *
10
+ * Square charges in its location's currency, and neither a payment link nor
11
+ * the subscription it creates carries the store's ids back — the store puts
12
+ * them in the payment note (`teleport:<order>:<subscription>:<variation>`),
13
+ * which Square copies onto the payment, and the webhook for the first charge
14
+ * finds the subscription Square created for that buyer and plan.
15
+ */
16
+ const generateSquareDriverCode = () => `'use strict';
17
+ /**
18
+ * Square driver. Generated by TeleportHQ — changes are overwritten on the next export.
19
+ */
20
+ module.exports = function createSquareDriver(core) {
21
+ var PRODUCTION = 'https://connect.squareup.com';
22
+ var SANDBOX = 'https://connect.squareupsandbox.com';
23
+ var API_VERSION = '2026-09-16';
24
+ var MISSING_TOKEN = 'SQUARE_ACCESS_TOKEN is not configured';
25
+ var ZERO_DECIMAL = ['JPY'];
26
+ var NOTE_PREFIX = 'teleport:';
27
+ var CANCEL_NOW_UNSUPPORTED =
28
+ 'Square cannot end a subscription immediately: it always cancels at the end of the paid period. Cancel at the period end instead.';
29
+ var PAUSE_SCHEDULED =
30
+ 'Square pauses a subscription from the start of its next billing cycle, so it stays active until the current period ends.';
31
+ // How much earlier than its first payment Square may record a subscription.
32
+ var SUBSCRIPTION_CREATED_ALLOWANCE_MS = 5 * 60 * 1000;
33
+ // The cadences Square bills, by store interval and count.
34
+ var CADENCES = {
35
+ 'day:1': 'DAILY',
36
+ 'day:30': 'THIRTY_DAYS',
37
+ 'day:60': 'SIXTY_DAYS',
38
+ 'day:90': 'NINETY_DAYS',
39
+ 'week:1': 'WEEKLY',
40
+ 'week:2': 'EVERY_TWO_WEEKS',
41
+ 'month:1': 'MONTHLY',
42
+ 'month:2': 'EVERY_TWO_MONTHS',
43
+ 'month:3': 'QUARTERLY',
44
+ 'month:4': 'EVERY_FOUR_MONTHS',
45
+ 'month:6': 'EVERY_SIX_MONTHS',
46
+ 'year:1': 'ANNUAL',
47
+ 'year:2': 'EVERY_TWO_YEARS',
48
+ };
49
+
50
+ function accessToken() {
51
+ return core.credential('square', 'accessToken');
52
+ }
53
+
54
+ function minor(major, currency) {
55
+ var value = Number(major);
56
+ if (!isFinite(value) || value <= 0) {
57
+ return 0;
58
+ }
59
+ return Math.round(ZERO_DECIMAL.indexOf(String(currency || '').toUpperCase()) >= 0 ? value : value * 100);
60
+ }
61
+
62
+ function major(minorValue, currency) {
63
+ var value = Number(minorValue);
64
+ if (!isFinite(value)) {
65
+ return 0;
66
+ }
67
+ return ZERO_DECIMAL.indexOf(String(currency || '').toUpperCase()) >= 0 ? value : value / 100;
68
+ }
69
+
70
+ function money(major, currency) {
71
+ return { amount: minor(major, currency), currency: String(currency || '').toUpperCase() };
72
+ }
73
+
74
+ function problem(data, fallback) {
75
+ var errors = data && Array.isArray(data.errors) ? data.errors : [];
76
+ return errors.length > 0 ? errors.map(function (e) { return e.detail || e.code; }).join('; ') : fallback;
77
+ }
78
+
79
+ // Idempotency keys are capped (45 characters for refunds): a long key is
80
+ // replaced by its hash, which is just as stable.
81
+ function idempotencyKey(value, max) {
82
+ var key = String(value || '');
83
+ return key.length <= max ? key : 'k-' + core.hmac('sha256', 'square-idempotency', key, 'hex').slice(0, max - 2);
84
+ }
85
+
86
+ // A token belongs to production or the sandbox and says nothing about which:
87
+ // the one that accepts it is remembered for this process.
88
+ async function baseUrl() {
89
+ var cached = globalThis.__squareBaseUrlCache;
90
+ if (cached === PRODUCTION || cached === SANDBOX) {
91
+ return { url: cached };
92
+ }
93
+ var candidates = [PRODUCTION, SANDBOX];
94
+ for (var i = 0; i < candidates.length; i++) {
95
+ var answer = await core.request(candidates[i] + '/v2/locations', {
96
+ headers: { Authorization: 'Bearer ' + accessToken(), 'Square-Version': API_VERSION },
97
+ });
98
+ if (answer.ok) {
99
+ globalThis.__squareBaseUrlCache = candidates[i];
100
+ return { url: candidates[i] };
101
+ }
102
+ if (answer.status !== 401) {
103
+ return { error: problem(answer.data, 'Square could not be reached (HTTP ' + answer.status + ')') };
104
+ }
105
+ }
106
+ return { error: 'Square does not accept the access token in either production or the sandbox.' };
107
+ }
108
+
109
+ async function call(method, path, body) {
110
+ var base = await baseUrl();
111
+ if (base.error) {
112
+ return { ok: false, status: 0, data: { errors: [{ detail: base.error }] } };
113
+ }
114
+ return core.request(base.url + path, {
115
+ method: method,
116
+ headers: {
117
+ Authorization: 'Bearer ' + accessToken(),
118
+ 'Content-Type': 'application/json',
119
+ 'Square-Version': API_VERSION,
120
+ },
121
+ body: body ? JSON.stringify(body) : undefined,
122
+ });
123
+ }
124
+
125
+ // The configured location, else the account's main one; its currency is the
126
+ // only one Square charges in.
127
+ async function location() {
128
+ var configured = core.credential('square', 'locationId');
129
+ var answer = await call('GET', '/v2/locations/' + encodeURIComponent(configured || 'main'));
130
+ // A configured id the token cannot use (another account's, a country
131
+ // typed in its place): Square says only that access is forbidden.
132
+ if (configured && (answer.status === 403 || answer.status === 404)) {
133
+ return { error: 'Square has no location "' + configured + '" these keys can charge through: the store needs a Square location ID, or none for the main location.' };
134
+ }
135
+ if (!answer.ok || !answer.data || !answer.data.location) {
136
+ return { error: problem(answer.data, 'Square could not find the location to charge through.') };
137
+ }
138
+ var found = answer.data.location;
139
+ return {
140
+ id: found.id,
141
+ currency: String(found.currency || '').toUpperCase(),
142
+ country: String(found.country || '').toUpperCase(),
143
+ // Square lists what it enabled for the location; card payments only
144
+ // once the seller's account can take them (a supported country, an
145
+ // activated account). No list: nothing to go by, nothing refused.
146
+ takesCards: !Array.isArray(found.capabilities) || found.capabilities.indexOf('CREDIT_CARD_PROCESSING') !== -1,
147
+ };
148
+ }
149
+
150
+ function currencyMismatch(place, currency) {
151
+ return place.currency && place.currency !== String(currency || '').toUpperCase()
152
+ ? 'Square charges in the location currency (' + place.currency + '), but these products are priced in ' + String(currency || '').toUpperCase() + '.'
153
+ : '';
154
+ }
155
+
156
+ // Why this location cannot take the payment, or '' when it can: Square's
157
+ // own page would otherwise tell the buyer only that the business is "not
158
+ // accepting payments".
159
+ function cannotCharge(place, currency) {
160
+ if (!place.takesCards) {
161
+ return 'This Square account cannot take card payments yet: Square has not enabled card processing for its location' + (place.country ? ' (' + place.country + ')' : '') + '.';
162
+ }
163
+ return currencyMismatch(place, currency);
164
+ }
165
+
166
+ function paymentNote(metadata, variationId) {
167
+ return (NOTE_PREFIX + [metadata.orderId || '', metadata.subscriptionId || '', variationId || ''].join(':')).slice(0, 500);
168
+ }
169
+
170
+ function readNote(note) {
171
+ var text = String(note || '');
172
+ if (text.indexOf(NOTE_PREFIX) !== 0) {
173
+ return null;
174
+ }
175
+ var parts = text.slice(NOTE_PREFIX.length).split(':');
176
+ return { orderId: parts[0] || '', subscriptionId: parts[1] || '', variationId: parts[2] || '' };
177
+ }
178
+
179
+ function linkResult(answer, extra) {
180
+ var link = answer.ok && answer.data ? answer.data.payment_link : null;
181
+ if (!link || !link.url) {
182
+ return { checkoutUrl: '', sessionId: '', error: problem(answer.data, 'Square refused the payment link (HTTP ' + answer.status + ')') };
183
+ }
184
+ var result = { checkoutUrl: String(link.url), sessionId: String(link.order_id || link.id || '') };
185
+ // The attempt as the store records it: the order the payment events name,
186
+ // then the link that reopens its page.
187
+ if (link.order_id && link.id) {
188
+ result.attemptRef = String(link.order_id) + ':' + String(link.id);
189
+ }
190
+ Object.keys(extra || {}).forEach(function (key) {
191
+ result[key] = extra[key];
192
+ });
193
+ return result;
194
+ }
195
+
196
+ async function createCheckout(input) {
197
+ if (!accessToken()) {
198
+ return { checkoutUrl: '', sessionId: '', error: MISSING_TOKEN };
199
+ }
200
+ try {
201
+ var place = await location();
202
+ if (place.error) {
203
+ return { checkoutUrl: '', sessionId: '', error: place.error };
204
+ }
205
+ var mismatch = cannotCharge(place, input.currency);
206
+ if (mismatch) {
207
+ return { checkoutUrl: '', sessionId: '', error: mismatch };
208
+ }
209
+ var metadata = input.metadata || {};
210
+ var lines = Array.isArray(input.lineItems) && input.lineItems.length > 0 ? input.lineItems : [{ name: input.description, unitAmount: input.amount, quantity: 1 }];
211
+ var body = {
212
+ // A retried checkout gets the link it already created; a checkout opened
213
+ // after an earlier one closed is a new link.
214
+ idempotency_key: idempotencyKey(
215
+ 'link:' + (metadata.orderId || Date.now()) + (input.previousAttempt ? ':' + input.previousAttempt : ''),
216
+ 192
217
+ ),
218
+ order: {
219
+ location_id: place.id,
220
+ reference_id: String(metadata.orderId || '').slice(0, 40) || undefined,
221
+ line_items: lines.map(function (line) {
222
+ return {
223
+ name: String(line.name || 'Item').slice(0, 512),
224
+ quantity: String(Math.max(1, Math.floor(Number(line.quantity) || 1))),
225
+ base_price_money: money(line.unitAmount, input.currency),
226
+ };
227
+ }),
228
+ },
229
+ checkout_options: { redirect_url: input.successUrl || undefined },
230
+ payment_note: paymentNote(metadata, ''),
231
+ };
232
+ if (input.customerEmail) {
233
+ body.pre_populated_data = { buyer_email: String(input.customerEmail).slice(0, 256) };
234
+ }
235
+ return linkResult(await call('POST', '/v2/online-checkout/payment-links', body));
236
+ } catch (err) {
237
+ return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
238
+ }
239
+ }
240
+
241
+ // What the payments on an order took: an order a payment link opened stays
242
+ // OPEN after it is paid, so its tenders' payments decide. \`paid\` once it
243
+ // owes nothing or a payment completed, \`confirming\` while one is approved
244
+ // or pending, '' when none took money (failed or cancelled ones included);
245
+ // \`{ error }\` when a payment could not be read.
246
+ async function tenderState(order) {
247
+ var tenders = Array.isArray(order && order.tenders) ? order.tenders : [];
248
+ if (tenders.length === 0) {
249
+ return { state: '' };
250
+ }
251
+ var due = order.net_amount_due_money ? Number(order.net_amount_due_money.amount) : NaN;
252
+ if (due === 0) {
253
+ return { state: 'paid' };
254
+ }
255
+ var state = '';
256
+ for (var i = 0; i < tenders.length; i++) {
257
+ var paymentId = String((tenders[i] && (tenders[i].payment_id || tenders[i].id)) || '');
258
+ if (!paymentId) {
259
+ continue;
260
+ }
261
+ var answer = await call('GET', '/v2/payments/' + encodeURIComponent(paymentId));
262
+ var payment = answer.ok && answer.data ? answer.data.payment : null;
263
+ if (!payment) {
264
+ return { error: problem(answer.data, 'Square could not be asked about payment ' + paymentId) };
265
+ }
266
+ var status = String(payment.status || '').toUpperCase();
267
+ if (status === 'COMPLETED') {
268
+ return { state: 'paid' };
269
+ }
270
+ if (status === 'APPROVED' || status === 'PENDING') {
271
+ state = 'confirming';
272
+ }
273
+ }
274
+ return { state: state };
275
+ }
276
+
277
+ // A Square order as a checkout state: a cancelled one takes no more, a
278
+ // completed one is paid, and an open one is what its payments took —
279
+ // \`open\` when they took nothing.
280
+ async function orderState(order) {
281
+ var state = String((order && order.state) || '').toUpperCase();
282
+ if (state === 'CANCELED') {
283
+ return { state: 'closed' };
284
+ }
285
+ if (state === 'COMPLETED') {
286
+ return { state: 'paid' };
287
+ }
288
+ var taken = await tenderState(order);
289
+ return taken.error ? taken : { state: taken.state || 'open' };
290
+ }
291
+
292
+ // What became of a checkout the store opened earlier (its order, then its
293
+ // payment link). An open order nobody paid is paid on its link's page,
294
+ // which is read back for its address.
295
+ async function inspectCheckout(input) {
296
+ var parts = String((input && input.reference) || '').trim().split(':');
297
+ var orderId = parts[0] || '';
298
+ var linkId = parts[1] || '';
299
+ if (!orderId) {
300
+ return { state: 'closed', checkoutUrl: '' };
301
+ }
302
+ if (!accessToken()) {
303
+ return { state: '', checkoutUrl: '', error: MISSING_TOKEN };
304
+ }
305
+ try {
306
+ var answer = await call('GET', '/v2/orders/' + encodeURIComponent(orderId));
307
+ if (answer.status === 404) {
308
+ return { state: 'closed', checkoutUrl: '' };
309
+ }
310
+ if (!answer.ok || !answer.data || !answer.data.order) {
311
+ return { state: '', checkoutUrl: '', error: problem(answer.data, 'Square could not be asked about order ' + orderId) };
312
+ }
313
+ var found = await orderState(answer.data.order);
314
+ if (found.error) {
315
+ return { state: '', checkoutUrl: '', error: found.error };
316
+ }
317
+ if (found.state !== 'open') {
318
+ return { state: found.state, checkoutUrl: '' };
319
+ }
320
+ if (!linkId) {
321
+ return { state: 'closed', checkoutUrl: '' };
322
+ }
323
+ var link = await call('GET', '/v2/online-checkout/payment-links/' + encodeURIComponent(linkId));
324
+ if (link.status === 404) {
325
+ return { state: 'closed', checkoutUrl: '' };
326
+ }
327
+ if (!link.ok) {
328
+ return { state: '', checkoutUrl: '', error: problem(link.data, 'Square could not be asked about payment link ' + linkId) };
329
+ }
330
+ var page = link.data && link.data.payment_link ? String(link.data.payment_link.url || '') : '';
331
+ return page ? { state: 'open', checkoutUrl: page } : { state: 'closed', checkoutUrl: '' };
332
+ } catch (err) {
333
+ return { state: '', checkoutUrl: '', error: core.describeError(err) };
334
+ }
335
+ }
336
+
337
+ // Closes a checkout the order no longer needs: its payment link is deleted,
338
+ // so its page is gone, which cancels its Square order with it; the order is
339
+ // cancelled on its own only when there is no link to delete, or deleting it
340
+ // failed. An order whose payments took money is answered as what they took.
341
+ async function closeCheckout(input) {
342
+ var parts = String((input && input.reference) || '').trim().split(':');
343
+ var orderId = parts[0] || '';
344
+ var linkId = parts[1] || '';
345
+ if (!orderId) {
346
+ return { state: 'closed', checkoutUrl: '', openUntil: '' };
347
+ }
348
+ if (!accessToken()) {
349
+ return { state: '', error: MISSING_TOKEN };
350
+ }
351
+ try {
352
+ var path = '/v2/orders/' + encodeURIComponent(orderId);
353
+ var answer = await call('GET', path);
354
+ if (answer.status === 404) {
355
+ return { state: 'closed', checkoutUrl: '', openUntil: '' };
356
+ }
357
+ if (!answer.ok || !answer.data || !answer.data.order) {
358
+ return { state: '', error: problem(answer.data, 'Square could not be asked about order ' + orderId) };
359
+ }
360
+ var order = answer.data.order;
361
+ var found = await orderState(order);
362
+ if (found.error) {
363
+ return { state: '', error: found.error };
364
+ }
365
+ if (found.state !== 'open') {
366
+ return { state: found.state, checkoutUrl: '', openUntil: '' };
367
+ }
368
+ var linkGone = false;
369
+ if (linkId) {
370
+ var deleted = await call('DELETE', '/v2/online-checkout/payment-links/' + encodeURIComponent(linkId));
371
+ if (deleted.ok) {
372
+ return { state: 'closed', checkoutUrl: '', openUntil: '' };
373
+ }
374
+ linkGone = deleted.status === 404;
375
+ }
376
+ var cancelled = await call('PUT', path, {
377
+ idempotency_key: idempotencyKey('close:' + orderId + ':' + String(order.version || ''), 192),
378
+ order: { location_id: order.location_id, version: order.version, state: 'CANCELED' },
379
+ });
380
+ if (cancelled.ok || linkGone) {
381
+ return { state: 'closed', checkoutUrl: '', openUntil: '' };
382
+ }
383
+ // Paid between the read and the cancellation: answer what it became.
384
+ var again = await call('GET', path);
385
+ var after = again.ok && again.data && again.data.order ? await orderState(again.data.order) : {};
386
+ return after.state && after.state !== 'open'
387
+ ? { state: after.state, checkoutUrl: '', openUntil: '' }
388
+ : { state: '', error: after.error || problem(cancelled.data, 'Square did not cancel order ' + orderId) };
389
+ } catch (err) {
390
+ return { state: '', error: core.describeError(err) };
391
+ }
392
+ }
393
+
394
+ // The Square orders opened for an order around the moment it was placed:
395
+ // they carry the order as their reference. A search filtered on a time
396
+ // must sort on that same time, or Square refuses it.
397
+ async function searchOrders(locationId, reference, span) {
398
+ var references = [];
399
+ var cursor = '';
400
+ for (var page = 0; page < core.SEARCH_PAGE_LIMIT; page++) {
401
+ var body = {
402
+ location_ids: [locationId],
403
+ query: {
404
+ filter: { date_time_filter: { created_at: { start_at: core.isoTime(span.from), end_at: core.isoTime(span.to) } } },
405
+ sort: { sort_field: 'CREATED_AT' },
406
+ },
407
+ limit: 500,
408
+ };
409
+ if (cursor) {
410
+ body.cursor = cursor;
411
+ }
412
+ var answer = await call('POST', '/v2/orders/search', body);
413
+ if (!answer.ok || !answer.data) {
414
+ return { error: problem(answer.data, 'Square could not search its orders') };
415
+ }
416
+ (Array.isArray(answer.data.orders) ? answer.data.orders : []).forEach(function (order) {
417
+ if (order && order.id && String(order.reference_id || '') === reference) {
418
+ references.push(String(order.id));
419
+ }
420
+ });
421
+ cursor = String(answer.data.cursor || '');
422
+ if (!cursor) {
423
+ return { references: references };
424
+ }
425
+ }
426
+ return { error: 'Square has more orders around the time this order was placed than the store can search.' };
427
+ }
428
+
429
+ // The payment links opened for the order around the moment it was placed,
430
+ // as \`<order id>:<link id>\`: the link's note names the order. The order of
431
+ // a link nobody opened yet may be a draft an order search does not return.
432
+ async function searchLinks(orderId, span) {
433
+ var prefix = NOTE_PREFIX + orderId + ':';
434
+ var references = [];
435
+ var cursor = '';
436
+ for (var page = 0; page < core.SEARCH_PAGE_LIMIT; page++) {
437
+ var answer = await call('GET', '/v2/online-checkout/payment-links?limit=1000' + (cursor ? '&cursor=' + encodeURIComponent(cursor) : ''));
438
+ if (!answer.ok || !answer.data) {
439
+ return { error: problem(answer.data, 'Square could not list its payment links') };
440
+ }
441
+ (Array.isArray(answer.data.payment_links) ? answer.data.payment_links : []).forEach(function (link) {
442
+ var created = Date.parse(String((link && link.created_at) || ''));
443
+ if (link && link.id && link.order_id && String(link.payment_note || '').indexOf(prefix) === 0 && created >= span.from && created <= span.to) {
444
+ references.push(String(link.order_id) + ':' + String(link.id));
445
+ }
446
+ });
447
+ cursor = String(answer.data.cursor || '');
448
+ if (!cursor) {
449
+ return { references: references };
450
+ }
451
+ }
452
+ return { error: 'Square has more payment links than the store can search.' };
453
+ }
454
+
455
+ async function findCheckouts(input) {
456
+ var orderId = String((input && input.orderId) || '').trim();
457
+ var span = core.searchWindow(input && input.placedAt);
458
+ if (!orderId || !span) {
459
+ return { error: 'The order to look up names no id or no time it was placed.' };
460
+ }
461
+ if (!accessToken()) {
462
+ return { error: MISSING_TOKEN };
463
+ }
464
+ try {
465
+ var place = await location();
466
+ if (place.error) {
467
+ return { error: place.error };
468
+ }
469
+ var orders = await searchOrders(place.id, orderId.slice(0, 40), span);
470
+ if (orders.error || orders.references.length > 0) {
471
+ return orders;
472
+ }
473
+ return await searchLinks(orderId, span);
474
+ } catch (err) {
475
+ return { error: core.describeError(err) };
476
+ }
477
+ }
478
+
479
+ function planFailure(message) {
480
+ return { ok: 'false', planId: '', providerProductId: '', created: 'false', error: message };
481
+ }
482
+
483
+ // A subscription plan and one variation (one STATIC paid phase) per product
484
+ // and price, cached by the workflow: Square's phases are immutable, so a new
485
+ // price is a new variation. The sandbox and production keep separate
486
+ // catalogs: a cached variation the current token's catalog does not have
487
+ // (the store moved between them) is created again there. One that cannot
488
+ // be checked right now is used as it is.
489
+ async function ensurePlan(input) {
490
+ if (!accessToken()) {
491
+ return planFailure(MISSING_TOKEN);
492
+ }
493
+ var cached = String(input.planId || '').trim();
494
+ if (cached) {
495
+ try {
496
+ var known = await call('GET', '/v2/catalog/object/' + encodeURIComponent(cached));
497
+ if (known.status !== 404) {
498
+ return { ok: 'true', planId: cached, providerProductId: String(input.providerProductId || ''), created: 'false' };
499
+ }
500
+ } catch (_err) {
501
+ return { ok: 'true', planId: cached, providerProductId: String(input.providerProductId || ''), created: 'false' };
502
+ }
503
+ }
504
+ var cadence = CADENCES[String(input.interval || 'month').toLowerCase() + ':' + Math.max(1, Math.floor(Number(input.intervalCount) || 1))];
505
+ if (!cadence) {
506
+ return planFailure('Square cannot bill every ' + (input.intervalCount || 1) + ' ' + input.interval + '(s).');
507
+ }
508
+ if (Math.max(0, Math.floor(Number(input.trialDays) || 0)) > 0) {
509
+ return planFailure('Square subscriptions charge at checkout, so they cannot start with a free trial.');
510
+ }
511
+ try {
512
+ // A plan priced in another currency than the location's is refused by
513
+ // Square's catalog with an opaque error: say what is wrong instead.
514
+ var place = await location();
515
+ if (place.error) {
516
+ return planFailure(place.error);
517
+ }
518
+ var mismatch = cannotCharge(place, input.currency);
519
+ if (mismatch) {
520
+ return planFailure(mismatch);
521
+ }
522
+ var name = String(input.productName || 'Subscription').slice(0, 255);
523
+ var plan = await call('POST', '/v2/catalog/object', {
524
+ idempotency_key: idempotencyKey('plan:' + input.productId + ':' + input.amount + ':' + cadence, 128),
525
+ object: { type: 'SUBSCRIPTION_PLAN', id: '#plan', present_at_all_locations: true, subscription_plan_data: { name: name } },
526
+ });
527
+ var planId = plan.ok && plan.data && plan.data.catalog_object ? String(plan.data.catalog_object.id) : '';
528
+ if (!planId) {
529
+ return planFailure(problem(plan.data, 'Square refused the subscription plan (HTTP ' + plan.status + ')'));
530
+ }
531
+ var variation = await call('POST', '/v2/catalog/object', {
532
+ idempotency_key: idempotencyKey('variation:' + planId + ':' + input.amount + ':' + cadence, 128),
533
+ object: {
534
+ type: 'SUBSCRIPTION_PLAN_VARIATION',
535
+ id: '#variation',
536
+ subscription_plan_variation_data: {
537
+ name: name,
538
+ subscription_plan_id: planId,
539
+ phases: [{ cadence: cadence, pricing: { type: 'STATIC', price_money: money(input.amount, input.currency) } }],
540
+ },
541
+ },
542
+ });
543
+ var variationId = variation.ok && variation.data && variation.data.catalog_object ? String(variation.data.catalog_object.id) : '';
544
+ if (!variationId) {
545
+ return planFailure(problem(variation.data, 'Square refused the plan variation (HTTP ' + variation.status + ')'));
546
+ }
547
+ return { ok: 'true', planId: variationId, providerProductId: planId, created: 'true' };
548
+ } catch (err) {
549
+ return planFailure(core.describeError(err));
550
+ }
551
+ }
552
+
553
+ // A quick-pay link on the plan VARIATION: Square saves the card, creates the
554
+ // subscription and charges its first cycle. Its one paid phase leaves no
555
+ // room for a gift card on that charge.
556
+ async function createSubscriptionCheckout(input) {
557
+ if (!accessToken()) {
558
+ return { checkoutUrl: '', sessionId: '', error: MISSING_TOKEN };
559
+ }
560
+ var variationId = String(input.planId || '').trim();
561
+ if (!variationId) {
562
+ return { checkoutUrl: '', sessionId: '', error: 'No Square plan variation was supplied for the subscription' };
563
+ }
564
+ var regular = Number(input.amount);
565
+ var due = Number(input.amountDue);
566
+ if (isFinite(due) && due < regular) {
567
+ return { checkoutUrl: '', sessionId: '', error: 'Square cannot take a gift card toward a subscription payment.' };
568
+ }
569
+ try {
570
+ var place = await location();
571
+ if (place.error) {
572
+ return { checkoutUrl: '', sessionId: '', error: place.error };
573
+ }
574
+ var mismatch = cannotCharge(place, input.currency);
575
+ if (mismatch) {
576
+ return { checkoutUrl: '', sessionId: '', error: mismatch };
577
+ }
578
+ var metadata = input.metadata || {};
579
+ var body = {
580
+ idempotency_key: idempotencyKey('subscription:' + (metadata.subscriptionId || Date.now()), 192),
581
+ quick_pay: { name: String(input.description || 'Subscription').slice(0, 255), price_money: money(regular, input.currency), location_id: place.id },
582
+ checkout_options: { subscription_plan_id: variationId, redirect_url: input.successUrl || undefined },
583
+ payment_note: paymentNote(metadata, variationId),
584
+ };
585
+ if (input.customerEmail) {
586
+ body.pre_populated_data = { buyer_email: String(input.customerEmail).slice(0, 256) };
587
+ }
588
+ return linkResult(await call('POST', '/v2/online-checkout/payment-links', body), { providerSubscriptionId: '' });
589
+ } catch (err) {
590
+ return { checkoutUrl: '', sessionId: '', error: core.describeError(err) };
591
+ }
592
+ }
593
+
594
+ function subscriptionStatus(status) {
595
+ var map = { PENDING: 'pending', ACTIVE: 'active', CANCELED: 'cancelled', DEACTIVATED: 'past_due', PAUSED: 'paused', COMPLETED: 'expired' };
596
+ return map[String(status || '').toUpperCase()] || '';
597
+ }
598
+
599
+ function dayToIso(value) {
600
+ return value ? new Date(String(value) + 'T00:00:00Z').toISOString() : '';
601
+ }
602
+
603
+ function manageFailure(message) {
604
+ return { ok: 'false', status: '', cancelAtPeriodEnd: 'false', currentPeriodStart: '', currentPeriodEnd: '', error: message };
605
+ }
606
+
607
+ // The pause Square scheduled for the next billing cycle, on a subscription
608
+ // read with its actions; null when none waits.
609
+ function pendingPause(subscription) {
610
+ var actions = Array.isArray(subscription.actions) ? subscription.actions : [];
611
+ for (var i = 0; i < actions.length; i++) {
612
+ if (actions[i] && actions[i].id && String(actions[i].type || '').toUpperCase() === 'PAUSE') {
613
+ return actions[i];
614
+ }
615
+ }
616
+ return null;
617
+ }
618
+
619
+ // Square only ever cancels at the end of the paid period, so "cancel now"
620
+ // is refused. A pause starts with the next billing cycle: until then the
621
+ // subscription stays active, and the answer says so. A resume withdraws a
622
+ // scheduled cancellation, resumes a paused subscription at once, or deletes
623
+ // a pause still waiting for its cycle.
624
+ async function manageSubscription(input) {
625
+ if (!accessToken()) {
626
+ return manageFailure(MISSING_TOKEN);
627
+ }
628
+ if (input.action === 'cancel') {
629
+ return manageFailure(CANCEL_NOW_UNSUPPORTED);
630
+ }
631
+ var path = '/v2/subscriptions/' + encodeURIComponent(input.subscriptionId);
632
+ try {
633
+ var answer;
634
+ if (input.action === 'refresh') {
635
+ answer = await call('GET', path + '?include=actions');
636
+ } else if (input.action === 'cancel_at_period_end') {
637
+ answer = await call('POST', path + '/cancel');
638
+ } else if (input.action === 'pause') {
639
+ answer = await call('POST', path + '/pause', {});
640
+ } else {
641
+ var current = await call('GET', path + '?include=actions');
642
+ var existing = current.ok && current.data ? current.data.subscription : null;
643
+ if (!existing) {
644
+ return manageFailure(problem(current.data, 'Square could not read the subscription (HTTP ' + current.status + ')'));
645
+ }
646
+ var pause = String(existing.status || '').toUpperCase() === 'PAUSED' ? null : pendingPause(existing);
647
+ answer = existing.canceled_date
648
+ ? await call('PUT', path, { subscription: { canceled_date: null } })
649
+ : pause
650
+ ? await call('DELETE', path + '/actions/' + encodeURIComponent(pause.id))
651
+ : await call('POST', path + '/resume', { resume_change_timing: 'IMMEDIATE' });
652
+ }
653
+ var subscription = answer.ok && answer.data ? answer.data.subscription : null;
654
+ if (!subscription) {
655
+ return manageFailure(problem(answer.data, 'Square refused the change (HTTP ' + answer.status + ')'));
656
+ }
657
+ var scheduledCancel = !!subscription.canceled_date && String(subscription.status).toUpperCase() !== 'CANCELED';
658
+ var result = {
659
+ ok: 'true',
660
+ status: subscriptionStatus(subscription.status),
661
+ cancelAtPeriodEnd: scheduledCancel ? 'true' : 'false',
662
+ currentPeriodStart: '',
663
+ currentPeriodEnd: dayToIso(subscription.charged_through_date || subscription.canceled_date),
664
+ };
665
+ if (input.action === 'pause' && result.status !== 'paused') {
666
+ result.message = PAUSE_SCHEDULED;
667
+ }
668
+ return result;
669
+ } catch (err) {
670
+ return manageFailure(core.describeError(err));
671
+ }
672
+ }
673
+
674
+ async function billingPortal() {
675
+ return { ok: 'false', url: '', error: 'Square has no billing page for subscribers.' };
676
+ }
677
+
678
+ function refundFailure(currency, message, extra) {
679
+ var result = { success: false, refundId: '', amount: 0, currency: currency, status: '', error: message };
680
+ if (extra) {
681
+ Object.keys(extra).forEach(function (key) {
682
+ result[key] = extra[key];
683
+ });
684
+ }
685
+ return result;
686
+ }
687
+
688
+ // Square needs the amount even for a full refund: what is left of the
689
+ // payment, read from the payment itself.
690
+ async function refund(input) {
691
+ var currency = String(input.currency || '').toUpperCase();
692
+ if (!accessToken()) {
693
+ return refundFailure(currency, MISSING_TOKEN);
694
+ }
695
+ var paymentId = String(input.paymentReference || '').trim();
696
+ if (!paymentId) {
697
+ return refundFailure(currency, 'This order has no Square payment to refund.');
698
+ }
699
+ try {
700
+ var found = await call('GET', '/v2/payments/' + encodeURIComponent(paymentId));
701
+ var payment = found.ok && found.data ? found.data.payment : null;
702
+ if (!payment) {
703
+ return refundFailure(currency, problem(found.data, 'Square could not find the payment ' + paymentId + '.'));
704
+ }
705
+ var paymentCurrency = String((payment.total_money && payment.total_money.currency) || currency).toUpperCase();
706
+ var remaining = Number((payment.total_money && payment.total_money.amount) || 0) - Number((payment.refunded_money && payment.refunded_money.amount) || 0);
707
+ var amountMinor = input.amount > 0 ? minor(input.amount, paymentCurrency) : remaining;
708
+ if (!(amountMinor > 0)) {
709
+ return refundFailure(paymentCurrency, input.amount > 0 ? 'The amount is smaller than the smallest unit of ' + paymentCurrency + '.' : 'Nothing is left to refund on this Square payment.');
710
+ }
711
+ var answer = await call('POST', '/v2/refunds', {
712
+ idempotency_key: idempotencyKey(input.idempotencyKey, 45),
713
+ payment_id: paymentId,
714
+ amount_money: { amount: amountMinor, currency: paymentCurrency },
715
+ reason: String(input.reason || '').trim().slice(0, 192) || undefined,
716
+ });
717
+ var created = answer.ok && answer.data ? answer.data.refund : null;
718
+ if (!created) {
719
+ return refundFailure(paymentCurrency, problem(answer.data, 'Square refused the refund (HTTP ' + answer.status + ')'));
720
+ }
721
+ var status = String(created.status || '');
722
+ if (status === 'REJECTED' || status === 'FAILED') {
723
+ return refundFailure(paymentCurrency, 'Square reported the refund as ' + status.toLowerCase() + '.', { refundId: created.id || '', status: status });
724
+ }
725
+ return {
726
+ success: true,
727
+ refundId: created.id || '',
728
+ amount: major(created.amount_money && created.amount_money.amount, paymentCurrency),
729
+ currency: paymentCurrency,
730
+ status: status,
731
+ error: '',
732
+ };
733
+ } catch (err) {
734
+ return refundFailure(currency, core.describeError(err));
735
+ }
736
+ }
737
+
738
+ // The URL Square posted to, which it signs with the body. Behind a proxy
739
+ // that does not pass the public host on, the request's own URL is not the
740
+ // registered one: the store's canonical origin (NEXTAUTH_URL) with the same
741
+ // path is tried too. A candidate URL cannot weaken the check — without the
742
+ // signature key no URL matches.
743
+ function signedUrlCandidates(input) {
744
+ var candidates = [];
745
+ var requested = String(input.url || '');
746
+ if (requested) {
747
+ candidates.push(requested);
748
+ }
749
+ var canonical = String(process.env.NEXTAUTH_URL || '').trim();
750
+ if (requested && canonical) {
751
+ try {
752
+ var own = new URL(requested);
753
+ var alternative = new URL(canonical).origin + own.pathname + own.search;
754
+ if (candidates.indexOf(alternative) === -1) {
755
+ candidates.push(alternative);
756
+ }
757
+ } catch (_err) {}
758
+ }
759
+ return candidates;
760
+ }
761
+
762
+ function signatureMatches(input, secret) {
763
+ var signature = core.header(input.headers, 'x-square-hmacsha256-signature');
764
+ if (!signature) {
765
+ return false;
766
+ }
767
+ return signedUrlCandidates(input).some(function (url) {
768
+ return core.safeEqual(core.hmac('sha256', secret, url + input.rawBody.toString('utf8'), 'base64'), signature);
769
+ });
770
+ }
771
+
772
+ // The first charge of a subscription names the store's rows in its note;
773
+ // the subscription Square created for that buyer and variation is looked up
774
+ // and handed to the store with it. Square may create it a moment after the
775
+ // payment, so a miss asks Square to deliver the event again. A returning
776
+ // subscriber's ended subscription, or an older one on the same plan, is
777
+ // not this payment's: only a live one no older than the payment (less a
778
+ // moment, as Square may record it just before the charge) is.
779
+ async function attachSubscription(payment, marker) {
780
+ var customerId = String(payment.customer_id || '');
781
+ if (!customerId) {
782
+ return { retry: 'Square has not attached a customer to the payment ' + payment.id + ' yet.' };
783
+ }
784
+ var found = await call('POST', '/v2/subscriptions/search', { query: { filter: { customer_ids: [customerId] } } });
785
+ var list = found.ok && found.data && Array.isArray(found.data.subscriptions) ? found.data.subscriptions : [];
786
+ var paidAt = Date.parse(String(payment.created_at || ''));
787
+ var matches = list
788
+ .filter(function (subscription) {
789
+ var status = String(subscription.status || '').toUpperCase();
790
+ if (status === 'CANCELED' || status === 'DEACTIVATED') {
791
+ return false;
792
+ }
793
+ if (marker.variationId && subscription.plan_variation_id !== marker.variationId) {
794
+ return false;
795
+ }
796
+ return isNaN(paidAt) || Date.parse(String(subscription.created_at || '')) >= paidAt - SUBSCRIPTION_CREATED_ALLOWANCE_MS;
797
+ })
798
+ .sort(function (a, b) {
799
+ return String(b.created_at || '').localeCompare(String(a.created_at || ''));
800
+ });
801
+ if (matches.length === 0) {
802
+ return { retry: 'Square has not created the subscription for payment ' + payment.id + ' yet.' };
803
+ }
804
+ return { subscription: matches[0] };
805
+ }
806
+
807
+ // The payment behind an order: its first tender's; '' for an order nobody paid.
808
+ function tenderPaymentId(order) {
809
+ var tenders = order && Array.isArray(order.tenders) ? order.tenders : [];
810
+ return tenders.length > 0 ? String(tenders[0].payment_id || tenders[0].id || '') : '';
811
+ }
812
+
813
+ // A renewal is an invoice: its payment is the tender of the invoice's order.
814
+ async function attachInvoicePayment(invoice) {
815
+ if (!invoice.order_id) {
816
+ return {};
817
+ }
818
+ var answer = await call('GET', '/v2/orders/' + encodeURIComponent(invoice.order_id));
819
+ return { paymentId: answer.ok && answer.data ? tenderPaymentId(answer.data.order) : '' };
820
+ }
821
+
822
+ async function verifyWebhook(input) {
823
+ var secret = input.secret || core.credential('square', 'webhookSignatureKey');
824
+ if (!secret) {
825
+ return { ok: false, reason: 'The Square webhook signature key (SQUARE_WEBHOOK_SIGNATURE_KEY) is not configured.' };
826
+ }
827
+ if (!signatureMatches(input, secret)) {
828
+ return { ok: false, reason: 'The Square signature does not match: the signature key belongs to another webhook subscription, or Square posts to another URL than ' + (input.url || 'this route') + '.' };
829
+ }
830
+ return enrichEvent(input.body || {});
831
+ }
832
+
833
+ // What the store reads off an event past its signature, or one built from
834
+ // Square (see reconcile): the store rows a payment note names, with the
835
+ // subscription a first charge opened, and the payment behind a renewal.
836
+ async function enrichEvent(body) {
837
+ var object = (body.data && body.data.object) || {};
838
+ try {
839
+ if (object.payment) {
840
+ var marker = readNote(object.payment.note);
841
+ if (marker) {
842
+ object.payment.teleport = marker;
843
+ if (marker.subscriptionId && String(object.payment.status).toUpperCase() === 'COMPLETED') {
844
+ var attached = await attachSubscription(object.payment, marker);
845
+ if (attached.retry) {
846
+ return { ok: false, retry: true, reason: attached.retry };
847
+ }
848
+ object.payment.teleportSubscription = attached.subscription;
849
+ }
850
+ }
851
+ } else if (object.invoice && object.invoice.subscription_id) {
852
+ object.invoice.teleportPaymentId = (await attachInvoicePayment(object.invoice)).paymentId || '';
853
+ }
854
+ return { ok: true, body: body };
855
+ } catch (err) {
856
+ return { ok: false, retry: true, reason: core.describeError(err) };
857
+ }
858
+ }
859
+
860
+ // A checkout whose webhook never came (no webhook subscription for this
861
+ // store's address, a key of another one) is settled from Square itself:
862
+ // its order's payment is READ with the store's token and answered as the
863
+ // \`payment.updated\` Square sends for it. Nothing but the checkout's
864
+ // reference (\`<order id>:<link id>\`, or the order id alone) comes from the
865
+ // request.
866
+ var CHECKOUT_REFERENCE_PATTERN = /^([A-Za-z0-9]{8,64})(:[A-Za-z0-9]{8,64})?$/;
867
+
868
+ // Square could not be asked (its environment could not be found, an
869
+ // outage, a rate limit): worth asking again.
870
+ function unanswered(answer, fallback) {
871
+ return { ok: false, retry: answer.status === 0 || answer.status >= 500 || answer.status === 429, reason: problem(answer.data, fallback) };
872
+ }
873
+
874
+ async function reconcile(request) {
875
+ var kind = String((request && request.kind) || '');
876
+ var reference = CHECKOUT_REFERENCE_PATTERN.exec(String((request && request.id) || '').trim());
877
+ if (kind !== 'checkout' || !reference) {
878
+ return { ok: false, reason: 'The request names no Square checkout to settle.' };
879
+ }
880
+ if (!accessToken()) {
881
+ return { ok: false, retry: true, reason: MISSING_TOKEN };
882
+ }
883
+ var orderId = reference[1];
884
+ try {
885
+ var answer = await call('GET', '/v2/orders/' + encodeURIComponent(orderId));
886
+ if (!answer.ok || !answer.data || !answer.data.order) {
887
+ return unanswered(answer, 'Square could not be asked about order ' + orderId);
888
+ }
889
+ var paymentId = tenderPaymentId(answer.data.order);
890
+ if (!paymentId) {
891
+ return { ok: false, reason: 'Nobody has paid Square order ' + orderId + ' yet.' };
892
+ }
893
+ var found = await call('GET', '/v2/payments/' + encodeURIComponent(paymentId));
894
+ var payment = found.ok && found.data ? found.data.payment : null;
895
+ if (!payment) {
896
+ return unanswered(found, 'Square could not be asked about payment ' + paymentId);
897
+ }
898
+ return await enrichEvent({
899
+ type: 'payment.updated',
900
+ event_id: 'teleport-settle:' + String(payment.id || paymentId),
901
+ created_at: new Date().toISOString(),
902
+ data: { type: 'payment', id: String(payment.id || paymentId), object: { payment: payment } },
903
+ });
904
+ } catch (err) {
905
+ return { ok: false, retry: true, reason: core.describeError(err) };
906
+ }
907
+ }
908
+
909
+ function reconcileKinds(reference) {
910
+ return CHECKOUT_REFERENCE_PATTERN.test(String(reference || '').trim()) ? ['checkout'] : [];
911
+ }
912
+
913
+ return {
914
+ id: 'square',
915
+ createCheckout: createCheckout,
916
+ createSubscriptionCheckout: createSubscriptionCheckout,
917
+ inspectCheckout: inspectCheckout,
918
+ closeCheckout: closeCheckout,
919
+ findCheckouts: findCheckouts,
920
+ ensurePlan: ensurePlan,
921
+ refund: refund,
922
+ manageSubscription: manageSubscription,
923
+ billingPortal: billingPortal,
924
+ reconcile: reconcile,
925
+ reconcileKinds: reconcileKinds,
926
+ verifyWebhook: verifyWebhook,
927
+ };
928
+ };
929
+ `;
930
+ exports.generateSquareDriverCode = generateSquareDriverCode;
931
+ //# sourceMappingURL=square-driver-code.js.map