@teleporthq/teleport-plugin-next-workflows 0.43.67 → 0.43.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/_helpers/bind-workflow-utils.ts +16 -1
- package/__tests__/_helpers/fake-fetch.ts +96 -0
- package/__tests__/_helpers/fake-stripe.ts +52 -0
- package/__tests__/_helpers/load-handler.ts +22 -3
- package/__tests__/_helpers/load-invoice-route.ts +75 -0
- package/__tests__/_helpers/load-payment-drivers.ts +69 -0
- package/__tests__/_helpers/load-server-runtime.ts +33 -0
- package/__tests__/_helpers/run-generated-middleware.ts +50 -9
- package/__tests__/admin-form-hydration-target.test.ts +39 -0
- package/__tests__/admin-form-row-hydration.test.ts +58 -0
- package/__tests__/ai-select-database-data-handler.test.ts +14 -3
- package/__tests__/api-route-file-name-segments.test.ts +33 -0
- package/__tests__/app-secret-env.test.ts +55 -0
- package/__tests__/auth-env-secret-preservation.test.ts +22 -3
- package/__tests__/auth-nextauth-url.test.ts +134 -50
- package/__tests__/cart-add-item-kinds.test.ts +259 -0
- package/__tests__/cart-add-item-line-fields.test.ts +328 -0
- package/__tests__/cart-availability-add-to-cart.test.ts +108 -0
- package/__tests__/cart-get-total-discounts.test.ts +499 -0
- package/__tests__/cart-get-total-product-options.test.ts +195 -0
- package/__tests__/cart-get-total-subscriptions.test.ts +221 -0
- package/__tests__/cart-price-order.test.ts +283 -0
- package/__tests__/cart-update-item-quantity-recurring.test.ts +75 -0
- package/__tests__/client-loop-current-item.test.ts +164 -0
- package/__tests__/cron-route-loop-custom-node.test.ts +123 -0
- package/__tests__/cron-route-loop-templateparams.test.ts +7 -0
- package/__tests__/cron-route-verification.test.ts +252 -0
- package/__tests__/custom-js-runtime-base-url.test.ts +64 -0
- package/__tests__/custom-nodes-admin-module.test.ts +310 -0
- package/__tests__/data-api-browser-reads.test.ts +341 -0
- package/__tests__/data-api-low-stock-autofire.test.ts +67 -17
- package/__tests__/data-api-optional-feature-columns.test.ts +240 -0
- package/__tests__/data-api-protected-tables.test.ts +948 -0
- package/__tests__/data-node-not-awaited.test.ts +7 -3
- package/__tests__/data-write-missing-filter.test.ts +119 -0
- package/__tests__/ecommerce-rewriter-product-options.test.ts +143 -0
- package/__tests__/email-locale-senders.test.ts +1 -1
- package/__tests__/file-storage-upload-picked-files.test.ts +20 -0
- package/__tests__/input-debounce-per-field.test.ts +141 -0
- package/__tests__/internal-request-headers.test.ts +7 -3
- package/__tests__/invoice-data-access-replace.test.ts +340 -0
- package/__tests__/invoice-delivery-fee.test.ts +3 -2
- package/__tests__/invoice-generate-hydration.test.ts +20 -12
- package/__tests__/invoice-order-items-settle.test.ts +51 -46
- package/__tests__/invoice-product-options.test.ts +177 -0
- package/__tests__/invoice-regenerate-route.test.ts +488 -0
- package/__tests__/invoice-regional-tax.test.ts +3 -2
- package/__tests__/invoice-reservation.test.ts +195 -0
- package/__tests__/invoice-route-access.test.ts +275 -0
- package/__tests__/invoice-self-call-origin.test.ts +117 -0
- package/__tests__/invoice-tender.test.ts +550 -0
- package/__tests__/legacy-webhook-self-calls.test.ts +187 -0
- package/__tests__/locale-aware-redirects.test.ts +55 -26
- package/__tests__/loop-collection-unwrap.test.ts +6 -1
- package/__tests__/middleware-subscriber-access.test.ts +269 -0
- package/__tests__/payment-charge-user-earlier-attempt.test.ts +267 -0
- package/__tests__/payment-charge-user-handler-serialization.test.ts +47 -82
- package/__tests__/payment-charge-user-line-descriptions.test.ts +124 -0
- package/__tests__/payment-charge-user-report-refusal.test.ts +105 -0
- package/__tests__/payment-close-checkout-node.test.ts +127 -0
- package/__tests__/payment-driver-close-checkout.test.ts +1163 -0
- package/__tests__/payment-driver-coingate.test.ts +470 -0
- package/__tests__/payment-driver-inspect-checkout.test.ts +648 -0
- package/__tests__/payment-driver-mollie.test.ts +864 -0
- package/__tests__/payment-driver-paddle.test.ts +870 -0
- package/__tests__/payment-driver-paypal-capture.test.ts +158 -0
- package/__tests__/payment-driver-paypal-webhook.test.ts +367 -0
- package/__tests__/payment-driver-razorpay.test.ts +895 -0
- package/__tests__/payment-driver-square.test.ts +977 -0
- package/__tests__/payment-driver-stripe.test.ts +267 -0
- package/__tests__/payment-drivers-module.test.ts +429 -0
- package/__tests__/payment-legacy-webhook-routes.test.ts +588 -0
- package/__tests__/payment-redirect-and-order-notification.test.ts +98 -39
- package/__tests__/payment-refund.test.ts +523 -22
- package/__tests__/payment-subscription-nodes.test.ts +1360 -0
- package/__tests__/payment-webhook-route.test.ts +523 -0
- package/__tests__/paypal-webhook-signature-verification.test.ts +205 -0
- package/__tests__/prune-context-oversized-leaf.test.ts +1 -0
- package/__tests__/prune-context-state-keys.test.ts +89 -0
- package/__tests__/push-node-handlers.test.ts +291 -0
- package/__tests__/route-changed-trigger.test.ts +40 -0
- package/__tests__/runtime-storage-upload-access.test.ts +255 -0
- package/__tests__/security-runtime-shadow.test.ts +103 -1
- package/__tests__/segment-reply-changed-keys.test.ts +146 -0
- package/__tests__/segment-state-keys-emission.test.ts +185 -0
- package/__tests__/segment-state-needs.test.ts +102 -0
- package/__tests__/server-segment-context-integrity.test.ts +210 -0
- package/__tests__/server-step-signing.test.ts +371 -0
- package/__tests__/session-cookie-resolver.test.ts +59 -0
- package/__tests__/stock-decrement-audit.test.ts +17 -0
- package/__tests__/subscriber-access-route.test.ts +406 -0
- package/__tests__/webhook-delivery-lease.test.ts +316 -0
- package/__tests__/workflow-auth-guard.test.ts +253 -2
- package/dist/cjs/admin-form-hydration.d.ts +10 -0
- package/dist/cjs/admin-form-hydration.d.ts.map +1 -0
- package/dist/cjs/admin-form-hydration.js +25 -0
- package/dist/cjs/admin-form-hydration.js.map +1 -0
- package/dist/cjs/api-route-generator.d.ts +19 -3
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +190 -70
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts +4 -1
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +241 -62
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/auth-return/signed-in-destination-code.d.ts +17 -0
- package/dist/cjs/auth-return/signed-in-destination-code.d.ts.map +1 -0
- package/dist/cjs/auth-return/signed-in-destination-code.js +37 -0
- package/dist/cjs/auth-return/signed-in-destination-code.js.map +1 -0
- package/dist/cjs/cart-pricing-preamble.d.ts +12 -0
- package/dist/cjs/cart-pricing-preamble.d.ts.map +1 -0
- package/dist/cjs/cart-pricing-preamble.js +23 -0
- package/dist/cjs/cart-pricing-preamble.js.map +1 -0
- package/dist/cjs/cron-request-verification.d.ts +24 -0
- package/dist/cjs/cron-request-verification.d.ts.map +1 -0
- package/dist/cjs/cron-request-verification.js +84 -0
- package/dist/cjs/cron-request-verification.js.map +1 -0
- package/dist/cjs/custom-node-modules.d.ts +30 -0
- package/dist/cjs/custom-node-modules.d.ts.map +1 -0
- package/dist/cjs/custom-node-modules.js +90 -0
- package/dist/cjs/custom-node-modules.js.map +1 -0
- package/dist/cjs/data-api-route-generator.d.ts +27 -0
- package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
- package/dist/cjs/data-api-route-generator.js +366 -29
- package/dist/cjs/data-api-route-generator.js.map +1 -1
- package/dist/cjs/ecommerce/cart-availability.d.ts.map +1 -1
- package/dist/cjs/ecommerce/cart-availability.js +22 -13
- package/dist/cjs/ecommerce/cart-availability.js.map +1 -1
- package/dist/cjs/ecommerce/stock-decrement.d.ts +2 -1
- package/dist/cjs/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/cjs/ecommerce/stock-decrement.js +6 -0
- package/dist/cjs/ecommerce/stock-decrement.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts +0 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +213 -20
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/index.d.ts +12 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +25 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/invoice/api-routes-code.d.ts +26 -0
- package/dist/cjs/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/cjs/invoice/api-routes-code.js +423 -391
- package/dist/cjs/invoice/api-routes-code.js.map +1 -1
- package/dist/cjs/invoice/data-access-code.d.ts.map +1 -1
- package/dist/cjs/invoice/data-access-code.js +420 -107
- package/dist/cjs/invoice/data-access-code.js.map +1 -1
- package/dist/cjs/invoice/index.d.ts.map +1 -1
- package/dist/cjs/invoice/index.js +24 -0
- package/dist/cjs/invoice/index.js.map +1 -1
- package/dist/cjs/invoice/invoice-assembly-code.d.ts +12 -0
- package/dist/cjs/invoice/invoice-assembly-code.d.ts.map +1 -0
- package/dist/cjs/invoice/invoice-assembly-code.js +517 -0
- package/dist/cjs/invoice/invoice-assembly-code.js.map +1 -0
- package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/cjs/invoice/invoice-html-code.js +111 -9
- package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/cjs/invoice/pdf-service-client-code.js +3 -4
- package/dist/cjs/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/cjs/nodes/account/account-login.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-login.js +4 -3
- package/dist/cjs/nodes/account/account-login.js.map +1 -1
- package/dist/cjs/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-signup.js +7 -4
- package/dist/cjs/nodes/account/account-signup.js.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.js +6 -1
- package/dist/cjs/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts +9 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.js +25 -0
- package/dist/cjs/nodes/browser/browser-get-push-subscription.js.map +1 -0
- package/dist/cjs/nodes/browser/browser-show-notification.d.ts +10 -0
- package/dist/cjs/nodes/browser/browser-show-notification.d.ts.map +1 -1
- package/dist/cjs/nodes/browser/browser-show-notification.js +65 -40
- package/dist/cjs/nodes/browser/browser-show-notification.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.js +21 -31
- package/dist/cjs/nodes/browser/browser-subscribe-to-push.js.map +1 -1
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js +24 -0
- package/dist/cjs/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
- package/dist/cjs/nodes/browser/push-api-access.d.ts +12 -0
- package/dist/cjs/nodes/browser/push-api-access.d.ts.map +1 -0
- package/dist/cjs/nodes/browser/push-api-access.js +19 -0
- package/dist/cjs/nodes/browser/push-api-access.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-add-item.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-add-item.js +174 -10
- package/dist/cjs/nodes/cart/cart-add-item.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-clear.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-clear.js +11 -0
- package/dist/cjs/nodes/cart/cart-clear.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-get-total.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-get-total.js +260 -3
- package/dist/cjs/nodes/cart/cart-get-total.js.map +1 -1
- package/dist/cjs/nodes/cart/cart-price-order.d.ts +3 -0
- package/dist/cjs/nodes/cart/cart-price-order.d.ts.map +1 -0
- package/dist/cjs/nodes/cart/cart-price-order.js +281 -0
- package/dist/cjs/nodes/cart/cart-price-order.js.map +1 -0
- package/dist/cjs/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
- package/dist/cjs/nodes/cart/cart-update-item-quantity.js +7 -0
- package/dist/cjs/nodes/cart/cart-update-item-quantity.js.map +1 -1
- package/dist/cjs/nodes/data/data-count.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-count.js +6 -1
- package/dist/cjs/nodes/data/data-count.js.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.js +11 -1
- package/dist/cjs/nodes/data/data-create-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.js +29 -0
- package/dist/cjs/nodes/data/data-delete-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-raw-query.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-raw-query.js +6 -1
- package/dist/cjs/nodes/data/data-raw-query.js.map +1 -1
- package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-select.js +6 -1
- package/dist/cjs/nodes/data/data-select.js.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.js +29 -0
- package/dist/cjs/nodes/data/data-update-item.js.map +1 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
- package/dist/cjs/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
- package/dist/cjs/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
- package/dist/cjs/nodes/file-storage/file-storage-upload.js +7 -0
- package/dist/cjs/nodes/file-storage/file-storage-upload.js.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/cjs/nodes/general/general-custom-js.js +21 -5
- package/dist/cjs/nodes/general/general-custom-js.js.map +1 -1
- package/dist/cjs/nodes/index.d.ts.map +1 -1
- package/dist/cjs/nodes/index.js +9 -4
- package/dist/cjs/nodes/index.js.map +1 -1
- package/dist/cjs/nodes/payment/payment-billing-portal.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.js +52 -0
- package/dist/cjs/nodes/payment/payment-billing-portal.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/cjs/nodes/payment/payment-charge-user.js +227 -360
- package/dist/cjs/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/cjs/nodes/payment/payment-close-checkout.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.js +141 -0
- package/dist/cjs/nodes/payment/payment-close-checkout.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js +67 -0
- package/dist/cjs/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts +3 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.js +89 -0
- package/dist/cjs/nodes/payment/payment-manage-subscription.js.map +1 -0
- package/dist/cjs/nodes/payment/payment-refund.d.ts.map +1 -1
- package/dist/cjs/nodes/payment/payment-refund.js +50 -404
- package/dist/cjs/nodes/payment/payment-refund.js.map +1 -1
- package/dist/cjs/nodes/push/push-send-notification.d.ts +14 -0
- package/dist/cjs/nodes/push/push-send-notification.d.ts.map +1 -0
- package/dist/cjs/nodes/push/push-send-notification.js +83 -0
- package/dist/cjs/nodes/push/push-send-notification.js.map +1 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.d.ts +16 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.js +471 -0
- package/dist/cjs/payments/drivers/coingate-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.d.ts +16 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.js +623 -0
- package/dist/cjs/payments/drivers/mollie-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.js +683 -0
- package/dist/cjs/payments/drivers/paddle-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.js +1261 -0
- package/dist/cjs/payments/drivers/paypal-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.js +732 -0
- package/dist/cjs/payments/drivers/razorpay-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/square-driver-code.d.ts +14 -0
- package/dist/cjs/payments/drivers/square-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/square-driver-code.js +931 -0
- package/dist/cjs/payments/drivers/square-driver-code.js.map +1 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.d.ts +12 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.d.ts.map +1 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.js +778 -0
- package/dist/cjs/payments/drivers/stripe-driver-code.js.map +1 -0
- package/dist/cjs/payments/index.d.ts +66 -0
- package/dist/cjs/payments/index.d.ts.map +1 -0
- package/dist/cjs/payments/index.js +175 -0
- package/dist/cjs/payments/index.js.map +1 -0
- package/dist/cjs/payments/payment-core-code.d.ts +19 -0
- package/dist/cjs/payments/payment-core-code.d.ts.map +1 -0
- package/dist/cjs/payments/payment-core-code.js +422 -0
- package/dist/cjs/payments/payment-core-code.js.map +1 -0
- package/dist/cjs/payments/payment-driver-code-map.d.ts +4 -0
- package/dist/cjs/payments/payment-driver-code-map.d.ts.map +1 -0
- package/dist/cjs/payments/payment-driver-code-map.js +21 -0
- package/dist/cjs/payments/payment-driver-code-map.js.map +1 -0
- package/dist/cjs/payments/payment-drivers-scope.d.ts +35 -0
- package/dist/cjs/payments/payment-drivers-scope.d.ts.map +1 -0
- package/dist/cjs/payments/payment-drivers-scope.js +56 -0
- package/dist/cjs/payments/payment-drivers-scope.js.map +1 -0
- package/dist/cjs/payments/payment-registry-code.d.ts +8 -0
- package/dist/cjs/payments/payment-registry-code.d.ts.map +1 -0
- package/dist/cjs/payments/payment-registry-code.js +41 -0
- package/dist/cjs/payments/payment-registry-code.js.map +1 -0
- package/dist/cjs/pg-client-code.d.ts +10 -0
- package/dist/cjs/pg-client-code.d.ts.map +1 -1
- package/dist/cjs/pg-client-code.js +27 -1
- package/dist/cjs/pg-client-code.js.map +1 -1
- package/dist/cjs/runtime-storage-generator.d.ts +28 -0
- package/dist/cjs/runtime-storage-generator.d.ts.map +1 -1
- package/dist/cjs/runtime-storage-generator.js +240 -5
- package/dist/cjs/runtime-storage-generator.js.map +1 -1
- package/dist/cjs/secret-collector.d.ts.map +1 -1
- package/dist/cjs/secret-collector.js +8 -3
- package/dist/cjs/secret-collector.js.map +1 -1
- package/dist/cjs/security-scanner.d.ts +10 -1
- package/dist/cjs/security-scanner.d.ts.map +1 -1
- package/dist/cjs/security-scanner.js +19 -1
- package/dist/cjs/security-scanner.js.map +1 -1
- package/dist/cjs/segment-context-needs.d.ts +38 -0
- package/dist/cjs/segment-context-needs.d.ts.map +1 -0
- package/dist/cjs/segment-context-needs.js +129 -0
- package/dist/cjs/segment-context-needs.js.map +1 -0
- package/dist/cjs/segment-splitter.d.ts.map +1 -1
- package/dist/cjs/segment-splitter.js +6 -1
- package/dist/cjs/segment-splitter.js.map +1 -1
- package/dist/cjs/segment-trust.d.ts +50 -0
- package/dist/cjs/segment-trust.d.ts.map +1 -0
- package/dist/cjs/segment-trust.js +115 -0
- package/dist/cjs/segment-trust.js.map +1 -0
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts +19 -0
- package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/cjs/sent-email-log/sent-email-log-code.js +1 -24
- package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/cjs/server-runtime-code.d.ts +34 -0
- package/dist/cjs/server-runtime-code.d.ts.map +1 -0
- package/dist/cjs/server-runtime-code.js +303 -0
- package/dist/cjs/server-runtime-code.js.map +1 -0
- package/dist/cjs/session-cookie-resolver.d.ts +3 -78
- package/dist/cjs/session-cookie-resolver.d.ts.map +1 -1
- package/dist/cjs/session-cookie-resolver.js +7 -276
- package/dist/cjs/session-cookie-resolver.js.map +1 -1
- package/dist/cjs/subscriber-access-route-generator.d.ts +71 -0
- package/dist/cjs/subscriber-access-route-generator.d.ts.map +1 -0
- package/dist/cjs/subscriber-access-route-generator.js +301 -0
- package/dist/cjs/subscriber-access-route-generator.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/webhook-delivery-lease/index.d.ts +8 -0
- package/dist/cjs/webhook-delivery-lease/index.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/index.js +41 -0
- package/dist/cjs/webhook-delivery-lease/index.js.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +151 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js +19 -0
- package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
- package/dist/cjs/webhook-generator.d.ts +1 -1
- package/dist/cjs/webhook-generator.d.ts.map +1 -1
- package/dist/cjs/webhook-generator.js +342 -254
- package/dist/cjs/webhook-generator.js.map +1 -1
- package/dist/cjs/webhook-signature-verification.d.ts +17 -1
- package/dist/cjs/webhook-signature-verification.d.ts.map +1 -1
- package/dist/cjs/webhook-signature-verification.js +182 -27
- package/dist/cjs/webhook-signature-verification.js.map +1 -1
- package/dist/cjs/workflow-auth-generator.d.ts +9 -6
- package/dist/cjs/workflow-auth-generator.d.ts.map +1 -1
- package/dist/cjs/workflow-auth-generator.js +133 -29
- package/dist/cjs/workflow-auth-generator.js.map +1 -1
- package/dist/cjs/workflow-component-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-component-plugin.js +65 -28
- package/dist/cjs/workflow-component-plugin.js.map +1 -1
- package/dist/cjs/workflow-project-plugin.d.ts +13 -0
- package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-project-plugin.js +215 -65
- package/dist/cjs/workflow-project-plugin.js.map +1 -1
- package/dist/esm/admin-form-hydration.d.ts +10 -0
- package/dist/esm/admin-form-hydration.d.ts.map +1 -0
- package/dist/esm/admin-form-hydration.js +21 -0
- package/dist/esm/admin-form-hydration.js.map +1 -0
- package/dist/esm/api-route-generator.d.ts +19 -3
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +189 -70
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts +4 -1
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +241 -62
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/auth-return/signed-in-destination-code.d.ts +17 -0
- package/dist/esm/auth-return/signed-in-destination-code.d.ts.map +1 -0
- package/dist/esm/auth-return/signed-in-destination-code.js +33 -0
- package/dist/esm/auth-return/signed-in-destination-code.js.map +1 -0
- package/dist/esm/cart-pricing-preamble.d.ts +12 -0
- package/dist/esm/cart-pricing-preamble.d.ts.map +1 -0
- package/dist/esm/cart-pricing-preamble.js +19 -0
- package/dist/esm/cart-pricing-preamble.js.map +1 -0
- package/dist/esm/cron-request-verification.d.ts +24 -0
- package/dist/esm/cron-request-verification.d.ts.map +1 -0
- package/dist/esm/cron-request-verification.js +80 -0
- package/dist/esm/cron-request-verification.js.map +1 -0
- package/dist/esm/custom-node-modules.d.ts +30 -0
- package/dist/esm/custom-node-modules.d.ts.map +1 -0
- package/dist/esm/custom-node-modules.js +84 -0
- package/dist/esm/custom-node-modules.js.map +1 -0
- package/dist/esm/data-api-route-generator.d.ts +27 -0
- package/dist/esm/data-api-route-generator.d.ts.map +1 -1
- package/dist/esm/data-api-route-generator.js +365 -28
- package/dist/esm/data-api-route-generator.js.map +1 -1
- package/dist/esm/ecommerce/cart-availability.d.ts.map +1 -1
- package/dist/esm/ecommerce/cart-availability.js +22 -13
- package/dist/esm/ecommerce/cart-availability.js.map +1 -1
- package/dist/esm/ecommerce/stock-decrement.d.ts +2 -1
- package/dist/esm/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/esm/ecommerce/stock-decrement.js +6 -0
- package/dist/esm/ecommerce/stock-decrement.js.map +1 -1
- package/dist/esm/executor-generator.d.ts +0 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +212 -18
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/index.d.ts +12 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/invoice/api-routes-code.d.ts +26 -0
- package/dist/esm/invoice/api-routes-code.d.ts.map +1 -1
- package/dist/esm/invoice/api-routes-code.js +421 -390
- package/dist/esm/invoice/api-routes-code.js.map +1 -1
- package/dist/esm/invoice/data-access-code.d.ts.map +1 -1
- package/dist/esm/invoice/data-access-code.js +420 -107
- package/dist/esm/invoice/data-access-code.js.map +1 -1
- package/dist/esm/invoice/index.d.ts.map +1 -1
- package/dist/esm/invoice/index.js +25 -1
- package/dist/esm/invoice/index.js.map +1 -1
- package/dist/esm/invoice/invoice-assembly-code.d.ts +12 -0
- package/dist/esm/invoice/invoice-assembly-code.d.ts.map +1 -0
- package/dist/esm/invoice/invoice-assembly-code.js +513 -0
- package/dist/esm/invoice/invoice-assembly-code.js.map +1 -0
- package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
- package/dist/esm/invoice/invoice-html-code.js +111 -9
- package/dist/esm/invoice/invoice-html-code.js.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.d.ts.map +1 -1
- package/dist/esm/invoice/pdf-service-client-code.js +3 -4
- package/dist/esm/invoice/pdf-service-client-code.js.map +1 -1
- package/dist/esm/nodes/account/account-login.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-login.js +4 -3
- package/dist/esm/nodes/account/account-login.js.map +1 -1
- package/dist/esm/nodes/account/account-signup.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-signup.js +7 -4
- package/dist/esm/nodes/account/account-signup.js.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.d.ts.map +1 -1
- package/dist/esm/nodes/ai/ai-select-database-data.js +6 -1
- package/dist/esm/nodes/ai/ai-select-database-data.js.map +1 -1
- package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts +9 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.d.ts.map +1 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.js +22 -0
- package/dist/esm/nodes/browser/browser-get-push-subscription.js.map +1 -0
- package/dist/esm/nodes/browser/browser-show-notification.d.ts +10 -0
- package/dist/esm/nodes/browser/browser-show-notification.d.ts.map +1 -1
- package/dist/esm/nodes/browser/browser-show-notification.js +65 -40
- package/dist/esm/nodes/browser/browser-show-notification.js.map +1 -1
- package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts +11 -0
- package/dist/esm/nodes/browser/browser-subscribe-to-push.d.ts.map +1 -1
- package/dist/esm/nodes/browser/browser-subscribe-to-push.js +21 -31
- package/dist/esm/nodes/browser/browser-subscribe-to-push.js.map +1 -1
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts +8 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.d.ts.map +1 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js +21 -0
- package/dist/esm/nodes/browser/browser-unsubscribe-from-push.js.map +1 -0
- package/dist/esm/nodes/browser/push-api-access.d.ts +12 -0
- package/dist/esm/nodes/browser/push-api-access.d.ts.map +1 -0
- package/dist/esm/nodes/browser/push-api-access.js +13 -0
- package/dist/esm/nodes/browser/push-api-access.js.map +1 -0
- package/dist/esm/nodes/cart/cart-add-item.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-add-item.js +174 -10
- package/dist/esm/nodes/cart/cart-add-item.js.map +1 -1
- package/dist/esm/nodes/cart/cart-clear.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-clear.js +11 -0
- package/dist/esm/nodes/cart/cart-clear.js.map +1 -1
- package/dist/esm/nodes/cart/cart-get-total.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-get-total.js +261 -4
- package/dist/esm/nodes/cart/cart-get-total.js.map +1 -1
- package/dist/esm/nodes/cart/cart-price-order.d.ts +3 -0
- package/dist/esm/nodes/cart/cart-price-order.d.ts.map +1 -0
- package/dist/esm/nodes/cart/cart-price-order.js +278 -0
- package/dist/esm/nodes/cart/cart-price-order.js.map +1 -0
- package/dist/esm/nodes/cart/cart-update-item-quantity.d.ts.map +1 -1
- package/dist/esm/nodes/cart/cart-update-item-quantity.js +7 -0
- package/dist/esm/nodes/cart/cart-update-item-quantity.js.map +1 -1
- package/dist/esm/nodes/data/data-count.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-count.js +6 -1
- package/dist/esm/nodes/data/data-count.js.map +1 -1
- package/dist/esm/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-create-item.js +11 -1
- package/dist/esm/nodes/data/data-create-item.js.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.js +29 -0
- package/dist/esm/nodes/data/data-delete-item.js.map +1 -1
- package/dist/esm/nodes/data/data-raw-query.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-raw-query.js +6 -1
- package/dist/esm/nodes/data/data-raw-query.js.map +1 -1
- package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-select.js +6 -1
- package/dist/esm/nodes/data/data-select.js.map +1 -1
- package/dist/esm/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-update-item.js +29 -0
- package/dist/esm/nodes/data/data-update-item.js.map +1 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.d.ts.map +1 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js +7 -1
- package/dist/esm/nodes/ecommerce/ecommerce-generate-invoice.js.map +1 -1
- package/dist/esm/nodes/file-storage/file-storage-upload.d.ts.map +1 -1
- package/dist/esm/nodes/file-storage/file-storage-upload.js +7 -0
- package/dist/esm/nodes/file-storage/file-storage-upload.js.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.d.ts.map +1 -1
- package/dist/esm/nodes/general/general-custom-js.js +21 -5
- package/dist/esm/nodes/general/general-custom-js.js.map +1 -1
- package/dist/esm/nodes/index.d.ts.map +1 -1
- package/dist/esm/nodes/index.js +9 -4
- package/dist/esm/nodes/index.js.map +1 -1
- package/dist/esm/nodes/payment/payment-billing-portal.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-billing-portal.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-billing-portal.js +49 -0
- package/dist/esm/nodes/payment/payment-billing-portal.js.map +1 -0
- package/dist/esm/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/esm/nodes/payment/payment-charge-user.js +227 -360
- package/dist/esm/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/esm/nodes/payment/payment-close-checkout.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-close-checkout.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-close-checkout.js +138 -0
- package/dist/esm/nodes/payment/payment-close-checkout.js.map +1 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js +64 -0
- package/dist/esm/nodes/payment/payment-ensure-subscription-plan.js.map +1 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.d.ts +3 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.d.ts.map +1 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.js +86 -0
- package/dist/esm/nodes/payment/payment-manage-subscription.js.map +1 -0
- package/dist/esm/nodes/payment/payment-refund.d.ts.map +1 -1
- package/dist/esm/nodes/payment/payment-refund.js +50 -404
- package/dist/esm/nodes/payment/payment-refund.js.map +1 -1
- package/dist/esm/nodes/push/push-send-notification.d.ts +14 -0
- package/dist/esm/nodes/push/push-send-notification.d.ts.map +1 -0
- package/dist/esm/nodes/push/push-send-notification.js +80 -0
- package/dist/esm/nodes/push/push-send-notification.js.map +1 -0
- package/dist/esm/payments/drivers/coingate-driver-code.d.ts +16 -0
- package/dist/esm/payments/drivers/coingate-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/coingate-driver-code.js +467 -0
- package/dist/esm/payments/drivers/coingate-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/mollie-driver-code.d.ts +16 -0
- package/dist/esm/payments/drivers/mollie-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/mollie-driver-code.js +619 -0
- package/dist/esm/payments/drivers/mollie-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/paddle-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/paddle-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/paddle-driver-code.js +679 -0
- package/dist/esm/payments/drivers/paddle-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/paypal-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/paypal-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/paypal-driver-code.js +1257 -0
- package/dist/esm/payments/drivers/paypal-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.js +728 -0
- package/dist/esm/payments/drivers/razorpay-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/square-driver-code.d.ts +14 -0
- package/dist/esm/payments/drivers/square-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/square-driver-code.js +927 -0
- package/dist/esm/payments/drivers/square-driver-code.js.map +1 -0
- package/dist/esm/payments/drivers/stripe-driver-code.d.ts +12 -0
- package/dist/esm/payments/drivers/stripe-driver-code.d.ts.map +1 -0
- package/dist/esm/payments/drivers/stripe-driver-code.js +774 -0
- package/dist/esm/payments/drivers/stripe-driver-code.js.map +1 -0
- package/dist/esm/payments/index.d.ts +66 -0
- package/dist/esm/payments/index.d.ts.map +1 -0
- package/dist/esm/payments/index.js +164 -0
- package/dist/esm/payments/index.js.map +1 -0
- package/dist/esm/payments/payment-core-code.d.ts +19 -0
- package/dist/esm/payments/payment-core-code.d.ts.map +1 -0
- package/dist/esm/payments/payment-core-code.js +418 -0
- package/dist/esm/payments/payment-core-code.js.map +1 -0
- package/dist/esm/payments/payment-driver-code-map.d.ts +4 -0
- package/dist/esm/payments/payment-driver-code-map.d.ts.map +1 -0
- package/dist/esm/payments/payment-driver-code-map.js +18 -0
- package/dist/esm/payments/payment-driver-code-map.js.map +1 -0
- package/dist/esm/payments/payment-drivers-scope.d.ts +35 -0
- package/dist/esm/payments/payment-drivers-scope.d.ts.map +1 -0
- package/dist/esm/payments/payment-drivers-scope.js +51 -0
- package/dist/esm/payments/payment-drivers-scope.js.map +1 -0
- package/dist/esm/payments/payment-registry-code.d.ts +8 -0
- package/dist/esm/payments/payment-registry-code.d.ts.map +1 -0
- package/dist/esm/payments/payment-registry-code.js +37 -0
- package/dist/esm/payments/payment-registry-code.js.map +1 -0
- package/dist/esm/pg-client-code.d.ts +10 -0
- package/dist/esm/pg-client-code.d.ts.map +1 -1
- package/dist/esm/pg-client-code.js +25 -0
- package/dist/esm/pg-client-code.js.map +1 -1
- package/dist/esm/runtime-storage-generator.d.ts +28 -0
- package/dist/esm/runtime-storage-generator.d.ts.map +1 -1
- package/dist/esm/runtime-storage-generator.js +239 -4
- package/dist/esm/runtime-storage-generator.js.map +1 -1
- package/dist/esm/secret-collector.d.ts.map +1 -1
- package/dist/esm/secret-collector.js +8 -3
- package/dist/esm/secret-collector.js.map +1 -1
- package/dist/esm/security-scanner.d.ts +10 -1
- package/dist/esm/security-scanner.d.ts.map +1 -1
- package/dist/esm/security-scanner.js +18 -0
- package/dist/esm/security-scanner.js.map +1 -1
- package/dist/esm/segment-context-needs.d.ts +38 -0
- package/dist/esm/segment-context-needs.d.ts.map +1 -0
- package/dist/esm/segment-context-needs.js +125 -0
- package/dist/esm/segment-context-needs.js.map +1 -0
- package/dist/esm/segment-splitter.d.ts.map +1 -1
- package/dist/esm/segment-splitter.js +6 -1
- package/dist/esm/segment-splitter.js.map +1 -1
- package/dist/esm/segment-trust.d.ts +50 -0
- package/dist/esm/segment-trust.d.ts.map +1 -0
- package/dist/esm/segment-trust.js +111 -0
- package/dist/esm/segment-trust.js.map +1 -0
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts +19 -0
- package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
- package/dist/esm/sent-email-log/sent-email-log-code.js +2 -25
- package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
- package/dist/esm/server-runtime-code.d.ts +34 -0
- package/dist/esm/server-runtime-code.d.ts.map +1 -0
- package/dist/esm/server-runtime-code.js +299 -0
- package/dist/esm/server-runtime-code.js.map +1 -0
- package/dist/esm/session-cookie-resolver.d.ts +3 -78
- package/dist/esm/session-cookie-resolver.d.ts.map +1 -1
- package/dist/esm/session-cookie-resolver.js +7 -274
- package/dist/esm/session-cookie-resolver.js.map +1 -1
- package/dist/esm/subscriber-access-route-generator.d.ts +71 -0
- package/dist/esm/subscriber-access-route-generator.d.ts.map +1 -0
- package/dist/esm/subscriber-access-route-generator.js +292 -0
- package/dist/esm/subscriber-access-route-generator.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/webhook-delivery-lease/index.d.ts +8 -0
- package/dist/esm/webhook-delivery-lease/index.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/index.js +37 -0
- package/dist/esm/webhook-delivery-lease/index.js.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +26 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +147 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts +16 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.d.ts.map +1 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js +16 -0
- package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-scope.js.map +1 -0
- package/dist/esm/webhook-generator.d.ts +1 -1
- package/dist/esm/webhook-generator.d.ts.map +1 -1
- package/dist/esm/webhook-generator.js +342 -254
- package/dist/esm/webhook-generator.js.map +1 -1
- package/dist/esm/webhook-signature-verification.d.ts +17 -1
- package/dist/esm/webhook-signature-verification.d.ts.map +1 -1
- package/dist/esm/webhook-signature-verification.js +179 -25
- package/dist/esm/webhook-signature-verification.js.map +1 -1
- package/dist/esm/workflow-auth-generator.d.ts +9 -6
- package/dist/esm/workflow-auth-generator.d.ts.map +1 -1
- package/dist/esm/workflow-auth-generator.js +132 -28
- package/dist/esm/workflow-auth-generator.js.map +1 -1
- package/dist/esm/workflow-component-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-component-plugin.js +65 -28
- package/dist/esm/workflow-component-plugin.js.map +1 -1
- package/dist/esm/workflow-project-plugin.d.ts +13 -0
- package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-project-plugin.js +212 -63
- package/dist/esm/workflow-project-plugin.js.map +1 -1
- package/package.json +4 -4
- package/src/admin-form-hydration.ts +28 -0
- package/src/api-route-generator.ts +251 -64
- package/src/auth-generator.ts +273 -53
- package/src/auth-return/signed-in-destination-code.ts +32 -0
- package/src/cart-pricing-preamble.ts +22 -0
- package/src/cron-request-verification.ts +79 -0
- package/src/custom-node-modules.ts +102 -0
- package/src/data-api-route-generator.ts +370 -28
- package/src/ecommerce/cart-availability.ts +22 -13
- package/src/ecommerce/stock-decrement.ts +13 -1
- package/src/executor-generator.ts +212 -19
- package/src/index.ts +28 -7
- package/src/invoice/api-routes-code.ts +424 -391
- package/src/invoice/data-access-code.ts +431 -110
- package/src/invoice/index.ts +31 -1
- package/src/invoice/invoice-assembly-code.ts +514 -0
- package/src/invoice/invoice-html-code.ts +111 -9
- package/src/invoice/pdf-service-client-code.ts +3 -4
- package/src/nodes/account/account-login.ts +4 -3
- package/src/nodes/account/account-signup.ts +7 -4
- package/src/nodes/ai/ai-select-database-data.ts +10 -1
- package/src/nodes/browser/browser-get-push-subscription.ts +23 -0
- package/src/nodes/browser/browser-show-notification.ts +61 -38
- package/src/nodes/browser/browser-subscribe-to-push.ts +26 -36
- package/src/nodes/browser/browser-unsubscribe-from-push.ts +22 -0
- package/src/nodes/browser/push-api-access.ts +20 -0
- package/src/nodes/cart/cart-add-item.ts +200 -9
- package/src/nodes/cart/cart-clear.ts +11 -0
- package/src/nodes/cart/cart-get-total.ts +279 -7
- package/src/nodes/cart/cart-price-order.ts +351 -0
- package/src/nodes/cart/cart-update-item-quantity.ts +7 -0
- package/src/nodes/data/data-count.ts +9 -1
- package/src/nodes/data/data-create-item.ts +15 -1
- package/src/nodes/data/data-delete-item.ts +32 -0
- package/src/nodes/data/data-raw-query.ts +9 -1
- package/src/nodes/data/data-select.ts +9 -1
- package/src/nodes/data/data-update-item.ts +32 -0
- package/src/nodes/ecommerce/ecommerce-generate-invoice.ts +11 -1
- package/src/nodes/file-storage/file-storage-upload.ts +8 -0
- package/src/nodes/general/general-custom-js.ts +21 -5
- package/src/nodes/index.ts +16 -6
- package/src/nodes/payment/payment-billing-portal.ts +51 -0
- package/src/nodes/payment/payment-charge-user.ts +236 -442
- package/src/nodes/payment/payment-close-checkout.ts +137 -0
- package/src/nodes/payment/payment-ensure-subscription-plan.ts +66 -0
- package/src/nodes/payment/payment-manage-subscription.ts +89 -0
- package/src/nodes/payment/payment-refund.ts +52 -467
- package/src/nodes/payment-drivers-global.d.ts +13 -0
- package/src/nodes/push/push-send-notification.ts +83 -0
- package/src/nodes/workflow-utils-global.d.ts +5 -0
- package/src/payments/drivers/coingate-driver-code.ts +466 -0
- package/src/payments/drivers/mollie-driver-code.ts +618 -0
- package/src/payments/drivers/paddle-driver-code.ts +678 -0
- package/src/payments/drivers/paypal-driver-code.ts +1256 -0
- package/src/payments/drivers/razorpay-driver-code.ts +727 -0
- package/src/payments/drivers/square-driver-code.ts +926 -0
- package/src/payments/drivers/stripe-driver-code.ts +773 -0
- package/src/payments/index.ts +204 -0
- package/src/payments/payment-core-code.ts +421 -0
- package/src/payments/payment-driver-code-map.ts +19 -0
- package/src/payments/payment-drivers-scope.ts +66 -0
- package/src/payments/payment-registry-code.ts +38 -0
- package/src/pg-client-code.ts +30 -0
- package/src/runtime-storage-generator.ts +241 -4
- package/src/secret-collector.ts +8 -3
- package/src/security-scanner.ts +22 -0
- package/src/segment-context-needs.ts +148 -0
- package/src/segment-splitter.ts +6 -1
- package/src/segment-trust.ts +170 -0
- package/src/sent-email-log/sent-email-log-code.ts +2 -32
- package/src/server-runtime-code.ts +298 -0
- package/src/session-cookie-resolver.ts +9 -277
- package/src/subscriber-access-route-generator.ts +351 -0
- package/src/types.ts +6 -0
- package/src/webhook-delivery-lease/index.ts +44 -0
- package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +151 -0
- package/src/webhook-delivery-lease/webhook-delivery-lease-scope.ts +18 -0
- package/src/webhook-generator.ts +359 -260
- package/src/webhook-signature-verification.ts +180 -25
- package/src/workflow-auth-generator.ts +137 -28
- package/src/workflow-component-plugin.ts +77 -20
- package/src/workflow-project-plugin.ts +247 -44
- package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-cancel-plan.js +0 -33
- package/dist/cjs/nodes/payment/payment-cancel-plan.js.map +0 -1
- package/dist/cjs/nodes/payment/payment-create-subscription.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-create-subscription.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-create-subscription.js +0 -41
- package/dist/cjs/nodes/payment/payment-create-subscription.js.map +0 -1
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js +0 -45
- package/dist/cjs/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
- package/dist/esm/nodes/payment/payment-cancel-plan.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-cancel-plan.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-cancel-plan.js +0 -30
- package/dist/esm/nodes/payment/payment-cancel-plan.js.map +0 -1
- package/dist/esm/nodes/payment/payment-create-subscription.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-create-subscription.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-create-subscription.js +0 -38
- package/dist/esm/nodes/payment/payment-create-subscription.js.map +0 -1
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts +0 -3
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.d.ts.map +0 -1
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.js +0 -42
- package/dist/esm/nodes/payment/payment-subscribe-to-plan.js.map +0 -1
- package/src/nodes/payment/payment-cancel-plan.ts +0 -33
- package/src/nodes/payment/payment-create-subscription.ts +0 -42
- package/src/nodes/payment/payment-subscribe-to-plan.ts +0 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes-code.js","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"api-routes-code.js","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":";;;AACA,wEAAqF;AACrF,wEAA+D;AAE/D;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,CAAA;AAErC;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,GAAG,IAAA,kEAAwC,GAAE;EACvE,4CAAkB;;4BAEQ,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC7D,CAAA;AAEK,MAAM,gCAAgC,GAAG,CAAC,QAA6B,EAAU,EAAE;;IACxF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAA;IAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,KAAK,KAAK,CAAA;IAC7D,MAAM,YAAY,GAAG,CAAA,MAAA,QAAQ,CAAC,aAAa,0CAAE,OAAO,MAAK,IAAI,CAAA;IAE7D,OAAO;;;;;;;;;;;;;;;;EAiBP,YAAY;QACV,CAAC,CAAC;;gEAE0D;QAC5D,CAAC,CAAC,EACN;;uBAEuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;EAK3C,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2MnB,YAAY;QACV,CAAC,CAAC;;;;;;;;;;CAUL;QACG,CAAC,CAAC,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEE,YAAY;QACV,CAAC,CAAC;;;;;;;;;;;;;;;CAeL;QACG,CAAC,CAAC;;CAGN;;;;;;;;;;;EAYE,YAAY;QACV,CAAC,CAAC;;;CAGL;QACG,CAAC,CAAC,EACN;;;;;;;;;;;;;;;;;;;;EAqBE,YAAY;QACV,CAAC,CAAC;CACL;QACG,CAAC,CAAC,EACN;;;;CAIC,CAAA;AACD,CAAC,CAAA;AAtYY,QAAA,gCAAgC,oCAsY5C;AAED,oFAAoF;AACpF,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAEpD;;;;;;;;;;;;;;;GAeG;AACI,MAAM,kCAAkC,GAAG,GAAW,EAAE;IAC7D,OAAO;;;;;;;;;;EAUP,IAAA,kEAAwC,GAAE;EAC1C,4CAAkB;;iCAEa,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMxE,CAAA;AACD,CAAC,CAAA;AAnNY,QAAA,kCAAkC,sCAmN9C;AAED;;;;;;;;GAQG;AACI,MAAM,2BAA2B,GAAG,GAAW,EAAE;IACtD,OAAO;;;;;;;EAOP,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EpB,CAAA;AACD,CAAC,CAAA;AAtFY,QAAA,2BAA2B,+BAsFvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhF,eAAO,MAAM,sBAAsB,aACvB,mBAAmB,kBACb,cAAc,GAAG,IAAI,oBACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAC/C,
|
|
1
|
+
{"version":3,"file":"data-access-code.d.ts","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhF,eAAO,MAAM,sBAAsB,aACvB,mBAAmB,kBACb,cAAc,GAAG,IAAI,oBACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAC/C,MA2CF,CAAA;AAgqBD,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,MAsItD,CAAA"}
|
|
@@ -14,26 +14,34 @@ const generateDataAccessCode = (settings, dataSourceType, dataSourceConfig) => {
|
|
|
14
14
|
|
|
15
15
|
${generateConnectionCode(dsType, dataSourceConfig)}
|
|
16
16
|
|
|
17
|
-
${generateInsertInvoiceCode(dsType, invoicesTable)}
|
|
18
|
-
|
|
19
17
|
${generateInsertInvoiceItemsCode(dsType, invoiceItemsTable)}
|
|
20
18
|
|
|
19
|
+
${generateReserveInvoiceCode(dsType, invoicesTable)}
|
|
20
|
+
|
|
21
|
+
${generateClaimStaleInvoiceCode(dsType, invoicesTable)}
|
|
22
|
+
|
|
21
23
|
${generateGetInvoiceByIdCode(dsType, invoicesTable)}
|
|
22
24
|
|
|
23
25
|
${generateUpdateInvoiceCode(dsType, invoicesTable)}
|
|
24
26
|
|
|
25
|
-
${
|
|
27
|
+
${generateStoreInvoicePdfCode(dsType)}
|
|
26
28
|
|
|
27
29
|
${generateGetOrderWithItemsCode(dsType)}
|
|
28
30
|
|
|
31
|
+
${generateReplaceInvoiceCode(dsType, invoicesTable, invoiceItemsTable)}
|
|
32
|
+
|
|
33
|
+
${generateLinkOrderToInvoiceCode(dsType)}
|
|
34
|
+
|
|
29
35
|
module.exports = {
|
|
30
36
|
getClient: getClient,
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
reserveInvoice: reserveInvoice,
|
|
38
|
+
claimStaleInvoice: claimStaleInvoice,
|
|
39
|
+
storeInvoicePdf: storeInvoicePdf,
|
|
33
40
|
getInvoiceById: getInvoiceById,
|
|
34
41
|
updateInvoice: updateInvoice,
|
|
35
|
-
getNextInvoiceNumber: getNextInvoiceNumber,
|
|
36
42
|
getOrderWithItems: getOrderWithItems,
|
|
43
|
+
replaceInvoice: replaceInvoice,
|
|
44
|
+
linkOrderToInvoice: linkOrderToInvoice,
|
|
37
45
|
};
|
|
38
46
|
`;
|
|
39
47
|
};
|
|
@@ -141,42 +149,207 @@ function getClient() {
|
|
|
141
149
|
return _client;
|
|
142
150
|
}`;
|
|
143
151
|
}
|
|
144
|
-
|
|
152
|
+
// Issuing an invoice takes its number and writes the row that holds it as one
|
|
153
|
+
// step, before the PDF is rendered: the number is read and the row written
|
|
154
|
+
// under one lock (Postgres: a transaction-scoped advisory lock; MySQL: a named
|
|
155
|
+
// lock), so two orders paid in the same second never print the same number.
|
|
156
|
+
// The same lock keeps one invoice per order: a second request for an order
|
|
157
|
+
// that already has one — a provider delivering a slow webhook again while the
|
|
158
|
+
// first delivery still renders — gets that invoice back (`created: false`)
|
|
159
|
+
// instead of issuing another. Every dialect writes through
|
|
160
|
+
// `writeInvoiceRecord`, which retries without a column the database rejected
|
|
161
|
+
// as unknown — see `missingOptionalInvoiceColumn` in the record-mapping code.
|
|
162
|
+
function generateReserveInvoiceCode(dsType, table) {
|
|
163
|
+
const formatNumber = `
|
|
164
|
+
function formatInvoiceNumber(prefix, lastNumber) {
|
|
165
|
+
var last = Number(lastNumber);
|
|
166
|
+
return prefix + String((isFinite(last) && last > 0 ? Math.floor(last) : 0) + 1).padStart(4, '0');
|
|
167
|
+
}`;
|
|
145
168
|
if (dsType === 'supabase') {
|
|
146
|
-
return
|
|
147
|
-
|
|
169
|
+
return `${formatNumber}
|
|
170
|
+
|
|
171
|
+
// PostgREST holds no lock across requests: the order's invoice is looked up
|
|
172
|
+
// right before one is issued, which leaves a twin request only the moment
|
|
173
|
+
// between the lookup and the insert.
|
|
174
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
148
175
|
var client = getClient();
|
|
149
|
-
|
|
150
|
-
|
|
176
|
+
if (invoiceData.orderId) {
|
|
177
|
+
var held = await client.from('${table}').select('*').eq('order_id', invoiceData.orderId)
|
|
178
|
+
.order('created_at', { ascending: true }).limit(1);
|
|
179
|
+
if (held.error) throw new Error(held.error.message);
|
|
180
|
+
if (held.data && held.data.length > 0) return { invoice: held.data[0], created: false };
|
|
181
|
+
}
|
|
182
|
+
var last = await client.from('${table}').select('invoice_number').like('invoice_number', prefix + '%')
|
|
183
|
+
.order('created_at', { ascending: false }).limit(1);
|
|
184
|
+
if (last.error) throw new Error(last.error.message);
|
|
185
|
+
var lastNumber = last.data && last.data[0] ? parseInt(String(last.data[0].invoice_number).slice(prefix.length), 10) : 0;
|
|
186
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, lastNumber);
|
|
187
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
188
|
+
var result = await client.from('${table}').insert(record).select().single();
|
|
189
|
+
if (result.error) throw new Error(result.error.message);
|
|
190
|
+
return result.data;
|
|
191
|
+
});
|
|
192
|
+
await insertInvoiceItems(row.id, items);
|
|
193
|
+
return { invoice: row, created: true };
|
|
194
|
+
}`;
|
|
195
|
+
}
|
|
196
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
197
|
+
return `${formatNumber}
|
|
198
|
+
|
|
199
|
+
var INVOICE_ISSUE_LOCK = '${table}:issue';
|
|
200
|
+
|
|
201
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
202
|
+
var conn = await getClient().getConnection();
|
|
203
|
+
var locked = false;
|
|
204
|
+
try {
|
|
205
|
+
var [lockRows] = await conn.execute('SELECT GET_LOCK(?, 30) AS acquired', [INVOICE_ISSUE_LOCK]);
|
|
206
|
+
locked = !!(lockRows[0] && Number(lockRows[0].acquired) === 1);
|
|
207
|
+
if (!locked) throw new Error('Another invoice is being issued; the request can be sent again.');
|
|
208
|
+
await conn.beginTransaction();
|
|
209
|
+
try {
|
|
210
|
+
if (invoiceData.orderId) {
|
|
211
|
+
var [heldRows] = await conn.execute(
|
|
212
|
+
'SELECT * FROM ${table} WHERE order_id = ? ORDER BY created_at ASC LIMIT 1',
|
|
213
|
+
[String(invoiceData.orderId)]
|
|
214
|
+
);
|
|
215
|
+
if (heldRows.length > 0) {
|
|
216
|
+
await conn.commit();
|
|
217
|
+
return { invoice: heldRows[0], created: false };
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
var [lastRows] = await conn.execute(
|
|
221
|
+
'SELECT MAX(CAST(SUBSTRING(invoice_number, CHAR_LENGTH(?) + 1) AS UNSIGNED)) AS last_number FROM ${table} ' +
|
|
222
|
+
"WHERE LEFT(invoice_number, CHAR_LENGTH(?)) = ? AND SUBSTRING(invoice_number, CHAR_LENGTH(?) + 1) REGEXP '^[0-9]{1,15}$'",
|
|
223
|
+
[prefix, prefix, prefix, prefix]
|
|
224
|
+
);
|
|
225
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, lastRows[0] && lastRows[0].last_number);
|
|
226
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
227
|
+
var columns = Object.keys(record);
|
|
228
|
+
var quotedCols = columns.map(quoteIdent).join(', ');
|
|
229
|
+
var placeholders = columns.map(function() { return '?'; }).join(', ');
|
|
230
|
+
var values = columns.map(function(k) { return record[k]; });
|
|
231
|
+
await conn.execute('INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')', values);
|
|
232
|
+
return record;
|
|
233
|
+
});
|
|
234
|
+
await insertInvoiceItemRows(conn, row.id, items);
|
|
235
|
+
await conn.commit();
|
|
236
|
+
return { invoice: row, created: true };
|
|
237
|
+
} catch (err) {
|
|
238
|
+
try { await conn.rollback(); } catch (_rollbackErr) {}
|
|
239
|
+
throw err;
|
|
240
|
+
}
|
|
241
|
+
} finally {
|
|
242
|
+
if (locked) {
|
|
243
|
+
try { await conn.execute('SELECT RELEASE_LOCK(?)', [INVOICE_ISSUE_LOCK]); } catch (_releaseErr) {}
|
|
244
|
+
}
|
|
245
|
+
conn.release();
|
|
246
|
+
}
|
|
247
|
+
}`;
|
|
248
|
+
}
|
|
249
|
+
return `${formatNumber}
|
|
250
|
+
|
|
251
|
+
var INVOICE_ISSUE_LOCK = '${table}:issue';
|
|
252
|
+
|
|
253
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
254
|
+
var client = await getClient().connect();
|
|
255
|
+
try {
|
|
256
|
+
await client.query('BEGIN');
|
|
257
|
+
await client.query('SELECT pg_advisory_xact_lock(hashtext($1))', [INVOICE_ISSUE_LOCK]);
|
|
258
|
+
if (invoiceData.orderId) {
|
|
259
|
+
var held = await client.query(
|
|
260
|
+
'SELECT * FROM ${table} WHERE order_id::text = $1 ORDER BY created_at ASC LIMIT 1',
|
|
261
|
+
[String(invoiceData.orderId)]
|
|
262
|
+
);
|
|
263
|
+
if (held.rows.length > 0) {
|
|
264
|
+
await client.query('COMMIT');
|
|
265
|
+
return { invoice: held.rows[0], created: false };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
var last = await client.query(
|
|
269
|
+
'SELECT MAX(substring(invoice_number FROM char_length($1) + 1)::bigint) AS last_number FROM ${table} ' +
|
|
270
|
+
"WHERE left(invoice_number, char_length($1)) = $1 AND substring(invoice_number FROM char_length($1) + 1) ~ '^[0-9]{1,15}$'",
|
|
271
|
+
[prefix]
|
|
272
|
+
);
|
|
273
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, last.rows[0] && last.rows[0].last_number);
|
|
274
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
275
|
+
var columns = Object.keys(record);
|
|
276
|
+
var quotedCols = columns.map(quoteIdent).join(', ');
|
|
277
|
+
var placeholders = columns.map(function(_, i) { return '$' + (i + 1); }).join(', ');
|
|
278
|
+
var values = columns.map(function(k) { return record[k]; });
|
|
279
|
+
// A rejected column fails the statement, and a failed statement ends
|
|
280
|
+
// the transaction — the savepoint keeps it open for the retry.
|
|
281
|
+
await client.query('SAVEPOINT invoice_row');
|
|
282
|
+
try {
|
|
283
|
+
var result = await client.query('INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ') RETURNING *', values);
|
|
284
|
+
await client.query('RELEASE SAVEPOINT invoice_row');
|
|
285
|
+
return result.rows[0];
|
|
286
|
+
} catch (err) {
|
|
287
|
+
await client.query('ROLLBACK TO SAVEPOINT invoice_row');
|
|
288
|
+
throw err;
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
await insertInvoiceItemRows(client, row.id, items);
|
|
292
|
+
await client.query('COMMIT');
|
|
293
|
+
return { invoice: row, created: true };
|
|
294
|
+
} catch (err) {
|
|
295
|
+
try { await client.query('ROLLBACK'); } catch (_rollbackErr) {}
|
|
296
|
+
throw err;
|
|
297
|
+
} finally {
|
|
298
|
+
client.release();
|
|
299
|
+
}
|
|
300
|
+
}`;
|
|
301
|
+
}
|
|
302
|
+
// A reserved invoice whose PDF never arrived — the request that reserved it
|
|
303
|
+
// died while rendering — is finished by the next request for its order: once,
|
|
304
|
+
// by whichever request moves its `updated_at` first. Timestamps are written by
|
|
305
|
+
// the app on both sides of the comparison, so the database's time zone never
|
|
306
|
+
// enters it.
|
|
307
|
+
function generateClaimStaleInvoiceCode(dsType, table) {
|
|
308
|
+
const cutoff = ` var now = new Date();
|
|
309
|
+
var staleBefore = new Date(now.getTime() - staleSeconds * 1000).toISOString();`;
|
|
310
|
+
if (dsType === 'supabase') {
|
|
311
|
+
return `
|
|
312
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
313
|
+
${cutoff}
|
|
314
|
+
var result = await getClient().from('${table}').update({ updated_at: now.toISOString() })
|
|
315
|
+
.eq('id', invoiceId).is('pdf_size_bytes', null).lt('updated_at', staleBefore).select('id');
|
|
151
316
|
if (result.error) throw new Error(result.error.message);
|
|
152
|
-
return result.data;
|
|
317
|
+
return !!(result.data && result.data.length > 0);
|
|
153
318
|
}`;
|
|
154
319
|
}
|
|
155
320
|
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
156
321
|
return `
|
|
157
|
-
async function
|
|
158
|
-
|
|
159
|
-
var
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')';
|
|
165
|
-
var [result] = await pool.execute(sql, values);
|
|
166
|
-
return Object.assign({}, record, { _insertId: result.insertId });
|
|
322
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
323
|
+
${cutoff}
|
|
324
|
+
var [result] = await getClient().execute(
|
|
325
|
+
'UPDATE ${table} SET updated_at = ? WHERE id = ? AND pdf_size_bytes IS NULL AND updated_at < ?',
|
|
326
|
+
[now.toISOString(), String(invoiceId), staleBefore]
|
|
327
|
+
);
|
|
328
|
+
return !!(result && result.affectedRows > 0);
|
|
167
329
|
}`;
|
|
168
330
|
}
|
|
169
331
|
return `
|
|
170
|
-
async function
|
|
171
|
-
|
|
172
|
-
var
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
332
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
333
|
+
${cutoff}
|
|
334
|
+
var result = await getClient().query(
|
|
335
|
+
'UPDATE ${table} SET updated_at = $1 WHERE id::text = $2 AND pdf_size_bytes IS NULL AND updated_at < $3 RETURNING id',
|
|
336
|
+
[now.toISOString(), String(invoiceId), staleBefore]
|
|
337
|
+
);
|
|
338
|
+
return result.rowCount > 0;
|
|
339
|
+
}`;
|
|
340
|
+
}
|
|
341
|
+
// Puts the rendered PDF on the reserved row; `pdf_size_bytes` is what marks
|
|
342
|
+
// the invoice finished (see `claimStaleInvoice`).
|
|
343
|
+
function generateStoreInvoicePdfCode(dsType) {
|
|
344
|
+
const pdfData = dsType === 'supabase' ? `pdfBuffer.toString('base64')` : 'pdfBuffer';
|
|
345
|
+
return `
|
|
346
|
+
async function storeInvoicePdf(invoiceId, pdfBuffer, pdfUrl) {
|
|
347
|
+
return updateInvoice(invoiceId, {
|
|
348
|
+
pdf_data: ${pdfData},
|
|
349
|
+
pdf_size_bytes: pdfBuffer.length,
|
|
350
|
+
pdf_content_type: 'application/pdf',
|
|
351
|
+
pdf_url: pdfUrl,
|
|
352
|
+
});
|
|
180
353
|
}`;
|
|
181
354
|
}
|
|
182
355
|
function generateInsertInvoiceItemsCode(dsType, table) {
|
|
@@ -195,9 +368,9 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
195
368
|
}
|
|
196
369
|
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
197
370
|
return `
|
|
198
|
-
|
|
371
|
+
// \`connection\` is the pool, or the connection of an open transaction.
|
|
372
|
+
async function insertInvoiceItemRows(connection, invoiceId, items) {
|
|
199
373
|
if (!items || items.length === 0) return [];
|
|
200
|
-
var pool = getClient();
|
|
201
374
|
var results = [];
|
|
202
375
|
for (var i = 0; i < items.length; i++) {
|
|
203
376
|
var record = mapInvoiceItemToRecord(invoiceId, items[i], i);
|
|
@@ -206,16 +379,16 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
206
379
|
var placeholders = columns.map(function() { return '?'; }).join(', ');
|
|
207
380
|
var values = columns.map(function(k) { return record[k]; });
|
|
208
381
|
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')';
|
|
209
|
-
var [result] = await
|
|
382
|
+
var [result] = await connection.execute(sql, values);
|
|
210
383
|
results.push(Object.assign({}, record, { id: result.insertId }));
|
|
211
384
|
}
|
|
212
385
|
return results;
|
|
213
386
|
}`;
|
|
214
387
|
}
|
|
215
388
|
return `
|
|
216
|
-
|
|
389
|
+
// \`queryable\` is the pool, or the client of an open transaction.
|
|
390
|
+
async function insertInvoiceItemRows(queryable, invoiceId, items) {
|
|
217
391
|
if (!items || items.length === 0) return [];
|
|
218
|
-
var pool = getClient();
|
|
219
392
|
var results = [];
|
|
220
393
|
for (var i = 0; i < items.length; i++) {
|
|
221
394
|
var record = mapInvoiceItemToRecord(invoiceId, items[i], i);
|
|
@@ -224,7 +397,7 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
224
397
|
var placeholders = columns.map(function(_, j) { return '$' + (j + 1); }).join(', ');
|
|
225
398
|
var values = columns.map(function(k) { return record[k]; });
|
|
226
399
|
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ') RETURNING *';
|
|
227
|
-
var result = await
|
|
400
|
+
var result = await queryable.query(sql, values);
|
|
228
401
|
results.push(result.rows[0]);
|
|
229
402
|
}
|
|
230
403
|
return results;
|
|
@@ -293,75 +466,6 @@ async function updateInvoice(invoiceId, updates) {
|
|
|
293
466
|
return Object.assign({ id: invoiceId }, updates);
|
|
294
467
|
}`;
|
|
295
468
|
}
|
|
296
|
-
function generateGetNextInvoiceNumberCode(dsType, table) {
|
|
297
|
-
if (dsType === 'supabase') {
|
|
298
|
-
return `
|
|
299
|
-
async function getNextInvoiceNumber(prefix) {
|
|
300
|
-
var client = getClient();
|
|
301
|
-
var result = await client.from('${table}')
|
|
302
|
-
.select('invoice_number')
|
|
303
|
-
.like('invoice_number', prefix + '%')
|
|
304
|
-
.order('created_at', { ascending: false })
|
|
305
|
-
.limit(1);
|
|
306
|
-
if (result.error || !result.data || result.data.length === 0) return 1;
|
|
307
|
-
var lastNum = result.data[0].invoice_number.replace(prefix, '');
|
|
308
|
-
var parsed = parseInt(lastNum, 10);
|
|
309
|
-
return isNaN(parsed) ? 1 : parsed + 1;
|
|
310
|
-
}`;
|
|
311
|
-
}
|
|
312
|
-
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
313
|
-
return `
|
|
314
|
-
async function getNextInvoiceNumber(prefix) {
|
|
315
|
-
var pool = getClient();
|
|
316
|
-
var conn = await pool.getConnection();
|
|
317
|
-
try {
|
|
318
|
-
await conn.execute('START TRANSACTION');
|
|
319
|
-
var [rows] = await conn.execute(
|
|
320
|
-
'SELECT invoice_number FROM ${table} WHERE invoice_number LIKE ? ORDER BY created_at DESC LIMIT 1 FOR UPDATE',
|
|
321
|
-
[prefix + '%']
|
|
322
|
-
);
|
|
323
|
-
var nextNum = 1;
|
|
324
|
-
if (rows.length > 0) {
|
|
325
|
-
var lastNum = rows[0].invoice_number.replace(prefix, '');
|
|
326
|
-
var parsed = parseInt(lastNum, 10);
|
|
327
|
-
nextNum = isNaN(parsed) ? 1 : parsed + 1;
|
|
328
|
-
}
|
|
329
|
-
await conn.execute('COMMIT');
|
|
330
|
-
return nextNum;
|
|
331
|
-
} catch (err) {
|
|
332
|
-
await conn.execute('ROLLBACK');
|
|
333
|
-
throw err;
|
|
334
|
-
} finally {
|
|
335
|
-
conn.release();
|
|
336
|
-
}
|
|
337
|
-
}`;
|
|
338
|
-
}
|
|
339
|
-
return `
|
|
340
|
-
async function getNextInvoiceNumber(prefix) {
|
|
341
|
-
var pool = getClient();
|
|
342
|
-
var client = await pool.connect();
|
|
343
|
-
try {
|
|
344
|
-
await client.query('BEGIN');
|
|
345
|
-
var result = await client.query(
|
|
346
|
-
'SELECT invoice_number FROM ${table} WHERE invoice_number LIKE $1 ORDER BY created_at DESC LIMIT 1 FOR UPDATE',
|
|
347
|
-
[prefix + '%']
|
|
348
|
-
);
|
|
349
|
-
var nextNum = 1;
|
|
350
|
-
if (result.rows.length > 0) {
|
|
351
|
-
var lastNum = result.rows[0].invoice_number.replace(prefix, '');
|
|
352
|
-
var parsed = parseInt(lastNum, 10);
|
|
353
|
-
nextNum = isNaN(parsed) ? 1 : parsed + 1;
|
|
354
|
-
}
|
|
355
|
-
await client.query('COMMIT');
|
|
356
|
-
return nextNum;
|
|
357
|
-
} catch (err) {
|
|
358
|
-
await client.query('ROLLBACK');
|
|
359
|
-
throw err;
|
|
360
|
-
} finally {
|
|
361
|
-
client.release();
|
|
362
|
-
}
|
|
363
|
-
}`;
|
|
364
|
-
}
|
|
365
469
|
// Fetches a `teleport_orders` row + its `teleport_order_items` children in a
|
|
366
470
|
// single call. Consumed by `/api/invoices/generate` when only `orderId` is
|
|
367
471
|
// provided — the caller (the payment webhook's Process Payment Webhook
|
|
@@ -425,6 +529,159 @@ async function getOrderWithItems(orderId) {
|
|
|
425
529
|
return { order: orderRes.rows[0], items: itemsRes.rows || [] };
|
|
426
530
|
}`;
|
|
427
531
|
}
|
|
532
|
+
// Rewrites one invoice in place — its figures, customer, PDF and lines — for
|
|
533
|
+
// `/api/invoices/[id]/regenerate`. The row keeps its id, so everything that
|
|
534
|
+
// points at it (the order, the sent-email ledger) stays valid. Postgres and
|
|
535
|
+
// MySQL do it in one transaction, and Supabase undoes its steps, so a failure
|
|
536
|
+
// leaves the old invoice whole.
|
|
537
|
+
function generateReplaceInvoiceCode(dsType, table, itemsTable) {
|
|
538
|
+
if (dsType === 'supabase') {
|
|
539
|
+
return `
|
|
540
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
541
|
+
var client = getClient();
|
|
542
|
+
// PostgREST has no transactions, so each step undoes the ones before it
|
|
543
|
+
// when it fails: new lines first (one INSERT, whole or nothing), then the
|
|
544
|
+
// row, then the old lines — and a failure puts the row and lines back.
|
|
545
|
+
var previousRow = await client.from('${table}').select('*').eq('id', invoiceId).maybeSingle();
|
|
546
|
+
if (previousRow.error) throw new Error(previousRow.error.message);
|
|
547
|
+
if (!previousRow.data) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
548
|
+
var previousLines = await client.from('${itemsTable}').select('id').eq('invoice_id', invoiceId);
|
|
549
|
+
if (previousLines.error) throw new Error(previousLines.error.message);
|
|
550
|
+
var previousIds = (previousLines.data || []).map(function (row) { return row.id; });
|
|
551
|
+
|
|
552
|
+
var inserted = await insertInvoiceItems(invoiceId, items);
|
|
553
|
+
var insertedIds = (inserted || []).map(function (row) { return row.id; });
|
|
554
|
+
var written = null;
|
|
555
|
+
try {
|
|
556
|
+
var record = await writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
557
|
+
var result = await client.from('${table}').update(fields).eq('id', invoiceId).select('id');
|
|
558
|
+
if (result.error) throw new Error(result.error.message);
|
|
559
|
+
if (!result.data || result.data.length === 0) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
560
|
+
written = fields;
|
|
561
|
+
return fields;
|
|
562
|
+
});
|
|
563
|
+
if (previousIds.length > 0) {
|
|
564
|
+
var removed = await client.from('${itemsTable}').delete().in('id', previousIds);
|
|
565
|
+
if (removed.error) throw new Error(removed.error.message);
|
|
566
|
+
}
|
|
567
|
+
return record;
|
|
568
|
+
} catch (err) {
|
|
569
|
+
if (written) {
|
|
570
|
+
var restored = {};
|
|
571
|
+
Object.keys(written).forEach(function (column) { restored[column] = previousRow.data[column]; });
|
|
572
|
+
var restoreResult = await client.from('${table}').update(restored).eq('id', invoiceId);
|
|
573
|
+
if (restoreResult.error) console.error('[invoice] Regenerate: could not restore invoice ' + invoiceId + ' — ' + restoreResult.error.message);
|
|
574
|
+
}
|
|
575
|
+
if (insertedIds.length > 0) {
|
|
576
|
+
var undone = await client.from('${itemsTable}').delete().in('id', insertedIds);
|
|
577
|
+
if (undone.error) console.error('[invoice] Regenerate: could not remove the new lines of invoice ' + invoiceId + ' — ' + undone.error.message);
|
|
578
|
+
}
|
|
579
|
+
throw err;
|
|
580
|
+
}
|
|
581
|
+
}`;
|
|
582
|
+
}
|
|
583
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
584
|
+
return `
|
|
585
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
586
|
+
var pool = getClient();
|
|
587
|
+
return writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
588
|
+
var conn = await pool.getConnection();
|
|
589
|
+
try {
|
|
590
|
+
await conn.beginTransaction();
|
|
591
|
+
var columns = Object.keys(fields);
|
|
592
|
+
var setClauses = columns.map(function(k) { return quoteIdent(k) + ' = ?'; }).join(', ');
|
|
593
|
+
var values = columns.map(function(k) { return fields[k]; });
|
|
594
|
+
values.push(invoiceId);
|
|
595
|
+
var [updated] = await conn.execute('UPDATE ${table} SET ' + setClauses + ' WHERE id = ?', values);
|
|
596
|
+
if (!updated || !updated.affectedRows) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
597
|
+
await conn.execute('DELETE FROM ${itemsTable} WHERE invoice_id = ?', [invoiceId]);
|
|
598
|
+
await insertInvoiceItemRows(conn, invoiceId, items);
|
|
599
|
+
await conn.commit();
|
|
600
|
+
return fields;
|
|
601
|
+
} catch (err) {
|
|
602
|
+
try { await conn.rollback(); } catch (_rollbackErr) {}
|
|
603
|
+
throw err;
|
|
604
|
+
} finally {
|
|
605
|
+
conn.release();
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
}`;
|
|
609
|
+
}
|
|
610
|
+
return `
|
|
611
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
612
|
+
var pool = getClient();
|
|
613
|
+
return writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
614
|
+
var client = await pool.connect();
|
|
615
|
+
try {
|
|
616
|
+
await client.query('BEGIN');
|
|
617
|
+
var columns = Object.keys(fields);
|
|
618
|
+
var setClauses = columns.map(function(k, i) { return quoteIdent(k) + ' = $' + (i + 1); }).join(', ');
|
|
619
|
+
var values = columns.map(function(k) { return fields[k]; });
|
|
620
|
+
values.push(invoiceId);
|
|
621
|
+
// The UPDATE takes the row lock first, so two regenerations of the same
|
|
622
|
+
// invoice run one after the other instead of interleaving their lines.
|
|
623
|
+
var updated = await client.query('UPDATE ${table} SET ' + setClauses + ' WHERE id = $' + values.length, values);
|
|
624
|
+
if (!updated.rowCount) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
625
|
+
await client.query('DELETE FROM ${itemsTable} WHERE invoice_id = $1', [invoiceId]);
|
|
626
|
+
await insertInvoiceItemRows(client, invoiceId, items);
|
|
627
|
+
await client.query('COMMIT');
|
|
628
|
+
return fields;
|
|
629
|
+
} catch (err) {
|
|
630
|
+
try { await client.query('ROLLBACK'); } catch (_rollbackErr) {}
|
|
631
|
+
throw err;
|
|
632
|
+
} finally {
|
|
633
|
+
client.release();
|
|
634
|
+
}
|
|
635
|
+
});
|
|
636
|
+
}`;
|
|
637
|
+
}
|
|
638
|
+
// Points an order at its (regenerated) invoice — but only an order that
|
|
639
|
+
// points at THIS invoice or at none: an order whose link names a different
|
|
640
|
+
// invoice keeps it. Returns whether the order was updated.
|
|
641
|
+
function generateLinkOrderToInvoiceCode(dsType) {
|
|
642
|
+
if (dsType === 'supabase') {
|
|
643
|
+
return `
|
|
644
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
645
|
+
if (!orderId || !invoiceId) return false;
|
|
646
|
+
var client = getClient();
|
|
647
|
+
var result = await client
|
|
648
|
+
.from('teleport_orders')
|
|
649
|
+
.update({
|
|
650
|
+
invoice_id: invoiceId,
|
|
651
|
+
invoice_number: invoiceNumber,
|
|
652
|
+
invoice_pdf_url: pdfUrl || null,
|
|
653
|
+
updated_at: new Date().toISOString(),
|
|
654
|
+
})
|
|
655
|
+
.eq('id', orderId)
|
|
656
|
+
.or('invoice_id.is.null,invoice_id.eq.' + invoiceId)
|
|
657
|
+
.select('id');
|
|
658
|
+
if (result.error) throw new Error(result.error.message);
|
|
659
|
+
return !!(result.data && result.data.length > 0);
|
|
660
|
+
}`;
|
|
661
|
+
}
|
|
662
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
663
|
+
return `
|
|
664
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
665
|
+
if (!orderId || !invoiceId) return false;
|
|
666
|
+
var pool = getClient();
|
|
667
|
+
var [result] = await pool.execute(
|
|
668
|
+
'UPDATE teleport_orders SET invoice_id = ?, invoice_number = ?, invoice_pdf_url = ?, updated_at = NOW() WHERE id = ? AND (invoice_id IS NULL OR invoice_id = ?)',
|
|
669
|
+
[invoiceId, invoiceNumber, pdfUrl || null, orderId, invoiceId]
|
|
670
|
+
);
|
|
671
|
+
return !!(result && result.affectedRows > 0);
|
|
672
|
+
}`;
|
|
673
|
+
}
|
|
674
|
+
return `
|
|
675
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
676
|
+
if (!orderId || !invoiceId) return false;
|
|
677
|
+
var pool = getClient();
|
|
678
|
+
var result = await pool.query(
|
|
679
|
+
'UPDATE teleport_orders SET invoice_id = $1, invoice_number = $2, invoice_pdf_url = $3, updated_at = NOW() WHERE id = $4 AND (invoice_id IS NULL OR invoice_id::text = $5)',
|
|
680
|
+
[invoiceId, invoiceNumber, pdfUrl || null, orderId, String(invoiceId)]
|
|
681
|
+
);
|
|
682
|
+
return result.rowCount > 0;
|
|
683
|
+
}`;
|
|
684
|
+
}
|
|
428
685
|
const getRecordMappingCode = (dsType) => `
|
|
429
686
|
function mapInvoiceToRecord(data) {
|
|
430
687
|
return {
|
|
@@ -458,7 +715,14 @@ function mapInvoiceToRecord(data) {
|
|
|
458
715
|
tax_rate: data.taxRate || 0,
|
|
459
716
|
tax_amount: data.taxAmount || 0,
|
|
460
717
|
discount_amount: data.discountAmount || 0,
|
|
718
|
+
shipping_amount: data.shippingAmount || 0,
|
|
461
719
|
total: data.total || 0,
|
|
720
|
+
// The gift-card tender and what was left to pay after it (the whole total
|
|
721
|
+
// when no card was used).
|
|
722
|
+
gift_card_amount: data.giftCardAmount || 0,
|
|
723
|
+
amount_due: data.amountDue != null ? data.amountDue : (data.total || 0),
|
|
724
|
+
// Nothing has gone back at issue time; a refund moves this and the status.
|
|
725
|
+
refunded_amount: 0,
|
|
462
726
|
currency: data.currency || 'USD',
|
|
463
727
|
currency_symbol: data.currencySymbol || '$',
|
|
464
728
|
payment_method: data.paymentMethod || null,
|
|
@@ -480,6 +744,55 @@ function mapInvoiceToRecord(data) {
|
|
|
480
744
|
};
|
|
481
745
|
}
|
|
482
746
|
|
|
747
|
+
// Columns added to the invoices table after stores already had one. The
|
|
748
|
+
// editor adds missing columns when the e-commerce activation runs, but a
|
|
749
|
+
// store that only republished still has the old table — and an invoice that
|
|
750
|
+
// fails to insert is an order the buyer is never billed for. So the write
|
|
751
|
+
// retries without the column the database rejected, and says what to re-run.
|
|
752
|
+
var OPTIONAL_INVOICE_COLUMNS = ['shipping_amount', 'gift_card_amount', 'amount_due', 'refunded_amount'];
|
|
753
|
+
|
|
754
|
+
function missingOptionalInvoiceColumn(err, record) {
|
|
755
|
+
var message = String((err && err.message) || '');
|
|
756
|
+
// pg: column "x" of relation "t" does not exist · mysql: Unknown column 'x'
|
|
757
|
+
// in 'field list' · PostgREST: Could not find the 'x' column of 't'.
|
|
758
|
+
if (!/does not exist|Unknown column|Could not find/i.test(message)) return null;
|
|
759
|
+
for (var i = 0; i < OPTIONAL_INVOICE_COLUMNS.length; i++) {
|
|
760
|
+
var column = OPTIONAL_INVOICE_COLUMNS[i];
|
|
761
|
+
if (Object.prototype.hasOwnProperty.call(record, column) && message.indexOf(column) !== -1) {
|
|
762
|
+
return column;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
return null;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
async function writeInvoiceRecord(record, write) {
|
|
769
|
+
for (var attempt = 0; attempt <= OPTIONAL_INVOICE_COLUMNS.length; attempt++) {
|
|
770
|
+
try {
|
|
771
|
+
return await write(record);
|
|
772
|
+
} catch (err) {
|
|
773
|
+
var missing = missingOptionalInvoiceColumn(err, record);
|
|
774
|
+
if (!missing) throw err;
|
|
775
|
+
console.warn('[invoice] The invoices table has no "' + missing + '" column — writing without it. Re-run the e-commerce activation in the editor to add it.');
|
|
776
|
+
delete record[missing];
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
return write(record);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// The columns a regeneration rewrites: everything the assembly produces,
|
|
783
|
+
// except the row's identity (id, created_at), \`refunded_amount\` — money
|
|
784
|
+
// already returned against the invoice stays recorded on it — and the two
|
|
785
|
+
// columns the assembly never fills, which keep whatever they hold.
|
|
786
|
+
function mapInvoiceReplacementToRecord(data) {
|
|
787
|
+
var record = mapInvoiceToRecord(data);
|
|
788
|
+
delete record.id;
|
|
789
|
+
delete record.created_at;
|
|
790
|
+
delete record.refunded_amount;
|
|
791
|
+
delete record.payment_provider_invoice_id;
|
|
792
|
+
delete record.metadata;
|
|
793
|
+
return record;
|
|
794
|
+
}
|
|
795
|
+
|
|
483
796
|
function mapInvoiceItemToRecord(invoiceId, item, sortOrder) {
|
|
484
797
|
return {
|
|
485
798
|
invoice_id: invoiceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access-code.js","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":";;;AAEO,MAAM,sBAAsB,GAAG,CACpC,QAA6B,EAC7B,cAAqC,EACrC,gBAAgD,EACxC,EAAE;;IACV,MAAM,aAAa,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,aAAa,KAAI,mBAAmB,CAAA;IAC3E,MAAM,iBAAiB,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,iBAAiB,KAAI,wBAAwB,CAAA;IACxF,MAAM,MAAM,GAAG,cAAc,IAAI,YAAY,CAAA;IAE7C,OAAO;;uBAEc,MAAM;aAChB,aAAa,KAAK,iBAAiB;;;EAG9C,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC;;EAEhD,
|
|
1
|
+
{"version":3,"file":"data-access-code.js","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":";;;AAEO,MAAM,sBAAsB,GAAG,CACpC,QAA6B,EAC7B,cAAqC,EACrC,gBAAgD,EACxC,EAAE;;IACV,MAAM,aAAa,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,aAAa,KAAI,mBAAmB,CAAA;IAC3E,MAAM,iBAAiB,GAAG,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,iBAAiB,KAAI,wBAAwB,CAAA;IACxF,MAAM,MAAM,GAAG,cAAc,IAAI,YAAY,CAAA;IAE7C,OAAO;;uBAEc,MAAM;aAChB,aAAa,KAAK,iBAAiB;;;EAG9C,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC;;EAEhD,8BAA8B,CAAC,MAAM,EAAE,iBAAiB,CAAC;;EAEzD,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEjD,6BAA6B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEpD,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEjD,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC;;EAEhD,2BAA2B,CAAC,MAAM,CAAC;;EAEnC,6BAA6B,CAAC,MAAM,CAAC;;EAErC,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC;;EAEpE,8BAA8B,CAAC,MAAM,CAAC;;;;;;;;;;;;;CAavC,CAAA;AACD,CAAC,CAAA;AA/CY,QAAA,sBAAsB,0BA+ClC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE;QACxE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;QACvD,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAA;KAChD;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc,EAAE,MAAsC;IACpF,QAAQ,MAAM,EAAE;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAA;QACzC,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,MAAM;YACT,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAA;QAC5C,KAAK,UAAU;YACb,OAAO,8BAA8B,CAAC,MAAM,CAAC,CAAA;QAC/C;YACE,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAA;KAC1C;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAsC;IACtE,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAElD,OAAO;;;;;;;;;;;cAWK,IAAI;qBACG,IAAI;cACX,IAAI;kBACA,QAAQ;kBACR,QAAQ;;;;;;;;;;EAUxB,CAAA;AACF,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAsC;IACzE,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAElD,OAAO;;;;;;;cAOK,IAAI;qBACG,IAAI;cACX,IAAI;kBACA,QAAQ;kBACR,QAAQ;;;;;;;;;;;EAWxB,CAAA;AACF,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAsC;IAC5E,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;IAE5D,OAAO;;;;;;sCAM6B,GAAG,KAAK,GAAG;;;EAG/C,CAAA;AACF,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,2DAA2D;AAC3D,6EAA6E;AAC7E,8EAA8E;AAC9E,SAAS,0BAA0B,CAAC,MAAc,EAAE,KAAa;IAC/D,MAAM,YAAY,GAAG;;;;EAIrB,CAAA;IAEA,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO,GAAG,YAAY;;;;;;;;oCAQU,KAAK;;;;;kCAKP,KAAK;;;;;;sCAMD,KAAK;;;;;;EAMzC,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO,GAAG,YAAY;;4BAEE,KAAK;;;;;;;;;;;;;2BAaN,KAAK;;;;;;;;;2GAS2E,KAAK;;;;;;;;;;0CAUtE,KAAK;;;;;;;;;;;;;;;;EAgB7C,CAAA;KACC;IAED,OAAO,GAAG,YAAY;;4BAEI,KAAK;;;;;;;;;yBASR,KAAK;;;;;;;;;oGASsE,KAAK;;;;;;;;;;;;;;uDAclD,KAAK;;;;;;;;;;;;;;;;;EAiB1D,CAAA;AACF,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,aAAa;AACb,SAAS,6BAA6B,CAAC,MAAc,EAAE,KAAa;IAClE,MAAM,MAAM,GAAG;iFACgE,CAAA;IAC/E,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;EAET,MAAM;yCACiC,KAAK;;;;EAI5C,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;EAET,MAAM;;cAEM,KAAK;;;;EAIjB,CAAA;KACC;IAED,OAAO;;EAEP,MAAM;;cAEM,KAAK;;;;EAIjB,CAAA;AACF,CAAC;AAED,4EAA4E;AAC5E,kDAAkD;AAClD,SAAS,2BAA2B,CAAC,MAAc;IACjD,MAAM,OAAO,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAA;IACpF,OAAO;;;gBAGO,OAAO;;;;;EAKrB,CAAA;AACF,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAc,EAAE,KAAa;IACnE,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;;;;;oCAOyB,KAAK;;;EAGvC,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;;;;;;;;;6BAWkB,KAAK;;;;;EAKhC,CAAA;KACC;IAED,OAAO;;;;;;;;;;;6BAWoB,KAAK;;;;;EAKhC,CAAA;AACF,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc,EAAE,KAAa;IAC/D,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;oCAGyB,KAAK;;;EAGvC,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;mDAGwC,KAAK;;EAEtD,CAAA;KACC;IAED,OAAO;;;iDAGwC,KAAK;;EAEpD,CAAA;AACF,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc,EAAE,KAAa;IAC9D,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;;oCAIyB,KAAK;;;EAGvC,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;;;;;;sBAQW,KAAK;;;EAGzB,CAAA;KACC;IAED,OAAO;;;;;;;;sBAQa,KAAK;;;EAGzB,CAAA;AACF,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,kEAAkE;AAClE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,4EAA4E;AAC5E,yEAAyE;AACzE,gDAAgD;AAChD,SAAS,6BAA6B,CAAC,MAAc;IACnD,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;;;;;;;;;;;;;;;;;EAmBT,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;;;;;;;;;EAWT,CAAA;KACC;IAED,OAAO;;;;;;;;;;;EAWP,CAAA;AACF,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,gCAAgC;AAChC,SAAS,0BAA0B,CAAC,MAAc,EAAE,KAAa,EAAE,UAAkB;IACnF,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;;;;yCAM8B,KAAK;;;2CAGH,UAAU;;;;;;;;;wCASb,KAAK;;;;;;;yCAOJ,UAAU;;;;;;;;+CAQJ,KAAK;;;;wCAIZ,UAAU;;;;;EAKhD,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;;;;;;;;;mDAWwC,KAAK;;wCAEhB,UAAU;;;;;;;;;;;EAWhD,CAAA;KACC;IAED,OAAO;;;;;;;;;;;;;iDAawC,KAAK;;wCAEd,UAAU;;;;;;;;;;;EAWhD,CAAA;AACF,CAAC;AAED,wEAAwE;AACxE,2EAA2E;AAC3E,2DAA2D;AAC3D,SAAS,8BAA8B,CAAC,MAAc;IACpD,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,OAAO;;;;;;;;;;;;;;;;;EAiBT,CAAA;KACC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE;QACnE,OAAO;;;;;;;;;EAST,CAAA;KACC;IAED,OAAO;;;;;;;;;EASP,CAAA;AACF,CAAC;AAEM,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAU,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiD3D,MAAM,KAAK,UAAU;IACnB,CAAC,CAAC,gFAAgF;IAClF,CAAC,CAAC,cACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFH,CAAA;AAtIY,QAAA,oBAAoB,wBAsIhC"}
|