@teleporthq/teleport-plugin-next-workflows 0.44.10 → 0.44.17

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 (976) hide show
  1. package/__tests__/_helpers/fake-fetch.ts +75 -0
  2. package/__tests__/_helpers/gui-place-order-statements.ts +17 -0
  3. package/__tests__/_helpers/inserted-lines.ts +22 -0
  4. package/__tests__/_helpers/invoice-store.ts +10 -1
  5. package/__tests__/_helpers/load-security-runtime.ts +45 -0
  6. package/__tests__/_helpers/load-server-runtime.ts +26 -3
  7. package/__tests__/_helpers/run-account-delete-route.ts +3 -1
  8. package/__tests__/_helpers/run-generated-middleware.ts +7 -2
  9. package/__tests__/account-delete-owned-rows.test.ts +3 -1
  10. package/__tests__/adopted-element-trigger-code.test.ts +128 -0
  11. package/__tests__/analytics-track-outcome.test.ts +145 -0
  12. package/__tests__/auth-password-change-ends-sessions.test.ts +8 -1
  13. package/__tests__/auth-password-security.test.ts +2275 -0
  14. package/__tests__/auth-session-cost.test.ts +31 -0
  15. package/__tests__/auth-signup-route.test.ts +960 -0
  16. package/__tests__/authored-code-every-path.test.ts +247 -0
  17. package/__tests__/automations-bus.test.ts +3820 -0
  18. package/__tests__/automations-catalog-drift.test.ts +97 -0
  19. package/__tests__/booking-calendar-feed-route.test.ts +20 -3
  20. package/__tests__/cart-price-order.test.ts +336 -1
  21. package/__tests__/code-lookup-rate-limit-route.test.ts +189 -0
  22. package/__tests__/cost-bearing-node-types.test.ts +119 -0
  23. package/__tests__/credential-columns-reply.test.ts +9 -0
  24. package/__tests__/credential-result-reply.test.ts +19 -5
  25. package/__tests__/cron-route-loop-templateparams.test.ts +6 -3
  26. package/__tests__/custom-js-authored-code.test.ts +304 -0
  27. package/__tests__/custom-node-custom-code-gate.test.ts +136 -0
  28. package/__tests__/custom-node-step-handlers.test.ts +251 -0
  29. package/__tests__/custom-node-step-reach.test.ts +63 -0
  30. package/__tests__/data-api-anon-user-id-fallback.test.ts +7 -2
  31. package/__tests__/data-api-browser-reads.test.ts +7 -0
  32. package/__tests__/data-api-business-events.test.ts +403 -0
  33. package/__tests__/data-api-invalid-body.test.ts +7 -0
  34. package/__tests__/data-api-low-stock-autofire.test.ts +30 -4
  35. package/__tests__/data-api-optional-feature-columns.test.ts +44 -0
  36. package/__tests__/data-api-owner-scope-credentials.test.ts +1324 -0
  37. package/__tests__/data-api-protected-tables.test.ts +48 -15
  38. package/__tests__/data-api-retired-table-and-account-fields.test.ts +208 -0
  39. package/__tests__/email-locale-senders.test.ts +5 -3
  40. package/__tests__/expression-injection.test.ts +343 -0
  41. package/__tests__/fixtures/admin-file-workflows.json +242 -0
  42. package/__tests__/form-confirmation-email-template.test.ts +44 -0
  43. package/__tests__/internal-request-headers.test.ts +25 -0
  44. package/__tests__/invoice-pdf-service-project-header.test.ts +120 -0
  45. package/__tests__/invoice-self-call-origin.test.ts +57 -1
  46. package/__tests__/legacy-webhook-self-calls.test.ts +86 -1
  47. package/__tests__/middleware-home-route-protection.test.ts +3 -1
  48. package/__tests__/middleware-subscriber-access.test.ts +1 -1
  49. package/__tests__/newsletter-admin-route.test.ts +649 -0
  50. package/__tests__/newsletter-plugin.test.ts +1248 -0
  51. package/__tests__/outbound-nodes-security.test.ts +1929 -0
  52. package/__tests__/page-access-guard.test.ts +217 -0
  53. package/__tests__/page-access-route-table.test.ts +231 -0
  54. package/__tests__/payment-drivers-module.test.ts +23 -0
  55. package/__tests__/payment-legacy-webhook-routes.test.ts +100 -5
  56. package/__tests__/payment-webhook-route.test.ts +4 -1
  57. package/__tests__/paypal-webhook-signature-verification.test.ts +44 -0
  58. package/__tests__/place-order-guards.test.ts +506 -0
  59. package/__tests__/public-step-guards.test.ts +310 -0
  60. package/__tests__/publish-refusals.test.ts +505 -0
  61. package/__tests__/realtime-identity-routes.test.ts +492 -0
  62. package/__tests__/record-event-writer-server-only.test.ts +975 -0
  63. package/__tests__/resolve-config-template-params.test.ts +3 -3
  64. package/__tests__/runtime-storage-upload-access.test.ts +280 -17
  65. package/__tests__/security-integration-env-names.test.ts +74 -0
  66. package/__tests__/security-lists-parity.test.ts +245 -0
  67. package/__tests__/security-runtime-shadow.test.ts +225 -1
  68. package/__tests__/security-runtime.test.ts +893 -0
  69. package/__tests__/segment-rate-limit-error-branch.test.ts +284 -0
  70. package/__tests__/segment-route-abuse-gate.test.ts +309 -0
  71. package/__tests__/server-job-hops-real-data-api.test.ts +669 -0
  72. package/__tests__/server-session-identity.test.ts +522 -0
  73. package/__tests__/server-step-chain.test.ts +222 -0
  74. package/__tests__/server-step-signing.test.ts +107 -2
  75. package/__tests__/session-cookie-resolver.test.ts +62 -106
  76. package/__tests__/signup-event.test.ts +649 -0
  77. package/__tests__/signup-reply-identical.test.ts +144 -0
  78. package/__tests__/slack-message-escaping.test.ts +123 -0
  79. package/__tests__/visitor-step-limits.test.ts +318 -0
  80. package/__tests__/webhook-delivery-lease.test.ts +4 -1
  81. package/__tests__/webpack-safe-handlers.test.ts +57 -8
  82. package/__tests__/workflow-auth-guard.test.ts +9 -1
  83. package/dist/cjs/account-delete-route-generator.d.ts +1 -0
  84. package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
  85. package/dist/cjs/account-delete-route-generator.js +18 -3
  86. package/dist/cjs/account-delete-route-generator.js.map +1 -1
  87. package/dist/cjs/api-route-generator.d.ts +52 -3
  88. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  89. package/dist/cjs/api-route-generator.js +600 -145
  90. package/dist/cjs/api-route-generator.js.map +1 -1
  91. package/dist/cjs/auth-generator.d.ts +126 -3
  92. package/dist/cjs/auth-generator.d.ts.map +1 -1
  93. package/dist/cjs/auth-generator.js +1353 -139
  94. package/dist/cjs/auth-generator.js.map +1 -1
  95. package/dist/cjs/automations/activity-kicks.d.ts +12 -0
  96. package/dist/cjs/automations/activity-kicks.d.ts.map +1 -0
  97. package/dist/cjs/automations/activity-kicks.js +123 -0
  98. package/dist/cjs/automations/activity-kicks.js.map +1 -0
  99. package/dist/cjs/automations/app-events-source.d.ts +33 -0
  100. package/dist/cjs/automations/app-events-source.d.ts.map +1 -0
  101. package/dist/cjs/automations/app-events-source.js +109 -0
  102. package/dist/cjs/automations/app-events-source.js.map +1 -0
  103. package/dist/cjs/automations/automations-project-plugin.d.ts +21 -0
  104. package/dist/cjs/automations/automations-project-plugin.d.ts.map +1 -0
  105. package/dist/cjs/automations/automations-project-plugin.js +102 -0
  106. package/dist/cjs/automations/automations-project-plugin.js.map +1 -0
  107. package/dist/cjs/automations/automations-scope.d.ts +104 -0
  108. package/dist/cjs/automations/automations-scope.d.ts.map +1 -0
  109. package/dist/cjs/automations/automations-scope.js +176 -0
  110. package/dist/cjs/automations/automations-scope.js.map +1 -0
  111. package/dist/cjs/automations/dispatcher-source.d.ts +72 -0
  112. package/dist/cjs/automations/dispatcher-source.d.ts.map +1 -0
  113. package/dist/cjs/automations/dispatcher-source.js +1008 -0
  114. package/dist/cjs/automations/dispatcher-source.js.map +1 -0
  115. package/dist/cjs/automations/event-bus-source.d.ts +44 -0
  116. package/dist/cjs/automations/event-bus-source.d.ts.map +1 -0
  117. package/dist/cjs/automations/event-bus-source.js +427 -0
  118. package/dist/cjs/automations/event-bus-source.js.map +1 -0
  119. package/dist/cjs/automations/handler-module-generator.d.ts +25 -0
  120. package/dist/cjs/automations/handler-module-generator.d.ts.map +1 -0
  121. package/dist/cjs/automations/handler-module-generator.js +78 -0
  122. package/dist/cjs/automations/handler-module-generator.js.map +1 -0
  123. package/dist/cjs/automations/hydrators-source.d.ts +33 -0
  124. package/dist/cjs/automations/hydrators-source.d.ts.map +1 -0
  125. package/dist/cjs/automations/hydrators-source.js +571 -0
  126. package/dist/cjs/automations/hydrators-source.js.map +1 -0
  127. package/dist/cjs/booking-calendar-feed-route-generator.d.ts.map +1 -1
  128. package/dist/cjs/booking-calendar-feed-route-generator.js +8 -0
  129. package/dist/cjs/booking-calendar-feed-route-generator.js.map +1 -1
  130. package/dist/cjs/configured-nextauth-url.d.ts +17 -0
  131. package/dist/cjs/configured-nextauth-url.d.ts.map +1 -0
  132. package/dist/cjs/configured-nextauth-url.js +20 -0
  133. package/dist/cjs/configured-nextauth-url.js.map +1 -0
  134. package/dist/cjs/cron-request-verification.d.ts +22 -1
  135. package/dist/cjs/cron-request-verification.d.ts.map +1 -1
  136. package/dist/cjs/cron-request-verification.js +50 -6
  137. package/dist/cjs/cron-request-verification.js.map +1 -1
  138. package/dist/cjs/data-api-route-generator.d.ts +19 -0
  139. package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
  140. package/dist/cjs/data-api-route-generator.js +711 -43
  141. package/dist/cjs/data-api-route-generator.js.map +1 -1
  142. package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts +3 -1
  143. package/dist/cjs/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
  144. package/dist/cjs/ecommerce/parameterized-stock-chain.js +45 -5
  145. package/dist/cjs/ecommerce/parameterized-stock-chain.js.map +1 -1
  146. package/dist/cjs/ecommerce/place-order-guards.d.ts +126 -0
  147. package/dist/cjs/ecommerce/place-order-guards.d.ts.map +1 -0
  148. package/dist/cjs/ecommerce/place-order-guards.js +670 -0
  149. package/dist/cjs/ecommerce/place-order-guards.js.map +1 -0
  150. package/dist/cjs/ecommerce-customhandler-rewriter.d.ts +2 -0
  151. package/dist/cjs/ecommerce-customhandler-rewriter.d.ts.map +1 -1
  152. package/dist/cjs/ecommerce-customhandler-rewriter.js +38 -2
  153. package/dist/cjs/ecommerce-customhandler-rewriter.js.map +1 -1
  154. package/dist/cjs/executor-generator.d.ts.map +1 -1
  155. package/dist/cjs/executor-generator.js +368 -60
  156. package/dist/cjs/executor-generator.js.map +1 -1
  157. package/dist/cjs/graph-utils.d.ts +9 -0
  158. package/dist/cjs/graph-utils.d.ts.map +1 -1
  159. package/dist/cjs/graph-utils.js +32 -1
  160. package/dist/cjs/graph-utils.js.map +1 -1
  161. package/dist/cjs/index.d.ts +20 -1
  162. package/dist/cjs/index.d.ts.map +1 -1
  163. package/dist/cjs/index.js +72 -2
  164. package/dist/cjs/index.js.map +1 -1
  165. package/dist/cjs/invoice/api-routes-code.d.ts +9 -3
  166. package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
  167. package/dist/cjs/invoice/api-routes-code.js +9 -7
  168. package/dist/cjs/invoice/api-routes-code.js.map +1 -1
  169. package/dist/cjs/invoice/index.d.ts.map +1 -1
  170. package/dist/cjs/invoice/index.js +12 -7
  171. package/dist/cjs/invoice/index.js.map +1 -1
  172. package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -1
  173. package/dist/cjs/invoice/invoice-assembly-code.js +8 -3
  174. package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -1
  175. package/dist/cjs/invoice/pdf-generator-code.d.ts.map +1 -1
  176. package/dist/cjs/invoice/pdf-generator-code.js +2 -1
  177. package/dist/cjs/invoice/pdf-generator-code.js.map +1 -1
  178. package/dist/cjs/invoice/pdf-service-client-code.d.ts.map +1 -1
  179. package/dist/cjs/invoice/pdf-service-client-code.js +15 -7
  180. package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
  181. package/dist/cjs/newsletter/admin-route-code.d.ts +60 -0
  182. package/dist/cjs/newsletter/admin-route-code.d.ts.map +1 -0
  183. package/dist/cjs/newsletter/admin-route-code.js +300 -0
  184. package/dist/cjs/newsletter/admin-route-code.js.map +1 -0
  185. package/dist/cjs/newsletter/helper-code.d.ts +109 -0
  186. package/dist/cjs/newsletter/helper-code.d.ts.map +1 -0
  187. package/dist/cjs/newsletter/helper-code.js +662 -0
  188. package/dist/cjs/newsletter/helper-code.js.map +1 -0
  189. package/dist/cjs/newsletter/newsletter-scope.d.ts +65 -0
  190. package/dist/cjs/newsletter/newsletter-scope.d.ts.map +1 -0
  191. package/dist/cjs/newsletter/newsletter-scope.js +103 -0
  192. package/dist/cjs/newsletter/newsletter-scope.js.map +1 -0
  193. package/dist/cjs/newsletter/project-plugin.d.ts +18 -0
  194. package/dist/cjs/newsletter/project-plugin.d.ts.map +1 -0
  195. package/dist/cjs/newsletter/project-plugin.js +97 -0
  196. package/dist/cjs/newsletter/project-plugin.js.map +1 -0
  197. package/dist/cjs/newsletter/routes-code.d.ts +6 -0
  198. package/dist/cjs/newsletter/routes-code.d.ts.map +1 -0
  199. package/dist/cjs/newsletter/routes-code.js +181 -0
  200. package/dist/cjs/newsletter/routes-code.js.map +1 -0
  201. package/dist/cjs/nodes/account/account-compare-passwords.d.ts.map +1 -1
  202. package/dist/cjs/nodes/account/account-compare-passwords.js +16 -6
  203. package/dist/cjs/nodes/account/account-compare-passwords.js.map +1 -1
  204. package/dist/cjs/nodes/account/account-delete-current.js +1 -1
  205. package/dist/cjs/nodes/account/account-get-current.js +1 -1
  206. package/dist/cjs/nodes/account/account-hash-password.d.ts.map +1 -1
  207. package/dist/cjs/nodes/account/account-hash-password.js +15 -3
  208. package/dist/cjs/nodes/account/account-hash-password.js.map +1 -1
  209. package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
  210. package/dist/cjs/nodes/account/account-login.js +23 -6
  211. package/dist/cjs/nodes/account/account-login.js.map +1 -1
  212. package/dist/cjs/nodes/account/account-logout.js +1 -1
  213. package/dist/cjs/nodes/account/account-refresh-session.js +1 -1
  214. package/dist/cjs/nodes/account/account-request-password-reset.d.ts +3 -0
  215. package/dist/cjs/nodes/account/account-request-password-reset.d.ts.map +1 -0
  216. package/dist/cjs/nodes/account/account-request-password-reset.js +46 -0
  217. package/dist/cjs/nodes/account/account-request-password-reset.js.map +1 -0
  218. package/dist/cjs/nodes/account/account-reset-password.d.ts +3 -0
  219. package/dist/cjs/nodes/account/account-reset-password.d.ts.map +1 -0
  220. package/dist/cjs/nodes/account/account-reset-password.js +44 -0
  221. package/dist/cjs/nodes/account/account-reset-password.js.map +1 -0
  222. package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
  223. package/dist/cjs/nodes/account/account-signup.js +82 -19
  224. package/dist/cjs/nodes/account/account-signup.js.map +1 -1
  225. package/dist/cjs/nodes/account/account-social-login.js +1 -1
  226. package/dist/cjs/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
  227. package/dist/cjs/nodes/ai/ai-custom-prompt.js +20 -5
  228. package/dist/cjs/nodes/ai/ai-custom-prompt.js.map +1 -1
  229. package/dist/cjs/nodes/ai/ai-detect-language.d.ts.map +1 -1
  230. package/dist/cjs/nodes/ai/ai-detect-language.js +20 -5
  231. package/dist/cjs/nodes/ai/ai-detect-language.js.map +1 -1
  232. package/dist/cjs/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
  233. package/dist/cjs/nodes/ai/ai-generate-text-embedding.js +10 -2
  234. package/dist/cjs/nodes/ai/ai-generate-text-embedding.js.map +1 -1
  235. package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
  236. package/dist/cjs/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
  237. package/dist/cjs/nodes/ai/ai-provider-utils.d.ts +31 -2
  238. package/dist/cjs/nodes/ai/ai-provider-utils.d.ts.map +1 -1
  239. package/dist/cjs/nodes/ai/ai-provider-utils.js +125 -11
  240. package/dist/cjs/nodes/ai/ai-provider-utils.js.map +1 -1
  241. package/dist/cjs/nodes/ai/ai-select-database-data.d.ts.map +1 -1
  242. package/dist/cjs/nodes/ai/ai-select-database-data.js +6 -2
  243. package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
  244. package/dist/cjs/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
  245. package/dist/cjs/nodes/ai/ai-sentiment-analysis.js +20 -5
  246. package/dist/cjs/nodes/ai/ai-sentiment-analysis.js.map +1 -1
  247. package/dist/cjs/nodes/ai/ai-summarization.d.ts.map +1 -1
  248. package/dist/cjs/nodes/ai/ai-summarization.js +20 -5
  249. package/dist/cjs/nodes/ai/ai-summarization.js.map +1 -1
  250. package/dist/cjs/nodes/ai/ai-text-classifier.d.ts.map +1 -1
  251. package/dist/cjs/nodes/ai/ai-text-classifier.js +20 -5
  252. package/dist/cjs/nodes/ai/ai-text-classifier.js.map +1 -1
  253. package/dist/cjs/nodes/ai/ai-text-transform.d.ts.map +1 -1
  254. package/dist/cjs/nodes/ai/ai-text-transform.js +20 -5
  255. package/dist/cjs/nodes/ai/ai-text-transform.js.map +1 -1
  256. package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts +3 -0
  257. package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
  258. package/dist/cjs/nodes/analytics/analytics-track-outcome.js +110 -0
  259. package/dist/cjs/nodes/analytics/analytics-track-outcome.js.map +1 -0
  260. package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -1
  261. package/dist/cjs/nodes/cart/cart-price-order.js +161 -2
  262. package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -1
  263. package/dist/cjs/nodes/cost-bearing-node-types.d.ts +4 -0
  264. package/dist/cjs/nodes/cost-bearing-node-types.d.ts.map +1 -0
  265. package/dist/cjs/nodes/cost-bearing-node-types.js +43 -0
  266. package/dist/cjs/nodes/cost-bearing-node-types.js.map +1 -0
  267. package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
  268. package/dist/cjs/nodes/data/data-select.js +12 -2
  269. package/dist/cjs/nodes/data/data-select.js.map +1 -1
  270. package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
  271. package/dist/cjs/nodes/email/email-mailersend.js +15 -11
  272. package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
  273. package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
  274. package/dist/cjs/nodes/email/email-mailgun.js +15 -15
  275. package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
  276. package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
  277. package/dist/cjs/nodes/email/email-postmark.js +15 -15
  278. package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
  279. package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
  280. package/dist/cjs/nodes/email/email-resend.js +15 -15
  281. package/dist/cjs/nodes/email/email-resend.js.map +1 -1
  282. package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
  283. package/dist/cjs/nodes/email/email-sendgrid.js +15 -15
  284. package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
  285. package/dist/cjs/nodes/email/html-escape-code.d.ts +3 -0
  286. package/dist/cjs/nodes/email/html-escape-code.d.ts.map +1 -0
  287. package/dist/cjs/nodes/email/html-escape-code.js +23 -0
  288. package/dist/cjs/nodes/email/html-escape-code.js.map +1 -0
  289. package/dist/cjs/nodes/email/message-trust.d.ts +40 -0
  290. package/dist/cjs/nodes/email/message-trust.d.ts.map +1 -0
  291. package/dist/cjs/nodes/email/message-trust.js +167 -0
  292. package/dist/cjs/nodes/email/message-trust.js.map +1 -0
  293. package/dist/cjs/nodes/email/outbound-message-guard.d.ts +113 -0
  294. package/dist/cjs/nodes/email/outbound-message-guard.d.ts.map +1 -0
  295. package/dist/cjs/nodes/email/outbound-message-guard.js +460 -0
  296. package/dist/cjs/nodes/email/outbound-message-guard.js.map +1 -0
  297. package/dist/cjs/nodes/email/trusted-html-code.d.ts +22 -0
  298. package/dist/cjs/nodes/email/trusted-html-code.d.ts.map +1 -0
  299. package/dist/cjs/nodes/email/trusted-html-code.js +52 -0
  300. package/dist/cjs/nodes/email/trusted-html-code.js.map +1 -0
  301. package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
  302. package/dist/cjs/nodes/general/general-custom-js.js +46 -8
  303. package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
  304. package/dist/cjs/nodes/general/general-http-request.d.ts.map +1 -1
  305. package/dist/cjs/nodes/general/general-http-request.js +431 -45
  306. package/dist/cjs/nodes/general/general-http-request.js.map +1 -1
  307. package/dist/cjs/nodes/general/general-rate-limiter.d.ts.map +1 -1
  308. package/dist/cjs/nodes/general/general-rate-limiter.js +46 -78
  309. package/dist/cjs/nodes/general/general-rate-limiter.js.map +1 -1
  310. package/dist/cjs/nodes/general/general-wait.d.ts +3 -0
  311. package/dist/cjs/nodes/general/general-wait.d.ts.map +1 -0
  312. package/dist/cjs/nodes/general/general-wait.js +81 -0
  313. package/dist/cjs/nodes/general/general-wait.js.map +1 -0
  314. package/dist/cjs/nodes/general/visitor-request.d.ts +44 -0
  315. package/dist/cjs/nodes/general/visitor-request.d.ts.map +1 -0
  316. package/dist/cjs/nodes/general/visitor-request.js +72 -0
  317. package/dist/cjs/nodes/general/visitor-request.js.map +1 -0
  318. package/dist/cjs/nodes/index.d.ts.map +1 -1
  319. package/dist/cjs/nodes/index.js +7 -1
  320. package/dist/cjs/nodes/index.js.map +1 -1
  321. package/dist/cjs/nodes/integrations/integration-slack.d.ts.map +1 -1
  322. package/dist/cjs/nodes/integrations/integration-slack.js +17 -6
  323. package/dist/cjs/nodes/integrations/integration-slack.js.map +1 -1
  324. package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts +3 -0
  325. package/dist/cjs/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
  326. package/dist/cjs/nodes/newsletter/newsletter-confirm.js +41 -0
  327. package/dist/cjs/nodes/newsletter/newsletter-confirm.js.map +1 -0
  328. package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
  329. package/dist/cjs/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
  330. package/dist/cjs/nodes/newsletter/newsletter-subscribe.js +69 -0
  331. package/dist/cjs/nodes/newsletter/newsletter-subscribe.js.map +1 -0
  332. package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
  333. package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
  334. package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js +42 -0
  335. package/dist/cjs/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
  336. package/dist/cjs/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
  337. package/dist/cjs/nodes/realtime/realtime-join-channel.js +5 -4
  338. package/dist/cjs/nodes/realtime/realtime-join-channel.js.map +1 -1
  339. package/dist/cjs/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
  340. package/dist/cjs/nodes/realtime/realtime-send-channel-event.js +11 -2
  341. package/dist/cjs/nodes/realtime/realtime-send-channel-event.js.map +1 -1
  342. package/dist/cjs/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
  343. package/dist/cjs/nodes/realtime/realtime-send-channel-message.js +11 -2
  344. package/dist/cjs/nodes/realtime/realtime-send-channel-message.js.map +1 -1
  345. package/dist/cjs/nodes/sms/sms-infobip.d.ts.map +1 -1
  346. package/dist/cjs/nodes/sms/sms-infobip.js +11 -8
  347. package/dist/cjs/nodes/sms/sms-infobip.js.map +1 -1
  348. package/dist/cjs/nodes/sms/sms-smsapi.d.ts.map +1 -1
  349. package/dist/cjs/nodes/sms/sms-smsapi.js +11 -8
  350. package/dist/cjs/nodes/sms/sms-smsapi.js.map +1 -1
  351. package/dist/cjs/nodes/sms/sms-textmagic.d.ts.map +1 -1
  352. package/dist/cjs/nodes/sms/sms-textmagic.js +11 -8
  353. package/dist/cjs/nodes/sms/sms-textmagic.js.map +1 -1
  354. package/dist/cjs/nodes/sms/sms-twilio.d.ts.map +1 -1
  355. package/dist/cjs/nodes/sms/sms-twilio.js +12 -10
  356. package/dist/cjs/nodes/sms/sms-twilio.js.map +1 -1
  357. package/dist/cjs/nodes/types.d.ts +8 -1
  358. package/dist/cjs/nodes/types.d.ts.map +1 -1
  359. package/dist/cjs/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
  360. package/dist/cjs/nodes/utility/utility-similarity-scoring.js +29 -10
  361. package/dist/cjs/nodes/utility/utility-similarity-scoring.js.map +1 -1
  362. package/dist/cjs/page-access-guard-generator.d.ts +23 -0
  363. package/dist/cjs/page-access-guard-generator.d.ts.map +1 -0
  364. package/dist/cjs/page-access-guard-generator.js +135 -0
  365. package/dist/cjs/page-access-guard-generator.js.map +1 -0
  366. package/dist/cjs/password-reset-route-generator.d.ts +119 -0
  367. package/dist/cjs/password-reset-route-generator.d.ts.map +1 -0
  368. package/dist/cjs/password-reset-route-generator.js +460 -0
  369. package/dist/cjs/password-reset-route-generator.js.map +1 -0
  370. package/dist/cjs/payments/payment-core-code.d.ts.map +1 -1
  371. package/dist/cjs/payments/payment-core-code.js +12 -7
  372. package/dist/cjs/payments/payment-core-code.js.map +1 -1
  373. package/dist/cjs/project-code-scanner.d.ts +11 -0
  374. package/dist/cjs/project-code-scanner.d.ts.map +1 -0
  375. package/dist/cjs/project-code-scanner.js +80 -0
  376. package/dist/cjs/project-code-scanner.js.map +1 -0
  377. package/dist/cjs/public-step-guards.d.ts +122 -0
  378. package/dist/cjs/public-step-guards.d.ts.map +1 -0
  379. package/dist/cjs/public-step-guards.js +288 -0
  380. package/dist/cjs/public-step-guards.js.map +1 -0
  381. package/dist/cjs/publish-refusals.d.ts +66 -0
  382. package/dist/cjs/publish-refusals.d.ts.map +1 -0
  383. package/dist/cjs/publish-refusals.js +278 -0
  384. package/dist/cjs/publish-refusals.js.map +1 -0
  385. package/dist/cjs/realtime-generator.d.ts +63 -1
  386. package/dist/cjs/realtime-generator.d.ts.map +1 -1
  387. package/dist/cjs/realtime-generator.js +404 -230
  388. package/dist/cjs/realtime-generator.js.map +1 -1
  389. package/dist/cjs/runtime-storage-generator.d.ts +32 -1
  390. package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
  391. package/dist/cjs/runtime-storage-generator.js +265 -12
  392. package/dist/cjs/runtime-storage-generator.js.map +1 -1
  393. package/dist/cjs/security-runtime/index.d.ts +14 -0
  394. package/dist/cjs/security-runtime/index.d.ts.map +1 -0
  395. package/dist/cjs/security-runtime/index.js +48 -0
  396. package/dist/cjs/security-runtime/index.js.map +1 -0
  397. package/dist/cjs/security-runtime/security-runtime-code.d.ts +53 -0
  398. package/dist/cjs/security-runtime/security-runtime-code.d.ts.map +1 -0
  399. package/dist/cjs/security-runtime/security-runtime-code.js +580 -0
  400. package/dist/cjs/security-runtime/security-runtime-code.js.map +1 -0
  401. package/dist/cjs/security-scanner.d.ts +72 -3
  402. package/dist/cjs/security-scanner.d.ts.map +1 -1
  403. package/dist/cjs/security-scanner.js +221 -8
  404. package/dist/cjs/security-scanner.js.map +1 -1
  405. package/dist/cjs/segment-splitter.d.ts.map +1 -1
  406. package/dist/cjs/segment-splitter.js +10 -2
  407. package/dist/cjs/segment-splitter.js.map +1 -1
  408. package/dist/cjs/segment-trust.d.ts +36 -0
  409. package/dist/cjs/segment-trust.d.ts.map +1 -1
  410. package/dist/cjs/segment-trust.js +147 -3
  411. package/dist/cjs/segment-trust.js.map +1 -1
  412. package/dist/cjs/self-call-headers.d.ts +31 -0
  413. package/dist/cjs/self-call-headers.d.ts.map +1 -0
  414. package/dist/cjs/self-call-headers.js +48 -0
  415. package/dist/cjs/self-call-headers.js.map +1 -0
  416. package/dist/cjs/sent-email-log/index.d.ts +7 -0
  417. package/dist/cjs/sent-email-log/index.d.ts.map +1 -1
  418. package/dist/cjs/sent-email-log/index.js +17 -1
  419. package/dist/cjs/sent-email-log/index.js.map +1 -1
  420. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +7 -0
  421. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  422. package/dist/cjs/sent-email-log/sent-email-log-code.js +17 -3
  423. package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
  424. package/dist/cjs/server-custom-node-call.d.ts +79 -0
  425. package/dist/cjs/server-custom-node-call.d.ts.map +1 -0
  426. package/dist/cjs/server-custom-node-call.js +285 -0
  427. package/dist/cjs/server-custom-node-call.js.map +1 -0
  428. package/dist/cjs/server-runtime-code.d.ts +39 -12
  429. package/dist/cjs/server-runtime-code.d.ts.map +1 -1
  430. package/dist/cjs/server-runtime-code.js +484 -41
  431. package/dist/cjs/server-runtime-code.js.map +1 -1
  432. package/dist/cjs/session-cookie-resolver.d.ts +3 -1
  433. package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
  434. package/dist/cjs/session-revocation-generator.d.ts +39 -0
  435. package/dist/cjs/session-revocation-generator.d.ts.map +1 -0
  436. package/dist/cjs/session-revocation-generator.js +177 -0
  437. package/dist/cjs/session-revocation-generator.js.map +1 -0
  438. package/dist/cjs/slack-message-values.d.ts +6 -0
  439. package/dist/cjs/slack-message-values.d.ts.map +1 -0
  440. package/dist/cjs/slack-message-values.js +73 -0
  441. package/dist/cjs/slack-message-values.js.map +1 -0
  442. package/dist/cjs/transactional-email-code.d.ts +11 -0
  443. package/dist/cjs/transactional-email-code.d.ts.map +1 -1
  444. package/dist/cjs/transactional-email-code.js +29 -5
  445. package/dist/cjs/transactional-email-code.js.map +1 -1
  446. package/dist/cjs/trigger-generator.d.ts +2 -0
  447. package/dist/cjs/trigger-generator.d.ts.map +1 -1
  448. package/dist/cjs/trigger-generator.js +17 -4
  449. package/dist/cjs/trigger-generator.js.map +1 -1
  450. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  451. package/dist/cjs/visitor-step-limits.d.ts +66 -0
  452. package/dist/cjs/visitor-step-limits.d.ts.map +1 -0
  453. package/dist/cjs/visitor-step-limits.js +187 -0
  454. package/dist/cjs/visitor-step-limits.js.map +1 -0
  455. package/dist/cjs/webhook-generator.d.ts.map +1 -1
  456. package/dist/cjs/webhook-generator.js +93 -15
  457. package/dist/cjs/webhook-generator.js.map +1 -1
  458. package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
  459. package/dist/cjs/webhook-signature-verification.js +13 -3
  460. package/dist/cjs/webhook-signature-verification.js.map +1 -1
  461. package/dist/cjs/workflow-auth-generator.d.ts +4 -1
  462. package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
  463. package/dist/cjs/workflow-auth-generator.js +8 -3
  464. package/dist/cjs/workflow-auth-generator.js.map +1 -1
  465. package/dist/cjs/workflow-component-plugin.js +11 -3
  466. package/dist/cjs/workflow-component-plugin.js.map +1 -1
  467. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  468. package/dist/cjs/workflow-project-plugin.js +302 -56
  469. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  470. package/dist/cjs/workflow-scope.d.ts.map +1 -1
  471. package/dist/cjs/workflow-scope.js +5 -0
  472. package/dist/cjs/workflow-scope.js.map +1 -1
  473. package/dist/esm/account-delete-route-generator.d.ts +1 -0
  474. package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
  475. package/dist/esm/account-delete-route-generator.js +18 -3
  476. package/dist/esm/account-delete-route-generator.js.map +1 -1
  477. package/dist/esm/api-route-generator.d.ts +52 -3
  478. package/dist/esm/api-route-generator.d.ts.map +1 -1
  479. package/dist/esm/api-route-generator.js +595 -142
  480. package/dist/esm/api-route-generator.js.map +1 -1
  481. package/dist/esm/auth-generator.d.ts +126 -3
  482. package/dist/esm/auth-generator.d.ts.map +1 -1
  483. package/dist/esm/auth-generator.js +1350 -140
  484. package/dist/esm/auth-generator.js.map +1 -1
  485. package/dist/esm/automations/activity-kicks.d.ts +12 -0
  486. package/dist/esm/automations/activity-kicks.d.ts.map +1 -0
  487. package/dist/esm/automations/activity-kicks.js +118 -0
  488. package/dist/esm/automations/activity-kicks.js.map +1 -0
  489. package/dist/esm/automations/app-events-source.d.ts +33 -0
  490. package/dist/esm/automations/app-events-source.d.ts.map +1 -0
  491. package/dist/esm/automations/app-events-source.js +104 -0
  492. package/dist/esm/automations/app-events-source.js.map +1 -0
  493. package/dist/esm/automations/automations-project-plugin.d.ts +21 -0
  494. package/dist/esm/automations/automations-project-plugin.d.ts.map +1 -0
  495. package/dist/esm/automations/automations-project-plugin.js +98 -0
  496. package/dist/esm/automations/automations-project-plugin.js.map +1 -0
  497. package/dist/esm/automations/automations-scope.d.ts +104 -0
  498. package/dist/esm/automations/automations-scope.d.ts.map +1 -0
  499. package/dist/esm/automations/automations-scope.js +165 -0
  500. package/dist/esm/automations/automations-scope.js.map +1 -0
  501. package/dist/esm/automations/dispatcher-source.d.ts +72 -0
  502. package/dist/esm/automations/dispatcher-source.d.ts.map +1 -0
  503. package/dist/esm/automations/dispatcher-source.js +999 -0
  504. package/dist/esm/automations/dispatcher-source.js.map +1 -0
  505. package/dist/esm/automations/event-bus-source.d.ts +44 -0
  506. package/dist/esm/automations/event-bus-source.d.ts.map +1 -0
  507. package/dist/esm/automations/event-bus-source.js +421 -0
  508. package/dist/esm/automations/event-bus-source.js.map +1 -0
  509. package/dist/esm/automations/handler-module-generator.d.ts +25 -0
  510. package/dist/esm/automations/handler-module-generator.d.ts.map +1 -0
  511. package/dist/esm/automations/handler-module-generator.js +71 -0
  512. package/dist/esm/automations/handler-module-generator.js.map +1 -0
  513. package/dist/esm/automations/hydrators-source.d.ts +33 -0
  514. package/dist/esm/automations/hydrators-source.d.ts.map +1 -0
  515. package/dist/esm/automations/hydrators-source.js +567 -0
  516. package/dist/esm/automations/hydrators-source.js.map +1 -0
  517. package/dist/esm/booking-calendar-feed-route-generator.d.ts.map +1 -1
  518. package/dist/esm/booking-calendar-feed-route-generator.js +8 -0
  519. package/dist/esm/booking-calendar-feed-route-generator.js.map +1 -1
  520. package/dist/esm/configured-nextauth-url.d.ts +17 -0
  521. package/dist/esm/configured-nextauth-url.d.ts.map +1 -0
  522. package/dist/esm/configured-nextauth-url.js +17 -0
  523. package/dist/esm/configured-nextauth-url.js.map +1 -0
  524. package/dist/esm/cron-request-verification.d.ts +22 -1
  525. package/dist/esm/cron-request-verification.d.ts.map +1 -1
  526. package/dist/esm/cron-request-verification.js +48 -5
  527. package/dist/esm/cron-request-verification.js.map +1 -1
  528. package/dist/esm/data-api-route-generator.d.ts +19 -0
  529. package/dist/esm/data-api-route-generator.d.ts.map +1 -1
  530. package/dist/esm/data-api-route-generator.js +710 -43
  531. package/dist/esm/data-api-route-generator.js.map +1 -1
  532. package/dist/esm/ecommerce/parameterized-stock-chain.d.ts +3 -1
  533. package/dist/esm/ecommerce/parameterized-stock-chain.d.ts.map +1 -1
  534. package/dist/esm/ecommerce/parameterized-stock-chain.js +43 -4
  535. package/dist/esm/ecommerce/parameterized-stock-chain.js.map +1 -1
  536. package/dist/esm/ecommerce/place-order-guards.d.ts +126 -0
  537. package/dist/esm/ecommerce/place-order-guards.d.ts.map +1 -0
  538. package/dist/esm/ecommerce/place-order-guards.js +655 -0
  539. package/dist/esm/ecommerce/place-order-guards.js.map +1 -0
  540. package/dist/esm/ecommerce-customhandler-rewriter.d.ts +2 -0
  541. package/dist/esm/ecommerce-customhandler-rewriter.d.ts.map +1 -1
  542. package/dist/esm/ecommerce-customhandler-rewriter.js +38 -2
  543. package/dist/esm/ecommerce-customhandler-rewriter.js.map +1 -1
  544. package/dist/esm/executor-generator.d.ts.map +1 -1
  545. package/dist/esm/executor-generator.js +368 -60
  546. package/dist/esm/executor-generator.js.map +1 -1
  547. package/dist/esm/graph-utils.d.ts +9 -0
  548. package/dist/esm/graph-utils.d.ts.map +1 -1
  549. package/dist/esm/graph-utils.js +30 -0
  550. package/dist/esm/graph-utils.js.map +1 -1
  551. package/dist/esm/index.d.ts +20 -1
  552. package/dist/esm/index.d.ts.map +1 -1
  553. package/dist/esm/index.js +27 -1
  554. package/dist/esm/index.js.map +1 -1
  555. package/dist/esm/invoice/api-routes-code.d.ts +9 -3
  556. package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
  557. package/dist/esm/invoice/api-routes-code.js +9 -7
  558. package/dist/esm/invoice/api-routes-code.js.map +1 -1
  559. package/dist/esm/invoice/index.d.ts.map +1 -1
  560. package/dist/esm/invoice/index.js +12 -7
  561. package/dist/esm/invoice/index.js.map +1 -1
  562. package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -1
  563. package/dist/esm/invoice/invoice-assembly-code.js +8 -3
  564. package/dist/esm/invoice/invoice-assembly-code.js.map +1 -1
  565. package/dist/esm/invoice/pdf-generator-code.d.ts.map +1 -1
  566. package/dist/esm/invoice/pdf-generator-code.js +2 -1
  567. package/dist/esm/invoice/pdf-generator-code.js.map +1 -1
  568. package/dist/esm/invoice/pdf-service-client-code.d.ts.map +1 -1
  569. package/dist/esm/invoice/pdf-service-client-code.js +15 -7
  570. package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
  571. package/dist/esm/newsletter/admin-route-code.d.ts +60 -0
  572. package/dist/esm/newsletter/admin-route-code.d.ts.map +1 -0
  573. package/dist/esm/newsletter/admin-route-code.js +295 -0
  574. package/dist/esm/newsletter/admin-route-code.js.map +1 -0
  575. package/dist/esm/newsletter/helper-code.d.ts +109 -0
  576. package/dist/esm/newsletter/helper-code.d.ts.map +1 -0
  577. package/dist/esm/newsletter/helper-code.js +656 -0
  578. package/dist/esm/newsletter/helper-code.js.map +1 -0
  579. package/dist/esm/newsletter/newsletter-scope.d.ts +65 -0
  580. package/dist/esm/newsletter/newsletter-scope.d.ts.map +1 -0
  581. package/dist/esm/newsletter/newsletter-scope.js +97 -0
  582. package/dist/esm/newsletter/newsletter-scope.js.map +1 -0
  583. package/dist/esm/newsletter/project-plugin.d.ts +18 -0
  584. package/dist/esm/newsletter/project-plugin.d.ts.map +1 -0
  585. package/dist/esm/newsletter/project-plugin.js +93 -0
  586. package/dist/esm/newsletter/project-plugin.js.map +1 -0
  587. package/dist/esm/newsletter/routes-code.d.ts +6 -0
  588. package/dist/esm/newsletter/routes-code.d.ts.map +1 -0
  589. package/dist/esm/newsletter/routes-code.js +175 -0
  590. package/dist/esm/newsletter/routes-code.js.map +1 -0
  591. package/dist/esm/nodes/account/account-compare-passwords.d.ts.map +1 -1
  592. package/dist/esm/nodes/account/account-compare-passwords.js +16 -6
  593. package/dist/esm/nodes/account/account-compare-passwords.js.map +1 -1
  594. package/dist/esm/nodes/account/account-delete-current.js +1 -1
  595. package/dist/esm/nodes/account/account-get-current.js +1 -1
  596. package/dist/esm/nodes/account/account-hash-password.d.ts.map +1 -1
  597. package/dist/esm/nodes/account/account-hash-password.js +15 -3
  598. package/dist/esm/nodes/account/account-hash-password.js.map +1 -1
  599. package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
  600. package/dist/esm/nodes/account/account-login.js +23 -6
  601. package/dist/esm/nodes/account/account-login.js.map +1 -1
  602. package/dist/esm/nodes/account/account-logout.js +1 -1
  603. package/dist/esm/nodes/account/account-refresh-session.js +1 -1
  604. package/dist/esm/nodes/account/account-request-password-reset.d.ts +3 -0
  605. package/dist/esm/nodes/account/account-request-password-reset.d.ts.map +1 -0
  606. package/dist/esm/nodes/account/account-request-password-reset.js +43 -0
  607. package/dist/esm/nodes/account/account-request-password-reset.js.map +1 -0
  608. package/dist/esm/nodes/account/account-reset-password.d.ts +3 -0
  609. package/dist/esm/nodes/account/account-reset-password.d.ts.map +1 -0
  610. package/dist/esm/nodes/account/account-reset-password.js +41 -0
  611. package/dist/esm/nodes/account/account-reset-password.js.map +1 -0
  612. package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
  613. package/dist/esm/nodes/account/account-signup.js +82 -19
  614. package/dist/esm/nodes/account/account-signup.js.map +1 -1
  615. package/dist/esm/nodes/account/account-social-login.js +1 -1
  616. package/dist/esm/nodes/ai/ai-custom-prompt.d.ts.map +1 -1
  617. package/dist/esm/nodes/ai/ai-custom-prompt.js +20 -5
  618. package/dist/esm/nodes/ai/ai-custom-prompt.js.map +1 -1
  619. package/dist/esm/nodes/ai/ai-detect-language.d.ts.map +1 -1
  620. package/dist/esm/nodes/ai/ai-detect-language.js +20 -5
  621. package/dist/esm/nodes/ai/ai-detect-language.js.map +1 -1
  622. package/dist/esm/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
  623. package/dist/esm/nodes/ai/ai-generate-text-embedding.js +10 -2
  624. package/dist/esm/nodes/ai/ai-generate-text-embedding.js.map +1 -1
  625. package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js +2 -2
  626. package/dist/esm/nodes/ai/ai-provider-utils-sources.generated.js.map +1 -1
  627. package/dist/esm/nodes/ai/ai-provider-utils.d.ts +31 -2
  628. package/dist/esm/nodes/ai/ai-provider-utils.d.ts.map +1 -1
  629. package/dist/esm/nodes/ai/ai-provider-utils.js +124 -10
  630. package/dist/esm/nodes/ai/ai-provider-utils.js.map +1 -1
  631. package/dist/esm/nodes/ai/ai-select-database-data.d.ts.map +1 -1
  632. package/dist/esm/nodes/ai/ai-select-database-data.js +6 -2
  633. package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
  634. package/dist/esm/nodes/ai/ai-sentiment-analysis.d.ts.map +1 -1
  635. package/dist/esm/nodes/ai/ai-sentiment-analysis.js +20 -5
  636. package/dist/esm/nodes/ai/ai-sentiment-analysis.js.map +1 -1
  637. package/dist/esm/nodes/ai/ai-summarization.d.ts.map +1 -1
  638. package/dist/esm/nodes/ai/ai-summarization.js +20 -5
  639. package/dist/esm/nodes/ai/ai-summarization.js.map +1 -1
  640. package/dist/esm/nodes/ai/ai-text-classifier.d.ts.map +1 -1
  641. package/dist/esm/nodes/ai/ai-text-classifier.js +20 -5
  642. package/dist/esm/nodes/ai/ai-text-classifier.js.map +1 -1
  643. package/dist/esm/nodes/ai/ai-text-transform.d.ts.map +1 -1
  644. package/dist/esm/nodes/ai/ai-text-transform.js +20 -5
  645. package/dist/esm/nodes/ai/ai-text-transform.js.map +1 -1
  646. package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts +3 -0
  647. package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts.map +1 -0
  648. package/dist/esm/nodes/analytics/analytics-track-outcome.js +107 -0
  649. package/dist/esm/nodes/analytics/analytics-track-outcome.js.map +1 -0
  650. package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -1
  651. package/dist/esm/nodes/cart/cart-price-order.js +161 -2
  652. package/dist/esm/nodes/cart/cart-price-order.js.map +1 -1
  653. package/dist/esm/nodes/cost-bearing-node-types.d.ts +4 -0
  654. package/dist/esm/nodes/cost-bearing-node-types.d.ts.map +1 -0
  655. package/dist/esm/nodes/cost-bearing-node-types.js +39 -0
  656. package/dist/esm/nodes/cost-bearing-node-types.js.map +1 -0
  657. package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
  658. package/dist/esm/nodes/data/data-select.js +12 -2
  659. package/dist/esm/nodes/data/data-select.js.map +1 -1
  660. package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
  661. package/dist/esm/nodes/email/email-mailersend.js +15 -11
  662. package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
  663. package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
  664. package/dist/esm/nodes/email/email-mailgun.js +15 -15
  665. package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
  666. package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
  667. package/dist/esm/nodes/email/email-postmark.js +15 -15
  668. package/dist/esm/nodes/email/email-postmark.js.map +1 -1
  669. package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
  670. package/dist/esm/nodes/email/email-resend.js +15 -15
  671. package/dist/esm/nodes/email/email-resend.js.map +1 -1
  672. package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
  673. package/dist/esm/nodes/email/email-sendgrid.js +15 -15
  674. package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
  675. package/dist/esm/nodes/email/html-escape-code.d.ts +3 -0
  676. package/dist/esm/nodes/email/html-escape-code.d.ts.map +1 -0
  677. package/dist/esm/nodes/email/html-escape-code.js +18 -0
  678. package/dist/esm/nodes/email/html-escape-code.js.map +1 -0
  679. package/dist/esm/nodes/email/message-trust.d.ts +40 -0
  680. package/dist/esm/nodes/email/message-trust.d.ts.map +1 -0
  681. package/dist/esm/nodes/email/message-trust.js +161 -0
  682. package/dist/esm/nodes/email/message-trust.js.map +1 -0
  683. package/dist/esm/nodes/email/outbound-message-guard.d.ts +113 -0
  684. package/dist/esm/nodes/email/outbound-message-guard.d.ts.map +1 -0
  685. package/dist/esm/nodes/email/outbound-message-guard.js +452 -0
  686. package/dist/esm/nodes/email/outbound-message-guard.js.map +1 -0
  687. package/dist/esm/nodes/email/trusted-html-code.d.ts +22 -0
  688. package/dist/esm/nodes/email/trusted-html-code.d.ts.map +1 -0
  689. package/dist/esm/nodes/email/trusted-html-code.js +49 -0
  690. package/dist/esm/nodes/email/trusted-html-code.js.map +1 -0
  691. package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
  692. package/dist/esm/nodes/general/general-custom-js.js +46 -8
  693. package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
  694. package/dist/esm/nodes/general/general-http-request.d.ts.map +1 -1
  695. package/dist/esm/nodes/general/general-http-request.js +431 -45
  696. package/dist/esm/nodes/general/general-http-request.js.map +1 -1
  697. package/dist/esm/nodes/general/general-rate-limiter.d.ts.map +1 -1
  698. package/dist/esm/nodes/general/general-rate-limiter.js +46 -78
  699. package/dist/esm/nodes/general/general-rate-limiter.js.map +1 -1
  700. package/dist/esm/nodes/general/general-wait.d.ts +3 -0
  701. package/dist/esm/nodes/general/general-wait.d.ts.map +1 -0
  702. package/dist/esm/nodes/general/general-wait.js +78 -0
  703. package/dist/esm/nodes/general/general-wait.js.map +1 -0
  704. package/dist/esm/nodes/general/visitor-request.d.ts +44 -0
  705. package/dist/esm/nodes/general/visitor-request.d.ts.map +1 -0
  706. package/dist/esm/nodes/general/visitor-request.js +65 -0
  707. package/dist/esm/nodes/general/visitor-request.js.map +1 -0
  708. package/dist/esm/nodes/index.d.ts.map +1 -1
  709. package/dist/esm/nodes/index.js +7 -1
  710. package/dist/esm/nodes/index.js.map +1 -1
  711. package/dist/esm/nodes/integrations/integration-slack.d.ts.map +1 -1
  712. package/dist/esm/nodes/integrations/integration-slack.js +17 -6
  713. package/dist/esm/nodes/integrations/integration-slack.js.map +1 -1
  714. package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts +3 -0
  715. package/dist/esm/nodes/newsletter/newsletter-confirm.d.ts.map +1 -0
  716. package/dist/esm/nodes/newsletter/newsletter-confirm.js +38 -0
  717. package/dist/esm/nodes/newsletter/newsletter-confirm.js.map +1 -0
  718. package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts +7 -0
  719. package/dist/esm/nodes/newsletter/newsletter-subscribe.d.ts.map +1 -0
  720. package/dist/esm/nodes/newsletter/newsletter-subscribe.js +66 -0
  721. package/dist/esm/nodes/newsletter/newsletter-subscribe.js.map +1 -0
  722. package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts +3 -0
  723. package/dist/esm/nodes/newsletter/newsletter-unsubscribe.d.ts.map +1 -0
  724. package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js +39 -0
  725. package/dist/esm/nodes/newsletter/newsletter-unsubscribe.js.map +1 -0
  726. package/dist/esm/nodes/realtime/realtime-join-channel.d.ts.map +1 -1
  727. package/dist/esm/nodes/realtime/realtime-join-channel.js +5 -4
  728. package/dist/esm/nodes/realtime/realtime-join-channel.js.map +1 -1
  729. package/dist/esm/nodes/realtime/realtime-send-channel-event.d.ts.map +1 -1
  730. package/dist/esm/nodes/realtime/realtime-send-channel-event.js +11 -2
  731. package/dist/esm/nodes/realtime/realtime-send-channel-event.js.map +1 -1
  732. package/dist/esm/nodes/realtime/realtime-send-channel-message.d.ts.map +1 -1
  733. package/dist/esm/nodes/realtime/realtime-send-channel-message.js +11 -2
  734. package/dist/esm/nodes/realtime/realtime-send-channel-message.js.map +1 -1
  735. package/dist/esm/nodes/sms/sms-infobip.d.ts.map +1 -1
  736. package/dist/esm/nodes/sms/sms-infobip.js +11 -8
  737. package/dist/esm/nodes/sms/sms-infobip.js.map +1 -1
  738. package/dist/esm/nodes/sms/sms-smsapi.d.ts.map +1 -1
  739. package/dist/esm/nodes/sms/sms-smsapi.js +11 -8
  740. package/dist/esm/nodes/sms/sms-smsapi.js.map +1 -1
  741. package/dist/esm/nodes/sms/sms-textmagic.d.ts.map +1 -1
  742. package/dist/esm/nodes/sms/sms-textmagic.js +11 -8
  743. package/dist/esm/nodes/sms/sms-textmagic.js.map +1 -1
  744. package/dist/esm/nodes/sms/sms-twilio.d.ts.map +1 -1
  745. package/dist/esm/nodes/sms/sms-twilio.js +12 -10
  746. package/dist/esm/nodes/sms/sms-twilio.js.map +1 -1
  747. package/dist/esm/nodes/types.d.ts +8 -1
  748. package/dist/esm/nodes/types.d.ts.map +1 -1
  749. package/dist/esm/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
  750. package/dist/esm/nodes/utility/utility-similarity-scoring.js +29 -10
  751. package/dist/esm/nodes/utility/utility-similarity-scoring.js.map +1 -1
  752. package/dist/esm/page-access-guard-generator.d.ts +23 -0
  753. package/dist/esm/page-access-guard-generator.d.ts.map +1 -0
  754. package/dist/esm/page-access-guard-generator.js +131 -0
  755. package/dist/esm/page-access-guard-generator.js.map +1 -0
  756. package/dist/esm/password-reset-route-generator.d.ts +119 -0
  757. package/dist/esm/password-reset-route-generator.d.ts.map +1 -0
  758. package/dist/esm/password-reset-route-generator.js +448 -0
  759. package/dist/esm/password-reset-route-generator.js.map +1 -0
  760. package/dist/esm/payments/payment-core-code.d.ts.map +1 -1
  761. package/dist/esm/payments/payment-core-code.js +12 -7
  762. package/dist/esm/payments/payment-core-code.js.map +1 -1
  763. package/dist/esm/project-code-scanner.d.ts +11 -0
  764. package/dist/esm/project-code-scanner.d.ts.map +1 -0
  765. package/dist/esm/project-code-scanner.js +75 -0
  766. package/dist/esm/project-code-scanner.js.map +1 -0
  767. package/dist/esm/public-step-guards.d.ts +122 -0
  768. package/dist/esm/public-step-guards.d.ts.map +1 -0
  769. package/dist/esm/public-step-guards.js +280 -0
  770. package/dist/esm/public-step-guards.js.map +1 -0
  771. package/dist/esm/publish-refusals.d.ts +66 -0
  772. package/dist/esm/publish-refusals.d.ts.map +1 -0
  773. package/dist/esm/publish-refusals.js +271 -0
  774. package/dist/esm/publish-refusals.js.map +1 -0
  775. package/dist/esm/realtime-generator.d.ts +63 -1
  776. package/dist/esm/realtime-generator.d.ts.map +1 -1
  777. package/dist/esm/realtime-generator.js +401 -229
  778. package/dist/esm/realtime-generator.js.map +1 -1
  779. package/dist/esm/runtime-storage-generator.d.ts +32 -1
  780. package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
  781. package/dist/esm/runtime-storage-generator.js +264 -11
  782. package/dist/esm/runtime-storage-generator.js.map +1 -1
  783. package/dist/esm/security-runtime/index.d.ts +14 -0
  784. package/dist/esm/security-runtime/index.d.ts.map +1 -0
  785. package/dist/esm/security-runtime/index.js +37 -0
  786. package/dist/esm/security-runtime/index.js.map +1 -0
  787. package/dist/esm/security-runtime/security-runtime-code.d.ts +53 -0
  788. package/dist/esm/security-runtime/security-runtime-code.d.ts.map +1 -0
  789. package/dist/esm/security-runtime/security-runtime-code.js +575 -0
  790. package/dist/esm/security-runtime/security-runtime-code.js.map +1 -0
  791. package/dist/esm/security-scanner.d.ts +72 -3
  792. package/dist/esm/security-scanner.d.ts.map +1 -1
  793. package/dist/esm/security-scanner.js +218 -8
  794. package/dist/esm/security-scanner.js.map +1 -1
  795. package/dist/esm/segment-splitter.d.ts.map +1 -1
  796. package/dist/esm/segment-splitter.js +10 -2
  797. package/dist/esm/segment-splitter.js.map +1 -1
  798. package/dist/esm/segment-trust.d.ts +36 -0
  799. package/dist/esm/segment-trust.d.ts.map +1 -1
  800. package/dist/esm/segment-trust.js +146 -2
  801. package/dist/esm/segment-trust.js.map +1 -1
  802. package/dist/esm/self-call-headers.d.ts +31 -0
  803. package/dist/esm/self-call-headers.d.ts.map +1 -0
  804. package/dist/esm/self-call-headers.js +43 -0
  805. package/dist/esm/self-call-headers.js.map +1 -0
  806. package/dist/esm/sent-email-log/index.d.ts +7 -0
  807. package/dist/esm/sent-email-log/index.d.ts.map +1 -1
  808. package/dist/esm/sent-email-log/index.js +15 -0
  809. package/dist/esm/sent-email-log/index.js.map +1 -1
  810. package/dist/esm/sent-email-log/sent-email-log-code.d.ts +7 -0
  811. package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  812. package/dist/esm/sent-email-log/sent-email-log-code.js +17 -3
  813. package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
  814. package/dist/esm/server-custom-node-call.d.ts +79 -0
  815. package/dist/esm/server-custom-node-call.d.ts.map +1 -0
  816. package/dist/esm/server-custom-node-call.js +278 -0
  817. package/dist/esm/server-custom-node-call.js.map +1 -0
  818. package/dist/esm/server-runtime-code.d.ts +39 -12
  819. package/dist/esm/server-runtime-code.d.ts.map +1 -1
  820. package/dist/esm/server-runtime-code.js +483 -40
  821. package/dist/esm/server-runtime-code.js.map +1 -1
  822. package/dist/esm/session-cookie-resolver.d.ts +3 -1
  823. package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
  824. package/dist/esm/session-revocation-generator.d.ts +39 -0
  825. package/dist/esm/session-revocation-generator.d.ts.map +1 -0
  826. package/dist/esm/session-revocation-generator.js +172 -0
  827. package/dist/esm/session-revocation-generator.js.map +1 -0
  828. package/dist/esm/slack-message-values.d.ts +6 -0
  829. package/dist/esm/slack-message-values.d.ts.map +1 -0
  830. package/dist/esm/slack-message-values.js +68 -0
  831. package/dist/esm/slack-message-values.js.map +1 -0
  832. package/dist/esm/transactional-email-code.d.ts +11 -0
  833. package/dist/esm/transactional-email-code.d.ts.map +1 -1
  834. package/dist/esm/transactional-email-code.js +28 -4
  835. package/dist/esm/transactional-email-code.js.map +1 -1
  836. package/dist/esm/trigger-generator.d.ts +2 -0
  837. package/dist/esm/trigger-generator.d.ts.map +1 -1
  838. package/dist/esm/trigger-generator.js +15 -3
  839. package/dist/esm/trigger-generator.js.map +1 -1
  840. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  841. package/dist/esm/visitor-step-limits.d.ts +66 -0
  842. package/dist/esm/visitor-step-limits.d.ts.map +1 -0
  843. package/dist/esm/visitor-step-limits.js +181 -0
  844. package/dist/esm/visitor-step-limits.js.map +1 -0
  845. package/dist/esm/webhook-generator.d.ts.map +1 -1
  846. package/dist/esm/webhook-generator.js +93 -15
  847. package/dist/esm/webhook-generator.js.map +1 -1
  848. package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
  849. package/dist/esm/webhook-signature-verification.js +13 -3
  850. package/dist/esm/webhook-signature-verification.js.map +1 -1
  851. package/dist/esm/workflow-auth-generator.d.ts +4 -1
  852. package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
  853. package/dist/esm/workflow-auth-generator.js +8 -3
  854. package/dist/esm/workflow-auth-generator.js.map +1 -1
  855. package/dist/esm/workflow-component-plugin.js +12 -4
  856. package/dist/esm/workflow-component-plugin.js.map +1 -1
  857. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  858. package/dist/esm/workflow-project-plugin.js +306 -60
  859. package/dist/esm/workflow-project-plugin.js.map +1 -1
  860. package/dist/esm/workflow-scope.d.ts.map +1 -1
  861. package/dist/esm/workflow-scope.js +5 -0
  862. package/dist/esm/workflow-scope.js.map +1 -1
  863. package/package.json +4 -4
  864. package/src/account-delete-route-generator.ts +28 -4
  865. package/src/api-route-generator.ts +712 -134
  866. package/src/auth-generator.ts +1471 -142
  867. package/src/automations/activity-kicks.ts +139 -0
  868. package/src/automations/app-events-source.ts +117 -0
  869. package/src/automations/automations-project-plugin.ts +202 -0
  870. package/src/automations/automations-scope.ts +196 -0
  871. package/src/automations/dispatcher-source.ts +1072 -0
  872. package/src/automations/event-bus-source.ts +428 -0
  873. package/src/automations/handler-module-generator.ts +107 -0
  874. package/src/automations/hydrators-source.ts +647 -0
  875. package/src/booking-calendar-feed-route-generator.ts +8 -0
  876. package/src/configured-nextauth-url.ts +17 -0
  877. package/src/cron-request-verification.ts +55 -5
  878. package/src/data-api-route-generator.ts +780 -43
  879. package/src/ecommerce/parameterized-stock-chain.ts +52 -5
  880. package/src/ecommerce/place-order-guards.ts +785 -0
  881. package/src/ecommerce-customhandler-rewriter.ts +55 -2
  882. package/src/executor-generator.ts +372 -60
  883. package/src/graph-utils.ts +33 -0
  884. package/src/index.ts +70 -0
  885. package/src/invoice/api-routes-code.ts +20 -7
  886. package/src/invoice/index.ts +11 -6
  887. package/src/invoice/invoice-assembly-code.ts +8 -3
  888. package/src/invoice/pdf-generator-code.ts +2 -1
  889. package/src/invoice/pdf-service-client-code.ts +15 -7
  890. package/src/newsletter/admin-route-code.ts +319 -0
  891. package/src/newsletter/helper-code.ts +748 -0
  892. package/src/newsletter/newsletter-scope.ts +116 -0
  893. package/src/newsletter/project-plugin.ts +119 -0
  894. package/src/newsletter/routes-code.ts +186 -0
  895. package/src/nodes/account/account-compare-passwords.ts +17 -6
  896. package/src/nodes/account/account-delete-current.ts +1 -1
  897. package/src/nodes/account/account-get-current.ts +1 -1
  898. package/src/nodes/account/account-hash-password.ts +19 -3
  899. package/src/nodes/account/account-login.ts +24 -7
  900. package/src/nodes/account/account-logout.ts +1 -1
  901. package/src/nodes/account/account-refresh-session.ts +1 -1
  902. package/src/nodes/account/account-request-password-reset.ts +47 -0
  903. package/src/nodes/account/account-reset-password.ts +45 -0
  904. package/src/nodes/account/account-signup.ts +86 -20
  905. package/src/nodes/account/account-social-login.ts +1 -1
  906. package/src/nodes/ai/ai-custom-prompt.ts +25 -6
  907. package/src/nodes/ai/ai-detect-language.ts +25 -6
  908. package/src/nodes/ai/ai-generate-text-embedding.ts +16 -3
  909. package/src/nodes/ai/ai-provider-utils-sources.generated.ts +2 -2
  910. package/src/nodes/ai/ai-provider-utils.ts +135 -10
  911. package/src/nodes/ai/ai-select-database-data.ts +8 -3
  912. package/src/nodes/ai/ai-sentiment-analysis.ts +25 -6
  913. package/src/nodes/ai/ai-summarization.ts +25 -6
  914. package/src/nodes/ai/ai-text-classifier.ts +25 -6
  915. package/src/nodes/ai/ai-text-transform.ts +25 -6
  916. package/src/nodes/analytics/analytics-track-outcome.ts +111 -0
  917. package/src/nodes/cart/cart-price-order.ts +200 -2
  918. package/src/nodes/cost-bearing-node-types.ts +45 -0
  919. package/src/nodes/data/data-select.ts +11 -2
  920. package/src/nodes/email/email-mailersend.ts +16 -8
  921. package/src/nodes/email/email-mailgun.ts +17 -12
  922. package/src/nodes/email/email-postmark.ts +17 -12
  923. package/src/nodes/email/email-resend.ts +17 -12
  924. package/src/nodes/email/email-sendgrid.ts +17 -12
  925. package/src/nodes/email/html-escape-code.ts +21 -0
  926. package/src/nodes/email/message-trust.ts +198 -0
  927. package/src/nodes/email/outbound-message-guard.ts +572 -0
  928. package/src/nodes/email/trusted-html-code.ts +49 -0
  929. package/src/nodes/general/general-custom-js.ts +48 -8
  930. package/src/nodes/general/general-http-request.ts +449 -46
  931. package/src/nodes/general/general-rate-limiter.ts +54 -81
  932. package/src/nodes/general/general-wait.ts +80 -0
  933. package/src/nodes/general/visitor-request.ts +79 -0
  934. package/src/nodes/index.ts +12 -0
  935. package/src/nodes/integrations/integration-slack.ts +21 -6
  936. package/src/nodes/newsletter/newsletter-confirm.ts +44 -0
  937. package/src/nodes/newsletter/newsletter-subscribe.ts +78 -0
  938. package/src/nodes/newsletter/newsletter-unsubscribe.ts +43 -0
  939. package/src/nodes/realtime/realtime-join-channel.ts +5 -4
  940. package/src/nodes/realtime/realtime-send-channel-event.ts +13 -2
  941. package/src/nodes/realtime/realtime-send-channel-message.ts +13 -2
  942. package/src/nodes/sms/sms-infobip.ts +14 -4
  943. package/src/nodes/sms/sms-smsapi.ts +14 -4
  944. package/src/nodes/sms/sms-textmagic.ts +14 -4
  945. package/src/nodes/sms/sms-twilio.ts +14 -4
  946. package/src/nodes/types.ts +9 -1
  947. package/src/nodes/utility/utility-similarity-scoring.ts +33 -12
  948. package/src/page-access-guard-generator.ts +154 -0
  949. package/src/password-reset-route-generator.ts +531 -0
  950. package/src/payments/payment-core-code.ts +12 -7
  951. package/src/project-code-scanner.ts +98 -0
  952. package/src/public-step-guards.ts +448 -0
  953. package/src/publish-refusals.ts +459 -0
  954. package/src/realtime-generator.ts +457 -234
  955. package/src/runtime-storage-generator.ts +270 -11
  956. package/src/security-runtime/index.ts +53 -0
  957. package/src/security-runtime/security-runtime-code.ts +579 -0
  958. package/src/security-scanner.ts +254 -10
  959. package/src/segment-splitter.ts +10 -2
  960. package/src/segment-trust.ts +205 -2
  961. package/src/self-call-headers.ts +46 -0
  962. package/src/sent-email-log/index.ts +16 -0
  963. package/src/sent-email-log/sent-email-log-code.ts +30 -4
  964. package/src/server-custom-node-call.ts +331 -0
  965. package/src/server-runtime-code.ts +488 -40
  966. package/src/session-revocation-generator.ts +177 -0
  967. package/src/slack-message-values.ts +84 -0
  968. package/src/transactional-email-code.ts +30 -4
  969. package/src/trigger-generator.ts +19 -3
  970. package/src/visitor-step-limits.ts +228 -0
  971. package/src/webhook-generator.ts +94 -14
  972. package/src/webhook-signature-verification.ts +13 -3
  973. package/src/workflow-auth-generator.ts +9 -4
  974. package/src/workflow-component-plugin.ts +14 -4
  975. package/src/workflow-project-plugin.ts +374 -61
  976. package/src/workflow-scope.ts +6 -0
