@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-QCTXAMLA.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { createQueryString, handleApiRequest } from './chunk-IHCBBLLW.js';
|
|
2
|
-
|
|
3
|
-
// src/core/api-factory.ts
|
|
4
|
-
var BaseApi = class {
|
|
5
|
-
constructor(entity, config = {}) {
|
|
6
|
-
this.entity = entity;
|
|
7
|
-
this.config = {
|
|
8
|
-
basePath: config.basePath ?? "/api/v1",
|
|
9
|
-
defaultParams: {
|
|
10
|
-
limit: 10,
|
|
11
|
-
page: 1,
|
|
12
|
-
...config.defaultParams || {}
|
|
13
|
-
},
|
|
14
|
-
cache: config.cache ?? "no-store",
|
|
15
|
-
headers: {
|
|
16
|
-
"Content-Type": "application/json",
|
|
17
|
-
...config.headers || {}
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
this.baseUrl = `${this.config.basePath}/${this.entity}`;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Creates query string from parameters
|
|
24
|
-
* Delegates to shared utility from api-handler.ts
|
|
25
|
-
*/
|
|
26
|
-
createQueryString(params = {}) {
|
|
27
|
-
return createQueryString(params);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Prepares parameters for API request
|
|
31
|
-
* Handles pagination, sorting, and filters
|
|
32
|
-
* Note: Critical security filters (organizationId, ownerId) are ALWAYS sent, even if null
|
|
33
|
-
*/
|
|
34
|
-
prepareParams(params = {}) {
|
|
35
|
-
const result = {};
|
|
36
|
-
const CRITICAL_FILTERS = ["organizationId", "ownerId"];
|
|
37
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
38
|
-
if (CRITICAL_FILTERS.includes(key)) {
|
|
39
|
-
result[key] = value || null;
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (value !== void 0 && value !== "") {
|
|
43
|
-
if (["page", "limit"].includes(key)) {
|
|
44
|
-
result[key] = parseInt(String(value)) || (key === "page" ? 1 : 10);
|
|
45
|
-
} else if (Array.isArray(value)) {
|
|
46
|
-
if (value.length > 1) {
|
|
47
|
-
result[`${key}[in]`] = value.join(",");
|
|
48
|
-
} else if (value.length === 1) {
|
|
49
|
-
result[key] = value[0];
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
result[key] = value;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Get all records with pagination and filtering
|
|
60
|
-
* Returns offset or keyset pagination based on params
|
|
61
|
-
*/
|
|
62
|
-
async getAll({
|
|
63
|
-
token = null,
|
|
64
|
-
organizationId = null,
|
|
65
|
-
params = {},
|
|
66
|
-
options = {}
|
|
67
|
-
} = {}) {
|
|
68
|
-
const processedParams = this.prepareParams(params);
|
|
69
|
-
const queryString = this.createQueryString(processedParams);
|
|
70
|
-
const requestOptions = {
|
|
71
|
-
cache: this.config.cache,
|
|
72
|
-
...options
|
|
73
|
-
};
|
|
74
|
-
if (token) requestOptions.token = token;
|
|
75
|
-
if (organizationId) requestOptions.organizationId = organizationId;
|
|
76
|
-
return handleApiRequest(
|
|
77
|
-
"GET",
|
|
78
|
-
`${this.baseUrl}?${queryString}`,
|
|
79
|
-
requestOptions
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get a single record by ID
|
|
84
|
-
*/
|
|
85
|
-
async getById({
|
|
86
|
-
token = null,
|
|
87
|
-
organizationId = null,
|
|
88
|
-
id,
|
|
89
|
-
params = {},
|
|
90
|
-
options = {}
|
|
91
|
-
}) {
|
|
92
|
-
if (!id) throw new Error("ID is required");
|
|
93
|
-
const queryString = this.createQueryString(params);
|
|
94
|
-
const url = queryString ? `${this.baseUrl}/${id}?${queryString}` : `${this.baseUrl}/${id}`;
|
|
95
|
-
const requestOptions = {
|
|
96
|
-
cache: this.config.cache,
|
|
97
|
-
...options
|
|
98
|
-
};
|
|
99
|
-
if (token) requestOptions.token = token;
|
|
100
|
-
if (organizationId) requestOptions.organizationId = organizationId;
|
|
101
|
-
return handleApiRequest("GET", url, requestOptions);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create a new record
|
|
105
|
-
*/
|
|
106
|
-
async create({
|
|
107
|
-
token,
|
|
108
|
-
organizationId = null,
|
|
109
|
-
data,
|
|
110
|
-
options = {}
|
|
111
|
-
}) {
|
|
112
|
-
return handleApiRequest("POST", this.baseUrl, {
|
|
113
|
-
token,
|
|
114
|
-
organizationId,
|
|
115
|
-
body: data,
|
|
116
|
-
...options
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Update an existing record
|
|
121
|
-
*/
|
|
122
|
-
async update({
|
|
123
|
-
token,
|
|
124
|
-
organizationId = null,
|
|
125
|
-
id,
|
|
126
|
-
data,
|
|
127
|
-
options = {}
|
|
128
|
-
}) {
|
|
129
|
-
if (!id) throw new Error("ID is required");
|
|
130
|
-
return handleApiRequest("PATCH", `${this.baseUrl}/${id}`, {
|
|
131
|
-
token,
|
|
132
|
-
organizationId,
|
|
133
|
-
body: data,
|
|
134
|
-
...options
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Delete a record
|
|
139
|
-
*/
|
|
140
|
-
async delete({
|
|
141
|
-
token,
|
|
142
|
-
organizationId = null,
|
|
143
|
-
id,
|
|
144
|
-
options = {}
|
|
145
|
-
}) {
|
|
146
|
-
if (!id) throw new Error("ID is required");
|
|
147
|
-
return handleApiRequest("DELETE", `${this.baseUrl}/${id}`, {
|
|
148
|
-
token,
|
|
149
|
-
organizationId,
|
|
150
|
-
...options
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Search with custom parameters
|
|
155
|
-
* @example
|
|
156
|
-
* search({ searchParams: { 'brand[contains]': 'nike' } })
|
|
157
|
-
* search({ searchParams: { upc: '123456789' } })
|
|
158
|
-
*/
|
|
159
|
-
async search({
|
|
160
|
-
token = null,
|
|
161
|
-
organizationId = null,
|
|
162
|
-
searchParams = {},
|
|
163
|
-
params = {},
|
|
164
|
-
options = {}
|
|
165
|
-
} = {}) {
|
|
166
|
-
const queryParams = { ...params, ...searchParams };
|
|
167
|
-
const processedParams = this.prepareParams(queryParams);
|
|
168
|
-
const queryString = this.createQueryString(processedParams);
|
|
169
|
-
const requestOptions = {
|
|
170
|
-
cache: this.config.cache,
|
|
171
|
-
...options
|
|
172
|
-
};
|
|
173
|
-
if (token) requestOptions.token = token;
|
|
174
|
-
if (organizationId) requestOptions.organizationId = organizationId;
|
|
175
|
-
return handleApiRequest(
|
|
176
|
-
"GET",
|
|
177
|
-
`${this.baseUrl}?${queryString}`,
|
|
178
|
-
requestOptions
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Find records by field with optional operator
|
|
183
|
-
* @example
|
|
184
|
-
* findBy({ field: 'brand', value: 'nike', operator: 'contains' })
|
|
185
|
-
* findBy({ field: 'status', value: ['active', 'pending'], operator: 'in' })
|
|
186
|
-
*/
|
|
187
|
-
async findBy({
|
|
188
|
-
token = null,
|
|
189
|
-
organizationId = null,
|
|
190
|
-
field,
|
|
191
|
-
value,
|
|
192
|
-
operator,
|
|
193
|
-
params = {},
|
|
194
|
-
options = {}
|
|
195
|
-
}) {
|
|
196
|
-
if (!field || value === void 0) {
|
|
197
|
-
throw new Error("Field and value are required");
|
|
198
|
-
}
|
|
199
|
-
const queryParams = { ...params };
|
|
200
|
-
if (operator) {
|
|
201
|
-
queryParams[`${field}[${operator}]`] = Array.isArray(value) ? value.join(",") : value;
|
|
202
|
-
} else {
|
|
203
|
-
queryParams[field] = value;
|
|
204
|
-
}
|
|
205
|
-
const processedParams = this.prepareParams(queryParams);
|
|
206
|
-
const queryString = this.createQueryString(processedParams);
|
|
207
|
-
const requestOptions = {
|
|
208
|
-
cache: this.config.cache,
|
|
209
|
-
...options
|
|
210
|
-
};
|
|
211
|
-
if (token) requestOptions.token = token;
|
|
212
|
-
if (organizationId) requestOptions.organizationId = organizationId;
|
|
213
|
-
return handleApiRequest(
|
|
214
|
-
"GET",
|
|
215
|
-
`${this.baseUrl}?${queryString}`,
|
|
216
|
-
requestOptions
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Make a custom API request to a sub-endpoint
|
|
221
|
-
* @example
|
|
222
|
-
* request('POST', `${this.baseUrl}/${id}/action`, { token, data: { ... } })
|
|
223
|
-
*/
|
|
224
|
-
async request(method, endpoint, {
|
|
225
|
-
token,
|
|
226
|
-
organizationId = null,
|
|
227
|
-
data,
|
|
228
|
-
params,
|
|
229
|
-
options = {}
|
|
230
|
-
} = {}) {
|
|
231
|
-
let url = endpoint;
|
|
232
|
-
if (params) {
|
|
233
|
-
const processedParams = this.prepareParams(params);
|
|
234
|
-
const queryString = this.createQueryString(processedParams);
|
|
235
|
-
url = `${endpoint}?${queryString}`;
|
|
236
|
-
}
|
|
237
|
-
return handleApiRequest(method, url, {
|
|
238
|
-
token,
|
|
239
|
-
organizationId,
|
|
240
|
-
body: data,
|
|
241
|
-
cache: this.config.cache,
|
|
242
|
-
...options
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
function createCrudApi(entity, config = {}) {
|
|
247
|
-
return new BaseApi(entity, config);
|
|
248
|
-
}
|
|
249
|
-
function isOffsetPagination(response) {
|
|
250
|
-
return response.method === "offset";
|
|
251
|
-
}
|
|
252
|
-
function isKeysetPagination(response) {
|
|
253
|
-
return response.method === "keyset";
|
|
254
|
-
}
|
|
255
|
-
function isAggregatePagination(response) {
|
|
256
|
-
return response.method === "aggregate";
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
export { BaseApi, createCrudApi, isAggregatePagination, isKeysetPagination, isOffsetPagination };
|
|
260
|
-
//# sourceMappingURL=chunk-QCTXAMLA.js.map
|
|
261
|
-
//# sourceMappingURL=chunk-QCTXAMLA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/api-factory.ts"],"names":[],"mappings":";;;AAiLO,IAAM,UAAN,MAIL;AAAA,EAKA,WAAA,CAAY,MAAA,EAAgB,MAAA,GAAwB,EAAC,EAAG;AACtD,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACZ,QAAA,EAAU,OAAO,QAAA,IAAY,SAAA;AAAA,MAC7B,aAAA,EAAe;AAAA,QACb,KAAA,EAAO,EAAA;AAAA,QACP,IAAA,EAAM,CAAA;AAAA,QACN,GAAI,MAAA,CAAO,aAAA,IAAiB;AAAC,OAC/B;AAAA,MACA,KAAA,EAAO,OAAO,KAAA,IAAS,UAAA;AAAA,MACvB,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,GAAI,MAAA,CAAO,OAAA,IAAW;AAAC;AACzB,KACF;AAEA,IAAA,IAAA,CAAK,UAAU,CAAA,EAAG,IAAA,CAAK,OAAO,QAAQ,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA,CAAA;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAA,CAAkB,MAAA,GAAkC,EAAC,EAAW;AAC9D,IAAA,OAAO,kBAAkB,MAAM,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAA,CAAc,MAAA,GAAsB,EAAC,EAA4B;AAC/D,IAAA,MAAM,SAAkC,EAAC;AAGzC,IAAA,MAAM,gBAAA,GAAmB,CAAC,gBAAA,EAAkB,SAAS,CAAA;AAErD,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAE/C,MAAA,IAAI,gBAAA,CAAiB,QAAA,CAAS,GAAG,CAAA,EAAG;AAElC,QAAA,MAAA,CAAO,GAAG,IAAI,KAAA,IAAS,IAAA;AACvB,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,EAAA,EAAI;AAEvC,QAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AACnC,UAAA,MAAA,CAAO,GAAG,IAAI,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA,KAAM,GAAA,KAAQ,MAAA,GAAS,CAAA,GAAI,EAAA,CAAA;AAAA,QACjE,CAAA,MAAA,IAES,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC7B,UAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,YAAA,MAAA,CAAO,GAAG,GAAG,CAAA,IAAA,CAAM,CAAA,GAAI,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,UACvC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AAC7B,YAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA;AAAA,UACvB;AAAA,QACF,CAAA,MAEK;AACH,UAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA,GAAQ,IAAA;AAAA,IACR,cAAA,GAAiB,IAAA;AAAA,IACjB,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,GAKI,EAAC,EAAqC;AACxC,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AAE1D,IAAA,MAAM,cAAA,GAAiC;AAAA,MACrC,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,KAAA,iBAAsB,KAAA,GAAQ,KAAA;AAClC,IAAA,IAAI,cAAA,iBAA+B,cAAA,GAAiB,cAAA;AAEpD,IAAA,OAAO,gBAAA;AAAA,MACL,KAAA;AAAA,MACA,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,MAC9B;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAA,CAAQ;AAAA,IACZ,KAAA,GAAQ,IAAA;AAAA,IACR,cAAA,GAAiB,IAAA;AAAA,IACjB,EAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,EAM+B;AAC7B,IAAA,IAAI,CAAC,EAAA,EAAI,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAEzC,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,MAAM,CAAA;AACjD,IAAA,MAAM,GAAA,GAAM,WAAA,GACR,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GACpC,CAAA,EAAG,IAAA,CAAK,OAAO,IAAI,EAAE,CAAA,CAAA;AAEzB,IAAA,MAAM,cAAA,GAAiC;AAAA,MACrC,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,KAAA,iBAAsB,KAAA,GAAQ,KAAA;AAClC,IAAA,IAAI,cAAA,iBAA+B,cAAA,GAAiB,cAAA;AAEpD,IAAA,OAAO,gBAAA,CAAiB,KAAA,EAAO,GAAA,EAAK,cAAc,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,IAAA;AAAA,IACA,UAAU;AAAC,GACb,EAK+B;AAC7B,IAAA,OAAO,gBAAA,CAAiB,MAAA,EAAQ,IAAA,CAAK,OAAA,EAAS;AAAA,MAC5C,KAAA;AAAA,MACA,cAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,EAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAU;AAAC,GACb,EAM+B;AAC7B,IAAA,IAAI,CAAC,EAAA,EAAI,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAEzC,IAAA,OAAO,iBAAiB,OAAA,EAAS,CAAA,EAAG,KAAK,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI;AAAA,MACxD,KAAA;AAAA,MACA,cAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,EAAA;AAAA,IACA,UAAU;AAAC,GACb,EAK4B;AAC1B,IAAA,IAAI,CAAC,EAAA,EAAI,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAEzC,IAAA,OAAO,iBAAiB,QAAA,EAAU,CAAA,EAAG,KAAK,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI;AAAA,MACzD,KAAA;AAAA,MACA,cAAA;AAAA,MACA,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA,GAAQ,IAAA;AAAA,IACR,cAAA,GAAiB,IAAA;AAAA,IACjB,eAAe,EAAC;AAAA,IAChB,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,GAMI,EAAC,EAAqC;AACxC,IAAA,MAAM,WAAA,GAAc,EAAE,GAAG,MAAA,EAAQ,GAAG,YAAA,EAAa;AACjD,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,CAAc,WAAW,CAAA;AACtD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AAE1D,IAAA,MAAM,cAAA,GAAiC;AAAA,MACrC,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,KAAA,iBAAsB,KAAA,GAAQ,KAAA;AAClC,IAAA,IAAI,cAAA,iBAA+B,cAAA,GAAiB,cAAA;AAEpD,IAAA,OAAO,gBAAA;AAAA,MACL,KAAA;AAAA,MACA,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,MAC9B;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA,GAAQ,IAAA;AAAA,IACR,cAAA,GAAiB,IAAA;AAAA,IACjB,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,EAQqC;AACnC,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,MAAA,EAAW;AACjC,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD;AAEA,IAAA,MAAM,WAAA,GAA2B,EAAE,GAAG,MAAA,EAAO;AAE7C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,WAAA,CAAY,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,CAAG,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GACtD,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,GACd,KAAA;AAAA,IACN,CAAA,MAAO;AACL,MAAA,WAAA,CAAY,KAAK,CAAA,GAAI,KAAA;AAAA,IACvB;AAEA,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,CAAc,WAAW,CAAA;AACtD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AAE1D,IAAA,MAAM,cAAA,GAAiC;AAAA,MACrC,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,KAAA,iBAAsB,KAAA,GAAQ,KAAA;AAClC,IAAA,IAAI,cAAA,iBAA+B,cAAA,GAAiB,cAAA;AAEpD,IAAA,OAAO,gBAAA;AAAA,MACL,KAAA;AAAA,MACA,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,MAC9B;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAA,CACJ,MAAA,EACA,QAAA,EACA;AAAA,IACE,KAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,IAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAU;AAAC,GACb,GAMI,EAAC,EACe;AACpB,IAAA,IAAI,GAAA,GAAM,QAAA;AAEV,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA;AACjD,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AAC1D,MAAA,GAAA,GAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,IAClC;AAEA,IAAA,OAAO,gBAAA,CAAiB,QAAQ,GAAA,EAAK;AAAA,MACnC,KAAA;AAAA,MACA,cAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AACF;AAuBO,SAAS,aAAA,CAId,MAAA,EAAgB,MAAA,GAAwB,EAAC,EAAoC;AAC7E,EAAA,OAAO,IAAI,OAAA,CAAgC,MAAA,EAAQ,MAAM,CAAA;AAC3D;AAYO,SAAS,mBACd,QAAA,EACyC;AACzC,EAAA,OAAO,SAAS,MAAA,KAAW,QAAA;AAC7B;AAKO,SAAS,mBACd,QAAA,EACyC;AACzC,EAAA,OAAO,SAAS,MAAA,KAAW,QAAA;AAC7B;AAKO,SAAS,sBACd,QAAA,EAC4C;AAC5C,EAAA,OAAO,SAAS,MAAA,KAAW,WAAA;AAC7B","file":"chunk-QCTXAMLA.js","sourcesContent":["/**\r\n * @classytic/commerce-sdk - API Factory\r\n *\r\n * Base API class that provides standardized CRUD operations.\r\n * Supports direct field queries and bracket syntax: field[operator]=value\r\n */\r\n\r\nimport { handleApiRequest, createQueryString } from \"./api-handler\";\r\n\r\n// ==================== Response Types ====================\r\n\r\n/**\r\n * Base API response wrapper\r\n * All endpoints return { success: boolean, ... }\r\n */\r\nexport interface ApiResponse<T = unknown> {\r\n success: boolean;\r\n data?: T;\r\n message?: string;\r\n}\r\n\r\n/**\r\n * Offset pagination response (page-based)\r\n * Used when: ?page=1&limit=10\r\n */\r\nexport interface OffsetPaginationResponse<T = unknown> {\r\n success: boolean;\r\n method: \"offset\";\r\n docs: T[];\r\n page: number;\r\n limit: number;\r\n total: number;\r\n pages: number;\r\n hasNext: boolean;\r\n hasPrev: boolean;\r\n warning?: string;\r\n}\r\n\r\n/**\r\n * Keyset pagination response (cursor-based)\r\n * Used when: ?after=cursor&limit=10\r\n */\r\nexport interface KeysetPaginationResponse<T = unknown> {\r\n success: boolean;\r\n method: \"keyset\";\r\n docs: T[];\r\n limit: number;\r\n hasMore: boolean;\r\n next: string | null;\r\n}\r\n\r\n/**\r\n * Aggregate pagination response\r\n * Used for complex aggregation queries\r\n */\r\nexport interface AggregatePaginationResponse<T = unknown> {\r\n success: boolean;\r\n method: \"aggregate\";\r\n docs: T[];\r\n page: number;\r\n limit: number;\r\n total: number;\r\n pages: number;\r\n hasNext: boolean;\r\n hasPrev: boolean;\r\n warning?: string;\r\n}\r\n\r\n/**\r\n * Union type for all paginated responses\r\n */\r\nexport type PaginatedResponse<T = unknown> =\r\n | OffsetPaginationResponse<T>\r\n | KeysetPaginationResponse<T>\r\n | AggregatePaginationResponse<T>;\r\n\r\n/**\r\n * Delete operation response\r\n * Supports both soft delete (default) and hard delete\r\n */\r\nexport interface DeleteResponse {\r\n success: boolean;\r\n deleted: boolean;\r\n /** ID of the deleted record */\r\n id?: string;\r\n /** @deprecated Use `id` instead */\r\n productId?: string;\r\n /** True if soft delete was performed (default behavior) */\r\n soft?: boolean;\r\n /** Legacy message field */\r\n message?: string;\r\n /** Number of records deleted (for bulk operations) */\r\n count?: number;\r\n}\r\n\r\n// ==================== Request Types ====================\r\n\r\n/**\r\n * Sort direction\r\n */\r\nexport type SortDirection = 1 | -1 | \"asc\" | \"desc\";\r\n\r\n/**\r\n * Sort specification\r\n */\r\nexport type SortSpec = Record<string, SortDirection> | string;\r\n\r\n/**\r\n * Filter operators supported by query parser\r\n * Usage: ?field[operator]=value\r\n */\r\nexport type FilterOperator =\r\n | \"eq\" // Equal\r\n | \"ne\" // Not equal\r\n | \"gt\" // Greater than\r\n | \"gte\" // Greater than or equal\r\n | \"lt\" // Less than\r\n | \"lte\" // Less than or equal\r\n | \"in\" // In array\r\n | \"nin\" // Not in array\r\n | \"contains\" // String contains (case-insensitive)\r\n | \"startsWith\" // String starts with\r\n | \"endsWith\" // String ends with\r\n | \"regex\"; // Regex pattern\r\n\r\n/**\r\n * Query parameters for list/search operations\r\n */\r\nexport interface QueryParams {\r\n // Pagination\r\n page?: number;\r\n limit?: number;\r\n after?: string; // Cursor for keyset pagination\r\n\r\n // Sorting\r\n sort?: SortSpec;\r\n\r\n // Filtering - direct equality or bracket operators\r\n [key: string]: unknown;\r\n}\r\n\r\n/**\r\n * Request options\r\n */\r\nexport interface RequestOptions {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n cache?: RequestCache;\r\n revalidate?: number;\r\n tags?: string[];\r\n headerOptions?: Record<string, string>;\r\n responseType?: \"json\" | \"blob\" | \"text\";\r\n}\r\n\r\n// ==================== Base API Configuration ====================\r\n\r\nexport interface BaseApiConfig {\r\n basePath?: string;\r\n defaultParams?: {\r\n limit?: number;\r\n page?: number;\r\n [key: string]: unknown;\r\n };\r\n cache?: RequestCache;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n// ==================== Base API Class ====================\r\n\r\n/**\r\n * Base API class that provides standardized CRUD operations\r\n * Supports direct field queries and bracket syntax: field[operator]=value\r\n *\r\n * @template TDoc - Document type returned by the API\r\n * @template TCreate - Type for create payload (defaults to Partial<TDoc>)\r\n * @template TUpdate - Type for update payload (defaults to Partial<TDoc>)\r\n */\r\nexport class BaseApi<\r\n TDoc = Record<string, unknown>,\r\n TCreate = Partial<TDoc>,\r\n TUpdate = Partial<TDoc>\r\n> {\r\n readonly entity: string;\r\n readonly config: Required<BaseApiConfig>;\r\n readonly baseUrl: string;\r\n\r\n constructor(entity: string, config: BaseApiConfig = {}) {\r\n this.entity = entity;\r\n this.config = {\r\n basePath: config.basePath ?? \"/api/v1\",\r\n defaultParams: {\r\n limit: 10,\r\n page: 1,\r\n ...(config.defaultParams || {}),\r\n },\r\n cache: config.cache ?? \"no-store\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n ...(config.headers || {}),\r\n },\r\n };\r\n\r\n this.baseUrl = `${this.config.basePath}/${this.entity}`;\r\n }\r\n\r\n /**\r\n * Creates query string from parameters\r\n * Delegates to shared utility from api-handler.ts\r\n */\r\n createQueryString(params: Record<string, unknown> = {}): string {\r\n return createQueryString(params);\r\n }\r\n\r\n /**\r\n * Prepares parameters for API request\r\n * Handles pagination, sorting, and filters\r\n * Note: Critical security filters (organizationId, ownerId) are ALWAYS sent, even if null\r\n */\r\n prepareParams(params: QueryParams = {}): Record<string, unknown> {\r\n const result: Record<string, unknown> = {};\r\n\r\n // Critical security filters that MUST always be sent to backend\r\n const CRITICAL_FILTERS = [\"organizationId\", \"ownerId\"];\r\n\r\n Object.entries(params).forEach(([key, value]) => {\r\n // Critical filters: convert falsy values to null and always include\r\n if (CRITICAL_FILTERS.includes(key)) {\r\n // Convert empty string, undefined, or any falsy value (except 0 and false) to null\r\n result[key] = value || null;\r\n return;\r\n }\r\n\r\n // For all other params: filter out undefined and empty strings\r\n if (value !== undefined && value !== \"\") {\r\n // Handle pagination\r\n if ([\"page\", \"limit\"].includes(key)) {\r\n result[key] = parseInt(String(value)) || (key === \"page\" ? 1 : 10);\r\n }\r\n // Handle arrays with bracket syntax\r\n else if (Array.isArray(value)) {\r\n if (value.length > 1) {\r\n result[`${key}[in]`] = value.join(\",\");\r\n } else if (value.length === 1) {\r\n result[key] = value[0];\r\n }\r\n }\r\n // Pass through null and all other parameters as-is\r\n else {\r\n result[key] = value;\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get all records with pagination and filtering\r\n * Returns offset or keyset pagination based on params\r\n */\r\n async getAll({\r\n token = null,\r\n organizationId = null,\r\n params = {},\r\n options = {},\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n params?: QueryParams;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n } = {}): Promise<PaginatedResponse<TDoc>> {\r\n const processedParams = this.prepareParams(params);\r\n const queryString = this.createQueryString(processedParams);\r\n\r\n const requestOptions: RequestOptions = {\r\n cache: this.config.cache,\r\n ...options,\r\n };\r\n\r\n if (token) requestOptions.token = token;\r\n if (organizationId) requestOptions.organizationId = organizationId;\r\n\r\n return handleApiRequest(\r\n \"GET\",\r\n `${this.baseUrl}?${queryString}`,\r\n requestOptions\r\n );\r\n }\r\n\r\n /**\r\n * Get a single record by ID\r\n */\r\n async getById({\r\n token = null,\r\n organizationId = null,\r\n id,\r\n params = {},\r\n options = {},\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n params?: { select?: string; populate?: string | string[] };\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n }): Promise<ApiResponse<TDoc>> {\r\n if (!id) throw new Error(\"ID is required\");\r\n\r\n const queryString = this.createQueryString(params);\r\n const url = queryString\r\n ? `${this.baseUrl}/${id}?${queryString}`\r\n : `${this.baseUrl}/${id}`;\r\n\r\n const requestOptions: RequestOptions = {\r\n cache: this.config.cache,\r\n ...options,\r\n };\r\n\r\n if (token) requestOptions.token = token;\r\n if (organizationId) requestOptions.organizationId = organizationId;\r\n\r\n return handleApiRequest(\"GET\", url, requestOptions);\r\n }\r\n\r\n /**\r\n * Create a new record\r\n */\r\n async create({\r\n token,\r\n organizationId = null,\r\n data,\r\n options = {},\r\n }: {\r\n token: string;\r\n organizationId?: string | null;\r\n data: TCreate;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n }): Promise<ApiResponse<TDoc>> {\r\n return handleApiRequest(\"POST\", this.baseUrl, {\r\n token,\r\n organizationId,\r\n body: data,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Update an existing record\r\n */\r\n async update({\r\n token,\r\n organizationId = null,\r\n id,\r\n data,\r\n options = {},\r\n }: {\r\n token: string;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n }): Promise<ApiResponse<TDoc>> {\r\n if (!id) throw new Error(\"ID is required\");\r\n\r\n return handleApiRequest(\"PATCH\", `${this.baseUrl}/${id}`, {\r\n token,\r\n organizationId,\r\n body: data,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Delete a record\r\n */\r\n async delete({\r\n token,\r\n organizationId = null,\r\n id,\r\n options = {},\r\n }: {\r\n token: string;\r\n organizationId?: string | null;\r\n id: string;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n }): Promise<DeleteResponse> {\r\n if (!id) throw new Error(\"ID is required\");\r\n\r\n return handleApiRequest(\"DELETE\", `${this.baseUrl}/${id}`, {\r\n token,\r\n organizationId,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Search with custom parameters\r\n * @example\r\n * search({ searchParams: { 'brand[contains]': 'nike' } })\r\n * search({ searchParams: { upc: '123456789' } })\r\n */\r\n async search({\r\n token = null,\r\n organizationId = null,\r\n searchParams = {},\r\n params = {},\r\n options = {},\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n searchParams?: Record<string, unknown>;\r\n params?: QueryParams;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n } = {}): Promise<PaginatedResponse<TDoc>> {\r\n const queryParams = { ...params, ...searchParams };\r\n const processedParams = this.prepareParams(queryParams);\r\n const queryString = this.createQueryString(processedParams);\r\n\r\n const requestOptions: RequestOptions = {\r\n cache: this.config.cache,\r\n ...options,\r\n };\r\n\r\n if (token) requestOptions.token = token;\r\n if (organizationId) requestOptions.organizationId = organizationId;\r\n\r\n return handleApiRequest(\r\n \"GET\",\r\n `${this.baseUrl}?${queryString}`,\r\n requestOptions\r\n );\r\n }\r\n\r\n /**\r\n * Find records by field with optional operator\r\n * @example\r\n * findBy({ field: 'brand', value: 'nike', operator: 'contains' })\r\n * findBy({ field: 'status', value: ['active', 'pending'], operator: 'in' })\r\n */\r\n async findBy({\r\n token = null,\r\n organizationId = null,\r\n field,\r\n value,\r\n operator,\r\n params = {},\r\n options = {},\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n field: string;\r\n value: unknown;\r\n operator?: FilterOperator;\r\n params?: QueryParams;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n }): Promise<PaginatedResponse<TDoc>> {\r\n if (!field || value === undefined) {\r\n throw new Error(\"Field and value are required\");\r\n }\r\n\r\n const queryParams: QueryParams = { ...params };\r\n\r\n if (operator) {\r\n queryParams[`${field}[${operator}]`] = Array.isArray(value)\r\n ? value.join(\",\")\r\n : value;\r\n } else {\r\n queryParams[field] = value;\r\n }\r\n\r\n const processedParams = this.prepareParams(queryParams);\r\n const queryString = this.createQueryString(processedParams);\r\n\r\n const requestOptions: RequestOptions = {\r\n cache: this.config.cache,\r\n ...options,\r\n };\r\n\r\n if (token) requestOptions.token = token;\r\n if (organizationId) requestOptions.organizationId = organizationId;\r\n\r\n return handleApiRequest(\r\n \"GET\",\r\n `${this.baseUrl}?${queryString}`,\r\n requestOptions\r\n );\r\n }\r\n\r\n /**\r\n * Make a custom API request to a sub-endpoint\r\n * @example\r\n * request('POST', `${this.baseUrl}/${id}/action`, { token, data: { ... } })\r\n */\r\n async request<TResponse = unknown>(\r\n method: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\",\r\n endpoint: string,\r\n {\r\n token,\r\n organizationId = null,\r\n data,\r\n params,\r\n options = {},\r\n }: {\r\n token?: string;\r\n organizationId?: string | null;\r\n data?: unknown;\r\n params?: QueryParams;\r\n options?: Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n } = {}\r\n ): Promise<TResponse> {\r\n let url = endpoint;\r\n\r\n if (params) {\r\n const processedParams = this.prepareParams(params);\r\n const queryString = this.createQueryString(processedParams);\r\n url = `${endpoint}?${queryString}`;\r\n }\r\n\r\n return handleApiRequest(method, url, {\r\n token,\r\n organizationId,\r\n body: data,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n}\r\n\r\n// ==================== Factory Function ====================\r\n\r\n/**\r\n * Factory function to create a typed BaseApi instance\r\n *\r\n * @template TDoc - Document type returned by the API\r\n * @template TCreate - Type for create payload\r\n * @template TUpdate - Type for update payload\r\n *\r\n * @example\r\n * // Simple usage\r\n * const productApi = createCrudApi('products');\r\n *\r\n * // With types\r\n * interface Product { _id: string; name: string; price: number; }\r\n * interface CreateProduct { name: string; price: number; }\r\n * const productApi = createCrudApi<Product, CreateProduct>('products');\r\n *\r\n * // With custom config\r\n * const productApi = createCrudApi('products', { basePath: '/api/v2' });\r\n */\r\nexport function createCrudApi<\r\n TDoc = Record<string, unknown>,\r\n TCreate = Partial<TDoc>,\r\n TUpdate = Partial<TDoc>\r\n>(entity: string, config: BaseApiConfig = {}): BaseApi<TDoc, TCreate, TUpdate> {\r\n return new BaseApi<TDoc, TCreate, TUpdate>(entity, config);\r\n}\r\n\r\n// ==================== Type Helpers ====================\r\n\r\n/**\r\n * Extract document type from paginated response\r\n */\r\nexport type ExtractDoc<T> = T extends PaginatedResponse<infer D> ? D : never;\r\n\r\n/**\r\n * Helper to check if response is offset pagination\r\n */\r\nexport function isOffsetPagination<T>(\r\n response: PaginatedResponse<T>\r\n): response is OffsetPaginationResponse<T> {\r\n return response.method === \"offset\";\r\n}\r\n\r\n/**\r\n * Helper to check if response is keyset pagination\r\n */\r\nexport function isKeysetPagination<T>(\r\n response: PaginatedResponse<T>\r\n): response is KeysetPaginationResponse<T> {\r\n return response.method === \"keyset\";\r\n}\r\n\r\n/**\r\n * Helper to check if response is aggregate pagination\r\n */\r\nexport function isAggregatePagination<T>(\r\n response: PaginatedResponse<T>\r\n): response is AggregatePaginationResponse<T> {\r\n return response.method === \"aggregate\";\r\n}\r\n"]}
|
package/dist/chunk-RIKAPJNG.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { handleApiRequest } from './chunk-IHCBBLLW.js';
|
|
2
|
-
|
|
3
|
-
// src/analytics/api/analytics.ts
|
|
4
|
-
var AnalyticsApi = class {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.baseUrl = "/api/v1/analytics";
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Get dashboard analytics
|
|
10
|
-
* GET /analytics/dashboard
|
|
11
|
-
*
|
|
12
|
-
* @param token - Auth token (required)
|
|
13
|
-
* @param params.period - Time period: '7d', '30d', '90d', '1y' (default: '30d')
|
|
14
|
-
* @param params.branchId - Optional branch filter
|
|
15
|
-
*/
|
|
16
|
-
async getDashboard({
|
|
17
|
-
token,
|
|
18
|
-
params = {},
|
|
19
|
-
options = {}
|
|
20
|
-
}) {
|
|
21
|
-
if (!token) {
|
|
22
|
-
throw new Error("Authentication required");
|
|
23
|
-
}
|
|
24
|
-
const queryParams = new URLSearchParams();
|
|
25
|
-
if (params.period) queryParams.append("period", params.period);
|
|
26
|
-
if (params.branchId) queryParams.append("branchId", params.branchId);
|
|
27
|
-
const url = `${this.baseUrl}/dashboard${queryParams.toString() ? `?${queryParams}` : ""}`;
|
|
28
|
-
return handleApiRequest("GET", url, {
|
|
29
|
-
token,
|
|
30
|
-
cache: "no-store",
|
|
31
|
-
// Always fetch fresh analytics data
|
|
32
|
-
...options
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var analyticsApi = new AnalyticsApi();
|
|
37
|
-
|
|
38
|
-
export { AnalyticsApi, analyticsApi };
|
|
39
|
-
//# sourceMappingURL=chunk-RIKAPJNG.js.map
|
|
40
|
-
//# sourceMappingURL=chunk-RIKAPJNG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/analytics/api/analytics.ts"],"names":[],"mappings":";;;AAgBA,IAAM,eAAN,MAAmB;AAAA,EAGjB,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,mBAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAA,CAAa;AAAA,IACjB,KAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,EAI6C;AAC3C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,IAC3C;AAEA,IAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AACxC,IAAA,IAAI,OAAO,MAAA,EAAQ,WAAA,CAAY,MAAA,CAAO,QAAA,EAAU,OAAO,MAAM,CAAA;AAC7D,IAAA,IAAI,OAAO,QAAA,EAAU,WAAA,CAAY,MAAA,CAAO,UAAA,EAAY,OAAO,QAAQ,CAAA;AAEnE,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,UAAA,EAAa,WAAA,CAAY,QAAA,EAAS,GAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAEvF,IAAA,OAAO,gBAAA,CAAiB,OAAO,GAAA,EAAK;AAAA,MAClC,KAAA;AAAA,MACA,KAAA,EAAO,UAAA;AAAA;AAAA,MACP,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AACF;AAEO,IAAM,YAAA,GAAe,IAAI,YAAA","file":"chunk-RIKAPJNG.js","sourcesContent":["/**\r\n * Analytics API - Dashboard and reporting\r\n *\r\n * Endpoints:\r\n * - getDashboard({ token, params }) - Get dashboard analytics\r\n *\r\n * Roles:\r\n * - admin, superadmin, finance-admin, finance-manager\r\n */\r\n\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type { ApiResponse, RequestOptions } from \"../../core/api-factory\";\r\nimport type { AnalyticsDashboard, AnalyticsDashboardParams } from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n\r\nclass AnalyticsApi {\r\n private baseUrl: string;\r\n\r\n constructor() {\r\n this.baseUrl = \"/api/v1/analytics\";\r\n }\r\n\r\n /**\r\n * Get dashboard analytics\r\n * GET /analytics/dashboard\r\n *\r\n * @param token - Auth token (required)\r\n * @param params.period - Time period: '7d', '30d', '90d', '1y' (default: '30d')\r\n * @param params.branchId - Optional branch filter\r\n */\r\n async getDashboard({\r\n token,\r\n params = {},\r\n options = {},\r\n }: {\r\n token: string;\r\n params?: AnalyticsDashboardParams;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AnalyticsDashboard>> {\r\n if (!token) {\r\n throw new Error(\"Authentication required\");\r\n }\r\n\r\n const queryParams = new URLSearchParams();\r\n if (params.period) queryParams.append(\"period\", params.period);\r\n if (params.branchId) queryParams.append(\"branchId\", params.branchId);\r\n\r\n const url = `${this.baseUrl}/dashboard${queryParams.toString() ? `?${queryParams}` : \"\"}`;\r\n\r\n return handleApiRequest(\"GET\", url, {\r\n token,\r\n cache: \"no-store\", // Always fetch fresh analytics data\r\n ...options,\r\n });\r\n }\r\n}\r\n\r\nexport const analyticsApi = new AnalyticsApi();\r\nexport { AnalyticsApi };\r\n"]}
|
package/dist/chunk-U3XT35GZ.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { useQueryClient, useMutation } from '@tanstack/react-query';
|
|
2
|
-
import { useTransition } from 'react';
|
|
3
|
-
|
|
4
|
-
// src/core/react/mutation.factory.ts
|
|
5
|
-
var toastHandler = {
|
|
6
|
-
success: (message) => console.log("[Success]", message),
|
|
7
|
-
error: (message) => console.error("[Error]", message)
|
|
8
|
-
};
|
|
9
|
-
function configureToast(handler) {
|
|
10
|
-
toastHandler = handler;
|
|
11
|
-
}
|
|
12
|
-
function getToastHandler() {
|
|
13
|
-
return toastHandler;
|
|
14
|
-
}
|
|
15
|
-
function useMutationWithTransition(config) {
|
|
16
|
-
const {
|
|
17
|
-
mutationFn,
|
|
18
|
-
invalidateQueries = [],
|
|
19
|
-
onSuccess,
|
|
20
|
-
onError,
|
|
21
|
-
messages = {},
|
|
22
|
-
useTransition: shouldUseTransition = true,
|
|
23
|
-
showToast = true
|
|
24
|
-
} = config;
|
|
25
|
-
const queryClient = useQueryClient();
|
|
26
|
-
const [isPending, startTransition] = useTransition();
|
|
27
|
-
const mutation = useMutation({
|
|
28
|
-
mutationFn,
|
|
29
|
-
onSuccess: (data, variables, context) => {
|
|
30
|
-
if (shouldUseTransition && invalidateQueries.length > 0) {
|
|
31
|
-
startTransition(() => {
|
|
32
|
-
invalidateQueries.forEach((queryKey) => {
|
|
33
|
-
queryClient.invalidateQueries({ queryKey });
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
} else if (invalidateQueries.length > 0) {
|
|
37
|
-
invalidateQueries.forEach((queryKey) => {
|
|
38
|
-
queryClient.invalidateQueries({ queryKey });
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
if (showToast && messages.success) {
|
|
42
|
-
toastHandler.success(
|
|
43
|
-
typeof messages.success === "function" ? messages.success(data, variables) : messages.success
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
onSuccess?.(data, variables, context);
|
|
47
|
-
},
|
|
48
|
-
onError: (error, variables, context) => {
|
|
49
|
-
if (showToast) {
|
|
50
|
-
const errorMessage = typeof messages.error === "function" ? messages.error(error, variables) : messages.error || error?.message || "An error occurred";
|
|
51
|
-
toastHandler.error(errorMessage);
|
|
52
|
-
}
|
|
53
|
-
onError?.(error, variables, context);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return {
|
|
57
|
-
mutate: mutation.mutate,
|
|
58
|
-
mutateAsync: mutation.mutateAsync,
|
|
59
|
-
isLoading: mutation.isPending || isPending,
|
|
60
|
-
isPending: mutation.isPending || isPending,
|
|
61
|
-
isSuccess: mutation.isSuccess,
|
|
62
|
-
error: mutation.error,
|
|
63
|
-
data: mutation.data,
|
|
64
|
-
reset: mutation.reset
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
function useMutationWithOptimistic(config) {
|
|
68
|
-
const {
|
|
69
|
-
mutationFn,
|
|
70
|
-
queryKeys = [],
|
|
71
|
-
optimisticUpdate,
|
|
72
|
-
messages = {},
|
|
73
|
-
onSuccess,
|
|
74
|
-
onError,
|
|
75
|
-
showToast = true
|
|
76
|
-
} = config;
|
|
77
|
-
const queryClient = useQueryClient();
|
|
78
|
-
const mutation = useMutation({
|
|
79
|
-
mutationFn,
|
|
80
|
-
onMutate: async (variables) => {
|
|
81
|
-
await Promise.all(
|
|
82
|
-
queryKeys.map((queryKey) => queryClient.cancelQueries({ queryKey }))
|
|
83
|
-
);
|
|
84
|
-
const previousData = queryKeys.map((queryKey) => ({
|
|
85
|
-
queryKey,
|
|
86
|
-
data: queryClient.getQueryData(queryKey)
|
|
87
|
-
}));
|
|
88
|
-
if (optimisticUpdate) {
|
|
89
|
-
queryKeys.forEach((queryKey) => {
|
|
90
|
-
queryClient.setQueryData(
|
|
91
|
-
queryKey,
|
|
92
|
-
(old) => optimisticUpdate(old, variables)
|
|
93
|
-
);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return { previousData };
|
|
97
|
-
},
|
|
98
|
-
onSuccess: (data, variables, context) => {
|
|
99
|
-
queryKeys.forEach((queryKey) => {
|
|
100
|
-
queryClient.invalidateQueries({ queryKey });
|
|
101
|
-
});
|
|
102
|
-
if (showToast && messages.success) {
|
|
103
|
-
toastHandler.success(
|
|
104
|
-
typeof messages.success === "function" ? messages.success(data, variables) : messages.success
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
onSuccess?.(data, variables, context);
|
|
108
|
-
},
|
|
109
|
-
onError: (error, variables, context) => {
|
|
110
|
-
const ctx = context;
|
|
111
|
-
if (ctx?.previousData) {
|
|
112
|
-
ctx.previousData.forEach(({ queryKey, data }) => {
|
|
113
|
-
queryClient.setQueryData(queryKey, data);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
if (showToast) {
|
|
117
|
-
const errorMessage = typeof messages.error === "function" ? messages.error(error, variables) : messages.error || error?.message || "An error occurred";
|
|
118
|
-
toastHandler.error(errorMessage);
|
|
119
|
-
}
|
|
120
|
-
onError?.(error, variables, context);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
return {
|
|
124
|
-
mutate: mutation.mutate,
|
|
125
|
-
mutateAsync: mutation.mutateAsync,
|
|
126
|
-
isLoading: mutation.isPending,
|
|
127
|
-
isPending: mutation.isPending,
|
|
128
|
-
isSuccess: mutation.isSuccess,
|
|
129
|
-
error: mutation.error,
|
|
130
|
-
data: mutation.data,
|
|
131
|
-
reset: mutation.reset
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
function createOptimisticMutation({
|
|
135
|
-
mutationFn,
|
|
136
|
-
queryClient,
|
|
137
|
-
queryKeys,
|
|
138
|
-
optimisticUpdate,
|
|
139
|
-
onSuccess,
|
|
140
|
-
onError,
|
|
141
|
-
messages
|
|
142
|
-
}) {
|
|
143
|
-
return useMutation({
|
|
144
|
-
mutationFn,
|
|
145
|
-
onMutate: async (variables) => {
|
|
146
|
-
await Promise.all(
|
|
147
|
-
queryKeys.map(
|
|
148
|
-
(key) => queryClient.cancelQueries({ queryKey: key, exact: false })
|
|
149
|
-
)
|
|
150
|
-
);
|
|
151
|
-
const previous = queryKeys.map((key) => ({
|
|
152
|
-
key,
|
|
153
|
-
data: queryClient.getQueriesData({ queryKey: key })
|
|
154
|
-
}));
|
|
155
|
-
if (optimisticUpdate) {
|
|
156
|
-
queryKeys.forEach((key) => {
|
|
157
|
-
const queries = queryClient.getQueriesData({ queryKey: key });
|
|
158
|
-
queries.forEach(([queryKey, queryData]) => {
|
|
159
|
-
queryClient.setQueryData(queryKey, optimisticUpdate(queryData, variables));
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return { previous };
|
|
164
|
-
},
|
|
165
|
-
onSuccess: (data, variables, context) => {
|
|
166
|
-
if (messages?.success) {
|
|
167
|
-
toastHandler.success(
|
|
168
|
-
typeof messages.success === "function" ? messages.success(data, variables) : messages.success
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
queryKeys.forEach((key) => {
|
|
172
|
-
queryClient.invalidateQueries({ queryKey: key });
|
|
173
|
-
});
|
|
174
|
-
onSuccess?.(data, variables, context);
|
|
175
|
-
},
|
|
176
|
-
onError: (error, variables, context) => {
|
|
177
|
-
const ctx = context;
|
|
178
|
-
if (ctx?.previous) {
|
|
179
|
-
ctx.previous.forEach(({ data }) => {
|
|
180
|
-
data.forEach(([queryKey, queryData]) => {
|
|
181
|
-
queryClient.setQueryData(queryKey, queryData);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
toastHandler.error(
|
|
186
|
-
typeof messages?.error === "function" ? messages.error(error, variables) : messages?.error || error?.message || "An error occurred"
|
|
187
|
-
);
|
|
188
|
-
onError?.(error, variables, context);
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
var QUERY_CONFIGS = {
|
|
193
|
-
realtime: { staleTime: 2e4, refetchInterval: 3e4 },
|
|
194
|
-
frequent: { staleTime: 6e4, refetchInterval: false },
|
|
195
|
-
stable: { staleTime: 3e5, refetchInterval: false },
|
|
196
|
-
static: { staleTime: 6e5, refetchInterval: false }
|
|
197
|
-
};
|
|
198
|
-
var createMessage = (fn) => fn;
|
|
199
|
-
|
|
200
|
-
export { QUERY_CONFIGS, configureToast, createMessage, createOptimisticMutation, getToastHandler, useMutationWithOptimistic, useMutationWithTransition };
|
|
201
|
-
//# sourceMappingURL=chunk-U3XT35GZ.js.map
|
|
202
|
-
//# sourceMappingURL=chunk-U3XT35GZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/react/mutation.factory.ts"],"names":[],"mappings":"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","file":"chunk-U3XT35GZ.js","sourcesContent":["\"use client\";\r\n\r\nimport {\r\n useMutation,\r\n useQueryClient,\r\n type QueryClient,\r\n type QueryKey,\r\n} from \"@tanstack/react-query\";\r\nimport { useTransition } from \"react\";\r\n\r\n// Configurable toast handler - users can override this\r\nlet toastHandler: ToastHandler = {\r\n success: (message: string) => console.log(\"[Success]\", message),\r\n error: (message: string) => console.error(\"[Error]\", message),\r\n};\r\n\r\nexport interface ToastHandler {\r\n success: (message: string) => void;\r\n error: (message: string) => void;\r\n}\r\n\r\n/**\r\n * Configure the toast handler for mutations\r\n * @example\r\n * import { toast } from 'sonner';\r\n * configureToast({ success: toast.success, error: toast.error });\r\n */\r\nexport function configureToast(handler: ToastHandler): void {\r\n toastHandler = handler;\r\n}\r\n\r\n/**\r\n * Get the current toast handler (for internal use)\r\n */\r\nexport function getToastHandler(): ToastHandler {\r\n return toastHandler;\r\n}\r\n\r\nexport interface MutationMessages {\r\n success?: string | ((data: unknown, variables: unknown) => string);\r\n error?: string | ((error: Error, variables: unknown) => string);\r\n}\r\n\r\nexport interface MutationWithTransitionConfig<TData, TVariables> {\r\n mutationFn: (variables: TVariables) => Promise<TData>;\r\n invalidateQueries?: QueryKey[];\r\n onSuccess?: (data: TData, variables: TVariables, context: unknown) => void;\r\n onError?: (error: Error, variables: TVariables, context: unknown) => void;\r\n messages?: MutationMessages;\r\n useTransition?: boolean;\r\n showToast?: boolean;\r\n}\r\n\r\nexport function useMutationWithTransition<TData, TVariables>(\r\n config: MutationWithTransitionConfig<TData, TVariables>\r\n) {\r\n const {\r\n mutationFn,\r\n invalidateQueries = [],\r\n onSuccess,\r\n onError,\r\n messages = {},\r\n useTransition: shouldUseTransition = true,\r\n showToast = true,\r\n } = config;\r\n\r\n const queryClient = useQueryClient();\r\n const [isPending, startTransition] = useTransition();\r\n\r\n const mutation = useMutation({\r\n mutationFn,\r\n\r\n onSuccess: (data, variables, context) => {\r\n if (shouldUseTransition && invalidateQueries.length > 0) {\r\n startTransition(() => {\r\n invalidateQueries.forEach((queryKey) => {\r\n queryClient.invalidateQueries({ queryKey });\r\n });\r\n });\r\n } else if (invalidateQueries.length > 0) {\r\n invalidateQueries.forEach((queryKey) => {\r\n queryClient.invalidateQueries({ queryKey });\r\n });\r\n }\r\n\r\n if (showToast && messages.success) {\r\n toastHandler.success(\r\n typeof messages.success === \"function\"\r\n ? messages.success(data, variables)\r\n : messages.success\r\n );\r\n }\r\n\r\n onSuccess?.(data, variables, context);\r\n },\r\n\r\n onError: (error, variables, context) => {\r\n if (showToast) {\r\n const errorMessage =\r\n typeof messages.error === \"function\"\r\n ? messages.error(error as Error, variables)\r\n : messages.error || (error as Error)?.message || \"An error occurred\";\r\n\r\n toastHandler.error(errorMessage);\r\n }\r\n\r\n onError?.(error as Error, variables, context);\r\n },\r\n });\r\n\r\n return {\r\n mutate: mutation.mutate,\r\n mutateAsync: mutation.mutateAsync,\r\n isLoading: mutation.isPending || isPending,\r\n isPending: mutation.isPending || isPending,\r\n isSuccess: mutation.isSuccess,\r\n error: mutation.error,\r\n data: mutation.data,\r\n reset: mutation.reset,\r\n };\r\n}\r\n\r\nexport interface MutationWithOptimisticConfig<TData, TVariables> {\r\n mutationFn: (variables: TVariables) => Promise<TData>;\r\n queryKeys?: QueryKey[];\r\n optimisticUpdate?: (oldData: unknown, variables: TVariables) => unknown;\r\n messages?: MutationMessages;\r\n onSuccess?: (data: TData, variables: TVariables, context: unknown) => void;\r\n onError?: (error: Error, variables: TVariables, context: unknown) => void;\r\n showToast?: boolean;\r\n}\r\n\r\nexport function useMutationWithOptimistic<TData, TVariables>(\r\n config: MutationWithOptimisticConfig<TData, TVariables>\r\n) {\r\n const {\r\n mutationFn,\r\n queryKeys = [],\r\n optimisticUpdate,\r\n messages = {},\r\n onSuccess,\r\n onError,\r\n showToast = true,\r\n } = config;\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const mutation = useMutation({\r\n mutationFn,\r\n\r\n onMutate: async (variables) => {\r\n await Promise.all(\r\n queryKeys.map((queryKey) => queryClient.cancelQueries({ queryKey }))\r\n );\r\n\r\n const previousData = queryKeys.map((queryKey) => ({\r\n queryKey,\r\n data: queryClient.getQueryData(queryKey),\r\n }));\r\n\r\n if (optimisticUpdate) {\r\n queryKeys.forEach((queryKey) => {\r\n queryClient.setQueryData(queryKey, (old: unknown) =>\r\n optimisticUpdate(old, variables)\r\n );\r\n });\r\n }\r\n\r\n return { previousData };\r\n },\r\n\r\n onSuccess: (data, variables, context) => {\r\n queryKeys.forEach((queryKey) => {\r\n queryClient.invalidateQueries({ queryKey });\r\n });\r\n\r\n if (showToast && messages.success) {\r\n toastHandler.success(\r\n typeof messages.success === \"function\"\r\n ? messages.success(data, variables)\r\n : messages.success\r\n );\r\n }\r\n\r\n onSuccess?.(data, variables, context);\r\n },\r\n\r\n onError: (error, variables, context) => {\r\n const ctx = context as { previousData?: Array<{ queryKey: QueryKey; data: unknown }> };\r\n if (ctx?.previousData) {\r\n ctx.previousData.forEach(({ queryKey, data }) => {\r\n queryClient.setQueryData(queryKey, data);\r\n });\r\n }\r\n\r\n if (showToast) {\r\n const errorMessage =\r\n typeof messages.error === \"function\"\r\n ? messages.error(error as Error, variables)\r\n : messages.error || (error as Error)?.message || \"An error occurred\";\r\n\r\n toastHandler.error(errorMessage);\r\n }\r\n\r\n onError?.(error as Error, variables, context);\r\n },\r\n });\r\n\r\n return {\r\n mutate: mutation.mutate,\r\n mutateAsync: mutation.mutateAsync,\r\n isLoading: mutation.isPending,\r\n isPending: mutation.isPending,\r\n isSuccess: mutation.isSuccess,\r\n error: mutation.error,\r\n data: mutation.data,\r\n reset: mutation.reset,\r\n };\r\n}\r\n\r\nexport interface CreateOptimisticMutationConfig<TData, TVariables> {\r\n mutationFn: (variables: TVariables) => Promise<TData>;\r\n queryClient: QueryClient;\r\n queryKeys: QueryKey[];\r\n optimisticUpdate?: (oldData: unknown, variables: TVariables) => unknown;\r\n onSuccess?: (data: TData, variables: TVariables, context: unknown) => void;\r\n onError?: (error: Error, variables: TVariables, context: unknown) => void;\r\n messages?: MutationMessages;\r\n}\r\n\r\nexport function createOptimisticMutation<TData, TVariables>({\r\n mutationFn,\r\n queryClient,\r\n queryKeys,\r\n optimisticUpdate,\r\n onSuccess,\r\n onError,\r\n messages,\r\n}: CreateOptimisticMutationConfig<TData, TVariables>) {\r\n return useMutation({\r\n mutationFn,\r\n\r\n onMutate: async (variables) => {\r\n await Promise.all(\r\n queryKeys.map((key) =>\r\n queryClient.cancelQueries({ queryKey: key, exact: false })\r\n )\r\n );\r\n\r\n const previous = queryKeys.map((key) => ({\r\n key,\r\n data: queryClient.getQueriesData({ queryKey: key }),\r\n }));\r\n\r\n if (optimisticUpdate) {\r\n queryKeys.forEach((key) => {\r\n const queries = queryClient.getQueriesData({ queryKey: key });\r\n queries.forEach(([queryKey, queryData]) => {\r\n queryClient.setQueryData(queryKey, optimisticUpdate(queryData, variables));\r\n });\r\n });\r\n }\r\n\r\n return { previous };\r\n },\r\n\r\n onSuccess: (data, variables, context) => {\r\n if (messages?.success) {\r\n toastHandler.success(\r\n typeof messages.success === \"function\"\r\n ? messages.success(data, variables)\r\n : messages.success\r\n );\r\n }\r\n\r\n queryKeys.forEach((key) => {\r\n queryClient.invalidateQueries({ queryKey: key });\r\n });\r\n\r\n onSuccess?.(data, variables, context);\r\n },\r\n\r\n onError: (error, variables, context) => {\r\n const ctx = context as {\r\n previous?: Array<{ key: QueryKey; data: Array<[QueryKey, unknown]> }>;\r\n };\r\n if (ctx?.previous) {\r\n ctx.previous.forEach(({ data }) => {\r\n data.forEach(([queryKey, queryData]) => {\r\n queryClient.setQueryData(queryKey, queryData);\r\n });\r\n });\r\n }\r\n\r\n toastHandler.error(\r\n typeof messages?.error === \"function\"\r\n ? messages.error(error as Error, variables)\r\n : messages?.error || (error as Error)?.message || \"An error occurred\"\r\n );\r\n\r\n onError?.(error as Error, variables, context);\r\n },\r\n });\r\n}\r\n\r\nexport const QUERY_CONFIGS = {\r\n realtime: { staleTime: 20000, refetchInterval: 30000 },\r\n frequent: { staleTime: 60000, refetchInterval: false },\r\n stable: { staleTime: 300000, refetchInterval: false },\r\n static: { staleTime: 600000, refetchInterval: false },\r\n} as const;\r\n\r\nexport const createMessage = <T>(fn: T): T => fn;\r\n"]}
|