@openlup/platform 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +272 -278
- package/README.md +195 -6
- package/dist/composition/composeBundle.d.ts +13 -0
- package/dist/composition/composeBundle.js +4 -0
- package/dist/composition/fulfillmentContribution.d.ts +21 -0
- package/dist/composition/fulfillmentContribution.js +19 -0
- package/dist/composition/index.d.ts +1 -0
- package/dist/composition/index.js +2 -0
- package/dist/fulfillment/adapterConformance.d.ts +3 -0
- package/dist/fulfillment/adapterConformance.js +223 -0
- package/dist/fulfillment/bindings.d.ts +3 -0
- package/dist/fulfillment/bindings.js +29 -0
- package/dist/fulfillment/commerceFulfillmentHandlers.d.ts +29 -0
- package/dist/fulfillment/commerceFulfillmentHandlers.js +184 -0
- package/dist/fulfillment/commerceFulfillmentReadModel.d.ts +86 -0
- package/dist/fulfillment/commerceFulfillmentReadModel.js +131 -0
- package/dist/fulfillment/contracts/alignment.d.ts +25 -0
- package/dist/fulfillment/contracts/alignment.js +1 -0
- package/dist/fulfillment/contracts/bindings.d.ts +51 -0
- package/dist/fulfillment/contracts/bindings.js +1 -0
- package/dist/fulfillment/contracts/capabilities.d.ts +29 -0
- package/dist/fulfillment/contracts/capabilities.js +1 -0
- package/dist/fulfillment/contracts/conformance.d.ts +93 -0
- package/dist/fulfillment/contracts/conformance.js +1 -0
- package/dist/fulfillment/contracts/customerAlignment.d.ts +6 -0
- package/dist/fulfillment/contracts/customerAlignment.js +1 -0
- package/dist/fulfillment/contracts/dispatch.d.ts +105 -0
- package/dist/fulfillment/contracts/dispatch.js +1 -0
- package/dist/fulfillment/contracts/index.d.ts +18 -0
- package/dist/fulfillment/contracts/index.js +1 -0
- package/dist/fulfillment/contracts/label.d.ts +35 -0
- package/dist/fulfillment/contracts/label.js +1 -0
- package/dist/fulfillment/contracts/nativeUnsupported.d.ts +6 -0
- package/dist/fulfillment/contracts/nativeUnsupported.js +1 -0
- package/dist/fulfillment/contracts/observation.d.ts +52 -0
- package/dist/fulfillment/contracts/observation.js +1 -0
- package/dist/fulfillment/contracts/operator.d.ts +64 -0
- package/dist/fulfillment/contracts/operator.js +1 -0
- package/dist/fulfillment/contracts/read.d.ts +110 -0
- package/dist/fulfillment/contracts/read.js +1 -0
- package/dist/fulfillment/contracts/readback.d.ts +38 -0
- package/dist/fulfillment/contracts/readback.js +1 -0
- package/dist/fulfillment/contracts/replacement.d.ts +34 -0
- package/dist/fulfillment/contracts/replacement.js +1 -0
- package/dist/fulfillment/contracts/store.d.ts +86 -0
- package/dist/fulfillment/contracts/store.js +1 -0
- package/dist/fulfillment/contracts/sync.d.ts +170 -0
- package/dist/fulfillment/contracts/sync.js +1 -0
- package/dist/fulfillment/currentFulfillmentParcel.d.ts +2 -0
- package/dist/fulfillment/currentFulfillmentParcel.js +1 -0
- package/dist/fulfillment/delayReadModel.d.ts +11 -0
- package/dist/fulfillment/delayReadModel.js +45 -0
- package/dist/fulfillment/deliveryAlignmentReadModel.d.ts +4 -0
- package/dist/fulfillment/deliveryAlignmentReadModel.js +12 -0
- package/dist/fulfillment/dispatchProjection.d.ts +7 -0
- package/dist/fulfillment/dispatchProjection.js +18 -0
- package/dist/fulfillment/fulfillmentObservationEffects.d.ts +66 -0
- package/dist/fulfillment/fulfillmentObservationEffects.js +36 -0
- package/dist/fulfillment/handlerSchemas.d.ts +647 -0
- package/dist/fulfillment/handlerSchemas.js +213 -0
- package/dist/fulfillment/handlerSupport.d.ts +33 -0
- package/dist/fulfillment/handlerSupport.js +25 -0
- package/dist/fulfillment/index.d.ts +37 -0
- package/dist/fulfillment/index.js +37 -0
- package/dist/fulfillment/labelLifecycle.d.ts +24 -0
- package/dist/fulfillment/labelLifecycle.js +9 -0
- package/dist/fulfillment/lowStockEvidenceHandler.d.ts +36 -0
- package/dist/fulfillment/lowStockEvidenceHandler.js +46 -0
- package/dist/fulfillment/migrations.d.ts +27 -0
- package/dist/fulfillment/migrations.js +8 -0
- package/dist/fulfillment/nativeUnsupported.d.ts +10 -0
- package/dist/fulfillment/nativeUnsupported.js +18 -0
- package/dist/fulfillment/normalizedFulfillmentFacts.d.ts +2 -0
- package/dist/fulfillment/normalizedFulfillmentFacts.js +1 -0
- package/dist/fulfillment/observationProjection.d.ts +11 -0
- package/dist/fulfillment/observationProjection.js +37 -0
- package/dist/fulfillment/omnipack/capabilities.d.ts +3 -0
- package/dist/fulfillment/omnipack/capabilities.js +16 -0
- package/dist/fulfillment/omnipack/client.d.ts +37 -0
- package/dist/fulfillment/omnipack/client.js +162 -0
- package/dist/fulfillment/omnipack/index.d.ts +52 -0
- package/dist/fulfillment/omnipack/index.js +349 -0
- package/dist/fulfillment/omnipack/mappers.d.ts +73 -0
- package/dist/fulfillment/omnipack/mappers.js +177 -0
- package/dist/fulfillment/omnipack/observation.d.ts +21 -0
- package/dist/fulfillment/omnipack/observation.js +57 -0
- package/dist/fulfillment/omnipack/omnipackDispatchPayload.d.ts +36 -0
- package/dist/fulfillment/omnipack/omnipackDispatchPayload.js +63 -0
- package/dist/fulfillment/omnipack/omnipackOutboundOrderPayload.d.ts +83 -0
- package/dist/fulfillment/omnipack/omnipackOutboundOrderPayload.js +113 -0
- package/dist/fulfillment/omnipack/omnipackProductPackPayload.d.ts +11 -0
- package/dist/fulfillment/omnipack/omnipackProductPackPayload.js +38 -0
- package/dist/fulfillment/omnipack/omnipackProductPayload.d.ts +18 -0
- package/dist/fulfillment/omnipack/omnipackProductPayload.js +51 -0
- package/dist/fulfillment/omnipack/omnipackReconciliationPayload.d.ts +1 -0
- package/dist/fulfillment/omnipack/omnipackReconciliationPayload.js +3 -0
- package/dist/fulfillment/omnipack/omnipackStatusVocabulary.d.ts +4 -0
- package/dist/fulfillment/omnipack/omnipackStatusVocabulary.js +87 -0
- package/dist/fulfillment/omnipack/omnipackWebhookPayload.d.ts +9 -0
- package/dist/fulfillment/omnipack/omnipackWebhookPayload.js +76 -0
- package/dist/fulfillment/omnipack/productSyncMappers.d.ts +18 -0
- package/dist/fulfillment/omnipack/productSyncMappers.js +43 -0
- package/dist/fulfillment/omnipack/providerError.d.ts +25 -0
- package/dist/fulfillment/omnipack/providerError.js +47 -0
- package/dist/fulfillment/omnipack/trackingReferences.d.ts +16 -0
- package/dist/fulfillment/omnipack/trackingReferences.js +52 -0
- package/dist/fulfillment/paidFulfillmentRecovery.d.ts +67 -0
- package/dist/fulfillment/paidFulfillmentRecovery.js +154 -0
- package/dist/fulfillment/paidHandoff.d.ts +27 -0
- package/dist/fulfillment/paidHandoff.js +86 -0
- package/dist/fulfillment/paidHandoffPorts.d.ts +24 -0
- package/dist/fulfillment/paidHandoffPorts.js +3 -0
- package/dist/fulfillment/postgresDeliveryAlignment.d.ts +4 -0
- package/dist/fulfillment/postgresDeliveryAlignment.js +12 -0
- package/dist/fulfillment/postgresDispatchStore.d.ts +16 -0
- package/dist/fulfillment/postgresDispatchStore.js +44 -0
- package/dist/fulfillment/postgresEvidenceReadPort.d.ts +25 -0
- package/dist/fulfillment/postgresEvidenceReadPort.js +45 -0
- package/dist/fulfillment/postgresPaidFulfillmentRecovery.d.ts +25 -0
- package/dist/fulfillment/postgresPaidFulfillmentRecovery.js +26 -0
- package/dist/fulfillment/postgresPaidHandoffStore.d.ts +4 -0
- package/dist/fulfillment/postgresPaidHandoffStore.js +10 -0
- package/dist/fulfillment/postgresShipmentSpine.d.ts +63 -0
- package/dist/fulfillment/postgresShipmentSpine.js +232 -0
- package/dist/fulfillment/postgresStockSyncPort.d.ts +8 -0
- package/dist/fulfillment/postgresStockSyncPort.js +63 -0
- package/dist/fulfillment/productReconciliationEvidenceHandler.d.ts +36 -0
- package/dist/fulfillment/productReconciliationEvidenceHandler.js +50 -0
- package/dist/fulfillment/providerCapabilities.d.ts +9 -0
- package/dist/fulfillment/providerCapabilities.js +17 -0
- package/dist/fulfillment/providerCommandLedger.d.ts +143 -0
- package/dist/fulfillment/providerCommandLedger.js +14 -0
- package/dist/fulfillment/providerDispatchAcceptance.d.ts +26 -0
- package/dist/fulfillment/providerDispatchAcceptance.js +23 -0
- package/dist/fulfillment/providerDispatchError.d.ts +6 -0
- package/dist/fulfillment/providerDispatchError.js +5 -0
- package/dist/fulfillment/providerDispatchWorker.d.ts +31 -0
- package/dist/fulfillment/providerDispatchWorker.js +172 -0
- package/dist/fulfillment/providerProductSyncWorker.d.ts +28 -0
- package/dist/fulfillment/providerProductSyncWorker.js +122 -0
- package/dist/fulfillment/providerReconciliationError.d.ts +9 -0
- package/dist/fulfillment/providerReconciliationError.js +17 -0
- package/dist/fulfillment/providerReconciliationTerminalSkip.d.ts +2 -0
- package/dist/fulfillment/providerReconciliationTerminalSkip.js +6 -0
- package/dist/fulfillment/providerReconciliationTimestamp.d.ts +1 -0
- package/dist/fulfillment/providerReconciliationTimestamp.js +27 -0
- package/dist/fulfillment/providerReconciliationWorker.d.ts +82 -0
- package/dist/fulfillment/providerReconciliationWorker.js +151 -0
- package/dist/fulfillment/providerStockAvailability.d.ts +13 -0
- package/dist/fulfillment/providerStockAvailability.js +51 -0
- package/dist/fulfillment/providerStockSyncWorker.d.ts +37 -0
- package/dist/fulfillment/providerStockSyncWorker.js +186 -0
- package/dist/fulfillment/providerTrackingReferences.d.ts +15 -0
- package/dist/fulfillment/providerTrackingReferences.js +23 -0
- package/dist/fulfillment/replacementRefusals.d.ts +5 -0
- package/dist/fulfillment/replacementRefusals.js +38 -0
- package/dist/fulfillment/replacementShipmentHandler.d.ts +5 -0
- package/dist/fulfillment/replacementShipmentHandler.js +46 -0
- package/dist/fulfillment/schemaCapabilities.d.ts +13 -0
- package/dist/fulfillment/schemaCapabilities.js +7 -0
- package/dist/fulfillment/shipmentsOverviewHandler.d.ts +16 -0
- package/dist/fulfillment/shipmentsOverviewHandler.js +54 -0
- package/dist/fulfillment/statusMap.d.ts +2 -0
- package/dist/fulfillment/statusMap.js +1 -0
- package/dist/fulfillment/trackingProgress.d.ts +1 -0
- package/dist/fulfillment/trackingProgress.js +1 -0
- package/dist/fulfillment/verifiedIngress.d.ts +52 -0
- package/dist/fulfillment/verifiedIngress.js +66 -0
- package/dist/payments/adapterConformance.d.ts +8 -0
- package/dist/payments/adapterConformance.js +109 -0
- package/dist/payments/bindings.d.ts +3 -0
- package/dist/payments/bindings.js +17 -0
- package/dist/payments/checkoutActivePaymentActionResolver.d.ts +7 -0
- package/dist/payments/checkoutActivePaymentActionResolver.js +77 -0
- package/dist/payments/checkoutRecoveryPaymentResolver.d.ts +8 -0
- package/dist/payments/checkoutRecoveryPaymentResolver.js +87 -0
- package/dist/payments/contracts/adapter.d.ts +113 -0
- package/dist/payments/contracts/adapter.js +1 -0
- package/dist/payments/contracts/conformance.d.ts +155 -0
- package/dist/payments/contracts/conformance.js +1 -0
- package/dist/payments/contracts/evidence.d.ts +157 -0
- package/dist/payments/contracts/evidence.js +1 -0
- package/dist/payments/contracts/index.d.ts +10 -0
- package/dist/payments/contracts/index.js +1 -0
- package/dist/payments/contracts/preparedAttempt.d.ts +69 -0
- package/dist/payments/contracts/preparedAttempt.js +1 -0
- package/dist/payments/contracts/reconciliation.d.ts +303 -0
- package/dist/payments/contracts/reconciliation.js +1 -0
- package/dist/payments/contracts/repair.d.ts +92 -0
- package/dist/payments/contracts/repair.js +1 -0
- package/dist/payments/contracts/truth.d.ts +92 -0
- package/dist/payments/contracts/truth.js +1 -0
- package/dist/payments/eventConformanceRunner.d.ts +12 -0
- package/dist/payments/eventConformanceRunner.js +125 -0
- package/dist/payments/index.d.ts +16 -0
- package/dist/payments/index.js +16 -0
- package/dist/payments/paymentAttemptSilenceWindow.d.ts +10 -0
- package/dist/payments/paymentAttemptSilenceWindow.js +19 -0
- package/dist/payments/paymentMethodLifecycle.d.ts +11 -0
- package/dist/payments/paymentMethodLifecycle.js +37 -0
- package/dist/payments/paymentProviderReconciliationAbsenceReopen.d.ts +7 -0
- package/dist/payments/paymentProviderReconciliationAbsenceReopen.js +100 -0
- package/dist/payments/paymentProviderReconciliationEvidence.d.ts +36 -0
- package/dist/payments/paymentProviderReconciliationEvidence.js +91 -0
- package/dist/payments/paymentProviderReconciliationWorker.d.ts +4 -0
- package/dist/payments/paymentProviderReconciliationWorker.js +245 -0
- package/dist/payments/paymentTruth.d.ts +8 -0
- package/dist/payments/paymentTruth.js +125 -0
- package/dist/payments/paymentVerifyNowHandler.d.ts +27 -0
- package/dist/payments/paymentVerifyNowHandler.js +70 -0
- package/dist/payments/paymentVerifyNowService.d.ts +23 -0
- package/dist/payments/paymentVerifyNowService.js +93 -0
- package/dist/payments/paymentWebhookPostProcessing.d.ts +22 -0
- package/dist/payments/paymentWebhookPostProcessing.js +15 -0
- package/dist/payments/postgresPaymentTruth.d.ts +10 -0
- package/dist/payments/postgresPaymentTruth.js +126 -0
- package/dist/payments/preparedAttempt.d.ts +6 -0
- package/dist/payments/preparedAttempt.js +70 -0
- package/dist/payments/preparedAttemptFinalization.d.ts +5 -0
- package/dist/payments/preparedAttemptFinalization.js +12 -0
- package/dist/payments/schemaCapabilities.d.ts +10 -0
- package/dist/payments/schemaCapabilities.js +10 -0
- package/dist/payments/sql.d.ts +20 -0
- package/dist/payments/sql.js +6 -0
- package/dist/payments/stripe/classifyDecline.d.ts +46 -0
- package/dist/payments/stripe/classifyDecline.js +58 -0
- package/dist/payments/stripe/declineFailureHints.d.ts +46 -0
- package/dist/payments/stripe/declineFailureHints.js +87 -0
- package/dist/payments/stripe/donorContracts.d.ts +120 -0
- package/dist/payments/stripe/donorContracts.js +1 -0
- package/dist/payments/stripe/executionDecline.d.ts +53 -0
- package/dist/payments/stripe/executionDecline.js +107 -0
- package/dist/payments/stripe/index.d.ts +41 -0
- package/dist/payments/stripe/index.js +264 -0
- package/dist/payments/stripe/intentMapper.d.ts +26 -0
- package/dist/payments/stripe/intentMapper.js +51 -0
- package/dist/payments/stripe/methodFacts.d.ts +10 -0
- package/dist/payments/stripe/methodFacts.js +12 -0
- package/dist/payments/stripe/paymentFailureEvidence.d.ts +26 -0
- package/dist/payments/stripe/paymentFailureEvidence.js +33 -0
- package/dist/payments/stripe/stripeFailureEvidence.d.ts +41 -0
- package/dist/payments/stripe/stripeFailureEvidence.js +82 -0
- package/dist/payments/stripe/stripeIntentConfirmationEvidence.d.ts +28 -0
- package/dist/payments/stripe/stripeIntentConfirmationEvidence.js +32 -0
- package/dist/payments/stripe/stripePaymentReconciliationProvider.d.ts +35 -0
- package/dist/payments/stripe/stripePaymentReconciliationProvider.js +222 -0
- package/dist/payments/stripe/stripeRefundEvidence.d.ts +8 -0
- package/dist/payments/stripe/stripeRefundEvidence.js +17 -0
- package/dist/payments/stripe/stripeSandboxPaymentExecutionAdapter.d.ts +45 -0
- package/dist/payments/stripe/stripeSandboxPaymentExecutionAdapter.js +220 -0
- package/dist/payments/stripe/stripeWebhookNormalizer.d.ts +14 -0
- package/dist/payments/stripe/stripeWebhookNormalizer.js +243 -0
- package/dist/payments/stripe/webhookSignature.d.ts +14 -0
- package/dist/payments/stripe/webhookSignature.js +43 -0
- package/dist/payments/tpay/blikRecurringMapper.d.ts +37 -0
- package/dist/payments/tpay/blikRecurringMapper.js +24 -0
- package/dist/payments/tpay/capabilities.d.ts +3 -0
- package/dist/payments/tpay/capabilities.js +18 -0
- package/dist/payments/tpay/classifyDecline.d.ts +46 -0
- package/dist/payments/tpay/classifyDecline.js +58 -0
- package/dist/payments/tpay/declineFailureHints.d.ts +72 -0
- package/dist/payments/tpay/declineFailureHints.js +37 -0
- package/dist/payments/tpay/donorContracts.d.ts +140 -0
- package/dist/payments/tpay/donorContracts.js +1 -0
- package/dist/payments/tpay/index.d.ts +73 -0
- package/dist/payments/tpay/index.js +294 -0
- package/dist/payments/tpay/paymentFailureEvidence.d.ts +26 -0
- package/dist/payments/tpay/paymentFailureEvidence.js +33 -0
- package/dist/payments/tpay/preparedProviderAttempt.d.ts +22 -0
- package/dist/payments/tpay/preparedProviderAttempt.js +24 -0
- package/dist/payments/tpay/providerAttemptFailureDiagnostic.d.ts +3 -0
- package/dist/payments/tpay/providerAttemptFailureDiagnostic.js +95 -0
- package/dist/payments/tpay/tpayCreateTransactionInput.d.ts +25 -0
- package/dist/payments/tpay/tpayCreateTransactionInput.js +128 -0
- package/dist/payments/tpay/tpayDeclineEvidence.d.ts +126 -0
- package/dist/payments/tpay/tpayDeclineEvidence.js +177 -0
- package/dist/payments/tpay/tpayDispatchFailure.d.ts +60 -0
- package/dist/payments/tpay/tpayDispatchFailure.js +121 -0
- package/dist/payments/tpay/tpayFailureEvidence.d.ts +20 -0
- package/dist/payments/tpay/tpayFailureEvidence.js +61 -0
- package/dist/payments/tpay/tpayHttpClient.d.ts +52 -0
- package/dist/payments/tpay/tpayHttpClient.js +185 -0
- package/dist/payments/tpay/tpayHttpFailure.d.ts +57 -0
- package/dist/payments/tpay/tpayHttpFailure.js +143 -0
- package/dist/payments/tpay/tpayPaymentExecutionAdapter.d.ts +20 -0
- package/dist/payments/tpay/tpayPaymentExecutionAdapter.js +249 -0
- package/dist/payments/tpay/tpayPaymentReconciliationProvider.d.ts +5 -0
- package/dist/payments/tpay/tpayPaymentReconciliationProvider.js +244 -0
- package/dist/payments/tpay/tpayTransactionPayload.d.ts +120 -0
- package/dist/payments/tpay/tpayTransactionPayload.js +96 -0
- package/dist/payments/tpay/wallClockTime.d.ts +31 -0
- package/dist/payments/tpay/wallClockTime.js +57 -0
- package/dist/payments/tpay/webhookJwsVerifier.d.ts +17 -0
- package/dist/payments/tpay/webhookJwsVerifier.js +51 -0
- package/dist/payments/tpay/webhookNormalizer.d.ts +54 -0
- package/dist/payments/tpay/webhookNormalizer.js +200 -0
- package/dist/payments/verifiedEvidenceProjection.d.ts +12 -0
- package/dist/payments/verifiedEvidenceProjection.js +166 -0
- package/dist/payments/verifiedIngress.d.ts +119 -0
- package/dist/payments/verifiedIngress.js +220 -0
- package/package.json +37 -2
- package/release-gates.json +105 -3
- package/sql/20260808210000_fulfillment_shipment_rail.sql +810 -0
- package/sql/20260810180000_payment_settlement_rail.sql +574 -0
- package/sql/20260815150000_payment_truth_reconciliation.sql +479 -0
- package/sql/20260819150000_fulfillment_shipment_sequence.sql +98 -0
- package/sql/20260826100000_late_payment_shifts_the_subscription_cycle.sql +215 -0
- package/sql/20261022080000_fulfillment_command_ledger.sql +786 -0
- package/sql/20261022090000_fulfillment_delivery_alignment.sql +1106 -0
- package/src/composition/composeBundle.ts +13 -0
- package/src/composition/fulfillmentContribution.ts +28 -0
- package/src/composition/index.ts +2 -0
- package/src/fulfillment/adapterConformance.ts +195 -0
- package/src/fulfillment/bindings.ts +26 -0
- package/src/fulfillment/commerceFulfillmentHandlers.ts +263 -0
- package/src/fulfillment/commerceFulfillmentReadModel.ts +257 -0
- package/src/fulfillment/contracts/alignment.ts +13 -0
- package/src/fulfillment/contracts/bindings.ts +30 -0
- package/src/fulfillment/contracts/capabilities.ts +15 -0
- package/src/fulfillment/contracts/conformance.ts +61 -0
- package/src/fulfillment/contracts/customerAlignment.ts +4 -0
- package/src/fulfillment/contracts/dispatch.ts +58 -0
- package/src/fulfillment/contracts/index.ts +18 -0
- package/src/fulfillment/contracts/label.ts +9 -0
- package/src/fulfillment/contracts/nativeUnsupported.ts +6 -0
- package/src/fulfillment/contracts/observation.ts +18 -0
- package/src/fulfillment/contracts/operator.ts +31 -0
- package/src/fulfillment/contracts/read.ts +42 -0
- package/src/fulfillment/contracts/readback.ts +11 -0
- package/src/fulfillment/contracts/replacement.ts +15 -0
- package/src/fulfillment/contracts/store.ts +26 -0
- package/src/fulfillment/contracts/sync.ts +61 -0
- package/src/fulfillment/currentFulfillmentParcel.ts +2 -0
- package/src/fulfillment/delayReadModel.ts +60 -0
- package/src/fulfillment/deliveryAlignmentReadModel.ts +15 -0
- package/src/fulfillment/dispatchProjection.ts +20 -0
- package/src/fulfillment/fulfillmentObservationEffects.ts +86 -0
- package/src/fulfillment/handlerSchemas.ts +255 -0
- package/src/fulfillment/handlerSupport.ts +25 -0
- package/src/fulfillment/index.ts +38 -0
- package/src/fulfillment/labelLifecycle.ts +11 -0
- package/src/fulfillment/lowStockEvidenceHandler.ts +60 -0
- package/src/fulfillment/migrations.ts +8 -0
- package/src/fulfillment/nativeUnsupported.ts +23 -0
- package/src/fulfillment/normalizedFulfillmentFacts.ts +2 -0
- package/src/fulfillment/observationProjection.ts +41 -0
- package/src/fulfillment/omnipack/capabilities.ts +18 -0
- package/src/fulfillment/omnipack/client.ts +258 -0
- package/src/fulfillment/omnipack/index.ts +312 -0
- package/src/fulfillment/omnipack/mappers.ts +261 -0
- package/src/fulfillment/omnipack/observation.ts +61 -0
- package/src/fulfillment/omnipack/omnipackDispatchPayload.ts +93 -0
- package/src/fulfillment/omnipack/omnipackOutboundOrderPayload.ts +194 -0
- package/src/fulfillment/omnipack/omnipackProductPackPayload.ts +47 -0
- package/src/fulfillment/omnipack/omnipackProductPayload.ts +67 -0
- package/src/fulfillment/omnipack/omnipackReconciliationPayload.ts +7 -0
- package/src/fulfillment/omnipack/omnipackStatusVocabulary.ts +103 -0
- package/src/fulfillment/omnipack/omnipackWebhookPayload.ts +73 -0
- package/src/fulfillment/omnipack/productSyncMappers.ts +74 -0
- package/src/fulfillment/omnipack/providerError.ts +64 -0
- package/src/fulfillment/omnipack/trackingReferences.ts +77 -0
- package/src/fulfillment/paidFulfillmentRecovery.ts +252 -0
- package/src/fulfillment/paidHandoff.ts +122 -0
- package/src/fulfillment/paidHandoffPorts.ts +21 -0
- package/src/fulfillment/postgresDeliveryAlignment.ts +14 -0
- package/src/fulfillment/postgresDispatchStore.ts +55 -0
- package/src/fulfillment/postgresEvidenceReadPort.ts +59 -0
- package/src/fulfillment/postgresPaidFulfillmentRecovery.ts +29 -0
- package/src/fulfillment/postgresPaidHandoffStore.ts +11 -0
- package/src/fulfillment/postgresShipmentSpine.ts +321 -0
- package/src/fulfillment/postgresStockSyncPort.ts +65 -0
- package/src/fulfillment/productReconciliationEvidenceHandler.ts +64 -0
- package/src/fulfillment/providerCapabilities.ts +18 -0
- package/src/fulfillment/providerCommandLedger.ts +53 -0
- package/src/fulfillment/providerDispatchAcceptance.ts +31 -0
- package/src/fulfillment/providerDispatchError.ts +7 -0
- package/src/fulfillment/providerDispatchWorker.ts +131 -0
- package/src/fulfillment/providerProductSyncWorker.ts +154 -0
- package/src/fulfillment/providerReconciliationError.ts +20 -0
- package/src/fulfillment/providerReconciliationTerminalSkip.ts +8 -0
- package/src/fulfillment/providerReconciliationTimestamp.ts +34 -0
- package/src/fulfillment/providerReconciliationWorker.ts +150 -0
- package/src/fulfillment/providerStockAvailability.ts +60 -0
- package/src/fulfillment/providerStockSyncWorker.ts +222 -0
- package/src/fulfillment/providerTrackingReferences.ts +31 -0
- package/src/fulfillment/replacementRefusals.ts +43 -0
- package/src/fulfillment/replacementShipmentHandler.ts +47 -0
- package/src/fulfillment/schemaCapabilities.ts +7 -0
- package/src/fulfillment/shipmentsOverviewHandler.ts +73 -0
- package/src/fulfillment/statusMap.ts +2 -0
- package/src/fulfillment/trackingProgress.ts +1 -0
- package/src/fulfillment/verifiedIngress.ts +80 -0
- package/src/payments/adapterConformance.ts +118 -0
- package/src/payments/bindings.ts +17 -0
- package/src/payments/checkoutActivePaymentActionResolver.ts +97 -0
- package/src/payments/checkoutRecoveryPaymentResolver.ts +108 -0
- package/src/payments/contracts/adapter.ts +96 -0
- package/src/payments/contracts/conformance.ts +171 -0
- package/src/payments/contracts/evidence.ts +142 -0
- package/src/payments/contracts/index.ts +54 -0
- package/src/payments/contracts/preparedAttempt.ts +86 -0
- package/src/payments/contracts/reconciliation.ts +296 -0
- package/src/payments/contracts/repair.ts +95 -0
- package/src/payments/contracts/truth.ts +108 -0
- package/src/payments/eventConformanceRunner.ts +149 -0
- package/src/payments/index.ts +21 -0
- package/src/payments/paymentAttemptSilenceWindow.ts +26 -0
- package/src/payments/paymentMethodLifecycle.ts +50 -0
- package/src/payments/paymentProviderReconciliationAbsenceReopen.ts +130 -0
- package/src/payments/paymentProviderReconciliationEvidence.ts +117 -0
- package/src/payments/paymentProviderReconciliationWorker.ts +291 -0
- package/src/payments/paymentTruth.ts +131 -0
- package/src/payments/paymentVerifyNowHandler.ts +94 -0
- package/src/payments/paymentVerifyNowService.ts +125 -0
- package/src/payments/paymentWebhookPostProcessing.ts +36 -0
- package/src/payments/postgresPaymentTruth.ts +149 -0
- package/src/payments/preparedAttempt.ts +90 -0
- package/src/payments/preparedAttemptFinalization.ts +13 -0
- package/src/payments/schemaCapabilities.ts +10 -0
- package/src/payments/sql.ts +6 -0
- package/src/payments/stripe/classifyDecline.ts +62 -0
- package/src/payments/stripe/declineFailureHints.ts +89 -0
- package/src/payments/stripe/donorContracts.ts +87 -0
- package/src/payments/stripe/executionDecline.ts +126 -0
- package/src/payments/stripe/index.ts +265 -0
- package/src/payments/stripe/intentMapper.ts +58 -0
- package/src/payments/stripe/methodFacts.ts +21 -0
- package/src/payments/stripe/paymentFailureEvidence.ts +58 -0
- package/src/payments/stripe/stripeFailureEvidence.ts +115 -0
- package/src/payments/stripe/stripeIntentConfirmationEvidence.ts +34 -0
- package/src/payments/stripe/stripePaymentReconciliationProvider.ts +263 -0
- package/src/payments/stripe/stripeRefundEvidence.ts +19 -0
- package/src/payments/stripe/stripeSandboxPaymentExecutionAdapter.ts +283 -0
- package/src/payments/stripe/stripeWebhookNormalizer.ts +277 -0
- package/src/payments/stripe/webhookSignature.ts +55 -0
- package/src/payments/tpay/blikRecurringMapper.ts +42 -0
- package/src/payments/tpay/capabilities.ts +21 -0
- package/src/payments/tpay/classifyDecline.ts +62 -0
- package/src/payments/tpay/declineFailureHints.ts +90 -0
- package/src/payments/tpay/donorContracts.ts +104 -0
- package/src/payments/tpay/index.ts +293 -0
- package/src/payments/tpay/paymentFailureEvidence.ts +58 -0
- package/src/payments/tpay/preparedProviderAttempt.ts +38 -0
- package/src/payments/tpay/providerAttemptFailureDiagnostic.ts +99 -0
- package/src/payments/tpay/tpayCreateTransactionInput.ts +158 -0
- package/src/payments/tpay/tpayDeclineEvidence.ts +233 -0
- package/src/payments/tpay/tpayDispatchFailure.ts +186 -0
- package/src/payments/tpay/tpayFailureEvidence.ts +75 -0
- package/src/payments/tpay/tpayHttpClient.ts +290 -0
- package/src/payments/tpay/tpayHttpFailure.ts +186 -0
- package/src/payments/tpay/tpayPaymentExecutionAdapter.ts +297 -0
- package/src/payments/tpay/tpayPaymentReconciliationProvider.ts +285 -0
- package/src/payments/tpay/tpayTransactionPayload.ts +207 -0
- package/src/payments/tpay/wallClockTime.ts +57 -0
- package/src/payments/tpay/webhookJwsVerifier.ts +82 -0
- package/src/payments/tpay/webhookNormalizer.ts +279 -0
- package/src/payments/verifiedEvidenceProjection.ts +179 -0
- package/src/payments/verifiedIngress.ts +317 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
-- A late settlement moves the subscription's next date out, and never pulls it in.
|
|
2
|
+
--
|
|
3
|
+
-- THIS FORWARD REPLACES public.commerce_record_settlement so that the schedule
|
|
4
|
+
-- advance it delegates -- "Departure 8", introduced by
|
|
5
|
+
-- 20260810180000_payment_settlement_rail.sql -- measures the whole days the
|
|
6
|
+
-- payment was LATE in addition to the cadence, and so that the write can only ever
|
|
7
|
+
-- move the date later.
|
|
8
|
+
--
|
|
9
|
+
-- WHAT WAS THERE, and why one cadence measured from the cycle is not enough:
|
|
10
|
+
--
|
|
11
|
+
-- next_cycle_at = v_cycle.scheduled_at + (cadence_days || ' days')::interval
|
|
12
|
+
--
|
|
13
|
+
-- Departure 8 chose the cycle rather than the instant the money arrived, and that
|
|
14
|
+
-- half of the ruling is CORRECT and is kept: an on-time settlement must land on
|
|
15
|
+
-- the original grid, to the second, not on whatever second a channel happened to
|
|
16
|
+
-- answer. What it did not account for is a settlement that arrives DAYS after the
|
|
17
|
+
-- cycle it pays for. A retry ladder above this kernel can carry a cycle a week and
|
|
18
|
+
-- a half past its scheduled date; the anchor did not move with it, so the interval
|
|
19
|
+
-- between the delivery just paid for and the next one shrank by exactly the delay.
|
|
20
|
+
-- On a 28-day cadence an eleven-day recovery leaves sixteen days between parcels,
|
|
21
|
+
-- which is the shape of a subscription that stacks goods on a customer who has not
|
|
22
|
+
-- consumed the previous ones yet.
|
|
23
|
+
--
|
|
24
|
+
-- The second defect was that the write was UNCONDITIONAL. Any rail above this one
|
|
25
|
+
-- that had already moved a subscription's date FURTHER out -- because a delivery
|
|
26
|
+
-- was delayed, replaced or re-sent -- had that later date silently overwritten by
|
|
27
|
+
-- this statement with an earlier one.
|
|
28
|
+
--
|
|
29
|
+
-- WHAT REPLACES IT:
|
|
30
|
+
--
|
|
31
|
+
-- next_cycle_at = GREATEST(next_cycle_at,
|
|
32
|
+
-- v_cycle.scheduled_at + make_interval(days =>
|
|
33
|
+
-- GREATEST(0, floor(extract(epoch FROM
|
|
34
|
+
-- (LEAST(p_occurred_at, now()) - v_cycle.scheduled_at)) / 86400.0)::int)
|
|
35
|
+
-- + cadence_days))
|
|
36
|
+
--
|
|
37
|
+
-- Read outward: whole days late (never a fraction of one, so an on-time or
|
|
38
|
+
-- minutes-late settlement truncates to zero and the anchor is byte-identical to
|
|
39
|
+
-- what this forward replaces); never negative, so paying early does not pull the
|
|
40
|
+
-- next delivery closer; LEAST bounds a channel that reports an instant in the
|
|
41
|
+
-- future, which is caller-supplied data this kernel does not trust; and the outer
|
|
42
|
+
-- GREATEST states the invariant directly -- this date extends or it stays, and
|
|
43
|
+
-- nothing here may move it earlier. GREATEST ignores NULL operands, so a
|
|
44
|
+
-- subscription with no date yet still receives the computed one. Lateness is
|
|
45
|
+
-- derived from p_occurred_at and never from a bare now(), so a replayed settlement
|
|
46
|
+
-- computes the same date it computed the first time.
|
|
47
|
+
--
|
|
48
|
+
-- PRESERVED, unchanged, from the definition this replaces: the validate-then-LOCK
|
|
49
|
+
-- ordering and the order-first lock sequence that keeps an opening caller and a
|
|
50
|
+
-- settling caller from deadlocking; the ledger-replay answer; Departure 3, the
|
|
51
|
+
-- outright refusal of a second settlement of a settled intent; the write-once
|
|
52
|
+
-- external reference; the cycle payability refusal; the `AND status = 'active'`
|
|
53
|
+
-- predicate that leaves a cancelled subscription's schedule alone; the declined
|
|
54
|
+
-- arm that leaves the order payable; and the transition row that ends the body.
|
|
55
|
+
-- The function keeps its argument list, its invoker rights, and its pinned
|
|
56
|
+
-- search_path, so this forward creates no table, index, trigger, role or grant.
|
|
57
|
+
--
|
|
58
|
+
-- WHY A NEW FORWARD RATHER THAN AN EDIT to 20260810180000: this catalogue's
|
|
59
|
+
-- migration runner asserts that the applied ledger is the EXACT manifest prefix,
|
|
60
|
+
-- sha256 included (server/adapters/postgres/migrationRunner.ts, readAppliedPrefix).
|
|
61
|
+
-- Rewriting a forward an adopter has already applied is therefore a hard boot
|
|
62
|
+
-- failure for that adopter, not a silent upgrade. Superseding it with a new
|
|
63
|
+
-- forward is what every previous replacement in this catalogue has done.
|
|
64
|
+
|
|
65
|
+
CREATE OR REPLACE FUNCTION public.commerce_record_settlement(
|
|
66
|
+
p_idempotency_key text,
|
|
67
|
+
p_intent_id uuid,
|
|
68
|
+
p_outcome text,
|
|
69
|
+
p_external_ref text DEFAULT NULL,
|
|
70
|
+
p_metadata jsonb DEFAULT '{}'::jsonb,
|
|
71
|
+
p_occurred_at timestamptz DEFAULT now()
|
|
72
|
+
)
|
|
73
|
+
RETURNS jsonb
|
|
74
|
+
LANGUAGE plpgsql
|
|
75
|
+
SET search_path = public, pg_catalog
|
|
76
|
+
AS $$
|
|
77
|
+
DECLARE
|
|
78
|
+
v_intent public.commerce_settlement_intents%ROWTYPE;
|
|
79
|
+
v_from text;
|
|
80
|
+
v_transition public.commerce_settlement_transitions%ROWTYPE;
|
|
81
|
+
v_order public.commerce_orders%ROWTYPE;
|
|
82
|
+
v_cycle public.subscription_cycles%ROWTYPE;
|
|
83
|
+
v_subscription public.subscriptions%ROWTYPE;
|
|
84
|
+
BEGIN
|
|
85
|
+
IF p_idempotency_key IS NULL OR char_length(btrim(p_idempotency_key)) < 8
|
|
86
|
+
OR p_intent_id IS NULL
|
|
87
|
+
OR p_outcome IS NULL OR p_outcome NOT IN ('succeeded', 'failed')
|
|
88
|
+
THEN
|
|
89
|
+
RAISE EXCEPTION 'commerce_settlement_record_invalid_input' USING ERRCODE = '22023';
|
|
90
|
+
END IF;
|
|
91
|
+
|
|
92
|
+
SELECT * INTO v_intent
|
|
93
|
+
FROM public.commerce_settlement_intents WHERE id = p_intent_id;
|
|
94
|
+
IF NOT FOUND THEN
|
|
95
|
+
RAISE EXCEPTION 'commerce_settlement_record_intent_not_found' USING ERRCODE = '22023';
|
|
96
|
+
END IF;
|
|
97
|
+
|
|
98
|
+
SELECT * INTO v_order
|
|
99
|
+
FROM public.commerce_orders WHERE id = v_intent.order_id FOR UPDATE;
|
|
100
|
+
|
|
101
|
+
SELECT * INTO v_intent
|
|
102
|
+
FROM public.commerce_settlement_intents WHERE id = p_intent_id FOR UPDATE;
|
|
103
|
+
|
|
104
|
+
SELECT * INTO v_transition
|
|
105
|
+
FROM public.commerce_settlement_transitions
|
|
106
|
+
WHERE intent_id = p_intent_id AND idempotency_key = p_idempotency_key;
|
|
107
|
+
IF FOUND THEN
|
|
108
|
+
RETURN public.commerce_settlement_response(v_intent, v_transition.id, v_transition.outcome, true);
|
|
109
|
+
END IF;
|
|
110
|
+
|
|
111
|
+
IF v_intent.status = 'settled' THEN
|
|
112
|
+
RAISE EXCEPTION 'commerce_settlement_record_intent_already_settled' USING ERRCODE = '22023';
|
|
113
|
+
END IF;
|
|
114
|
+
|
|
115
|
+
-- Write-once, and compared rather than overwritten: a channel that hands back a different handle
|
|
116
|
+
-- for the same intent is describing a different payment.
|
|
117
|
+
IF v_intent.external_ref IS NOT NULL AND p_external_ref IS NOT NULL
|
|
118
|
+
AND v_intent.external_ref IS DISTINCT FROM p_external_ref
|
|
119
|
+
THEN
|
|
120
|
+
RAISE EXCEPTION 'commerce_settlement_record_external_reference_immutable' USING ERRCODE = '22023';
|
|
121
|
+
END IF;
|
|
122
|
+
|
|
123
|
+
v_from := v_intent.status;
|
|
124
|
+
|
|
125
|
+
IF p_outcome = 'succeeded' THEN
|
|
126
|
+
-- An order somebody took off the table between the ask and the answer is not paid into. The
|
|
127
|
+
-- money question then belongs to whoever cancelled it, and this kernel has no refund verb.
|
|
128
|
+
IF v_order.status <> 'pending_payment' THEN
|
|
129
|
+
RAISE EXCEPTION 'commerce_settlement_record_order_not_payable' USING ERRCODE = '22023';
|
|
130
|
+
END IF;
|
|
131
|
+
|
|
132
|
+
UPDATE public.commerce_settlement_intents
|
|
133
|
+
SET status = 'settled',
|
|
134
|
+
settled_at = p_occurred_at,
|
|
135
|
+
external_ref = COALESCE(external_ref, p_external_ref),
|
|
136
|
+
failure_reason = NULL,
|
|
137
|
+
updated_at = p_occurred_at
|
|
138
|
+
WHERE id = p_intent_id
|
|
139
|
+
RETURNING * INTO v_intent;
|
|
140
|
+
|
|
141
|
+
-- The order transition is the delegation onto the order rail: that rail owns `paid`, owns the
|
|
142
|
+
-- notification it produces, and its emitter fires from this statement without this forward
|
|
143
|
+
-- restating a single line of it.
|
|
144
|
+
UPDATE public.commerce_orders
|
|
145
|
+
SET status = 'paid', paid_at = p_occurred_at, updated_at = p_occurred_at
|
|
146
|
+
WHERE id = v_intent.order_id
|
|
147
|
+
RETURNING * INTO v_order;
|
|
148
|
+
|
|
149
|
+
IF v_order.subscription_cycle_id IS NOT NULL THEN
|
|
150
|
+
SELECT * INTO v_cycle
|
|
151
|
+
FROM public.subscription_cycles WHERE id = v_order.subscription_cycle_id FOR UPDATE;
|
|
152
|
+
IF NOT FOUND THEN
|
|
153
|
+
RAISE EXCEPTION 'commerce_settlement_record_cycle_not_found' USING ERRCODE = '22023';
|
|
154
|
+
END IF;
|
|
155
|
+
IF v_cycle.status NOT IN ('planned', 'payment_pending') THEN
|
|
156
|
+
RAISE EXCEPTION 'commerce_settlement_record_cycle_not_payable' USING ERRCODE = '22023';
|
|
157
|
+
END IF;
|
|
158
|
+
|
|
159
|
+
SELECT * INTO v_subscription
|
|
160
|
+
FROM public.subscriptions WHERE id = v_cycle.subscription_id FOR UPDATE;
|
|
161
|
+
|
|
162
|
+
UPDATE public.subscription_cycles
|
|
163
|
+
SET status = 'paid', updated_at = p_occurred_at
|
|
164
|
+
WHERE id = v_cycle.id;
|
|
165
|
+
|
|
166
|
+
-- Departure 8, revised: one cadence past the cycle that was just paid for PLUS the whole
|
|
167
|
+
-- days the payment itself was late -- so a recovery that took eleven days moves the next
|
|
168
|
+
-- delivery out by eleven days instead of stacking it on top of the parcel just shipped.
|
|
169
|
+
-- Whole days only, so an on-time settlement still lands on the original grid, to the
|
|
170
|
+
-- second. The inner GREATEST refuses a negative shift for an early payment; LEAST bounds a
|
|
171
|
+
-- channel that reports a future instant; the outer GREATEST is the invariant itself -- this
|
|
172
|
+
-- date may extend and may never move earlier, whoever set the value it is replacing. A
|
|
173
|
+
-- subscription nobody is running any more is not slid: settlement truth still applies to a
|
|
174
|
+
-- cancelled subscription, but its schedule is not this function's to revive.
|
|
175
|
+
UPDATE public.subscriptions
|
|
176
|
+
SET next_cycle_at = GREATEST(
|
|
177
|
+
next_cycle_at,
|
|
178
|
+
v_cycle.scheduled_at + make_interval(days =>
|
|
179
|
+
GREATEST(0, floor(extract(epoch FROM
|
|
180
|
+
(LEAST(p_occurred_at, now()) - v_cycle.scheduled_at)) / 86400.0)::int)
|
|
181
|
+
+ cadence_days)),
|
|
182
|
+
updated_at = p_occurred_at
|
|
183
|
+
WHERE id = v_subscription.id
|
|
184
|
+
AND status = 'active';
|
|
185
|
+
|
|
186
|
+
INSERT INTO public.subscription_events
|
|
187
|
+
(subscription_id, event_type, idempotency_key, payload, occurred_at)
|
|
188
|
+
VALUES (v_subscription.id, 'subscription.cycle_settled',
|
|
189
|
+
p_idempotency_key || ':subscription',
|
|
190
|
+
jsonb_build_object('cycleId', v_cycle.id, 'orderId', v_order.id,
|
|
191
|
+
'settlementId', v_intent.id),
|
|
192
|
+
p_occurred_at)
|
|
193
|
+
ON CONFLICT (subscription_id, idempotency_key) DO NOTHING;
|
|
194
|
+
END IF;
|
|
195
|
+
ELSE
|
|
196
|
+
-- Departure 4: the order is untouched, so it stays `pending_payment` and can be settled again.
|
|
197
|
+
UPDATE public.commerce_settlement_intents
|
|
198
|
+
SET status = 'failed',
|
|
199
|
+
external_ref = COALESCE(external_ref, p_external_ref),
|
|
200
|
+
failure_reason = COALESCE(NULLIF(btrim(COALESCE(p_metadata, '{}'::jsonb)->>'reason'), ''),
|
|
201
|
+
'declined'),
|
|
202
|
+
updated_at = p_occurred_at
|
|
203
|
+
WHERE id = p_intent_id
|
|
204
|
+
RETURNING * INTO v_intent;
|
|
205
|
+
END IF;
|
|
206
|
+
|
|
207
|
+
INSERT INTO public.commerce_settlement_transitions
|
|
208
|
+
(intent_id, from_status, to_status, outcome, idempotency_key, payload, occurred_at)
|
|
209
|
+
VALUES (p_intent_id, v_from, v_intent.status, p_outcome, p_idempotency_key,
|
|
210
|
+
COALESCE(p_metadata, '{}'::jsonb), p_occurred_at)
|
|
211
|
+
RETURNING * INTO v_transition;
|
|
212
|
+
|
|
213
|
+
RETURN public.commerce_settlement_response(v_intent, v_transition.id, p_outcome, false);
|
|
214
|
+
END;
|
|
215
|
+
$$;
|