@@ -0,0 +1,670 @@
1
+ "use strict";
2
+ // Export-time guards for the place-order workflow's money statements.
3
+ //
4
+ // The editor bakes the checkout's SQL into `data-raw-query` nodes
5
+ // (apps/gui/.../builders/ecommerce/order-redemption-helper.ts). Two of those
6
+ // statements decide what a buyer gets for what they paid, and both are
7
+ // re-baked here from the store's CURRENT settings on every export, the way
8
+ // the stock chain is (see ./parameterized-stock-chain.ts):
9
+ //
10
+ // 1. THE SETTLE WRITE ("Mark Order As Settled") confirms an order that no
11
+ // payment provider collects: cash on delivery, a total discounted to zero,
12
+ // or an order a gift card paid in full. Which branch runs is decided in the
13
+ // browser, and every server segment is a route of its own, so a crafted
14
+ // request can call this one for any order it just placed. On a store that
15
+ // does not take cash on delivery, the statement now confirms only an order
16
+ // with nothing left to collect, decided from the order row and the card's
17
+ // ledger. Any other order stays `pending`, which is what an unpaid order is.
18
+ // On a store that takes cash on delivery but prices delivery by shipping
19
+ // zone, cash on delivery is each zone's choice (`teleport_shipping_zones.
20
+ // cod_enabled`, edited live in the admin): an order DELIVERED to a zone
21
+ // that does not take it is confirmed only with nothing left to collect.
22
+ // The zone is the one the order records (`shipping_zone_name`, written
23
+ // from the server's own quote for its address), read against the zone
24
+ // rows at the moment of settling.
25
+ //
26
+ // 2. THE REDEMPTION STATEMENT ("Redeem Voucher And Gift Card") runs right
27
+ // after the order row is written. It locks what it spends, decides `ok`
28
+ // before writing anything, and a `false` verdict cancels the order on the
29
+ // server (the gate after it runs on the server too). With stock managed and
30
+ // backorders off, it now also reserves the order's stock in that same
31
+ // statement: the product and variant rows are locked (`FOR UPDATE`), any
32
+ // line the stock cannot cover makes `ok` false, and the decrement is
33
+ // conditional on `ok`. Of two orders racing for the last unit, the second
34
+ // waits for the first, sees what it left and is refused. Nothing is written
35
+ // for a refused order. The units are the ones the server priced
36
+ // (`cart-price-order`'s `stockDeltas`), never anything the browser sends.
37
+ // The later "Decrement Product Stock After Order" step is then re-baked to
38
+ // take nothing (see `buildParameterizedStockDecrementQuery`).
39
+ //
40
+ // Each statement is recognised by its shape. A statement that has drifted from
41
+ // it is left alone. If the stock cannot be reserved safely (no server pricing
42
+ // step, a decrement this module cannot neutralise), the checkout keeps the
43
+ // decrement it had, and a warning says so.
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.guardPlaceOrderStatementsInNodes = exports.buildStalledReservationReleaseQueries = exports.buildStalledReservationReleaseQuery = exports.buildStalledReservationCandidatesQuery = exports.STALLED_RESERVATION_RELEASE = exports.lockSettleUnpaidRestoresInIdOrder = exports.restoreReservationsInSettleUnpaidStatement = exports.looksLikeSettleUnpaidOrderStatement = exports.hasReservationRecordSql = exports.STOCK_RESERVATION_RESTORE_LINES_BY_ORDER = exports.STOCK_RESERVATION_RESTORE_LINES = exports.reserveStockInRedemptionStatement = exports.looksLikeOrderRedemptionStatement = exports.VOUCHER_ITEM_PRODUCT_IDS_KEY = exports.STOCK_RESERVATION_KEY = exports.guardSettleOrderStatement = exports.SETTLE_ZONE_COD_GUARD = exports.looksLikeSettleOrderStatement = exports.SETTLE_NOTHING_DUE_GUARD = void 0;
46
+ const parameterized_stock_chain_1 = require("./parameterized-stock-chain");
47
+ const stock_decrement_1 = require("./stock-decrement");
48
+ // ────────────────────────────────────────────────────────────────────
49
+ // The settle write
50
+ // ────────────────────────────────────────────────────────────────────
51
+ const SETTLE_RETURNING = 'RETURNING o.id, o.payment_status, o.payment_method';
52
+ /** Confirms only an order with nothing left to collect: the row's total, less what its own redemption debited. */
53
+ exports.SETTLE_NOTHING_DUE_GUARD = ' AND o.total_amount IS NOT NULL AND o.total_amount - (SELECT debited FROM tender) <= 0';
54
+ const looksLikeSettleOrderStatement = (query) => typeof query === 'string' &&
55
+ /^\s*WITH\s+tender\s+AS\s*\(/i.test(query) &&
56
+ /\bUPDATE\s+teleport_orders\s+o\s+SET\s+status\s*=\s*'confirmed'/i.test(query) &&
57
+ query.indexOf("ELSE 'cash_on_delivery' END") !== -1 &&
58
+ /\bAND\s+o\.status\s*=\s*'pending'/i.test(query) &&
59
+ query.trim().endsWith(SETTLE_RETURNING);
60
+ exports.looksLikeSettleOrderStatement = looksLikeSettleOrderStatement;
61
+ /**
62
+ * Confirms an order with money still due only when it is not delivered to an
63
+ * active shipping zone that refuses cash on delivery. Every column is read
64
+ * through `to_jsonb`, the way the zone rule reads them (`cod_enabled` and
65
+ * `is_active` default to true).
66
+ */
67
+ exports.SETTLE_ZONE_COD_GUARD = [
68
+ ' AND (o.total_amount IS NOT NULL AND o.total_amount - (SELECT debited FROM tender) <= 0',
69
+ " OR NOT (COALESCE(to_jsonb(o) ->> 'fulfillment_method', '') = 'delivery'",
70
+ ' AND EXISTS (SELECT 1 FROM teleport_shipping_zones z',
71
+ " WHERE z.name = (to_jsonb(o) ->> 'shipping_zone_name')",
72
+ " AND LOWER(COALESCE(to_jsonb(z) ->> 'is_active', 'true')) NOT IN ('false', 'f', '0', 'no')",
73
+ " AND LOWER(COALESCE(to_jsonb(z) ->> 'cod_enabled', 'true')) IN ('false', 'f', '0', 'no'))))",
74
+ ].join('\n');
75
+ /** The settle write for the store's cash-on-delivery rules; unchanged when they allow every order. */
76
+ const guardSettleOrderStatement = (query, settings) => {
77
+ const guard = !settings.cashOnDelivery
78
+ ? exports.SETTLE_NOTHING_DUE_GUARD
79
+ : settings.codByShippingZone
80
+ ? exports.SETTLE_ZONE_COD_GUARD
81
+ : '';
82
+ if (!guard ||
83
+ !(0, exports.looksLikeSettleOrderStatement)(query) ||
84
+ query.indexOf(exports.SETTLE_NOTHING_DUE_GUARD) !== -1 ||
85
+ query.indexOf(exports.SETTLE_ZONE_COD_GUARD) !== -1) {
86
+ return query;
87
+ }
88
+ const at = query.lastIndexOf(SETTLE_RETURNING);
89
+ return query.slice(0, at).replace(/\s*$/, '') + '\n' + guard + '\n' + query.slice(at);
90
+ };
91
+ exports.guardSettleOrderStatement = guardSettleOrderStatement;
92
+ // ────────────────────────────────────────────────────────────────────
93
+ // The redemption statement
94
+ // ────────────────────────────────────────────────────────────────────
95
+ const REDEMPTION_OK_LINE = 'ok AS (SELECT voucher_ok AND gift_card_ok AS ok FROM verdict),';
96
+ const RESERVED_OK_LINE = 'ok AS (SELECT voucher_ok AND gift_card_ok AND stock_ok AS ok FROM verdict),';
97
+ const VERDICT_START = '\nverdict AS (';
98
+ const VERDICT_END = ')) AS gift_card_ok\n),';
99
+ const LAST_COLUMN = '(SELECT COUNT(*) FROM ledger) AS gift_card_debited';
100
+ /** The redemption statement takes 9 parameters; the reservation appends $10..$13. */
101
+ const REDEMPTION_PARAM_COUNT = 9;
102
+ // $10/$11 product ids and units (variantless lines), $12/$13 variant ids and
103
+ // units. Locked first, so a concurrent order is waited out and its result read,
104
+ // and in id order (as the release and the late-payment retake lock them), so
105
+ // two statements needing the same rows never wait on each other in a cycle.
106
+ const STOCK_LOCKS = [
107
+ 'stock_lines AS (',
108
+ " SELECT 'product'::text AS kind, d.id, d.qty FROM unnest($10::text[], $11::int[]) AS d(id, qty)",
109
+ ' UNION ALL',
110
+ " SELECT 'variant'::text AS kind, d.id, d.qty FROM unnest($12::text[], $13::int[]) AS d(id, qty)",
111
+ '),',
112
+ 'locked_products AS (',
113
+ ' SELECT p.id::text AS id, p.quantity',
114
+ ' FROM teleport_products p',
115
+ ' WHERE p.quantity IS NOT NULL AND p.id::text = ANY($10::text[])',
116
+ ' ORDER BY p.id',
117
+ ' FOR UPDATE',
118
+ '),',
119
+ 'locked_variants AS (',
120
+ ' SELECT v.id::text AS id, v.quantity',
121
+ ' FROM teleport_product_variants v',
122
+ ' WHERE v.quantity IS NOT NULL AND v.id::text = ANY($12::text[])',
123
+ ' ORDER BY v.id',
124
+ ' FOR UPDATE',
125
+ '),',
126
+ 'stock_short AS (',
127
+ " SELECT lp.id FROM locked_products lp JOIN stock_lines s ON s.kind = 'product' AND s.id = lp.id WHERE lp.quantity < s.qty",
128
+ ' UNION ALL',
129
+ " SELECT lv.id FROM locked_variants lv JOIN stock_lines s ON s.kind = 'variant' AND s.id = lv.id WHERE lv.quantity < s.qty",
130
+ '),',
131
+ ].join('\n');
132
+ // Missing or mismatched arrays refuse the order: a NULL unit count would turn
133
+ // a tracked quantity into NULL ("unlimited").
134
+ const STOCK_OK_COLUMN = [
135
+ ' ($10::text[] IS NOT NULL AND $11::int[] IS NOT NULL AND $12::text[] IS NOT NULL AND $13::int[] IS NOT NULL',
136
+ ' AND cardinality($10::text[]) = cardinality($11::int[])',
137
+ ' AND cardinality($12::text[]) = cardinality($13::int[])',
138
+ ' AND NOT EXISTS (SELECT 1 FROM stock_lines WHERE qty IS NULL OR qty < 1)',
139
+ ' AND NOT EXISTS (SELECT 1 FROM stock_short)) AS stock_ok',
140
+ ].join('\n');
141
+ // Written only when everything the order spends could be spent.
142
+ const STOCK_RESERVATIONS = [
143
+ 'reserved_products AS (',
144
+ ' UPDATE teleport_products AS p SET quantity = p.quantity - d.qty, updated_at = NOW()',
145
+ ' FROM unnest($10::text[], $11::int[]) AS d(id, qty)',
146
+ ' WHERE (SELECT ok FROM ok) AND p.quantity IS NOT NULL AND p.id::text = d.id AND p.quantity >= d.qty',
147
+ ' RETURNING p.id',
148
+ '),',
149
+ 'reserved_variants AS (',
150
+ ' UPDATE teleport_product_variants AS v SET quantity = v.quantity - d.qty, updated_at = NOW()',
151
+ ' FROM unnest($12::text[], $13::int[]) AS d(id, qty)',
152
+ ' WHERE (SELECT ok FROM ok) AND v.quantity IS NOT NULL AND v.id::text = d.id AND v.quantity >= d.qty',
153
+ ' RETURNING v.id',
154
+ '),',
155
+ ].join('\n');
156
+ // What this statement actually took (tracked rows only), for the record below.
157
+ const STOCK_RESERVED_LINES = [
158
+ 'stock_reserved_lines AS (',
159
+ " SELECT s.kind, s.id, s.qty FROM stock_lines s JOIN reserved_products rp ON s.kind = 'product' AND rp.id::text = s.id",
160
+ ' UNION ALL',
161
+ " SELECT s.kind, s.id, s.qty FROM stock_lines s JOIN reserved_variants rv ON s.kind = 'variant' AND rv.id::text = s.id",
162
+ '),',
163
+ ].join('\n');
164
+ // The editor's gift-card write onto the order row, word for word. A statement
165
+ // may update a row once, so the reservation record joins it in one UPDATE.
166
+ const ORDER_UPDATE_CTE = [
167
+ 'order_update AS (',
168
+ ' UPDATE teleport_orders o',
169
+ ' SET gift_card_amount = $9::numeric, gift_card_id = debit.id, gift_card_last4 = debit.last4, updated_at = NOW()',
170
+ ' FROM debit',
171
+ ' WHERE o.id = ($2::text)::uuid',
172
+ ' RETURNING o.id',
173
+ ')',
174
+ ].join('\n');
175
+ /**
176
+ * The order row's one update: the gift-card tender as before, and the units
177
+ * this statement reserved, recorded in the order's `metadata` (TEXT JSON) as
178
+ * `stockReservation: [{ kind, id, qty }]`. An order stopped before its items
179
+ * are written still says what it holds, and the cancel / expiry paths restore
180
+ * from it when the order has no items (`STOCK_RESERVATION_RESTORE_LINES`).
181
+ * Beside it, the products the voucher was redeemed against
182
+ * (`voucherItemProductIds`, the redemption's `item_product_ids`): a cancel
183
+ * deletes the redemption row, and a late payment that confirms the order
184
+ * writes it again with them.
185
+ */
186
+ exports.STOCK_RESERVATION_KEY = 'stockReservation';
187
+ exports.VOUCHER_ITEM_PRODUCT_IDS_KEY = 'voucherItemProductIds';
188
+ const RESERVING_ORDER_UPDATE_CTE = [
189
+ 'order_update AS (',
190
+ ' UPDATE teleport_orders o',
191
+ ' SET gift_card_amount = CASE WHEN d.id IS NULL THEN o.gift_card_amount ELSE $9::numeric END,',
192
+ ' gift_card_id = CASE WHEN d.id IS NULL THEN o.gift_card_id ELSE d.id END,',
193
+ ' gift_card_last4 = CASE WHEN d.id IS NULL THEN o.gift_card_last4 ELSE d.last4 END,',
194
+ ' metadata = CASE WHEN EXISTS (SELECT 1 FROM stock_reserved_lines)',
195
+ " THEN ((CASE WHEN o.metadata ~ '^\\s*\\{' THEN o.metadata::jsonb ELSE '{}'::jsonb END)",
196
+ ` || jsonb_build_object('${exports.STOCK_RESERVATION_KEY}', (SELECT jsonb_agg(jsonb_build_object('kind', r.kind, 'id', r.id, 'qty', r.qty)) FROM stock_reserved_lines r),`,
197
+ ` '${exports.VOUCHER_ITEM_PRODUCT_IDS_KEY}', NULLIF($7::text, '')))::text`,
198
+ ' ELSE o.metadata END,',
199
+ ' updated_at = NOW()',
200
+ ' FROM (SELECT 1 AS one) AS base LEFT JOIN debit d ON true',
201
+ ' WHERE o.id = ($2::text)::uuid AND (d.id IS NOT NULL OR EXISTS (SELECT 1 FROM stock_reserved_lines))',
202
+ ' RETURNING o.id',
203
+ ')',
204
+ ].join('\n');
205
+ const STOCK_RESERVED_COLUMN = '(SELECT COUNT(*) FROM reserved_products) + (SELECT COUNT(*) FROM reserved_variants) AS stock_reserved';
206
+ // Whether the stock could be had, apart from the voucher and the card: a
207
+ // refusal that is the stock's says so (the verdict can tell the buyer).
208
+ const STOCK_OK_RESULT_COLUMN = '(SELECT stock_ok FROM verdict) AS stock_ok';
209
+ const occursOnce = (text, part) => {
210
+ const at = text.indexOf(part);
211
+ return at !== -1 && text.indexOf(part, at + 1) === -1;
212
+ };
213
+ const looksLikeOrderRedemptionStatement = (query) => typeof query === 'string' &&
214
+ /^\s*WITH\s+locked_voucher\s+AS\s*\(/.test(query) &&
215
+ query.indexOf('\nlocked_card AS (') !== -1 &&
216
+ occursOnce(query, VERDICT_START) &&
217
+ (occursOnce(query, REDEMPTION_OK_LINE) || occursOnce(query, RESERVED_OK_LINE)) &&
218
+ occursOnce(query, LAST_COLUMN);
219
+ exports.looksLikeOrderRedemptionStatement = looksLikeOrderRedemptionStatement;
220
+ /** The redemption statement that also reserves the order's stock; unchanged when it drifted or already does. */
221
+ const reserveStockInRedemptionStatement = (query) => {
222
+ if (!(0, exports.looksLikeOrderRedemptionStatement)(query) || query.indexOf(RESERVED_OK_LINE) !== -1) {
223
+ return query;
224
+ }
225
+ if (!occursOnce(query, VERDICT_END) ||
226
+ !occursOnce(query, ORDER_UPDATE_CTE) ||
227
+ !query.trim().endsWith(LAST_COLUMN)) {
228
+ return query;
229
+ }
230
+ return query
231
+ .replace(VERDICT_START, '\n' + STOCK_LOCKS + VERDICT_START)
232
+ .replace(VERDICT_END, ')) AS gift_card_ok,\n' + STOCK_OK_COLUMN + '\n),')
233
+ .replace(REDEMPTION_OK_LINE, RESERVED_OK_LINE + '\n' + STOCK_RESERVATIONS + '\n' + STOCK_RESERVED_LINES)
234
+ .replace(ORDER_UPDATE_CTE, () => RESERVING_ORDER_UPDATE_CTE)
235
+ .replace(LAST_COLUMN, () => LAST_COLUMN + ',\n ' + STOCK_RESERVED_COLUMN + ',\n ' + STOCK_OK_RESULT_COLUMN);
236
+ };
237
+ exports.reserveStockInRedemptionStatement = reserveStockInRedemptionStatement;
238
+ // ────────────────────────────────────────────────────────────────────
239
+ // Restoring a reservation an order holds without items
240
+ // ────────────────────────────────────────────────────────────────────
241
+ // The units a cancelled unpaid order puts back, as the editor's "Settle
242
+ // Unpaid Order" statement reads them: its order items. Word for word.
243
+ const SETTLE_UNPAID_LINES_CTE = [
244
+ 'lines AS (',
245
+ " SELECT oi.product_id::text AS product_id, NULLIF(COALESCE(oi.variant_id::text, ''), '') AS variant_id, oi.quantity",
246
+ ' FROM teleport_order_items oi JOIN released r ON oi.order_id = r.id',
247
+ ' WHERE oi.quantity > 0',
248
+ '),',
249
+ ].join('\n');
250
+ /**
251
+ * The same lines, plus, for a released order with NO items, the units its
252
+ * reservation record says it holds: an order stopped between the reservation
253
+ * and its items gives its stock back when it is cancelled. A malformed record
254
+ * reads as none. `parseOnly` names the orders whose metadata may be parsed at
255
+ * all (the statement's own), so the planner can never cast another row's.
256
+ */
257
+ const reservationRestoreLines = (withOrderId, parseOnly) => [
258
+ 'lines AS (',
259
+ " SELECT oi.product_id::text AS product_id, NULLIF(COALESCE(oi.variant_id::text, ''), '') AS variant_id, oi.quantity" +
260
+ (withOrderId ? ', oi.order_id' : ''),
261
+ ' FROM teleport_order_items oi JOIN released r ON oi.order_id = r.id',
262
+ ' WHERE oi.quantity > 0',
263
+ ' UNION ALL',
264
+ " SELECT CASE WHEN x.kind = 'product' THEN x.id END, CASE WHEN x.kind = 'variant' THEN x.id END, x.qty" +
265
+ (withOrderId ? ', ro.id' : ''),
266
+ ' FROM teleport_orders ro JOIN released r ON ro.id = r.id',
267
+ // Nested CASE: the JSON is parsed only once it looks like an object.
268
+ ` CROSS JOIN LATERAL jsonb_to_recordset(CASE WHEN ${parseOnly} AND ro.metadata ~ '^\\s*\\{'`,
269
+ ` THEN (CASE WHEN jsonb_typeof(ro.metadata::jsonb -> '${exports.STOCK_RESERVATION_KEY}') = 'array'`,
270
+ ` THEN ro.metadata::jsonb -> '${exports.STOCK_RESERVATION_KEY}' ELSE '[]'::jsonb END)`,
271
+ " ELSE '[]'::jsonb END) AS x(kind text, id text, qty int)",
272
+ ' WHERE x.qty > 0 AND NOT EXISTS (SELECT 1 FROM teleport_order_items oi WHERE oi.order_id = ro.id)',
273
+ '),',
274
+ ].join('\n');
275
+ /** For "Settle Unpaid Order", whose `$1` is the one order it settles. */
276
+ exports.STOCK_RESERVATION_RESTORE_LINES = reservationRestoreLines(false, 'ro.id::text = $1::text');
277
+ /**
278
+ * The same lines, each naming its order (the release logs one line per order),
279
+ * for the release, whose `$1` lists the orders whose metadata the checkout read.
280
+ */
281
+ exports.STOCK_RESERVATION_RESTORE_LINES_BY_ORDER = reservationRestoreLines(true, 'ro.id::text = ANY($1::text[])');
282
+ /**
283
+ * Whether an order's TEXT `metadata` holds the reservation record, read as
284
+ * JSON (a buyer-typed billing value of the same text is not the record). The
285
+ * text test runs first, so only a row that may hold the key is parsed.
286
+ */
287
+ const hasReservationRecordSql = (column) => `(CASE WHEN COALESCE(${column}, '') LIKE '%"${exports.STOCK_RESERVATION_KEY}"%' AND ${column} ~ '^\\s*\\{'` +
288
+ ` THEN jsonb_typeof(${column}::jsonb -> '${exports.STOCK_RESERVATION_KEY}') = 'array' ELSE false END)`;
289
+ exports.hasReservationRecordSql = hasReservationRecordSql;
290
+ const looksLikeSettleUnpaidOrderStatement = (query) => typeof query === 'string' &&
291
+ /^\s*WITH\s+target\s+AS\s*\(/.test(query) &&
292
+ query.indexOf('\nreleased AS (') !== -1 &&
293
+ query.indexOf('\nproduct_restore AS (') !== -1 &&
294
+ (occursOnce(query, SETTLE_UNPAID_LINES_CTE) || occursOnce(query, exports.STOCK_RESERVATION_RESTORE_LINES));
295
+ exports.looksLikeSettleUnpaidOrderStatement = looksLikeSettleUnpaidOrderStatement;
296
+ /** The "Settle Unpaid Order" statement that also restores a reservation without items. */
297
+ const restoreReservationsInSettleUnpaidStatement = (query) => (0, exports.looksLikeSettleUnpaidOrderStatement)(query) && occursOnce(query, SETTLE_UNPAID_LINES_CTE)
298
+ ? query.replace(SETTLE_UNPAID_LINES_CTE, () => exports.STOCK_RESERVATION_RESTORE_LINES)
299
+ : query;
300
+ exports.restoreReservationsInSettleUnpaidStatement = restoreReservationsInSettleUnpaidStatement;
301
+ // The editor's "Settle Unpaid Order" stock writes, word for word: they lock
302
+ // the rows in scan order.
303
+ const SETTLE_UNPAID_RESTORES = [
304
+ 'product_restore AS (',
305
+ ' UPDATE teleport_products p SET quantity = p.quantity + d.qty, updated_at = NOW()',
306
+ ' FROM (SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
307
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id) d',
308
+ ' WHERE p.quantity IS NOT NULL AND p.id::text = d.id',
309
+ ' RETURNING p.id',
310
+ '),',
311
+ 'variant_restore AS (',
312
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + d.qty, updated_at = NOW()',
313
+ ' FROM (SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
314
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id) d',
315
+ ' WHERE v.quantity IS NOT NULL AND v.id::text = d.id',
316
+ ' RETURNING v.id',
317
+ ')',
318
+ ].join('\n');
319
+ // The same writes from rows locked first, products then variants, each in id
320
+ // order: the order the reservation, the release and the late-payment retake
321
+ // take them in (the order row is locked first by all of them, and the
322
+ // voucher and gift card this statement does not touch).
323
+ const SETTLE_UNPAID_SORTED_RESTORES = [
324
+ 'product_need AS (',
325
+ ' SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
326
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id',
327
+ '),',
328
+ 'variant_need AS (',
329
+ ' SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
330
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id',
331
+ '),',
332
+ 'product_locks AS (',
333
+ ' SELECT p.id, n.qty FROM teleport_products p JOIN product_need n ON p.id::text = n.id',
334
+ ' WHERE p.quantity IS NOT NULL',
335
+ ' ORDER BY p.id FOR UPDATE OF p',
336
+ '),',
337
+ 'variant_locks AS (',
338
+ ' SELECT v.id, n.qty FROM teleport_product_variants v JOIN variant_need n ON v.id::text = n.id',
339
+ ' WHERE v.quantity IS NOT NULL AND (SELECT COUNT(*) FROM product_locks) >= 0',
340
+ ' ORDER BY v.id FOR UPDATE OF v',
341
+ '),',
342
+ 'product_restore AS (',
343
+ ' UPDATE teleport_products p SET quantity = p.quantity + l.qty, updated_at = NOW()',
344
+ ' FROM product_locks l WHERE p.id = l.id',
345
+ ' RETURNING p.id',
346
+ '),',
347
+ 'variant_restore AS (',
348
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + l.qty, updated_at = NOW()',
349
+ ' FROM variant_locks l WHERE v.id = l.id',
350
+ ' RETURNING v.id',
351
+ ')',
352
+ ].join('\n');
353
+ /** The "Settle Unpaid Order" statement restoring from rows locked in id order; unchanged when drifted or done. */
354
+ const lockSettleUnpaidRestoresInIdOrder = (query) => (0, exports.looksLikeSettleUnpaidOrderStatement)(query) && occursOnce(query, SETTLE_UNPAID_RESTORES)
355
+ ? query.replace(SETTLE_UNPAID_RESTORES, () => SETTLE_UNPAID_SORTED_RESTORES)
356
+ : query;
357
+ exports.lockSettleUnpaidRestoresInIdOrder = lockSettleUnpaidRestoresInIdOrder;
358
+ // ────────────────────────────────────────────────────────────────────
359
+ // Releasing reservations whose checkout never reached a payment page
360
+ // ────────────────────────────────────────────────────────────────────
361
+ /**
362
+ * How long a reserving order may wait for a payment page, how many one pass
363
+ * releases, and how long after its last write (the checkout stamps the order
364
+ * right before it asks the provider for a page) it is left alone, so a page
365
+ * whose record is still on its way is never released under the buyer.
366
+ */
367
+ exports.STALLED_RESERVATION_RELEASE = {
368
+ holdMinutes: 30,
369
+ batchSize: 10,
370
+ quietMinutes: 2,
371
+ /** How many candidates the checkout reads per pass, so unreadable rows never fill a batch. */
372
+ candidateLimit: 50,
373
+ };
374
+ // Which orders a pass may release, apart from the reservation record itself:
375
+ // pending and unpaid, no payment session (no attempt reference, no payment
376
+ // reference) on a table that can record one, not a store-billed renewal,
377
+ // placed `holdMinutes` ago and written to in none of the last `quietMinutes`.
378
+ const stalledOrderConditions = (holdMinutes) => [
379
+ " WHERE LOWER(COALESCE(o.status, '')) = 'pending'",
380
+ " AND LOWER(COALESCE(o.payment_status, '')) IN ('', 'unpaid', 'pending')",
381
+ " AND COALESCE(o.payment_intent_id, '') = ''",
382
+ " AND COALESCE(to_jsonb(o) ->> 'payment_attempt_ref', '') = ''",
383
+ // A store whose table predates the column records no checkout, so an
384
+ // order there may have one open: it is never released here.
385
+ " AND (to_jsonb(o) -> 'payment_attempt_ref') IS NOT NULL",
386
+ " AND COALESCE(to_jsonb(o) ->> 'provider_invoice_id', '') NOT LIKE 'store:%'",
387
+ ` AND o.created_at < NOW() - make_interval(mins => ${Math.max(1, Math.floor(holdMinutes))})`,
388
+ ` AND (o.updated_at IS NULL OR o.updated_at < NOW() - make_interval(mins => ${exports.STALLED_RESERVATION_RELEASE.quietMinutes}))`,
389
+ " AND o.created_at > NOW() - INTERVAL '30 days'",
390
+ ];
391
+ /**
392
+ * The orders a pass may release, with their metadata as text, oldest first,
393
+ * nothing parsed and nothing locked. The checkout parses each one's metadata
394
+ * itself (a malformed row would otherwise fail the whole release on Postgres
395
+ * versions without a safe JSON test) and releases only the readable ones.
396
+ */
397
+ const buildStalledReservationCandidatesQuery = (holdMinutes = exports.STALLED_RESERVATION_RELEASE.holdMinutes) => [
398
+ 'SELECT o.id::text AS id, o.metadata',
399
+ ' FROM teleport_orders o',
400
+ ...stalledOrderConditions(holdMinutes),
401
+ ` AND COALESCE(o.metadata, '') LIKE '%"${exports.STOCK_RESERVATION_KEY}"%'`,
402
+ ' ORDER BY o.created_at ASC',
403
+ ` LIMIT ${exports.STALLED_RESERVATION_RELEASE.candidateLimit}`,
404
+ ].join('\n');
405
+ exports.buildStalledReservationCandidatesQuery = buildStalledReservationCandidatesQuery;
406
+ // One system "order-cancelled" line per released order, keyed as the shared
407
+ // writer keys an order's cancellation (`order-cancelled:<order id>`, the key
408
+ // "Settle Unpaid Order" writes too): its units were put back when any tracked
409
+ // row took them, which the editor reads before it restocks or accepts a late
410
+ // payment for the order.
411
+ const releasedLogLines = (log) => {
412
+ if (log === 'none') {
413
+ return [];
414
+ }
415
+ const columns = log === 'entity'
416
+ ? 'event_type, dedupe_key, order_id, entity_type, entity_id, payload, actor_type, status'
417
+ : 'event_type, dedupe_key, order_id, payload, actor_type, status';
418
+ const entity = log === 'entity' ? " 'order', r.id::text," : '';
419
+ return [
420
+ ',',
421
+ 'logged AS (',
422
+ ` INSERT INTO teleport_events (${columns})`,
423
+ ` SELECT 'order-cancelled', 'order-cancelled:' || r.id::text, r.id,${entity}`,
424
+ " json_build_object('reason', 'expired',",
425
+ " 'restocked', CASE WHEN EXISTS (SELECT 1 FROM lines l JOIN product_locks pl ON l.variant_id IS NULL AND pl.id::text = l.product_id WHERE l.order_id = r.id)",
426
+ ' OR EXISTS (SELECT 1 FROM lines l JOIN variant_locks vl ON vl.id::text = l.variant_id WHERE l.order_id = r.id)',
427
+ " THEN 'true' ELSE 'false' END,",
428
+ " 'unitCount', (SELECT COALESCE(SUM(l.quantity), 0) FROM lines l WHERE l.order_id = r.id)::text)::text,",
429
+ " 'system', 'recorded'",
430
+ ' FROM released r',
431
+ ' ON CONFLICT (dedupe_key) DO NOTHING',
432
+ ' RETURNING id',
433
+ ')',
434
+ ];
435
+ };
436
+ /**
437
+ * Cancels the `pending` orders that reserved stock (they carry the record)
438
+ * but never opened a payment session (no attempt reference, no payment
439
+ * reference) `holdMinutes` after they were placed, and gives back, in the
440
+ * same statement and per order, what each one held: its stock (from its items,
441
+ * or from the record when it has none), its voucher redemption and its
442
+ * gift-card tender, and writes each one's cancellation line (`log`). A
443
+ * store-billed renewal is left to the billing run, a store whose order table
444
+ * cannot record a checkout is left alone, and so is an order written in the
445
+ * last `quietMinutes` (its payment page may be opening). Rows another
446
+ * transaction holds are skipped, so a checkout in flight, or another pass, is
447
+ * never waited on. A checkout recorded for the order first keeps it pending,
448
+ * and one opened after the release is never recorded, so it is closed and
449
+ * never shown. An order cancelled here that is paid after all has its stock
450
+ * taken again by "Process Payment Webhook" when it is still there, and is
451
+ * otherwise recorded as a late payment for the merchant.
452
+ *
453
+ * Locks, after the orders: vouchers, gift cards, products, variants, each in
454
+ * id order — the order the checkout's reservation takes them in — so the two
455
+ * never deadlock.
456
+ *
457
+ * The provider's own events and the scheduled "Release Abandoned Checkouts"
458
+ * run settle orders that DID open a payment page; nothing triggers for one
459
+ * that did not, so the checkout runs this pass itself (`cart-price-order`).
460
+ */
461
+ const buildStalledReservationReleaseQuery = (holdMinutes = exports.STALLED_RESERVATION_RELEASE.holdMinutes, batchSize = exports.STALLED_RESERVATION_RELEASE.batchSize, log = 'entity') => [
462
+ 'WITH stale AS (',
463
+ ' SELECT o.id',
464
+ ' FROM teleport_orders o',
465
+ ...stalledOrderConditions(holdMinutes),
466
+ // `$1`: the orders whose metadata the checkout read as JSON. Only theirs
467
+ // is parsed here, whatever order the planner evaluates the rest in.
468
+ ' AND o.id::text = ANY($1::text[])',
469
+ ` AND (CASE WHEN o.id::text = ANY($1::text[]) THEN ${(0, exports.hasReservationRecordSql)('o.metadata')} ELSE false END)`,
470
+ ' ORDER BY o.created_at ASC',
471
+ ` LIMIT ${Math.max(1, Math.floor(batchSize))}`,
472
+ ' FOR UPDATE SKIP LOCKED',
473
+ '),',
474
+ 'released AS (',
475
+ ' UPDATE teleport_orders o',
476
+ " SET status = 'cancelled', payment_status = 'failed', updated_at = NOW()",
477
+ ' FROM stale s',
478
+ ' WHERE o.id = s.id',
479
+ " RETURNING o.id, COALESCE(NULLIF(to_jsonb(o) ->> 'order_number', ''), o.id::text) AS order_ref,",
480
+ " to_jsonb(o) ->> 'gift_card_id' AS gift_card_id,",
481
+ " COALESCE((to_jsonb(o) ->> 'gift_card_amount')::numeric, 0) AS gift_card_amount,",
482
+ " UPPER(COALESCE(o.currency, '')) AS currency",
483
+ '),',
484
+ exports.STOCK_RESERVATION_RESTORE_LINES_BY_ORDER,
485
+ 'product_need AS (',
486
+ ' SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
487
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id',
488
+ '),',
489
+ 'variant_need AS (',
490
+ ' SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
491
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id',
492
+ '),',
493
+ 'voucher_dropped AS (',
494
+ ' DELETE FROM teleport_voucher_redemptions vr USING released r WHERE vr.order_id = r.id',
495
+ ' RETURNING vr.voucher_id',
496
+ '),',
497
+ 'held_vouchers AS (',
498
+ ' SELECT v.id FROM teleport_vouchers v',
499
+ ' WHERE v.id IN (SELECT voucher_id FROM voucher_dropped)',
500
+ ' ORDER BY v.id FOR UPDATE',
501
+ '),',
502
+ 'card AS (',
503
+ ' SELECT g.id, g.balance, r.gift_card_amount AS amount, r.id AS order_id, r.order_ref',
504
+ ' FROM teleport_gift_cards g JOIN released r ON g.id::text = r.gift_card_id',
505
+ " WHERE r.gift_card_amount > 0 AND g.status = 'active'",
506
+ ' AND (g.expires_at IS NULL OR g.expires_at > NOW())',
507
+ " AND (r.currency = '' OR UPPER(g.currency) = r.currency)",
508
+ ' AND (SELECT COUNT(*) FROM held_vouchers) >= 0',
509
+ ' ORDER BY g.id FOR UPDATE OF g',
510
+ '),',
511
+ 'product_locks AS (',
512
+ ' SELECT p.id, n.qty FROM teleport_products p JOIN product_need n ON p.id::text = n.id',
513
+ ' WHERE p.quantity IS NOT NULL AND (SELECT COUNT(*) FROM card) >= 0',
514
+ ' ORDER BY p.id FOR UPDATE OF p',
515
+ '),',
516
+ 'variant_locks AS (',
517
+ ' SELECT v.id, n.qty FROM teleport_product_variants v JOIN variant_need n ON v.id::text = n.id',
518
+ ' WHERE v.quantity IS NOT NULL AND (SELECT COUNT(*) FROM product_locks) >= 0',
519
+ ' ORDER BY v.id FOR UPDATE OF v',
520
+ '),',
521
+ 'product_restore AS (',
522
+ ' UPDATE teleport_products p SET quantity = p.quantity + l.qty, updated_at = NOW()',
523
+ ' FROM product_locks l WHERE p.id = l.id',
524
+ ' RETURNING p.id',
525
+ '),',
526
+ 'variant_restore AS (',
527
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + l.qty, updated_at = NOW()',
528
+ ' FROM variant_locks l WHERE v.id = l.id',
529
+ ' RETURNING v.id',
530
+ '),',
531
+ 'voucher_restored AS (',
532
+ ' UPDATE teleport_vouchers v',
533
+ ' SET usage_count = GREATEST(COALESCE(v.usage_count, 0) - d.n, 0), updated_at = NOW()',
534
+ ' FROM (SELECT voucher_id, COUNT(*)::int AS n FROM voucher_dropped GROUP BY voucher_id) d',
535
+ ' JOIN held_vouchers h ON h.id = d.voucher_id',
536
+ ' WHERE v.id = d.voucher_id',
537
+ ' RETURNING v.id',
538
+ '),',
539
+ 'card_ledger AS (',
540
+ ' INSERT INTO teleport_gift_card_transactions',
541
+ ' (gift_card_id, order_id, type, amount, balance_after, dedupe_key, note)',
542
+ " SELECT card.id, card.order_id, 'release', card.amount, card.balance + card.amount,",
543
+ " 'release:' || card.order_id::text, 'Released from unpaid order ' || card.order_ref",
544
+ ' FROM card',
545
+ ' ON CONFLICT (dedupe_key) DO NOTHING',
546
+ ' RETURNING gift_card_id, amount',
547
+ '),',
548
+ 'card_credited AS (',
549
+ ' UPDATE teleport_gift_cards g SET balance = g.balance + c.amount, updated_at = NOW()',
550
+ ' FROM (SELECT gift_card_id, SUM(amount) AS amount FROM card_ledger GROUP BY gift_card_id) c',
551
+ ' WHERE g.id = c.gift_card_id',
552
+ ' RETURNING g.id',
553
+ ')' + releasedLogLines(log).join('\n'),
554
+ 'SELECT',
555
+ ' (SELECT COUNT(*) FROM released) AS released,',
556
+ ' (SELECT COALESCE(SUM(quantity), 0) FROM lines) AS units,',
557
+ ' (SELECT COUNT(*) FROM product_restore) + (SELECT COUNT(*) FROM variant_restore) AS restocked_rows,',
558
+ ' (SELECT COUNT(*) FROM voucher_dropped) AS vouchers_released,',
559
+ ' (SELECT COUNT(*) FROM card_credited) AS gift_cards_released' +
560
+ // The data API wakes the automations only for a pass that logged a line.
561
+ (log === 'none' ? '' : ',\n (SELECT COUNT(*) FROM logged) AS claimed'),
562
+ ].join('\n');
563
+ exports.buildStalledReservationReleaseQuery = buildStalledReservationReleaseQuery;
564
+ /** The forms the checkout tries, in order: a ledger with the record columns, an older one, none. */
565
+ const buildStalledReservationReleaseQueries = () => ['entity', 'plain', 'none'].map((log) => (0, exports.buildStalledReservationReleaseQuery)(exports.STALLED_RESERVATION_RELEASE.holdMinutes, exports.STALLED_RESERVATION_RELEASE.batchSize, log));
566
+ exports.buildStalledReservationReleaseQueries = buildStalledReservationReleaseQueries;
567
+ const stockDeltaParam = (priceNodeId, key) => ({
568
+ path: [priceNodeId, 'stockDeltas', key],
569
+ type: 'workflowContext',
570
+ nodeId: priceNodeId,
571
+ });
572
+ /**
573
+ * The stock can be reserved with the order only when the order's units are
574
+ * known on the server and the workflow's own decrement can be stopped from
575
+ * taking them a second time: every order decrement in it is the parameterised
576
+ * chain step (re-baked by `rewriteParameterizedStockChainInNodes`).
577
+ */
578
+ const canReserveStock = (nodes) => {
579
+ if (!(0, parameterized_stock_chain_1.isParameterizedDecrementChainRewritable)(nodes)) {
580
+ return false;
581
+ }
582
+ return nodes.every((node) => {
583
+ var _a, _b;
584
+ if (!node || (node.type !== 'data-raw-query' && node.type !== 'general-custom-js')) {
585
+ return true;
586
+ }
587
+ if (node.type === 'data-raw-query' && (0, exports.looksLikeOrderRedemptionStatement)((_a = node.config) === null || _a === void 0 ? void 0 : _a.query)) {
588
+ return true;
589
+ }
590
+ const { category } = (0, stock_decrement_1.classifyStockWriteSite)('Place Order', node);
591
+ if (category !== 'order-decrement') {
592
+ return true;
593
+ }
594
+ return node.type === 'data-raw-query' && (0, parameterized_stock_chain_1.isParameterizedStockDecrementQuery)((_b = node.config) === null || _b === void 0 ? void 0 : _b.query);
595
+ });
596
+ };
597
+ /**
598
+ * Re-bakes the settle write and the redemption statement of one workflow (or
599
+ * custom node) in place. Returns whether the redemption statement now
600
+ * reserves the order's stock, which the stock chain rewrite needs to know.
601
+ */
602
+ const guardPlaceOrderStatementsInNodes = (nodes, ownerName, options, summary) => {
603
+ if (!Array.isArray(nodes)) {
604
+ return { stockReserved: false };
605
+ }
606
+ const list = nodes;
607
+ const priceNode = list.find((node) => node && node.type === 'cart-price-order' && typeof node.id === 'string' && node.id);
608
+ let stockReserved = false;
609
+ for (const node of list) {
610
+ if (!node || node.type !== 'data-raw-query' || !node.config) {
611
+ continue;
612
+ }
613
+ const query = node.config.query;
614
+ if ((0, exports.looksLikeSettleOrderStatement)(query)) {
615
+ const guarded = (0, exports.guardSettleOrderStatement)(query, options);
616
+ if (guarded !== query) {
617
+ node.config.query = guarded;
618
+ summary.settleGuards++;
619
+ }
620
+ continue;
621
+ }
622
+ if ((0, exports.looksLikeSettleUnpaidOrderStatement)(query)) {
623
+ const restoring = options.reserveStock
624
+ ? (0, exports.restoreReservationsInSettleUnpaidStatement)(query)
625
+ : query;
626
+ if (restoring !== query) {
627
+ summary.reservationRestores++;
628
+ }
629
+ // Whatever the stock settings: its rows are locked in the order every
630
+ // other stock statement takes them in.
631
+ const sorted = (0, exports.lockSettleUnpaidRestoresInIdOrder)(restoring);
632
+ if (sorted !== restoring) {
633
+ summary.restoreLockOrders++;
634
+ }
635
+ node.config.query = sorted;
636
+ continue;
637
+ }
638
+ if (!options.reserveStock || !(0, exports.looksLikeOrderRedemptionStatement)(query)) {
639
+ continue;
640
+ }
641
+ const params = node.config.params;
642
+ const reserved = (0, exports.reserveStockInRedemptionStatement)(query);
643
+ if (!priceNode ||
644
+ !Array.isArray(params) ||
645
+ params.length !== REDEMPTION_PARAM_COUNT ||
646
+ reserved === query ||
647
+ !canReserveStock(list)) {
648
+ summary.skippedReservations++;
649
+ // eslint-disable-next-line no-console
650
+ console.warn('[teleport] place-order guards: "' +
651
+ ownerName +
652
+ '" keeps its stock decrement after the order (its stock cannot be reserved with the order: ' +
653
+ 'no server pricing step, or a redemption or decrement step that has drifted).');
654
+ continue;
655
+ }
656
+ node.config.query = reserved;
657
+ node.config.params = [
658
+ ...params,
659
+ stockDeltaParam(priceNode.id, 'productIds'),
660
+ stockDeltaParam(priceNode.id, 'productQtys'),
661
+ stockDeltaParam(priceNode.id, 'variantIds'),
662
+ stockDeltaParam(priceNode.id, 'variantQtys'),
663
+ ];
664
+ summary.stockReservations++;
665
+ stockReserved = true;
666
+ }
667
+ return { stockReserved };
668
+ };
669
+ exports.guardPlaceOrderStatementsInNodes = guardPlaceOrderStatementsInNodes;
670
+ //# sourceMappingURL=place-order-guards.js.map