@teleporthq/teleport-plugin-next-workflows 0.44.11 → 0.45.0

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 +224 -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 +44 -7
  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 +220 -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 +44 -7
  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 +217 -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 +46 -7
  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 +253 -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,655 @@
1
+ // Export-time guards for the place-order workflow's money statements.
2
+ //
3
+ // The editor bakes the checkout's SQL into `data-raw-query` nodes
4
+ // (apps/gui/.../builders/ecommerce/order-redemption-helper.ts). Two of those
5
+ // statements decide what a buyer gets for what they paid, and both are
6
+ // re-baked here from the store's CURRENT settings on every export, the way
7
+ // the stock chain is (see ./parameterized-stock-chain.ts):
8
+ //
9
+ // 1. THE SETTLE WRITE ("Mark Order As Settled") confirms an order that no
10
+ // payment provider collects: cash on delivery, a total discounted to zero,
11
+ // or an order a gift card paid in full. Which branch runs is decided in the
12
+ // browser, and every server segment is a route of its own, so a crafted
13
+ // request can call this one for any order it just placed. On a store that
14
+ // does not take cash on delivery, the statement now confirms only an order
15
+ // with nothing left to collect, decided from the order row and the card's
16
+ // ledger. Any other order stays `pending`, which is what an unpaid order is.
17
+ // On a store that takes cash on delivery but prices delivery by shipping
18
+ // zone, cash on delivery is each zone's choice (`teleport_shipping_zones.
19
+ // cod_enabled`, edited live in the admin): an order DELIVERED to a zone
20
+ // that does not take it is confirmed only with nothing left to collect.
21
+ // The zone is the one the order records (`shipping_zone_name`, written
22
+ // from the server's own quote for its address), read against the zone
23
+ // rows at the moment of settling.
24
+ //
25
+ // 2. THE REDEMPTION STATEMENT ("Redeem Voucher And Gift Card") runs right
26
+ // after the order row is written. It locks what it spends, decides `ok`
27
+ // before writing anything, and a `false` verdict cancels the order on the
28
+ // server (the gate after it runs on the server too). With stock managed and
29
+ // backorders off, it now also reserves the order's stock in that same
30
+ // statement: the product and variant rows are locked (`FOR UPDATE`), any
31
+ // line the stock cannot cover makes `ok` false, and the decrement is
32
+ // conditional on `ok`. Of two orders racing for the last unit, the second
33
+ // waits for the first, sees what it left and is refused. Nothing is written
34
+ // for a refused order. The units are the ones the server priced
35
+ // (`cart-price-order`'s `stockDeltas`), never anything the browser sends.
36
+ // The later "Decrement Product Stock After Order" step is then re-baked to
37
+ // take nothing (see `buildParameterizedStockDecrementQuery`).
38
+ //
39
+ // Each statement is recognised by its shape. A statement that has drifted from
40
+ // it is left alone. If the stock cannot be reserved safely (no server pricing
41
+ // step, a decrement this module cannot neutralise), the checkout keeps the
42
+ // decrement it had, and a warning says so.
43
+ import { isParameterizedDecrementChainRewritable, isParameterizedStockDecrementQuery, } from './parameterized-stock-chain';
44
+ import { classifyStockWriteSite } from './stock-decrement';
45
+ // ────────────────────────────────────────────────────────────────────
46
+ // The settle write
47
+ // ────────────────────────────────────────────────────────────────────
48
+ const SETTLE_RETURNING = 'RETURNING o.id, o.payment_status, o.payment_method';
49
+ /** Confirms only an order with nothing left to collect: the row's total, less what its own redemption debited. */
50
+ export const SETTLE_NOTHING_DUE_GUARD = ' AND o.total_amount IS NOT NULL AND o.total_amount - (SELECT debited FROM tender) <= 0';
51
+ export const looksLikeSettleOrderStatement = (query) => typeof query === 'string' &&
52
+ /^\s*WITH\s+tender\s+AS\s*\(/i.test(query) &&
53
+ /\bUPDATE\s+teleport_orders\s+o\s+SET\s+status\s*=\s*'confirmed'/i.test(query) &&
54
+ query.indexOf("ELSE 'cash_on_delivery' END") !== -1 &&
55
+ /\bAND\s+o\.status\s*=\s*'pending'/i.test(query) &&
56
+ query.trim().endsWith(SETTLE_RETURNING);
57
+ /**
58
+ * Confirms an order with money still due only when it is not delivered to an
59
+ * active shipping zone that refuses cash on delivery. Every column is read
60
+ * through `to_jsonb`, the way the zone rule reads them (`cod_enabled` and
61
+ * `is_active` default to true).
62
+ */
63
+ export const SETTLE_ZONE_COD_GUARD = [
64
+ ' AND (o.total_amount IS NOT NULL AND o.total_amount - (SELECT debited FROM tender) <= 0',
65
+ " OR NOT (COALESCE(to_jsonb(o) ->> 'fulfillment_method', '') = 'delivery'",
66
+ ' AND EXISTS (SELECT 1 FROM teleport_shipping_zones z',
67
+ " WHERE z.name = (to_jsonb(o) ->> 'shipping_zone_name')",
68
+ " AND LOWER(COALESCE(to_jsonb(z) ->> 'is_active', 'true')) NOT IN ('false', 'f', '0', 'no')",
69
+ " AND LOWER(COALESCE(to_jsonb(z) ->> 'cod_enabled', 'true')) IN ('false', 'f', '0', 'no'))))",
70
+ ].join('\n');
71
+ /** The settle write for the store's cash-on-delivery rules; unchanged when they allow every order. */
72
+ export const guardSettleOrderStatement = (query, settings) => {
73
+ const guard = !settings.cashOnDelivery
74
+ ? SETTLE_NOTHING_DUE_GUARD
75
+ : settings.codByShippingZone
76
+ ? SETTLE_ZONE_COD_GUARD
77
+ : '';
78
+ if (!guard ||
79
+ !looksLikeSettleOrderStatement(query) ||
80
+ query.indexOf(SETTLE_NOTHING_DUE_GUARD) !== -1 ||
81
+ query.indexOf(SETTLE_ZONE_COD_GUARD) !== -1) {
82
+ return query;
83
+ }
84
+ const at = query.lastIndexOf(SETTLE_RETURNING);
85
+ return query.slice(0, at).replace(/\s*$/, '') + '\n' + guard + '\n' + query.slice(at);
86
+ };
87
+ // ────────────────────────────────────────────────────────────────────
88
+ // The redemption statement
89
+ // ────────────────────────────────────────────────────────────────────
90
+ const REDEMPTION_OK_LINE = 'ok AS (SELECT voucher_ok AND gift_card_ok AS ok FROM verdict),';
91
+ const RESERVED_OK_LINE = 'ok AS (SELECT voucher_ok AND gift_card_ok AND stock_ok AS ok FROM verdict),';
92
+ const VERDICT_START = '\nverdict AS (';
93
+ const VERDICT_END = ')) AS gift_card_ok\n),';
94
+ const LAST_COLUMN = '(SELECT COUNT(*) FROM ledger) AS gift_card_debited';
95
+ /** The redemption statement takes 9 parameters; the reservation appends $10..$13. */
96
+ const REDEMPTION_PARAM_COUNT = 9;
97
+ // $10/$11 product ids and units (variantless lines), $12/$13 variant ids and
98
+ // units. Locked first, so a concurrent order is waited out and its result read,
99
+ // and in id order (as the release and the late-payment retake lock them), so
100
+ // two statements needing the same rows never wait on each other in a cycle.
101
+ const STOCK_LOCKS = [
102
+ 'stock_lines AS (',
103
+ " SELECT 'product'::text AS kind, d.id, d.qty FROM unnest($10::text[], $11::int[]) AS d(id, qty)",
104
+ ' UNION ALL',
105
+ " SELECT 'variant'::text AS kind, d.id, d.qty FROM unnest($12::text[], $13::int[]) AS d(id, qty)",
106
+ '),',
107
+ 'locked_products AS (',
108
+ ' SELECT p.id::text AS id, p.quantity',
109
+ ' FROM teleport_products p',
110
+ ' WHERE p.quantity IS NOT NULL AND p.id::text = ANY($10::text[])',
111
+ ' ORDER BY p.id',
112
+ ' FOR UPDATE',
113
+ '),',
114
+ 'locked_variants AS (',
115
+ ' SELECT v.id::text AS id, v.quantity',
116
+ ' FROM teleport_product_variants v',
117
+ ' WHERE v.quantity IS NOT NULL AND v.id::text = ANY($12::text[])',
118
+ ' ORDER BY v.id',
119
+ ' FOR UPDATE',
120
+ '),',
121
+ 'stock_short AS (',
122
+ " 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",
123
+ ' UNION ALL',
124
+ " 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",
125
+ '),',
126
+ ].join('\n');
127
+ // Missing or mismatched arrays refuse the order: a NULL unit count would turn
128
+ // a tracked quantity into NULL ("unlimited").
129
+ const STOCK_OK_COLUMN = [
130
+ ' ($10::text[] IS NOT NULL AND $11::int[] IS NOT NULL AND $12::text[] IS NOT NULL AND $13::int[] IS NOT NULL',
131
+ ' AND cardinality($10::text[]) = cardinality($11::int[])',
132
+ ' AND cardinality($12::text[]) = cardinality($13::int[])',
133
+ ' AND NOT EXISTS (SELECT 1 FROM stock_lines WHERE qty IS NULL OR qty < 1)',
134
+ ' AND NOT EXISTS (SELECT 1 FROM stock_short)) AS stock_ok',
135
+ ].join('\n');
136
+ // Written only when everything the order spends could be spent.
137
+ const STOCK_RESERVATIONS = [
138
+ 'reserved_products AS (',
139
+ ' UPDATE teleport_products AS p SET quantity = p.quantity - d.qty, updated_at = NOW()',
140
+ ' FROM unnest($10::text[], $11::int[]) AS d(id, qty)',
141
+ ' WHERE (SELECT ok FROM ok) AND p.quantity IS NOT NULL AND p.id::text = d.id AND p.quantity >= d.qty',
142
+ ' RETURNING p.id',
143
+ '),',
144
+ 'reserved_variants AS (',
145
+ ' UPDATE teleport_product_variants AS v SET quantity = v.quantity - d.qty, updated_at = NOW()',
146
+ ' FROM unnest($12::text[], $13::int[]) AS d(id, qty)',
147
+ ' WHERE (SELECT ok FROM ok) AND v.quantity IS NOT NULL AND v.id::text = d.id AND v.quantity >= d.qty',
148
+ ' RETURNING v.id',
149
+ '),',
150
+ ].join('\n');
151
+ // What this statement actually took (tracked rows only), for the record below.
152
+ const STOCK_RESERVED_LINES = [
153
+ 'stock_reserved_lines AS (',
154
+ " 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",
155
+ ' UNION ALL',
156
+ " 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",
157
+ '),',
158
+ ].join('\n');
159
+ // The editor's gift-card write onto the order row, word for word. A statement
160
+ // may update a row once, so the reservation record joins it in one UPDATE.
161
+ const ORDER_UPDATE_CTE = [
162
+ 'order_update AS (',
163
+ ' UPDATE teleport_orders o',
164
+ ' SET gift_card_amount = $9::numeric, gift_card_id = debit.id, gift_card_last4 = debit.last4, updated_at = NOW()',
165
+ ' FROM debit',
166
+ ' WHERE o.id = ($2::text)::uuid',
167
+ ' RETURNING o.id',
168
+ ')',
169
+ ].join('\n');
170
+ /**
171
+ * The order row's one update: the gift-card tender as before, and the units
172
+ * this statement reserved, recorded in the order's `metadata` (TEXT JSON) as
173
+ * `stockReservation: [{ kind, id, qty }]`. An order stopped before its items
174
+ * are written still says what it holds, and the cancel / expiry paths restore
175
+ * from it when the order has no items (`STOCK_RESERVATION_RESTORE_LINES`).
176
+ * Beside it, the products the voucher was redeemed against
177
+ * (`voucherItemProductIds`, the redemption's `item_product_ids`): a cancel
178
+ * deletes the redemption row, and a late payment that confirms the order
179
+ * writes it again with them.
180
+ */
181
+ export const STOCK_RESERVATION_KEY = 'stockReservation';
182
+ export const VOUCHER_ITEM_PRODUCT_IDS_KEY = 'voucherItemProductIds';
183
+ const RESERVING_ORDER_UPDATE_CTE = [
184
+ 'order_update AS (',
185
+ ' UPDATE teleport_orders o',
186
+ ' SET gift_card_amount = CASE WHEN d.id IS NULL THEN o.gift_card_amount ELSE $9::numeric END,',
187
+ ' gift_card_id = CASE WHEN d.id IS NULL THEN o.gift_card_id ELSE d.id END,',
188
+ ' gift_card_last4 = CASE WHEN d.id IS NULL THEN o.gift_card_last4 ELSE d.last4 END,',
189
+ ' metadata = CASE WHEN EXISTS (SELECT 1 FROM stock_reserved_lines)',
190
+ " THEN ((CASE WHEN o.metadata ~ '^\\s*\\{' THEN o.metadata::jsonb ELSE '{}'::jsonb END)",
191
+ ` || jsonb_build_object('${STOCK_RESERVATION_KEY}', (SELECT jsonb_agg(jsonb_build_object('kind', r.kind, 'id', r.id, 'qty', r.qty)) FROM stock_reserved_lines r),`,
192
+ ` '${VOUCHER_ITEM_PRODUCT_IDS_KEY}', NULLIF($7::text, '')))::text`,
193
+ ' ELSE o.metadata END,',
194
+ ' updated_at = NOW()',
195
+ ' FROM (SELECT 1 AS one) AS base LEFT JOIN debit d ON true',
196
+ ' WHERE o.id = ($2::text)::uuid AND (d.id IS NOT NULL OR EXISTS (SELECT 1 FROM stock_reserved_lines))',
197
+ ' RETURNING o.id',
198
+ ')',
199
+ ].join('\n');
200
+ const STOCK_RESERVED_COLUMN = '(SELECT COUNT(*) FROM reserved_products) + (SELECT COUNT(*) FROM reserved_variants) AS stock_reserved';
201
+ // Whether the stock could be had, apart from the voucher and the card: a
202
+ // refusal that is the stock's says so (the verdict can tell the buyer).
203
+ const STOCK_OK_RESULT_COLUMN = '(SELECT stock_ok FROM verdict) AS stock_ok';
204
+ const occursOnce = (text, part) => {
205
+ const at = text.indexOf(part);
206
+ return at !== -1 && text.indexOf(part, at + 1) === -1;
207
+ };
208
+ export const looksLikeOrderRedemptionStatement = (query) => typeof query === 'string' &&
209
+ /^\s*WITH\s+locked_voucher\s+AS\s*\(/.test(query) &&
210
+ query.indexOf('\nlocked_card AS (') !== -1 &&
211
+ occursOnce(query, VERDICT_START) &&
212
+ (occursOnce(query, REDEMPTION_OK_LINE) || occursOnce(query, RESERVED_OK_LINE)) &&
213
+ occursOnce(query, LAST_COLUMN);
214
+ /** The redemption statement that also reserves the order's stock; unchanged when it drifted or already does. */
215
+ export const reserveStockInRedemptionStatement = (query) => {
216
+ if (!looksLikeOrderRedemptionStatement(query) || query.indexOf(RESERVED_OK_LINE) !== -1) {
217
+ return query;
218
+ }
219
+ if (!occursOnce(query, VERDICT_END) ||
220
+ !occursOnce(query, ORDER_UPDATE_CTE) ||
221
+ !query.trim().endsWith(LAST_COLUMN)) {
222
+ return query;
223
+ }
224
+ return query
225
+ .replace(VERDICT_START, '\n' + STOCK_LOCKS + VERDICT_START)
226
+ .replace(VERDICT_END, ')) AS gift_card_ok,\n' + STOCK_OK_COLUMN + '\n),')
227
+ .replace(REDEMPTION_OK_LINE, RESERVED_OK_LINE + '\n' + STOCK_RESERVATIONS + '\n' + STOCK_RESERVED_LINES)
228
+ .replace(ORDER_UPDATE_CTE, () => RESERVING_ORDER_UPDATE_CTE)
229
+ .replace(LAST_COLUMN, () => LAST_COLUMN + ',\n ' + STOCK_RESERVED_COLUMN + ',\n ' + STOCK_OK_RESULT_COLUMN);
230
+ };
231
+ // ────────────────────────────────────────────────────────────────────
232
+ // Restoring a reservation an order holds without items
233
+ // ────────────────────────────────────────────────────────────────────
234
+ // The units a cancelled unpaid order puts back, as the editor's "Settle
235
+ // Unpaid Order" statement reads them: its order items. Word for word.
236
+ const SETTLE_UNPAID_LINES_CTE = [
237
+ 'lines AS (',
238
+ " SELECT oi.product_id::text AS product_id, NULLIF(COALESCE(oi.variant_id::text, ''), '') AS variant_id, oi.quantity",
239
+ ' FROM teleport_order_items oi JOIN released r ON oi.order_id = r.id',
240
+ ' WHERE oi.quantity > 0',
241
+ '),',
242
+ ].join('\n');
243
+ /**
244
+ * The same lines, plus, for a released order with NO items, the units its
245
+ * reservation record says it holds: an order stopped between the reservation
246
+ * and its items gives its stock back when it is cancelled. A malformed record
247
+ * reads as none. `parseOnly` names the orders whose metadata may be parsed at
248
+ * all (the statement's own), so the planner can never cast another row's.
249
+ */
250
+ const reservationRestoreLines = (withOrderId, parseOnly) => [
251
+ 'lines AS (',
252
+ " SELECT oi.product_id::text AS product_id, NULLIF(COALESCE(oi.variant_id::text, ''), '') AS variant_id, oi.quantity" +
253
+ (withOrderId ? ', oi.order_id' : ''),
254
+ ' FROM teleport_order_items oi JOIN released r ON oi.order_id = r.id',
255
+ ' WHERE oi.quantity > 0',
256
+ ' UNION ALL',
257
+ " SELECT CASE WHEN x.kind = 'product' THEN x.id END, CASE WHEN x.kind = 'variant' THEN x.id END, x.qty" +
258
+ (withOrderId ? ', ro.id' : ''),
259
+ ' FROM teleport_orders ro JOIN released r ON ro.id = r.id',
260
+ // Nested CASE: the JSON is parsed only once it looks like an object.
261
+ ` CROSS JOIN LATERAL jsonb_to_recordset(CASE WHEN ${parseOnly} AND ro.metadata ~ '^\\s*\\{'`,
262
+ ` THEN (CASE WHEN jsonb_typeof(ro.metadata::jsonb -> '${STOCK_RESERVATION_KEY}') = 'array'`,
263
+ ` THEN ro.metadata::jsonb -> '${STOCK_RESERVATION_KEY}' ELSE '[]'::jsonb END)`,
264
+ " ELSE '[]'::jsonb END) AS x(kind text, id text, qty int)",
265
+ ' WHERE x.qty > 0 AND NOT EXISTS (SELECT 1 FROM teleport_order_items oi WHERE oi.order_id = ro.id)',
266
+ '),',
267
+ ].join('\n');
268
+ /** For "Settle Unpaid Order", whose `$1` is the one order it settles. */
269
+ export const STOCK_RESERVATION_RESTORE_LINES = reservationRestoreLines(false, 'ro.id::text = $1::text');
270
+ /**
271
+ * The same lines, each naming its order (the release logs one line per order),
272
+ * for the release, whose `$1` lists the orders whose metadata the checkout read.
273
+ */
274
+ export const STOCK_RESERVATION_RESTORE_LINES_BY_ORDER = reservationRestoreLines(true, 'ro.id::text = ANY($1::text[])');
275
+ /**
276
+ * Whether an order's TEXT `metadata` holds the reservation record, read as
277
+ * JSON (a buyer-typed billing value of the same text is not the record). The
278
+ * text test runs first, so only a row that may hold the key is parsed.
279
+ */
280
+ export const hasReservationRecordSql = (column) => `(CASE WHEN COALESCE(${column}, '') LIKE '%"${STOCK_RESERVATION_KEY}"%' AND ${column} ~ '^\\s*\\{'` +
281
+ ` THEN jsonb_typeof(${column}::jsonb -> '${STOCK_RESERVATION_KEY}') = 'array' ELSE false END)`;
282
+ export const looksLikeSettleUnpaidOrderStatement = (query) => typeof query === 'string' &&
283
+ /^\s*WITH\s+target\s+AS\s*\(/.test(query) &&
284
+ query.indexOf('\nreleased AS (') !== -1 &&
285
+ query.indexOf('\nproduct_restore AS (') !== -1 &&
286
+ (occursOnce(query, SETTLE_UNPAID_LINES_CTE) || occursOnce(query, STOCK_RESERVATION_RESTORE_LINES));
287
+ /** The "Settle Unpaid Order" statement that also restores a reservation without items. */
288
+ export const restoreReservationsInSettleUnpaidStatement = (query) => looksLikeSettleUnpaidOrderStatement(query) && occursOnce(query, SETTLE_UNPAID_LINES_CTE)
289
+ ? query.replace(SETTLE_UNPAID_LINES_CTE, () => STOCK_RESERVATION_RESTORE_LINES)
290
+ : query;
291
+ // The editor's "Settle Unpaid Order" stock writes, word for word: they lock
292
+ // the rows in scan order.
293
+ const SETTLE_UNPAID_RESTORES = [
294
+ 'product_restore AS (',
295
+ ' UPDATE teleport_products p SET quantity = p.quantity + d.qty, updated_at = NOW()',
296
+ ' FROM (SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
297
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id) d',
298
+ ' WHERE p.quantity IS NOT NULL AND p.id::text = d.id',
299
+ ' RETURNING p.id',
300
+ '),',
301
+ 'variant_restore AS (',
302
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + d.qty, updated_at = NOW()',
303
+ ' FROM (SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
304
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id) d',
305
+ ' WHERE v.quantity IS NOT NULL AND v.id::text = d.id',
306
+ ' RETURNING v.id',
307
+ ')',
308
+ ].join('\n');
309
+ // The same writes from rows locked first, products then variants, each in id
310
+ // order: the order the reservation, the release and the late-payment retake
311
+ // take them in (the order row is locked first by all of them, and the
312
+ // voucher and gift card this statement does not touch).
313
+ const SETTLE_UNPAID_SORTED_RESTORES = [
314
+ 'product_need AS (',
315
+ ' SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
316
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id',
317
+ '),',
318
+ 'variant_need AS (',
319
+ ' SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
320
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id',
321
+ '),',
322
+ 'product_locks AS (',
323
+ ' SELECT p.id, n.qty FROM teleport_products p JOIN product_need n ON p.id::text = n.id',
324
+ ' WHERE p.quantity IS NOT NULL',
325
+ ' ORDER BY p.id FOR UPDATE OF p',
326
+ '),',
327
+ 'variant_locks AS (',
328
+ ' SELECT v.id, n.qty FROM teleport_product_variants v JOIN variant_need n ON v.id::text = n.id',
329
+ ' WHERE v.quantity IS NOT NULL AND (SELECT COUNT(*) FROM product_locks) >= 0',
330
+ ' ORDER BY v.id FOR UPDATE OF v',
331
+ '),',
332
+ 'product_restore AS (',
333
+ ' UPDATE teleport_products p SET quantity = p.quantity + l.qty, updated_at = NOW()',
334
+ ' FROM product_locks l WHERE p.id = l.id',
335
+ ' RETURNING p.id',
336
+ '),',
337
+ 'variant_restore AS (',
338
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + l.qty, updated_at = NOW()',
339
+ ' FROM variant_locks l WHERE v.id = l.id',
340
+ ' RETURNING v.id',
341
+ ')',
342
+ ].join('\n');
343
+ /** The "Settle Unpaid Order" statement restoring from rows locked in id order; unchanged when drifted or done. */
344
+ export const lockSettleUnpaidRestoresInIdOrder = (query) => looksLikeSettleUnpaidOrderStatement(query) && occursOnce(query, SETTLE_UNPAID_RESTORES)
345
+ ? query.replace(SETTLE_UNPAID_RESTORES, () => SETTLE_UNPAID_SORTED_RESTORES)
346
+ : query;
347
+ // ────────────────────────────────────────────────────────────────────
348
+ // Releasing reservations whose checkout never reached a payment page
349
+ // ────────────────────────────────────────────────────────────────────
350
+ /**
351
+ * How long a reserving order may wait for a payment page, how many one pass
352
+ * releases, and how long after its last write (the checkout stamps the order
353
+ * right before it asks the provider for a page) it is left alone, so a page
354
+ * whose record is still on its way is never released under the buyer.
355
+ */
356
+ export const STALLED_RESERVATION_RELEASE = {
357
+ holdMinutes: 30,
358
+ batchSize: 10,
359
+ quietMinutes: 2,
360
+ /** How many candidates the checkout reads per pass, so unreadable rows never fill a batch. */
361
+ candidateLimit: 50,
362
+ };
363
+ // Which orders a pass may release, apart from the reservation record itself:
364
+ // pending and unpaid, no payment session (no attempt reference, no payment
365
+ // reference) on a table that can record one, not a store-billed renewal,
366
+ // placed `holdMinutes` ago and written to in none of the last `quietMinutes`.
367
+ const stalledOrderConditions = (holdMinutes) => [
368
+ " WHERE LOWER(COALESCE(o.status, '')) = 'pending'",
369
+ " AND LOWER(COALESCE(o.payment_status, '')) IN ('', 'unpaid', 'pending')",
370
+ " AND COALESCE(o.payment_intent_id, '') = ''",
371
+ " AND COALESCE(to_jsonb(o) ->> 'payment_attempt_ref', '') = ''",
372
+ // A store whose table predates the column records no checkout, so an
373
+ // order there may have one open: it is never released here.
374
+ " AND (to_jsonb(o) -> 'payment_attempt_ref') IS NOT NULL",
375
+ " AND COALESCE(to_jsonb(o) ->> 'provider_invoice_id', '') NOT LIKE 'store:%'",
376
+ ` AND o.created_at < NOW() - make_interval(mins => ${Math.max(1, Math.floor(holdMinutes))})`,
377
+ ` AND (o.updated_at IS NULL OR o.updated_at < NOW() - make_interval(mins => ${STALLED_RESERVATION_RELEASE.quietMinutes}))`,
378
+ " AND o.created_at > NOW() - INTERVAL '30 days'",
379
+ ];
380
+ /**
381
+ * The orders a pass may release, with their metadata as text, oldest first,
382
+ * nothing parsed and nothing locked. The checkout parses each one's metadata
383
+ * itself (a malformed row would otherwise fail the whole release on Postgres
384
+ * versions without a safe JSON test) and releases only the readable ones.
385
+ */
386
+ export const buildStalledReservationCandidatesQuery = (holdMinutes = STALLED_RESERVATION_RELEASE.holdMinutes) => [
387
+ 'SELECT o.id::text AS id, o.metadata',
388
+ ' FROM teleport_orders o',
389
+ ...stalledOrderConditions(holdMinutes),
390
+ ` AND COALESCE(o.metadata, '') LIKE '%"${STOCK_RESERVATION_KEY}"%'`,
391
+ ' ORDER BY o.created_at ASC',
392
+ ` LIMIT ${STALLED_RESERVATION_RELEASE.candidateLimit}`,
393
+ ].join('\n');
394
+ // One system "order-cancelled" line per released order, keyed as the shared
395
+ // writer keys an order's cancellation (`order-cancelled:<order id>`, the key
396
+ // "Settle Unpaid Order" writes too): its units were put back when any tracked
397
+ // row took them, which the editor reads before it restocks or accepts a late
398
+ // payment for the order.
399
+ const releasedLogLines = (log) => {
400
+ if (log === 'none') {
401
+ return [];
402
+ }
403
+ const columns = log === 'entity'
404
+ ? 'event_type, dedupe_key, order_id, entity_type, entity_id, payload, actor_type, status'
405
+ : 'event_type, dedupe_key, order_id, payload, actor_type, status';
406
+ const entity = log === 'entity' ? " 'order', r.id::text," : '';
407
+ return [
408
+ ',',
409
+ 'logged AS (',
410
+ ` INSERT INTO teleport_events (${columns})`,
411
+ ` SELECT 'order-cancelled', 'order-cancelled:' || r.id::text, r.id,${entity}`,
412
+ " json_build_object('reason', 'expired',",
413
+ " '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)",
414
+ ' OR EXISTS (SELECT 1 FROM lines l JOIN variant_locks vl ON vl.id::text = l.variant_id WHERE l.order_id = r.id)',
415
+ " THEN 'true' ELSE 'false' END,",
416
+ " 'unitCount', (SELECT COALESCE(SUM(l.quantity), 0) FROM lines l WHERE l.order_id = r.id)::text)::text,",
417
+ " 'system', 'recorded'",
418
+ ' FROM released r',
419
+ ' ON CONFLICT (dedupe_key) DO NOTHING',
420
+ ' RETURNING id',
421
+ ')',
422
+ ];
423
+ };
424
+ /**
425
+ * Cancels the `pending` orders that reserved stock (they carry the record)
426
+ * but never opened a payment session (no attempt reference, no payment
427
+ * reference) `holdMinutes` after they were placed, and gives back, in the
428
+ * same statement and per order, what each one held: its stock (from its items,
429
+ * or from the record when it has none), its voucher redemption and its
430
+ * gift-card tender, and writes each one's cancellation line (`log`). A
431
+ * store-billed renewal is left to the billing run, a store whose order table
432
+ * cannot record a checkout is left alone, and so is an order written in the
433
+ * last `quietMinutes` (its payment page may be opening). Rows another
434
+ * transaction holds are skipped, so a checkout in flight, or another pass, is
435
+ * never waited on. A checkout recorded for the order first keeps it pending,
436
+ * and one opened after the release is never recorded, so it is closed and
437
+ * never shown. An order cancelled here that is paid after all has its stock
438
+ * taken again by "Process Payment Webhook" when it is still there, and is
439
+ * otherwise recorded as a late payment for the merchant.
440
+ *
441
+ * Locks, after the orders: vouchers, gift cards, products, variants, each in
442
+ * id order — the order the checkout's reservation takes them in — so the two
443
+ * never deadlock.
444
+ *
445
+ * The provider's own events and the scheduled "Release Abandoned Checkouts"
446
+ * run settle orders that DID open a payment page; nothing triggers for one
447
+ * that did not, so the checkout runs this pass itself (`cart-price-order`).
448
+ */
449
+ export const buildStalledReservationReleaseQuery = (holdMinutes = STALLED_RESERVATION_RELEASE.holdMinutes, batchSize = STALLED_RESERVATION_RELEASE.batchSize, log = 'entity') => [
450
+ 'WITH stale AS (',
451
+ ' SELECT o.id',
452
+ ' FROM teleport_orders o',
453
+ ...stalledOrderConditions(holdMinutes),
454
+ // `$1`: the orders whose metadata the checkout read as JSON. Only theirs
455
+ // is parsed here, whatever order the planner evaluates the rest in.
456
+ ' AND o.id::text = ANY($1::text[])',
457
+ ` AND (CASE WHEN o.id::text = ANY($1::text[]) THEN ${hasReservationRecordSql('o.metadata')} ELSE false END)`,
458
+ ' ORDER BY o.created_at ASC',
459
+ ` LIMIT ${Math.max(1, Math.floor(batchSize))}`,
460
+ ' FOR UPDATE SKIP LOCKED',
461
+ '),',
462
+ 'released AS (',
463
+ ' UPDATE teleport_orders o',
464
+ " SET status = 'cancelled', payment_status = 'failed', updated_at = NOW()",
465
+ ' FROM stale s',
466
+ ' WHERE o.id = s.id',
467
+ " RETURNING o.id, COALESCE(NULLIF(to_jsonb(o) ->> 'order_number', ''), o.id::text) AS order_ref,",
468
+ " to_jsonb(o) ->> 'gift_card_id' AS gift_card_id,",
469
+ " COALESCE((to_jsonb(o) ->> 'gift_card_amount')::numeric, 0) AS gift_card_amount,",
470
+ " UPPER(COALESCE(o.currency, '')) AS currency",
471
+ '),',
472
+ STOCK_RESERVATION_RESTORE_LINES_BY_ORDER,
473
+ 'product_need AS (',
474
+ ' SELECT product_id AS id, SUM(quantity)::int AS qty FROM lines',
475
+ ' WHERE variant_id IS NULL AND product_id IS NOT NULL GROUP BY product_id',
476
+ '),',
477
+ 'variant_need AS (',
478
+ ' SELECT variant_id AS id, SUM(quantity)::int AS qty FROM lines',
479
+ ' WHERE variant_id IS NOT NULL GROUP BY variant_id',
480
+ '),',
481
+ 'voucher_dropped AS (',
482
+ ' DELETE FROM teleport_voucher_redemptions vr USING released r WHERE vr.order_id = r.id',
483
+ ' RETURNING vr.voucher_id',
484
+ '),',
485
+ 'held_vouchers AS (',
486
+ ' SELECT v.id FROM teleport_vouchers v',
487
+ ' WHERE v.id IN (SELECT voucher_id FROM voucher_dropped)',
488
+ ' ORDER BY v.id FOR UPDATE',
489
+ '),',
490
+ 'card AS (',
491
+ ' SELECT g.id, g.balance, r.gift_card_amount AS amount, r.id AS order_id, r.order_ref',
492
+ ' FROM teleport_gift_cards g JOIN released r ON g.id::text = r.gift_card_id',
493
+ " WHERE r.gift_card_amount > 0 AND g.status = 'active'",
494
+ ' AND (g.expires_at IS NULL OR g.expires_at > NOW())',
495
+ " AND (r.currency = '' OR UPPER(g.currency) = r.currency)",
496
+ ' AND (SELECT COUNT(*) FROM held_vouchers) >= 0',
497
+ ' ORDER BY g.id FOR UPDATE OF g',
498
+ '),',
499
+ 'product_locks AS (',
500
+ ' SELECT p.id, n.qty FROM teleport_products p JOIN product_need n ON p.id::text = n.id',
501
+ ' WHERE p.quantity IS NOT NULL AND (SELECT COUNT(*) FROM card) >= 0',
502
+ ' ORDER BY p.id FOR UPDATE OF p',
503
+ '),',
504
+ 'variant_locks AS (',
505
+ ' SELECT v.id, n.qty FROM teleport_product_variants v JOIN variant_need n ON v.id::text = n.id',
506
+ ' WHERE v.quantity IS NOT NULL AND (SELECT COUNT(*) FROM product_locks) >= 0',
507
+ ' ORDER BY v.id FOR UPDATE OF v',
508
+ '),',
509
+ 'product_restore AS (',
510
+ ' UPDATE teleport_products p SET quantity = p.quantity + l.qty, updated_at = NOW()',
511
+ ' FROM product_locks l WHERE p.id = l.id',
512
+ ' RETURNING p.id',
513
+ '),',
514
+ 'variant_restore AS (',
515
+ ' UPDATE teleport_product_variants v SET quantity = v.quantity + l.qty, updated_at = NOW()',
516
+ ' FROM variant_locks l WHERE v.id = l.id',
517
+ ' RETURNING v.id',
518
+ '),',
519
+ 'voucher_restored AS (',
520
+ ' UPDATE teleport_vouchers v',
521
+ ' SET usage_count = GREATEST(COALESCE(v.usage_count, 0) - d.n, 0), updated_at = NOW()',
522
+ ' FROM (SELECT voucher_id, COUNT(*)::int AS n FROM voucher_dropped GROUP BY voucher_id) d',
523
+ ' JOIN held_vouchers h ON h.id = d.voucher_id',
524
+ ' WHERE v.id = d.voucher_id',
525
+ ' RETURNING v.id',
526
+ '),',
527
+ 'card_ledger AS (',
528
+ ' INSERT INTO teleport_gift_card_transactions',
529
+ ' (gift_card_id, order_id, type, amount, balance_after, dedupe_key, note)',
530
+ " SELECT card.id, card.order_id, 'release', card.amount, card.balance + card.amount,",
531
+ " 'release:' || card.order_id::text, 'Released from unpaid order ' || card.order_ref",
532
+ ' FROM card',
533
+ ' ON CONFLICT (dedupe_key) DO NOTHING',
534
+ ' RETURNING gift_card_id, amount',
535
+ '),',
536
+ 'card_credited AS (',
537
+ ' UPDATE teleport_gift_cards g SET balance = g.balance + c.amount, updated_at = NOW()',
538
+ ' FROM (SELECT gift_card_id, SUM(amount) AS amount FROM card_ledger GROUP BY gift_card_id) c',
539
+ ' WHERE g.id = c.gift_card_id',
540
+ ' RETURNING g.id',
541
+ ')' + releasedLogLines(log).join('\n'),
542
+ 'SELECT',
543
+ ' (SELECT COUNT(*) FROM released) AS released,',
544
+ ' (SELECT COALESCE(SUM(quantity), 0) FROM lines) AS units,',
545
+ ' (SELECT COUNT(*) FROM product_restore) + (SELECT COUNT(*) FROM variant_restore) AS restocked_rows,',
546
+ ' (SELECT COUNT(*) FROM voucher_dropped) AS vouchers_released,',
547
+ ' (SELECT COUNT(*) FROM card_credited) AS gift_cards_released' +
548
+ // The data API wakes the automations only for a pass that logged a line.
549
+ (log === 'none' ? '' : ',\n (SELECT COUNT(*) FROM logged) AS claimed'),
550
+ ].join('\n');
551
+ /** The forms the checkout tries, in order: a ledger with the record columns, an older one, none. */
552
+ export const buildStalledReservationReleaseQueries = () => ['entity', 'plain', 'none'].map((log) => buildStalledReservationReleaseQuery(STALLED_RESERVATION_RELEASE.holdMinutes, STALLED_RESERVATION_RELEASE.batchSize, log));
553
+ const stockDeltaParam = (priceNodeId, key) => ({
554
+ path: [priceNodeId, 'stockDeltas', key],
555
+ type: 'workflowContext',
556
+ nodeId: priceNodeId,
557
+ });
558
+ /**
559
+ * The stock can be reserved with the order only when the order's units are
560
+ * known on the server and the workflow's own decrement can be stopped from
561
+ * taking them a second time: every order decrement in it is the parameterised
562
+ * chain step (re-baked by `rewriteParameterizedStockChainInNodes`).
563
+ */
564
+ const canReserveStock = (nodes) => {
565
+ if (!isParameterizedDecrementChainRewritable(nodes)) {
566
+ return false;
567
+ }
568
+ return nodes.every((node) => {
569
+ var _a, _b;
570
+ if (!node || (node.type !== 'data-raw-query' && node.type !== 'general-custom-js')) {
571
+ return true;
572
+ }
573
+ if (node.type === 'data-raw-query' && looksLikeOrderRedemptionStatement((_a = node.config) === null || _a === void 0 ? void 0 : _a.query)) {
574
+ return true;
575
+ }
576
+ const { category } = classifyStockWriteSite('Place Order', node);
577
+ if (category !== 'order-decrement') {
578
+ return true;
579
+ }
580
+ return node.type === 'data-raw-query' && isParameterizedStockDecrementQuery((_b = node.config) === null || _b === void 0 ? void 0 : _b.query);
581
+ });
582
+ };
583
+ /**
584
+ * Re-bakes the settle write and the redemption statement of one workflow (or
585
+ * custom node) in place. Returns whether the redemption statement now
586
+ * reserves the order's stock, which the stock chain rewrite needs to know.
587
+ */
588
+ export const guardPlaceOrderStatementsInNodes = (nodes, ownerName, options, summary) => {
589
+ if (!Array.isArray(nodes)) {
590
+ return { stockReserved: false };
591
+ }
592
+ const list = nodes;
593
+ const priceNode = list.find((node) => node && node.type === 'cart-price-order' && typeof node.id === 'string' && node.id);
594
+ let stockReserved = false;
595
+ for (const node of list) {
596
+ if (!node || node.type !== 'data-raw-query' || !node.config) {
597
+ continue;
598
+ }
599
+ const query = node.config.query;
600
+ if (looksLikeSettleOrderStatement(query)) {
601
+ const guarded = guardSettleOrderStatement(query, options);
602
+ if (guarded !== query) {
603
+ node.config.query = guarded;
604
+ summary.settleGuards++;
605
+ }
606
+ continue;
607
+ }
608
+ if (looksLikeSettleUnpaidOrderStatement(query)) {
609
+ const restoring = options.reserveStock
610
+ ? restoreReservationsInSettleUnpaidStatement(query)
611
+ : query;
612
+ if (restoring !== query) {
613
+ summary.reservationRestores++;
614
+ }
615
+ // Whatever the stock settings: its rows are locked in the order every
616
+ // other stock statement takes them in.
617
+ const sorted = lockSettleUnpaidRestoresInIdOrder(restoring);
618
+ if (sorted !== restoring) {
619
+ summary.restoreLockOrders++;
620
+ }
621
+ node.config.query = sorted;
622
+ continue;
623
+ }
624
+ if (!options.reserveStock || !looksLikeOrderRedemptionStatement(query)) {
625
+ continue;
626
+ }
627
+ const params = node.config.params;
628
+ const reserved = reserveStockInRedemptionStatement(query);
629
+ if (!priceNode ||
630
+ !Array.isArray(params) ||
631
+ params.length !== REDEMPTION_PARAM_COUNT ||
632
+ reserved === query ||
633
+ !canReserveStock(list)) {
634
+ summary.skippedReservations++;
635
+ // eslint-disable-next-line no-console
636
+ console.warn('[teleport] place-order guards: "' +
637
+ ownerName +
638
+ '" keeps its stock decrement after the order (its stock cannot be reserved with the order: ' +
639
+ 'no server pricing step, or a redemption or decrement step that has drifted).');
640
+ continue;
641
+ }
642
+ node.config.query = reserved;
643
+ node.config.params = [
644
+ ...params,
645
+ stockDeltaParam(priceNode.id, 'productIds'),
646
+ stockDeltaParam(priceNode.id, 'productQtys'),
647
+ stockDeltaParam(priceNode.id, 'variantIds'),
648
+ stockDeltaParam(priceNode.id, 'variantQtys'),
649
+ ];
650
+ summary.stockReservations++;
651
+ stockReserved = true;
652
+ }
653
+ return { stockReserved };
654
+ };
655
+ //# sourceMappingURL=place-order-guards.js.map