@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,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api-routes-code.js","sourceRoot":"","sources":["../../../src/invoice/api-routes-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,CAAA;AAErC;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,GAAG,wCAAwC,EAAE;EACvE,kBAAkB;;4BAEQ,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC7D,CAAA;AAEF,MAAM,CAAC,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;AAED,oFAAoF;AACpF,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAW,EAAE;IAC7D,OAAO;;;;;;;;;;EAUP,wCAAwC,EAAE;EAC1C,kBAAkB;;iCAEa,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMxE,CAAA;AACD,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE;IACtD,OAAO;;;;;;;EAOP,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EpB,CAAA;AACD,CAAC,CAAA"}
|
|
@@ -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"}
|
|
@@ -11,26 +11,34 @@ export const generateDataAccessCode = (settings, dataSourceType, dataSourceConfi
|
|
|
11
11
|
|
|
12
12
|
${generateConnectionCode(dsType, dataSourceConfig)}
|
|
13
13
|
|
|
14
|
-
${generateInsertInvoiceCode(dsType, invoicesTable)}
|
|
15
|
-
|
|
16
14
|
${generateInsertInvoiceItemsCode(dsType, invoiceItemsTable)}
|
|
17
15
|
|
|
16
|
+
${generateReserveInvoiceCode(dsType, invoicesTable)}
|
|
17
|
+
|
|
18
|
+
${generateClaimStaleInvoiceCode(dsType, invoicesTable)}
|
|
19
|
+
|
|
18
20
|
${generateGetInvoiceByIdCode(dsType, invoicesTable)}
|
|
19
21
|
|
|
20
22
|
${generateUpdateInvoiceCode(dsType, invoicesTable)}
|
|
21
23
|
|
|
22
|
-
${
|
|
24
|
+
${generateStoreInvoicePdfCode(dsType)}
|
|
23
25
|
|
|
24
26
|
${generateGetOrderWithItemsCode(dsType)}
|
|
25
27
|
|
|
28
|
+
${generateReplaceInvoiceCode(dsType, invoicesTable, invoiceItemsTable)}
|
|
29
|
+
|
|
30
|
+
${generateLinkOrderToInvoiceCode(dsType)}
|
|
31
|
+
|
|
26
32
|
module.exports = {
|
|
27
33
|
getClient: getClient,
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
reserveInvoice: reserveInvoice,
|
|
35
|
+
claimStaleInvoice: claimStaleInvoice,
|
|
36
|
+
storeInvoicePdf: storeInvoicePdf,
|
|
30
37
|
getInvoiceById: getInvoiceById,
|
|
31
38
|
updateInvoice: updateInvoice,
|
|
32
|
-
getNextInvoiceNumber: getNextInvoiceNumber,
|
|
33
39
|
getOrderWithItems: getOrderWithItems,
|
|
40
|
+
replaceInvoice: replaceInvoice,
|
|
41
|
+
linkOrderToInvoice: linkOrderToInvoice,
|
|
34
42
|
};
|
|
35
43
|
`;
|
|
36
44
|
};
|
|
@@ -137,42 +145,207 @@ function getClient() {
|
|
|
137
145
|
return _client;
|
|
138
146
|
}`;
|
|
139
147
|
}
|
|
140
|
-
|
|
148
|
+
// Issuing an invoice takes its number and writes the row that holds it as one
|
|
149
|
+
// step, before the PDF is rendered: the number is read and the row written
|
|
150
|
+
// under one lock (Postgres: a transaction-scoped advisory lock; MySQL: a named
|
|
151
|
+
// lock), so two orders paid in the same second never print the same number.
|
|
152
|
+
// The same lock keeps one invoice per order: a second request for an order
|
|
153
|
+
// that already has one — a provider delivering a slow webhook again while the
|
|
154
|
+
// first delivery still renders — gets that invoice back (`created: false`)
|
|
155
|
+
// instead of issuing another. Every dialect writes through
|
|
156
|
+
// `writeInvoiceRecord`, which retries without a column the database rejected
|
|
157
|
+
// as unknown — see `missingOptionalInvoiceColumn` in the record-mapping code.
|
|
158
|
+
function generateReserveInvoiceCode(dsType, table) {
|
|
159
|
+
const formatNumber = `
|
|
160
|
+
function formatInvoiceNumber(prefix, lastNumber) {
|
|
161
|
+
var last = Number(lastNumber);
|
|
162
|
+
return prefix + String((isFinite(last) && last > 0 ? Math.floor(last) : 0) + 1).padStart(4, '0');
|
|
163
|
+
}`;
|
|
141
164
|
if (dsType === 'supabase') {
|
|
142
|
-
return
|
|
143
|
-
|
|
165
|
+
return `${formatNumber}
|
|
166
|
+
|
|
167
|
+
// PostgREST holds no lock across requests: the order's invoice is looked up
|
|
168
|
+
// right before one is issued, which leaves a twin request only the moment
|
|
169
|
+
// between the lookup and the insert.
|
|
170
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
144
171
|
var client = getClient();
|
|
145
|
-
|
|
146
|
-
|
|
172
|
+
if (invoiceData.orderId) {
|
|
173
|
+
var held = await client.from('${table}').select('*').eq('order_id', invoiceData.orderId)
|
|
174
|
+
.order('created_at', { ascending: true }).limit(1);
|
|
175
|
+
if (held.error) throw new Error(held.error.message);
|
|
176
|
+
if (held.data && held.data.length > 0) return { invoice: held.data[0], created: false };
|
|
177
|
+
}
|
|
178
|
+
var last = await client.from('${table}').select('invoice_number').like('invoice_number', prefix + '%')
|
|
179
|
+
.order('created_at', { ascending: false }).limit(1);
|
|
180
|
+
if (last.error) throw new Error(last.error.message);
|
|
181
|
+
var lastNumber = last.data && last.data[0] ? parseInt(String(last.data[0].invoice_number).slice(prefix.length), 10) : 0;
|
|
182
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, lastNumber);
|
|
183
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
184
|
+
var result = await client.from('${table}').insert(record).select().single();
|
|
185
|
+
if (result.error) throw new Error(result.error.message);
|
|
186
|
+
return result.data;
|
|
187
|
+
});
|
|
188
|
+
await insertInvoiceItems(row.id, items);
|
|
189
|
+
return { invoice: row, created: true };
|
|
190
|
+
}`;
|
|
191
|
+
}
|
|
192
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
193
|
+
return `${formatNumber}
|
|
194
|
+
|
|
195
|
+
var INVOICE_ISSUE_LOCK = '${table}:issue';
|
|
196
|
+
|
|
197
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
198
|
+
var conn = await getClient().getConnection();
|
|
199
|
+
var locked = false;
|
|
200
|
+
try {
|
|
201
|
+
var [lockRows] = await conn.execute('SELECT GET_LOCK(?, 30) AS acquired', [INVOICE_ISSUE_LOCK]);
|
|
202
|
+
locked = !!(lockRows[0] && Number(lockRows[0].acquired) === 1);
|
|
203
|
+
if (!locked) throw new Error('Another invoice is being issued; the request can be sent again.');
|
|
204
|
+
await conn.beginTransaction();
|
|
205
|
+
try {
|
|
206
|
+
if (invoiceData.orderId) {
|
|
207
|
+
var [heldRows] = await conn.execute(
|
|
208
|
+
'SELECT * FROM ${table} WHERE order_id = ? ORDER BY created_at ASC LIMIT 1',
|
|
209
|
+
[String(invoiceData.orderId)]
|
|
210
|
+
);
|
|
211
|
+
if (heldRows.length > 0) {
|
|
212
|
+
await conn.commit();
|
|
213
|
+
return { invoice: heldRows[0], created: false };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
var [lastRows] = await conn.execute(
|
|
217
|
+
'SELECT MAX(CAST(SUBSTRING(invoice_number, CHAR_LENGTH(?) + 1) AS UNSIGNED)) AS last_number FROM ${table} ' +
|
|
218
|
+
"WHERE LEFT(invoice_number, CHAR_LENGTH(?)) = ? AND SUBSTRING(invoice_number, CHAR_LENGTH(?) + 1) REGEXP '^[0-9]{1,15}$'",
|
|
219
|
+
[prefix, prefix, prefix, prefix]
|
|
220
|
+
);
|
|
221
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, lastRows[0] && lastRows[0].last_number);
|
|
222
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
223
|
+
var columns = Object.keys(record);
|
|
224
|
+
var quotedCols = columns.map(quoteIdent).join(', ');
|
|
225
|
+
var placeholders = columns.map(function() { return '?'; }).join(', ');
|
|
226
|
+
var values = columns.map(function(k) { return record[k]; });
|
|
227
|
+
await conn.execute('INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')', values);
|
|
228
|
+
return record;
|
|
229
|
+
});
|
|
230
|
+
await insertInvoiceItemRows(conn, row.id, items);
|
|
231
|
+
await conn.commit();
|
|
232
|
+
return { invoice: row, created: true };
|
|
233
|
+
} catch (err) {
|
|
234
|
+
try { await conn.rollback(); } catch (_rollbackErr) {}
|
|
235
|
+
throw err;
|
|
236
|
+
}
|
|
237
|
+
} finally {
|
|
238
|
+
if (locked) {
|
|
239
|
+
try { await conn.execute('SELECT RELEASE_LOCK(?)', [INVOICE_ISSUE_LOCK]); } catch (_releaseErr) {}
|
|
240
|
+
}
|
|
241
|
+
conn.release();
|
|
242
|
+
}
|
|
243
|
+
}`;
|
|
244
|
+
}
|
|
245
|
+
return `${formatNumber}
|
|
246
|
+
|
|
247
|
+
var INVOICE_ISSUE_LOCK = '${table}:issue';
|
|
248
|
+
|
|
249
|
+
async function reserveInvoice(invoiceData, items, prefix) {
|
|
250
|
+
var client = await getClient().connect();
|
|
251
|
+
try {
|
|
252
|
+
await client.query('BEGIN');
|
|
253
|
+
await client.query('SELECT pg_advisory_xact_lock(hashtext($1))', [INVOICE_ISSUE_LOCK]);
|
|
254
|
+
if (invoiceData.orderId) {
|
|
255
|
+
var held = await client.query(
|
|
256
|
+
'SELECT * FROM ${table} WHERE order_id::text = $1 ORDER BY created_at ASC LIMIT 1',
|
|
257
|
+
[String(invoiceData.orderId)]
|
|
258
|
+
);
|
|
259
|
+
if (held.rows.length > 0) {
|
|
260
|
+
await client.query('COMMIT');
|
|
261
|
+
return { invoice: held.rows[0], created: false };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
var last = await client.query(
|
|
265
|
+
'SELECT MAX(substring(invoice_number FROM char_length($1) + 1)::bigint) AS last_number FROM ${table} ' +
|
|
266
|
+
"WHERE left(invoice_number, char_length($1)) = $1 AND substring(invoice_number FROM char_length($1) + 1) ~ '^[0-9]{1,15}$'",
|
|
267
|
+
[prefix]
|
|
268
|
+
);
|
|
269
|
+
invoiceData.invoiceNumber = formatInvoiceNumber(prefix, last.rows[0] && last.rows[0].last_number);
|
|
270
|
+
var row = await writeInvoiceRecord(mapInvoiceToRecord(invoiceData), async function (record) {
|
|
271
|
+
var columns = Object.keys(record);
|
|
272
|
+
var quotedCols = columns.map(quoteIdent).join(', ');
|
|
273
|
+
var placeholders = columns.map(function(_, i) { return '$' + (i + 1); }).join(', ');
|
|
274
|
+
var values = columns.map(function(k) { return record[k]; });
|
|
275
|
+
// A rejected column fails the statement, and a failed statement ends
|
|
276
|
+
// the transaction — the savepoint keeps it open for the retry.
|
|
277
|
+
await client.query('SAVEPOINT invoice_row');
|
|
278
|
+
try {
|
|
279
|
+
var result = await client.query('INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ') RETURNING *', values);
|
|
280
|
+
await client.query('RELEASE SAVEPOINT invoice_row');
|
|
281
|
+
return result.rows[0];
|
|
282
|
+
} catch (err) {
|
|
283
|
+
await client.query('ROLLBACK TO SAVEPOINT invoice_row');
|
|
284
|
+
throw err;
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
await insertInvoiceItemRows(client, row.id, items);
|
|
288
|
+
await client.query('COMMIT');
|
|
289
|
+
return { invoice: row, created: true };
|
|
290
|
+
} catch (err) {
|
|
291
|
+
try { await client.query('ROLLBACK'); } catch (_rollbackErr) {}
|
|
292
|
+
throw err;
|
|
293
|
+
} finally {
|
|
294
|
+
client.release();
|
|
295
|
+
}
|
|
296
|
+
}`;
|
|
297
|
+
}
|
|
298
|
+
// A reserved invoice whose PDF never arrived — the request that reserved it
|
|
299
|
+
// died while rendering — is finished by the next request for its order: once,
|
|
300
|
+
// by whichever request moves its `updated_at` first. Timestamps are written by
|
|
301
|
+
// the app on both sides of the comparison, so the database's time zone never
|
|
302
|
+
// enters it.
|
|
303
|
+
function generateClaimStaleInvoiceCode(dsType, table) {
|
|
304
|
+
const cutoff = ` var now = new Date();
|
|
305
|
+
var staleBefore = new Date(now.getTime() - staleSeconds * 1000).toISOString();`;
|
|
306
|
+
if (dsType === 'supabase') {
|
|
307
|
+
return `
|
|
308
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
309
|
+
${cutoff}
|
|
310
|
+
var result = await getClient().from('${table}').update({ updated_at: now.toISOString() })
|
|
311
|
+
.eq('id', invoiceId).is('pdf_size_bytes', null).lt('updated_at', staleBefore).select('id');
|
|
147
312
|
if (result.error) throw new Error(result.error.message);
|
|
148
|
-
return result.data;
|
|
313
|
+
return !!(result.data && result.data.length > 0);
|
|
149
314
|
}`;
|
|
150
315
|
}
|
|
151
316
|
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
152
317
|
return `
|
|
153
|
-
async function
|
|
154
|
-
|
|
155
|
-
var
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')';
|
|
161
|
-
var [result] = await pool.execute(sql, values);
|
|
162
|
-
return Object.assign({}, record, { _insertId: result.insertId });
|
|
318
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
319
|
+
${cutoff}
|
|
320
|
+
var [result] = await getClient().execute(
|
|
321
|
+
'UPDATE ${table} SET updated_at = ? WHERE id = ? AND pdf_size_bytes IS NULL AND updated_at < ?',
|
|
322
|
+
[now.toISOString(), String(invoiceId), staleBefore]
|
|
323
|
+
);
|
|
324
|
+
return !!(result && result.affectedRows > 0);
|
|
163
325
|
}`;
|
|
164
326
|
}
|
|
165
327
|
return `
|
|
166
|
-
async function
|
|
167
|
-
|
|
168
|
-
var
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
328
|
+
async function claimStaleInvoice(invoiceId, staleSeconds) {
|
|
329
|
+
${cutoff}
|
|
330
|
+
var result = await getClient().query(
|
|
331
|
+
'UPDATE ${table} SET updated_at = $1 WHERE id::text = $2 AND pdf_size_bytes IS NULL AND updated_at < $3 RETURNING id',
|
|
332
|
+
[now.toISOString(), String(invoiceId), staleBefore]
|
|
333
|
+
);
|
|
334
|
+
return result.rowCount > 0;
|
|
335
|
+
}`;
|
|
336
|
+
}
|
|
337
|
+
// Puts the rendered PDF on the reserved row; `pdf_size_bytes` is what marks
|
|
338
|
+
// the invoice finished (see `claimStaleInvoice`).
|
|
339
|
+
function generateStoreInvoicePdfCode(dsType) {
|
|
340
|
+
const pdfData = dsType === 'supabase' ? `pdfBuffer.toString('base64')` : 'pdfBuffer';
|
|
341
|
+
return `
|
|
342
|
+
async function storeInvoicePdf(invoiceId, pdfBuffer, pdfUrl) {
|
|
343
|
+
return updateInvoice(invoiceId, {
|
|
344
|
+
pdf_data: ${pdfData},
|
|
345
|
+
pdf_size_bytes: pdfBuffer.length,
|
|
346
|
+
pdf_content_type: 'application/pdf',
|
|
347
|
+
pdf_url: pdfUrl,
|
|
348
|
+
});
|
|
176
349
|
}`;
|
|
177
350
|
}
|
|
178
351
|
function generateInsertInvoiceItemsCode(dsType, table) {
|
|
@@ -191,9 +364,9 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
191
364
|
}
|
|
192
365
|
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
193
366
|
return `
|
|
194
|
-
|
|
367
|
+
// \`connection\` is the pool, or the connection of an open transaction.
|
|
368
|
+
async function insertInvoiceItemRows(connection, invoiceId, items) {
|
|
195
369
|
if (!items || items.length === 0) return [];
|
|
196
|
-
var pool = getClient();
|
|
197
370
|
var results = [];
|
|
198
371
|
for (var i = 0; i < items.length; i++) {
|
|
199
372
|
var record = mapInvoiceItemToRecord(invoiceId, items[i], i);
|
|
@@ -202,16 +375,16 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
202
375
|
var placeholders = columns.map(function() { return '?'; }).join(', ');
|
|
203
376
|
var values = columns.map(function(k) { return record[k]; });
|
|
204
377
|
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ')';
|
|
205
|
-
var [result] = await
|
|
378
|
+
var [result] = await connection.execute(sql, values);
|
|
206
379
|
results.push(Object.assign({}, record, { id: result.insertId }));
|
|
207
380
|
}
|
|
208
381
|
return results;
|
|
209
382
|
}`;
|
|
210
383
|
}
|
|
211
384
|
return `
|
|
212
|
-
|
|
385
|
+
// \`queryable\` is the pool, or the client of an open transaction.
|
|
386
|
+
async function insertInvoiceItemRows(queryable, invoiceId, items) {
|
|
213
387
|
if (!items || items.length === 0) return [];
|
|
214
|
-
var pool = getClient();
|
|
215
388
|
var results = [];
|
|
216
389
|
for (var i = 0; i < items.length; i++) {
|
|
217
390
|
var record = mapInvoiceItemToRecord(invoiceId, items[i], i);
|
|
@@ -220,7 +393,7 @@ async function insertInvoiceItems(invoiceId, items) {
|
|
|
220
393
|
var placeholders = columns.map(function(_, j) { return '$' + (j + 1); }).join(', ');
|
|
221
394
|
var values = columns.map(function(k) { return record[k]; });
|
|
222
395
|
var sql = 'INSERT INTO ${table} (' + quotedCols + ') VALUES (' + placeholders + ') RETURNING *';
|
|
223
|
-
var result = await
|
|
396
|
+
var result = await queryable.query(sql, values);
|
|
224
397
|
results.push(result.rows[0]);
|
|
225
398
|
}
|
|
226
399
|
return results;
|
|
@@ -289,75 +462,6 @@ async function updateInvoice(invoiceId, updates) {
|
|
|
289
462
|
return Object.assign({ id: invoiceId }, updates);
|
|
290
463
|
}`;
|
|
291
464
|
}
|
|
292
|
-
function generateGetNextInvoiceNumberCode(dsType, table) {
|
|
293
|
-
if (dsType === 'supabase') {
|
|
294
|
-
return `
|
|
295
|
-
async function getNextInvoiceNumber(prefix) {
|
|
296
|
-
var client = getClient();
|
|
297
|
-
var result = await client.from('${table}')
|
|
298
|
-
.select('invoice_number')
|
|
299
|
-
.like('invoice_number', prefix + '%')
|
|
300
|
-
.order('created_at', { ascending: false })
|
|
301
|
-
.limit(1);
|
|
302
|
-
if (result.error || !result.data || result.data.length === 0) return 1;
|
|
303
|
-
var lastNum = result.data[0].invoice_number.replace(prefix, '');
|
|
304
|
-
var parsed = parseInt(lastNum, 10);
|
|
305
|
-
return isNaN(parsed) ? 1 : parsed + 1;
|
|
306
|
-
}`;
|
|
307
|
-
}
|
|
308
|
-
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
309
|
-
return `
|
|
310
|
-
async function getNextInvoiceNumber(prefix) {
|
|
311
|
-
var pool = getClient();
|
|
312
|
-
var conn = await pool.getConnection();
|
|
313
|
-
try {
|
|
314
|
-
await conn.execute('START TRANSACTION');
|
|
315
|
-
var [rows] = await conn.execute(
|
|
316
|
-
'SELECT invoice_number FROM ${table} WHERE invoice_number LIKE ? ORDER BY created_at DESC LIMIT 1 FOR UPDATE',
|
|
317
|
-
[prefix + '%']
|
|
318
|
-
);
|
|
319
|
-
var nextNum = 1;
|
|
320
|
-
if (rows.length > 0) {
|
|
321
|
-
var lastNum = rows[0].invoice_number.replace(prefix, '');
|
|
322
|
-
var parsed = parseInt(lastNum, 10);
|
|
323
|
-
nextNum = isNaN(parsed) ? 1 : parsed + 1;
|
|
324
|
-
}
|
|
325
|
-
await conn.execute('COMMIT');
|
|
326
|
-
return nextNum;
|
|
327
|
-
} catch (err) {
|
|
328
|
-
await conn.execute('ROLLBACK');
|
|
329
|
-
throw err;
|
|
330
|
-
} finally {
|
|
331
|
-
conn.release();
|
|
332
|
-
}
|
|
333
|
-
}`;
|
|
334
|
-
}
|
|
335
|
-
return `
|
|
336
|
-
async function getNextInvoiceNumber(prefix) {
|
|
337
|
-
var pool = getClient();
|
|
338
|
-
var client = await pool.connect();
|
|
339
|
-
try {
|
|
340
|
-
await client.query('BEGIN');
|
|
341
|
-
var result = await client.query(
|
|
342
|
-
'SELECT invoice_number FROM ${table} WHERE invoice_number LIKE $1 ORDER BY created_at DESC LIMIT 1 FOR UPDATE',
|
|
343
|
-
[prefix + '%']
|
|
344
|
-
);
|
|
345
|
-
var nextNum = 1;
|
|
346
|
-
if (result.rows.length > 0) {
|
|
347
|
-
var lastNum = result.rows[0].invoice_number.replace(prefix, '');
|
|
348
|
-
var parsed = parseInt(lastNum, 10);
|
|
349
|
-
nextNum = isNaN(parsed) ? 1 : parsed + 1;
|
|
350
|
-
}
|
|
351
|
-
await client.query('COMMIT');
|
|
352
|
-
return nextNum;
|
|
353
|
-
} catch (err) {
|
|
354
|
-
await client.query('ROLLBACK');
|
|
355
|
-
throw err;
|
|
356
|
-
} finally {
|
|
357
|
-
client.release();
|
|
358
|
-
}
|
|
359
|
-
}`;
|
|
360
|
-
}
|
|
361
465
|
// Fetches a `teleport_orders` row + its `teleport_order_items` children in a
|
|
362
466
|
// single call. Consumed by `/api/invoices/generate` when only `orderId` is
|
|
363
467
|
// provided — the caller (the payment webhook's Process Payment Webhook
|
|
@@ -421,6 +525,159 @@ async function getOrderWithItems(orderId) {
|
|
|
421
525
|
return { order: orderRes.rows[0], items: itemsRes.rows || [] };
|
|
422
526
|
}`;
|
|
423
527
|
}
|
|
528
|
+
// Rewrites one invoice in place — its figures, customer, PDF and lines — for
|
|
529
|
+
// `/api/invoices/[id]/regenerate`. The row keeps its id, so everything that
|
|
530
|
+
// points at it (the order, the sent-email ledger) stays valid. Postgres and
|
|
531
|
+
// MySQL do it in one transaction, and Supabase undoes its steps, so a failure
|
|
532
|
+
// leaves the old invoice whole.
|
|
533
|
+
function generateReplaceInvoiceCode(dsType, table, itemsTable) {
|
|
534
|
+
if (dsType === 'supabase') {
|
|
535
|
+
return `
|
|
536
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
537
|
+
var client = getClient();
|
|
538
|
+
// PostgREST has no transactions, so each step undoes the ones before it
|
|
539
|
+
// when it fails: new lines first (one INSERT, whole or nothing), then the
|
|
540
|
+
// row, then the old lines — and a failure puts the row and lines back.
|
|
541
|
+
var previousRow = await client.from('${table}').select('*').eq('id', invoiceId).maybeSingle();
|
|
542
|
+
if (previousRow.error) throw new Error(previousRow.error.message);
|
|
543
|
+
if (!previousRow.data) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
544
|
+
var previousLines = await client.from('${itemsTable}').select('id').eq('invoice_id', invoiceId);
|
|
545
|
+
if (previousLines.error) throw new Error(previousLines.error.message);
|
|
546
|
+
var previousIds = (previousLines.data || []).map(function (row) { return row.id; });
|
|
547
|
+
|
|
548
|
+
var inserted = await insertInvoiceItems(invoiceId, items);
|
|
549
|
+
var insertedIds = (inserted || []).map(function (row) { return row.id; });
|
|
550
|
+
var written = null;
|
|
551
|
+
try {
|
|
552
|
+
var record = await writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
553
|
+
var result = await client.from('${table}').update(fields).eq('id', invoiceId).select('id');
|
|
554
|
+
if (result.error) throw new Error(result.error.message);
|
|
555
|
+
if (!result.data || result.data.length === 0) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
556
|
+
written = fields;
|
|
557
|
+
return fields;
|
|
558
|
+
});
|
|
559
|
+
if (previousIds.length > 0) {
|
|
560
|
+
var removed = await client.from('${itemsTable}').delete().in('id', previousIds);
|
|
561
|
+
if (removed.error) throw new Error(removed.error.message);
|
|
562
|
+
}
|
|
563
|
+
return record;
|
|
564
|
+
} catch (err) {
|
|
565
|
+
if (written) {
|
|
566
|
+
var restored = {};
|
|
567
|
+
Object.keys(written).forEach(function (column) { restored[column] = previousRow.data[column]; });
|
|
568
|
+
var restoreResult = await client.from('${table}').update(restored).eq('id', invoiceId);
|
|
569
|
+
if (restoreResult.error) console.error('[invoice] Regenerate: could not restore invoice ' + invoiceId + ' — ' + restoreResult.error.message);
|
|
570
|
+
}
|
|
571
|
+
if (insertedIds.length > 0) {
|
|
572
|
+
var undone = await client.from('${itemsTable}').delete().in('id', insertedIds);
|
|
573
|
+
if (undone.error) console.error('[invoice] Regenerate: could not remove the new lines of invoice ' + invoiceId + ' — ' + undone.error.message);
|
|
574
|
+
}
|
|
575
|
+
throw err;
|
|
576
|
+
}
|
|
577
|
+
}`;
|
|
578
|
+
}
|
|
579
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
580
|
+
return `
|
|
581
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
582
|
+
var pool = getClient();
|
|
583
|
+
return writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
584
|
+
var conn = await pool.getConnection();
|
|
585
|
+
try {
|
|
586
|
+
await conn.beginTransaction();
|
|
587
|
+
var columns = Object.keys(fields);
|
|
588
|
+
var setClauses = columns.map(function(k) { return quoteIdent(k) + ' = ?'; }).join(', ');
|
|
589
|
+
var values = columns.map(function(k) { return fields[k]; });
|
|
590
|
+
values.push(invoiceId);
|
|
591
|
+
var [updated] = await conn.execute('UPDATE ${table} SET ' + setClauses + ' WHERE id = ?', values);
|
|
592
|
+
if (!updated || !updated.affectedRows) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
593
|
+
await conn.execute('DELETE FROM ${itemsTable} WHERE invoice_id = ?', [invoiceId]);
|
|
594
|
+
await insertInvoiceItemRows(conn, invoiceId, items);
|
|
595
|
+
await conn.commit();
|
|
596
|
+
return fields;
|
|
597
|
+
} catch (err) {
|
|
598
|
+
try { await conn.rollback(); } catch (_rollbackErr) {}
|
|
599
|
+
throw err;
|
|
600
|
+
} finally {
|
|
601
|
+
conn.release();
|
|
602
|
+
}
|
|
603
|
+
});
|
|
604
|
+
}`;
|
|
605
|
+
}
|
|
606
|
+
return `
|
|
607
|
+
async function replaceInvoice(invoiceId, invoiceData, items) {
|
|
608
|
+
var pool = getClient();
|
|
609
|
+
return writeInvoiceRecord(mapInvoiceReplacementToRecord(invoiceData), async function (fields) {
|
|
610
|
+
var client = await pool.connect();
|
|
611
|
+
try {
|
|
612
|
+
await client.query('BEGIN');
|
|
613
|
+
var columns = Object.keys(fields);
|
|
614
|
+
var setClauses = columns.map(function(k, i) { return quoteIdent(k) + ' = $' + (i + 1); }).join(', ');
|
|
615
|
+
var values = columns.map(function(k) { return fields[k]; });
|
|
616
|
+
values.push(invoiceId);
|
|
617
|
+
// The UPDATE takes the row lock first, so two regenerations of the same
|
|
618
|
+
// invoice run one after the other instead of interleaving their lines.
|
|
619
|
+
var updated = await client.query('UPDATE ${table} SET ' + setClauses + ' WHERE id = $' + values.length, values);
|
|
620
|
+
if (!updated.rowCount) throw new Error('Invoice ' + invoiceId + ' no longer exists');
|
|
621
|
+
await client.query('DELETE FROM ${itemsTable} WHERE invoice_id = $1', [invoiceId]);
|
|
622
|
+
await insertInvoiceItemRows(client, invoiceId, items);
|
|
623
|
+
await client.query('COMMIT');
|
|
624
|
+
return fields;
|
|
625
|
+
} catch (err) {
|
|
626
|
+
try { await client.query('ROLLBACK'); } catch (_rollbackErr) {}
|
|
627
|
+
throw err;
|
|
628
|
+
} finally {
|
|
629
|
+
client.release();
|
|
630
|
+
}
|
|
631
|
+
});
|
|
632
|
+
}`;
|
|
633
|
+
}
|
|
634
|
+
// Points an order at its (regenerated) invoice — but only an order that
|
|
635
|
+
// points at THIS invoice or at none: an order whose link names a different
|
|
636
|
+
// invoice keeps it. Returns whether the order was updated.
|
|
637
|
+
function generateLinkOrderToInvoiceCode(dsType) {
|
|
638
|
+
if (dsType === 'supabase') {
|
|
639
|
+
return `
|
|
640
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
641
|
+
if (!orderId || !invoiceId) return false;
|
|
642
|
+
var client = getClient();
|
|
643
|
+
var result = await client
|
|
644
|
+
.from('teleport_orders')
|
|
645
|
+
.update({
|
|
646
|
+
invoice_id: invoiceId,
|
|
647
|
+
invoice_number: invoiceNumber,
|
|
648
|
+
invoice_pdf_url: pdfUrl || null,
|
|
649
|
+
updated_at: new Date().toISOString(),
|
|
650
|
+
})
|
|
651
|
+
.eq('id', orderId)
|
|
652
|
+
.or('invoice_id.is.null,invoice_id.eq.' + invoiceId)
|
|
653
|
+
.select('id');
|
|
654
|
+
if (result.error) throw new Error(result.error.message);
|
|
655
|
+
return !!(result.data && result.data.length > 0);
|
|
656
|
+
}`;
|
|
657
|
+
}
|
|
658
|
+
if (dsType === 'mysql' || dsType === 'mariadb' || dsType === 'tidb') {
|
|
659
|
+
return `
|
|
660
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
661
|
+
if (!orderId || !invoiceId) return false;
|
|
662
|
+
var pool = getClient();
|
|
663
|
+
var [result] = await pool.execute(
|
|
664
|
+
'UPDATE teleport_orders SET invoice_id = ?, invoice_number = ?, invoice_pdf_url = ?, updated_at = NOW() WHERE id = ? AND (invoice_id IS NULL OR invoice_id = ?)',
|
|
665
|
+
[invoiceId, invoiceNumber, pdfUrl || null, orderId, invoiceId]
|
|
666
|
+
);
|
|
667
|
+
return !!(result && result.affectedRows > 0);
|
|
668
|
+
}`;
|
|
669
|
+
}
|
|
670
|
+
return `
|
|
671
|
+
async function linkOrderToInvoice(orderId, invoiceId, invoiceNumber, pdfUrl) {
|
|
672
|
+
if (!orderId || !invoiceId) return false;
|
|
673
|
+
var pool = getClient();
|
|
674
|
+
var result = await pool.query(
|
|
675
|
+
'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)',
|
|
676
|
+
[invoiceId, invoiceNumber, pdfUrl || null, orderId, String(invoiceId)]
|
|
677
|
+
);
|
|
678
|
+
return result.rowCount > 0;
|
|
679
|
+
}`;
|
|
680
|
+
}
|
|
424
681
|
export const getRecordMappingCode = (dsType) => `
|
|
425
682
|
function mapInvoiceToRecord(data) {
|
|
426
683
|
return {
|
|
@@ -454,7 +711,14 @@ function mapInvoiceToRecord(data) {
|
|
|
454
711
|
tax_rate: data.taxRate || 0,
|
|
455
712
|
tax_amount: data.taxAmount || 0,
|
|
456
713
|
discount_amount: data.discountAmount || 0,
|
|
714
|
+
shipping_amount: data.shippingAmount || 0,
|
|
457
715
|
total: data.total || 0,
|
|
716
|
+
// The gift-card tender and what was left to pay after it (the whole total
|
|
717
|
+
// when no card was used).
|
|
718
|
+
gift_card_amount: data.giftCardAmount || 0,
|
|
719
|
+
amount_due: data.amountDue != null ? data.amountDue : (data.total || 0),
|
|
720
|
+
// Nothing has gone back at issue time; a refund moves this and the status.
|
|
721
|
+
refunded_amount: 0,
|
|
458
722
|
currency: data.currency || 'USD',
|
|
459
723
|
currency_symbol: data.currencySymbol || '$',
|
|
460
724
|
payment_method: data.paymentMethod || null,
|
|
@@ -476,6 +740,55 @@ function mapInvoiceToRecord(data) {
|
|
|
476
740
|
};
|
|
477
741
|
}
|
|
478
742
|
|
|
743
|
+
// Columns added to the invoices table after stores already had one. The
|
|
744
|
+
// editor adds missing columns when the e-commerce activation runs, but a
|
|
745
|
+
// store that only republished still has the old table — and an invoice that
|
|
746
|
+
// fails to insert is an order the buyer is never billed for. So the write
|
|
747
|
+
// retries without the column the database rejected, and says what to re-run.
|
|
748
|
+
var OPTIONAL_INVOICE_COLUMNS = ['shipping_amount', 'gift_card_amount', 'amount_due', 'refunded_amount'];
|
|
749
|
+
|
|
750
|
+
function missingOptionalInvoiceColumn(err, record) {
|
|
751
|
+
var message = String((err && err.message) || '');
|
|
752
|
+
// pg: column "x" of relation "t" does not exist · mysql: Unknown column 'x'
|
|
753
|
+
// in 'field list' · PostgREST: Could not find the 'x' column of 't'.
|
|
754
|
+
if (!/does not exist|Unknown column|Could not find/i.test(message)) return null;
|
|
755
|
+
for (var i = 0; i < OPTIONAL_INVOICE_COLUMNS.length; i++) {
|
|
756
|
+
var column = OPTIONAL_INVOICE_COLUMNS[i];
|
|
757
|
+
if (Object.prototype.hasOwnProperty.call(record, column) && message.indexOf(column) !== -1) {
|
|
758
|
+
return column;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
return null;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
async function writeInvoiceRecord(record, write) {
|
|
765
|
+
for (var attempt = 0; attempt <= OPTIONAL_INVOICE_COLUMNS.length; attempt++) {
|
|
766
|
+
try {
|
|
767
|
+
return await write(record);
|
|
768
|
+
} catch (err) {
|
|
769
|
+
var missing = missingOptionalInvoiceColumn(err, record);
|
|
770
|
+
if (!missing) throw err;
|
|
771
|
+
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.');
|
|
772
|
+
delete record[missing];
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
return write(record);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
// The columns a regeneration rewrites: everything the assembly produces,
|
|
779
|
+
// except the row's identity (id, created_at), \`refunded_amount\` — money
|
|
780
|
+
// already returned against the invoice stays recorded on it — and the two
|
|
781
|
+
// columns the assembly never fills, which keep whatever they hold.
|
|
782
|
+
function mapInvoiceReplacementToRecord(data) {
|
|
783
|
+
var record = mapInvoiceToRecord(data);
|
|
784
|
+
delete record.id;
|
|
785
|
+
delete record.created_at;
|
|
786
|
+
delete record.refunded_amount;
|
|
787
|
+
delete record.payment_provider_invoice_id;
|
|
788
|
+
delete record.metadata;
|
|
789
|
+
return record;
|
|
790
|
+
}
|
|
791
|
+
|
|
479
792
|
function mapInvoiceItemToRecord(invoiceId, item, sortOrder) {
|
|
480
793
|
return {
|
|
481
794
|
invoice_id: invoiceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access-code.js","sourceRoot":"","sources":["../../../src/invoice/data-access-code.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,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":"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"}
|