@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
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
//#region node_modules/@tanstack/query-core/build/modern/hydration-C-jfQLut.d.ts
|
|
2
|
+
interface Register {}
|
|
3
|
+
type DefaultError = Register extends {
|
|
4
|
+
defaultError: infer TError;
|
|
5
|
+
} ? TError : Error;
|
|
6
|
+
interface InfiniteData<TData, TPageParam = unknown> {
|
|
7
|
+
pages: Array<TData>;
|
|
8
|
+
pageParams: Array<TPageParam>;
|
|
9
|
+
}
|
|
10
|
+
interface ResultOptions {
|
|
11
|
+
throwOnError?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface RefetchOptions extends ResultOptions {
|
|
14
|
+
/**
|
|
15
|
+
* If set to `true`, a currently running request will be cancelled before a new request is made
|
|
16
|
+
*
|
|
17
|
+
* If set to `false`, no refetch will be made if there is already a request running.
|
|
18
|
+
*
|
|
19
|
+
* Defaults to `true`.
|
|
20
|
+
*/
|
|
21
|
+
cancelRefetch?: boolean;
|
|
22
|
+
}
|
|
23
|
+
type QueryStatus = 'pending' | 'error' | 'success';
|
|
24
|
+
type FetchStatus = 'fetching' | 'paused' | 'idle';
|
|
25
|
+
interface QueryObserverBaseResult<TData = unknown, TError = DefaultError> {
|
|
26
|
+
/**
|
|
27
|
+
* The last successfully resolved data for the query.
|
|
28
|
+
*/
|
|
29
|
+
data: TData | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* The timestamp for when the query most recently returned the `status` as `"success"`.
|
|
32
|
+
*/
|
|
33
|
+
dataUpdatedAt: number;
|
|
34
|
+
/**
|
|
35
|
+
* The error object for the query, if an error was thrown.
|
|
36
|
+
* - Defaults to `null`.
|
|
37
|
+
*/
|
|
38
|
+
error: TError | null;
|
|
39
|
+
/**
|
|
40
|
+
* The timestamp for when the query most recently returned the `status` as `"error"`.
|
|
41
|
+
*/
|
|
42
|
+
errorUpdatedAt: number;
|
|
43
|
+
/**
|
|
44
|
+
* The failure count for the query.
|
|
45
|
+
* - Incremented every time the query fails.
|
|
46
|
+
* - Reset to `0` when the query succeeds.
|
|
47
|
+
*/
|
|
48
|
+
failureCount: number;
|
|
49
|
+
/**
|
|
50
|
+
* The failure reason for the query retry.
|
|
51
|
+
* - Reset to `null` when the query succeeds.
|
|
52
|
+
*/
|
|
53
|
+
failureReason: TError | null;
|
|
54
|
+
/**
|
|
55
|
+
* The sum of all errors.
|
|
56
|
+
*/
|
|
57
|
+
errorUpdateCount: number;
|
|
58
|
+
/**
|
|
59
|
+
* A derived boolean from the `status` variable, provided for convenience.
|
|
60
|
+
* - `true` if the query attempt resulted in an error.
|
|
61
|
+
*/
|
|
62
|
+
isError: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Will be `true` if the query has been fetched.
|
|
65
|
+
*/
|
|
66
|
+
isFetched: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Will be `true` if the query has been fetched after the component mounted.
|
|
69
|
+
* - This property can be used to not show any previously cached data.
|
|
70
|
+
*/
|
|
71
|
+
isFetchedAfterMount: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* A derived boolean from the `fetchStatus` variable, provided for convenience.
|
|
74
|
+
* - `true` whenever the `queryFn` is executing, which includes initial `pending` as well as background refetch.
|
|
75
|
+
*/
|
|
76
|
+
isFetching: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Is `true` whenever the first fetch for a query is in-flight.
|
|
79
|
+
* - Is the same as `isFetching && isPending`.
|
|
80
|
+
*/
|
|
81
|
+
isLoading: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Will be `pending` if there's no cached data and no query attempt was finished yet.
|
|
84
|
+
*/
|
|
85
|
+
isPending: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Will be `true` if the query failed while fetching for the first time.
|
|
88
|
+
*/
|
|
89
|
+
isLoadingError: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* @deprecated `isInitialLoading` is being deprecated in favor of `isLoading`
|
|
92
|
+
* and will be removed in the next major version.
|
|
93
|
+
*/
|
|
94
|
+
isInitialLoading: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* A derived boolean from the `fetchStatus` variable, provided for convenience.
|
|
97
|
+
* - The query wanted to fetch, but has been `paused`.
|
|
98
|
+
*/
|
|
99
|
+
isPaused: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Will be `true` if the data shown is the placeholder data.
|
|
102
|
+
*/
|
|
103
|
+
isPlaceholderData: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Will be `true` if the query failed while refetching.
|
|
106
|
+
*/
|
|
107
|
+
isRefetchError: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Is `true` whenever a background refetch is in-flight, which _does not_ include initial `pending`.
|
|
110
|
+
* - Is the same as `isFetching && !isPending`.
|
|
111
|
+
*/
|
|
112
|
+
isRefetching: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Will be `true` if the data in the cache is invalidated or if the data is older than the given `staleTime`.
|
|
115
|
+
*/
|
|
116
|
+
isStale: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* A derived boolean from the `status` variable, provided for convenience.
|
|
119
|
+
* - `true` if the query has received a response with no errors and is ready to display its data.
|
|
120
|
+
*/
|
|
121
|
+
isSuccess: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* `true` if this observer is enabled, `false` otherwise.
|
|
124
|
+
*/
|
|
125
|
+
isEnabled: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* A function to manually refetch the query.
|
|
128
|
+
*/
|
|
129
|
+
refetch: (options?: RefetchOptions) => Promise<QueryObserverResult<TData, TError>>;
|
|
130
|
+
/**
|
|
131
|
+
* The status of the query.
|
|
132
|
+
* - Will be:
|
|
133
|
+
* - `pending` if there's no cached data and no query attempt was finished yet.
|
|
134
|
+
* - `error` if the query attempt resulted in an error.
|
|
135
|
+
* - `success` if the query has received a response with no errors and is ready to display its data.
|
|
136
|
+
*/
|
|
137
|
+
status: QueryStatus;
|
|
138
|
+
/**
|
|
139
|
+
* The fetch status of the query.
|
|
140
|
+
* - `fetching`: Is `true` whenever the queryFn is executing, which includes initial `pending` as well as background refetch.
|
|
141
|
+
* - `paused`: The query wanted to fetch, but has been `paused`.
|
|
142
|
+
* - `idle`: The query is not fetching.
|
|
143
|
+
* - See [Network Mode](https://tanstack.com/query/latest/docs/framework/react/guides/network-mode) for more information.
|
|
144
|
+
*/
|
|
145
|
+
fetchStatus: FetchStatus;
|
|
146
|
+
/**
|
|
147
|
+
* A stable promise that will be resolved with the data of the query.
|
|
148
|
+
* Requires the `experimental_prefetchInRender` feature flag to be enabled.
|
|
149
|
+
* @example
|
|
150
|
+
*
|
|
151
|
+
* ### Enabling the feature flag
|
|
152
|
+
* ```ts
|
|
153
|
+
* const client = new QueryClient({
|
|
154
|
+
* defaultOptions: {
|
|
155
|
+
* queries: {
|
|
156
|
+
* experimental_prefetchInRender: true,
|
|
157
|
+
* },
|
|
158
|
+
* },
|
|
159
|
+
* })
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* ### Usage
|
|
163
|
+
* ```tsx
|
|
164
|
+
* import { useQuery } from '@tanstack/react-query'
|
|
165
|
+
* import React from 'react'
|
|
166
|
+
* import { fetchTodos, type Todo } from './api'
|
|
167
|
+
*
|
|
168
|
+
* function TodoList({ query }: { query: UseQueryResult<Todo[], Error> }) {
|
|
169
|
+
* const data = React.use(query.promise)
|
|
170
|
+
*
|
|
171
|
+
* return (
|
|
172
|
+
* <ul>
|
|
173
|
+
* {data.map(todo => (
|
|
174
|
+
* <li key={todo.id}>{todo.title}</li>
|
|
175
|
+
* ))}
|
|
176
|
+
* </ul>
|
|
177
|
+
* )
|
|
178
|
+
* }
|
|
179
|
+
*
|
|
180
|
+
* export function App() {
|
|
181
|
+
* const query = useQuery({ queryKey: ['todos'], queryFn: fetchTodos })
|
|
182
|
+
*
|
|
183
|
+
* return (
|
|
184
|
+
* <>
|
|
185
|
+
* <h1>Todos</h1>
|
|
186
|
+
* <React.Suspense fallback={<div>Loading...</div>}>
|
|
187
|
+
* <TodoList query={query} />
|
|
188
|
+
* </React.Suspense>
|
|
189
|
+
* </>
|
|
190
|
+
* )
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
promise: Promise<TData>;
|
|
195
|
+
}
|
|
196
|
+
interface QueryObserverPendingResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
197
|
+
data: undefined;
|
|
198
|
+
error: null;
|
|
199
|
+
isError: false;
|
|
200
|
+
isPending: true;
|
|
201
|
+
isLoadingError: false;
|
|
202
|
+
isRefetchError: false;
|
|
203
|
+
isSuccess: false;
|
|
204
|
+
isPlaceholderData: false;
|
|
205
|
+
status: 'pending';
|
|
206
|
+
}
|
|
207
|
+
interface QueryObserverLoadingResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
208
|
+
data: undefined;
|
|
209
|
+
error: null;
|
|
210
|
+
isError: false;
|
|
211
|
+
isPending: true;
|
|
212
|
+
isLoading: true;
|
|
213
|
+
isLoadingError: false;
|
|
214
|
+
isRefetchError: false;
|
|
215
|
+
isSuccess: false;
|
|
216
|
+
isPlaceholderData: false;
|
|
217
|
+
status: 'pending';
|
|
218
|
+
}
|
|
219
|
+
interface QueryObserverLoadingErrorResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
220
|
+
data: undefined;
|
|
221
|
+
error: TError;
|
|
222
|
+
isError: true;
|
|
223
|
+
isPending: false;
|
|
224
|
+
isLoading: false;
|
|
225
|
+
isLoadingError: true;
|
|
226
|
+
isRefetchError: false;
|
|
227
|
+
isSuccess: false;
|
|
228
|
+
isPlaceholderData: false;
|
|
229
|
+
status: 'error';
|
|
230
|
+
}
|
|
231
|
+
interface QueryObserverRefetchErrorResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
232
|
+
data: TData;
|
|
233
|
+
error: TError;
|
|
234
|
+
isError: true;
|
|
235
|
+
isPending: false;
|
|
236
|
+
isLoading: false;
|
|
237
|
+
isLoadingError: false;
|
|
238
|
+
isRefetchError: true;
|
|
239
|
+
isSuccess: false;
|
|
240
|
+
isPlaceholderData: false;
|
|
241
|
+
status: 'error';
|
|
242
|
+
}
|
|
243
|
+
interface QueryObserverSuccessResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
244
|
+
data: TData;
|
|
245
|
+
error: null;
|
|
246
|
+
isError: false;
|
|
247
|
+
isPending: false;
|
|
248
|
+
isLoading: false;
|
|
249
|
+
isLoadingError: false;
|
|
250
|
+
isRefetchError: false;
|
|
251
|
+
isSuccess: true;
|
|
252
|
+
isPlaceholderData: false;
|
|
253
|
+
status: 'success';
|
|
254
|
+
}
|
|
255
|
+
interface QueryObserverPlaceholderResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
|
|
256
|
+
data: TData;
|
|
257
|
+
isError: false;
|
|
258
|
+
error: null;
|
|
259
|
+
isPending: false;
|
|
260
|
+
isLoading: false;
|
|
261
|
+
isLoadingError: false;
|
|
262
|
+
isRefetchError: false;
|
|
263
|
+
isSuccess: true;
|
|
264
|
+
isPlaceholderData: true;
|
|
265
|
+
status: 'success';
|
|
266
|
+
}
|
|
267
|
+
type DefinedQueryObserverResult<TData = unknown, TError = DefaultError> = QueryObserverRefetchErrorResult<TData, TError> | QueryObserverSuccessResult<TData, TError>;
|
|
268
|
+
type QueryObserverResult<TData = unknown, TError = DefaultError> = DefinedQueryObserverResult<TData, TError> | QueryObserverLoadingErrorResult<TData, TError> | QueryObserverLoadingResult<TData, TError> | QueryObserverPendingResult<TData, TError> | QueryObserverPlaceholderResult<TData, TError>;
|
|
269
|
+
//#endregion
|
|
270
|
+
export { InfiniteData, QueryObserverResult, RefetchOptions };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MarkAllReadResponse, MarkReadResponse, NotificationListParams, NotificationListResponse, UnreadCountResponse } from "../types/index.js";
|
|
2
|
+
|
|
3
|
+
//#region src/notifications/api/notification.d.ts
|
|
4
|
+
declare class NotificationApi {
|
|
5
|
+
private endpoint;
|
|
6
|
+
list(params?: NotificationListParams): Promise<NotificationListResponse>;
|
|
7
|
+
getUnreadCount(): Promise<UnreadCountResponse>;
|
|
8
|
+
markRead(id: string): Promise<MarkReadResponse>;
|
|
9
|
+
markAllRead(): Promise<MarkAllReadResponse>;
|
|
10
|
+
/** Get the SSE stream URL (for EventSource constructor). */
|
|
11
|
+
getStreamUrl(token: string, organizationId?: string): string;
|
|
12
|
+
}
|
|
13
|
+
declare const notificationApi: NotificationApi;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { NotificationApi, notificationApi };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getBaseUrl, handleApiRequest } from "../../core/api-handler.js";
|
|
2
|
+
|
|
3
|
+
//#region src/notifications/api/notification.ts
|
|
4
|
+
/**
|
|
5
|
+
* Notification API Client
|
|
6
|
+
*
|
|
7
|
+
* Custom API class for in-app notifications.
|
|
8
|
+
* Read-heavy, not standard CRUD — no BaseApi extension.
|
|
9
|
+
*/
|
|
10
|
+
var NotificationApi = class {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.endpoint = "/api/v1/notifications";
|
|
13
|
+
}
|
|
14
|
+
async list(params = {}) {
|
|
15
|
+
const query = new URLSearchParams();
|
|
16
|
+
if (params.page) query.set("page", String(params.page));
|
|
17
|
+
if (params.limit) query.set("limit", String(params.limit));
|
|
18
|
+
if (params.unreadOnly) query.set("unreadOnly", "true");
|
|
19
|
+
if (params.type) query.set("type", params.type);
|
|
20
|
+
const qs = query.toString();
|
|
21
|
+
return handleApiRequest("GET", `${this.endpoint}${qs ? `?${qs}` : ""}`);
|
|
22
|
+
}
|
|
23
|
+
async getUnreadCount() {
|
|
24
|
+
return handleApiRequest("GET", `${this.endpoint}/unread-count`);
|
|
25
|
+
}
|
|
26
|
+
async markRead(id) {
|
|
27
|
+
return handleApiRequest("PATCH", `${this.endpoint}/${id}/read`);
|
|
28
|
+
}
|
|
29
|
+
async markAllRead() {
|
|
30
|
+
return handleApiRequest("PATCH", `${this.endpoint}/read-all`);
|
|
31
|
+
}
|
|
32
|
+
/** Get the SSE stream URL (for EventSource constructor). */
|
|
33
|
+
getStreamUrl(token, organizationId) {
|
|
34
|
+
const base = getBaseUrl();
|
|
35
|
+
const params = new URLSearchParams({ token });
|
|
36
|
+
if (organizationId) params.set("orgId", organizationId);
|
|
37
|
+
return `${base}${this.endpoint}/stream?${params.toString()}`;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const notificationApi = new NotificationApi();
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
export { NotificationApi, notificationApi };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { InfiniteData } from "../../node_modules/@tanstack/query-core/build/modern/hydration-C-jfQLut.js";
|
|
2
|
+
import { MarkAllReadResponse, MarkReadResponse, NotificationListParams, NotificationListResponse } from "../types/index.js";
|
|
3
|
+
import * as _tanstack_react_query0 from "@tanstack/react-query";
|
|
4
|
+
|
|
5
|
+
//#region src/notifications/hooks/notification.d.ts
|
|
6
|
+
declare const NOTIFICATION_KEYS: {
|
|
7
|
+
all: readonly ["notifications"];
|
|
8
|
+
lists: () => readonly ["notifications", "list"];
|
|
9
|
+
list: (params: NotificationListParams) => readonly ["notifications", "list", NotificationListParams];
|
|
10
|
+
unreadCount: () => readonly ["notifications", "unread-count"];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Infinite query for notification feed (popover + full page).
|
|
14
|
+
* Fetches pages on scroll with getNextPageParam.
|
|
15
|
+
*/
|
|
16
|
+
declare function useNotifications(params?: Omit<NotificationListParams, "page">): _tanstack_react_query0.UseInfiniteQueryResult<InfiniteData<NotificationListResponse, unknown>, Error>;
|
|
17
|
+
/**
|
|
18
|
+
* Unread notification count for badge.
|
|
19
|
+
* Falls back to polling every 60s if SSE is not connected.
|
|
20
|
+
*/
|
|
21
|
+
declare function useUnreadCount(options?: {
|
|
22
|
+
refetchInterval?: number;
|
|
23
|
+
}): _tanstack_react_query0.UseQueryResult<number, Error>;
|
|
24
|
+
/**
|
|
25
|
+
* Mark a single notification as read.
|
|
26
|
+
* Optimistically updates the cache.
|
|
27
|
+
*/
|
|
28
|
+
declare function useMarkRead(): _tanstack_react_query0.UseMutationResult<MarkReadResponse, Error, string, unknown>;
|
|
29
|
+
/**
|
|
30
|
+
* Mark all notifications as read.
|
|
31
|
+
*/
|
|
32
|
+
declare function useMarkAllRead(): _tanstack_react_query0.UseMutationResult<MarkAllReadResponse, Error, void, unknown>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { NOTIFICATION_KEYS, useMarkAllRead, useMarkRead, useNotifications, useUnreadCount };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { getToastHandler } from "../../core/react/mutation.factory.js";
|
|
4
|
+
import { notificationApi } from "../api/notification.js";
|
|
5
|
+
import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
|
|
7
|
+
//#region src/notifications/hooks/notification.ts
|
|
8
|
+
/**
|
|
9
|
+
* Notification React Query Hooks
|
|
10
|
+
*
|
|
11
|
+
* Provides hooks for listing, counting, and managing in-app notifications.
|
|
12
|
+
* Uses infinite query for scrollable notification feed.
|
|
13
|
+
*/
|
|
14
|
+
const NOTIFICATION_KEYS = {
|
|
15
|
+
all: ["notifications"],
|
|
16
|
+
lists: () => [...NOTIFICATION_KEYS.all, "list"],
|
|
17
|
+
list: (params) => [...NOTIFICATION_KEYS.lists(), params],
|
|
18
|
+
unreadCount: () => [...NOTIFICATION_KEYS.all, "unread-count"]
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Infinite query for notification feed (popover + full page).
|
|
22
|
+
* Fetches pages on scroll with getNextPageParam.
|
|
23
|
+
*/
|
|
24
|
+
function useNotifications(params = {}) {
|
|
25
|
+
return useInfiniteQuery({
|
|
26
|
+
queryKey: NOTIFICATION_KEYS.list(params),
|
|
27
|
+
queryFn: ({ pageParam }) => notificationApi.list({
|
|
28
|
+
...params,
|
|
29
|
+
page: pageParam
|
|
30
|
+
}),
|
|
31
|
+
initialPageParam: 1,
|
|
32
|
+
getNextPageParam: (lastPage) => {
|
|
33
|
+
const { page, totalPages } = lastPage.pagination;
|
|
34
|
+
return page < totalPages ? page + 1 : void 0;
|
|
35
|
+
},
|
|
36
|
+
staleTime: 3e4
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Unread notification count for badge.
|
|
41
|
+
* Falls back to polling every 60s if SSE is not connected.
|
|
42
|
+
*/
|
|
43
|
+
function useUnreadCount(options = {}) {
|
|
44
|
+
return useQuery({
|
|
45
|
+
queryKey: NOTIFICATION_KEYS.unreadCount(),
|
|
46
|
+
queryFn: () => notificationApi.getUnreadCount(),
|
|
47
|
+
select: (data) => data.data.count,
|
|
48
|
+
refetchInterval: options.refetchInterval ?? 6e4,
|
|
49
|
+
staleTime: 1e4
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Mark a single notification as read.
|
|
54
|
+
* Optimistically updates the cache.
|
|
55
|
+
*/
|
|
56
|
+
function useMarkRead() {
|
|
57
|
+
const queryClient = useQueryClient();
|
|
58
|
+
return useMutation({
|
|
59
|
+
mutationFn: (id) => notificationApi.markRead(id),
|
|
60
|
+
onSuccess: () => {
|
|
61
|
+
queryClient.invalidateQueries({ queryKey: NOTIFICATION_KEYS.lists() });
|
|
62
|
+
queryClient.invalidateQueries({ queryKey: NOTIFICATION_KEYS.unreadCount() });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mark all notifications as read.
|
|
68
|
+
*/
|
|
69
|
+
function useMarkAllRead() {
|
|
70
|
+
const queryClient = useQueryClient();
|
|
71
|
+
const toast = getToastHandler();
|
|
72
|
+
return useMutation({
|
|
73
|
+
mutationFn: () => notificationApi.markAllRead(),
|
|
74
|
+
onSuccess: (data) => {
|
|
75
|
+
queryClient.invalidateQueries({ queryKey: NOTIFICATION_KEYS.lists() });
|
|
76
|
+
queryClient.setQueryData(NOTIFICATION_KEYS.unreadCount(), {
|
|
77
|
+
success: true,
|
|
78
|
+
data: { count: 0 }
|
|
79
|
+
});
|
|
80
|
+
if (data.data.modifiedCount > 0) toast.success?.(`Marked ${data.data.modifiedCount} notifications as read`);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { NOTIFICATION_KEYS, useMarkAllRead, useMarkRead, useNotifications, useUnreadCount };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InAppNotification } from "../types/index.js";
|
|
2
|
+
|
|
3
|
+
//#region src/notifications/hooks/stream.d.ts
|
|
4
|
+
interface UseNotificationStreamOptions {
|
|
5
|
+
/** Called when a new notification arrives */
|
|
6
|
+
onNotification?: (notification: InAppNotification) => void;
|
|
7
|
+
/** Enable/disable the stream (default: true) */
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
/** Auth token for EventSource connection */
|
|
10
|
+
token?: string | null;
|
|
11
|
+
/** Organization/branch ID for scoping */
|
|
12
|
+
organizationId?: string | null;
|
|
13
|
+
}
|
|
14
|
+
interface UseNotificationStreamResult {
|
|
15
|
+
/** Whether the SSE connection is active */
|
|
16
|
+
isConnected: boolean;
|
|
17
|
+
/** Last received notification */
|
|
18
|
+
lastEvent: InAppNotification | null;
|
|
19
|
+
}
|
|
20
|
+
declare function useNotificationStream(options?: UseNotificationStreamOptions): UseNotificationStreamResult;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { useNotificationStream };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { notificationApi } from "../api/notification.js";
|
|
4
|
+
import { NOTIFICATION_KEYS } from "./notification.js";
|
|
5
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/notifications/hooks/stream.ts
|
|
9
|
+
/**
|
|
10
|
+
* SSE Notification Stream Hook
|
|
11
|
+
*
|
|
12
|
+
* Maintains an EventSource connection for real-time notification delivery.
|
|
13
|
+
* Automatically injects new notifications into React Query cache.
|
|
14
|
+
* Reconnects on branch switch (organizationId change).
|
|
15
|
+
*/
|
|
16
|
+
function useNotificationStream(options = {}) {
|
|
17
|
+
const { onNotification, enabled = true, token, organizationId } = options;
|
|
18
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
19
|
+
const [lastEvent, setLastEvent] = useState(null);
|
|
20
|
+
const eventSourceRef = useRef(null);
|
|
21
|
+
const queryClient = useQueryClient();
|
|
22
|
+
const onNotificationRef = useRef(onNotification);
|
|
23
|
+
onNotificationRef.current = onNotification;
|
|
24
|
+
const connect = useCallback(() => {
|
|
25
|
+
if (!token || !enabled) return;
|
|
26
|
+
if (eventSourceRef.current) {
|
|
27
|
+
eventSourceRef.current.close();
|
|
28
|
+
eventSourceRef.current = null;
|
|
29
|
+
}
|
|
30
|
+
const url = notificationApi.getStreamUrl(token, organizationId || void 0);
|
|
31
|
+
const es = new EventSource(url, { withCredentials: true });
|
|
32
|
+
eventSourceRef.current = es;
|
|
33
|
+
es.addEventListener("connected", () => {
|
|
34
|
+
setIsConnected(true);
|
|
35
|
+
});
|
|
36
|
+
es.addEventListener("notification", (event) => {
|
|
37
|
+
try {
|
|
38
|
+
const notification = JSON.parse(event.data);
|
|
39
|
+
setLastEvent(notification);
|
|
40
|
+
queryClient.setQueryData(NOTIFICATION_KEYS.unreadCount(), (old) => {
|
|
41
|
+
if (!old) return {
|
|
42
|
+
success: true,
|
|
43
|
+
data: { count: 1 }
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
...old,
|
|
47
|
+
data: { count: old.data.count + 1 }
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
queryClient.invalidateQueries({ queryKey: NOTIFICATION_KEYS.lists() });
|
|
51
|
+
onNotificationRef.current?.(notification);
|
|
52
|
+
} catch {}
|
|
53
|
+
});
|
|
54
|
+
es.onerror = () => {
|
|
55
|
+
setIsConnected(false);
|
|
56
|
+
};
|
|
57
|
+
}, [
|
|
58
|
+
token,
|
|
59
|
+
enabled,
|
|
60
|
+
organizationId,
|
|
61
|
+
queryClient
|
|
62
|
+
]);
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
connect();
|
|
65
|
+
return () => {
|
|
66
|
+
if (eventSourceRef.current) {
|
|
67
|
+
eventSourceRef.current.close();
|
|
68
|
+
eventSourceRef.current = null;
|
|
69
|
+
setIsConnected(false);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}, [connect]);
|
|
73
|
+
return {
|
|
74
|
+
isConnected,
|
|
75
|
+
lastEvent
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
export { useNotificationStream };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { InAppNotification, MarkAllReadResponse, MarkReadResponse, NotificationData, NotificationListParams, NotificationListResponse, NotificationPagination, UnreadCountResponse } from "./types/index.js";
|
|
2
|
+
import { NotificationApi, notificationApi } from "./api/notification.js";
|
|
3
|
+
import { NOTIFICATION_KEYS, useMarkAllRead, useMarkRead, useNotifications, useUnreadCount } from "./hooks/notification.js";
|
|
4
|
+
import { useNotificationStream } from "./hooks/stream.js";
|
|
5
|
+
export { type InAppNotification, type MarkAllReadResponse, type MarkReadResponse, NOTIFICATION_KEYS, NotificationApi, type NotificationData, type NotificationListParams, type NotificationListResponse, type NotificationPagination, type UnreadCountResponse, notificationApi, useMarkAllRead, useMarkRead, useNotificationStream, useNotifications, useUnreadCount };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { NotificationApi, notificationApi } from "./api/notification.js";
|
|
2
|
+
import { NOTIFICATION_KEYS, useMarkAllRead, useMarkRead, useNotifications, useUnreadCount } from "./hooks/notification.js";
|
|
3
|
+
import { useNotificationStream } from "./hooks/stream.js";
|
|
4
|
+
|
|
5
|
+
export { NOTIFICATION_KEYS, NotificationApi, notificationApi, useMarkAllRead, useMarkRead, useNotificationStream, useNotifications, useUnreadCount };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/notifications/types/index.d.ts
|
|
2
|
+
interface NotificationData {
|
|
3
|
+
link?: string;
|
|
4
|
+
entityId?: string;
|
|
5
|
+
entityType?: string;
|
|
6
|
+
meta?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
interface InAppNotification {
|
|
9
|
+
_id: string;
|
|
10
|
+
id?: string;
|
|
11
|
+
organizationId: string;
|
|
12
|
+
userId: string;
|
|
13
|
+
type: string;
|
|
14
|
+
title: string;
|
|
15
|
+
message: string;
|
|
16
|
+
data?: NotificationData;
|
|
17
|
+
read: boolean;
|
|
18
|
+
readAt: string | null;
|
|
19
|
+
priority: 'low' | 'normal' | 'high';
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
}
|
|
23
|
+
interface NotificationListParams {
|
|
24
|
+
page?: number;
|
|
25
|
+
limit?: number;
|
|
26
|
+
unreadOnly?: boolean;
|
|
27
|
+
type?: string;
|
|
28
|
+
}
|
|
29
|
+
interface NotificationPagination {
|
|
30
|
+
page: number;
|
|
31
|
+
limit: number;
|
|
32
|
+
total: number;
|
|
33
|
+
totalPages: number;
|
|
34
|
+
}
|
|
35
|
+
interface NotificationListResponse {
|
|
36
|
+
success: boolean;
|
|
37
|
+
data: InAppNotification[];
|
|
38
|
+
pagination: NotificationPagination;
|
|
39
|
+
}
|
|
40
|
+
interface UnreadCountResponse {
|
|
41
|
+
success: boolean;
|
|
42
|
+
data: {
|
|
43
|
+
count: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
interface MarkReadResponse {
|
|
47
|
+
success: boolean;
|
|
48
|
+
data: InAppNotification;
|
|
49
|
+
}
|
|
50
|
+
interface MarkAllReadResponse {
|
|
51
|
+
success: boolean;
|
|
52
|
+
data: {
|
|
53
|
+
modifiedCount: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { InAppNotification, MarkAllReadResponse, MarkReadResponse, NotificationData, NotificationListParams, NotificationListResponse, NotificationPagination, UnreadCountResponse };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { PaymentApi, paymentApi } from "./payment.js";
|