@classytic/commerce-sdk 0.1.2 → 0.2.1
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/README.md +277 -146
- package/dist/accounting/api/account.d.ts +49 -0
- package/dist/accounting/api/account.js +45 -0
- package/dist/accounting/api/budget.d.ts +76 -0
- package/dist/accounting/api/budget.js +82 -0
- package/dist/accounting/api/constants.d.ts +58 -0
- package/dist/accounting/api/constants.js +79 -0
- package/dist/accounting/api/fiscal-period.d.ts +31 -0
- package/dist/accounting/api/fiscal-period.js +30 -0
- package/dist/accounting/api/index.d.ts +7 -0
- package/dist/accounting/api/journal-entry.d.ts +66 -0
- package/dist/accounting/api/journal-entry.js +72 -0
- package/dist/accounting/api/posting.d.ts +55 -0
- package/dist/accounting/api/posting.js +70 -0
- package/dist/accounting/api/reports.d.ts +63 -0
- package/dist/accounting/api/reports.js +81 -0
- package/dist/accounting/hooks/account.d.ts +29 -0
- package/dist/accounting/hooks/account.js +102 -0
- package/dist/accounting/hooks/budget.d.ts +39 -0
- package/dist/accounting/hooks/budget.js +106 -0
- package/dist/accounting/hooks/fiscal-period.d.ts +22 -0
- package/dist/accounting/hooks/fiscal-period.js +52 -0
- package/dist/accounting/hooks/index.d.ts +6 -0
- package/dist/accounting/hooks/journal-entry.d.ts +37 -0
- package/dist/accounting/hooks/journal-entry.js +89 -0
- package/dist/accounting/hooks/posting.d.ts +128 -0
- package/dist/accounting/hooks/posting.js +119 -0
- package/dist/accounting/hooks/reports.d.ts +32 -0
- package/dist/accounting/hooks/reports.js +131 -0
- package/dist/accounting/index.d.ts +15 -0
- package/dist/accounting/index.js +15 -0
- package/dist/accounting/types/index.d.ts +375 -0
- package/dist/analytics/api/analytics.d.ts +16 -0
- package/dist/analytics/api/analytics.js +27 -0
- package/dist/analytics/api/index.d.ts +1 -0
- package/dist/analytics/hooks/analytics.d.ts +12 -0
- package/dist/analytics/hooks/analytics.js +33 -0
- package/dist/analytics/hooks/index.d.ts +1 -0
- package/dist/analytics/index.d.ts +4 -27
- package/dist/analytics/index.js +4 -6
- package/dist/analytics/types.d.ts +46 -0
- package/dist/audit/api/audit.d.ts +17 -0
- package/dist/audit/api/audit.js +21 -0
- package/dist/audit/hooks/audit.d.ts +17 -0
- package/dist/audit/hooks/audit.js +38 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.js +4 -0
- package/dist/audit/types/index.d.ts +32 -0
- package/dist/auth/api/user-data.d.ts +30 -0
- package/dist/auth/api/user-data.js +70 -0
- package/dist/auth/hooks/user-search.d.ts +32 -0
- package/dist/auth/hooks/user-search.js +51 -0
- package/dist/auth/index.d.ts +4 -39
- package/dist/auth/index.js +5 -5
- package/dist/auth/types.d.ts +46 -0
- package/dist/auth/types.js +27 -0
- package/dist/catalog/api/category.d.ts +97 -0
- package/dist/catalog/api/category.js +109 -0
- package/dist/catalog/api/index.d.ts +4 -0
- package/dist/catalog/api/product.d.ts +136 -0
- package/dist/catalog/api/product.js +142 -0
- package/dist/catalog/api/review.d.ts +32 -0
- package/dist/catalog/api/review.js +41 -0
- package/dist/catalog/api/size-guide.d.ts +46 -0
- package/dist/catalog/api/size-guide.js +58 -0
- package/dist/catalog/hooks/category.d.ts +201 -0
- package/dist/catalog/hooks/category.js +295 -0
- package/dist/catalog/hooks/index.d.ts +4 -0
- package/dist/catalog/hooks/product.d.ts +165 -0
- package/dist/catalog/hooks/product.js +267 -0
- package/dist/catalog/hooks/review.d.ts +18 -0
- package/dist/catalog/hooks/review.js +38 -0
- package/dist/catalog/hooks/size-guide.d.ts +136 -0
- package/dist/catalog/hooks/size-guide.js +173 -0
- package/dist/catalog/index.d.ts +13 -571
- package/dist/catalog/index.js +10 -9
- package/dist/catalog/prefetch.d.ts +29 -0
- package/dist/catalog/prefetch.js +32 -0
- package/dist/catalog/types/category.d.ts +168 -0
- package/dist/catalog/types/index.d.ts +4 -0
- package/dist/catalog/types/product.d.ts +261 -0
- package/dist/catalog/types/review.d.ts +48 -0
- package/dist/catalog/types/size-guide.d.ts +118 -0
- package/dist/client.d.ts +138 -0
- package/dist/client.js +129 -0
- package/dist/content/api/cms.d.ts +27 -0
- package/dist/content/api/cms.js +43 -0
- package/dist/content/api/index.d.ts +2 -0
- package/dist/content/api/media.d.ts +74 -0
- package/dist/content/api/media.js +77 -0
- package/dist/content/hooks/cms.d.ts +31 -0
- package/dist/content/hooks/cms.js +62 -0
- package/dist/content/hooks/index.d.ts +2 -0
- package/dist/content/hooks/media.d.ts +74 -0
- package/dist/content/hooks/media.js +153 -0
- package/dist/content/index.d.ts +7 -309
- package/dist/content/index.js +6 -6
- package/dist/content/types/cms.d.ts +390 -0
- package/dist/content/types/media.d.ts +110 -0
- package/dist/core/api-factory.d.ts +17 -0
- package/dist/core/api-factory.js +39 -0
- package/dist/core/api-handler.d.ts +53 -0
- package/dist/core/api-handler.js +89 -0
- package/dist/core/index.d.ts +4 -166
- package/dist/core/index.js +4 -5
- package/dist/core/prefetch.d.ts +2 -0
- package/dist/core/prefetch.js +3 -0
- package/dist/core/react/crud.factory.d.ts +3 -0
- package/dist/core/react/crud.factory.js +5 -0
- package/dist/core/react/index.d.ts +4 -0
- package/dist/core/react/index.js +7 -0
- package/dist/core/react/mutation.factory.d.ts +9 -0
- package/dist/core/react/mutation.factory.js +21 -0
- package/dist/core/react/query.factory.d.ts +12 -0
- package/dist/core/react/query.factory.js +5 -0
- package/dist/core/server-context.d.ts +6 -0
- package/dist/core/server-context.js +12 -0
- package/dist/core/types/shared.d.ts +29 -0
- package/dist/finance/api/finance.d.ts +22 -0
- package/dist/finance/api/finance.js +29 -0
- package/dist/finance/api/index.d.ts +1 -0
- package/dist/finance/hooks/finance.d.ts +32 -0
- package/dist/finance/hooks/finance.js +66 -0
- package/dist/finance/hooks/index.d.ts +1 -0
- package/dist/finance/index.d.ts +4 -81
- package/dist/finance/index.js +4 -5
- package/dist/finance/types/finance.d.ts +82 -0
- package/dist/index.d.ts +139 -32
- package/dist/index.js +113 -29
- package/dist/inventory/api/adjustment.d.ts +123 -0
- package/dist/inventory/api/adjustment.js +120 -0
- package/dist/inventory/api/availability.d.ts +70 -0
- package/dist/inventory/api/availability.js +47 -0
- package/dist/inventory/api/cost.d.ts +58 -0
- package/dist/inventory/api/cost.js +34 -0
- package/dist/inventory/api/index.d.ts +18 -0
- package/dist/inventory/api/lot.d.ts +82 -0
- package/dist/inventory/api/lot.js +46 -0
- package/dist/inventory/api/movement.d.ts +71 -0
- package/dist/inventory/api/movement.js +75 -0
- package/dist/inventory/api/package.d.ts +97 -0
- package/dist/inventory/api/package.js +56 -0
- package/dist/inventory/api/procurement.d.ts +110 -0
- package/dist/inventory/api/procurement.js +59 -0
- package/dist/inventory/api/purchase.d.ts +106 -0
- package/dist/inventory/api/purchase.js +115 -0
- package/dist/inventory/api/replenishment.d.ts +145 -0
- package/dist/inventory/api/replenishment.js +63 -0
- package/dist/inventory/api/report.d.ts +102 -0
- package/dist/inventory/api/report.js +54 -0
- package/dist/inventory/api/request.d.ts +157 -0
- package/dist/inventory/api/request.js +140 -0
- package/dist/inventory/api/reservation.d.ts +77 -0
- package/dist/inventory/api/reservation.js +51 -0
- package/dist/inventory/api/scan.d.ts +29 -0
- package/dist/inventory/api/scan.js +30 -0
- package/dist/inventory/api/supplier.d.ts +9 -0
- package/dist/inventory/api/supplier.js +24 -0
- package/dist/inventory/api/trace.d.ts +71 -0
- package/dist/inventory/api/trace.js +39 -0
- package/dist/inventory/api/transfer.d.ts +162 -0
- package/dist/inventory/api/transfer.js +155 -0
- package/dist/inventory/api/warehouse.d.ts +199 -0
- package/dist/inventory/api/warehouse.js +155 -0
- package/dist/inventory/hooks/adjustment.d.ts +24 -0
- package/dist/inventory/hooks/adjustment.js +30 -0
- package/dist/inventory/hooks/availability.d.ts +16 -0
- package/dist/inventory/hooks/availability.js +35 -0
- package/dist/inventory/hooks/cost.d.ts +21 -0
- package/dist/inventory/hooks/cost.js +50 -0
- package/dist/inventory/hooks/index.d.ts +18 -0
- package/dist/inventory/hooks/inventory.d.ts +130 -0
- package/dist/inventory/hooks/inventory.js +267 -0
- package/dist/inventory/hooks/lot.d.ts +26 -0
- package/dist/inventory/hooks/lot.js +67 -0
- package/dist/inventory/hooks/movement.d.ts +68 -0
- package/dist/inventory/hooks/movement.js +106 -0
- package/dist/inventory/hooks/package.d.ts +32 -0
- package/dist/inventory/hooks/package.js +80 -0
- package/dist/inventory/hooks/procurement.d.ts +28 -0
- package/dist/inventory/hooks/procurement.js +87 -0
- package/dist/inventory/hooks/purchase.d.ts +63 -0
- package/dist/inventory/hooks/purchase.js +119 -0
- package/dist/inventory/hooks/replenishment.d.ts +34 -0
- package/dist/inventory/hooks/replenishment.js +87 -0
- package/dist/inventory/hooks/report.d.ts +37 -0
- package/dist/inventory/hooks/report.js +79 -0
- package/dist/inventory/hooks/request.d.ts +113 -0
- package/dist/inventory/hooks/request.js +218 -0
- package/dist/inventory/hooks/reservation.d.ts +25 -0
- package/dist/inventory/hooks/reservation.js +56 -0
- package/dist/inventory/hooks/scan.d.ts +14 -0
- package/dist/inventory/hooks/scan.js +22 -0
- package/dist/inventory/hooks/supplier.d.ts +24 -0
- package/dist/inventory/hooks/supplier.js +30 -0
- package/dist/inventory/hooks/trace.d.ts +19 -0
- package/dist/inventory/hooks/trace.js +55 -0
- package/dist/inventory/hooks/transfer.d.ts +90 -0
- package/dist/inventory/hooks/transfer.js +197 -0
- package/dist/inventory/hooks/warehouse.d.ts +87 -0
- package/dist/inventory/hooks/warehouse.js +240 -0
- package/dist/inventory/index.d.ts +39 -512
- package/dist/inventory/index.js +37 -16
- package/dist/inventory/types/index.d.ts +3 -0
- package/dist/inventory/types/inventory.d.ts +485 -0
- package/dist/inventory/types/supplier.d.ts +90 -0
- package/dist/inventory/types/warehouse.d.ts +182 -0
- package/dist/logistics/api/index.d.ts +1 -0
- package/dist/logistics/api/logistics.d.ts +260 -0
- package/dist/logistics/api/logistics.js +249 -0
- package/dist/logistics/hooks/index.d.ts +1 -0
- package/dist/logistics/hooks/logistics.d.ts +252 -0
- package/dist/logistics/hooks/logistics.js +370 -0
- package/dist/logistics/index.d.ts +4 -248
- package/dist/logistics/index.js +4 -7
- package/dist/logistics/types/logistics.d.ts +188 -0
- package/dist/node_modules/@tanstack/query-core/build/modern/hydration-C-jfQLut.d.ts +270 -0
- package/dist/notifications/api/notification.d.ts +15 -0
- package/dist/notifications/api/notification.js +43 -0
- package/dist/notifications/hooks/notification.d.ts +34 -0
- package/dist/notifications/hooks/notification.js +86 -0
- package/dist/notifications/hooks/stream.d.ts +22 -0
- package/dist/notifications/hooks/stream.js +80 -0
- package/dist/notifications/index.d.ts +5 -0
- package/dist/notifications/index.js +5 -0
- package/dist/notifications/types/index.d.ts +57 -0
- package/dist/payments/api/index.d.ts +1 -0
- package/dist/payments/api/payment.d.ts +89 -0
- package/dist/payments/api/payment.js +93 -0
- package/dist/payments/hooks/payment.d.ts +53 -0
- package/dist/payments/hooks/payment.js +93 -0
- package/dist/payments/index.d.ts +4 -55
- package/dist/payments/index.js +4 -6
- package/dist/payments/types/payment.d.ts +50 -0
- package/dist/permissions/checker.d.ts +125 -0
- package/dist/permissions/checker.js +150 -0
- package/dist/permissions/index.d.ts +3 -0
- package/dist/permissions/index.js +4 -0
- package/dist/permissions/roles.d.ts +39 -0
- package/dist/permissions/roles.js +66 -0
- package/dist/platform/api/branch.d.ts +57 -0
- package/dist/platform/api/branch.js +73 -0
- package/dist/platform/api/config.d.ts +67 -0
- package/dist/platform/api/config.js +83 -0
- package/dist/platform/api/features.d.ts +15 -0
- package/dist/platform/api/features.js +20 -0
- package/dist/platform/api/index.d.ts +6 -0
- package/dist/platform/api/promo.d.ts +286 -0
- package/dist/platform/api/promo.js +276 -0
- package/dist/platform/api/user.d.ts +10 -0
- package/dist/platform/api/user.js +29 -0
- package/dist/platform/api/webhook.d.ts +102 -0
- package/dist/platform/api/webhook.js +124 -0
- package/dist/platform/hooks/branch.d.ts +24 -0
- package/dist/platform/hooks/branch.js +31 -0
- package/dist/platform/hooks/config.d.ts +61 -0
- package/dist/platform/hooks/config.js +100 -0
- package/dist/platform/hooks/features.d.ts +22 -0
- package/dist/platform/hooks/features.js +75 -0
- package/dist/platform/hooks/index.d.ts +6 -0
- package/dist/platform/hooks/promo.d.ts +218 -0
- package/dist/platform/hooks/promo.js +451 -0
- package/dist/platform/hooks/user.d.ts +24 -0
- package/dist/platform/hooks/user.js +30 -0
- package/dist/platform/index.d.ts +18 -645
- package/dist/platform/index.js +14 -8
- package/dist/platform/prefetch.d.ts +9 -0
- package/dist/platform/prefetch.js +11 -0
- package/dist/platform/types/branch.d.ts +110 -0
- package/dist/platform/types/branch.js +16 -0
- package/dist/platform/types/config.d.ts +137 -0
- package/dist/platform/types/features.d.ts +46 -0
- package/dist/platform/types/promo.d.ts +260 -0
- package/dist/platform/types/user.d.ts +72 -0
- package/dist/platform/types/webhook.d.ts +165 -0
- package/dist/sales/api/cart.d.ts +34 -0
- package/dist/sales/api/cart.js +38 -0
- package/dist/sales/api/customer.d.ts +40 -0
- package/dist/sales/api/customer.js +52 -0
- package/dist/sales/api/earning-rules.d.ts +54 -0
- package/dist/sales/api/earning-rules.js +56 -0
- package/dist/sales/api/index.d.ts +9 -0
- package/dist/sales/api/loyalty.d.ts +54 -0
- package/dist/sales/api/loyalty.js +57 -0
- package/dist/sales/api/order.d.ts +147 -0
- package/dist/sales/api/order.js +69 -0
- package/dist/sales/api/pos.d.ts +81 -0
- package/dist/sales/api/pos.js +95 -0
- package/dist/sales/api/referrals.d.ts +63 -0
- package/dist/sales/api/referrals.js +62 -0
- package/dist/sales/api/tiers.d.ts +66 -0
- package/dist/sales/api/tiers.js +59 -0
- package/dist/sales/hooks/cart.d.ts +50 -0
- package/dist/sales/hooks/cart.js +161 -0
- package/dist/sales/hooks/customer.d.ts +100 -0
- package/dist/sales/hooks/customer.js +130 -0
- package/dist/sales/hooks/earning-rules.d.ts +31 -0
- package/dist/sales/hooks/earning-rules.js +112 -0
- package/dist/sales/hooks/index.d.ts +8 -0
- package/dist/sales/hooks/loyalty.d.ts +51 -0
- package/dist/sales/hooks/loyalty.js +122 -0
- package/dist/sales/hooks/order.d.ts +219 -0
- package/dist/sales/hooks/order.js +401 -0
- package/dist/sales/hooks/pos.d.ts +87 -0
- package/dist/sales/hooks/pos.js +222 -0
- package/dist/sales/hooks/referrals.d.ts +34 -0
- package/dist/sales/hooks/referrals.js +132 -0
- package/dist/sales/hooks/tiers.d.ts +32 -0
- package/dist/sales/hooks/tiers.js +144 -0
- package/dist/sales/index.d.ts +25 -620
- package/dist/sales/index.js +19 -9
- package/dist/sales/prefetch.d.ts +10 -0
- package/dist/sales/prefetch.js +13 -0
- package/dist/sales/types/cart.d.ts +123 -0
- package/dist/sales/types/customer.d.ts +119 -0
- package/dist/sales/types/earning-rules.d.ts +75 -0
- package/dist/sales/types/index.d.ts +8 -0
- package/dist/sales/types/loyalty.d.ts +120 -0
- package/dist/sales/types/order.d.ts +487 -0
- package/dist/sales/types/order.js +22 -0
- package/dist/sales/types/pos.d.ts +227 -0
- package/dist/sales/types/referrals.d.ts +51 -0
- package/dist/sales/types/tiers.d.ts +56 -0
- package/dist/server.d.ts +41 -23
- package/dist/server.js +41 -36
- package/dist/transaction/api/index.d.ts +1 -0
- package/dist/transaction/api/transaction.d.ts +63 -0
- package/dist/transaction/api/transaction.js +84 -0
- package/dist/transaction/hooks/index.d.ts +1 -0
- package/dist/transaction/hooks/transaction.d.ts +106 -0
- package/dist/transaction/hooks/transaction.js +156 -0
- package/dist/transaction/index.d.ts +4 -104
- package/dist/transaction/index.js +5 -8
- package/dist/transaction/types/transaction.d.ts +440 -0
- package/dist/transaction/types/transaction.js +86 -0
- package/package.json +36 -25
- package/dist/adjustment-MNH3AT6S.js +0 -5
- package/dist/adjustment-MNH3AT6S.js.map +0 -1
- package/dist/analytics/index.js.map +0 -1
- package/dist/analytics-DMcD-o8w.d.ts +0 -76
- package/dist/api-factory-B_h4RKBm.d.ts +0 -280
- package/dist/auth/index.js.map +0 -1
- package/dist/catalog/index.js.map +0 -1
- package/dist/chunk-24FDD6UR.js +0 -75
- package/dist/chunk-24FDD6UR.js.map +0 -1
- package/dist/chunk-2TF7QNYV.js +0 -159
- package/dist/chunk-2TF7QNYV.js.map +0 -1
- package/dist/chunk-2YAZ5WG6.js +0 -479
- package/dist/chunk-2YAZ5WG6.js.map +0 -1
- package/dist/chunk-36NLLAVH.js +0 -177
- package/dist/chunk-36NLLAVH.js.map +0 -1
- package/dist/chunk-3OYSJB3P.js +0 -126
- package/dist/chunk-3OYSJB3P.js.map +0 -1
- package/dist/chunk-4IYW6RF3.js +0 -862
- package/dist/chunk-4IYW6RF3.js.map +0 -1
- package/dist/chunk-5E57JODA.js +0 -135
- package/dist/chunk-5E57JODA.js.map +0 -1
- package/dist/chunk-7LZCW4VF.js +0 -13
- package/dist/chunk-7LZCW4VF.js.map +0 -1
- package/dist/chunk-AQAISI4F.js +0 -183
- package/dist/chunk-AQAISI4F.js.map +0 -1
- package/dist/chunk-B6MPVOV7.js +0 -328
- package/dist/chunk-B6MPVOV7.js.map +0 -1
- package/dist/chunk-CILP56G2.js +0 -94
- package/dist/chunk-CILP56G2.js.map +0 -1
- package/dist/chunk-ERQ52WHY.js +0 -534
- package/dist/chunk-ERQ52WHY.js.map +0 -1
- package/dist/chunk-FOTUJPM4.js +0 -640
- package/dist/chunk-FOTUJPM4.js.map +0 -1
- package/dist/chunk-IHCBBLLW.js +0 -198
- package/dist/chunk-IHCBBLLW.js.map +0 -1
- package/dist/chunk-L4OEI4VZ.js +0 -123
- package/dist/chunk-L4OEI4VZ.js.map +0 -1
- package/dist/chunk-LRV7MWWX.js +0 -616
- package/dist/chunk-LRV7MWWX.js.map +0 -1
- package/dist/chunk-M3B4DFTT.js +0 -76
- package/dist/chunk-M3B4DFTT.js.map +0 -1
- package/dist/chunk-N43VE355.js +0 -126
- package/dist/chunk-N43VE355.js.map +0 -1
- package/dist/chunk-PYYLHUV6.js +0 -3
- package/dist/chunk-PYYLHUV6.js.map +0 -1
- package/dist/chunk-QCTXAMLA.js +0 -261
- package/dist/chunk-QCTXAMLA.js.map +0 -1
- package/dist/chunk-RIKAPJNG.js +0 -40
- package/dist/chunk-RIKAPJNG.js.map +0 -1
- package/dist/chunk-U3XT35GZ.js +0 -202
- package/dist/chunk-U3XT35GZ.js.map +0 -1
- package/dist/chunk-W22WB3WZ.js +0 -148
- package/dist/chunk-W22WB3WZ.js.map +0 -1
- package/dist/chunk-WTIJMKML.js +0 -27
- package/dist/chunk-WTIJMKML.js.map +0 -1
- package/dist/chunk-X2CQFJPR.js +0 -75
- package/dist/chunk-X2CQFJPR.js.map +0 -1
- package/dist/chunk-YYFKLOKO.js +0 -769
- package/dist/chunk-YYFKLOKO.js.map +0 -1
- package/dist/client-BPG8fbae.d.ts +0 -113
- package/dist/content/index.js.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/react.d.ts +0 -107
- package/dist/core/react.js +0 -5
- package/dist/core/react.js.map +0 -1
- package/dist/coupon-BZSZ0y3n.d.ts +0 -129
- package/dist/coupon-CDzL4bJG.d.ts +0 -655
- package/dist/crud.factory-DyKaPHcU.d.ts +0 -181
- package/dist/finance/index.js.map +0 -1
- package/dist/finance-BJdfKRw0.d.ts +0 -135
- package/dist/index.js.map +0 -1
- package/dist/inventory/index.js.map +0 -1
- package/dist/inventory-B5pssqRx.d.ts +0 -748
- package/dist/logistics/index.js.map +0 -1
- package/dist/logistics-REVDorcc.d.ts +0 -410
- package/dist/media-CNLJK93J.d.ts +0 -721
- package/dist/movement-R3CERFAM.js +0 -5
- package/dist/movement-R3CERFAM.js.map +0 -1
- package/dist/order-BfdPxZiA.d.ts +0 -412
- package/dist/payment-BRboLqvU.d.ts +0 -127
- package/dist/payments/index.js.map +0 -1
- package/dist/platform/index.js.map +0 -1
- package/dist/pos-C-sBzevg.d.ts +0 -538
- package/dist/product-p09zXkXB.d.ts +0 -260
- package/dist/purchase-54PER2PY.js +0 -5
- package/dist/purchase-54PER2PY.js.map +0 -1
- package/dist/request-MP6NV5ZE.js +0 -5
- package/dist/request-MP6NV5ZE.js.map +0 -1
- package/dist/sales/index.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/size-guide-DgjzjM5P.d.ts +0 -554
- package/dist/stock-2LP4HJSB.js +0 -5
- package/dist/stock-2LP4HJSB.js.map +0 -1
- package/dist/stock-CfrU5_Wr.d.ts +0 -632
- package/dist/supplier-BWJTRZ5Z.js +0 -5
- package/dist/supplier-BWJTRZ5Z.js.map +0 -1
- package/dist/transaction/index.js.map +0 -1
- package/dist/transaction-Bf6WjYCh.d.ts +0 -84
- package/dist/transaction-dL3WW-er.d.ts +0 -442
- package/dist/transfer-4XSS6HWT.js +0 -5
- package/dist/transfer-4XSS6HWT.js.map +0 -1
- package/dist/user-data-DdLjAGwO.d.ts +0 -132
package/dist/chunk-2YAZ5WG6.js
DELETED
|
@@ -1,479 +0,0 @@
|
|
|
1
|
-
import { BaseApi } from './chunk-QCTXAMLA.js';
|
|
2
|
-
import { getToastHandler } from './chunk-U3XT35GZ.js';
|
|
3
|
-
import { handleApiRequest } from './chunk-IHCBBLLW.js';
|
|
4
|
-
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
5
|
-
|
|
6
|
-
// src/logistics/api/logistics.ts
|
|
7
|
-
var LogisticsApi = class extends BaseApi {
|
|
8
|
-
constructor(config = {}) {
|
|
9
|
-
super("logistics", config);
|
|
10
|
-
}
|
|
11
|
-
// ============================================
|
|
12
|
-
// CHARGE CALCULATION (Public)
|
|
13
|
-
// ============================================
|
|
14
|
-
/**
|
|
15
|
-
* Calculate delivery charge via provider API (e.g., RedX)
|
|
16
|
-
* GET /logistics/charge
|
|
17
|
-
*
|
|
18
|
-
* Use this to get real-time delivery charges from the logistics provider
|
|
19
|
-
* before creating an order.
|
|
20
|
-
*
|
|
21
|
-
* @param deliveryAreaId - Area internalId from @classytic/bd-areas
|
|
22
|
-
* @param amount - COD amount in BDT (use 0 for prepaid orders)
|
|
23
|
-
* @param weight - Parcel weight in grams (default: 500g)
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* import { searchAreas } from '@classytic/bd-areas';
|
|
27
|
-
*
|
|
28
|
-
* // 1. User selects area
|
|
29
|
-
* const areas = searchAreas('mohamm');
|
|
30
|
-
* const selectedArea = areas[0]; // { internalId: 1206, name: 'Mohammadpur', ... }
|
|
31
|
-
*
|
|
32
|
-
* // 2. Calculate delivery charge
|
|
33
|
-
* const { data } = await logisticsApi.calculateCharge({
|
|
34
|
-
* deliveryAreaId: selectedArea.internalId,
|
|
35
|
-
* amount: isCOD ? cartTotal : 0,
|
|
36
|
-
* });
|
|
37
|
-
* // { deliveryCharge: 60, codCharge: 15, totalCharge: 75 }
|
|
38
|
-
*/
|
|
39
|
-
async calculateCharge({
|
|
40
|
-
deliveryAreaId,
|
|
41
|
-
pickupAreaId,
|
|
42
|
-
amount,
|
|
43
|
-
weight,
|
|
44
|
-
provider,
|
|
45
|
-
options = {}
|
|
46
|
-
}) {
|
|
47
|
-
if (!deliveryAreaId || amount === void 0) {
|
|
48
|
-
throw new Error("deliveryAreaId and amount are required");
|
|
49
|
-
}
|
|
50
|
-
const queryString = this.createQueryString({
|
|
51
|
-
deliveryAreaId,
|
|
52
|
-
pickupAreaId,
|
|
53
|
-
amount,
|
|
54
|
-
weight,
|
|
55
|
-
provider
|
|
56
|
-
});
|
|
57
|
-
return handleApiRequest("GET", `${this.baseUrl}/charge?${queryString}`, {
|
|
58
|
-
cache: "no-store",
|
|
59
|
-
...options
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
// ============================================
|
|
63
|
-
// CONFIG ENDPOINTS (Admin - Read-only)
|
|
64
|
-
// ============================================
|
|
65
|
-
/**
|
|
66
|
-
* Get logistics configuration (read-only from .env)
|
|
67
|
-
* GET /logistics/config
|
|
68
|
-
*
|
|
69
|
-
* NOTE: Configuration is managed via environment variables.
|
|
70
|
-
* To change settings, update .env file and restart server.
|
|
71
|
-
*/
|
|
72
|
-
async getConfig({
|
|
73
|
-
token,
|
|
74
|
-
options = {}
|
|
75
|
-
}) {
|
|
76
|
-
return handleApiRequest("GET", `${this.baseUrl}/config`, {
|
|
77
|
-
token,
|
|
78
|
-
cache: "no-store",
|
|
79
|
-
...options
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
// ============================================
|
|
83
|
-
// PICKUP STORES (Admin)
|
|
84
|
-
// ============================================
|
|
85
|
-
/**
|
|
86
|
-
* Get pickup stores from RedX API
|
|
87
|
-
* GET /logistics/pickup-stores
|
|
88
|
-
*
|
|
89
|
-
* Pickup stores are created by admin in RedX dashboard.
|
|
90
|
-
* Use this to list available pickup locations when creating shipments.
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* // Admin: List pickup stores for shipment creation
|
|
94
|
-
* const { data: stores } = await logisticsApi.getPickupStores({ token });
|
|
95
|
-
*
|
|
96
|
-
* // Display in dropdown for admin to select
|
|
97
|
-
* stores.forEach(store => {
|
|
98
|
-
* console.log(`${store.name} - ${store.areaName} (ID: ${store.id})`);
|
|
99
|
-
* });
|
|
100
|
-
*
|
|
101
|
-
* // Use selected store when creating shipment
|
|
102
|
-
* await logisticsApi.createShipment({
|
|
103
|
-
* token,
|
|
104
|
-
* data: {
|
|
105
|
-
* orderId: order._id,
|
|
106
|
-
* pickupStoreId: selectedStore.id, // From dropdown
|
|
107
|
-
* },
|
|
108
|
-
* });
|
|
109
|
-
*/
|
|
110
|
-
async getPickupStores({
|
|
111
|
-
token,
|
|
112
|
-
provider,
|
|
113
|
-
options = {}
|
|
114
|
-
}) {
|
|
115
|
-
const queryString = provider ? `?provider=${provider}` : "";
|
|
116
|
-
return handleApiRequest(
|
|
117
|
-
"GET",
|
|
118
|
-
`${this.baseUrl}/pickup-stores${queryString}`,
|
|
119
|
-
{
|
|
120
|
-
token,
|
|
121
|
-
cache: "no-store",
|
|
122
|
-
...options
|
|
123
|
-
}
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
// ============================================
|
|
127
|
-
// SHIPPING ENDPOINTS (Admin/Store Manager)
|
|
128
|
-
// ============================================
|
|
129
|
-
/**
|
|
130
|
-
* Request shipping for an order (manual or provider API)
|
|
131
|
-
* POST /orders/:id/shipping
|
|
132
|
-
*
|
|
133
|
-
* This updates the order.shipping object and optionally triggers
|
|
134
|
-
* provider API shipment creation when useProviderApi=true.
|
|
135
|
-
*
|
|
136
|
-
* @example
|
|
137
|
-
* // Manual: Record tracking details
|
|
138
|
-
* const shipping = await logisticsApi.createShipment({
|
|
139
|
-
* token,
|
|
140
|
-
* orderId: order._id,
|
|
141
|
-
* data: {
|
|
142
|
-
* provider: "other",
|
|
143
|
-
* trackingNumber: "COURIER123456",
|
|
144
|
-
* trackingUrl: "https://courier-website.com/track/COURIER123456",
|
|
145
|
-
* },
|
|
146
|
-
* });
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* // Provider API: Create shipment with pickup store
|
|
150
|
-
* const { data: stores } = await logisticsApi.getPickupStores({ token });
|
|
151
|
-
* const shipping = await logisticsApi.createShipment({
|
|
152
|
-
* token,
|
|
153
|
-
* orderId: order._id,
|
|
154
|
-
* data: {
|
|
155
|
-
* provider: "redx",
|
|
156
|
-
* useProviderApi: true,
|
|
157
|
-
* pickupStoreId: stores[0].id, // Select pickup location
|
|
158
|
-
* weight: 500, // Parcel weight in grams
|
|
159
|
-
* instructions: 'Handle with care',
|
|
160
|
-
* },
|
|
161
|
-
* });
|
|
162
|
-
*/
|
|
163
|
-
async createShipment({
|
|
164
|
-
token,
|
|
165
|
-
orderId,
|
|
166
|
-
data,
|
|
167
|
-
options = {}
|
|
168
|
-
}) {
|
|
169
|
-
if (!orderId) throw new Error("Order ID is required");
|
|
170
|
-
const response = await handleApiRequest("POST", `${this.config.basePath}/orders/${orderId}/shipping`, {
|
|
171
|
-
token,
|
|
172
|
-
body: data,
|
|
173
|
-
...options
|
|
174
|
-
});
|
|
175
|
-
const normalizedData = response.data && typeof response.data === "object" && "shipping" in response.data ? response.data.shipping : response.data;
|
|
176
|
-
return {
|
|
177
|
-
success: response.success,
|
|
178
|
-
message: response.message,
|
|
179
|
-
...normalizedData ? { data: normalizedData } : {}
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Get shipping info for an order
|
|
184
|
-
* GET /orders/:id/shipping
|
|
185
|
-
*/
|
|
186
|
-
async getShipment({
|
|
187
|
-
token,
|
|
188
|
-
id,
|
|
189
|
-
options = {}
|
|
190
|
-
}) {
|
|
191
|
-
if (!id) throw new Error("Order ID is required");
|
|
192
|
-
return handleApiRequest("GET", `${this.config.basePath}/orders/${id}/shipping`, {
|
|
193
|
-
token,
|
|
194
|
-
cache: "no-store",
|
|
195
|
-
...options
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Track shipment (fetch latest from provider)
|
|
200
|
-
* GET /logistics/shipments/:id/track
|
|
201
|
-
*
|
|
202
|
-
* @param id - Order ID or tracking number
|
|
203
|
-
*/
|
|
204
|
-
async trackShipment({
|
|
205
|
-
token,
|
|
206
|
-
id,
|
|
207
|
-
options = {}
|
|
208
|
-
}) {
|
|
209
|
-
if (!id) throw new Error("Shipment ID or tracking number is required");
|
|
210
|
-
return handleApiRequest("GET", `${this.baseUrl}/shipments/${id}/track`, {
|
|
211
|
-
token,
|
|
212
|
-
cache: "no-store",
|
|
213
|
-
...options
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Update shipping status for an order
|
|
218
|
-
* PATCH /orders/:id/shipping
|
|
219
|
-
*/
|
|
220
|
-
async updateShipmentStatus({
|
|
221
|
-
token,
|
|
222
|
-
id,
|
|
223
|
-
data,
|
|
224
|
-
options = {}
|
|
225
|
-
}) {
|
|
226
|
-
if (!id) throw new Error("Order ID is required");
|
|
227
|
-
if (!data?.status) throw new Error("Status is required");
|
|
228
|
-
return handleApiRequest("PATCH", `${this.config.basePath}/orders/${id}/shipping`, {
|
|
229
|
-
token,
|
|
230
|
-
body: data,
|
|
231
|
-
...options
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Cancel shipment
|
|
236
|
-
* POST /logistics/shipments/:id/cancel
|
|
237
|
-
*
|
|
238
|
-
* @param id - Order ID or tracking number
|
|
239
|
-
*/
|
|
240
|
-
async cancelShipment({
|
|
241
|
-
token,
|
|
242
|
-
id,
|
|
243
|
-
data,
|
|
244
|
-
options = {}
|
|
245
|
-
}) {
|
|
246
|
-
if (!id) throw new Error("Shipment ID or tracking number is required");
|
|
247
|
-
return handleApiRequest("POST", `${this.baseUrl}/shipments/${id}/cancel`, {
|
|
248
|
-
token,
|
|
249
|
-
body: data || {},
|
|
250
|
-
...options
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
// ============================================
|
|
254
|
-
// HEALTH & MONITORING (Admin)
|
|
255
|
-
// ============================================
|
|
256
|
-
/**
|
|
257
|
-
* Get circuit breaker status for all providers
|
|
258
|
-
* GET /logistics/health/circuit-status
|
|
259
|
-
*/
|
|
260
|
-
async getCircuitStatus({
|
|
261
|
-
token,
|
|
262
|
-
options = {}
|
|
263
|
-
}) {
|
|
264
|
-
return handleApiRequest("GET", `${this.baseUrl}/health/circuit-status`, {
|
|
265
|
-
token,
|
|
266
|
-
cache: "no-store",
|
|
267
|
-
...options
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Reset circuit breaker for a provider
|
|
272
|
-
* POST /logistics/health/circuit-reset/:provider
|
|
273
|
-
*/
|
|
274
|
-
async resetProviderCircuit({
|
|
275
|
-
token,
|
|
276
|
-
provider,
|
|
277
|
-
options = {}
|
|
278
|
-
}) {
|
|
279
|
-
if (!provider) throw new Error("Provider name is required");
|
|
280
|
-
return handleApiRequest(
|
|
281
|
-
"POST",
|
|
282
|
-
`${this.baseUrl}/health/circuit-reset/${provider}`,
|
|
283
|
-
{
|
|
284
|
-
token,
|
|
285
|
-
body: {},
|
|
286
|
-
...options
|
|
287
|
-
}
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
var logisticsApi = new LogisticsApi();
|
|
292
|
-
var LOGISTICS_KEYS = {
|
|
293
|
-
all: ["logistics"],
|
|
294
|
-
pickupStores: (provider) => [...LOGISTICS_KEYS.all, "pickup-stores", provider],
|
|
295
|
-
shipment: (id) => [...LOGISTICS_KEYS.all, "shipment", id],
|
|
296
|
-
tracking: (id) => [...LOGISTICS_KEYS.all, "tracking", id],
|
|
297
|
-
charge: (params) => [...LOGISTICS_KEYS.all, "charge", params],
|
|
298
|
-
config: () => [...LOGISTICS_KEYS.all, "config"]
|
|
299
|
-
};
|
|
300
|
-
function usePickupStores(token, provider, options = {}) {
|
|
301
|
-
return useQuery({
|
|
302
|
-
queryKey: LOGISTICS_KEYS.pickupStores(provider),
|
|
303
|
-
queryFn: async () => {
|
|
304
|
-
const response = await logisticsApi.getPickupStores({ token, provider });
|
|
305
|
-
return response.data || [];
|
|
306
|
-
},
|
|
307
|
-
enabled: options.enabled !== false && !!token,
|
|
308
|
-
staleTime: options.staleTime ?? 5 * 60 * 1e3
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
function useDeliveryChargeCalculation(token, params, options = {}) {
|
|
312
|
-
const hasValidParams = !!params?.deliveryAreaId && params?.amount !== void 0;
|
|
313
|
-
return useQuery({
|
|
314
|
-
queryKey: LOGISTICS_KEYS.charge(
|
|
315
|
-
params ? { deliveryAreaId: params.deliveryAreaId, amount: params.amount, weight: params.weight } : { deliveryAreaId: 0, amount: 0 }
|
|
316
|
-
),
|
|
317
|
-
queryFn: async () => {
|
|
318
|
-
if (!params) throw new Error("Params required");
|
|
319
|
-
const response = await logisticsApi.calculateCharge({
|
|
320
|
-
deliveryAreaId: params.deliveryAreaId,
|
|
321
|
-
pickupAreaId: params.pickupAreaId,
|
|
322
|
-
amount: params.amount,
|
|
323
|
-
weight: params.weight,
|
|
324
|
-
provider: params.provider
|
|
325
|
-
});
|
|
326
|
-
if (!response.data) throw new Error("No charge data returned");
|
|
327
|
-
return response.data;
|
|
328
|
-
},
|
|
329
|
-
enabled: options.enabled !== false && hasValidParams,
|
|
330
|
-
staleTime: options.staleTime ?? 60 * 1e3
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
function useDeliveryCharge({
|
|
334
|
-
deliveryAreaId,
|
|
335
|
-
amount,
|
|
336
|
-
weight = 500,
|
|
337
|
-
enabled = true
|
|
338
|
-
}) {
|
|
339
|
-
const { data, isLoading, isFetching, error, refetch } = useQuery({
|
|
340
|
-
queryKey: LOGISTICS_KEYS.charge({
|
|
341
|
-
deliveryAreaId: deliveryAreaId || 0,
|
|
342
|
-
amount,
|
|
343
|
-
weight
|
|
344
|
-
}),
|
|
345
|
-
queryFn: async () => {
|
|
346
|
-
if (!deliveryAreaId) return null;
|
|
347
|
-
const response = await logisticsApi.calculateCharge({
|
|
348
|
-
deliveryAreaId,
|
|
349
|
-
amount,
|
|
350
|
-
weight
|
|
351
|
-
});
|
|
352
|
-
return response.data || null;
|
|
353
|
-
},
|
|
354
|
-
enabled: enabled && !!deliveryAreaId,
|
|
355
|
-
staleTime: 5 * 60 * 1e3,
|
|
356
|
-
gcTime: 10 * 60 * 1e3,
|
|
357
|
-
retry: 1
|
|
358
|
-
});
|
|
359
|
-
return {
|
|
360
|
-
charges: data || null,
|
|
361
|
-
deliveryCharge: data?.deliveryCharge ?? 0,
|
|
362
|
-
codCharge: data?.codCharge ?? 0,
|
|
363
|
-
totalCharge: data?.totalCharge ?? 0,
|
|
364
|
-
isLoading,
|
|
365
|
-
isFetching,
|
|
366
|
-
error,
|
|
367
|
-
refetch
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
function useShipment(token, orderId, options = {}) {
|
|
371
|
-
return useQuery({
|
|
372
|
-
queryKey: LOGISTICS_KEYS.shipment(orderId || ""),
|
|
373
|
-
queryFn: async () => {
|
|
374
|
-
if (!orderId) throw new Error("Order ID required");
|
|
375
|
-
const response = await logisticsApi.getShipment({ token, id: orderId });
|
|
376
|
-
if (!response.data) throw new Error("Shipping info not found");
|
|
377
|
-
return response.data;
|
|
378
|
-
},
|
|
379
|
-
enabled: options.enabled !== false && !!token && !!orderId,
|
|
380
|
-
staleTime: options.staleTime ?? 30 * 1e3
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
|
-
function useTrackShipment(token, shipmentId, options = {}) {
|
|
384
|
-
return useQuery({
|
|
385
|
-
queryKey: LOGISTICS_KEYS.tracking(shipmentId || ""),
|
|
386
|
-
queryFn: async () => {
|
|
387
|
-
if (!shipmentId) throw new Error("Order ID or tracking number required");
|
|
388
|
-
const response = await logisticsApi.trackShipment({ token, id: shipmentId });
|
|
389
|
-
if (!response.data) throw new Error("Tracking data not found");
|
|
390
|
-
return response.data;
|
|
391
|
-
},
|
|
392
|
-
enabled: options.enabled !== false && !!token && !!shipmentId,
|
|
393
|
-
staleTime: options.staleTime ?? 60 * 1e3,
|
|
394
|
-
refetchInterval: options.refetchInterval ?? 5 * 60 * 1e3
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
function useCreateShipment(token) {
|
|
398
|
-
const queryClient = useQueryClient();
|
|
399
|
-
const toast = getToastHandler();
|
|
400
|
-
return useMutation({
|
|
401
|
-
mutationFn: async ({ orderId, data }) => {
|
|
402
|
-
const response = await logisticsApi.createShipment({ token, orderId, data });
|
|
403
|
-
return response.data;
|
|
404
|
-
},
|
|
405
|
-
onSuccess: () => {
|
|
406
|
-
toast.success("Shipment created successfully");
|
|
407
|
-
queryClient.invalidateQueries({ queryKey: ["orders"] });
|
|
408
|
-
queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });
|
|
409
|
-
},
|
|
410
|
-
onError: (error) => {
|
|
411
|
-
toast.error(error.message || "Failed to create shipment");
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
function useCancelShipment(token) {
|
|
416
|
-
const queryClient = useQueryClient();
|
|
417
|
-
const toast = getToastHandler();
|
|
418
|
-
return useMutation({
|
|
419
|
-
mutationFn: async ({ shipmentId, reason }) => {
|
|
420
|
-
const response = await logisticsApi.cancelShipment({
|
|
421
|
-
token,
|
|
422
|
-
id: shipmentId,
|
|
423
|
-
data: { reason }
|
|
424
|
-
});
|
|
425
|
-
return response.data;
|
|
426
|
-
},
|
|
427
|
-
onSuccess: () => {
|
|
428
|
-
toast.success("Shipment cancelled");
|
|
429
|
-
queryClient.invalidateQueries({ queryKey: ["orders"] });
|
|
430
|
-
queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });
|
|
431
|
-
},
|
|
432
|
-
onError: (error) => {
|
|
433
|
-
toast.error(error.message || "Failed to cancel shipment");
|
|
434
|
-
}
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
|
-
function useUpdateShipmentStatus(token) {
|
|
438
|
-
const queryClient = useQueryClient();
|
|
439
|
-
const toast = getToastHandler();
|
|
440
|
-
return useMutation({
|
|
441
|
-
mutationFn: async ({
|
|
442
|
-
shipmentId,
|
|
443
|
-
data
|
|
444
|
-
}) => {
|
|
445
|
-
const response = await logisticsApi.updateShipmentStatus({
|
|
446
|
-
token,
|
|
447
|
-
id: shipmentId,
|
|
448
|
-
data
|
|
449
|
-
});
|
|
450
|
-
return response.data;
|
|
451
|
-
},
|
|
452
|
-
onSuccess: () => {
|
|
453
|
-
toast.success("Shipment status updated");
|
|
454
|
-
queryClient.invalidateQueries({ queryKey: ["orders"] });
|
|
455
|
-
queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });
|
|
456
|
-
},
|
|
457
|
-
onError: (error) => {
|
|
458
|
-
toast.error(error.message || "Failed to update status");
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
function useLogisticsActions(token) {
|
|
463
|
-
const createShipmentMutation = useCreateShipment(token);
|
|
464
|
-
const cancelShipmentMutation = useCancelShipment(token);
|
|
465
|
-
const updateStatusMutation = useUpdateShipmentStatus(token);
|
|
466
|
-
return {
|
|
467
|
-
createShipment: createShipmentMutation.mutateAsync,
|
|
468
|
-
isCreatingShipment: createShipmentMutation.isPending,
|
|
469
|
-
cancelShipment: cancelShipmentMutation.mutateAsync,
|
|
470
|
-
isCancellingShipment: cancelShipmentMutation.isPending,
|
|
471
|
-
updateShipmentStatus: updateStatusMutation.mutateAsync,
|
|
472
|
-
isUpdatingStatus: updateStatusMutation.isPending,
|
|
473
|
-
isLoading: createShipmentMutation.isPending || cancelShipmentMutation.isPending || updateStatusMutation.isPending
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
export { LOGISTICS_KEYS, LogisticsApi, logisticsApi, useCancelShipment, useCreateShipment, useDeliveryCharge, useDeliveryChargeCalculation, useLogisticsActions, usePickupStores, useShipment, useTrackShipment, useUpdateShipmentStatus };
|
|
478
|
-
//# sourceMappingURL=chunk-2YAZ5WG6.js.map
|
|
479
|
-
//# sourceMappingURL=chunk-2YAZ5WG6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/logistics/api/logistics.ts","../src/logistics/hooks/logistics.ts"],"names":[],"mappings":"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","file":"chunk-2YAZ5WG6.js","sourcesContent":["// @/logistics/api/logistics.ts\r\nimport { BaseApi, type RequestOptions, type ApiResponse } from \"../../core/api-factory\";\nimport { handleApiRequest } from \"../../core/api-handler\";\nimport type {\n TrackingResult,\n PickupStore,\n LogisticsConfig,\n ProviderCharges,\n CreateShipmentPayload,\n UpdateShipmentStatusPayload,\n CancelShipmentPayload,\n ProviderName,\n CancelShipmentResult,\n} from \"../types/logistics\";\nimport type { OrderShipping } from \"../../sales/types/order\";\n\r\n// ==================== Request Options ====================\r\n\r\ntype FetchOptions = Omit<RequestOptions, 'token' | 'organizationId'>;\r\n\r\n// ==================== Logistics API ====================\r\n\r\n/**\r\n * Logistics API\n *\n * Manages logistics utilities and delivery charge calculation.\n *\r\n * NOTE: For area data (divisions, districts, areas), use @classytic/bd-areas directly:\r\n * ```typescript\r\n * import { searchAreas, getAreasByDistrict, getArea } from '@classytic/bd-areas';\r\n * ```\r\n *\r\n * Public Endpoints:\r\n * - GET /logistics/charge - Calculate delivery charge via provider (RedX)\r\n *\r\n * Shipping Endpoints (Admin/Store Manager):\n * - POST /orders/:id/shipping - Request shipping (manual or provider API)\n * - PATCH /orders/:id/shipping - Update shipping status\n * - GET /orders/:id/shipping - Get shipping info\n * - GET /logistics/shipments/:id/track - Track shipment\n * - POST /logistics/shipments/:id/cancel - Cancel shipment\n *\r\n * Admin Endpoints:\r\n * - GET /logistics/config - Get config (read-only)\r\n * - GET /logistics/pickup-stores - List pickup stores\r\n * - GET /logistics/health/circuit-status - Get circuit breaker status\r\n * - POST /logistics/health/circuit-reset/:provider - Reset circuit breaker\r\n */\r\nclass LogisticsApi extends BaseApi<OrderShipping, CreateShipmentPayload> {\n constructor(config = {}) {\r\n super('logistics', config);\r\n }\r\n\r\n // ============================================\r\n // CHARGE CALCULATION (Public)\r\n // ============================================\r\n\r\n /**\r\n * Calculate delivery charge via provider API (e.g., RedX)\r\n * GET /logistics/charge\r\n *\r\n * Use this to get real-time delivery charges from the logistics provider\r\n * before creating an order.\r\n *\r\n * @param deliveryAreaId - Area internalId from @classytic/bd-areas\r\n * @param amount - COD amount in BDT (use 0 for prepaid orders)\r\n * @param weight - Parcel weight in grams (default: 500g)\r\n *\r\n * @example\r\n * import { searchAreas } from '@classytic/bd-areas';\r\n *\r\n * // 1. User selects area\r\n * const areas = searchAreas('mohamm');\r\n * const selectedArea = areas[0]; // { internalId: 1206, name: 'Mohammadpur', ... }\r\n *\r\n * // 2. Calculate delivery charge\r\n * const { data } = await logisticsApi.calculateCharge({\r\n * deliveryAreaId: selectedArea.internalId,\r\n * amount: isCOD ? cartTotal : 0,\r\n * });\r\n * // { deliveryCharge: 60, codCharge: 15, totalCharge: 75 }\r\n */\r\n async calculateCharge({\r\n deliveryAreaId,\r\n pickupAreaId,\r\n amount,\r\n weight,\r\n provider,\r\n options = {},\r\n }: {\r\n deliveryAreaId: number;\r\n pickupAreaId?: number;\r\n amount: number;\r\n weight?: number;\r\n provider?: ProviderName;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<ProviderCharges>> {\r\n if (!deliveryAreaId || amount === undefined) {\r\n throw new Error(\"deliveryAreaId and amount are required\");\r\n }\r\n\r\n const queryString = this.createQueryString({\r\n deliveryAreaId,\r\n pickupAreaId,\r\n amount,\r\n weight,\r\n provider,\r\n });\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/charge?${queryString}`, {\r\n cache: \"no-store\",\r\n ...options,\r\n });\r\n }\r\n\r\n // ============================================\r\n // CONFIG ENDPOINTS (Admin - Read-only)\r\n // ============================================\r\n\r\n /**\r\n * Get logistics configuration (read-only from .env)\r\n * GET /logistics/config\r\n *\r\n * NOTE: Configuration is managed via environment variables.\r\n * To change settings, update .env file and restart server.\r\n */\r\n async getConfig({\r\n token,\r\n options = {},\r\n }: {\r\n token: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<LogisticsConfig>> {\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/config`, {\r\n token,\r\n cache: \"no-store\",\r\n ...options,\r\n });\r\n }\r\n\r\n // ============================================\r\n // PICKUP STORES (Admin)\r\n // ============================================\r\n\r\n /**\r\n * Get pickup stores from RedX API\r\n * GET /logistics/pickup-stores\r\n *\r\n * Pickup stores are created by admin in RedX dashboard.\r\n * Use this to list available pickup locations when creating shipments.\r\n *\r\n * @example\r\n * // Admin: List pickup stores for shipment creation\r\n * const { data: stores } = await logisticsApi.getPickupStores({ token });\r\n *\r\n * // Display in dropdown for admin to select\r\n * stores.forEach(store => {\r\n * console.log(`${store.name} - ${store.areaName} (ID: ${store.id})`);\r\n * });\r\n *\r\n * // Use selected store when creating shipment\r\n * await logisticsApi.createShipment({\r\n * token,\r\n * data: {\r\n * orderId: order._id,\r\n * pickupStoreId: selectedStore.id, // From dropdown\r\n * },\r\n * });\r\n */\r\n async getPickupStores({\r\n token,\r\n provider,\r\n options = {},\r\n }: {\r\n token: string;\r\n provider?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<PickupStore[]>> {\r\n const queryString = provider ? `?provider=${provider}` : '';\r\n return handleApiRequest(\r\n \"GET\",\r\n `${this.baseUrl}/pickup-stores${queryString}`,\r\n {\r\n token,\r\n cache: \"no-store\",\r\n ...options,\r\n }\r\n );\r\n }\r\n\r\n // ============================================\n // SHIPPING ENDPOINTS (Admin/Store Manager)\n // ============================================\n\n /**\n * Request shipping for an order (manual or provider API)\n * POST /orders/:id/shipping\n *\n * This updates the order.shipping object and optionally triggers\n * provider API shipment creation when useProviderApi=true.\n *\n * @example\n * // Manual: Record tracking details\n * const shipping = await logisticsApi.createShipment({\n * token,\n * orderId: order._id,\n * data: {\n * provider: \"other\",\n * trackingNumber: \"COURIER123456\",\n * trackingUrl: \"https://courier-website.com/track/COURIER123456\",\n * },\n * });\n *\n * @example\n * // Provider API: Create shipment with pickup store\n * const { data: stores } = await logisticsApi.getPickupStores({ token });\n * const shipping = await logisticsApi.createShipment({\n * token,\n * orderId: order._id,\n * data: {\n * provider: \"redx\",\n * useProviderApi: true,\n * pickupStoreId: stores[0].id, // Select pickup location\n * weight: 500, // Parcel weight in grams\n * instructions: 'Handle with care',\n * },\n * });\n */\n async createShipment({\n token,\n orderId,\n data,\n options = {},\n }: {\n token: string;\n orderId: string;\n data: CreateShipmentPayload;\n options?: FetchOptions;\n }): Promise<ApiResponse<OrderShipping>> {\n if (!orderId) throw new Error(\"Order ID is required\");\n\n const response = await handleApiRequest<\n ApiResponse<OrderShipping> | ApiResponse<{ shipping: OrderShipping }>\n >(\"POST\", `${this.config.basePath}/orders/${orderId}/shipping`, {\n token,\n body: data,\n ...options,\n });\n\n const normalizedData =\n response.data && typeof response.data === \"object\" && \"shipping\" in response.data\n ? (response.data as { shipping: OrderShipping }).shipping\n : response.data;\n\n return {\n success: response.success,\n message: response.message,\n ...(normalizedData ? { data: normalizedData as OrderShipping } : {}),\n };\n }\n\n /**\n * Get shipping info for an order\n * GET /orders/:id/shipping\n */\n async getShipment({\n token,\n id,\n options = {},\n }: {\n token: string;\n id: string;\n options?: FetchOptions;\n }): Promise<ApiResponse<OrderShipping | null>> {\n if (!id) throw new Error(\"Order ID is required\");\n\n return handleApiRequest(\"GET\", `${this.config.basePath}/orders/${id}/shipping`, {\n token,\n cache: \"no-store\",\n ...options,\n });\n }\n\r\n /**\n * Track shipment (fetch latest from provider)\n * GET /logistics/shipments/:id/track\n *\n * @param id - Order ID or tracking number\n */\n async trackShipment({\n token,\n id,\n options = {},\n }: {\n token: string;\n id: string;\n options?: FetchOptions;\n }): Promise<ApiResponse<TrackingResult>> {\n if (!id) throw new Error(\"Shipment ID or tracking number is required\");\n\n return handleApiRequest(\"GET\", `${this.baseUrl}/shipments/${id}/track`, {\n token,\n cache: \"no-store\",\n ...options,\n });\r\n }\r\n\r\n /**\n * Update shipping status for an order\n * PATCH /orders/:id/shipping\n */\n async updateShipmentStatus({\n token,\n id,\n data,\n options = {},\n }: {\n token: string;\n id: string;\n data: UpdateShipmentStatusPayload;\n options?: FetchOptions;\n }): Promise<ApiResponse<OrderShipping>> {\n if (!id) throw new Error(\"Order ID is required\");\n if (!data?.status) throw new Error(\"Status is required\");\n\n return handleApiRequest(\"PATCH\", `${this.config.basePath}/orders/${id}/shipping`, {\n token,\n body: data,\n ...options,\n });\n }\n\r\n /**\n * Cancel shipment\n * POST /logistics/shipments/:id/cancel\n *\n * @param id - Order ID or tracking number\n */\n async cancelShipment({\n token,\n id,\n data,\n options = {},\n }: {\n token: string;\n id: string;\n data?: CancelShipmentPayload;\n options?: FetchOptions;\n }): Promise<ApiResponse<CancelShipmentResult>> {\n if (!id) throw new Error(\"Shipment ID or tracking number is required\");\n\n return handleApiRequest(\"POST\", `${this.baseUrl}/shipments/${id}/cancel`, {\n token,\n body: data || {},\r\n ...options,\r\n });\r\n }\r\n\r\n // ============================================\r\n // HEALTH & MONITORING (Admin)\r\n // ============================================\r\n\r\n /**\r\n * Get circuit breaker status for all providers\r\n * GET /logistics/health/circuit-status\r\n */\r\n async getCircuitStatus({\r\n token,\r\n options = {},\r\n }: {\r\n token: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<Record<string, { state: string; failureCount: number }>>> {\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/health/circuit-status`, {\r\n token,\r\n cache: \"no-store\",\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Reset circuit breaker for a provider\r\n * POST /logistics/health/circuit-reset/:provider\r\n */\r\n async resetProviderCircuit({\r\n token,\r\n provider,\r\n options = {},\r\n }: {\r\n token: string;\r\n provider: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<{ message: string }>> {\r\n if (!provider) throw new Error(\"Provider name is required\");\r\n\r\n return handleApiRequest(\r\n \"POST\",\r\n `${this.baseUrl}/health/circuit-reset/${provider}`,\r\n {\r\n token,\r\n body: {},\r\n ...options,\r\n }\r\n );\r\n }\r\n}\r\n\r\n// Create and export singleton instance\r\nexport const logisticsApi = new LogisticsApi();\r\n\r\n// Export class for custom configurations\r\nexport { LogisticsApi };\r\n","\"use client\";\n\nimport { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { logisticsApi } from \"../api/logistics\";\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\nimport type {\n PickupStore,\n TrackingResult,\n CreateShipmentPayload,\n ProviderCharges,\n ProviderName,\n CancelShipmentResult,\n} from \"../types/logistics\";\nimport type { OrderShipping, ShippingStatus } from \"../../sales/types/order\";\n\n// ============================================\n// Query Keys\n// ============================================\n\nexport const LOGISTICS_KEYS = {\n all: [\"logistics\"] as const,\n pickupStores: (provider?: string) => [...LOGISTICS_KEYS.all, \"pickup-stores\", provider] as const,\n shipment: (id: string) => [...LOGISTICS_KEYS.all, \"shipment\", id] as const,\n tracking: (id: string) => [...LOGISTICS_KEYS.all, \"tracking\", id] as const,\n charge: (params: { deliveryAreaId: number; amount: number; weight?: number }) =>\n [...LOGISTICS_KEYS.all, \"charge\", params] as const,\n config: () => [...LOGISTICS_KEYS.all, \"config\"] as const,\n};\n\n// ============================================\n// Types\n// ============================================\n\ninterface QueryOptions {\n enabled?: boolean;\n staleTime?: number;\n refetchInterval?: number | false;\n}\n\ninterface ChargeParams {\n deliveryAreaId: number;\n pickupAreaId?: number;\n amount: number;\n weight?: number;\n provider?: ProviderName;\n}\n\ninterface UseDeliveryChargeParams {\n deliveryAreaId: number | null | undefined;\n amount: number;\n weight?: number;\n enabled?: boolean;\n}\n\nexport interface UseDeliveryChargeReturn {\n charges: ProviderCharges | null;\n deliveryCharge: number;\n codCharge: number;\n totalCharge: number;\n isLoading: boolean;\n isFetching: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UseLogisticsActionsReturn {\n createShipment: (params: { orderId: string; data: CreateShipmentPayload }) => Promise<OrderShipping | undefined>;\n isCreatingShipment: boolean;\n cancelShipment: (params: { shipmentId: string; reason?: string }) => Promise<CancelShipmentResult | undefined>;\n isCancellingShipment: boolean;\n updateShipmentStatus: (params: { shipmentId: string; data: UpdateShipmentStatusParams }) => Promise<OrderShipping | undefined>;\n isUpdatingStatus: boolean;\n isLoading: boolean;\n}\n\ninterface UpdateShipmentStatusParams {\n status: ShippingStatus | string;\n note?: string;\n metadata?: Record<string, unknown>;\n}\n\n// ============================================\n// Query Hooks\n// ============================================\n\n/**\n * Fetch pickup stores from logistics provider\n *\n * @param token - Auth token (admin required)\n * @param provider - Optional provider filter\n * @param options - Query options\n *\n * @example\n * ```tsx\n * function PickupStoreSelect() {\n * const { data: stores, isLoading } = usePickupStores(token);\n *\n * return (\n * <Select>\n * {stores?.map(store => (\n * <SelectItem key={store.id} value={store.id.toString()}>\n * {store.name} - {store.areaName}\n * </SelectItem>\n * ))}\n * </Select>\n * );\n * }\n * ```\n */\nexport function usePickupStores(\n token: string,\n provider?: string,\n options: QueryOptions = {}\n) {\n return useQuery({\n queryKey: LOGISTICS_KEYS.pickupStores(provider),\n queryFn: async (): Promise<PickupStore[]> => {\n const response = await logisticsApi.getPickupStores({ token, provider });\n return response.data || [];\n },\n enabled: options.enabled !== false && !!token,\n staleTime: options.staleTime ?? 5 * 60 * 1000,\n });\n}\n\n/**\n * Calculate delivery charge via provider API\n *\n * @param token - Auth token (optional for public)\n * @param params - Charge calculation parameters\n * @param options - Query options\n *\n * @example\n * ```tsx\n * const { data: charges } = useDeliveryChargeCalculation(token, {\n * deliveryAreaId: 1206,\n * amount: isCOD ? cartTotal : 0,\n * });\n * ```\n */\nexport function useDeliveryChargeCalculation(\n token: string | null,\n params: ChargeParams | null,\n options: QueryOptions = {}\n) {\n const hasValidParams = !!params?.deliveryAreaId && params?.amount !== undefined;\n\n return useQuery({\n queryKey: LOGISTICS_KEYS.charge(\n params\n ? { deliveryAreaId: params.deliveryAreaId, amount: params.amount, weight: params.weight }\n : { deliveryAreaId: 0, amount: 0 }\n ),\n queryFn: async (): Promise<ProviderCharges> => {\n if (!params) throw new Error(\"Params required\");\n const response = await logisticsApi.calculateCharge({\n deliveryAreaId: params.deliveryAreaId,\n pickupAreaId: params.pickupAreaId,\n amount: params.amount,\n weight: params.weight,\n provider: params.provider,\n });\n if (!response.data) throw new Error(\"No charge data returned\");\n return response.data;\n },\n enabled: options.enabled !== false && hasValidParams,\n staleTime: options.staleTime ?? 60 * 1000,\n });\n}\n\n/**\n * Convenience hook for delivery charge with extracted values\n *\n * @param params - Delivery charge parameters\n *\n * @example\n * ```tsx\n * function CheckoutDelivery({ areaId, subtotal, isCOD }) {\n * const { deliveryCharge, isLoading } = useDeliveryCharge({\n * deliveryAreaId: areaId,\n * amount: isCOD ? subtotal : 0,\n * });\n *\n * return (\n * <p>Delivery: {isLoading ? \"...\" : `৳${deliveryCharge}`}</p>\n * );\n * }\n * ```\n */\nexport function useDeliveryCharge({\n deliveryAreaId,\n amount,\n weight = 500,\n enabled = true,\n}: UseDeliveryChargeParams): UseDeliveryChargeReturn {\n const { data, isLoading, isFetching, error, refetch } = useQuery<ProviderCharges | null>({\n queryKey: LOGISTICS_KEYS.charge({\n deliveryAreaId: deliveryAreaId || 0,\n amount,\n weight,\n }),\n queryFn: async () => {\n if (!deliveryAreaId) return null;\n\n const response = await logisticsApi.calculateCharge({\n deliveryAreaId,\n amount,\n weight,\n });\n\n return response.data || null;\n },\n enabled: enabled && !!deliveryAreaId,\n staleTime: 5 * 60 * 1000,\n gcTime: 10 * 60 * 1000,\n retry: 1,\n });\n\n return {\n charges: data || null,\n deliveryCharge: data?.deliveryCharge ?? 0,\n codCharge: data?.codCharge ?? 0,\n totalCharge: data?.totalCharge ?? 0,\n isLoading,\n isFetching,\n error: error as Error | null,\n refetch,\n };\n}\n\n/**\n * Get shipping info by order ID\n *\n * @param token - Auth token\n * @param orderId - Order ID\n * @param options - Query options\n */\nexport function useShipment(\n token: string,\n orderId: string | null,\n options: QueryOptions = {}\n) {\n return useQuery({\n queryKey: LOGISTICS_KEYS.shipment(orderId || \"\"),\n queryFn: async (): Promise<OrderShipping> => {\n if (!orderId) throw new Error(\"Order ID required\");\n const response = await logisticsApi.getShipment({ token, id: orderId });\n if (!response.data) throw new Error(\"Shipping info not found\");\n return response.data;\n },\n enabled: options.enabled !== false && !!token && !!orderId,\n staleTime: options.staleTime ?? 30 * 1000,\n });\n}\n\n/**\n * Track shipment - fetches latest status from provider\n *\n * @param token - Auth token\n * @param shipmentId - Order ID or tracking number\n * @param options - Query options (supports refetchInterval for auto-refresh)\n *\n * @example\n * ```tsx\n * function ShipmentTracker({ shipmentId }) {\n * const { data, isLoading } = useTrackShipment(token, shipmentId, {\n * refetchInterval: 5 * 60 * 1000, // Auto-refresh every 5 minutes\n * });\n *\n * return (\n * <Timeline events={data?.tracking?.timeline || []} />\n * );\n * }\n * ```\n */\nexport function useTrackShipment(\n token: string,\n shipmentId: string | null,\n options: QueryOptions = {}\n) {\n return useQuery({\n queryKey: LOGISTICS_KEYS.tracking(shipmentId || \"\"),\n queryFn: async (): Promise<TrackingResult> => {\n if (!shipmentId) throw new Error(\"Order ID or tracking number required\");\n const response = await logisticsApi.trackShipment({ token, id: shipmentId });\n if (!response.data) throw new Error(\"Tracking data not found\");\n return response.data;\n },\n enabled: options.enabled !== false && !!token && !!shipmentId,\n staleTime: options.staleTime ?? 60 * 1000,\n refetchInterval: options.refetchInterval ?? 5 * 60 * 1000,\n });\n}\n\n// ============================================\n// Mutation Hooks\n// ============================================\n\n/**\n * Create shipment mutation\n *\n * @param token - Auth token\n *\n * @example\n * ```tsx\n * function CreateShipmentButton({ order }) {\n * const { mutate, isPending } = useCreateShipment(token);\n *\n * return (\n * <Button\n * onClick={() =>\n * mutate({\n * orderId: order._id,\n * data: { provider: \"redx\", useProviderApi: true },\n * })\n * }\n * disabled={isPending}\n * >\n * Create Shipment\n * </Button>\n * );\n * }\n * ```\n */\nexport function useCreateShipment(token: string) {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n return useMutation({\n mutationFn: async ({ orderId, data }: { orderId: string; data: CreateShipmentPayload }) => {\n const response = await logisticsApi.createShipment({ token, orderId, data });\n return response.data;\n },\n onSuccess: () => {\n toast.success(\"Shipment created successfully\");\n queryClient.invalidateQueries({ queryKey: [\"orders\"] });\n queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });\n },\n onError: (error: Error) => {\n toast.error(error.message || \"Failed to create shipment\");\n },\n });\n}\n\n/**\n * Cancel shipment mutation\n *\n * @param token - Auth token\n */\nexport function useCancelShipment(token: string) {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n return useMutation({\n mutationFn: async ({ shipmentId, reason }: { shipmentId: string; reason?: string }) => {\n const response = await logisticsApi.cancelShipment({\n token,\n id: shipmentId,\n data: { reason },\n });\n return response.data;\n },\n onSuccess: () => {\n toast.success(\"Shipment cancelled\");\n queryClient.invalidateQueries({ queryKey: [\"orders\"] });\n queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });\n },\n onError: (error: Error) => {\n toast.error(error.message || \"Failed to cancel shipment\");\n },\n });\n}\n\n/**\n * Update shipment status mutation\n *\n * @param token - Auth token\n */\nexport function useUpdateShipmentStatus(token: string) {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n return useMutation({\n mutationFn: async ({\n shipmentId,\n data,\n }: {\n shipmentId: string;\n data: UpdateShipmentStatusParams;\n }) => {\n const response = await logisticsApi.updateShipmentStatus({\n token,\n id: shipmentId,\n data,\n });\n return response.data;\n },\n onSuccess: () => {\n toast.success(\"Shipment status updated\");\n queryClient.invalidateQueries({ queryKey: [\"orders\"] });\n queryClient.invalidateQueries({ queryKey: LOGISTICS_KEYS.all });\n },\n onError: (error: Error) => {\n toast.error(error.message || \"Failed to update status\");\n },\n });\n}\n\n/**\n * Combined hook for all logistics mutations\n *\n * @param token - Auth token\n *\n * @example\n * ```tsx\n * function ShipmentActions({ order }) {\n * const {\n * createShipment,\n * cancelShipment,\n * isLoading,\n * } = useLogisticsActions(token);\n *\n * return (\n * <>\n * <Button\n * onClick={() =>\n * createShipment({\n * orderId: order._id,\n * data: { provider: \"redx\", useProviderApi: true },\n * })\n * }\n * >\n * Create Shipment\n * </Button>\n * <Button onClick={() => cancelShipment({ shipmentId: order._id })}>\n * Cancel\n * </Button>\n * </>\n * );\n * }\n * ```\n */\nexport function useLogisticsActions(token: string): UseLogisticsActionsReturn {\n const createShipmentMutation = useCreateShipment(token);\n const cancelShipmentMutation = useCancelShipment(token);\n const updateStatusMutation = useUpdateShipmentStatus(token);\n\n return {\n createShipment: createShipmentMutation.mutateAsync,\n isCreatingShipment: createShipmentMutation.isPending,\n cancelShipment: cancelShipmentMutation.mutateAsync,\n isCancellingShipment: cancelShipmentMutation.isPending,\n updateShipmentStatus: updateStatusMutation.mutateAsync,\n isUpdatingStatus: updateStatusMutation.isPending,\n isLoading:\n createShipmentMutation.isPending ||\n cancelShipmentMutation.isPending ||\n updateStatusMutation.isPending,\n };\n}\n"]}
|