@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.
Files changed (438) hide show
  1. package/README.md +277 -146
  2. package/dist/accounting/api/account.d.ts +49 -0
  3. package/dist/accounting/api/account.js +45 -0
  4. package/dist/accounting/api/budget.d.ts +76 -0
  5. package/dist/accounting/api/budget.js +82 -0
  6. package/dist/accounting/api/constants.d.ts +58 -0
  7. package/dist/accounting/api/constants.js +79 -0
  8. package/dist/accounting/api/fiscal-period.d.ts +31 -0
  9. package/dist/accounting/api/fiscal-period.js +30 -0
  10. package/dist/accounting/api/index.d.ts +7 -0
  11. package/dist/accounting/api/journal-entry.d.ts +66 -0
  12. package/dist/accounting/api/journal-entry.js +72 -0
  13. package/dist/accounting/api/posting.d.ts +55 -0
  14. package/dist/accounting/api/posting.js +70 -0
  15. package/dist/accounting/api/reports.d.ts +63 -0
  16. package/dist/accounting/api/reports.js +81 -0
  17. package/dist/accounting/hooks/account.d.ts +29 -0
  18. package/dist/accounting/hooks/account.js +102 -0
  19. package/dist/accounting/hooks/budget.d.ts +39 -0
  20. package/dist/accounting/hooks/budget.js +106 -0
  21. package/dist/accounting/hooks/fiscal-period.d.ts +22 -0
  22. package/dist/accounting/hooks/fiscal-period.js +52 -0
  23. package/dist/accounting/hooks/index.d.ts +6 -0
  24. package/dist/accounting/hooks/journal-entry.d.ts +37 -0
  25. package/dist/accounting/hooks/journal-entry.js +89 -0
  26. package/dist/accounting/hooks/posting.d.ts +128 -0
  27. package/dist/accounting/hooks/posting.js +119 -0
  28. package/dist/accounting/hooks/reports.d.ts +32 -0
  29. package/dist/accounting/hooks/reports.js +131 -0
  30. package/dist/accounting/index.d.ts +15 -0
  31. package/dist/accounting/index.js +15 -0
  32. package/dist/accounting/types/index.d.ts +375 -0
  33. package/dist/analytics/api/analytics.d.ts +16 -0
  34. package/dist/analytics/api/analytics.js +27 -0
  35. package/dist/analytics/api/index.d.ts +1 -0
  36. package/dist/analytics/hooks/analytics.d.ts +12 -0
  37. package/dist/analytics/hooks/analytics.js +33 -0
  38. package/dist/analytics/hooks/index.d.ts +1 -0
  39. package/dist/analytics/index.d.ts +4 -27
  40. package/dist/analytics/index.js +4 -6
  41. package/dist/analytics/types.d.ts +46 -0
  42. package/dist/audit/api/audit.d.ts +17 -0
  43. package/dist/audit/api/audit.js +21 -0
  44. package/dist/audit/hooks/audit.d.ts +17 -0
  45. package/dist/audit/hooks/audit.js +38 -0
  46. package/dist/audit/index.d.ts +4 -0
  47. package/dist/audit/index.js +4 -0
  48. package/dist/audit/types/index.d.ts +32 -0
  49. package/dist/auth/api/user-data.d.ts +30 -0
  50. package/dist/auth/api/user-data.js +70 -0
  51. package/dist/auth/hooks/user-search.d.ts +32 -0
  52. package/dist/auth/hooks/user-search.js +51 -0
  53. package/dist/auth/index.d.ts +4 -39
  54. package/dist/auth/index.js +5 -5
  55. package/dist/auth/types.d.ts +46 -0
  56. package/dist/auth/types.js +27 -0
  57. package/dist/catalog/api/category.d.ts +97 -0
  58. package/dist/catalog/api/category.js +109 -0
  59. package/dist/catalog/api/index.d.ts +4 -0
  60. package/dist/catalog/api/product.d.ts +136 -0
  61. package/dist/catalog/api/product.js +142 -0
  62. package/dist/catalog/api/review.d.ts +32 -0
  63. package/dist/catalog/api/review.js +41 -0
  64. package/dist/catalog/api/size-guide.d.ts +46 -0
  65. package/dist/catalog/api/size-guide.js +58 -0
  66. package/dist/catalog/hooks/category.d.ts +201 -0
  67. package/dist/catalog/hooks/category.js +295 -0
  68. package/dist/catalog/hooks/index.d.ts +4 -0
  69. package/dist/catalog/hooks/product.d.ts +165 -0
  70. package/dist/catalog/hooks/product.js +267 -0
  71. package/dist/catalog/hooks/review.d.ts +18 -0
  72. package/dist/catalog/hooks/review.js +38 -0
  73. package/dist/catalog/hooks/size-guide.d.ts +136 -0
  74. package/dist/catalog/hooks/size-guide.js +173 -0
  75. package/dist/catalog/index.d.ts +13 -571
  76. package/dist/catalog/index.js +10 -9
  77. package/dist/catalog/prefetch.d.ts +29 -0
  78. package/dist/catalog/prefetch.js +32 -0
  79. package/dist/catalog/types/category.d.ts +168 -0
  80. package/dist/catalog/types/index.d.ts +4 -0
  81. package/dist/catalog/types/product.d.ts +261 -0
  82. package/dist/catalog/types/review.d.ts +48 -0
  83. package/dist/catalog/types/size-guide.d.ts +118 -0
  84. package/dist/client.d.ts +138 -0
  85. package/dist/client.js +129 -0
  86. package/dist/content/api/cms.d.ts +27 -0
  87. package/dist/content/api/cms.js +43 -0
  88. package/dist/content/api/index.d.ts +2 -0
  89. package/dist/content/api/media.d.ts +74 -0
  90. package/dist/content/api/media.js +77 -0
  91. package/dist/content/hooks/cms.d.ts +31 -0
  92. package/dist/content/hooks/cms.js +62 -0
  93. package/dist/content/hooks/index.d.ts +2 -0
  94. package/dist/content/hooks/media.d.ts +74 -0
  95. package/dist/content/hooks/media.js +153 -0
  96. package/dist/content/index.d.ts +7 -309
  97. package/dist/content/index.js +6 -6
  98. package/dist/content/types/cms.d.ts +390 -0
  99. package/dist/content/types/media.d.ts +110 -0
  100. package/dist/core/api-factory.d.ts +17 -0
  101. package/dist/core/api-factory.js +39 -0
  102. package/dist/core/api-handler.d.ts +53 -0
  103. package/dist/core/api-handler.js +89 -0
  104. package/dist/core/index.d.ts +4 -166
  105. package/dist/core/index.js +4 -5
  106. package/dist/core/prefetch.d.ts +2 -0
  107. package/dist/core/prefetch.js +3 -0
  108. package/dist/core/react/crud.factory.d.ts +3 -0
  109. package/dist/core/react/crud.factory.js +5 -0
  110. package/dist/core/react/index.d.ts +4 -0
  111. package/dist/core/react/index.js +7 -0
  112. package/dist/core/react/mutation.factory.d.ts +9 -0
  113. package/dist/core/react/mutation.factory.js +21 -0
  114. package/dist/core/react/query.factory.d.ts +12 -0
  115. package/dist/core/react/query.factory.js +5 -0
  116. package/dist/core/server-context.d.ts +6 -0
  117. package/dist/core/server-context.js +12 -0
  118. package/dist/core/types/shared.d.ts +29 -0
  119. package/dist/finance/api/finance.d.ts +22 -0
  120. package/dist/finance/api/finance.js +29 -0
  121. package/dist/finance/api/index.d.ts +1 -0
  122. package/dist/finance/hooks/finance.d.ts +32 -0
  123. package/dist/finance/hooks/finance.js +66 -0
  124. package/dist/finance/hooks/index.d.ts +1 -0
  125. package/dist/finance/index.d.ts +4 -81
  126. package/dist/finance/index.js +4 -5
  127. package/dist/finance/types/finance.d.ts +82 -0
  128. package/dist/index.d.ts +139 -32
  129. package/dist/index.js +113 -29
  130. package/dist/inventory/api/adjustment.d.ts +123 -0
  131. package/dist/inventory/api/adjustment.js +120 -0
  132. package/dist/inventory/api/availability.d.ts +70 -0
  133. package/dist/inventory/api/availability.js +47 -0
  134. package/dist/inventory/api/cost.d.ts +58 -0
  135. package/dist/inventory/api/cost.js +34 -0
  136. package/dist/inventory/api/index.d.ts +18 -0
  137. package/dist/inventory/api/lot.d.ts +82 -0
  138. package/dist/inventory/api/lot.js +46 -0
  139. package/dist/inventory/api/movement.d.ts +71 -0
  140. package/dist/inventory/api/movement.js +75 -0
  141. package/dist/inventory/api/package.d.ts +97 -0
  142. package/dist/inventory/api/package.js +56 -0
  143. package/dist/inventory/api/procurement.d.ts +110 -0
  144. package/dist/inventory/api/procurement.js +59 -0
  145. package/dist/inventory/api/purchase.d.ts +106 -0
  146. package/dist/inventory/api/purchase.js +115 -0
  147. package/dist/inventory/api/replenishment.d.ts +145 -0
  148. package/dist/inventory/api/replenishment.js +63 -0
  149. package/dist/inventory/api/report.d.ts +102 -0
  150. package/dist/inventory/api/report.js +54 -0
  151. package/dist/inventory/api/request.d.ts +157 -0
  152. package/dist/inventory/api/request.js +140 -0
  153. package/dist/inventory/api/reservation.d.ts +77 -0
  154. package/dist/inventory/api/reservation.js +51 -0
  155. package/dist/inventory/api/scan.d.ts +29 -0
  156. package/dist/inventory/api/scan.js +30 -0
  157. package/dist/inventory/api/supplier.d.ts +9 -0
  158. package/dist/inventory/api/supplier.js +24 -0
  159. package/dist/inventory/api/trace.d.ts +71 -0
  160. package/dist/inventory/api/trace.js +39 -0
  161. package/dist/inventory/api/transfer.d.ts +162 -0
  162. package/dist/inventory/api/transfer.js +155 -0
  163. package/dist/inventory/api/warehouse.d.ts +199 -0
  164. package/dist/inventory/api/warehouse.js +155 -0
  165. package/dist/inventory/hooks/adjustment.d.ts +24 -0
  166. package/dist/inventory/hooks/adjustment.js +30 -0
  167. package/dist/inventory/hooks/availability.d.ts +16 -0
  168. package/dist/inventory/hooks/availability.js +35 -0
  169. package/dist/inventory/hooks/cost.d.ts +21 -0
  170. package/dist/inventory/hooks/cost.js +50 -0
  171. package/dist/inventory/hooks/index.d.ts +18 -0
  172. package/dist/inventory/hooks/inventory.d.ts +130 -0
  173. package/dist/inventory/hooks/inventory.js +267 -0
  174. package/dist/inventory/hooks/lot.d.ts +26 -0
  175. package/dist/inventory/hooks/lot.js +67 -0
  176. package/dist/inventory/hooks/movement.d.ts +68 -0
  177. package/dist/inventory/hooks/movement.js +106 -0
  178. package/dist/inventory/hooks/package.d.ts +32 -0
  179. package/dist/inventory/hooks/package.js +80 -0
  180. package/dist/inventory/hooks/procurement.d.ts +28 -0
  181. package/dist/inventory/hooks/procurement.js +87 -0
  182. package/dist/inventory/hooks/purchase.d.ts +63 -0
  183. package/dist/inventory/hooks/purchase.js +119 -0
  184. package/dist/inventory/hooks/replenishment.d.ts +34 -0
  185. package/dist/inventory/hooks/replenishment.js +87 -0
  186. package/dist/inventory/hooks/report.d.ts +37 -0
  187. package/dist/inventory/hooks/report.js +79 -0
  188. package/dist/inventory/hooks/request.d.ts +113 -0
  189. package/dist/inventory/hooks/request.js +218 -0
  190. package/dist/inventory/hooks/reservation.d.ts +25 -0
  191. package/dist/inventory/hooks/reservation.js +56 -0
  192. package/dist/inventory/hooks/scan.d.ts +14 -0
  193. package/dist/inventory/hooks/scan.js +22 -0
  194. package/dist/inventory/hooks/supplier.d.ts +24 -0
  195. package/dist/inventory/hooks/supplier.js +30 -0
  196. package/dist/inventory/hooks/trace.d.ts +19 -0
  197. package/dist/inventory/hooks/trace.js +55 -0
  198. package/dist/inventory/hooks/transfer.d.ts +90 -0
  199. package/dist/inventory/hooks/transfer.js +197 -0
  200. package/dist/inventory/hooks/warehouse.d.ts +87 -0
  201. package/dist/inventory/hooks/warehouse.js +240 -0
  202. package/dist/inventory/index.d.ts +39 -512
  203. package/dist/inventory/index.js +37 -16
  204. package/dist/inventory/types/index.d.ts +3 -0
  205. package/dist/inventory/types/inventory.d.ts +485 -0
  206. package/dist/inventory/types/supplier.d.ts +90 -0
  207. package/dist/inventory/types/warehouse.d.ts +182 -0
  208. package/dist/logistics/api/index.d.ts +1 -0
  209. package/dist/logistics/api/logistics.d.ts +260 -0
  210. package/dist/logistics/api/logistics.js +249 -0
  211. package/dist/logistics/hooks/index.d.ts +1 -0
  212. package/dist/logistics/hooks/logistics.d.ts +252 -0
  213. package/dist/logistics/hooks/logistics.js +370 -0
  214. package/dist/logistics/index.d.ts +4 -248
  215. package/dist/logistics/index.js +4 -7
  216. package/dist/logistics/types/logistics.d.ts +188 -0
  217. package/dist/node_modules/@tanstack/query-core/build/modern/hydration-C-jfQLut.d.ts +270 -0
  218. package/dist/notifications/api/notification.d.ts +15 -0
  219. package/dist/notifications/api/notification.js +43 -0
  220. package/dist/notifications/hooks/notification.d.ts +34 -0
  221. package/dist/notifications/hooks/notification.js +86 -0
  222. package/dist/notifications/hooks/stream.d.ts +22 -0
  223. package/dist/notifications/hooks/stream.js +80 -0
  224. package/dist/notifications/index.d.ts +5 -0
  225. package/dist/notifications/index.js +5 -0
  226. package/dist/notifications/types/index.d.ts +57 -0
  227. package/dist/payments/api/index.d.ts +1 -0
  228. package/dist/payments/api/payment.d.ts +89 -0
  229. package/dist/payments/api/payment.js +93 -0
  230. package/dist/payments/hooks/payment.d.ts +53 -0
  231. package/dist/payments/hooks/payment.js +93 -0
  232. package/dist/payments/index.d.ts +4 -55
  233. package/dist/payments/index.js +4 -6
  234. package/dist/payments/types/payment.d.ts +50 -0
  235. package/dist/permissions/checker.d.ts +125 -0
  236. package/dist/permissions/checker.js +150 -0
  237. package/dist/permissions/index.d.ts +3 -0
  238. package/dist/permissions/index.js +4 -0
  239. package/dist/permissions/roles.d.ts +39 -0
  240. package/dist/permissions/roles.js +66 -0
  241. package/dist/platform/api/branch.d.ts +57 -0
  242. package/dist/platform/api/branch.js +73 -0
  243. package/dist/platform/api/config.d.ts +67 -0
  244. package/dist/platform/api/config.js +83 -0
  245. package/dist/platform/api/features.d.ts +15 -0
  246. package/dist/platform/api/features.js +20 -0
  247. package/dist/platform/api/index.d.ts +6 -0
  248. package/dist/platform/api/promo.d.ts +286 -0
  249. package/dist/platform/api/promo.js +276 -0
  250. package/dist/platform/api/user.d.ts +10 -0
  251. package/dist/platform/api/user.js +29 -0
  252. package/dist/platform/api/webhook.d.ts +102 -0
  253. package/dist/platform/api/webhook.js +124 -0
  254. package/dist/platform/hooks/branch.d.ts +24 -0
  255. package/dist/platform/hooks/branch.js +31 -0
  256. package/dist/platform/hooks/config.d.ts +61 -0
  257. package/dist/platform/hooks/config.js +100 -0
  258. package/dist/platform/hooks/features.d.ts +22 -0
  259. package/dist/platform/hooks/features.js +75 -0
  260. package/dist/platform/hooks/index.d.ts +6 -0
  261. package/dist/platform/hooks/promo.d.ts +218 -0
  262. package/dist/platform/hooks/promo.js +451 -0
  263. package/dist/platform/hooks/user.d.ts +24 -0
  264. package/dist/platform/hooks/user.js +30 -0
  265. package/dist/platform/index.d.ts +18 -645
  266. package/dist/platform/index.js +14 -8
  267. package/dist/platform/prefetch.d.ts +9 -0
  268. package/dist/platform/prefetch.js +11 -0
  269. package/dist/platform/types/branch.d.ts +110 -0
  270. package/dist/platform/types/branch.js +16 -0
  271. package/dist/platform/types/config.d.ts +137 -0
  272. package/dist/platform/types/features.d.ts +46 -0
  273. package/dist/platform/types/promo.d.ts +260 -0
  274. package/dist/platform/types/user.d.ts +72 -0
  275. package/dist/platform/types/webhook.d.ts +165 -0
  276. package/dist/sales/api/cart.d.ts +34 -0
  277. package/dist/sales/api/cart.js +38 -0
  278. package/dist/sales/api/customer.d.ts +40 -0
  279. package/dist/sales/api/customer.js +52 -0
  280. package/dist/sales/api/earning-rules.d.ts +54 -0
  281. package/dist/sales/api/earning-rules.js +56 -0
  282. package/dist/sales/api/index.d.ts +9 -0
  283. package/dist/sales/api/loyalty.d.ts +54 -0
  284. package/dist/sales/api/loyalty.js +57 -0
  285. package/dist/sales/api/order.d.ts +147 -0
  286. package/dist/sales/api/order.js +69 -0
  287. package/dist/sales/api/pos.d.ts +81 -0
  288. package/dist/sales/api/pos.js +95 -0
  289. package/dist/sales/api/referrals.d.ts +63 -0
  290. package/dist/sales/api/referrals.js +62 -0
  291. package/dist/sales/api/tiers.d.ts +66 -0
  292. package/dist/sales/api/tiers.js +59 -0
  293. package/dist/sales/hooks/cart.d.ts +50 -0
  294. package/dist/sales/hooks/cart.js +161 -0
  295. package/dist/sales/hooks/customer.d.ts +100 -0
  296. package/dist/sales/hooks/customer.js +130 -0
  297. package/dist/sales/hooks/earning-rules.d.ts +31 -0
  298. package/dist/sales/hooks/earning-rules.js +112 -0
  299. package/dist/sales/hooks/index.d.ts +8 -0
  300. package/dist/sales/hooks/loyalty.d.ts +51 -0
  301. package/dist/sales/hooks/loyalty.js +122 -0
  302. package/dist/sales/hooks/order.d.ts +219 -0
  303. package/dist/sales/hooks/order.js +401 -0
  304. package/dist/sales/hooks/pos.d.ts +87 -0
  305. package/dist/sales/hooks/pos.js +222 -0
  306. package/dist/sales/hooks/referrals.d.ts +34 -0
  307. package/dist/sales/hooks/referrals.js +132 -0
  308. package/dist/sales/hooks/tiers.d.ts +32 -0
  309. package/dist/sales/hooks/tiers.js +144 -0
  310. package/dist/sales/index.d.ts +25 -620
  311. package/dist/sales/index.js +19 -9
  312. package/dist/sales/prefetch.d.ts +10 -0
  313. package/dist/sales/prefetch.js +13 -0
  314. package/dist/sales/types/cart.d.ts +123 -0
  315. package/dist/sales/types/customer.d.ts +119 -0
  316. package/dist/sales/types/earning-rules.d.ts +75 -0
  317. package/dist/sales/types/index.d.ts +8 -0
  318. package/dist/sales/types/loyalty.d.ts +120 -0
  319. package/dist/sales/types/order.d.ts +487 -0
  320. package/dist/sales/types/order.js +22 -0
  321. package/dist/sales/types/pos.d.ts +227 -0
  322. package/dist/sales/types/referrals.d.ts +51 -0
  323. package/dist/sales/types/tiers.d.ts +56 -0
  324. package/dist/server.d.ts +41 -23
  325. package/dist/server.js +41 -36
  326. package/dist/transaction/api/index.d.ts +1 -0
  327. package/dist/transaction/api/transaction.d.ts +63 -0
  328. package/dist/transaction/api/transaction.js +84 -0
  329. package/dist/transaction/hooks/index.d.ts +1 -0
  330. package/dist/transaction/hooks/transaction.d.ts +106 -0
  331. package/dist/transaction/hooks/transaction.js +156 -0
  332. package/dist/transaction/index.d.ts +4 -104
  333. package/dist/transaction/index.js +5 -8
  334. package/dist/transaction/types/transaction.d.ts +440 -0
  335. package/dist/transaction/types/transaction.js +86 -0
  336. package/package.json +36 -25
  337. package/dist/adjustment-MNH3AT6S.js +0 -5
  338. package/dist/adjustment-MNH3AT6S.js.map +0 -1
  339. package/dist/analytics/index.js.map +0 -1
  340. package/dist/analytics-DMcD-o8w.d.ts +0 -76
  341. package/dist/api-factory-B_h4RKBm.d.ts +0 -280
  342. package/dist/auth/index.js.map +0 -1
  343. package/dist/catalog/index.js.map +0 -1
  344. package/dist/chunk-24FDD6UR.js +0 -75
  345. package/dist/chunk-24FDD6UR.js.map +0 -1
  346. package/dist/chunk-2TF7QNYV.js +0 -159
  347. package/dist/chunk-2TF7QNYV.js.map +0 -1
  348. package/dist/chunk-2YAZ5WG6.js +0 -479
  349. package/dist/chunk-2YAZ5WG6.js.map +0 -1
  350. package/dist/chunk-36NLLAVH.js +0 -177
  351. package/dist/chunk-36NLLAVH.js.map +0 -1
  352. package/dist/chunk-3OYSJB3P.js +0 -126
  353. package/dist/chunk-3OYSJB3P.js.map +0 -1
  354. package/dist/chunk-4IYW6RF3.js +0 -862
  355. package/dist/chunk-4IYW6RF3.js.map +0 -1
  356. package/dist/chunk-5E57JODA.js +0 -135
  357. package/dist/chunk-5E57JODA.js.map +0 -1
  358. package/dist/chunk-7LZCW4VF.js +0 -13
  359. package/dist/chunk-7LZCW4VF.js.map +0 -1
  360. package/dist/chunk-AQAISI4F.js +0 -183
  361. package/dist/chunk-AQAISI4F.js.map +0 -1
  362. package/dist/chunk-B6MPVOV7.js +0 -328
  363. package/dist/chunk-B6MPVOV7.js.map +0 -1
  364. package/dist/chunk-CILP56G2.js +0 -94
  365. package/dist/chunk-CILP56G2.js.map +0 -1
  366. package/dist/chunk-ERQ52WHY.js +0 -534
  367. package/dist/chunk-ERQ52WHY.js.map +0 -1
  368. package/dist/chunk-FOTUJPM4.js +0 -640
  369. package/dist/chunk-FOTUJPM4.js.map +0 -1
  370. package/dist/chunk-IHCBBLLW.js +0 -198
  371. package/dist/chunk-IHCBBLLW.js.map +0 -1
  372. package/dist/chunk-L4OEI4VZ.js +0 -123
  373. package/dist/chunk-L4OEI4VZ.js.map +0 -1
  374. package/dist/chunk-LRV7MWWX.js +0 -616
  375. package/dist/chunk-LRV7MWWX.js.map +0 -1
  376. package/dist/chunk-M3B4DFTT.js +0 -76
  377. package/dist/chunk-M3B4DFTT.js.map +0 -1
  378. package/dist/chunk-N43VE355.js +0 -126
  379. package/dist/chunk-N43VE355.js.map +0 -1
  380. package/dist/chunk-PYYLHUV6.js +0 -3
  381. package/dist/chunk-PYYLHUV6.js.map +0 -1
  382. package/dist/chunk-QCTXAMLA.js +0 -261
  383. package/dist/chunk-QCTXAMLA.js.map +0 -1
  384. package/dist/chunk-RIKAPJNG.js +0 -40
  385. package/dist/chunk-RIKAPJNG.js.map +0 -1
  386. package/dist/chunk-U3XT35GZ.js +0 -202
  387. package/dist/chunk-U3XT35GZ.js.map +0 -1
  388. package/dist/chunk-W22WB3WZ.js +0 -148
  389. package/dist/chunk-W22WB3WZ.js.map +0 -1
  390. package/dist/chunk-WTIJMKML.js +0 -27
  391. package/dist/chunk-WTIJMKML.js.map +0 -1
  392. package/dist/chunk-X2CQFJPR.js +0 -75
  393. package/dist/chunk-X2CQFJPR.js.map +0 -1
  394. package/dist/chunk-YYFKLOKO.js +0 -769
  395. package/dist/chunk-YYFKLOKO.js.map +0 -1
  396. package/dist/client-BPG8fbae.d.ts +0 -113
  397. package/dist/content/index.js.map +0 -1
  398. package/dist/core/index.js.map +0 -1
  399. package/dist/core/react.d.ts +0 -107
  400. package/dist/core/react.js +0 -5
  401. package/dist/core/react.js.map +0 -1
  402. package/dist/coupon-BZSZ0y3n.d.ts +0 -129
  403. package/dist/coupon-CDzL4bJG.d.ts +0 -655
  404. package/dist/crud.factory-DyKaPHcU.d.ts +0 -181
  405. package/dist/finance/index.js.map +0 -1
  406. package/dist/finance-BJdfKRw0.d.ts +0 -135
  407. package/dist/index.js.map +0 -1
  408. package/dist/inventory/index.js.map +0 -1
  409. package/dist/inventory-B5pssqRx.d.ts +0 -748
  410. package/dist/logistics/index.js.map +0 -1
  411. package/dist/logistics-REVDorcc.d.ts +0 -410
  412. package/dist/media-CNLJK93J.d.ts +0 -721
  413. package/dist/movement-R3CERFAM.js +0 -5
  414. package/dist/movement-R3CERFAM.js.map +0 -1
  415. package/dist/order-BfdPxZiA.d.ts +0 -412
  416. package/dist/payment-BRboLqvU.d.ts +0 -127
  417. package/dist/payments/index.js.map +0 -1
  418. package/dist/platform/index.js.map +0 -1
  419. package/dist/pos-C-sBzevg.d.ts +0 -538
  420. package/dist/product-p09zXkXB.d.ts +0 -260
  421. package/dist/purchase-54PER2PY.js +0 -5
  422. package/dist/purchase-54PER2PY.js.map +0 -1
  423. package/dist/request-MP6NV5ZE.js +0 -5
  424. package/dist/request-MP6NV5ZE.js.map +0 -1
  425. package/dist/sales/index.js.map +0 -1
  426. package/dist/server.js.map +0 -1
  427. package/dist/size-guide-DgjzjM5P.d.ts +0 -554
  428. package/dist/stock-2LP4HJSB.js +0 -5
  429. package/dist/stock-2LP4HJSB.js.map +0 -1
  430. package/dist/stock-CfrU5_Wr.d.ts +0 -632
  431. package/dist/supplier-BWJTRZ5Z.js +0 -5
  432. package/dist/supplier-BWJTRZ5Z.js.map +0 -1
  433. package/dist/transaction/index.js.map +0 -1
  434. package/dist/transaction-Bf6WjYCh.d.ts +0 -84
  435. package/dist/transaction-dL3WW-er.d.ts +0 -442
  436. package/dist/transfer-4XSS6HWT.js +0 -5
  437. package/dist/transfer-4XSS6HWT.js.map +0 -1
  438. package/dist/user-data-DdLjAGwO.d.ts +0 -132
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/transaction/types/transaction.ts","../src/transaction/api/transaction.ts","../src/transaction/hooks/transaction.ts"],"names":["TransactionFlow","TransactionStatus","TransactionCategory","TransactionType"],"mappings":"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","file":"chunk-AQAISI4F.js","sourcesContent":["/**\n * Transaction Types\n *\n * Transactions track cashflow events across the system.\n * Used by: Orders, POS, Inventory, CRM, HRM, and manual entries.\n *\n * Sources:\n * - modules/transaction/transaction.model.js\n * - common/revenue/enums.js\n * - @classytic/revenue library\n *\n * Key concepts:\n * - `flow`: Direction of money ('inflow' = income, 'outflow' = expense)\n * - `type`: Category of transaction (order_purchase, refund, rent, etc.)\n * - Amounts in smallest unit (paisa for BDT)\n */\n\n// ============================================\n// PAYMENT ENUMS\n// ============================================\n\n/**\n * Payment methods supported by the system\n */\nexport type PaymentMethod =\n | 'cash'\n | 'bkash'\n | 'nagad'\n | 'rocket'\n | 'bank_transfer'\n | 'card'\n | 'online'\n | 'manual'\n | 'split';\n\nexport type PaymentGatewayType =\n | 'manual'\n | 'stripe'\n | 'sslcommerz'\n | 'bkash'\n | 'nagad';\n\n// ============================================\n// TRANSACTION FLOW (Money Direction)\n// ============================================\n\n/**\n * Transaction Flow - Direction of money movement\n * - inflow: Money coming in (sales, income, capital injection)\n * - outflow: Money going out (expenses, refunds, purchases)\n */\nexport enum TransactionFlow {\n INFLOW = 'inflow',\n OUTFLOW = 'outflow',\n}\n\nexport type TransactionFlowType = 'inflow' | 'outflow';\n\n// ============================================\n// TRANSACTION STATUS\n// ============================================\n\n/**\n * Transaction Status - Payment lifecycle states\n */\nexport enum TransactionStatus {\n PENDING = 'pending',\n PAYMENT_INITIATED = 'payment_initiated',\n PROCESSING = 'processing',\n REQUIRES_ACTION = 'requires_action',\n VERIFIED = 'verified',\n COMPLETED = 'completed',\n FAILED = 'failed',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n REFUNDED = 'refunded',\n PARTIALLY_REFUNDED = 'partially_refunded',\n}\n\nexport type TransactionStatusType =\n | 'pending'\n | 'payment_initiated'\n | 'processing'\n | 'requires_action'\n | 'verified'\n | 'completed'\n | 'failed'\n | 'cancelled'\n | 'expired'\n | 'refunded'\n | 'partially_refunded';\n\n// ============================================\n// TRANSACTION CATEGORIES (type field values)\n// ============================================\n\n/**\n * Transaction Categories\n *\n * The `type` field stores the category for reporting/grouping.\n * Flow is determined by `flow` field, not by category.\n *\n * ┌─────────────────────────────────────────────────────────────────┐\n * │ INFLOW (Income) │ OUTFLOW (Expense) │\n * ├─────────────────────────────────┼───────────────────────────────┤\n * │ order_purchase (POS/Web sales) │ inventory_purchase (stock) │\n * │ wholesale_sale (B2B sales) │ purchase_return (refund recv) │\n * │ capital_injection │ cogs (cost of goods sold) │\n * │ retained_earnings │ rent, utilities, equipment... │\n * │ other_income │ inventory_loss │\n * │ tip_income (optional) │ marketing, maintenance... │\n * │ │ refund (customer refunds) │\n * └─────────────────────────────────┴───────────────────────────────┘\n */\nexport enum TransactionCategory {\n // ============ REVENUE CATEGORIES (INFLOW) ============\n ORDER_PURCHASE = 'order_purchase',\n ORDER_SUBSCRIPTION = 'order_subscription',\n WHOLESALE_SALE = 'wholesale_sale',\n PLATFORM_SUBSCRIPTION = 'platform_subscription',\n CREATOR_SUBSCRIPTION = 'creator_subscription',\n ENROLLMENT_PURCHASE = 'enrollment_purchase',\n ENROLLMENT_SUBSCRIPTION = 'enrollment_subscription',\n\n // ============ INVENTORY CATEGORIES ============\n INVENTORY_PURCHASE = 'inventory_purchase',\n PURCHASE_RETURN = 'purchase_return',\n INVENTORY_LOSS = 'inventory_loss',\n INVENTORY_ADJUSTMENT = 'inventory_adjustment',\n COGS = 'cogs',\n\n // ============ REFUNDS (OUTFLOW) ============\n REFUND = 'refund',\n SUBSCRIPTION = 'subscription',\n PURCHASE = 'purchase',\n\n // ============ OPERATIONAL EXPENSES (OUTFLOW) ============\n RENT = 'rent',\n UTILITIES = 'utilities',\n EQUIPMENT = 'equipment',\n SUPPLIES = 'supplies',\n MAINTENANCE = 'maintenance',\n MARKETING = 'marketing',\n OTHER_EXPENSE = 'other_expense',\n\n // ============ OPERATIONAL INCOME (INFLOW) ============\n CAPITAL_INJECTION = 'capital_injection',\n RETAINED_EARNINGS = 'retained_earnings',\n TIP_INCOME = 'tip_income',\n OTHER_INCOME = 'other_income',\n}\n\nexport type TransactionCategoryType =\n | 'order_purchase'\n | 'order_subscription'\n | 'wholesale_sale'\n | 'platform_subscription'\n | 'creator_subscription'\n | 'enrollment_purchase'\n | 'enrollment_subscription'\n | 'refund'\n | 'subscription'\n | 'purchase'\n | 'inventory_purchase'\n | 'purchase_return'\n | 'inventory_loss'\n | 'inventory_adjustment'\n | 'cogs'\n | 'rent'\n | 'utilities'\n | 'equipment'\n | 'supplies'\n | 'maintenance'\n | 'marketing'\n | 'other_expense'\n | 'capital_injection'\n | 'retained_earnings'\n | 'tip_income'\n | 'other_income';\n\n// ============================================\n// NESTED TYPES\n// ============================================\n\n/**\n * Transaction Split Payment - Individual payment in a split transaction\n * Different from POS SplitPaymentEntry which has additional UI state fields\n */\nexport interface TransactionSplitPayment {\n method: PaymentMethod;\n amount: number;\n reference?: string;\n details?: Record<string, unknown>;\n}\n\n/**\n * Payment Details - For manual/split payments\n */\nexport interface TransactionPaymentDetails {\n provider?: string;\n walletNumber?: string;\n walletType?: 'personal' | 'merchant';\n trxId?: string;\n bankName?: string;\n accountNumber?: string;\n accountName?: string;\n proofUrl?: string;\n /** Split payment entries (when method is 'split') */\n payments?: TransactionSplitPayment[];\n}\n\n/**\n * Tax type for transactions\n */\nexport type TaxType = 'vat' | 'gst' | 'sales_tax' | 'income_tax' | 'withholding_tax' | 'none';\n\n/**\n * Tax Details for VAT/GST/Sales Tax tracking\n */\nexport interface TransactionTaxDetails {\n /** Tax type: vat, gst, sales_tax, etc. */\n type?: TaxType;\n /** Tax rate as decimal (0.15 = 15%) */\n rate?: number;\n /** Whether prices include tax (BD default: true) */\n isInclusive?: boolean;\n /** Tax jurisdiction code (e.g., 'BD' for Bangladesh) */\n jurisdiction?: string;\n}\n\n/**\n * Gateway Details - Payment provider info\n */\nexport interface TransactionGateway {\n type: PaymentGatewayType | string;\n provider?: string;\n sessionId?: string;\n paymentIntentId?: string;\n metadata?: Record<string, unknown>;\n verificationData?: Record<string, unknown>;\n}\n\n/**\n * Commission tracking for gateway/marketplace payments\n */\nexport interface TransactionCommission {\n /** Commission rate as decimal */\n rate?: number;\n /** Gross commission amount */\n grossAmount?: number;\n /** Gateway fee rate as decimal */\n gatewayFeeRate?: number;\n /** Gateway fee amount */\n gatewayFeeAmount?: number;\n /** Net commission amount (grossAmount - gatewayFeeAmount) */\n netAmount?: number;\n /** Commission status */\n status?: 'pending' | 'paid' | 'waived' | 'reversed';\n /** Affiliate tracking (optional) */\n affiliate?: {\n recipientId?: string;\n recipientType?: 'user' | 'organization' | 'partner';\n rate?: number;\n grossAmount?: number;\n netAmount?: number;\n };\n /** Multi-party commission splits (optional) */\n splits?: Array<{\n type?: string;\n recipientId?: string;\n rate?: number;\n grossAmount?: number;\n netAmount?: number;\n }>;\n}\n\n/**\n * Webhook tracking\n */\nexport interface TransactionWebhook {\n eventId?: string;\n eventType?: string;\n receivedAt?: string;\n processedAt?: string;\n payload?: Record<string, unknown>;\n}\n\n/**\n * Reconciliation tracking\n */\nexport interface TransactionReconciliation {\n isReconciled?: boolean;\n reconciledAt?: string;\n reconciledBy?: string;\n bankStatementRef?: string;\n}\n\n// ============================================\n// TRANSACTION DOCUMENT\n// ============================================\n\n/**\n * Transaction Document\n *\n * Key fields:\n * - flow: Direction of money (inflow/outflow)\n * - type: Category of transaction (order_purchase, refund, etc.)\n * - amount: Gross amount in smallest unit (paisa)\n * - fee: Platform/gateway fees deducted\n * - tax: VAT/tax portion (informational)\n * - net: amount - fee - tax (derived)\n */\nexport interface Transaction {\n _id: string;\n organizationId?: string;\n\n // ===== CLASSIFICATION =====\n /**\n * Flow direction: 'inflow' (money in) or 'outflow' (money out)\n * Use this for Income/Expense classification in UI\n */\n flow: TransactionFlowType;\n\n /**\n * Transaction category (e.g. 'order_purchase', 'refund', 'rent', 'cogs')\n * Note: Backend stores category in the 'type' field\n */\n type: TransactionCategoryType | string;\n\n /** Transaction status */\n status: TransactionStatusType | string;\n\n // ===== AMOUNTS (in smallest currency unit - paisa for BDT) =====\n /** Gross money that moved (in smallest unit, e.g. paisa) */\n amount: number;\n\n /** Currency code (default: 'BDT') */\n currency?: string;\n\n /** Platform/gateway fees deducted */\n fee?: number;\n\n /** VAT/tax portion (informational, for VAT reporting) */\n tax?: number;\n\n /** Net amount: amount - fee - tax */\n net?: number;\n\n /** Tax details for VAT/GST reporting */\n taxDetails?: TransactionTaxDetails;\n\n // ===== PARTIES =====\n customerId?: string | null;\n handledBy?: string | null;\n\n // ===== PAYMENT =====\n method: PaymentMethod | string;\n gateway?: TransactionGateway;\n paymentDetails?: TransactionPaymentDetails;\n\n // ===== REFERENCES =====\n /** Source model type (Order, Purchase, Manual) - polymorphic reference */\n sourceModel?: 'Order' | 'Purchase' | 'Manual' | string;\n /** Source document ID */\n sourceId?: string;\n /** Related transaction (for refunds linking to original) */\n relatedTransactionId?: string;\n\n // ===== SOURCE & BRANCH =====\n /** Source channel: where the transaction originated */\n source: 'web' | 'pos' | 'api';\n /** Branch reference ID */\n branch?: string;\n /** Branch code for display */\n branchCode?: string;\n\n // ===== COMMISSION & SPLITS =====\n /** Commission tracking for gateway payments */\n commission?: TransactionCommission;\n /** Revenue splits (for marketplace use) */\n splits?: Array<{\n recipientId?: string;\n recipientType?: string;\n type?: string;\n amount?: number;\n status?: string;\n paidAt?: string;\n }>;\n\n // ===== METADATA =====\n metadata?: Record<string, unknown>;\n description?: string;\n notes?: string;\n idempotencyKey?: string;\n webhook?: TransactionWebhook;\n\n // ===== TIMESTAMPS =====\n /** Actual transaction date (when it occurred) */\n date?: string;\n\n // Verification\n verifiedBy?: string;\n verifiedAt?: string;\n\n // Status timestamps\n initiatedAt?: string;\n completedAt?: string;\n paidAt?: string;\n failedAt?: string;\n failureReason?: string;\n\n // Refund tracking\n refundedAt?: string;\n refundedAmount?: number;\n refundReason?: string;\n\n // Reconciliation\n reconciliation?: TransactionReconciliation;\n\n // Standard timestamps\n createdAt: string;\n updatedAt: string;\n\n // ===== VIRTUALS =====\n isPaid?: boolean;\n amountInUnits?: number;\n}\n\n// ============================================\n// PAYLOADS\n// ============================================\n\n/**\n * Payload to create a Manual Transaction (OpEx, CapEx, etc.)\n * Most transactions are system-managed via order/POS flows.\n */\nexport interface CreateTransactionPayload {\n flow: TransactionFlowType;\n type: TransactionCategoryType | string;\n amount: number;\n method?: PaymentMethod | string;\n source?: 'web' | 'pos' | 'api';\n branch?: string;\n branchCode?: string;\n date?: string;\n notes?: string;\n description?: string;\n paymentDetails?: TransactionPaymentDetails;\n taxDetails?: TransactionTaxDetails;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Payload to update a Transaction (limited fields)\n * Editable correction fields (permissioned)\n */\nexport interface UpdateTransactionPayload {\n flow?: TransactionFlowType;\n type?: TransactionCategoryType | string;\n amount?: number;\n fee?: number;\n tax?: number;\n net?: number;\n method?: PaymentMethod | string;\n paymentDetails?: TransactionPaymentDetails;\n taxDetails?: TransactionTaxDetails;\n branch?: string;\n branchCode?: string;\n source?: 'web' | 'pos' | 'api';\n notes?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n}\n\n// ============================================\n// PAYMENT INTENT (returned with monetization-managed transactions)\n// ============================================\n\n/**\n * Payment Intent - Returned with order/POS transactions\n */\nexport interface PaymentIntent {\n id: string;\n provider: PaymentGatewayType | string;\n status: 'pending' | 'processing' | 'succeeded' | 'failed' | 'cancelled';\n /** Manual payment instructions */\n instructions?: {\n bkash?: string;\n nagad?: string;\n bank?: string;\n reference?: string;\n note?: string;\n };\n /** Stripe SDK client secret */\n clientSecret?: string | null;\n /** Redirect URL for hosted payment pages */\n paymentUrl?: string | null;\n metadata?: Record<string, unknown>;\n}\n\n// ============================================\n// REPORT TYPES\n// ============================================\n\n/**\n * Financial Report Response (Profit & Loss)\n * Uses flow-based totals: inflow (income) vs outflow (expense)\n */\nexport interface FinancialReport {\n /** Total inflow (income) */\n income: number;\n /** Total outflow (expense) */\n expense: number;\n /** Net profit (income - expense) */\n net: number;\n /** Breakdown by category (type field) */\n breakdown: Record<string, number>;\n}\n\n/**\n * Cash Flow Report Response\n * Monthly trend of inflow vs outflow\n */\nexport interface CashFlowReport {\n months: Array<{\n month: string;\n /** Total inflow (income) for the month */\n inflow: number;\n /** Total outflow (expense) for the month */\n outflow: number;\n /** Net cash flow (inflow - outflow) */\n net: number;\n }>;\n}\n\n/**\n * Category Report Response\n */\nexport interface CategoryReport {\n categories: Array<{\n category: string;\n total: number;\n count: number;\n }>;\n}\n\n/**\n * Statement Row (for CSV/JSON export)\n */\nexport interface StatementRow {\n transactionId: string;\n transactionDate: string | null;\n createdAt: string | null;\n status: string;\n /** Flow direction: inflow/outflow */\n flow: string;\n /** Transaction category (type field) */\n type: string;\n source: string;\n branchCode: string | null;\n branchId: string | null;\n method: string;\n /** Gross amount in BDT (converted from paisa) */\n amountBdt: number;\n /** Fee amount in BDT */\n feeBdt?: number;\n /** Tax amount in BDT */\n taxBdt?: number;\n /** Net amount in BDT (amount - fee - tax) */\n netBdt?: number;\n currency: string;\n /** Source model (Order, Purchase, Manual) */\n sourceModel?: string;\n /** Source document ID */\n sourceId?: string | null;\n orderId: string | null;\n orderCustomerName: string | null;\n vatInvoiceNumber: string | null;\n vatSellerBin: string | null;\n paymentReference: string | null;\n narration: string | null;\n}\n\n/**\n * Statement Export Response (JSON format)\n */\nexport interface StatementResponse {\n success: boolean;\n count: number;\n data: StatementRow[];\n}\n\n// ============================================\n// DEPRECATED TYPES (for backwards compatibility)\n// ============================================\n\n/**\n * @deprecated Use TransactionFlow instead. Backend uses flow (inflow/outflow).\n */\nexport enum TransactionType {\n INCOME = 'income',\n EXPENSE = 'expense',\n}\n","/**\n * Transaction API Client\n *\n * Transactions track cashflow events (money in/out) across the system.\n * Used by: Orders, POS, Inventory, CRM, HRM, and manual entries.\n *\n * CRUD (via BaseApi):\n * - getAll(params) - List transactions\n * - getById(id) - Get transaction\n * - create(payload) - Create manual transaction (staff only)\n * - update(id, payload) - Update transaction (limited fields)\n * - delete(id) - Delete transaction (admin/superadmin only)\n *\n * Reports:\n * - getProfitLoss(params) - P&L statement\n * - getCashFlow(params) - Monthly trend\n * - getCategoryReport(params) - Category breakdown\n *\n * Export:\n * - getStatement(params) - CSV/JSON export for accountants\n */\n\nimport { BaseApi } from '../../core/api-factory';\nimport type {\n Transaction,\n CreateTransactionPayload,\n UpdateTransactionPayload,\n FinancialReport,\n CashFlowReport,\n CategoryReport,\n StatementResponse,\n} from '../types/transaction';\n\n/**\n * Statement Query Params\n */\nexport interface StatementParams {\n startDate?: string;\n endDate?: string;\n branchId?: string;\n source?: 'web' | 'pos' | 'api';\n status?: string;\n format?: 'csv' | 'json';\n [key: string]: unknown;\n}\n\n/**\n * Report Query Params\n */\nexport interface ReportParams {\n startDate?: string;\n endDate?: string;\n branchId?: string;\n [key: string]: unknown;\n}\n\nexport interface CashFlowParams {\n months?: number; // 1-12, default: 6\n branchId?: string;\n [key: string]: unknown;\n}\n\nexport interface CategoryParams extends ReportParams {\n flow?: 'inflow' | 'outflow';\n limit?: number; // default: 10\n}\n\nclass TransactionApi extends BaseApi<Transaction, CreateTransactionPayload, UpdateTransactionPayload> {\n\n /**\n * Get Profit & Loss Report\n * Returns income (inflow), expenses (outflow), and net profit for a date range\n */\n async getProfitLoss(params: ReportParams = {}, options = {}) {\n return this.request<FinancialReport>('GET', `${this.baseUrl}/reports/profit-loss`, {\n params,\n ...options,\n });\n }\n\n /**\n * Get Cash Flow Report\n * Returns monthly inflow, outflow, and net trend\n */\n async getCashFlow(params: CashFlowParams = {}, options = {}) {\n return this.request<CashFlowReport>('GET', `${this.baseUrl}/reports/cash-flow`, {\n params,\n ...options,\n });\n }\n\n /**\n * Get Category Breakdown\n * Returns top spending/income categories for a date range\n * Filter by flow='inflow' for income categories, flow='outflow' for expense categories\n */\n async getCategoryReport(params: CategoryParams = {}, options = {}) {\n return this.request<CategoryReport>('GET', `${this.baseUrl}/reports/categories`, {\n params,\n ...options,\n });\n }\n\n /**\n * Get Statement Export\n * Accountant-friendly export with branch + VAT invoice references\n *\n * @param params.format - 'csv' (default) or 'json'\n * @returns CSV blob (format=csv) or StatementResponse (format=json)\n */\n async getStatement(params: StatementParams = {}, options = {}) {\n if (params.format === 'json') {\n return this.request<StatementResponse>('GET', `${this.baseUrl}/statement`, {\n params,\n ...options,\n });\n }\n // For CSV, caller should handle blob response\n return this.request<Blob>('GET', `${this.baseUrl}/statement`, {\n params: { ...params, format: 'csv' },\n options: { responseType: 'blob', ...options },\n });\n }\n}\n\nexport const transactionApi = new TransactionApi('transactions');\nexport { TransactionApi };\nexport default transactionApi;\n","\"use client\";\n\n/**\n * Transaction Hooks\n *\n * React hooks for transaction CRUD operations and reports.\n * Transactions are used across the system for cashflow tracking.\n */\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { transactionApi } from \"../api/transaction\";\nimport type { Transaction, CreateTransactionPayload, UpdateTransactionPayload } from \"../types/transaction\";\nimport type {\n FinancialReport,\n CashFlowReport,\n CategoryReport,\n StatementResponse,\n} from \"../types/transaction\";\nimport type {\n ReportParams,\n CashFlowParams,\n CategoryParams,\n StatementParams,\n} from \"../api/transaction\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n// ============================================\n// Query Keys\n// ============================================\n\nexport const TRANSACTION_KEYS = {\n all: [\"transactions\"] as const,\n lists: () => [...TRANSACTION_KEYS.all, \"list\"] as const,\n list: (params: Record<string, unknown>) => [...TRANSACTION_KEYS.lists(), params] as const,\n details: () => [...TRANSACTION_KEYS.all, \"detail\"] as const,\n detail: (id: string) => [...TRANSACTION_KEYS.details(), id] as const,\n // Report keys\n reports: () => [...TRANSACTION_KEYS.all, \"reports\"] as const,\n profitLoss: (params: ReportParams) => [...TRANSACTION_KEYS.reports(), \"profit-loss\", params] as const,\n cashFlow: (params: CashFlowParams) => [...TRANSACTION_KEYS.reports(), \"cash-flow\", params] as const,\n categories: (params: CategoryParams) => [...TRANSACTION_KEYS.reports(), \"categories\", params] as const,\n statement: (params: StatementParams) => [...TRANSACTION_KEYS.reports(), \"statement\", params] as const,\n};\n\n// ============================================\n// CRUD Hooks (via factory)\n// ============================================\n\n/**\n * Transaction CRUD hooks using createCrudHooks factory\n *\n * Provides:\n * - useTransactions: List transactions with filtering/pagination\n * - useTransactionDetail: Get single transaction\n * - useTransactionActions: Create, update, delete mutations\n * - useTransactionNavigation: Navigation between transactions\n */\nexport const transactionHooks = createCrudHooks<Transaction, CreateTransactionPayload, UpdateTransactionPayload>({\n api: transactionApi as AnyApi,\n entityKey: \"transactions\",\n singular: \"Transaction\",\n plural: \"Transactions\",\n defaults: {\n staleTime: 1 * 60 * 1000, // 1 minute (transactions change frequently)\n },\n});\n\nexport const {\n useList: useTransactions,\n useDetail: useTransactionDetail,\n useActions: useTransactionActions,\n useNavigation: useTransactionNavigation,\n} = transactionHooks;\n\n// ============================================\n// Report Hooks\n// ============================================\n\ninterface QueryOptions {\n enabled?: boolean;\n staleTime?: number;\n}\n\n/**\n * Fetch Profit & Loss report\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useProfitLoss({\n * startDate: '2024-01-01',\n * endDate: '2024-12-31',\n * });\n *\n * return (\n * <div>\n * <p>Income: {data?.income}</p>\n * <p>Expense: {data?.expense}</p>\n * <p>Net: {data?.net}</p>\n * </div>\n * );\n * ```\n */\nexport function useProfitLoss(params: ReportParams, options: QueryOptions = {}) {\n return useQuery<FinancialReport>({\n queryKey: TRANSACTION_KEYS.profitLoss(params),\n queryFn: () => transactionApi.getProfitLoss(params),\n enabled: options.enabled !== false,\n staleTime: options.staleTime ?? 5 * 60 * 1000, // 5 minutes\n });\n}\n\n/**\n * Fetch Cash Flow report (monthly trend)\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useCashFlow({ months: 6 });\n *\n * return (\n * <BarChart data={data?.months} />\n * );\n * ```\n */\nexport function useCashFlow(params: CashFlowParams = {}, options: QueryOptions = {}) {\n return useQuery<CashFlowReport>({\n queryKey: TRANSACTION_KEYS.cashFlow(params),\n queryFn: () => transactionApi.getCashFlow(params),\n enabled: options.enabled !== false,\n staleTime: options.staleTime ?? 5 * 60 * 1000, // 5 minutes\n });\n}\n\n/**\n * Fetch Category breakdown report\n *\n * @example\n * ```tsx\n * // Get expense categories\n * const { data } = useCategoryReport({ flow: 'outflow', limit: 10 });\n *\n * return (\n * <PieChart data={data?.categories} />\n * );\n * ```\n */\nexport function useCategoryReport(params: CategoryParams = {}, options: QueryOptions = {}) {\n return useQuery<CategoryReport>({\n queryKey: TRANSACTION_KEYS.categories(params),\n queryFn: () => transactionApi.getCategoryReport(params),\n enabled: options.enabled !== false,\n staleTime: options.staleTime ?? 5 * 60 * 1000, // 5 minutes\n });\n}\n\n/**\n * Fetch Statement export (JSON format)\n *\n * @example\n * ```tsx\n * const { data } = useStatement({\n * startDate: '2024-01-01',\n * endDate: '2024-12-31',\n * format: 'json',\n * });\n *\n * return (\n * <DataTable data={data?.data} />\n * );\n * ```\n */\nexport function useStatement(params: StatementParams, options: QueryOptions = {}) {\n return useQuery<StatementResponse>({\n queryKey: TRANSACTION_KEYS.statement(params),\n queryFn: () => transactionApi.getStatement({ ...params, format: 'json' }) as Promise<StatementResponse>,\n enabled: !!params.startDate && !!params.endDate && options.enabled !== false,\n staleTime: options.staleTime ?? 5 * 60 * 1000, // 5 minutes\n });\n}\n"]}
@@ -1,328 +0,0 @@
1
- import { createOptimisticMutation } from './chunk-U3XT35GZ.js';
2
- import { useQueryClient, useQuery } from '@tanstack/react-query';
3
- import { useEffect, useCallback } from 'react';
4
- import { useRouter } from 'next/navigation';
5
-
6
- var DEFAULT_QUERY_CONFIG = {
7
- staleTime: 5 * 60 * 1e3,
8
- // 5 minutes
9
- gcTime: 30 * 60 * 1e3,
10
- // 30 minutes
11
- refetchOnWindowFocus: false,
12
- retry: 1
13
- };
14
- function createListQuery({
15
- queryKey,
16
- queryFn,
17
- enabled = true,
18
- options = {},
19
- prefillDetailCache = true,
20
- detailKeyBuilder
21
- }) {
22
- const queryClient = useQueryClient();
23
- const query = useQuery({
24
- queryKey,
25
- queryFn,
26
- enabled,
27
- ...DEFAULT_QUERY_CONFIG,
28
- ...options,
29
- placeholderData: (previousData) => previousData
30
- });
31
- const data = query.data;
32
- const items = data?.docs || data?.data || data || [];
33
- const dataObj = data;
34
- const hasPagination = dataObj?.total != null || dataObj?.totalDocs != null;
35
- const pagination = hasPagination ? {
36
- total: dataObj?.total ?? dataObj?.totalDocs ?? 0,
37
- pages: dataObj?.pages ?? dataObj?.totalPages ?? 1,
38
- page: dataObj?.page ?? dataObj?.currentPage ?? 1,
39
- limit: dataObj?.limit ?? 10,
40
- hasNext: dataObj?.hasNext ?? dataObj?.hasNextPage ?? false,
41
- hasPrev: dataObj?.hasPrev ?? dataObj?.hasPrevPage ?? false,
42
- totalDocs: dataObj?.totalDocs ?? dataObj?.total ?? 0,
43
- totalPages: dataObj?.totalPages ?? dataObj?.pages ?? 1,
44
- currentPage: dataObj?.currentPage ?? dataObj?.page ?? 1,
45
- hasNextPage: dataObj?.hasNextPage ?? dataObj?.hasNext ?? false,
46
- hasPrevPage: dataObj?.hasPrevPage ?? dataObj?.hasPrev ?? false
47
- } : null;
48
- useEffect(() => {
49
- if (prefillDetailCache && items.length > 0 && detailKeyBuilder) {
50
- items.forEach((item) => {
51
- const id = getItemId(item);
52
- if (id) {
53
- const detailKey = detailKeyBuilder(id);
54
- queryClient.setQueryData(detailKey, { data: item });
55
- }
56
- });
57
- }
58
- }, [items, prefillDetailCache, detailKeyBuilder, queryClient]);
59
- return {
60
- items,
61
- pagination,
62
- isLoading: query.isLoading,
63
- isFetching: query.isFetching,
64
- isError: query.isError,
65
- error: query.error,
66
- refetch: query.refetch,
67
- data: query.data
68
- };
69
- }
70
- function createDetailQuery({
71
- queryKey,
72
- queryFn,
73
- enabled = true,
74
- options = {}
75
- }) {
76
- const query = useQuery({
77
- queryKey,
78
- queryFn,
79
- enabled,
80
- ...DEFAULT_QUERY_CONFIG,
81
- ...options
82
- });
83
- const data = query.data;
84
- const item = data?.data || data || null;
85
- return {
86
- item,
87
- isLoading: query.isLoading,
88
- isFetching: query.isFetching,
89
- isError: query.isError,
90
- error: query.error,
91
- refetch: query.refetch,
92
- data: query.data
93
- };
94
- }
95
- function updateListCache(listData, updater) {
96
- if (!listData) return listData;
97
- const data = listData;
98
- if (typeof data === "object" && data.docs) {
99
- const updatedDocs = updater(data.docs);
100
- const updatedCount = Array.isArray(updatedDocs) ? updatedDocs.length : data.totalDocs;
101
- return {
102
- ...data,
103
- docs: updatedDocs,
104
- totalDocs: updatedCount,
105
- total: data.total ?? updatedCount
106
- };
107
- }
108
- if (Array.isArray(listData)) {
109
- return updater(listData);
110
- }
111
- if (data.data && Array.isArray(data.data)) {
112
- return {
113
- ...data,
114
- data: updater(data.data)
115
- };
116
- }
117
- return listData;
118
- }
119
- function getItemId(item) {
120
- const obj = item;
121
- return obj?._id ?? obj?.id ?? null;
122
- }
123
- function createQueryKeys(entityKey) {
124
- return {
125
- all: [entityKey],
126
- lists: () => [entityKey, "list"],
127
- list: (params) => [entityKey, "list", params],
128
- details: () => [entityKey, "detail"],
129
- detail: (id) => [entityKey, "detail", id],
130
- custom: (key) => [entityKey, key],
131
- scopedList: (scope, params) => [entityKey, "list", { _scope: scope, ...params }]
132
- };
133
- }
134
-
135
- // src/core/react/crud.factory.ts
136
- function createCrudHooks({
137
- api,
138
- entityKey,
139
- singular,
140
- plural,
141
- defaults = {}
142
- }) {
143
- const KEYS = createQueryKeys(entityKey);
144
- const config = {
145
- ...DEFAULT_QUERY_CONFIG,
146
- ...defaults,
147
- structuralSharing: defaults.structuralSharing,
148
- messages: {
149
- createSuccess: `${singular} created successfully`,
150
- createError: `Failed to create ${singular.toLowerCase()}`,
151
- updateSuccess: `${singular} updated successfully`,
152
- updateError: `Failed to update ${singular.toLowerCase()}`,
153
- deleteSuccess: `${singular} deleted successfully`,
154
- deleteError: `Failed to delete ${singular.toLowerCase()}`,
155
- ...defaults.messages || {}
156
- }
157
- };
158
- function useList(token, params = {}, options = {}) {
159
- const { organizationId, ...restParams } = params;
160
- const scope = options._scope || (organizationId ? "tenant" : "super-admin");
161
- return createListQuery({
162
- queryKey: KEYS.scopedList(scope, { organizationId, ...restParams }),
163
- queryFn: () => api.getAll({
164
- token,
165
- organizationId,
166
- params: restParams
167
- }),
168
- enabled: options.enabled ?? true,
169
- options: {
170
- staleTime: options.staleTime ?? config.staleTime,
171
- gcTime: options.gcTime ?? config.gcTime,
172
- refetchOnWindowFocus: options.refetchOnWindowFocus ?? config.refetchOnWindowFocus,
173
- structuralSharing: options.structuralSharing ?? config.structuralSharing,
174
- ...options
175
- },
176
- prefillDetailCache: options.prefillDetailCache ?? true,
177
- detailKeyBuilder: (id) => KEYS.detail(id)
178
- });
179
- }
180
- function useDetail(id, token, options = {}) {
181
- const { organizationId, ...restOptions } = options;
182
- return createDetailQuery({
183
- queryKey: KEYS.detail(id || ""),
184
- queryFn: () => api.getById({
185
- id,
186
- token,
187
- organizationId
188
- }),
189
- enabled: !!id && (restOptions.enabled ?? true),
190
- options: {
191
- staleTime: restOptions.staleTime ?? config.staleTime,
192
- gcTime: restOptions.gcTime ?? config.gcTime,
193
- structuralSharing: restOptions.structuralSharing ?? config.structuralSharing,
194
- refetchInterval: restOptions.refetchInterval,
195
- refetchIntervalInBackground: restOptions.refetchIntervalInBackground,
196
- ...restOptions
197
- }
198
- });
199
- }
200
- function useActions() {
201
- const queryClient = useQueryClient();
202
- const createMutation = createOptimisticMutation({
203
- mutationFn: ({
204
- token,
205
- organizationId,
206
- data
207
- }) => api.create({ token, organizationId, data }),
208
- queryClient,
209
- queryKeys: [KEYS.lists()],
210
- optimisticUpdate: (oldData, { data }) => {
211
- const optimisticItem = {
212
- ...data,
213
- _optimistic: true,
214
- [getItemId(data) ? "id" : "_id"]: getItemId(data) ?? `temp-${Date.now()}`
215
- };
216
- return updateListCache(oldData, (arr) => [
217
- optimisticItem,
218
- ...arr || []
219
- ]);
220
- },
221
- messages: {
222
- success: config.messages.createSuccess,
223
- error: config.messages.createError
224
- }
225
- });
226
- const updateMutation = createOptimisticMutation({
227
- mutationFn: ({
228
- token,
229
- organizationId,
230
- id,
231
- data
232
- }) => api.update({ token, organizationId, id, data }),
233
- queryClient,
234
- queryKeys: [KEYS.lists()],
235
- optimisticUpdate: (oldData, { id, data }) => {
236
- const updated = updateListCache(
237
- oldData,
238
- (arr) => (arr || []).map(
239
- (item) => getItemId(item) === id ? { ...item, ...data } : item
240
- )
241
- );
242
- queryClient.setQueryData(
243
- KEYS.detail(id),
244
- (current) => current ? { ...current, ...data } : current
245
- );
246
- return updated;
247
- },
248
- onSuccess: (_, { id }) => {
249
- queryClient.invalidateQueries({ queryKey: KEYS.detail(id) });
250
- },
251
- messages: {
252
- success: config.messages.updateSuccess,
253
- error: config.messages.updateError
254
- }
255
- });
256
- const deleteMutation = createOptimisticMutation({
257
- mutationFn: ({
258
- token,
259
- organizationId,
260
- id
261
- }) => api.delete({ token, organizationId, id }),
262
- queryClient,
263
- queryKeys: [KEYS.lists()],
264
- optimisticUpdate: (oldData, { id }) => {
265
- const updated = updateListCache(
266
- oldData,
267
- (arr) => (arr || []).filter((item) => getItemId(item) !== id)
268
- );
269
- queryClient.removeQueries({ queryKey: KEYS.detail(id) });
270
- return updated;
271
- },
272
- messages: {
273
- success: config.messages.deleteSuccess,
274
- error: config.messages.deleteError
275
- }
276
- });
277
- return {
278
- create: createMutation.mutateAsync,
279
- update: updateMutation.mutateAsync,
280
- remove: deleteMutation.mutateAsync,
281
- updateOnly: ({
282
- token,
283
- organizationId,
284
- id,
285
- data
286
- }) => updateMutation.mutateAsync({
287
- token,
288
- organizationId,
289
- id,
290
- data,
291
- skipListInvalidation: true
292
- }),
293
- isCreating: createMutation.isPending,
294
- isUpdating: updateMutation.isPending,
295
- isDeleting: deleteMutation.isPending
296
- };
297
- }
298
- function useNavigation() {
299
- const queryClient = useQueryClient();
300
- const router = useRouter();
301
- return useCallback(
302
- (href, item, options = {}) => {
303
- const id = getItemId(item);
304
- if (id) {
305
- queryClient.setQueryData(KEYS.detail(id), item);
306
- }
307
- const { scroll = true, replace = false } = options;
308
- if (replace) {
309
- router.replace(href, { scroll });
310
- } else {
311
- router.push(href, { scroll });
312
- }
313
- },
314
- [queryClient, router]
315
- );
316
- }
317
- return {
318
- KEYS,
319
- useList,
320
- useDetail,
321
- useActions,
322
- useNavigation
323
- };
324
- }
325
-
326
- export { DEFAULT_QUERY_CONFIG, createCrudHooks, createDetailQuery, createListQuery, createQueryKeys, getItemId, updateListCache };
327
- //# sourceMappingURL=chunk-B6MPVOV7.js.map
328
- //# sourceMappingURL=chunk-B6MPVOV7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/react/query.factory.ts","../src/core/react/crud.factory.ts"],"names":["useQueryClient"],"mappings":"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","file":"chunk-B6MPVOV7.js","sourcesContent":["\"use client\";\r\n\r\nimport { useQuery, useQueryClient, type QueryKey } from \"@tanstack/react-query\";\r\nimport { useEffect } from \"react\";\r\n\r\nexport interface QueryConfig {\r\n staleTime: number;\r\n gcTime: number;\r\n refetchOnWindowFocus: boolean;\r\n retry: number;\r\n}\r\n\r\nexport const DEFAULT_QUERY_CONFIG: QueryConfig = {\r\n staleTime: 5 * 60 * 1000, // 5 minutes\r\n gcTime: 30 * 60 * 1000, // 30 minutes\r\n refetchOnWindowFocus: false,\r\n retry: 1,\r\n};\r\n\r\nexport interface PaginationData {\r\n total: number;\r\n pages: number;\r\n page: number;\r\n limit: number;\r\n hasNext: boolean;\r\n hasPrev: boolean;\r\n // Legacy aliases\r\n totalDocs: number;\r\n totalPages: number;\r\n currentPage: number;\r\n hasNextPage: boolean;\r\n hasPrevPage: boolean;\r\n}\r\n\r\nexport interface ListQueryResult<T> {\r\n items: T[];\r\n pagination: PaginationData | null;\r\n isLoading: boolean;\r\n isFetching: boolean;\r\n isError: boolean;\r\n error: Error | null;\r\n refetch: () => void;\r\n data: unknown;\r\n}\r\n\r\nexport interface DetailQueryResult<T> {\r\n item: T | null;\r\n isLoading: boolean;\r\n isFetching: boolean;\r\n isError: boolean;\r\n error: Error | null;\r\n refetch: () => void;\r\n data: unknown;\r\n}\r\n\r\nexport interface CreateListQueryOptions<T> {\r\n queryKey: QueryKey;\r\n queryFn: () => Promise<unknown>;\r\n enabled?: boolean;\r\n options?: Record<string, unknown>;\r\n prefillDetailCache?: boolean;\r\n detailKeyBuilder?: (id: string) => QueryKey;\r\n}\r\n\r\nexport function createListQuery<T>({\r\n queryKey,\r\n queryFn,\r\n enabled = true,\r\n options = {},\r\n prefillDetailCache = true,\r\n detailKeyBuilder,\r\n}: CreateListQueryOptions<T>): ListQueryResult<T> {\r\n const queryClient = useQueryClient();\r\n\r\n const query = useQuery({\r\n queryKey,\r\n queryFn,\r\n enabled,\r\n ...DEFAULT_QUERY_CONFIG,\r\n ...options,\r\n placeholderData: (previousData: unknown) => previousData,\r\n });\r\n\r\n const data = query.data as Record<string, unknown> | T[] | undefined;\r\n const items = (\r\n (data as Record<string, unknown>)?.docs ||\r\n (data as Record<string, unknown>)?.data ||\r\n data ||\r\n []\r\n ) as T[];\r\n\r\n // Normalize pagination\r\n const dataObj = data as Record<string, unknown> | undefined;\r\n const hasPagination = dataObj?.total != null || dataObj?.totalDocs != null;\r\n const pagination: PaginationData | null = hasPagination\r\n ? {\r\n total: (dataObj?.total ?? dataObj?.totalDocs ?? 0) as number,\r\n pages: (dataObj?.pages ?? dataObj?.totalPages ?? 1) as number,\r\n page: (dataObj?.page ?? dataObj?.currentPage ?? 1) as number,\r\n limit: (dataObj?.limit ?? 10) as number,\r\n hasNext: (dataObj?.hasNext ?? dataObj?.hasNextPage ?? false) as boolean,\r\n hasPrev: (dataObj?.hasPrev ?? dataObj?.hasPrevPage ?? false) as boolean,\r\n totalDocs: (dataObj?.totalDocs ?? dataObj?.total ?? 0) as number,\r\n totalPages: (dataObj?.totalPages ?? dataObj?.pages ?? 1) as number,\r\n currentPage: (dataObj?.currentPage ?? dataObj?.page ?? 1) as number,\r\n hasNextPage: (dataObj?.hasNextPage ?? dataObj?.hasNext ?? false) as boolean,\r\n hasPrevPage: (dataObj?.hasPrevPage ?? dataObj?.hasPrev ?? false) as boolean,\r\n }\r\n : null;\r\n\r\n // Prefill detail cache\r\n useEffect(() => {\r\n if (prefillDetailCache && items.length > 0 && detailKeyBuilder) {\r\n items.forEach((item) => {\r\n const id = getItemId(item);\r\n if (id) {\r\n const detailKey = detailKeyBuilder(id);\r\n queryClient.setQueryData(detailKey, { data: item });\r\n }\r\n });\r\n }\r\n }, [items, prefillDetailCache, detailKeyBuilder, queryClient]);\r\n\r\n return {\r\n items,\r\n pagination,\r\n isLoading: query.isLoading,\r\n isFetching: query.isFetching,\r\n isError: query.isError,\r\n error: query.error,\r\n refetch: query.refetch,\r\n data: query.data,\r\n };\r\n}\r\n\r\nexport interface CreateDetailQueryOptions {\r\n queryKey: QueryKey;\r\n queryFn: () => Promise<unknown>;\r\n enabled?: boolean;\r\n options?: Record<string, unknown>;\r\n}\r\n\r\nexport function createDetailQuery<T>({\r\n queryKey,\r\n queryFn,\r\n enabled = true,\r\n options = {},\r\n}: CreateDetailQueryOptions): DetailQueryResult<T> {\r\n const query = useQuery({\r\n queryKey,\r\n queryFn,\r\n enabled,\r\n ...DEFAULT_QUERY_CONFIG,\r\n ...options,\r\n });\r\n\r\n const data = query.data as Record<string, unknown> | T | undefined;\r\n const item = ((data as Record<string, unknown>)?.data || data || null) as T | null;\r\n\r\n return {\r\n item,\r\n isLoading: query.isLoading,\r\n isFetching: query.isFetching,\r\n isError: query.isError,\r\n error: query.error,\r\n refetch: query.refetch,\r\n data: query.data,\r\n };\r\n}\r\n\r\nexport function updateListCache<T>(\r\n listData: unknown,\r\n updater: (arr: T[]) => T[]\r\n): unknown {\r\n if (!listData) return listData;\r\n\r\n const data = listData as Record<string, unknown>;\r\n\r\n if (typeof data === \"object\" && data.docs) {\r\n const updatedDocs = updater(data.docs as T[]);\r\n const updatedCount = Array.isArray(updatedDocs) ? updatedDocs.length : data.totalDocs;\r\n return {\r\n ...data,\r\n docs: updatedDocs,\r\n totalDocs: updatedCount,\r\n total: data.total ?? updatedCount,\r\n };\r\n }\r\n\r\n if (Array.isArray(listData)) {\r\n return updater(listData as T[]);\r\n }\r\n\r\n if (data.data && Array.isArray(data.data)) {\r\n return {\r\n ...data,\r\n data: updater(data.data as T[]),\r\n };\r\n }\r\n\r\n return listData;\r\n}\r\n\r\nexport function getItemId(item: unknown): string | null {\r\n const obj = item as Record<string, unknown> | null;\r\n return (obj?._id ?? obj?.id ?? null) as string | null;\r\n}\r\n\r\nexport interface QueryKeys {\r\n all: string[];\r\n lists: () => QueryKey;\r\n list: (params: unknown) => QueryKey;\r\n details: () => QueryKey;\r\n detail: (id: string) => QueryKey;\r\n custom: (key: string) => QueryKey;\r\n scopedList: (scope: string, params: unknown) => QueryKey;\r\n}\r\n\r\nexport function createQueryKeys(entityKey: string): QueryKeys {\r\n return {\r\n all: [entityKey],\r\n lists: () => [entityKey, \"list\"],\r\n list: (params) => [entityKey, \"list\", params],\r\n details: () => [entityKey, \"detail\"],\r\n detail: (id) => [entityKey, \"detail\", id],\r\n custom: (key) => [entityKey, key],\r\n scopedList: (scope, params) => [entityKey, \"list\", { _scope: scope, ...params as object }],\r\n };\r\n}\r\n","\"use client\";\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useCallback } from \"react\";\r\nimport { useRouter } from \"next/navigation\";\r\nimport { createOptimisticMutation } from \"./mutation.factory\";\r\nimport {\r\n createListQuery,\r\n createDetailQuery,\r\n updateListCache,\r\n getItemId,\r\n createQueryKeys,\r\n DEFAULT_QUERY_CONFIG,\r\n type QueryKeys,\r\n type ListQueryResult,\r\n type DetailQueryResult,\r\n} from \"./query.factory\";\r\n\r\n// API interface that crud hooks expect\r\nexport interface CrudApi<T, TCreate, TUpdate> {\r\n getAll: (options: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n params?: Record<string, unknown>;\r\n }) => Promise<unknown>;\r\n getById: (options: {\r\n id: string;\r\n token?: string | null;\r\n organizationId?: string | null;\r\n }) => Promise<unknown>;\r\n create: (options: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n data: TCreate;\r\n }) => Promise<T>;\r\n update: (options: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n }) => Promise<T>;\r\n delete: (options: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n }) => Promise<unknown>;\r\n}\r\n\r\nexport interface CrudHooksConfig<T, TCreate, TUpdate> {\r\n api: CrudApi<T, TCreate, TUpdate>;\r\n entityKey: string;\r\n singular: string;\r\n plural: string;\r\n defaults?: {\r\n staleTime?: number;\r\n gcTime?: number;\r\n refetchOnWindowFocus?: boolean;\r\n structuralSharing?: boolean;\r\n messages?: {\r\n createSuccess?: string;\r\n createError?: string;\r\n updateSuccess?: string;\r\n updateError?: string;\r\n deleteSuccess?: string;\r\n deleteError?: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface ListOptions {\r\n public?: boolean;\r\n enabled?: boolean;\r\n staleTime?: number;\r\n gcTime?: number;\r\n refetchOnWindowFocus?: boolean;\r\n structuralSharing?: boolean;\r\n prefillDetailCache?: boolean;\r\n _scope?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface DetailOptions {\r\n organizationId?: string | null;\r\n enabled?: boolean;\r\n staleTime?: number;\r\n gcTime?: number;\r\n structuralSharing?: boolean;\r\n refetchInterval?: number;\r\n refetchIntervalInBackground?: boolean;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface CrudActions<TCreate, TUpdate> {\r\n create: (params: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n data: TCreate;\r\n }) => Promise<unknown>;\r\n update: (params: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n }) => Promise<unknown>;\r\n remove: (params: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n }) => Promise<unknown>;\r\n updateOnly: (params: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n }) => Promise<unknown>;\r\n isCreating: boolean;\r\n isUpdating: boolean;\r\n isDeleting: boolean;\r\n}\r\n\r\nexport interface NavigationOptions {\r\n scroll?: boolean;\r\n replace?: boolean;\r\n}\r\n\r\nexport type NavigateFn<T> = (\r\n href: string,\r\n item: T,\r\n options?: NavigationOptions\r\n) => void;\r\n\r\nexport interface CrudHooksReturn<T, TCreate, TUpdate> {\r\n KEYS: QueryKeys;\r\n useList: (\r\n token: string | null,\r\n params?: Record<string, unknown>,\r\n options?: ListOptions\r\n ) => ListQueryResult<T>;\r\n useDetail: (\r\n id: string | null,\r\n token: string | null,\r\n options?: DetailOptions\r\n ) => DetailQueryResult<T>;\r\n useActions: () => CrudActions<TCreate, TUpdate>;\r\n useNavigation: () => NavigateFn<T>;\r\n}\r\n\r\nexport function createCrudHooks<T, TCreate = Partial<T>, TUpdate = Partial<T>>({\r\n api,\r\n entityKey,\r\n singular,\r\n plural,\r\n defaults = {},\r\n}: CrudHooksConfig<T, TCreate, TUpdate>): CrudHooksReturn<T, TCreate, TUpdate> {\r\n const KEYS = createQueryKeys(entityKey);\r\n\r\n const config = {\r\n ...DEFAULT_QUERY_CONFIG,\r\n ...defaults,\r\n structuralSharing: defaults.structuralSharing,\r\n messages: {\r\n createSuccess: `${singular} created successfully`,\r\n createError: `Failed to create ${singular.toLowerCase()}`,\r\n updateSuccess: `${singular} updated successfully`,\r\n updateError: `Failed to update ${singular.toLowerCase()}`,\r\n deleteSuccess: `${singular} deleted successfully`,\r\n deleteError: `Failed to delete ${singular.toLowerCase()}`,\r\n ...(defaults.messages || {}),\r\n },\r\n };\r\n\r\n function useList(\r\n token: string | null,\r\n params: Record<string, unknown> = {},\r\n options: ListOptions = {}\r\n ): ListQueryResult<T> {\r\n const { organizationId, ...restParams } = params;\r\n\r\n const scope =\r\n options._scope || (organizationId ? \"tenant\" : \"super-admin\");\r\n\r\n return createListQuery<T>({\r\n queryKey: KEYS.scopedList(scope, { organizationId, ...restParams }),\r\n queryFn: () =>\r\n api.getAll({\r\n token,\r\n organizationId: organizationId as string | null,\r\n params: restParams,\r\n }),\r\n enabled: options.enabled ?? true,\r\n options: {\r\n staleTime: options.staleTime ?? config.staleTime,\r\n gcTime: options.gcTime ?? config.gcTime,\r\n refetchOnWindowFocus:\r\n options.refetchOnWindowFocus ?? config.refetchOnWindowFocus,\r\n structuralSharing: options.structuralSharing ?? config.structuralSharing,\r\n ...options,\r\n },\r\n prefillDetailCache: options.prefillDetailCache ?? true,\r\n detailKeyBuilder: (id) => KEYS.detail(id),\r\n });\r\n }\r\n\r\n function useDetail(\r\n id: string | null,\r\n token: string | null,\r\n options: DetailOptions = {}\r\n ): DetailQueryResult<T> {\r\n const { organizationId, ...restOptions } = options;\r\n\r\n return createDetailQuery<T>({\r\n queryKey: KEYS.detail(id || \"\"),\r\n queryFn: () =>\r\n api.getById({\r\n id: id!,\r\n token,\r\n organizationId,\r\n }),\r\n enabled: !!id && (restOptions.enabled ?? true),\r\n options: {\r\n staleTime: restOptions.staleTime ?? config.staleTime,\r\n gcTime: restOptions.gcTime ?? config.gcTime,\r\n structuralSharing:\r\n restOptions.structuralSharing ?? config.structuralSharing,\r\n refetchInterval: restOptions.refetchInterval,\r\n refetchIntervalInBackground: restOptions.refetchIntervalInBackground,\r\n ...restOptions,\r\n },\r\n });\r\n }\r\n\r\n function useActions(): CrudActions<TCreate, TUpdate> {\r\n const queryClient = useQueryClient();\r\n\r\n const createMutation = createOptimisticMutation({\r\n mutationFn: ({\r\n token,\r\n organizationId,\r\n data,\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n data: TCreate;\r\n }) => api.create({ token, organizationId, data }),\r\n queryClient,\r\n queryKeys: [KEYS.lists()],\r\n optimisticUpdate: (oldData, { data }) => {\r\n const optimisticItem = {\r\n ...(data as object),\r\n _optimistic: true,\r\n [getItemId(data) ? \"id\" : \"_id\"]:\r\n getItemId(data) ?? `temp-${Date.now()}`,\r\n };\r\n return updateListCache(oldData, (arr: unknown[]) => [\r\n optimisticItem,\r\n ...(arr || []),\r\n ]);\r\n },\r\n messages: {\r\n success: config.messages.createSuccess,\r\n error: config.messages.createError,\r\n },\r\n });\r\n\r\n const updateMutation = createOptimisticMutation({\r\n mutationFn: ({\r\n token,\r\n organizationId,\r\n id,\r\n data,\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n }) => api.update({ token, organizationId, id, data }),\r\n queryClient,\r\n queryKeys: [KEYS.lists()],\r\n optimisticUpdate: (oldData, { id, data }) => {\r\n const updated = updateListCache(oldData, (arr: unknown[]) =>\r\n (arr || []).map((item) =>\r\n getItemId(item) === id ? { ...(item as object), ...(data as object) } : item\r\n )\r\n );\r\n queryClient.setQueryData(KEYS.detail(id), (current: unknown) =>\r\n current ? { ...(current as object), ...(data as object) } : current\r\n );\r\n return updated;\r\n },\r\n onSuccess: (_, { id }) => {\r\n queryClient.invalidateQueries({ queryKey: KEYS.detail(id as string) });\r\n },\r\n messages: {\r\n success: config.messages.updateSuccess,\r\n error: config.messages.updateError,\r\n },\r\n });\r\n\r\n const deleteMutation = createOptimisticMutation({\r\n mutationFn: ({\r\n token,\r\n organizationId,\r\n id,\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n }) => api.delete({ token, organizationId, id }),\r\n queryClient,\r\n queryKeys: [KEYS.lists()],\r\n optimisticUpdate: (oldData, { id }) => {\r\n const updated = updateListCache(oldData, (arr: unknown[]) =>\r\n (arr || []).filter((item) => getItemId(item) !== id)\r\n );\r\n queryClient.removeQueries({ queryKey: KEYS.detail(id) });\r\n return updated;\r\n },\r\n messages: {\r\n success: config.messages.deleteSuccess,\r\n error: config.messages.deleteError,\r\n },\r\n });\r\n\r\n return {\r\n create: createMutation.mutateAsync,\r\n update: updateMutation.mutateAsync,\r\n remove: deleteMutation.mutateAsync,\r\n updateOnly: ({\r\n token,\r\n organizationId,\r\n id,\r\n data,\r\n }: {\r\n token?: string | null;\r\n organizationId?: string | null;\r\n id: string;\r\n data: TUpdate;\r\n }) =>\r\n updateMutation.mutateAsync({\r\n token,\r\n organizationId,\r\n id,\r\n data,\r\n skipListInvalidation: true,\r\n } as Parameters<typeof updateMutation.mutateAsync>[0]),\r\n isCreating: createMutation.isPending,\r\n isUpdating: updateMutation.isPending,\r\n isDeleting: deleteMutation.isPending,\r\n };\r\n }\r\n\r\n function useNavigation(): NavigateFn<T> {\r\n const queryClient = useQueryClient();\r\n const router = useRouter();\r\n\r\n return useCallback(\r\n (href: string, item: T, options: NavigationOptions = {}) => {\r\n const id = getItemId(item);\r\n if (id) {\r\n queryClient.setQueryData(KEYS.detail(id), item);\r\n }\r\n\r\n const { scroll = true, replace = false } = options;\r\n if (replace) {\r\n router.replace(href, { scroll });\r\n } else {\r\n router.push(href, { scroll });\r\n }\r\n },\r\n [queryClient, router]\r\n );\r\n }\r\n\r\n return {\r\n KEYS,\r\n useList,\r\n useDetail,\r\n useActions,\r\n useNavigation,\r\n };\r\n}\r\n\r\nexport default createCrudHooks;\r\n"]}
@@ -1,94 +0,0 @@
1
- import { BaseApi } from './chunk-QCTXAMLA.js';
2
-
3
- // src/sales/api/pos.ts
4
- var PosApi = class extends BaseApi {
5
- /**
6
- * Browse products with branch-specific stock
7
- * GET /api/v1/pos/products
8
- */
9
- async getProducts(options) {
10
- const { token, ...params } = options;
11
- return this.request("GET", `${this.config.basePath}/pos/products`, {
12
- params,
13
- token
14
- });
15
- }
16
- /**
17
- * Fast Lookup by Barcode/SKU
18
- * GET /api/v1/pos/lookup
19
- */
20
- async lookup(options) {
21
- const { token, ...params } = options;
22
- return this.request("GET", `${this.config.basePath}/pos/lookup`, {
23
- params,
24
- token
25
- });
26
- }
27
- /**
28
- * Create POS Order
29
- * POST /api/v1/pos/orders
30
- */
31
- async createOrder(options) {
32
- const { token, data } = options;
33
- return this.request("POST", `${this.config.basePath}/pos/orders`, {
34
- data,
35
- token
36
- });
37
- }
38
- /**
39
- * Get Receipt Data
40
- * GET /api/v1/pos/orders/:orderId/receipt
41
- */
42
- async getReceipt(options) {
43
- const { token, orderId } = options;
44
- return this.request("GET", `${this.config.basePath}/pos/orders/${orderId}/receipt`, {
45
- token
46
- });
47
- }
48
- /**
49
- * Adjust Stock (Quick Adjustment from POS)
50
- * POST /api/v1/pos/stock/adjust
51
- */
52
- async adjustStock(options) {
53
- const { token, data } = options;
54
- return this.request("POST", `${this.config.basePath}/pos/stock/adjust`, {
55
- data,
56
- token
57
- });
58
- }
59
- /**
60
- * Set stock level directly (POS adjustment alias)
61
- * POST /api/v1/pos/stock/adjust
62
- */
63
- async setStock(options) {
64
- const { token, productId, data } = options;
65
- return this.request("POST", `${this.config.basePath}/pos/stock/adjust`, {
66
- data: {
67
- productId,
68
- quantity: data.quantity,
69
- variantSku: data.variantSku,
70
- branchId: data.branchId,
71
- mode: "set",
72
- reason: data.reason ?? data.notes
73
- },
74
- token
75
- });
76
- }
77
- /**
78
- * Bulk adjustments (POS adjustment alias)
79
- * POST /api/v1/pos/stock/adjust
80
- */
81
- async bulkAdjust(options) {
82
- const { token, data } = options;
83
- return this.request("POST", `${this.config.basePath}/pos/stock/adjust`, {
84
- data,
85
- token
86
- });
87
- }
88
- };
89
- var posApi = new PosApi("pos");
90
- var pos_default = posApi;
91
-
92
- export { posApi, pos_default };
93
- //# sourceMappingURL=chunk-CILP56G2.js.map
94
- //# sourceMappingURL=chunk-CILP56G2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sales/api/pos.ts"],"names":[],"mappings":"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","file":"chunk-CILP56G2.js","sourcesContent":["/**\r\n * POS API Client\r\n *\r\n * Follows BaseApi pattern: all methods accept { token, ...params/data }\r\n */\r\n\r\nimport { BaseApi } from '../../core/api-factory';\r\nimport type {\r\n PosProductsResponse,\r\n PosLookupResponse,\r\n PosOrderPayload,\r\n} from '../types/pos';\r\nimport type {\r\n CreateAdjustmentPayload,\r\n BulkAdjustmentPayload,\r\n} from '../../inventory/types';\r\n\r\nclass PosApi extends BaseApi {\r\n\r\n /**\r\n * Browse products with branch-specific stock\r\n * GET /api/v1/pos/products\r\n */\r\n async getProducts(options: {\r\n token: string;\r\n branchId?: string;\r\n /** Filter by category slug (matches both parent and child categories) */\r\n category?: string;\r\n search?: string;\r\n inStockOnly?: boolean;\r\n lowStockOnly?: boolean;\r\n sort?: string;\r\n after?: string;\r\n limit?: number;\r\n }) {\r\n const { token, ...params } = options;\r\n return this.request<PosProductsResponse>('GET', `${this.config.basePath}/pos/products`, {\r\n params,\r\n token\r\n });\r\n }\r\n\r\n /**\r\n * Fast Lookup by Barcode/SKU\r\n * GET /api/v1/pos/lookup\r\n */\r\n async lookup(options: {\r\n token: string;\r\n code: string;\r\n branchId?: string;\r\n }) {\r\n const { token, ...params } = options;\r\n return this.request<PosLookupResponse>('GET', `${this.config.basePath}/pos/lookup`, {\r\n params,\r\n token\r\n });\r\n }\r\n\r\n /**\r\n * Create POS Order\r\n * POST /api/v1/pos/orders\r\n */\r\n async createOrder(options: {\r\n token: string;\r\n data: PosOrderPayload;\r\n }) {\r\n const { token, data } = options;\r\n return this.request('POST', `${this.config.basePath}/pos/orders`, {\r\n data: data as unknown as Record<string, unknown>,\r\n token\r\n });\r\n }\r\n\r\n /**\r\n * Get Receipt Data\r\n * GET /api/v1/pos/orders/:orderId/receipt\r\n */\r\n async getReceipt(options: {\r\n token: string;\r\n orderId: string;\r\n }) {\r\n const { token, orderId } = options;\r\n return this.request('GET', `${this.config.basePath}/pos/orders/${orderId}/receipt`, {\r\n token\r\n });\r\n }\r\n\r\n /**\r\n * Adjust Stock (Quick Adjustment from POS)\r\n * POST /api/v1/pos/stock/adjust\r\n */\r\n async adjustStock(options: {\r\n token: string;\r\n data: CreateAdjustmentPayload;\r\n }) {\r\n const { token, data } = options;\r\n return this.request('POST', `${this.config.basePath}/pos/stock/adjust`, {\r\n data: data as unknown as Record<string, unknown>,\r\n token\r\n });\r\n }\r\n\r\n /**\r\n * Set stock level directly (POS adjustment alias)\r\n * POST /api/v1/pos/stock/adjust\r\n */\r\n async setStock(options: {\r\n token: string;\r\n productId: string;\r\n data: {\r\n quantity: number;\r\n branchId?: string;\r\n variantSku?: string;\r\n reason?: string;\r\n notes?: string;\r\n };\r\n }) {\r\n const { token, productId, data } = options;\r\n return this.request('POST', `${this.config.basePath}/pos/stock/adjust`, {\r\n data: {\r\n productId,\r\n quantity: data.quantity,\r\n variantSku: data.variantSku,\r\n branchId: data.branchId,\r\n mode: 'set',\r\n reason: data.reason ?? data.notes,\r\n },\r\n token,\r\n });\r\n }\r\n\r\n /**\r\n * Bulk adjustments (POS adjustment alias)\r\n * POST /api/v1/pos/stock/adjust\r\n */\r\n async bulkAdjust(options: {\r\n token: string;\r\n data: BulkAdjustmentPayload;\r\n }) {\r\n const { token, data } = options;\r\n return this.request('POST', `${this.config.basePath}/pos/stock/adjust`, {\r\n data: data as unknown as Record<string, unknown>,\r\n token,\r\n });\r\n }\r\n}\r\n\r\nexport const posApi = new PosApi('pos');\r\nexport default posApi;\r\n"]}