@mohasinac/appkit 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2600) hide show
  1. package/README.md +36 -65
  2. package/dist/cli/index.d.ts +6 -9
  3. package/dist/cli/index.js +167 -141
  4. package/dist/client.d.ts +15 -0
  5. package/dist/client.js +15 -0
  6. package/dist/constants/api-endpoint-resolver.d.ts +34 -0
  7. package/dist/constants/api-endpoint-resolver.js +38 -0
  8. package/dist/constants/api-endpoints.d.ts +388 -0
  9. package/dist/constants/api-endpoints.js +342 -0
  10. package/dist/constants/cache-invalidation.d.ts +18 -0
  11. package/dist/constants/cache-invalidation.js +33 -0
  12. package/dist/constants/index.d.ts +14 -0
  13. package/dist/constants/index.js +14 -0
  14. package/dist/contracts/auth.d.ts +58 -0
  15. package/dist/contracts/auth.js +2 -0
  16. package/dist/contracts/client-auth.d.ts +22 -0
  17. package/dist/contracts/client-auth.js +17 -0
  18. package/dist/contracts/client-payment-gateway.d.ts +65 -0
  19. package/dist/contracts/client-payment-gateway.js +25 -0
  20. package/dist/contracts/client-realtime.d.ts +24 -0
  21. package/dist/contracts/client-realtime.js +18 -0
  22. package/dist/contracts/client-session.d.ts +37 -0
  23. package/dist/contracts/client-session.js +22 -0
  24. package/dist/contracts/config.d.ts +53 -0
  25. package/dist/contracts/config.js +2 -0
  26. package/dist/contracts/email.d.ts +30 -0
  27. package/dist/contracts/email.js +2 -0
  28. package/dist/contracts/extend.d.ts +270 -0
  29. package/dist/contracts/extend.js +75 -0
  30. package/dist/contracts/feature.d.ts +53 -0
  31. package/dist/contracts/feature.js +2 -0
  32. package/dist/contracts/field-ops.d.ts +31 -0
  33. package/dist/contracts/field-ops.js +35 -0
  34. package/dist/contracts/form.d.ts +89 -0
  35. package/dist/contracts/form.js +80 -0
  36. package/dist/contracts/index.d.ts +32 -728
  37. package/dist/contracts/index.js +13 -4
  38. package/dist/contracts/infra.d.ts +43 -0
  39. package/dist/contracts/infra.js +2 -0
  40. package/dist/contracts/payment.d.ts +39 -0
  41. package/dist/contracts/payment.js +2 -0
  42. package/dist/contracts/registry.d.ts +26 -0
  43. package/dist/contracts/registry.js +14 -0
  44. package/dist/contracts/repository.d.ts +127 -0
  45. package/dist/contracts/repository.js +28 -0
  46. package/dist/contracts/search.d.ts +44 -0
  47. package/dist/contracts/search.js +2 -0
  48. package/dist/contracts/shipping.d.ts +64 -0
  49. package/dist/contracts/shipping.js +2 -0
  50. package/dist/contracts/storage.d.ts +27 -0
  51. package/dist/contracts/storage.js +2 -0
  52. package/dist/contracts/style.d.ts +23 -0
  53. package/dist/contracts/style.js +2 -0
  54. package/dist/contracts/table.d.ts +104 -0
  55. package/dist/contracts/table.js +68 -0
  56. package/dist/core/CacheManager.d.ts +31 -0
  57. package/dist/core/CacheManager.js +63 -0
  58. package/dist/core/EventBus.d.ts +27 -0
  59. package/dist/core/EventBus.js +75 -0
  60. package/dist/core/Logger.d.ts +60 -0
  61. package/dist/core/Logger.js +153 -0
  62. package/dist/core/Queue.d.ts +43 -0
  63. package/dist/core/Queue.js +92 -0
  64. package/dist/core/StorageManager.d.ts +36 -0
  65. package/dist/core/StorageManager.js +159 -0
  66. package/dist/core/baseline-resolver.d.ts +52 -0
  67. package/dist/core/baseline-resolver.js +74 -0
  68. package/dist/core/browser.d.ts +18 -0
  69. package/dist/core/browser.js +9 -0
  70. package/dist/core/copilot-log.repository.d.ts +44 -0
  71. package/dist/core/copilot-log.repository.js +61 -0
  72. package/dist/core/hooks/useSiteSettings.d.ts +1 -0
  73. package/dist/core/hooks/useSiteSettings.js +11 -0
  74. package/dist/core/index.d.ts +31 -326
  75. package/dist/core/index.js +21 -7
  76. package/dist/core/integration-keys.d.ts +30 -0
  77. package/dist/core/integration-keys.js +55 -0
  78. package/dist/core/mutation-events.d.ts +147 -0
  79. package/dist/core/mutation-events.js +193 -0
  80. package/dist/core/newsletter-actions.d.ts +20 -0
  81. package/dist/core/newsletter-actions.js +28 -0
  82. package/dist/core/newsletter.repository.d.ts +55 -0
  83. package/dist/core/newsletter.repository.js +109 -0
  84. package/dist/core/server-action.d.ts +114 -0
  85. package/dist/core/server-action.js +119 -0
  86. package/dist/core/site-config.d.ts +33 -0
  87. package/dist/core/site-config.js +74 -0
  88. package/dist/core/unit-of-work.d.ts +32 -0
  89. package/dist/core/unit-of-work.js +114 -0
  90. package/dist/errors/api-error.d.ts +4 -0
  91. package/dist/errors/api-error.js +6 -0
  92. package/dist/errors/authentication-error.d.ts +4 -0
  93. package/dist/errors/authentication-error.js +6 -0
  94. package/dist/errors/authorization-error.d.ts +4 -0
  95. package/dist/errors/authorization-error.js +6 -0
  96. package/dist/errors/base-error.d.ts +14 -0
  97. package/dist/errors/base-error.js +22 -0
  98. package/dist/errors/database-error.d.ts +4 -0
  99. package/dist/errors/database-error.js +6 -0
  100. package/dist/errors/error-codes.d.ts +43 -0
  101. package/dist/errors/error-codes.js +93 -0
  102. package/dist/errors/error-handler.d.ts +16 -0
  103. package/dist/errors/error-handler.js +57 -0
  104. package/dist/errors/index.d.ts +11 -96
  105. package/dist/errors/index.js +15 -4
  106. package/dist/errors/messages.d.ts +469 -0
  107. package/dist/errors/messages.js +503 -0
  108. package/dist/errors/not-found-error.d.ts +4 -0
  109. package/dist/errors/not-found-error.js +6 -0
  110. package/dist/errors/validation-error.d.ts +4 -0
  111. package/dist/errors/validation-error.js +6 -0
  112. package/dist/features/about/components/AboutView.d.ts +38 -0
  113. package/dist/features/about/components/AboutView.js +5 -0
  114. package/dist/features/about/index.d.ts +2 -42
  115. package/dist/features/about/index.js +1 -280
  116. package/dist/features/account/actions/address-actions.d.ts +7 -0
  117. package/dist/features/account/actions/address-actions.js +24 -0
  118. package/dist/features/account/actions/index.d.ts +1 -0
  119. package/dist/features/account/actions/index.js +1 -0
  120. package/dist/features/account/address-validation.d.ts +20 -0
  121. package/dist/features/account/address-validation.js +35 -0
  122. package/dist/features/account/api/[userId]/addresses/route.d.ts +21 -0
  123. package/dist/features/account/api/[userId]/addresses/route.js +91 -0
  124. package/dist/features/account/api/[userId]/route.d.ts +23 -0
  125. package/dist/features/account/api/[userId]/route.js +67 -0
  126. package/dist/features/account/columns/index.d.ts +17 -0
  127. package/dist/features/account/columns/index.js +39 -0
  128. package/dist/features/account/components/AddressBook.d.ts +39 -0
  129. package/dist/features/account/components/AddressBook.js +14 -0
  130. package/dist/features/account/components/AddressForm.d.ts +39 -0
  131. package/dist/features/account/components/AddressForm.js +55 -0
  132. package/dist/features/account/components/AddressSelectorCreate.d.ts +16 -0
  133. package/dist/features/account/components/AddressSelectorCreate.js +40 -0
  134. package/dist/features/account/components/BecomeSellerView.d.ts +17 -0
  135. package/dist/features/account/components/BecomeSellerView.js +5 -0
  136. package/dist/features/account/components/ChatList.d.ts +14 -0
  137. package/dist/features/account/components/ChatList.js +10 -0
  138. package/dist/features/account/components/ChatWindow.d.ts +17 -0
  139. package/dist/features/account/components/ChatWindow.js +6 -0
  140. package/dist/features/account/components/MessagesView.d.ts +16 -0
  141. package/dist/features/account/components/MessagesView.js +5 -0
  142. package/dist/features/account/components/NotificationBell.d.ts +32 -0
  143. package/dist/features/account/components/NotificationBell.js +80 -0
  144. package/dist/features/account/components/OrderDetailView.d.ts +18 -0
  145. package/dist/features/account/components/OrderDetailView.js +12 -0
  146. package/dist/features/account/components/ProfileView.d.ts +12 -0
  147. package/dist/features/account/components/ProfileView.js +5 -0
  148. package/dist/features/account/components/UserAccountHubView.d.ts +13 -0
  149. package/dist/features/account/components/UserAccountHubView.js +5 -0
  150. package/dist/features/account/components/UserAddressesView.d.ts +13 -0
  151. package/dist/features/account/components/UserAddressesView.js +5 -0
  152. package/dist/features/account/components/UserNotificationsView.d.ts +15 -0
  153. package/dist/features/account/components/UserNotificationsView.js +12 -0
  154. package/dist/features/account/components/UserOffersView.d.ts +10 -0
  155. package/dist/features/account/components/UserOffersView.js +5 -0
  156. package/dist/features/account/components/UserOrderTrackView.d.ts +16 -0
  157. package/dist/features/account/components/UserOrderTrackView.js +8 -0
  158. package/dist/features/account/components/UserOrdersView.d.ts +12 -0
  159. package/dist/features/account/components/UserOrdersView.js +5 -0
  160. package/dist/features/account/components/UserSettingsView.d.ts +15 -0
  161. package/dist/features/account/components/UserSettingsView.js +12 -0
  162. package/dist/features/account/components/index.d.ts +34 -0
  163. package/dist/features/account/components/index.js +17 -0
  164. package/dist/features/account/constants/addresses.d.ts +13 -0
  165. package/dist/features/account/constants/addresses.js +43 -0
  166. package/dist/features/account/hooks/useAccount.d.ts +13 -0
  167. package/dist/features/account/hooks/useAccount.js +19 -0
  168. package/dist/features/account/hooks/useAddressForm.d.ts +24 -0
  169. package/dist/features/account/hooks/useAddressForm.js +58 -0
  170. package/dist/features/account/hooks/useAddressSelector.d.ts +25 -0
  171. package/dist/features/account/hooks/useAddressSelector.js +30 -0
  172. package/dist/features/account/hooks/useAddresses.d.ts +59 -0
  173. package/dist/features/account/hooks/useAddresses.js +73 -0
  174. package/dist/features/account/hooks/useNotifications.d.ts +23 -0
  175. package/dist/features/account/hooks/useNotifications.js +31 -0
  176. package/dist/features/account/hooks/useProfile.d.ts +25 -0
  177. package/dist/features/account/hooks/useProfile.js +24 -0
  178. package/dist/features/account/hooks/useProfileStats.d.ts +6 -0
  179. package/dist/features/account/hooks/useProfileStats.js +21 -0
  180. package/dist/features/account/hooks/usePublicProfile.d.ts +78 -0
  181. package/dist/features/account/hooks/usePublicProfile.js +51 -0
  182. package/dist/features/account/index.d.ts +15 -555
  183. package/dist/features/account/index.js +15 -1003
  184. package/dist/features/account/manifest.d.ts +2 -0
  185. package/dist/features/account/manifest.js +27 -0
  186. package/dist/features/account/messages/en.json +12 -0
  187. package/dist/features/account/repository/account.repository.d.ts +11 -0
  188. package/dist/features/account/repository/account.repository.js +20 -0
  189. package/dist/features/account/repository/address.repository.d.ts +17 -0
  190. package/dist/features/account/repository/address.repository.js +185 -0
  191. package/dist/features/account/schemas/firestore.d.ts +48 -0
  192. package/dist/features/account/schemas/firestore.js +59 -0
  193. package/dist/features/account/schemas/index.d.ts +198 -0
  194. package/dist/features/account/schemas/index.js +51 -0
  195. package/dist/features/account/server.d.ts +9 -0
  196. package/dist/features/account/server.js +9 -0
  197. package/dist/features/account/types/index.d.ts +83 -0
  198. package/dist/features/account/types/index.js +2 -0
  199. package/dist/features/admin/actions/admin-actions.d.ts +35 -0
  200. package/dist/features/admin/actions/admin-actions.js +174 -0
  201. package/dist/features/admin/actions/admin-coupon-actions.d.ts +17 -0
  202. package/dist/features/admin/actions/admin-coupon-actions.js +87 -0
  203. package/dist/features/admin/actions/admin-read-actions.d.ts +105 -0
  204. package/dist/features/admin/actions/admin-read-actions.js +172 -0
  205. package/dist/features/admin/actions/chat-actions.d.ts +29 -0
  206. package/dist/features/admin/actions/chat-actions.js +97 -0
  207. package/dist/features/admin/actions/index.d.ts +6 -0
  208. package/dist/features/admin/actions/index.js +6 -0
  209. package/dist/features/admin/actions/notification-actions.d.ts +31 -0
  210. package/dist/features/admin/actions/notification-actions.js +42 -0
  211. package/dist/features/admin/actions/site-settings-actions.d.ts +8 -0
  212. package/dist/features/admin/actions/site-settings-actions.js +16 -0
  213. package/dist/features/admin/api/bids/route.d.ts +14 -0
  214. package/dist/features/admin/api/bids/route.js +53 -0
  215. package/dist/features/admin/api/coupons/route.d.ts +14 -0
  216. package/dist/features/admin/api/coupons/route.js +53 -0
  217. package/dist/features/admin/api/products/route.d.ts +14 -0
  218. package/dist/features/admin/api/products/route.js +54 -0
  219. package/dist/features/admin/api/reviews/route.d.ts +14 -0
  220. package/dist/features/admin/api/reviews/route.js +53 -0
  221. package/dist/features/admin/components/AdminAnalyticsView.d.ts +29 -0
  222. package/dist/features/admin/components/AdminAnalyticsView.js +15 -0
  223. package/dist/features/admin/components/AdminBidsView.d.ts +4 -0
  224. package/dist/features/admin/components/AdminBidsView.js +5 -0
  225. package/dist/features/admin/components/AdminBlogView.d.ts +4 -0
  226. package/dist/features/admin/components/AdminBlogView.js +5 -0
  227. package/dist/features/admin/components/AdminCarouselView.d.ts +9 -0
  228. package/dist/features/admin/components/AdminCarouselView.js +5 -0
  229. package/dist/features/admin/components/AdminCategoriesView.d.ts +9 -0
  230. package/dist/features/admin/components/AdminCategoriesView.js +5 -0
  231. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -0
  232. package/dist/features/admin/components/AdminCouponsView.js +5 -0
  233. package/dist/features/admin/components/AdminDashboardView.d.ts +16 -0
  234. package/dist/features/admin/components/AdminDashboardView.js +11 -0
  235. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -0
  236. package/dist/features/admin/components/AdminFaqsView.js +5 -0
  237. package/dist/features/admin/components/AdminFeatureFlagsView.d.ts +9 -0
  238. package/dist/features/admin/components/AdminFeatureFlagsView.js +5 -0
  239. package/dist/features/admin/components/AdminFilterBar.d.ts +65 -0
  240. package/dist/features/admin/components/AdminFilterBar.js +22 -0
  241. package/dist/features/admin/components/AdminMediaView.d.ts +9 -0
  242. package/dist/features/admin/components/AdminMediaView.js +5 -0
  243. package/dist/features/admin/components/AdminNavigationView.d.ts +9 -0
  244. package/dist/features/admin/components/AdminNavigationView.js +5 -0
  245. package/dist/features/admin/components/AdminOrdersView.d.ts +4 -0
  246. package/dist/features/admin/components/AdminOrdersView.js +5 -0
  247. package/dist/features/admin/components/AdminPageHeader.d.ts +53 -0
  248. package/dist/features/admin/components/AdminPageHeader.js +12 -0
  249. package/dist/features/admin/components/AdminPayoutsView.d.ts +4 -0
  250. package/dist/features/admin/components/AdminPayoutsView.js +5 -0
  251. package/dist/features/admin/components/AdminProductsView.d.ts +4 -0
  252. package/dist/features/admin/components/AdminProductsView.js +5 -0
  253. package/dist/features/admin/components/AdminReviewsView.d.ts +7 -0
  254. package/dist/features/admin/components/AdminReviewsView.js +5 -0
  255. package/dist/features/admin/components/AdminSectionsView.d.ts +9 -0
  256. package/dist/features/admin/components/AdminSectionsView.js +5 -0
  257. package/dist/features/admin/components/AdminSessionsManager.d.ts +9 -0
  258. package/dist/features/admin/components/AdminSessionsManager.js +5 -0
  259. package/dist/features/admin/components/AdminSidebar.d.ts +9 -0
  260. package/dist/features/admin/components/AdminSidebar.js +6 -0
  261. package/dist/features/admin/components/AdminSiteView.d.ts +10 -0
  262. package/dist/features/admin/components/AdminSiteView.js +5 -0
  263. package/dist/features/admin/components/AdminStoresView.d.ts +4 -0
  264. package/dist/features/admin/components/AdminStoresView.js +5 -0
  265. package/dist/features/admin/components/AdminTopBar.d.ts +8 -0
  266. package/dist/features/admin/components/AdminTopBar.js +8 -0
  267. package/dist/features/admin/components/AdminUsersView.d.ts +4 -0
  268. package/dist/features/admin/components/AdminUsersView.js +5 -0
  269. package/dist/features/admin/components/DashboardStats.d.ts +8 -0
  270. package/dist/features/admin/components/DashboardStats.js +21 -0
  271. package/dist/features/admin/components/DataTable.d.ts +19 -0
  272. package/dist/features/admin/components/DataTable.js +7 -0
  273. package/dist/features/admin/components/DemoSeedView.d.ts +11 -0
  274. package/dist/features/admin/components/DemoSeedView.js +5 -0
  275. package/dist/features/admin/components/DrawerFormFooter.d.ts +54 -0
  276. package/dist/features/admin/components/DrawerFormFooter.js +6 -0
  277. package/dist/features/admin/components/QuickActionsPanel.d.ts +15 -0
  278. package/dist/features/admin/components/QuickActionsPanel.js +6 -0
  279. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.d.ts +17 -0
  280. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +33 -0
  281. package/dist/features/admin/components/analytics/AdminStatCard.d.ts +8 -0
  282. package/dist/features/admin/components/analytics/AdminStatCard.js +6 -0
  283. package/dist/features/admin/components/analytics/AdminTopProductsTable.d.ts +16 -0
  284. package/dist/features/admin/components/analytics/AdminTopProductsTable.js +6 -0
  285. package/dist/features/admin/components/analytics/index.d.ts +3 -0
  286. package/dist/features/admin/components/analytics/index.js +3 -0
  287. package/dist/features/admin/components/index.d.ts +62 -0
  288. package/dist/features/admin/components/index.js +32 -0
  289. package/dist/features/admin/hooks/useAdmin.d.ts +9 -0
  290. package/dist/features/admin/hooks/useAdmin.js +14 -0
  291. package/dist/features/admin/hooks/useChat.d.ts +24 -0
  292. package/dist/features/admin/hooks/useChat.js +97 -0
  293. package/dist/features/admin/index.d.ts +8 -554
  294. package/dist/features/admin/index.js +7 -2703
  295. package/dist/features/admin/manifest.d.ts +2 -0
  296. package/dist/features/admin/manifest.js +13 -0
  297. package/dist/features/admin/messages/en.json +13 -0
  298. package/dist/features/admin/permission-map.d.ts +3 -0
  299. package/dist/features/admin/permission-map.js +24 -0
  300. package/dist/features/admin/repository/chat.repository.d.ts +70 -0
  301. package/dist/features/admin/repository/chat.repository.js +216 -0
  302. package/dist/features/admin/repository/notification.repository.d.ts +64 -0
  303. package/dist/features/admin/repository/notification.repository.js +225 -0
  304. package/dist/features/admin/repository/site-settings.repository.d.ts +118 -0
  305. package/dist/features/admin/repository/site-settings.repository.js +214 -0
  306. package/dist/features/admin/schemas/firestore.d.ts +311 -0
  307. package/dist/features/admin/schemas/firestore.js +246 -0
  308. package/dist/features/admin/schemas/index.d.ts +1 -0
  309. package/dist/features/admin/schemas/index.js +1 -0
  310. package/dist/features/admin/server.d.ts +15 -0
  311. package/dist/features/admin/server.js +14 -0
  312. package/dist/features/admin/types/index.d.ts +61 -0
  313. package/dist/features/admin/types/index.js +1 -0
  314. package/dist/features/admin/types/product.types.d.ts +78 -0
  315. package/dist/features/admin/types/product.types.js +13 -0
  316. package/dist/features/auctions/actions/bid-actions.d.ts +22 -0
  317. package/dist/features/auctions/actions/bid-actions.js +106 -0
  318. package/dist/features/auctions/actions/index.d.ts +1 -0
  319. package/dist/features/auctions/actions/index.js +1 -0
  320. package/dist/features/auctions/api/route.d.ts +14 -0
  321. package/dist/features/auctions/api/route.js +67 -0
  322. package/dist/features/auctions/columns/index.d.ts +14 -0
  323. package/dist/features/auctions/columns/index.js +63 -0
  324. package/dist/features/auctions/components/AuctionCard.d.ts +26 -0
  325. package/dist/features/auctions/components/AuctionCard.js +35 -0
  326. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +56 -0
  327. package/dist/features/auctions/components/MarketplaceAuctionCard.js +112 -0
  328. package/dist/features/auctions/components/MarketplaceAuctionGrid.d.ts +22 -0
  329. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +37 -0
  330. package/dist/features/auctions/components/index.d.ts +3 -0
  331. package/dist/features/auctions/components/index.js +3 -0
  332. package/dist/features/auctions/hooks/useAuctions.d.ts +50 -0
  333. package/dist/features/auctions/hooks/useAuctions.js +93 -0
  334. package/dist/features/auctions/hooks/usePlaceBid.d.ts +24 -0
  335. package/dist/features/auctions/hooks/usePlaceBid.js +29 -0
  336. package/dist/features/auctions/hooks/useRealtimeBids.d.ts +38 -0
  337. package/dist/features/auctions/hooks/useRealtimeBids.js +66 -0
  338. package/dist/features/auctions/index.d.ts +8 -513
  339. package/dist/features/auctions/index.js +8 -1194
  340. package/dist/features/auctions/manifest.d.ts +2 -0
  341. package/dist/features/auctions/manifest.js +17 -0
  342. package/dist/features/auctions/messages/en.json +18 -0
  343. package/dist/features/auctions/repository/auctions.repository.d.ts +12 -0
  344. package/dist/features/auctions/repository/auctions.repository.js +42 -0
  345. package/dist/features/auctions/repository/bid.repository.d.ts +145 -0
  346. package/dist/features/auctions/repository/bid.repository.js +370 -0
  347. package/dist/features/auctions/schemas/firestore.d.ts +48 -0
  348. package/dist/features/auctions/schemas/firestore.js +50 -0
  349. package/dist/features/auctions/schemas/index.d.ts +155 -0
  350. package/dist/features/auctions/schemas/index.js +64 -0
  351. package/dist/features/auctions/server.d.ts +10 -0
  352. package/dist/features/auctions/server.js +10 -0
  353. package/dist/features/auctions/types/index.d.ts +73 -0
  354. package/dist/features/auctions/types/index.js +1 -0
  355. package/dist/features/auth/actions/index.d.ts +2 -0
  356. package/dist/features/auth/actions/index.js +2 -0
  357. package/dist/features/auth/actions/profile-actions.d.ts +27 -0
  358. package/dist/features/auth/actions/profile-actions.js +50 -0
  359. package/dist/features/auth/actions/realtime-token-actions.d.ts +11 -0
  360. package/dist/features/auth/actions/realtime-token-actions.js +31 -0
  361. package/dist/features/auth/api/route.d.ts +22 -0
  362. package/dist/features/auth/api/route.js +48 -0
  363. package/dist/features/auth/auth-helpers.d.ts +14 -0
  364. package/dist/features/auth/auth-helpers.js +68 -0
  365. package/dist/features/auth/components/AuthStatusPanel.d.ts +10 -0
  366. package/dist/features/auth/components/AuthStatusPanel.js +22 -0
  367. package/dist/features/auth/components/ForgotPasswordView.d.ts +18 -0
  368. package/dist/features/auth/components/ForgotPasswordView.js +15 -0
  369. package/dist/features/auth/components/Guards.d.ts +86 -0
  370. package/dist/features/auth/components/Guards.js +91 -0
  371. package/dist/features/auth/components/LoginForm.d.ts +36 -0
  372. package/dist/features/auth/components/LoginForm.js +18 -0
  373. package/dist/features/auth/components/RegisterForm.d.ts +36 -0
  374. package/dist/features/auth/components/RegisterForm.js +27 -0
  375. package/dist/features/auth/components/ResetPasswordView.d.ts +23 -0
  376. package/dist/features/auth/components/ResetPasswordView.js +22 -0
  377. package/dist/features/auth/components/SocialAuthButtons.d.ts +8 -0
  378. package/dist/features/auth/components/SocialAuthButtons.js +6 -0
  379. package/dist/features/auth/components/VerifyEmailView.d.ts +20 -0
  380. package/dist/features/auth/components/VerifyEmailView.js +8 -0
  381. package/dist/features/auth/components/index.d.ts +14 -0
  382. package/dist/features/auth/components/index.js +8 -0
  383. package/dist/features/auth/consent-otp.d.ts +52 -0
  384. package/dist/features/auth/consent-otp.js +120 -0
  385. package/dist/features/auth/hooks/useAuth.d.ts +81 -0
  386. package/dist/features/auth/hooks/useAuth.js +164 -0
  387. package/dist/features/auth/hooks/useAuthEvent.d.ts +22 -0
  388. package/dist/features/auth/hooks/useAuthEvent.js +31 -0
  389. package/dist/features/auth/hooks/useLogout.d.ts +16 -0
  390. package/dist/features/auth/hooks/useLogout.js +22 -0
  391. package/dist/features/auth/hooks/useRBAC.d.ts +38 -0
  392. package/dist/features/auth/hooks/useRBAC.js +80 -0
  393. package/dist/features/auth/index.d.ts +10 -315
  394. package/dist/features/auth/index.js +10 -1874
  395. package/dist/features/auth/manifest.d.ts +2 -0
  396. package/dist/features/auth/manifest.js +21 -0
  397. package/dist/features/auth/messages/en.json +13 -0
  398. package/dist/features/auth/repository/index.d.ts +4 -0
  399. package/dist/features/auth/repository/index.js +4 -0
  400. package/dist/features/auth/repository/session.repository.d.ts +44 -0
  401. package/dist/features/auth/repository/session.repository.js +246 -0
  402. package/dist/features/auth/repository/sms-counter.repository.d.ts +15 -0
  403. package/dist/features/auth/repository/sms-counter.repository.js +54 -0
  404. package/dist/features/auth/repository/token.repository.d.ts +38 -0
  405. package/dist/features/auth/repository/token.repository.js +186 -0
  406. package/dist/features/auth/repository/user.repository.d.ts +46 -0
  407. package/dist/features/auth/repository/user.repository.js +233 -0
  408. package/dist/features/auth/schemas/firestore.d.ts +351 -0
  409. package/dist/features/auth/schemas/firestore.js +272 -0
  410. package/dist/features/auth/schemas/index.d.ts +72 -0
  411. package/dist/features/auth/schemas/index.js +41 -0
  412. package/dist/features/auth/server.d.ts +15 -18
  413. package/dist/features/auth/server.js +21 -529
  414. package/dist/features/auth/token-helpers.d.ts +7 -0
  415. package/dist/features/auth/token-helpers.js +37 -0
  416. package/dist/features/auth/token-store.d.ts +39 -0
  417. package/dist/features/auth/token-store.js +120 -0
  418. package/dist/features/auth/types/index.d.ts +30 -0
  419. package/dist/features/auth/types/index.js +1 -0
  420. package/dist/features/before-after/api/[id]/route.d.ts +26 -0
  421. package/dist/features/before-after/api/[id]/route.js +88 -0
  422. package/dist/features/before-after/api/route.d.ts +13 -0
  423. package/dist/features/before-after/api/route.js +79 -0
  424. package/dist/features/before-after/columns/index.d.ts +17 -0
  425. package/dist/features/before-after/columns/index.js +50 -0
  426. package/dist/features/before-after/components/BeforeAfterGallery.d.ts +7 -0
  427. package/dist/features/before-after/components/BeforeAfterGallery.js +8 -0
  428. package/dist/features/before-after/components/BeforeAfterSlider.d.ts +7 -0
  429. package/dist/features/before-after/components/BeforeAfterSlider.js +27 -0
  430. package/dist/features/before-after/components/index.d.ts +2 -0
  431. package/dist/features/before-after/components/index.js +2 -0
  432. package/dist/features/before-after/hooks/useBeforeAfter.d.ts +15 -0
  433. package/dist/features/before-after/hooks/useBeforeAfter.js +25 -0
  434. package/dist/features/before-after/index.d.ts +6 -128
  435. package/dist/features/before-after/index.js +6 -546
  436. package/dist/features/before-after/manifest.d.ts +2 -0
  437. package/dist/features/before-after/manifest.js +10 -0
  438. package/dist/features/before-after/messages/en.json +8 -0
  439. package/dist/features/before-after/repository/before-after.repository.d.ts +13 -0
  440. package/dist/features/before-after/repository/before-after.repository.js +36 -0
  441. package/dist/features/before-after/schemas/index.d.ts +48 -0
  442. package/dist/features/before-after/schemas/index.js +24 -0
  443. package/dist/features/before-after/server.d.ts +7 -0
  444. package/dist/features/before-after/server.js +7 -0
  445. package/dist/features/before-after/types/index.d.ts +18 -0
  446. package/dist/features/before-after/types/index.js +1 -0
  447. package/dist/features/blog/actions/blog-actions.d.ts +302 -0
  448. package/dist/features/blog/actions/blog-actions.js +119 -0
  449. package/dist/features/blog/actions/index.d.ts +1 -0
  450. package/dist/features/blog/actions/index.js +1 -0
  451. package/dist/features/blog/api/[slug]/route.d.ts +23 -0
  452. package/dist/features/blog/api/[slug]/route.js +40 -0
  453. package/dist/features/blog/api/route.d.ts +12 -0
  454. package/dist/features/blog/api/route.js +64 -0
  455. package/dist/features/blog/columns/index.d.ts +27 -0
  456. package/dist/features/blog/columns/index.js +54 -0
  457. package/dist/features/blog/components/BlogFeaturedCard.d.ts +17 -0
  458. package/dist/features/blog/components/BlogFeaturedCard.js +24 -0
  459. package/dist/features/blog/components/BlogFilters.d.ts +106 -0
  460. package/dist/features/blog/components/BlogFilters.js +67 -0
  461. package/dist/features/blog/components/BlogListView.d.ts +29 -0
  462. package/dist/features/blog/components/BlogListView.js +38 -0
  463. package/dist/features/blog/components/BlogPostForm.d.ts +56 -0
  464. package/dist/features/blog/components/BlogPostForm.js +24 -0
  465. package/dist/features/blog/components/BlogPostView.d.ts +32 -0
  466. package/dist/features/blog/components/BlogPostView.js +39 -0
  467. package/dist/features/blog/components/index.d.ts +9 -0
  468. package/dist/features/blog/components/index.js +5 -0
  469. package/dist/features/blog/hooks/useBlog.d.ts +27 -0
  470. package/dist/features/blog/hooks/useBlog.js +51 -0
  471. package/dist/features/blog/index.d.ts +6 -492
  472. package/dist/features/blog/index.js +6 -4062
  473. package/dist/features/blog/manifest.d.ts +2 -0
  474. package/dist/features/blog/manifest.js +14 -0
  475. package/dist/features/blog/messages/en.json +14 -0
  476. package/dist/features/blog/repository/blog.repository.d.ts +79 -0
  477. package/dist/features/blog/repository/blog.repository.js +130 -0
  478. package/dist/features/blog/schemas/firestore.d.ts +87 -0
  479. package/dist/features/blog/schemas/firestore.js +99 -0
  480. package/dist/features/blog/schemas/index.d.ts +207 -0
  481. package/dist/features/blog/schemas/index.js +71 -0
  482. package/dist/features/blog/server.d.ts +8 -71
  483. package/dist/features/blog/server.js +10 -180
  484. package/dist/features/blog/types/index.d.ts +47 -0
  485. package/dist/features/blog/types/index.js +1 -0
  486. package/dist/features/cart/actions/cart-actions.d.ts +16 -0
  487. package/dist/features/cart/actions/cart-actions.js +52 -0
  488. package/dist/features/cart/actions/index.d.ts +1 -0
  489. package/dist/features/cart/actions/index.js +1 -0
  490. package/dist/features/cart/api/[id]/route.d.ts +21 -0
  491. package/dist/features/cart/api/[id]/route.js +62 -0
  492. package/dist/features/cart/api/route.d.ts +13 -0
  493. package/dist/features/cart/api/route.js +79 -0
  494. package/dist/features/cart/columns/index.d.ts +17 -0
  495. package/dist/features/cart/columns/index.js +53 -0
  496. package/dist/features/cart/components/CartDrawer.d.ts +27 -0
  497. package/dist/features/cart/components/CartDrawer.js +14 -0
  498. package/dist/features/cart/components/CartSummary.d.ts +19 -0
  499. package/dist/features/cart/components/CartSummary.js +5 -0
  500. package/dist/features/cart/components/CartView.d.ts +17 -0
  501. package/dist/features/cart/components/CartView.js +7 -0
  502. package/dist/features/cart/components/CheckoutAddressStep.d.ts +20 -0
  503. package/dist/features/cart/components/CheckoutAddressStep.js +12 -0
  504. package/dist/features/cart/components/CheckoutOtpModal.d.ts +15 -0
  505. package/dist/features/cart/components/CheckoutOtpModal.js +12 -0
  506. package/dist/features/cart/components/CheckoutSuccessView.d.ts +12 -0
  507. package/dist/features/cart/components/CheckoutSuccessView.js +9 -0
  508. package/dist/features/cart/components/CheckoutView.d.ts +15 -0
  509. package/dist/features/cart/components/CheckoutView.js +18 -0
  510. package/dist/features/cart/components/index.d.ts +13 -0
  511. package/dist/features/cart/components/index.js +7 -0
  512. package/dist/features/cart/hooks/useAddToCart.d.ts +27 -0
  513. package/dist/features/cart/hooks/useAddToCart.js +52 -0
  514. package/dist/features/cart/hooks/useCart.d.ts +17 -0
  515. package/dist/features/cart/hooks/useCart.js +24 -0
  516. package/dist/features/cart/hooks/useCartCount.d.ts +7 -0
  517. package/dist/features/cart/hooks/useCartCount.js +19 -0
  518. package/dist/features/cart/hooks/useCartQuery.d.ts +8 -0
  519. package/dist/features/cart/hooks/useCartQuery.js +11 -0
  520. package/dist/features/cart/hooks/useCheckoutReadQueries.d.ts +14 -0
  521. package/dist/features/cart/hooks/useCheckoutReadQueries.js +18 -0
  522. package/dist/features/cart/hooks/useGuestCart.d.ts +18 -0
  523. package/dist/features/cart/hooks/useGuestCart.js +32 -0
  524. package/dist/features/cart/hooks/useGuestCartMerge.d.ts +15 -0
  525. package/dist/features/cart/hooks/useGuestCartMerge.js +50 -0
  526. package/dist/features/cart/hooks/useOrder.d.ts +13 -0
  527. package/dist/features/cart/hooks/useOrder.js +24 -0
  528. package/dist/features/cart/index.d.ts +14 -451
  529. package/dist/features/cart/index.js +14 -1064
  530. package/dist/features/cart/manifest.d.ts +2 -0
  531. package/dist/features/cart/manifest.js +10 -0
  532. package/dist/features/cart/messages/en.json +10 -0
  533. package/dist/features/cart/repository/cart.repository.d.ts +23 -0
  534. package/dist/features/cart/repository/cart.repository.js +210 -0
  535. package/dist/features/cart/schemas/firestore.d.ts +83 -0
  536. package/dist/features/cart/schemas/firestore.js +36 -0
  537. package/dist/features/cart/schemas/index.d.ts +184 -0
  538. package/dist/features/cart/schemas/index.js +35 -0
  539. package/dist/features/cart/server.d.ts +8 -0
  540. package/dist/features/cart/server.js +8 -0
  541. package/dist/features/cart/types/index.d.ts +27 -0
  542. package/dist/features/cart/types/index.js +1 -0
  543. package/dist/features/cart/utils/guest-cart.d.ts +26 -0
  544. package/dist/features/cart/utils/guest-cart.js +83 -0
  545. package/dist/features/categories/actions/category-actions.d.ts +17 -0
  546. package/dist/features/categories/actions/category-actions.js +63 -0
  547. package/dist/features/categories/actions/index.d.ts +1 -0
  548. package/dist/features/categories/actions/index.js +1 -0
  549. package/dist/features/categories/api/[id]/route.d.ts +23 -0
  550. package/dist/features/categories/api/[id]/route.js +98 -0
  551. package/dist/features/categories/api/route.d.ts +19 -0
  552. package/dist/features/categories/api/route.js +200 -0
  553. package/dist/features/categories/columns/index.d.ts +15 -0
  554. package/dist/features/categories/columns/index.js +38 -0
  555. package/dist/features/categories/components/BreadcrumbTrail.d.ts +47 -0
  556. package/dist/features/categories/components/BreadcrumbTrail.js +36 -0
  557. package/dist/features/categories/components/CategoriesListView.d.ts +31 -0
  558. package/dist/features/categories/components/CategoriesListView.js +27 -0
  559. package/dist/features/categories/components/CategoryFilters.d.ts +68 -0
  560. package/dist/features/categories/components/CategoryFilters.js +75 -0
  561. package/dist/features/categories/components/CategoryForm.d.ts +24 -0
  562. package/dist/features/categories/components/CategoryForm.js +42 -0
  563. package/dist/features/categories/components/CategoryGrid.d.ts +14 -0
  564. package/dist/features/categories/components/CategoryGrid.js +14 -0
  565. package/dist/features/categories/components/CategoryProductsView.d.ts +49 -0
  566. package/dist/features/categories/components/CategoryProductsView.js +21 -0
  567. package/dist/features/categories/components/CategorySelectorCreate.d.ts +17 -0
  568. package/dist/features/categories/components/CategorySelectorCreate.js +57 -0
  569. package/dist/features/categories/components/CategorySortSelect.d.ts +9 -0
  570. package/dist/features/categories/components/CategorySortSelect.js +8 -0
  571. package/dist/features/categories/components/CategoryTableColumns.d.ts +30 -0
  572. package/dist/features/categories/components/CategoryTableColumns.js +54 -0
  573. package/dist/features/categories/components/CategoryTree.d.ts +15 -0
  574. package/dist/features/categories/components/CategoryTree.js +49 -0
  575. package/dist/features/categories/components/ConcernCard.d.ts +8 -0
  576. package/dist/features/categories/components/ConcernCard.js +5 -0
  577. package/dist/features/categories/components/ConcernGrid.d.ts +8 -0
  578. package/dist/features/categories/components/ConcernGrid.js +8 -0
  579. package/dist/features/categories/components/index.d.ts +22 -0
  580. package/dist/features/categories/components/index.js +12 -0
  581. package/dist/features/categories/hooks/useCategories.d.ts +26 -0
  582. package/dist/features/categories/hooks/useCategories.js +50 -0
  583. package/dist/features/categories/hooks/useCategorySelector.d.ts +26 -0
  584. package/dist/features/categories/hooks/useCategorySelector.js +42 -0
  585. package/dist/features/categories/index.d.ts +7 -461
  586. package/dist/features/categories/index.js +7 -2031
  587. package/dist/features/categories/manifest.d.ts +2 -0
  588. package/dist/features/categories/manifest.js +20 -0
  589. package/dist/features/categories/messages/en.json +14 -0
  590. package/dist/features/categories/repository/categories.repository.d.ts +31 -0
  591. package/dist/features/categories/repository/categories.repository.js +399 -0
  592. package/dist/features/categories/schemas/firestore.d.ts +140 -0
  593. package/dist/features/categories/schemas/firestore.js +189 -0
  594. package/dist/features/categories/schemas/index.d.ts +207 -0
  595. package/dist/features/categories/schemas/index.js +67 -0
  596. package/dist/features/categories/server.d.ts +7 -44
  597. package/dist/features/categories/server.js +10 -789
  598. package/dist/features/categories/types/index.d.ts +80 -0
  599. package/dist/features/categories/types/index.js +13 -0
  600. package/dist/features/checkout/actions/checkout-actions.d.ts +14 -0
  601. package/dist/features/checkout/actions/checkout-actions.js +91 -0
  602. package/dist/features/checkout/actions/index.d.ts +1 -0
  603. package/dist/features/checkout/actions/index.js +1 -0
  604. package/dist/features/checkout/components/CheckoutStepper.d.ts +10 -0
  605. package/dist/features/checkout/components/CheckoutStepper.js +15 -0
  606. package/dist/features/checkout/components/index.d.ts +1 -0
  607. package/dist/features/checkout/components/index.js +1 -0
  608. package/dist/features/checkout/hooks/useCheckout.d.ts +9 -0
  609. package/dist/features/checkout/hooks/useCheckout.js +24 -0
  610. package/dist/features/checkout/hooks/useCheckoutApi.d.ts +74 -0
  611. package/dist/features/checkout/hooks/useCheckoutApi.js +48 -0
  612. package/dist/features/checkout/hooks/usePaymentCheckout.d.ts +78 -0
  613. package/dist/features/checkout/hooks/usePaymentCheckout.js +178 -0
  614. package/dist/features/checkout/index.d.ts +8 -70
  615. package/dist/features/checkout/index.js +7 -192
  616. package/dist/features/checkout/manifest.d.ts +2 -0
  617. package/dist/features/checkout/manifest.js +17 -0
  618. package/dist/features/checkout/messages/en.json +10 -0
  619. package/dist/features/checkout/repository/failed-checkout.repository.d.ts +18 -0
  620. package/dist/features/checkout/repository/failed-checkout.repository.js +29 -0
  621. package/dist/features/checkout/schemas/firestore.d.ts +33 -0
  622. package/dist/features/checkout/schemas/firestore.js +6 -0
  623. package/dist/features/checkout/schemas/index.d.ts +1 -0
  624. package/dist/features/checkout/schemas/index.js +1 -0
  625. package/dist/features/checkout/server.d.ts +8 -0
  626. package/dist/features/checkout/server.js +8 -0
  627. package/dist/features/checkout/types/index.d.ts +46 -0
  628. package/dist/features/checkout/types/index.js +2 -0
  629. package/dist/features/cms/index.d.ts +1 -2
  630. package/dist/features/cms/index.js +5 -4
  631. package/dist/features/collections/api/[slug]/route.d.ts +26 -0
  632. package/dist/features/collections/api/[slug]/route.js +102 -0
  633. package/dist/features/collections/api/route.d.ts +13 -0
  634. package/dist/features/collections/api/route.js +79 -0
  635. package/dist/features/collections/columns/index.d.ts +17 -0
  636. package/dist/features/collections/columns/index.js +55 -0
  637. package/dist/features/collections/components/CollectionCard.d.ts +12 -0
  638. package/dist/features/collections/components/CollectionCard.js +9 -0
  639. package/dist/features/collections/components/index.d.ts +1 -0
  640. package/dist/features/collections/components/index.js +1 -0
  641. package/dist/features/collections/hooks/useCollections.d.ts +7 -0
  642. package/dist/features/collections/hooks/useCollections.js +34 -0
  643. package/dist/features/collections/index.d.ts +6 -148
  644. package/dist/features/collections/index.js +6 -378
  645. package/dist/features/collections/manifest.d.ts +2 -0
  646. package/dist/features/collections/manifest.js +16 -0
  647. package/dist/features/collections/messages/en.json +10 -0
  648. package/dist/features/collections/repository/collections.repository.d.ts +8 -0
  649. package/dist/features/collections/repository/collections.repository.js +16 -0
  650. package/dist/features/collections/schemas/index.d.ts +76 -0
  651. package/dist/features/collections/schemas/index.js +34 -0
  652. package/dist/features/collections/server.d.ts +7 -0
  653. package/dist/features/collections/server.js +7 -0
  654. package/dist/features/collections/types/index.d.ts +25 -0
  655. package/dist/features/collections/types/index.js +1 -0
  656. package/dist/features/consultation/api/[id]/route.d.ts +26 -0
  657. package/dist/features/consultation/api/[id]/route.js +88 -0
  658. package/dist/features/consultation/api/route.d.ts +13 -0
  659. package/dist/features/consultation/api/route.js +79 -0
  660. package/dist/features/consultation/columns/index.d.ts +17 -0
  661. package/dist/features/consultation/columns/index.js +54 -0
  662. package/dist/features/consultation/components/ConsultationForm.d.ts +8 -0
  663. package/dist/features/consultation/components/ConsultationForm.js +51 -0
  664. package/dist/features/consultation/components/index.d.ts +1 -0
  665. package/dist/features/consultation/components/index.js +1 -0
  666. package/dist/features/consultation/hooks/useBookConsultation.d.ts +8 -0
  667. package/dist/features/consultation/hooks/useBookConsultation.js +16 -0
  668. package/dist/features/consultation/index.d.ts +6 -172
  669. package/dist/features/consultation/index.js +6 -1084
  670. package/dist/features/consultation/manifest.d.ts +2 -0
  671. package/dist/features/consultation/manifest.js +12 -0
  672. package/dist/features/consultation/messages/en.json +25 -0
  673. package/dist/features/consultation/repository/consultations.repository.d.ts +12 -0
  674. package/dist/features/consultation/repository/consultations.repository.js +28 -0
  675. package/dist/features/consultation/schemas/index.d.ts +87 -0
  676. package/dist/features/consultation/schemas/index.js +47 -0
  677. package/dist/features/consultation/server.d.ts +7 -0
  678. package/dist/features/consultation/server.js +7 -0
  679. package/dist/features/consultation/types/index.d.ts +33 -0
  680. package/dist/features/consultation/types/index.js +1 -0
  681. package/dist/features/contact/components/ContactForm.d.ts +32 -0
  682. package/dist/features/contact/components/ContactForm.js +58 -0
  683. package/dist/features/contact/components/ContactInfoSidebar.d.ts +20 -0
  684. package/dist/features/contact/components/ContactInfoSidebar.js +6 -0
  685. package/dist/features/contact/components/index.d.ts +4 -0
  686. package/dist/features/contact/components/index.js +2 -0
  687. package/dist/features/contact/email.d.ts +61 -0
  688. package/dist/features/contact/email.js +345 -0
  689. package/dist/features/contact/hooks/useContactSubmit.d.ts +4 -0
  690. package/dist/features/contact/hooks/useContactSubmit.js +7 -0
  691. package/dist/features/contact/index.d.ts +2 -56
  692. package/dist/features/contact/index.js +2 -586
  693. package/dist/features/contact/server.d.ts +7 -0
  694. package/dist/features/contact/server.js +7 -0
  695. package/dist/features/copilot/components/AdminCopilotView.d.ts +21 -0
  696. package/dist/features/copilot/components/AdminCopilotView.js +29 -0
  697. package/dist/features/copilot/components/index.d.ts +2 -0
  698. package/dist/features/copilot/components/index.js +1 -0
  699. package/dist/features/copilot/hooks/useCopilotChat.d.ts +22 -0
  700. package/dist/features/copilot/hooks/useCopilotChat.js +57 -0
  701. package/dist/features/copilot/hooks/useCopilotFeedback.d.ts +15 -0
  702. package/dist/features/copilot/hooks/useCopilotFeedback.js +16 -0
  703. package/dist/features/copilot/index.d.ts +3 -47
  704. package/dist/features/copilot/index.js +3 -681
  705. package/dist/features/corporate/api/[id]/route.d.ts +26 -0
  706. package/dist/features/corporate/api/[id]/route.js +88 -0
  707. package/dist/features/corporate/api/route.d.ts +13 -0
  708. package/dist/features/corporate/api/route.js +79 -0
  709. package/dist/features/corporate/columns/index.d.ts +17 -0
  710. package/dist/features/corporate/columns/index.js +54 -0
  711. package/dist/features/corporate/components/CorporateInquiryForm.d.ts +7 -0
  712. package/dist/features/corporate/components/CorporateInquiryForm.js +36 -0
  713. package/dist/features/corporate/components/index.d.ts +1 -0
  714. package/dist/features/corporate/components/index.js +1 -0
  715. package/dist/features/corporate/hooks/useSubmitCorporateInquiry.d.ts +8 -0
  716. package/dist/features/corporate/hooks/useSubmitCorporateInquiry.js +16 -0
  717. package/dist/features/corporate/index.d.ts +6 -183
  718. package/dist/features/corporate/index.js +6 -782
  719. package/dist/features/corporate/manifest.d.ts +2 -0
  720. package/dist/features/corporate/manifest.js +12 -0
  721. package/dist/features/corporate/messages/en.json +26 -0
  722. package/dist/features/corporate/repository/corporate.repository.d.ts +12 -0
  723. package/dist/features/corporate/repository/corporate.repository.js +28 -0
  724. package/dist/features/corporate/schemas/index.d.ts +95 -0
  725. package/dist/features/corporate/schemas/index.js +50 -0
  726. package/dist/features/corporate/server.d.ts +7 -0
  727. package/dist/features/corporate/server.js +7 -0
  728. package/dist/features/corporate/types/index.d.ts +37 -0
  729. package/dist/features/corporate/types/index.js +1 -0
  730. package/dist/features/cron/firebase-adapters.d.ts +70 -0
  731. package/dist/features/cron/firebase-adapters.js +68 -0
  732. package/dist/features/cron/index.d.ts +5 -0
  733. package/dist/features/cron/index.js +7 -0
  734. package/dist/features/cron/jobs/auction-expiry.job.d.ts +27 -0
  735. package/dist/features/cron/jobs/auction-expiry.job.js +38 -0
  736. package/dist/features/cron/jobs/preorder-reminder.job.d.ts +14 -0
  737. package/dist/features/cron/jobs/preorder-reminder.job.js +40 -0
  738. package/dist/features/cron/registry.d.ts +45 -0
  739. package/dist/features/cron/registry.js +86 -0
  740. package/dist/features/cron/types.d.ts +66 -0
  741. package/dist/features/cron/types.js +9 -0
  742. package/dist/features/events/actions/event-actions.d.ts +92 -0
  743. package/dist/features/events/actions/event-actions.js +253 -0
  744. package/dist/features/events/actions/index.d.ts +1 -0
  745. package/dist/features/events/actions/index.js +1 -0
  746. package/dist/features/events/api/[id]/route.d.ts +24 -0
  747. package/dist/features/events/api/[id]/route.js +83 -0
  748. package/dist/features/events/api/route.d.ts +12 -0
  749. package/dist/features/events/api/route.js +88 -0
  750. package/dist/features/events/columns/index.d.ts +22 -0
  751. package/dist/features/events/columns/index.js +41 -0
  752. package/dist/features/events/components/AdminEventEntriesView.d.ts +17 -0
  753. package/dist/features/events/components/AdminEventEntriesView.js +10 -0
  754. package/dist/features/events/components/AdminEventsView.d.ts +11 -0
  755. package/dist/features/events/components/AdminEventsView.js +5 -0
  756. package/dist/features/events/components/EventBanner.d.ts +13 -0
  757. package/dist/features/events/components/EventBanner.js +48 -0
  758. package/dist/features/events/components/EventCard.d.ts +13 -0
  759. package/dist/features/events/components/EventCard.js +21 -0
  760. package/dist/features/events/components/EventDetailView.d.ts +15 -0
  761. package/dist/features/events/components/EventDetailView.js +11 -0
  762. package/dist/features/events/components/EventFilters.d.ts +105 -0
  763. package/dist/features/events/components/EventFilters.js +73 -0
  764. package/dist/features/events/components/EventFormDrawer.d.ts +22 -0
  765. package/dist/features/events/components/EventFormDrawer.js +6 -0
  766. package/dist/features/events/components/EventLeaderboard.d.ts +23 -0
  767. package/dist/features/events/components/EventLeaderboard.js +18 -0
  768. package/dist/features/events/components/EventParticipateView.d.ts +19 -0
  769. package/dist/features/events/components/EventParticipateView.js +13 -0
  770. package/dist/features/events/components/EventStatusBadge.d.ts +7 -0
  771. package/dist/features/events/components/EventStatusBadge.js +12 -0
  772. package/dist/features/events/components/EventsListView.d.ts +16 -0
  773. package/dist/features/events/components/EventsListView.js +21 -0
  774. package/dist/features/events/components/index.d.ts +19 -0
  775. package/dist/features/events/components/index.js +11 -0
  776. package/dist/features/events/hooks/useBulkEvent.d.ts +19 -0
  777. package/dist/features/events/hooks/useBulkEvent.js +36 -0
  778. package/dist/features/events/hooks/useEvent.d.ts +43 -0
  779. package/dist/features/events/hooks/useEvent.js +55 -0
  780. package/dist/features/events/hooks/useEvents.d.ts +27 -0
  781. package/dist/features/events/hooks/useEvents.js +38 -0
  782. package/dist/features/events/index.d.ts +8 -841
  783. package/dist/features/events/index.js +8 -1453
  784. package/dist/features/events/manifest.d.ts +2 -0
  785. package/dist/features/events/manifest.js +24 -0
  786. package/dist/features/events/messages/en.json +28 -0
  787. package/dist/features/events/repository/event-entry.repository.d.ts +17 -0
  788. package/dist/features/events/repository/event-entry.repository.js +115 -0
  789. package/dist/features/events/repository/events.repository.d.ts +18 -0
  790. package/dist/features/events/repository/events.repository.js +128 -0
  791. package/dist/features/events/schemas/firestore.d.ts +115 -0
  792. package/dist/features/events/schemas/firestore.js +77 -0
  793. package/dist/features/events/schemas/index.d.ts +383 -0
  794. package/dist/features/events/schemas/index.js +87 -0
  795. package/dist/features/events/server.d.ts +8 -37
  796. package/dist/features/events/server.js +11 -195
  797. package/dist/features/events/types/index.d.ts +133 -0
  798. package/dist/features/events/types/index.js +1 -0
  799. package/dist/features/faq/actions/faq-actions.d.ts +191 -0
  800. package/dist/features/faq/actions/faq-actions.js +103 -0
  801. package/dist/features/faq/actions/index.d.ts +1 -0
  802. package/dist/features/faq/actions/index.js +1 -0
  803. package/dist/features/faq/api/route.d.ts +11 -0
  804. package/dist/features/faq/api/route.js +50 -0
  805. package/dist/features/faq/columns/index.d.ts +15 -0
  806. package/dist/features/faq/columns/index.js +47 -0
  807. package/dist/features/faq/components/ContactCTA.d.ts +16 -0
  808. package/dist/features/faq/components/ContactCTA.js +6 -0
  809. package/dist/features/faq/components/FAQAccordion.d.ts +20 -0
  810. package/dist/features/faq/components/FAQAccordion.js +17 -0
  811. package/dist/features/faq/components/FAQCategorySidebar.d.ts +24 -0
  812. package/dist/features/faq/components/FAQCategorySidebar.js +15 -0
  813. package/dist/features/faq/components/FAQHelpfulButtons.d.ts +19 -0
  814. package/dist/features/faq/components/FAQHelpfulButtons.js +46 -0
  815. package/dist/features/faq/components/FAQPageContent.d.ts +54 -0
  816. package/dist/features/faq/components/FAQPageContent.js +67 -0
  817. package/dist/features/faq/components/FAQSortDropdown.d.ts +13 -0
  818. package/dist/features/faq/components/FAQSortDropdown.js +11 -0
  819. package/dist/features/faq/components/RelatedFAQs.d.ts +10 -0
  820. package/dist/features/faq/components/RelatedFAQs.js +9 -0
  821. package/dist/features/faq/components/index.d.ts +9 -0
  822. package/dist/features/faq/components/index.js +7 -0
  823. package/dist/features/faq/hooks/useFAQs.d.ts +22 -0
  824. package/dist/features/faq/hooks/useFAQs.js +42 -0
  825. package/dist/features/faq/hooks/useFaqList.d.ts +194 -0
  826. package/dist/features/faq/hooks/useFaqList.js +35 -0
  827. package/dist/features/faq/hooks/useFaqVote.d.ts +14 -0
  828. package/dist/features/faq/hooks/useFaqVote.js +10 -0
  829. package/dist/features/faq/index.d.ts +8 -619
  830. package/dist/features/faq/index.js +8 -1685
  831. package/dist/features/faq/manifest.d.ts +2 -0
  832. package/dist/features/faq/manifest.js +10 -0
  833. package/dist/features/faq/messages/en.json +14 -0
  834. package/dist/features/faq/repository/faqs.repository.d.ts +43 -0
  835. package/dist/features/faq/repository/faqs.repository.js +300 -0
  836. package/dist/features/faq/schemas/firestore.d.ts +63 -0
  837. package/dist/features/faq/schemas/firestore.js +115 -0
  838. package/dist/features/faq/schemas/index.d.ts +157 -0
  839. package/dist/features/faq/schemas/index.js +62 -0
  840. package/dist/features/faq/server.d.ts +9 -0
  841. package/dist/features/faq/server.js +9 -0
  842. package/dist/features/faq/types/index.d.ts +52 -0
  843. package/dist/features/faq/types/index.js +1 -0
  844. package/dist/features/filters/FilterFacetSection.d.ts +23 -0
  845. package/dist/features/filters/FilterFacetSection.js +39 -0
  846. package/dist/features/filters/FilterPanel.d.ts +61 -0
  847. package/dist/features/filters/FilterPanel.js +40 -0
  848. package/dist/features/filters/RangeFilter.d.ts +23 -0
  849. package/dist/features/filters/RangeFilter.js +28 -0
  850. package/dist/features/filters/SwitchFilter.d.ts +12 -0
  851. package/dist/features/filters/SwitchFilter.js +19 -0
  852. package/dist/features/filters/filterUtils.d.ts +11 -0
  853. package/dist/features/filters/filterUtils.js +13 -0
  854. package/dist/features/filters/index.d.ts +10 -136
  855. package/dist/features/filters/index.js +6 -1061
  856. package/dist/features/forms/Checkbox.d.ts +8 -0
  857. package/dist/features/forms/Checkbox.js +15 -0
  858. package/dist/features/forms/Form.d.ts +25 -0
  859. package/dist/features/forms/Form.js +38 -0
  860. package/dist/features/forms/Input.d.ts +10 -0
  861. package/dist/features/forms/Input.js +23 -0
  862. package/dist/features/forms/Radio.d.ts +17 -0
  863. package/dist/features/forms/Radio.js +19 -0
  864. package/dist/features/forms/Select.d.ts +13 -0
  865. package/dist/features/forms/Select.js +8 -0
  866. package/dist/features/forms/Slider.d.ts +20 -0
  867. package/dist/features/forms/Slider.js +22 -0
  868. package/dist/features/forms/Textarea.d.ts +8 -0
  869. package/dist/features/forms/Textarea.js +15 -0
  870. package/dist/features/forms/Toggle.d.ts +15 -0
  871. package/dist/features/forms/Toggle.js +48 -0
  872. package/dist/features/forms/index.d.ts +17 -129
  873. package/dist/features/forms/index.js +11 -915
  874. package/dist/features/forms/utils.d.ts +10 -0
  875. package/dist/features/forms/utils.js +13 -0
  876. package/dist/features/homepage/actions/carousel-actions.d.ts +37 -0
  877. package/dist/features/homepage/actions/carousel-actions.js +54 -0
  878. package/dist/features/homepage/actions/homepage-section-actions.d.ts +46 -0
  879. package/dist/features/homepage/actions/homepage-section-actions.js +55 -0
  880. package/dist/features/homepage/actions/index.d.ts +2 -0
  881. package/dist/features/homepage/actions/index.js +2 -0
  882. package/dist/features/homepage/api/[id]/route.d.ts +23 -0
  883. package/dist/features/homepage/api/[id]/route.js +100 -0
  884. package/dist/features/homepage/api/carousel/[id]/route.d.ts +23 -0
  885. package/dist/features/homepage/api/carousel/[id]/route.js +122 -0
  886. package/dist/features/homepage/api/carousel/route.d.ts +15 -0
  887. package/dist/features/homepage/api/carousel/route.js +154 -0
  888. package/dist/features/homepage/api/route.d.ts +14 -0
  889. package/dist/features/homepage/api/route.js +136 -0
  890. package/dist/features/homepage/api/sections/[id]/route.d.ts +26 -0
  891. package/dist/features/homepage/api/sections/[id]/route.js +88 -0
  892. package/dist/features/homepage/api/sections/route.d.ts +13 -0
  893. package/dist/features/homepage/api/sections/route.js +79 -0
  894. package/dist/features/homepage/components/AdvertisementBanner.d.ts +13 -0
  895. package/dist/features/homepage/components/AdvertisementBanner.js +23 -0
  896. package/dist/features/homepage/components/BeforeAfterCard.d.ts +10 -0
  897. package/dist/features/homepage/components/BeforeAfterCard.js +54 -0
  898. package/dist/features/homepage/components/CharacterHotspot.d.ts +24 -0
  899. package/dist/features/homepage/components/CharacterHotspot.js +373 -0
  900. package/dist/features/homepage/components/CharacterHotspotForm.d.ts +26 -0
  901. package/dist/features/homepage/components/CharacterHotspotForm.js +309 -0
  902. package/dist/features/homepage/components/CustomerReviewsSection.d.ts +13 -0
  903. package/dist/features/homepage/components/CustomerReviewsSection.js +14 -0
  904. package/dist/features/homepage/components/FAQSection.d.ts +26 -0
  905. package/dist/features/homepage/components/FAQSection.js +20 -0
  906. package/dist/features/homepage/components/FeaturedResultsSection.d.ts +17 -0
  907. package/dist/features/homepage/components/FeaturedResultsSection.js +18 -0
  908. package/dist/features/homepage/components/HeroBanner.d.ts +7 -0
  909. package/dist/features/homepage/components/HeroBanner.js +93 -0
  910. package/dist/features/homepage/components/HeroCarousel.d.ts +12 -0
  911. package/dist/features/homepage/components/HeroCarousel.js +157 -0
  912. package/dist/features/homepage/components/HeroSection.d.ts +7 -0
  913. package/dist/features/homepage/components/HeroSection.js +12 -0
  914. package/dist/features/homepage/components/HomepageSkeleton.d.ts +2 -0
  915. package/dist/features/homepage/components/HomepageSkeleton.js +14 -0
  916. package/dist/features/homepage/components/HomepageView.d.ts +25 -0
  917. package/dist/features/homepage/components/HomepageView.js +5 -0
  918. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +36 -0
  919. package/dist/features/homepage/components/HowItWorksInfoView.js +8 -0
  920. package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -0
  921. package/dist/features/homepage/components/HowItWorksSection.js +36 -0
  922. package/dist/features/homepage/components/NewsletterBanner.d.ts +22 -0
  923. package/dist/features/homepage/components/NewsletterBanner.js +34 -0
  924. package/dist/features/homepage/components/NewsletterSection.d.ts +10 -0
  925. package/dist/features/homepage/components/NewsletterSection.js +8 -0
  926. package/dist/features/homepage/components/PromoGrid.d.ts +9 -0
  927. package/dist/features/homepage/components/PromoGrid.js +35 -0
  928. package/dist/features/homepage/components/SectionCarousel.d.ts +75 -0
  929. package/dist/features/homepage/components/SectionCarousel.js +39 -0
  930. package/dist/features/homepage/components/SecurityHighlightsSection.d.ts +21 -0
  931. package/dist/features/homepage/components/SecurityHighlightsSection.js +36 -0
  932. package/dist/features/homepage/components/SiteFeaturesSection.d.ts +13 -0
  933. package/dist/features/homepage/components/SiteFeaturesSection.js +9 -0
  934. package/dist/features/homepage/components/StatsCounterSection.d.ts +14 -0
  935. package/dist/features/homepage/components/StatsCounterSection.js +32 -0
  936. package/dist/features/homepage/components/TestimonialsCarousel.d.ts +9 -0
  937. package/dist/features/homepage/components/TestimonialsCarousel.js +30 -0
  938. package/dist/features/homepage/components/TrustBadges.d.ts +5 -0
  939. package/dist/features/homepage/components/TrustBadges.js +54 -0
  940. package/dist/features/homepage/components/TrustFeaturesSection.d.ts +16 -0
  941. package/dist/features/homepage/components/TrustFeaturesSection.js +41 -0
  942. package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +11 -0
  943. package/dist/features/homepage/components/TrustIndicatorsSection.js +9 -0
  944. package/dist/features/homepage/components/WelcomeSection.d.ts +20 -0
  945. package/dist/features/homepage/components/WelcomeSection.js +12 -0
  946. package/dist/features/homepage/components/WhatsAppCommunitySection.d.ts +15 -0
  947. package/dist/features/homepage/components/WhatsAppCommunitySection.js +21 -0
  948. package/dist/features/homepage/components/index.d.ts +52 -0
  949. package/dist/features/homepage/components/index.js +27 -0
  950. package/dist/features/homepage/hooks/useBlogArticles.d.ts +12 -0
  951. package/dist/features/homepage/hooks/useBlogArticles.js +31 -0
  952. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +2 -0
  953. package/dist/features/homepage/hooks/useFeaturedAuctions.js +26 -0
  954. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +2 -0
  955. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +26 -0
  956. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +4 -0
  957. package/dist/features/homepage/hooks/useFeaturedProducts.js +32 -0
  958. package/dist/features/homepage/hooks/useHeroCarousel.d.ts +9 -0
  959. package/dist/features/homepage/hooks/useHeroCarousel.js +17 -0
  960. package/dist/features/homepage/hooks/useHomepage.d.ts +11 -0
  961. package/dist/features/homepage/hooks/useHomepage.js +18 -0
  962. package/dist/features/homepage/hooks/useHomepageReviews.d.ts +7 -0
  963. package/dist/features/homepage/hooks/useHomepageReviews.js +16 -0
  964. package/dist/features/homepage/hooks/useHomepageSections.d.ts +2 -0
  965. package/dist/features/homepage/hooks/useHomepageSections.js +11 -0
  966. package/dist/features/homepage/hooks/useNewsletter.d.ts +14 -0
  967. package/dist/features/homepage/hooks/useNewsletter.js +10 -0
  968. package/dist/features/homepage/hooks/useTopBrands.d.ts +2 -0
  969. package/dist/features/homepage/hooks/useTopBrands.js +12 -0
  970. package/dist/features/homepage/hooks/useTopCategories.d.ts +4 -0
  971. package/dist/features/homepage/hooks/useTopCategories.js +13 -0
  972. package/dist/features/homepage/index.d.ts +13 -846
  973. package/dist/features/homepage/index.js +13 -6279
  974. package/dist/features/homepage/manifest.d.ts +2 -0
  975. package/dist/features/homepage/manifest.js +14 -0
  976. package/dist/features/homepage/messages/en.json +6 -0
  977. package/dist/features/homepage/repository/carousel.repository.d.ts +101 -0
  978. package/dist/features/homepage/repository/carousel.repository.js +252 -0
  979. package/dist/features/homepage/repository/homepage-sections.repository.d.ts +27 -0
  980. package/dist/features/homepage/repository/homepage-sections.repository.js +174 -0
  981. package/dist/features/homepage/repository/homepage.repository.d.ts +11 -0
  982. package/dist/features/homepage/repository/homepage.repository.js +25 -0
  983. package/dist/features/homepage/schemas/firestore.d.ts +251 -0
  984. package/dist/features/homepage/schemas/firestore.js +83 -0
  985. package/dist/features/homepage/schemas/index.d.ts +1 -0
  986. package/dist/features/homepage/schemas/index.js +1 -0
  987. package/dist/features/homepage/server.d.ts +10 -121
  988. package/dist/features/homepage/server.js +10 -1024
  989. package/dist/features/homepage/types/index.d.ts +163 -0
  990. package/dist/features/homepage/types/index.js +1 -0
  991. package/dist/features/layout/AutoBreadcrumbs.d.ts +15 -0
  992. package/dist/features/layout/AutoBreadcrumbs.js +84 -0
  993. package/dist/features/layout/BackToTop.d.ts +16 -0
  994. package/dist/features/layout/BackToTop.js +26 -0
  995. package/dist/features/layout/BottomActions.d.ts +1 -0
  996. package/dist/features/layout/BottomActions.js +153 -0
  997. package/dist/features/layout/BottomActionsContext.d.ts +107 -0
  998. package/dist/features/layout/BottomActionsContext.js +114 -0
  999. package/dist/features/layout/BottomNavItem.d.ts +28 -0
  1000. package/dist/features/layout/BottomNavItem.js +28 -0
  1001. package/dist/features/layout/BottomNavLayout.d.ts +14 -0
  1002. package/dist/features/layout/BottomNavLayout.js +12 -0
  1003. package/dist/features/layout/BottomNavbar.d.ts +46 -0
  1004. package/dist/features/layout/BottomNavbar.js +19 -0
  1005. package/dist/features/layout/BottomSheet.d.ts +29 -0
  1006. package/dist/features/layout/BottomSheet.js +40 -0
  1007. package/dist/features/layout/Breadcrumbs.d.ts +26 -0
  1008. package/dist/features/layout/Breadcrumbs.js +25 -0
  1009. package/dist/features/layout/DashboardNavContext.d.ts +19 -0
  1010. package/dist/features/layout/DashboardNavContext.js +36 -0
  1011. package/dist/features/layout/FooterLayout.d.ts +39 -0
  1012. package/dist/features/layout/FooterLayout.js +12 -0
  1013. package/dist/features/layout/LayoutClient.d.ts +11 -0
  1014. package/dist/features/layout/LayoutClient.js +7 -0
  1015. package/dist/features/layout/ListingLayout.d.ts +35 -0
  1016. package/dist/features/layout/ListingLayout.js +104 -0
  1017. package/dist/features/layout/LocaleSwitcher.d.ts +22 -0
  1018. package/dist/features/layout/LocaleSwitcher.js +12 -0
  1019. package/dist/features/layout/MainNavbar.d.ts +32 -0
  1020. package/dist/features/layout/MainNavbar.js +29 -0
  1021. package/dist/features/layout/NavItem.d.ts +19 -0
  1022. package/dist/features/layout/NavItem.js +35 -0
  1023. package/dist/features/layout/NavbarLayout.d.ts +27 -0
  1024. package/dist/features/layout/NavbarLayout.js +23 -0
  1025. package/dist/features/layout/SidebarLayout.d.ts +24 -0
  1026. package/dist/features/layout/SidebarLayout.js +29 -0
  1027. package/dist/features/layout/TitleBar.d.ts +18 -0
  1028. package/dist/features/layout/TitleBar.js +19 -0
  1029. package/dist/features/layout/TitleBarLayout.d.ts +48 -0
  1030. package/dist/features/layout/TitleBarLayout.js +17 -0
  1031. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  1032. package/dist/features/layout/hooks/useBottomActions.js +28 -0
  1033. package/dist/features/layout/index.d.ts +41 -315
  1034. package/dist/features/layout/index.js +23 -1745
  1035. package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +12 -0
  1036. package/dist/features/loyalty/api/admin/loyalty/grant/route.js +36 -0
  1037. package/dist/features/loyalty/api/balance/route.d.ts +12 -0
  1038. package/dist/features/loyalty/api/balance/route.js +39 -0
  1039. package/dist/features/loyalty/api/earn/route.d.ts +12 -0
  1040. package/dist/features/loyalty/api/earn/route.js +36 -0
  1041. package/dist/features/loyalty/api/history/route.d.ts +12 -0
  1042. package/dist/features/loyalty/api/history/route.js +56 -0
  1043. package/dist/features/loyalty/api/redeem/route.d.ts +12 -0
  1044. package/dist/features/loyalty/api/redeem/route.js +36 -0
  1045. package/dist/features/loyalty/columns/index.d.ts +17 -0
  1046. package/dist/features/loyalty/columns/index.js +40 -0
  1047. package/dist/features/loyalty/components/CoinsDisplay.d.ts +11 -0
  1048. package/dist/features/loyalty/components/CoinsDisplay.js +9 -0
  1049. package/dist/features/loyalty/components/index.d.ts +1 -0
  1050. package/dist/features/loyalty/components/index.js +1 -0
  1051. package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +4 -0
  1052. package/dist/features/loyalty/hooks/useLoyaltyBalance.js +18 -0
  1053. package/dist/features/loyalty/index.d.ts +6 -174
  1054. package/dist/features/loyalty/index.js +6 -332
  1055. package/dist/features/loyalty/manifest.d.ts +2 -0
  1056. package/dist/features/loyalty/manifest.js +16 -0
  1057. package/dist/features/loyalty/messages/en.json +19 -0
  1058. package/dist/features/loyalty/repository/loyalty.repository.d.ts +8 -0
  1059. package/dist/features/loyalty/repository/loyalty.repository.js +22 -0
  1060. package/dist/features/loyalty/schemas/index.d.ts +85 -0
  1061. package/dist/features/loyalty/schemas/index.js +40 -0
  1062. package/dist/features/loyalty/server.d.ts +7 -0
  1063. package/dist/features/loyalty/server.js +7 -0
  1064. package/dist/features/loyalty/types/index.d.ts +31 -0
  1065. package/dist/features/loyalty/types/index.js +1 -0
  1066. package/dist/features/loyalty/types/loyalty-config.d.ts +7 -0
  1067. package/dist/features/loyalty/types/loyalty-config.js +1 -0
  1068. package/dist/features/loyalty/types/loyalty-math.d.ts +9 -0
  1069. package/dist/features/loyalty/types/loyalty-math.js +27 -0
  1070. package/dist/features/media/AvatarUpload.d.ts +22 -0
  1071. package/dist/features/media/AvatarUpload.js +133 -0
  1072. package/dist/features/media/MediaAvatar.d.ts +12 -0
  1073. package/dist/features/media/MediaAvatar.js +13 -0
  1074. package/dist/features/media/MediaImage.d.ts +28 -0
  1075. package/dist/features/media/MediaImage.js +35 -0
  1076. package/dist/features/media/MediaLightbox.d.ts +32 -0
  1077. package/dist/features/media/MediaLightbox.js +245 -0
  1078. package/dist/features/media/MediaVideo.d.ts +22 -0
  1079. package/dist/features/media/MediaVideo.js +38 -0
  1080. package/dist/features/media/components/MediaSlider.d.ts +10 -0
  1081. package/dist/features/media/components/MediaSlider.js +12 -0
  1082. package/dist/features/media/finalize.d.ts +11 -0
  1083. package/dist/features/media/finalize.js +70 -0
  1084. package/dist/features/media/hooks/useMedia.d.ts +198 -0
  1085. package/dist/features/media/hooks/useMedia.js +78 -0
  1086. package/dist/features/media/index.d.ts +30 -425
  1087. package/dist/features/media/index.js +21 -3593
  1088. package/dist/features/media/messages/en.json +63 -0
  1089. package/dist/features/media/modals/ImageCropModal.d.ts +16 -0
  1090. package/dist/features/media/modals/ImageCropModal.js +99 -0
  1091. package/dist/features/media/modals/VideoThumbnailSelector.d.ts +10 -0
  1092. package/dist/features/media/modals/VideoThumbnailSelector.js +51 -0
  1093. package/dist/features/media/modals/VideoTrimModal.d.ts +11 -0
  1094. package/dist/features/media/modals/VideoTrimModal.js +73 -0
  1095. package/dist/features/media/server.d.ts +2 -0
  1096. package/dist/features/media/server.js +2 -0
  1097. package/dist/features/media/types/index.d.ts +29 -0
  1098. package/dist/features/media/types/index.js +43 -0
  1099. package/dist/features/media/upload/CameraCapture.d.ts +8 -0
  1100. package/dist/features/media/upload/CameraCapture.js +59 -0
  1101. package/dist/features/media/upload/ImageUpload.d.ts +14 -0
  1102. package/dist/features/media/upload/ImageUpload.js +132 -0
  1103. package/dist/features/media/upload/MediaUploadField.d.ts +31 -0
  1104. package/dist/features/media/upload/MediaUploadField.js +204 -0
  1105. package/dist/features/media/upload/MediaUploadList.d.ts +26 -0
  1106. package/dist/features/media/upload/MediaUploadList.js +104 -0
  1107. package/dist/features/orders/actions/index.d.ts +2 -0
  1108. package/dist/features/orders/actions/index.js +2 -0
  1109. package/dist/features/orders/actions/order-actions.d.ts +16 -0
  1110. package/dist/features/orders/actions/order-actions.js +46 -0
  1111. package/dist/features/orders/actions/refund-actions.d.ts +16 -0
  1112. package/dist/features/orders/actions/refund-actions.js +88 -0
  1113. package/dist/features/orders/api/track/[trackingId]/route.d.ts +17 -0
  1114. package/dist/features/orders/api/track/[trackingId]/route.js +30 -0
  1115. package/dist/features/orders/columns/index.d.ts +15 -0
  1116. package/dist/features/orders/columns/index.js +34 -0
  1117. package/dist/features/orders/components/MarketplaceOrderCard.d.ts +37 -0
  1118. package/dist/features/orders/components/MarketplaceOrderCard.js +52 -0
  1119. package/dist/features/orders/components/OrderFilters.d.ts +82 -0
  1120. package/dist/features/orders/components/OrderFilters.js +106 -0
  1121. package/dist/features/orders/components/OrdersList.d.ts +18 -0
  1122. package/dist/features/orders/components/OrdersList.js +37 -0
  1123. package/dist/features/orders/components/index.d.ts +4 -0
  1124. package/dist/features/orders/components/index.js +3 -0
  1125. package/dist/features/orders/hooks/useOrders.d.ts +32 -0
  1126. package/dist/features/orders/hooks/useOrders.js +57 -0
  1127. package/dist/features/orders/index.d.ts +7 -370
  1128. package/dist/features/orders/index.js +7 -863
  1129. package/dist/features/orders/manifest.d.ts +2 -0
  1130. package/dist/features/orders/manifest.js +18 -0
  1131. package/dist/features/orders/messages/en.json +15 -0
  1132. package/dist/features/orders/repository/orders.repository.d.ts +188 -0
  1133. package/dist/features/orders/repository/orders.repository.js +300 -0
  1134. package/dist/features/orders/schemas/firestore.d.ts +129 -0
  1135. package/dist/features/orders/schemas/firestore.js +96 -0
  1136. package/dist/features/orders/schemas/index.d.ts +217 -0
  1137. package/dist/features/orders/schemas/index.js +76 -0
  1138. package/dist/features/orders/server.d.ts +9 -0
  1139. package/dist/features/orders/server.js +10 -0
  1140. package/dist/features/orders/types/index.d.ts +69 -0
  1141. package/dist/features/orders/types/index.js +2 -0
  1142. package/dist/features/orders/utils/order-splitter.d.ts +14 -0
  1143. package/dist/features/orders/utils/order-splitter.js +29 -0
  1144. package/dist/features/payments/columns/index.d.ts +17 -0
  1145. package/dist/features/payments/columns/index.js +45 -0
  1146. package/dist/features/payments/hooks/usePaymentEvent.d.ts +17 -0
  1147. package/dist/features/payments/hooks/usePaymentEvent.js +26 -0
  1148. package/dist/features/payments/hooks/usePayments.d.ts +10 -0
  1149. package/dist/features/payments/hooks/usePayments.js +19 -0
  1150. package/dist/features/payments/index.d.ts +6 -141
  1151. package/dist/features/payments/index.js +6 -331
  1152. package/dist/features/payments/manifest.d.ts +2 -0
  1153. package/dist/features/payments/manifest.js +12 -0
  1154. package/dist/features/payments/messages/en.json +11 -0
  1155. package/dist/features/payments/repository/payments.repository.d.ts +15 -0
  1156. package/dist/features/payments/repository/payments.repository.js +36 -0
  1157. package/dist/features/payments/repository/payout.repository.d.ts +111 -0
  1158. package/dist/features/payments/repository/payout.repository.js +202 -0
  1159. package/dist/features/payments/schemas/firestore.d.ts +74 -0
  1160. package/dist/features/payments/schemas/firestore.js +65 -0
  1161. package/dist/features/payments/schemas/index.d.ts +77 -0
  1162. package/dist/features/payments/schemas/index.js +67 -0
  1163. package/dist/features/payments/server.d.ts +8 -0
  1164. package/dist/features/payments/server.js +8 -0
  1165. package/dist/features/payments/types/index.d.ts +36 -0
  1166. package/dist/features/payments/types/index.js +2 -0
  1167. package/dist/features/pre-orders/api/[id]/route.d.ts +26 -0
  1168. package/dist/features/pre-orders/api/[id]/route.js +88 -0
  1169. package/dist/features/pre-orders/api/[slug]/route.d.ts +16 -0
  1170. package/dist/features/pre-orders/api/[slug]/route.js +41 -0
  1171. package/dist/features/pre-orders/api/admin/[id]/route.d.ts +21 -0
  1172. package/dist/features/pre-orders/api/admin/[id]/route.js +65 -0
  1173. package/dist/features/pre-orders/api/admin/route.d.ts +12 -0
  1174. package/dist/features/pre-orders/api/admin/route.js +56 -0
  1175. package/dist/features/pre-orders/api/route.d.ts +13 -0
  1176. package/dist/features/pre-orders/api/route.js +77 -0
  1177. package/dist/features/pre-orders/columns/index.d.ts +17 -0
  1178. package/dist/features/pre-orders/columns/index.js +68 -0
  1179. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +24 -0
  1180. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +53 -0
  1181. package/dist/features/pre-orders/components/PreOrderBadge.d.ts +14 -0
  1182. package/dist/features/pre-orders/components/PreOrderBadge.js +17 -0
  1183. package/dist/features/pre-orders/components/PreorderCard.d.ts +12 -0
  1184. package/dist/features/pre-orders/components/PreorderCard.js +27 -0
  1185. package/dist/features/pre-orders/components/index.d.ts +2 -0
  1186. package/dist/features/pre-orders/components/index.js +2 -0
  1187. package/dist/features/pre-orders/hooks/usePreOrders.d.ts +7 -0
  1188. package/dist/features/pre-orders/hooks/usePreOrders.js +34 -0
  1189. package/dist/features/pre-orders/index.d.ts +6 -170
  1190. package/dist/features/pre-orders/index.js +6 -538
  1191. package/dist/features/pre-orders/manifest.d.ts +2 -0
  1192. package/dist/features/pre-orders/manifest.js +17 -0
  1193. package/dist/features/pre-orders/messages/en.json +13 -0
  1194. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +14 -0
  1195. package/dist/features/pre-orders/repository/pre-orders.repository.js +44 -0
  1196. package/dist/features/pre-orders/repository/preorders.repository.d.ts +8 -0
  1197. package/dist/features/pre-orders/repository/preorders.repository.js +21 -0
  1198. package/dist/features/pre-orders/schemas/index.d.ts +79 -0
  1199. package/dist/features/pre-orders/schemas/index.js +27 -0
  1200. package/dist/features/pre-orders/server.d.ts +5 -14
  1201. package/dist/features/pre-orders/server.js +8 -106
  1202. package/dist/features/pre-orders/types/index.d.ts +29 -0
  1203. package/dist/features/pre-orders/types/index.js +12 -0
  1204. package/dist/features/products/actions/index.d.ts +1 -0
  1205. package/dist/features/products/actions/index.js +1 -0
  1206. package/dist/features/products/actions/product-actions.d.ts +26 -0
  1207. package/dist/features/products/actions/product-actions.js +111 -0
  1208. package/dist/features/products/api/[id]/route.d.ts +29 -0
  1209. package/dist/features/products/api/[id]/route.js +137 -0
  1210. package/dist/features/products/api/route.d.ts +19 -0
  1211. package/dist/features/products/api/route.js +214 -0
  1212. package/dist/features/products/columns/index.d.ts +64 -0
  1213. package/dist/features/products/columns/index.js +85 -0
  1214. package/dist/features/products/columns/productTableColumns.d.ts +27 -0
  1215. package/dist/features/products/columns/productTableColumns.js +88 -0
  1216. package/dist/features/products/components/AuctionDetailView.d.ts +13 -0
  1217. package/dist/features/products/components/AuctionDetailView.js +9 -0
  1218. package/dist/features/products/components/AuctionsView.d.ts +6 -0
  1219. package/dist/features/products/components/AuctionsView.js +5 -0
  1220. package/dist/features/products/components/BidHistory.d.ts +28 -0
  1221. package/dist/features/products/components/BidHistory.js +18 -0
  1222. package/dist/features/products/components/BuyBar.d.ts +21 -0
  1223. package/dist/features/products/components/BuyBar.js +20 -0
  1224. package/dist/features/products/components/InteractiveProductCard.d.ts +19 -0
  1225. package/dist/features/products/components/InteractiveProductCard.js +18 -0
  1226. package/dist/features/products/components/MakeOfferForm.d.ts +20 -0
  1227. package/dist/features/products/components/MakeOfferForm.js +8 -0
  1228. package/dist/features/products/components/PlaceBidForm.d.ts +20 -0
  1229. package/dist/features/products/components/PlaceBidForm.js +6 -0
  1230. package/dist/features/products/components/PreOrderDetailView.d.ts +14 -0
  1231. package/dist/features/products/components/PreOrderDetailView.js +9 -0
  1232. package/dist/features/products/components/PreOrdersView.d.ts +6 -0
  1233. package/dist/features/products/components/PreOrdersView.js +5 -0
  1234. package/dist/features/products/components/ProductDetailView.d.ts +11 -0
  1235. package/dist/features/products/components/ProductDetailView.js +9 -0
  1236. package/dist/features/products/components/ProductFeatureBadges.d.ts +32 -0
  1237. package/dist/features/products/components/ProductFeatureBadges.js +103 -0
  1238. package/dist/features/products/components/ProductFilters.d.ts +90 -0
  1239. package/dist/features/products/components/ProductFilters.js +105 -0
  1240. package/dist/features/products/components/ProductForm.d.ts +47 -0
  1241. package/dist/features/products/components/ProductForm.js +120 -0
  1242. package/dist/features/products/components/ProductGrid.d.ts +69 -0
  1243. package/dist/features/products/components/ProductGrid.js +92 -0
  1244. package/dist/features/products/components/ProductInfo.d.ts +20 -0
  1245. package/dist/features/products/components/ProductInfo.js +4 -0
  1246. package/dist/features/products/components/ProductTabs.d.ts +21 -0
  1247. package/dist/features/products/components/ProductTabs.js +22 -0
  1248. package/dist/features/products/components/ProductsView.d.ts +6 -0
  1249. package/dist/features/products/components/ProductsView.js +5 -0
  1250. package/dist/features/products/components/RelatedProducts.d.ts +16 -0
  1251. package/dist/features/products/components/RelatedProducts.js +12 -0
  1252. package/dist/features/products/components/index.d.ts +34 -0
  1253. package/dist/features/products/components/index.js +18 -0
  1254. package/dist/features/products/hooks/useBrands.d.ts +9 -0
  1255. package/dist/features/products/hooks/useBrands.js +15 -0
  1256. package/dist/features/products/hooks/useProductDetail.d.ts +15 -0
  1257. package/dist/features/products/hooks/useProductDetail.js +29 -0
  1258. package/dist/features/products/hooks/useProducts.d.ts +43 -0
  1259. package/dist/features/products/hooks/useProducts.js +67 -0
  1260. package/dist/features/products/hooks/useRelatedProducts.d.ts +2 -0
  1261. package/dist/features/products/hooks/useRelatedProducts.js +17 -0
  1262. package/dist/features/products/index.d.ts +10 -1066
  1263. package/dist/features/products/index.js +10 -2475
  1264. package/dist/features/products/manifest.d.ts +2 -0
  1265. package/dist/features/products/manifest.js +16 -0
  1266. package/dist/features/products/messages/en.json +11 -0
  1267. package/dist/features/products/repository/products.repository.d.ts +213 -0
  1268. package/dist/features/products/repository/products.repository.js +300 -0
  1269. package/dist/features/products/schemas/firestore.d.ts +125 -0
  1270. package/dist/features/products/schemas/firestore.js +149 -0
  1271. package/dist/features/products/schemas/index.d.ts +400 -0
  1272. package/dist/features/products/schemas/index.js +173 -0
  1273. package/dist/features/products/server.d.ts +7 -49
  1274. package/dist/features/products/server.js +10 -803
  1275. package/dist/features/products/types/index.d.ts +122 -0
  1276. package/dist/features/products/types/index.js +1 -0
  1277. package/dist/features/products/utils/listing-type.d.ts +2 -0
  1278. package/dist/features/products/utils/listing-type.js +9 -0
  1279. package/dist/features/promotions/actions/coupon-actions.d.ts +28 -0
  1280. package/dist/features/promotions/actions/coupon-actions.js +23 -0
  1281. package/dist/features/promotions/actions/index.d.ts +3 -0
  1282. package/dist/features/promotions/actions/index.js +3 -0
  1283. package/dist/features/promotions/actions/promotions-actions.d.ts +18 -0
  1284. package/dist/features/promotions/actions/promotions-actions.js +37 -0
  1285. package/dist/features/promotions/actions/seller-coupon-actions.d.ts +41 -0
  1286. package/dist/features/promotions/actions/seller-coupon-actions.js +92 -0
  1287. package/dist/features/promotions/api/route.d.ts +21 -0
  1288. package/dist/features/promotions/api/route.js +85 -0
  1289. package/dist/features/promotions/columns/index.d.ts +12 -0
  1290. package/dist/features/promotions/columns/index.js +45 -0
  1291. package/dist/features/promotions/components/CouponCard.d.ts +16 -0
  1292. package/dist/features/promotions/components/CouponCard.js +20 -0
  1293. package/dist/features/promotions/components/PromotionsView.d.ts +43 -0
  1294. package/dist/features/promotions/components/PromotionsView.js +10 -0
  1295. package/dist/features/promotions/components/index.d.ts +3 -0
  1296. package/dist/features/promotions/components/index.js +2 -0
  1297. package/dist/features/promotions/hooks/useCouponValidate.d.ts +22 -0
  1298. package/dist/features/promotions/hooks/useCouponValidate.js +10 -0
  1299. package/dist/features/promotions/hooks/usePromotions.d.ts +21 -0
  1300. package/dist/features/promotions/hooks/usePromotions.js +49 -0
  1301. package/dist/features/promotions/index.d.ts +7 -301
  1302. package/dist/features/promotions/index.js +7 -957
  1303. package/dist/features/promotions/manifest.d.ts +2 -0
  1304. package/dist/features/promotions/manifest.js +14 -0
  1305. package/dist/features/promotions/messages/en.json +20 -0
  1306. package/dist/features/promotions/repository/coupons.repository.d.ts +224 -0
  1307. package/dist/features/promotions/repository/coupons.repository.js +539 -0
  1308. package/dist/features/promotions/repository/promotions.repository.d.ts +14 -0
  1309. package/dist/features/promotions/repository/promotions.repository.js +43 -0
  1310. package/dist/features/promotions/schemas/firestore.d.ts +105 -0
  1311. package/dist/features/promotions/schemas/firestore.js +124 -0
  1312. package/dist/features/promotions/schemas/index.d.ts +117 -0
  1313. package/dist/features/promotions/schemas/index.js +58 -0
  1314. package/dist/features/promotions/server.d.ts +10 -0
  1315. package/dist/features/promotions/server.js +10 -0
  1316. package/dist/features/promotions/types/index.d.ts +51 -0
  1317. package/dist/features/promotions/types/index.js +2 -0
  1318. package/dist/features/reviews/actions/index.d.ts +1 -0
  1319. package/dist/features/reviews/actions/index.js +1 -0
  1320. package/dist/features/reviews/actions/review-actions.d.ts +40 -0
  1321. package/dist/features/reviews/actions/review-actions.js +182 -0
  1322. package/dist/features/reviews/api/[id]/route.d.ts +23 -0
  1323. package/dist/features/reviews/api/[id]/route.js +109 -0
  1324. package/dist/features/reviews/api/route.d.ts +21 -0
  1325. package/dist/features/reviews/api/route.js +171 -0
  1326. package/dist/features/reviews/columns/index.d.ts +15 -0
  1327. package/dist/features/reviews/columns/index.js +44 -0
  1328. package/dist/features/reviews/components/ReviewFilters.d.ts +74 -0
  1329. package/dist/features/reviews/components/ReviewFilters.js +60 -0
  1330. package/dist/features/reviews/components/ReviewModal.d.ts +11 -0
  1331. package/dist/features/reviews/components/ReviewModal.js +25 -0
  1332. package/dist/features/reviews/components/ReviewSummary.d.ts +16 -0
  1333. package/dist/features/reviews/components/ReviewSummary.js +20 -0
  1334. package/dist/features/reviews/components/ReviewsList.d.ts +15 -0
  1335. package/dist/features/reviews/components/ReviewsList.js +25 -0
  1336. package/dist/features/reviews/components/ReviewsListView.d.ts +31 -0
  1337. package/dist/features/reviews/components/ReviewsListView.js +16 -0
  1338. package/dist/features/reviews/components/index.d.ts +10 -0
  1339. package/dist/features/reviews/components/index.js +5 -0
  1340. package/dist/features/reviews/hooks/useCreateReview.d.ts +12 -0
  1341. package/dist/features/reviews/hooks/useCreateReview.js +20 -0
  1342. package/dist/features/reviews/hooks/useReviews.d.ts +34 -0
  1343. package/dist/features/reviews/hooks/useReviews.js +49 -0
  1344. package/dist/features/reviews/index.d.ts +7 -434
  1345. package/dist/features/reviews/index.js +7 -2297
  1346. package/dist/features/reviews/manifest.d.ts +2 -0
  1347. package/dist/features/reviews/manifest.js +10 -0
  1348. package/dist/features/reviews/messages/en.json +10 -0
  1349. package/dist/features/reviews/repository/reviews.repository.d.ts +103 -0
  1350. package/dist/features/reviews/repository/reviews.repository.js +214 -0
  1351. package/dist/features/reviews/schemas/firestore.d.ts +67 -0
  1352. package/dist/features/reviews/schemas/firestore.js +59 -0
  1353. package/dist/features/reviews/schemas/index.d.ts +183 -0
  1354. package/dist/features/reviews/schemas/index.js +68 -0
  1355. package/dist/features/reviews/server.d.ts +7 -46
  1356. package/dist/features/reviews/server.js +10 -769
  1357. package/dist/features/reviews/types/index.d.ts +62 -0
  1358. package/dist/features/reviews/types/index.js +1 -0
  1359. package/dist/features/search/actions/index.d.ts +1 -0
  1360. package/dist/features/search/actions/index.js +1 -0
  1361. package/dist/features/search/actions/search-actions.d.ts +18 -0
  1362. package/dist/features/search/actions/search-actions.js +43 -0
  1363. package/dist/features/search/api/route.d.ts +22 -0
  1364. package/dist/features/search/api/route.js +79 -0
  1365. package/dist/features/search/columns/index.d.ts +17 -0
  1366. package/dist/features/search/columns/index.js +49 -0
  1367. package/dist/features/search/components/Search.d.ts +41 -0
  1368. package/dist/features/search/components/Search.js +263 -0
  1369. package/dist/features/search/components/SearchFiltersRow.d.ts +22 -0
  1370. package/dist/features/search/components/SearchFiltersRow.js +21 -0
  1371. package/dist/features/search/components/SearchResultsSection.d.ts +53 -0
  1372. package/dist/features/search/components/SearchResultsSection.js +36 -0
  1373. package/dist/features/search/components/SearchView.d.ts +29 -0
  1374. package/dist/features/search/components/SearchView.js +8 -0
  1375. package/dist/features/search/components/index.d.ts +8 -0
  1376. package/dist/features/search/components/index.js +4 -0
  1377. package/dist/features/search/hooks/useNavSuggestions.d.ts +11 -0
  1378. package/dist/features/search/hooks/useNavSuggestions.js +32 -0
  1379. package/dist/features/search/hooks/useSearch.d.ts +21 -0
  1380. package/dist/features/search/hooks/useSearch.js +34 -0
  1381. package/dist/features/search/index.d.ts +7 -298
  1382. package/dist/features/search/index.js +7 -1351
  1383. package/dist/features/search/manifest.d.ts +2 -0
  1384. package/dist/features/search/manifest.js +10 -0
  1385. package/dist/features/search/messages/en.json +15 -0
  1386. package/dist/features/search/repository/search.repository.d.ts +14 -0
  1387. package/dist/features/search/repository/search.repository.js +59 -0
  1388. package/dist/features/search/schemas/index.d.ts +70 -0
  1389. package/dist/features/search/schemas/index.js +34 -0
  1390. package/dist/features/search/server.d.ts +5 -83
  1391. package/dist/features/search/server.js +5 -149
  1392. package/dist/features/search/types/index.d.ts +46 -0
  1393. package/dist/features/search/types/index.js +2 -0
  1394. package/dist/features/seller/actions/index.d.ts +2 -0
  1395. package/dist/features/seller/actions/index.js +2 -0
  1396. package/dist/features/seller/actions/offer-actions.d.ts +32 -0
  1397. package/dist/features/seller/actions/offer-actions.js +266 -0
  1398. package/dist/features/seller/actions/seller-actions.d.ts +172 -0
  1399. package/dist/features/seller/actions/seller-actions.js +480 -0
  1400. package/dist/features/seller/api/coupons/route.d.ts +17 -0
  1401. package/dist/features/seller/api/coupons/route.js +47 -0
  1402. package/dist/features/seller/api/offers/route.d.ts +17 -0
  1403. package/dist/features/seller/api/offers/route.js +63 -0
  1404. package/dist/features/seller/api/products/route.d.ts +17 -0
  1405. package/dist/features/seller/api/products/route.js +64 -0
  1406. package/dist/features/seller/api/store/route.d.ts +17 -0
  1407. package/dist/features/seller/api/store/route.js +34 -0
  1408. package/dist/features/seller/columns/index.d.ts +22 -0
  1409. package/dist/features/seller/columns/index.js +73 -0
  1410. package/dist/features/seller/components/SellerAddressesView.d.ts +13 -0
  1411. package/dist/features/seller/components/SellerAddressesView.js +5 -0
  1412. package/dist/features/seller/components/SellerAnalyticsView.d.ts +13 -0
  1413. package/dist/features/seller/components/SellerAnalyticsView.js +17 -0
  1414. package/dist/features/seller/components/SellerAuctionsView.d.ts +6 -0
  1415. package/dist/features/seller/components/SellerAuctionsView.js +5 -0
  1416. package/dist/features/seller/components/SellerCouponsView.d.ts +6 -0
  1417. package/dist/features/seller/components/SellerCouponsView.js +5 -0
  1418. package/dist/features/seller/components/SellerCreateProductView.d.ts +11 -0
  1419. package/dist/features/seller/components/SellerCreateProductView.js +5 -0
  1420. package/dist/features/seller/components/SellerDashboardView.d.ts +14 -0
  1421. package/dist/features/seller/components/SellerDashboardView.js +11 -0
  1422. package/dist/features/seller/components/SellerEditProductView.d.ts +11 -0
  1423. package/dist/features/seller/components/SellerEditProductView.js +5 -0
  1424. package/dist/features/seller/components/SellerGuideView.d.ts +12 -0
  1425. package/dist/features/seller/components/SellerGuideView.js +5 -0
  1426. package/dist/features/seller/components/SellerOffersView.d.ts +4 -0
  1427. package/dist/features/seller/components/SellerOffersView.js +5 -0
  1428. package/dist/features/seller/components/SellerOrdersView.d.ts +4 -0
  1429. package/dist/features/seller/components/SellerOrdersView.js +5 -0
  1430. package/dist/features/seller/components/SellerPayoutHistoryTable.d.ts +14 -0
  1431. package/dist/features/seller/components/SellerPayoutHistoryTable.js +10 -0
  1432. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +11 -0
  1433. package/dist/features/seller/components/SellerPayoutSettingsView.js +5 -0
  1434. package/dist/features/seller/components/SellerPayoutStats.d.ts +8 -0
  1435. package/dist/features/seller/components/SellerPayoutStats.js +9 -0
  1436. package/dist/features/seller/components/SellerPayoutsView.d.ts +18 -0
  1437. package/dist/features/seller/components/SellerPayoutsView.js +11 -0
  1438. package/dist/features/seller/components/SellerProductsView.d.ts +6 -0
  1439. package/dist/features/seller/components/SellerProductsView.js +5 -0
  1440. package/dist/features/seller/components/SellerShippingView.d.ts +12 -0
  1441. package/dist/features/seller/components/SellerShippingView.js +5 -0
  1442. package/dist/features/seller/components/SellerSidebar.d.ts +16 -0
  1443. package/dist/features/seller/components/SellerSidebar.js +11 -0
  1444. package/dist/features/seller/components/SellerStatCard.d.ts +14 -0
  1445. package/dist/features/seller/components/SellerStatCard.js +5 -0
  1446. package/dist/features/seller/components/SellerStoreSetupView.d.ts +12 -0
  1447. package/dist/features/seller/components/SellerStoreSetupView.js +8 -0
  1448. package/dist/features/seller/components/SellerStoreView.d.ts +8 -0
  1449. package/dist/features/seller/components/SellerStoreView.js +8 -0
  1450. package/dist/features/seller/components/SellerStorefrontView.d.ts +13 -0
  1451. package/dist/features/seller/components/SellerStorefrontView.js +10 -0
  1452. package/dist/features/seller/components/SellersListView.d.ts +4 -0
  1453. package/dist/features/seller/components/SellersListView.js +5 -0
  1454. package/dist/features/seller/components/analytics/SellerAnalyticsStats.d.ts +14 -0
  1455. package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +9 -0
  1456. package/dist/features/seller/components/analytics/SellerRevenueChart.d.ts +13 -0
  1457. package/dist/features/seller/components/analytics/SellerRevenueChart.js +28 -0
  1458. package/dist/features/seller/components/analytics/SellerTopProducts.d.ts +17 -0
  1459. package/dist/features/seller/components/analytics/SellerTopProducts.js +6 -0
  1460. package/dist/features/seller/components/analytics/index.d.ts +3 -0
  1461. package/dist/features/seller/components/analytics/index.js +3 -0
  1462. package/dist/features/seller/components/index.d.ts +44 -0
  1463. package/dist/features/seller/components/index.js +23 -0
  1464. package/dist/features/seller/hooks/useBecomeSeller.d.ts +12 -0
  1465. package/dist/features/seller/hooks/useBecomeSeller.js +26 -0
  1466. package/dist/features/seller/hooks/useSellerPayouts.d.ts +25 -0
  1467. package/dist/features/seller/hooks/useSellerPayouts.js +42 -0
  1468. package/dist/features/seller/hooks/useSellerStore.d.ts +28 -0
  1469. package/dist/features/seller/hooks/useSellerStore.js +48 -0
  1470. package/dist/features/seller/hooks/useSellerStorefront.d.ts +16 -0
  1471. package/dist/features/seller/hooks/useSellerStorefront.js +57 -0
  1472. package/dist/features/seller/index.d.ts +10 -926
  1473. package/dist/features/seller/index.js +10 -2029
  1474. package/dist/features/seller/manifest.d.ts +2 -0
  1475. package/dist/features/seller/manifest.js +74 -0
  1476. package/dist/features/seller/messages/en.json +32 -0
  1477. package/dist/features/seller/permission-map.d.ts +3 -0
  1478. package/dist/features/seller/permission-map.js +15 -0
  1479. package/dist/features/seller/repository/offer.repository.d.ts +66 -0
  1480. package/dist/features/seller/repository/offer.repository.js +210 -0
  1481. package/dist/features/seller/repository/seller.repository.d.ts +22 -0
  1482. package/dist/features/seller/repository/seller.repository.js +72 -0
  1483. package/dist/features/seller/schemas/firestore.d.ts +76 -0
  1484. package/dist/features/seller/schemas/firestore.js +57 -0
  1485. package/dist/features/seller/schemas/index.d.ts +244 -0
  1486. package/dist/features/seller/schemas/index.js +100 -0
  1487. package/dist/features/seller/server.d.ts +13 -0
  1488. package/dist/features/seller/server.js +13 -0
  1489. package/dist/features/seller/types/index.d.ts +147 -0
  1490. package/dist/features/seller/types/index.js +2 -0
  1491. package/dist/features/stores/actions/index.d.ts +2 -0
  1492. package/dist/features/stores/actions/index.js +2 -0
  1493. package/dist/features/stores/actions/store-address-actions.d.ts +11 -0
  1494. package/dist/features/stores/actions/store-address-actions.js +54 -0
  1495. package/dist/features/stores/actions/store-query-actions.d.ts +34 -0
  1496. package/dist/features/stores/actions/store-query-actions.js +113 -0
  1497. package/dist/features/stores/api/[storeSlug]/auctions/route.d.ts +23 -0
  1498. package/dist/features/stores/api/[storeSlug]/auctions/route.js +92 -0
  1499. package/dist/features/stores/api/[storeSlug]/products/route.d.ts +23 -0
  1500. package/dist/features/stores/api/[storeSlug]/products/route.js +97 -0
  1501. package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +23 -0
  1502. package/dist/features/stores/api/[storeSlug]/reviews/route.js +101 -0
  1503. package/dist/features/stores/api/[storeSlug]/route.d.ts +21 -0
  1504. package/dist/features/stores/api/[storeSlug]/route.js +66 -0
  1505. package/dist/features/stores/api/route.d.ts +12 -0
  1506. package/dist/features/stores/api/route.js +101 -0
  1507. package/dist/features/stores/columns/index.d.ts +16 -0
  1508. package/dist/features/stores/columns/index.js +45 -0
  1509. package/dist/features/stores/components/InteractiveStoreCard.d.ts +20 -0
  1510. package/dist/features/stores/components/InteractiveStoreCard.js +16 -0
  1511. package/dist/features/stores/components/StoreAboutView.d.ts +21 -0
  1512. package/dist/features/stores/components/StoreAboutView.js +12 -0
  1513. package/dist/features/stores/components/StoreAddressSelectorCreate.d.ts +16 -0
  1514. package/dist/features/stores/components/StoreAddressSelectorCreate.js +40 -0
  1515. package/dist/features/stores/components/StoreAuctionsView.d.ts +17 -0
  1516. package/dist/features/stores/components/StoreAuctionsView.js +5 -0
  1517. package/dist/features/stores/components/StoreHeader.d.ts +15 -0
  1518. package/dist/features/stores/components/StoreHeader.js +8 -0
  1519. package/dist/features/stores/components/StoreNavTabs.d.ts +15 -0
  1520. package/dist/features/stores/components/StoreNavTabs.js +14 -0
  1521. package/dist/features/stores/components/StoreProductsView.d.ts +30 -0
  1522. package/dist/features/stores/components/StoreProductsView.js +11 -0
  1523. package/dist/features/stores/components/StoreReviewsView.d.ts +17 -0
  1524. package/dist/features/stores/components/StoreReviewsView.js +9 -0
  1525. package/dist/features/stores/components/StoresListView.d.ts +19 -0
  1526. package/dist/features/stores/components/StoresListView.js +24 -0
  1527. package/dist/features/stores/components/index.d.ts +16 -0
  1528. package/dist/features/stores/components/index.js +9 -0
  1529. package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +23 -0
  1530. package/dist/features/stores/hooks/useStoreAddressSelector.js +30 -0
  1531. package/dist/features/stores/hooks/useStores.d.ts +58 -0
  1532. package/dist/features/stores/hooks/useStores.js +96 -0
  1533. package/dist/features/stores/index.d.ts +7 -536
  1534. package/dist/features/stores/index.js +7 -1911
  1535. package/dist/features/stores/manifest.d.ts +2 -0
  1536. package/dist/features/stores/manifest.js +35 -0
  1537. package/dist/features/stores/messages/en.json +21 -0
  1538. package/dist/features/stores/repository/store-address.repository.d.ts +55 -0
  1539. package/dist/features/stores/repository/store-address.repository.js +188 -0
  1540. package/dist/features/stores/repository/store.repository.d.ts +67 -0
  1541. package/dist/features/stores/repository/store.repository.js +181 -0
  1542. package/dist/features/stores/repository/stores.repository.d.ts +11 -0
  1543. package/dist/features/stores/repository/stores.repository.js +34 -0
  1544. package/dist/features/stores/schemas/firestore.d.ts +117 -0
  1545. package/dist/features/stores/schemas/firestore.js +109 -0
  1546. package/dist/features/stores/schemas/index.d.ts +85 -0
  1547. package/dist/features/stores/schemas/index.js +48 -0
  1548. package/dist/features/stores/server.d.ts +12 -103
  1549. package/dist/features/stores/server.js +15 -444
  1550. package/dist/features/stores/types/index.d.ts +102 -0
  1551. package/dist/features/stores/types/index.js +2 -0
  1552. package/dist/features/whatsapp-bot/api/send-status/route.d.ts +12 -0
  1553. package/dist/features/whatsapp-bot/api/send-status/route.js +36 -0
  1554. package/dist/features/whatsapp-bot/api/webhook/route.d.ts +12 -0
  1555. package/dist/features/whatsapp-bot/api/webhook/route.js +41 -0
  1556. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.d.ts +8 -0
  1557. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +7 -0
  1558. package/dist/features/whatsapp-bot/components/index.d.ts +1 -0
  1559. package/dist/features/whatsapp-bot/components/index.js +1 -0
  1560. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +21 -0
  1561. package/dist/features/whatsapp-bot/helpers/whatsapp.js +125 -0
  1562. package/dist/features/whatsapp-bot/index.d.ts +3 -85
  1563. package/dist/features/whatsapp-bot/index.js +3 -154
  1564. package/dist/features/whatsapp-bot/manifest.d.ts +2 -0
  1565. package/dist/features/whatsapp-bot/manifest.js +13 -0
  1566. package/dist/features/whatsapp-bot/messages/en.json +7 -0
  1567. package/dist/features/whatsapp-bot/server.d.ts +7 -0
  1568. package/dist/features/whatsapp-bot/server.js +7 -0
  1569. package/dist/features/whatsapp-bot/types/index.d.ts +50 -0
  1570. package/dist/features/whatsapp-bot/types/index.js +1 -0
  1571. package/dist/features/wishlist/actions/index.d.ts +1 -0
  1572. package/dist/features/wishlist/actions/index.js +1 -0
  1573. package/dist/features/wishlist/actions/wishlist-actions.d.ts +20 -0
  1574. package/dist/features/wishlist/actions/wishlist-actions.js +29 -0
  1575. package/dist/features/wishlist/columns/index.d.ts +17 -0
  1576. package/dist/features/wishlist/columns/index.js +42 -0
  1577. package/dist/features/wishlist/components/WishlistPage.d.ts +16 -0
  1578. package/dist/features/wishlist/components/WishlistPage.js +17 -0
  1579. package/dist/features/wishlist/components/WishlistToggleButton.d.ts +12 -0
  1580. package/dist/features/wishlist/components/WishlistToggleButton.js +21 -0
  1581. package/dist/features/wishlist/components/WishlistView.d.ts +33 -0
  1582. package/dist/features/wishlist/components/WishlistView.js +41 -0
  1583. package/dist/features/wishlist/components/index.d.ts +4 -0
  1584. package/dist/features/wishlist/components/index.js +3 -0
  1585. package/dist/features/wishlist/hooks/useUserWishlist.d.ts +187 -0
  1586. package/dist/features/wishlist/hooks/useUserWishlist.js +17 -0
  1587. package/dist/features/wishlist/hooks/useWishlist.d.ts +16 -0
  1588. package/dist/features/wishlist/hooks/useWishlist.js +23 -0
  1589. package/dist/features/wishlist/hooks/useWishlistToggle.d.ts +10 -0
  1590. package/dist/features/wishlist/hooks/useWishlistToggle.js +32 -0
  1591. package/dist/features/wishlist/index.d.ts +9 -360
  1592. package/dist/features/wishlist/index.js +8 -888
  1593. package/dist/features/wishlist/manifest.d.ts +2 -0
  1594. package/dist/features/wishlist/manifest.js +12 -0
  1595. package/dist/features/wishlist/messages/en.json +7 -0
  1596. package/dist/features/wishlist/repository/user-wishlist.repository.d.ts +14 -0
  1597. package/dist/features/wishlist/repository/user-wishlist.repository.js +91 -0
  1598. package/dist/features/wishlist/repository/wishlist.repository.d.ts +13 -0
  1599. package/dist/features/wishlist/repository/wishlist.repository.js +31 -0
  1600. package/dist/features/wishlist/schemas/index.d.ts +46 -0
  1601. package/dist/features/wishlist/schemas/index.js +24 -0
  1602. package/dist/features/wishlist/server.d.ts +9 -0
  1603. package/dist/features/wishlist/server.js +9 -0
  1604. package/dist/features/wishlist/types/index.d.ts +16 -0
  1605. package/dist/features/wishlist/types/index.js +1 -0
  1606. package/dist/http/ApiClient.d.ts +59 -0
  1607. package/dist/http/ApiClient.js +149 -0
  1608. package/dist/http/api-handler.d.ts +33 -0
  1609. package/dist/http/api-handler.js +89 -0
  1610. package/dist/http/index.d.ts +6 -58
  1611. package/dist/http/index.js +8 -4
  1612. package/dist/index.d.ts +1 -17
  1613. package/dist/index.js +1 -13
  1614. package/dist/instrumentation/index.d.ts +4 -6
  1615. package/dist/instrumentation/index.js +54 -14
  1616. package/dist/monitoring/analytics.d.ts +79 -0
  1617. package/dist/monitoring/analytics.js +171 -0
  1618. package/dist/monitoring/browser.d.ts +10 -0
  1619. package/dist/monitoring/browser.js +6 -0
  1620. package/dist/monitoring/cache-metrics.d.ts +24 -0
  1621. package/dist/monitoring/cache-metrics.js +83 -0
  1622. package/dist/monitoring/client-logger.d.ts +29 -0
  1623. package/dist/monitoring/client-logger.js +127 -0
  1624. package/dist/monitoring/error-tracking.d.ts +50 -0
  1625. package/dist/monitoring/error-tracking.js +54 -0
  1626. package/dist/monitoring/index.d.ts +12 -181
  1627. package/dist/monitoring/index.js +7 -8
  1628. package/dist/monitoring/performance.d.ts +31 -0
  1629. package/dist/monitoring/performance.js +34 -0
  1630. package/dist/monitoring/runtime.d.ts +17 -0
  1631. package/dist/monitoring/runtime.js +28 -0
  1632. package/dist/monitoring/server-logger.d.ts +37 -0
  1633. package/dist/monitoring/server-logger.js +289 -0
  1634. package/dist/next/ErrorBoundary.d.ts +19 -0
  1635. package/dist/next/ErrorBoundary.js +35 -0
  1636. package/dist/next/IAuthVerifier.d.ts +54 -0
  1637. package/dist/next/IAuthVerifier.js +23 -0
  1638. package/dist/next/api/api-response.d.ts +29 -0
  1639. package/dist/next/api/api-response.js +31 -0
  1640. package/dist/next/api/apiHandler.d.ts +48 -0
  1641. package/dist/next/api/apiHandler.js +87 -0
  1642. package/dist/next/api/errorHandler.d.ts +57 -0
  1643. package/dist/next/api/errorHandler.js +72 -0
  1644. package/dist/next/api/routeHandler.d.ts +60 -0
  1645. package/dist/next/api/routeHandler.js +113 -0
  1646. package/dist/next/cache-middleware.d.ts +35 -0
  1647. package/dist/next/cache-middleware.js +77 -0
  1648. package/dist/next/components/ErrorView.d.ts +13 -0
  1649. package/dist/next/components/ErrorView.js +32 -0
  1650. package/dist/next/components/GlobalError.d.ts +7 -0
  1651. package/dist/next/components/GlobalError.js +43 -0
  1652. package/dist/next/components/NotFoundView.d.ts +28 -0
  1653. package/dist/next/components/NotFoundView.js +25 -0
  1654. package/dist/next/components/UnauthorizedView.d.ts +28 -0
  1655. package/dist/next/components/UnauthorizedView.js +22 -0
  1656. package/dist/next/index.d.ts +34 -776
  1657. package/dist/next/index.js +30 -646
  1658. package/dist/next/middleware/chain.d.ts +47 -0
  1659. package/dist/next/middleware/chain.js +80 -0
  1660. package/dist/next/middleware/index.d.ts +6 -0
  1661. package/dist/next/middleware/index.js +3 -0
  1662. package/dist/next/middleware/pii-redactor.d.ts +32 -0
  1663. package/dist/next/middleware/pii-redactor.js +82 -0
  1664. package/dist/next/middleware/pii-scrubber.d.ts +11 -0
  1665. package/dist/next/middleware/pii-scrubber.js +43 -0
  1666. package/dist/next/middleware/types.d.ts +18 -0
  1667. package/dist/next/middleware/types.js +1 -0
  1668. package/dist/next/request-helpers.d.ts +25 -0
  1669. package/dist/next/request-helpers.js +52 -0
  1670. package/dist/next/routing/route-map.d.ts +272 -0
  1671. package/dist/next/routing/route-map.js +202 -0
  1672. package/dist/providers/auth-firebase/browser-stub.d.ts +24 -0
  1673. package/dist/providers/auth-firebase/browser-stub.js +28 -0
  1674. package/dist/providers/auth-firebase/helpers.d.ts +83 -0
  1675. package/dist/providers/auth-firebase/helpers.js +205 -0
  1676. package/dist/providers/auth-firebase/index.d.ts +7 -133
  1677. package/dist/providers/auth-firebase/index.js +16 -370
  1678. package/dist/providers/auth-firebase/provider.d.ts +8 -0
  1679. package/dist/providers/auth-firebase/provider.js +118 -0
  1680. package/dist/providers/auth-firebase/session.d.ts +19 -0
  1681. package/dist/providers/auth-firebase/session.js +86 -0
  1682. package/dist/providers/db-firebase/admin-app-lite.d.ts +6 -0
  1683. package/dist/providers/db-firebase/admin-app-lite.js +50 -0
  1684. package/dist/providers/db-firebase/admin-auth-lite.d.ts +5 -0
  1685. package/dist/providers/db-firebase/admin-auth-lite.js +10 -0
  1686. package/dist/providers/db-firebase/admin-storage-lite.d.ts +6 -0
  1687. package/dist/providers/db-firebase/admin-storage-lite.js +11 -0
  1688. package/dist/providers/db-firebase/admin.d.ts +29 -0
  1689. package/dist/providers/db-firebase/admin.js +163 -0
  1690. package/dist/providers/db-firebase/base.d.ts +44 -0
  1691. package/dist/providers/db-firebase/base.js +180 -0
  1692. package/dist/providers/db-firebase/base.repository.d.ts +34 -0
  1693. package/dist/providers/db-firebase/base.repository.js +235 -0
  1694. package/dist/providers/db-firebase/browser-stub.d.ts +37 -0
  1695. package/dist/providers/db-firebase/browser-stub.js +56 -0
  1696. package/dist/providers/db-firebase/client-config.d.ts +22 -0
  1697. package/dist/providers/db-firebase/client-config.js +30 -0
  1698. package/dist/providers/db-firebase/field-ops.d.ts +7 -0
  1699. package/dist/providers/db-firebase/field-ops.js +13 -0
  1700. package/dist/providers/db-firebase/helpers.d.ts +23 -0
  1701. package/dist/providers/db-firebase/helpers.js +67 -0
  1702. package/dist/providers/db-firebase/index.d.ts +16 -250
  1703. package/dist/providers/db-firebase/index.js +42 -498
  1704. package/dist/providers/db-firebase/realtime.d.ts +43 -0
  1705. package/dist/providers/db-firebase/realtime.js +122 -0
  1706. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  1707. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  1708. package/dist/providers/db-firebase/sieve.d.ts +76 -0
  1709. package/dist/providers/db-firebase/sieve.js +83 -0
  1710. package/dist/providers/email-resend/index.d.ts +6 -64
  1711. package/dist/providers/email-resend/index.js +14 -56
  1712. package/dist/providers/email-resend/provider.d.ts +43 -0
  1713. package/dist/providers/email-resend/provider.js +75 -0
  1714. package/dist/providers/firebase-client/auth.d.ts +12 -0
  1715. package/dist/providers/firebase-client/auth.js +30 -0
  1716. package/dist/providers/firebase-client/index.d.ts +9 -0
  1717. package/dist/providers/firebase-client/index.js +9 -0
  1718. package/dist/providers/firebase-client/realtime.d.ts +18 -0
  1719. package/dist/providers/firebase-client/realtime.js +39 -0
  1720. package/dist/providers/payment-razorpay/index.d.ts +66 -69
  1721. package/dist/providers/payment-razorpay/index.js +201 -97
  1722. package/dist/providers/shipping-shiprocket/index.d.ts +69 -33
  1723. package/dist/providers/shipping-shiprocket/index.js +135 -122
  1724. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +46 -0
  1725. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +152 -0
  1726. package/dist/providers/storage-firebase/client.d.ts +56 -0
  1727. package/dist/providers/storage-firebase/client.js +141 -0
  1728. package/dist/providers/storage-firebase/index.d.ts +6 -43
  1729. package/dist/providers/storage-firebase/index.js +16 -153
  1730. package/dist/providers/storage-firebase/provider.d.ts +23 -0
  1731. package/dist/providers/storage-firebase/provider.js +103 -0
  1732. package/dist/react/ErrorBoundary.d.ts +31 -0
  1733. package/dist/react/ErrorBoundary.js +68 -0
  1734. package/dist/react/contexts/SessionContext.d.ts +80 -0
  1735. package/dist/react/contexts/SessionContext.js +350 -0
  1736. package/dist/react/contexts/ThemeContext.d.ts +14 -0
  1737. package/dist/react/contexts/ThemeContext.js +65 -0
  1738. package/dist/react/contexts/index.d.ts +4 -0
  1739. package/dist/react/contexts/index.js +2 -0
  1740. package/dist/react/hooks/useBreakpoint.d.ts +29 -0
  1741. package/dist/react/hooks/useBreakpoint.js +37 -0
  1742. package/dist/react/hooks/useBulkAction.d.ts +65 -0
  1743. package/dist/react/hooks/useBulkAction.js +69 -0
  1744. package/dist/react/hooks/useBulkSelection.d.ts +40 -0
  1745. package/dist/react/hooks/useBulkSelection.js +58 -0
  1746. package/dist/react/hooks/useCamera.d.ts +34 -0
  1747. package/dist/react/hooks/useCamera.js +147 -0
  1748. package/dist/react/hooks/useClickOutside.d.ts +37 -0
  1749. package/dist/react/hooks/useClickOutside.js +57 -0
  1750. package/dist/react/hooks/useContainerGrid.d.ts +39 -0
  1751. package/dist/react/hooks/useContainerGrid.js +47 -0
  1752. package/dist/react/hooks/useCountdown.d.ts +26 -0
  1753. package/dist/react/hooks/useCountdown.js +49 -0
  1754. package/dist/react/hooks/useGesture.d.ts +51 -0
  1755. package/dist/react/hooks/useGesture.js +181 -0
  1756. package/dist/react/hooks/useKeyPress.d.ts +48 -0
  1757. package/dist/react/hooks/useKeyPress.js +62 -0
  1758. package/dist/react/hooks/useLongPress.d.ts +26 -0
  1759. package/dist/react/hooks/useLongPress.js +55 -0
  1760. package/dist/react/hooks/useMediaQuery.d.ts +17 -0
  1761. package/dist/react/hooks/useMediaQuery.js +34 -0
  1762. package/dist/react/hooks/useMessage.d.ts +11 -0
  1763. package/dist/react/hooks/useMessage.js +45 -0
  1764. package/dist/react/hooks/usePendingFilters.d.ts +58 -0
  1765. package/dist/react/hooks/usePendingFilters.js +79 -0
  1766. package/dist/react/hooks/usePendingTable.d.ts +49 -0
  1767. package/dist/react/hooks/usePendingTable.js +45 -0
  1768. package/dist/react/hooks/usePullToRefresh.d.ts +38 -0
  1769. package/dist/react/hooks/usePullToRefresh.js +82 -0
  1770. package/dist/react/hooks/useRealtimeEvent.d.ts +53 -0
  1771. package/dist/react/hooks/useRealtimeEvent.js +124 -0
  1772. package/dist/react/hooks/useSwipe.d.ts +55 -0
  1773. package/dist/react/hooks/useSwipe.js +165 -0
  1774. package/dist/react/hooks/useUnsavedChanges.d.ts +44 -0
  1775. package/dist/react/hooks/useUnsavedChanges.js +55 -0
  1776. package/dist/react/hooks/useUrlTable.d.ts +31 -0
  1777. package/dist/react/hooks/useUrlTable.js +137 -0
  1778. package/dist/react/hooks/useVisibleItems.d.ts +37 -0
  1779. package/dist/react/hooks/useVisibleItems.js +59 -0
  1780. package/dist/react/index.d.ts +49 -787
  1781. package/dist/react/index.js +47 -1665
  1782. package/dist/react/useModalStack.d.ts +33 -0
  1783. package/dist/react/useModalStack.js +61 -0
  1784. package/dist/repositories/index.d.ts +38 -0
  1785. package/dist/repositories/index.js +40 -0
  1786. package/dist/security/authorization.d.ts +24 -0
  1787. package/dist/security/authorization.js +73 -0
  1788. package/dist/security/browser.d.ts +7 -0
  1789. package/dist/security/browser.js +5 -0
  1790. package/dist/security/csp.d.ts +16 -0
  1791. package/dist/security/csp.js +44 -0
  1792. package/dist/security/index.d.ts +11 -309
  1793. package/dist/security/index.js +8 -5
  1794. package/dist/security/pii-encrypt.d.ts +121 -0
  1795. package/dist/security/pii-encrypt.js +351 -0
  1796. package/dist/security/pii-redact.d.ts +20 -0
  1797. package/dist/security/pii-redact.js +129 -0
  1798. package/dist/security/pii-schemas.d.ts +38 -0
  1799. package/dist/security/pii-schemas.js +62 -0
  1800. package/dist/security/rate-limit.d.ts +70 -0
  1801. package/dist/security/rate-limit.js +107 -0
  1802. package/dist/security/rbac/Can.d.ts +31 -0
  1803. package/dist/security/rbac/Can.js +24 -0
  1804. package/dist/security/rbac/default-roles.d.ts +2 -0
  1805. package/dist/security/rbac/default-roles.js +83 -0
  1806. package/dist/security/rbac/hook.d.ts +20 -0
  1807. package/dist/security/rbac/hook.js +30 -0
  1808. package/dist/security/rbac/index.d.ts +8 -0
  1809. package/dist/security/rbac/index.js +6 -0
  1810. package/dist/security/rbac/middleware.d.ts +51 -0
  1811. package/dist/security/rbac/middleware.js +51 -0
  1812. package/dist/security/rbac/resolver.d.ts +5 -0
  1813. package/dist/security/rbac/resolver.js +38 -0
  1814. package/dist/security/rbac/server.d.ts +24 -0
  1815. package/dist/security/rbac/server.js +42 -0
  1816. package/dist/security/rbac/types.d.ts +22 -0
  1817. package/dist/security/rbac/types.js +2 -0
  1818. package/dist/security/settings-encryption.d.ts +5 -0
  1819. package/dist/security/settings-encryption.js +48 -0
  1820. package/dist/seed/actions/demo-seed-actions.d.ts +31 -0
  1821. package/dist/seed/actions/demo-seed-actions.js +36 -0
  1822. package/dist/seed/actions/index.d.ts +1 -0
  1823. package/dist/seed/actions/index.js +1 -0
  1824. package/dist/seed/addresses-seed-data.d.ts +19 -0
  1825. package/dist/seed/addresses-seed-data.js +418 -0
  1826. package/dist/seed/bids-seed-data.d.ts +7 -0
  1827. package/dist/seed/bids-seed-data.js +1168 -0
  1828. package/dist/seed/blog-posts-seed-data.d.ts +7 -0
  1829. package/dist/seed/blog-posts-seed-data.js +215 -0
  1830. package/dist/seed/carousel-slides-seed-data.d.ts +7 -0
  1831. package/dist/seed/carousel-slides-seed-data.js +283 -0
  1832. package/dist/seed/cart-seed-data.d.ts +20 -0
  1833. package/dist/seed/cart-seed-data.js +179 -0
  1834. package/dist/seed/categories-seed-data.d.ts +7 -0
  1835. package/dist/seed/categories-seed-data.js +1220 -0
  1836. package/dist/seed/coupons-seed-data.d.ts +7 -0
  1837. package/dist/seed/coupons-seed-data.js +508 -0
  1838. package/dist/seed/defaults/categories.d.ts +2 -0
  1839. package/dist/seed/defaults/categories.js +12 -0
  1840. package/dist/seed/defaults/faqs.d.ts +2 -0
  1841. package/dist/seed/defaults/faqs.js +40 -0
  1842. package/dist/seed/defaults/homepage-sections.d.ts +2 -0
  1843. package/dist/seed/defaults/homepage-sections.js +59 -0
  1844. package/dist/seed/events-seed-data.d.ts +8 -0
  1845. package/dist/seed/events-seed-data.js +662 -0
  1846. package/dist/seed/factories/address.factory.d.ts +21 -0
  1847. package/dist/seed/factories/address.factory.js +44 -0
  1848. package/dist/seed/factories/bid.factory.d.ts +15 -0
  1849. package/dist/seed/factories/bid.factory.js +33 -0
  1850. package/dist/seed/factories/blog-post.factory.d.ts +15 -0
  1851. package/dist/seed/factories/blog-post.factory.js +22 -0
  1852. package/dist/seed/factories/carousel.factory.d.ts +11 -0
  1853. package/dist/seed/factories/carousel.factory.js +16 -0
  1854. package/dist/seed/factories/cart.factory.d.ts +26 -0
  1855. package/dist/seed/factories/cart.factory.js +35 -0
  1856. package/dist/seed/factories/category.factory.d.ts +11 -0
  1857. package/dist/seed/factories/category.factory.js +16 -0
  1858. package/dist/seed/factories/coupon.factory.d.ts +21 -0
  1859. package/dist/seed/factories/coupon.factory.js +43 -0
  1860. package/dist/seed/factories/faq.factory.d.ts +10 -0
  1861. package/dist/seed/factories/faq.factory.js +15 -0
  1862. package/dist/seed/factories/homepage-section.factory.d.ts +9 -0
  1863. package/dist/seed/factories/homepage-section.factory.js +13 -0
  1864. package/dist/seed/factories/notification.factory.d.ts +17 -0
  1865. package/dist/seed/factories/notification.factory.js +39 -0
  1866. package/dist/seed/factories/order.factory.d.ts +20 -0
  1867. package/dist/seed/factories/order.factory.js +20 -0
  1868. package/dist/seed/factories/payout.factory.d.ts +21 -0
  1869. package/dist/seed/factories/payout.factory.js +38 -0
  1870. package/dist/seed/factories/product.factory.d.ts +27 -0
  1871. package/dist/seed/factories/product.factory.js +111 -0
  1872. package/dist/seed/factories/review.factory.d.ts +14 -0
  1873. package/dist/seed/factories/review.factory.js +52 -0
  1874. package/dist/seed/factories/session.factory.d.ts +15 -0
  1875. package/dist/seed/factories/session.factory.js +31 -0
  1876. package/dist/seed/factories/store.factory.d.ts +23 -0
  1877. package/dist/seed/factories/store.factory.js +46 -0
  1878. package/dist/seed/factories/user.factory.d.ts +19 -0
  1879. package/dist/seed/factories/user.factory.js +55 -0
  1880. package/dist/seed/faq-seed-data.d.ts +47 -0
  1881. package/dist/seed/faq-seed-data.js +2320 -0
  1882. package/dist/seed/firestore-indexes.d.ts +13 -0
  1883. package/dist/seed/firestore-indexes.js +32 -0
  1884. package/dist/seed/homepage-sections-seed-data.d.ts +18 -0
  1885. package/dist/seed/homepage-sections-seed-data.js +339 -0
  1886. package/dist/seed/index.d.ts +68 -397
  1887. package/dist/seed/index.js +49 -1040
  1888. package/dist/seed/notifications-seed-data.d.ts +7 -0
  1889. package/dist/seed/notifications-seed-data.js +494 -0
  1890. package/dist/seed/orders-seed-data.d.ts +7 -0
  1891. package/dist/seed/orders-seed-data.js +578 -0
  1892. package/dist/seed/payouts-seed-data.d.ts +7 -0
  1893. package/dist/seed/payouts-seed-data.js +202 -0
  1894. package/dist/seed/products-seed-data.d.ts +7 -0
  1895. package/dist/seed/products-seed-data.js +2477 -0
  1896. package/dist/seed/reviews-seed-data.d.ts +7 -0
  1897. package/dist/seed/reviews-seed-data.js +618 -0
  1898. package/dist/seed/runner.d.ts +3 -0
  1899. package/dist/seed/runner.js +38 -0
  1900. package/dist/seed/seed-market-config.d.ts +49 -0
  1901. package/dist/seed/seed-market-config.js +198 -0
  1902. package/dist/seed/sessions-seed-data.d.ts +17 -0
  1903. package/dist/seed/sessions-seed-data.js +355 -0
  1904. package/dist/seed/site-settings-seed-data.d.ts +7 -0
  1905. package/dist/seed/site-settings-seed-data.js +236 -0
  1906. package/dist/seed/store-addresses-seed-data.d.ts +19 -0
  1907. package/dist/seed/store-addresses-seed-data.js +106 -0
  1908. package/dist/seed/stores-seed-data.d.ts +14 -0
  1909. package/dist/seed/stores-seed-data.js +127 -0
  1910. package/dist/seed/test-utils.d.ts +49 -0
  1911. package/dist/seed/test-utils.js +107 -0
  1912. package/dist/seed/types.d.ts +33 -0
  1913. package/dist/seed/types.js +1 -0
  1914. package/dist/seed/users-seed-data.d.ts +7 -0
  1915. package/dist/seed/users-seed-data.js +727 -0
  1916. package/dist/seo/index.d.ts +2 -150
  1917. package/dist/seo/index.js +2 -4
  1918. package/dist/seo/json-ld.d.ts +69 -0
  1919. package/dist/seo/json-ld.js +166 -0
  1920. package/dist/seo/metadata.d.ts +77 -0
  1921. package/dist/seo/metadata.js +157 -0
  1922. package/dist/server.d.ts +109 -0
  1923. package/dist/server.js +110 -0
  1924. package/dist/style/tailwind/index.d.ts +5 -7
  1925. package/dist/style/tailwind/index.js +54 -33
  1926. package/dist/style/vanilla/index.d.ts +5 -7
  1927. package/dist/style/vanilla/index.js +45 -33
  1928. package/dist/tokens/index.d.ts +23 -24
  1929. package/dist/tokens/index.js +786 -4
  1930. package/dist/tokens/tokens.css +221 -0
  1931. package/dist/ui/DataTable.d.ts +78 -0
  1932. package/dist/ui/DataTable.js +157 -0
  1933. package/dist/ui/DataTable.style.css +190 -0
  1934. package/dist/ui/animation.helper.d.ts +17 -0
  1935. package/dist/ui/animation.helper.js +17 -0
  1936. package/dist/ui/color.helper.d.ts +12 -0
  1937. package/dist/ui/color.helper.js +31 -0
  1938. package/dist/ui/columns/build-columns.d.ts +21 -0
  1939. package/dist/ui/columns/build-columns.js +33 -0
  1940. package/dist/ui/columns/column-renderers.d.ts +33 -0
  1941. package/dist/ui/columns/column-renderers.js +64 -0
  1942. package/dist/ui/columns/index.d.ts +6 -0
  1943. package/dist/ui/columns/index.js +5 -0
  1944. package/dist/ui/components/Accordion.d.ts +27 -0
  1945. package/dist/ui/components/Accordion.js +57 -0
  1946. package/dist/ui/components/Accordion.style.css +82 -0
  1947. package/dist/ui/components/ActiveFilterChips.d.ts +13 -0
  1948. package/dist/ui/components/ActiveFilterChips.js +9 -0
  1949. package/dist/ui/components/ActiveFilterChips.style.css +66 -0
  1950. package/dist/ui/components/Alert.d.ts +43 -0
  1951. package/dist/ui/components/Alert.js +47 -0
  1952. package/dist/ui/components/Alert.style.css +187 -0
  1953. package/dist/ui/components/Avatar.d.ts +18 -0
  1954. package/dist/ui/components/Avatar.js +42 -0
  1955. package/dist/ui/components/Avatar.style.css +73 -0
  1956. package/dist/ui/components/AvatarDisplay.d.ts +10 -0
  1957. package/dist/ui/components/AvatarDisplay.js +56 -0
  1958. package/dist/ui/components/AvatarDisplay.style.css +46 -0
  1959. package/dist/ui/components/BackgroundRenderer.d.ts +15 -0
  1960. package/dist/ui/components/BackgroundRenderer.js +42 -0
  1961. package/dist/ui/components/BackgroundRenderer.style.css +31 -0
  1962. package/dist/ui/components/Badge.d.ts +33 -0
  1963. package/dist/ui/components/Badge.js +34 -0
  1964. package/dist/ui/components/Badge.style.css +114 -0
  1965. package/dist/ui/components/BaseListingCard.d.ts +39 -0
  1966. package/dist/ui/components/BaseListingCard.js +56 -0
  1967. package/dist/ui/components/BaseListingCard.style.css +84 -0
  1968. package/dist/ui/components/Breadcrumb.d.ts +15 -0
  1969. package/dist/ui/components/Breadcrumb.js +12 -0
  1970. package/dist/ui/components/Breadcrumb.style.css +60 -0
  1971. package/dist/ui/components/BulkActionBar.d.ts +34 -0
  1972. package/dist/ui/components/BulkActionBar.js +86 -0
  1973. package/dist/ui/components/BulkActionBar.style.css +196 -0
  1974. package/dist/ui/components/Button.d.ts +31 -0
  1975. package/dist/ui/components/Button.js +29 -0
  1976. package/dist/ui/components/Button.style.css +160 -0
  1977. package/dist/ui/components/Card.d.ts +21 -0
  1978. package/dist/ui/components/Card.js +51 -0
  1979. package/dist/ui/components/Card.style.css +192 -0
  1980. package/dist/ui/components/Checkbox.d.ts +8 -0
  1981. package/dist/ui/components/Checkbox.js +38 -0
  1982. package/dist/ui/components/Checkbox.style.css +113 -0
  1983. package/dist/ui/components/ConfirmDeleteModal.d.ts +33 -0
  1984. package/dist/ui/components/ConfirmDeleteModal.js +74 -0
  1985. package/dist/ui/components/ConfirmDeleteModal.style.css +89 -0
  1986. package/dist/ui/components/CountdownDisplay.d.ts +14 -0
  1987. package/dist/ui/components/CountdownDisplay.js +50 -0
  1988. package/dist/ui/components/CountdownDisplay.style.css +4 -0
  1989. package/dist/ui/components/DashboardStatsCard.d.ts +15 -0
  1990. package/dist/ui/components/DashboardStatsCard.js +28 -0
  1991. package/dist/ui/components/DashboardStatsCard.style.css +70 -0
  1992. package/dist/ui/components/DescriptionField.d.ts +23 -0
  1993. package/dist/ui/components/DescriptionField.js +28 -0
  1994. package/dist/ui/components/DescriptionField.style.css +36 -0
  1995. package/dist/ui/components/DetailViewShell.d.ts +51 -0
  1996. package/dist/ui/components/DetailViewShell.js +50 -0
  1997. package/dist/ui/components/Div.d.ts +20 -0
  1998. package/dist/ui/components/Div.js +19 -0
  1999. package/dist/ui/components/Div.style.css +6 -0
  2000. package/dist/ui/components/Divider.d.ts +12 -0
  2001. package/dist/ui/components/Divider.js +11 -0
  2002. package/dist/ui/components/Divider.style.css +39 -0
  2003. package/dist/ui/components/Drawer.d.ts +21 -0
  2004. package/dist/ui/components/Drawer.js +72 -0
  2005. package/dist/ui/components/Drawer.style.css +146 -0
  2006. package/dist/ui/components/Dropdown.d.ts +36 -0
  2007. package/dist/ui/components/Dropdown.js +142 -0
  2008. package/dist/ui/components/Dropdown.style.css +112 -0
  2009. package/dist/ui/components/DynamicSelect.d.ts +24 -0
  2010. package/dist/ui/components/DynamicSelect.js +78 -0
  2011. package/dist/ui/components/DynamicSelect.style.css +101 -0
  2012. package/dist/ui/components/EmptyState.d.ts +12 -0
  2013. package/dist/ui/components/EmptyState.js +17 -0
  2014. package/dist/ui/components/EmptyState.style.css +30 -0
  2015. package/dist/ui/components/FilterDrawer.d.ts +16 -0
  2016. package/dist/ui/components/FilterDrawer.js +39 -0
  2017. package/dist/ui/components/FilterDrawer.style.css +61 -0
  2018. package/dist/ui/components/FlowDiagram.d.ts +33 -0
  2019. package/dist/ui/components/FlowDiagram.js +15 -0
  2020. package/dist/ui/components/FlowDiagram.style.css +77 -0
  2021. package/dist/ui/components/Form.d.ts +27 -0
  2022. package/dist/ui/components/Form.js +48 -0
  2023. package/dist/ui/components/Form.style.css +27 -0
  2024. package/dist/ui/components/FormField.d.ts +26 -0
  2025. package/dist/ui/components/FormField.js +25 -0
  2026. package/dist/ui/components/FormField.style.css +30 -0
  2027. package/dist/ui/components/FormGrid.d.ts +46 -0
  2028. package/dist/ui/components/FormGrid.js +42 -0
  2029. package/dist/ui/components/FormGrid.style.css +32 -0
  2030. package/dist/ui/components/HorizontalScroller.d.ts +33 -0
  2031. package/dist/ui/components/HorizontalScroller.js +47 -0
  2032. package/dist/ui/components/HorizontalScroller.style.css +109 -0
  2033. package/dist/ui/components/IconButton.d.ts +32 -0
  2034. package/dist/ui/components/IconButton.js +31 -0
  2035. package/dist/ui/components/IconButton.style.css +103 -0
  2036. package/dist/ui/components/ImageGallery.d.ts +17 -0
  2037. package/dist/ui/components/ImageGallery.js +108 -0
  2038. package/dist/ui/components/ImageGallery.style.css +163 -0
  2039. package/dist/ui/components/ImageLightbox.d.ts +24 -0
  2040. package/dist/ui/components/ImageLightbox.js +61 -0
  2041. package/dist/ui/components/ImageLightbox.style.css +58 -0
  2042. package/dist/ui/components/Input.d.ts +12 -0
  2043. package/dist/ui/components/Input.js +29 -0
  2044. package/dist/ui/components/Input.style.css +28 -0
  2045. package/dist/ui/components/ItemRow.d.ts +10 -0
  2046. package/dist/ui/components/ItemRow.js +7 -0
  2047. package/dist/ui/components/ItemRow.style.css +33 -0
  2048. package/dist/ui/components/Layout.d.ts +282 -0
  2049. package/dist/ui/components/Layout.js +184 -0
  2050. package/dist/ui/components/Layout.style.css +212 -0
  2051. package/dist/ui/components/ListingLayout.d.ts +60 -0
  2052. package/dist/ui/components/ListingLayout.js +121 -0
  2053. package/dist/ui/components/ListingLayout.style.css +527 -0
  2054. package/dist/ui/components/ListingViewShell.d.ts +38 -0
  2055. package/dist/ui/components/ListingViewShell.js +11 -0
  2056. package/dist/ui/components/Menu.d.ts +29 -0
  2057. package/dist/ui/components/Menu.js +19 -0
  2058. package/dist/ui/components/Menu.style.css +6 -0
  2059. package/dist/ui/components/Modal.d.ts +18 -0
  2060. package/dist/ui/components/Modal.js +79 -0
  2061. package/dist/ui/components/Modal.style.css +102 -0
  2062. package/dist/ui/components/Pagination.d.ts +25 -0
  2063. package/dist/ui/components/Pagination.js +56 -0
  2064. package/dist/ui/components/Pagination.style.css +76 -0
  2065. package/dist/ui/components/PasswordStrengthIndicator.d.ts +12 -0
  2066. package/dist/ui/components/PasswordStrengthIndicator.js +35 -0
  2067. package/dist/ui/components/PasswordStrengthIndicator.style.css +56 -0
  2068. package/dist/ui/components/PriceDisplay.d.ts +8 -0
  2069. package/dist/ui/components/PriceDisplay.js +28 -0
  2070. package/dist/ui/components/PriceDisplay.style.css +47 -0
  2071. package/dist/ui/components/Progress.d.ts +23 -0
  2072. package/dist/ui/components/Progress.js +32 -0
  2073. package/dist/ui/components/Progress.style.css +81 -0
  2074. package/dist/ui/components/Radio.d.ts +18 -0
  2075. package/dist/ui/components/Radio.js +64 -0
  2076. package/dist/ui/components/Radio.style.css +155 -0
  2077. package/dist/ui/components/RatingDisplay.d.ts +8 -0
  2078. package/dist/ui/components/RatingDisplay.js +15 -0
  2079. package/dist/ui/components/RatingDisplay.style.css +50 -0
  2080. package/dist/ui/components/ResponsiveView.d.ts +12 -0
  2081. package/dist/ui/components/ResponsiveView.js +9 -0
  2082. package/dist/ui/components/ResponsiveView.style.css +69 -0
  2083. package/dist/ui/components/RoleBadge.d.ts +7 -0
  2084. package/dist/ui/components/RoleBadge.js +21 -0
  2085. package/dist/ui/components/RoleBadge.style.css +7 -0
  2086. package/dist/ui/components/RowActionMenu.d.ts +13 -0
  2087. package/dist/ui/components/RowActionMenu.js +17 -0
  2088. package/dist/ui/components/RowActionMenu.style.css +91 -0
  2089. package/dist/ui/components/SectionTabs.d.ts +19 -0
  2090. package/dist/ui/components/SectionTabs.js +66 -0
  2091. package/dist/ui/components/SectionTabs.style.css +163 -0
  2092. package/dist/ui/components/Select.d.ts +19 -0
  2093. package/dist/ui/components/Select.js +27 -0
  2094. package/dist/ui/components/Select.style.css +177 -0
  2095. package/dist/ui/components/Semantic.d.ts +154 -0
  2096. package/dist/ui/components/Semantic.js +32 -0
  2097. package/dist/ui/components/Semantic.style.css +14 -0
  2098. package/dist/ui/components/SideDrawer.d.ts +28 -0
  2099. package/dist/ui/components/SideDrawer.js +151 -0
  2100. package/dist/ui/components/SideDrawer.style.css +214 -0
  2101. package/dist/ui/components/SideModal.d.ts +25 -0
  2102. package/dist/ui/components/SideModal.js +61 -0
  2103. package/dist/ui/components/SideModal.style.css +77 -0
  2104. package/dist/ui/components/Skeleton.d.ts +14 -0
  2105. package/dist/ui/components/Skeleton.js +22 -0
  2106. package/dist/ui/components/Skeleton.style.css +55 -0
  2107. package/dist/ui/components/SkipToMain.d.ts +6 -0
  2108. package/dist/ui/components/SkipToMain.js +6 -0
  2109. package/dist/ui/components/SkipToMain.style.css +34 -0
  2110. package/dist/ui/components/Slider.d.ts +17 -0
  2111. package/dist/ui/components/Slider.js +38 -0
  2112. package/dist/ui/components/Slider.style.css +17 -0
  2113. package/dist/ui/components/SlottedListingView.d.ts +62 -0
  2114. package/dist/ui/components/SlottedListingView.js +41 -0
  2115. package/dist/ui/components/SortDropdown.d.ts +15 -0
  2116. package/dist/ui/components/SortDropdown.js +8 -0
  2117. package/dist/ui/components/SortDropdown.style.css +12 -0
  2118. package/dist/ui/components/Spinner.d.ts +13 -0
  2119. package/dist/ui/components/Spinner.js +15 -0
  2120. package/dist/ui/components/Spinner.style.css +76 -0
  2121. package/dist/ui/components/StackedViewShell.d.ts +50 -0
  2122. package/dist/ui/components/StackedViewShell.js +39 -0
  2123. package/dist/ui/components/StarRating.d.ts +17 -0
  2124. package/dist/ui/components/StarRating.js +29 -0
  2125. package/dist/ui/components/StarRating.style.css +44 -0
  2126. package/dist/ui/components/StatsGrid.d.ts +18 -0
  2127. package/dist/ui/components/StatsGrid.js +17 -0
  2128. package/dist/ui/components/StatsGrid.style.css +96 -0
  2129. package/dist/ui/components/StatusBadge.d.ts +18 -0
  2130. package/dist/ui/components/StatusBadge.js +60 -0
  2131. package/dist/ui/components/StatusBadge.style.css +5 -0
  2132. package/dist/ui/components/StepperNav.d.ts +10 -0
  2133. package/dist/ui/components/StepperNav.js +23 -0
  2134. package/dist/ui/components/StepperNav.style.css +110 -0
  2135. package/dist/ui/components/SummaryCard.d.ts +21 -0
  2136. package/dist/ui/components/SummaryCard.js +15 -0
  2137. package/dist/ui/components/SummaryCard.style.css +82 -0
  2138. package/dist/ui/components/TabStrip.d.ts +34 -0
  2139. package/dist/ui/components/TabStrip.js +57 -0
  2140. package/dist/ui/components/TabStrip.style.css +97 -0
  2141. package/dist/ui/components/TablePagination.d.ts +21 -0
  2142. package/dist/ui/components/TablePagination.js +32 -0
  2143. package/dist/ui/components/TablePagination.style.css +89 -0
  2144. package/dist/ui/components/Tabs.d.ts +28 -0
  2145. package/dist/ui/components/Tabs.js +41 -0
  2146. package/dist/ui/components/Tabs.style.css +46 -0
  2147. package/dist/ui/components/TagInput.d.ts +10 -0
  2148. package/dist/ui/components/TagInput.js +60 -0
  2149. package/dist/ui/components/TagInput.style.css +121 -0
  2150. package/dist/ui/components/TextLink.d.ts +42 -0
  2151. package/dist/ui/components/TextLink.js +48 -0
  2152. package/dist/ui/components/TextLink.style.css +94 -0
  2153. package/dist/ui/components/Textarea.d.ts +9 -0
  2154. package/dist/ui/components/Textarea.js +21 -0
  2155. package/dist/ui/components/Textarea.style.css +30 -0
  2156. package/dist/ui/components/Toast.d.ts +15 -0
  2157. package/dist/ui/components/Toast.js +61 -0
  2158. package/dist/ui/components/Toast.style.css +114 -0
  2159. package/dist/ui/components/Toggle.d.ts +12 -0
  2160. package/dist/ui/components/Toggle.js +47 -0
  2161. package/dist/ui/components/Toggle.style.css +107 -0
  2162. package/dist/ui/components/Tooltip.d.ts +34 -0
  2163. package/dist/ui/components/Tooltip.js +110 -0
  2164. package/dist/ui/components/Tooltip.style.css +114 -0
  2165. package/dist/ui/components/Typography.d.ts +50 -0
  2166. package/dist/ui/components/Typography.js +103 -0
  2167. package/dist/ui/components/Typography.style.css +178 -0
  2168. package/dist/ui/components/UnsavedChangesModal.d.ts +17 -0
  2169. package/dist/ui/components/UnsavedChangesModal.js +52 -0
  2170. package/dist/ui/components/UnsavedChangesModal.style.css +33 -0
  2171. package/dist/ui/components/ViewToggle.d.ts +15 -0
  2172. package/dist/ui/components/ViewToggle.js +29 -0
  2173. package/dist/ui/components/ViewToggle.style.css +50 -0
  2174. package/dist/ui/components/index.style.css +76 -0
  2175. package/dist/ui/index.d.ts +165 -1644
  2176. package/dist/ui/index.js +87 -4784
  2177. package/dist/ui/rich-text/RichText.d.ts +46 -0
  2178. package/dist/ui/rich-text/RichText.js +172 -0
  2179. package/dist/ui/rich-text/RichText.style.css +5 -0
  2180. package/dist/ui/rich-text/index.d.ts +2 -0
  2181. package/dist/ui/rich-text/index.js +1 -0
  2182. package/dist/ui/style.helper.d.ts +7 -0
  2183. package/dist/ui/style.helper.js +12 -0
  2184. package/dist/utils/animation.helper.d.ts +19 -0
  2185. package/dist/utils/animation.helper.js +19 -0
  2186. package/dist/utils/array.helper.d.ts +17 -0
  2187. package/dist/utils/array.helper.js +53 -0
  2188. package/dist/utils/business-day.d.ts +47 -0
  2189. package/dist/utils/business-day.js +68 -0
  2190. package/dist/utils/client.d.ts +1 -0
  2191. package/dist/utils/client.js +1 -0
  2192. package/dist/utils/color.helper.d.ts +32 -0
  2193. package/dist/utils/color.helper.js +51 -0
  2194. package/dist/utils/cookie.converter.d.ts +7 -0
  2195. package/dist/utils/cookie.converter.js +32 -0
  2196. package/dist/utils/date.formatter.d.ts +22 -0
  2197. package/dist/utils/date.formatter.js +194 -0
  2198. package/dist/utils/event-manager.d.ts +45 -0
  2199. package/dist/utils/event-manager.js +185 -0
  2200. package/dist/utils/filter.helper.d.ts +18 -0
  2201. package/dist/utils/filter.helper.js +21 -0
  2202. package/dist/utils/id-generators.d.ts +243 -0
  2203. package/dist/utils/id-generators.js +360 -0
  2204. package/dist/utils/index.d.ts +17 -545
  2205. package/dist/utils/index.js +18 -4
  2206. package/dist/utils/media-field.d.ts +2 -0
  2207. package/dist/utils/media-field.js +1 -0
  2208. package/dist/utils/number.formatter.d.ts +13 -0
  2209. package/dist/utils/number.formatter.js +100 -0
  2210. package/dist/utils/object.helper.d.ts +16 -0
  2211. package/dist/utils/object.helper.js +82 -0
  2212. package/dist/utils/pagination.helper.d.ts +23 -0
  2213. package/dist/utils/pagination.helper.js +24 -0
  2214. package/dist/utils/schema-ui.d.ts +83 -0
  2215. package/dist/utils/schema-ui.js +185 -0
  2216. package/dist/utils/sorting.helper.d.ts +7 -0
  2217. package/dist/utils/sorting.helper.js +16 -0
  2218. package/dist/utils/string.formatter.d.ts +19 -0
  2219. package/dist/utils/string.formatter.js +140 -0
  2220. package/dist/utils/type.converter.d.ts +14 -0
  2221. package/dist/utils/type.converter.js +61 -0
  2222. package/dist/validation/ZodSetup.d.ts +5 -0
  2223. package/dist/validation/ZodSetup.js +11 -0
  2224. package/dist/validation/email.validator.d.ts +7 -0
  2225. package/dist/validation/email.validator.js +33 -0
  2226. package/dist/validation/index.d.ts +9 -126
  2227. package/dist/validation/index.js +8 -4
  2228. package/dist/validation/input.validator.d.ts +11 -0
  2229. package/dist/validation/input.validator.js +33 -0
  2230. package/dist/validation/password.validator.d.ts +21 -0
  2231. package/dist/validation/password.validator.js +77 -0
  2232. package/dist/validation/phone.validator.d.ts +9 -0
  2233. package/dist/validation/phone.validator.js +41 -0
  2234. package/dist/validation/schemas.d.ts +267 -0
  2235. package/dist/validation/schemas.js +176 -0
  2236. package/dist/validation/url.validator.d.ts +7 -0
  2237. package/dist/validation/url.validator.js +44 -0
  2238. package/dist/validation/zod-error-map.d.ts +17 -0
  2239. package/dist/validation/zod-error-map.js +85 -0
  2240. package/dist/values/index.d.ts +6 -0
  2241. package/dist/values/index.js +6 -0
  2242. package/dist/values/success-messages.d.ts +242 -0
  2243. package/dist/values/success-messages.js +272 -0
  2244. package/package.json +87 -445
  2245. package/dist/chunk-2NMEKWO5.js +0 -35
  2246. package/dist/chunk-2NMEKWO5.js.map +0 -1
  2247. package/dist/chunk-6344OTT4.js +0 -329
  2248. package/dist/chunk-6344OTT4.js.map +0 -1
  2249. package/dist/chunk-7HUFI4MW.cjs +0 -941
  2250. package/dist/chunk-7HUFI4MW.cjs.map +0 -1
  2251. package/dist/chunk-AZ2XDBYA.cjs +0 -150
  2252. package/dist/chunk-AZ2XDBYA.cjs.map +0 -1
  2253. package/dist/chunk-CI4ZFLS7.js +0 -1162
  2254. package/dist/chunk-CI4ZFLS7.js.map +0 -1
  2255. package/dist/chunk-DSCHV5OD.js +0 -620
  2256. package/dist/chunk-DSCHV5OD.js.map +0 -1
  2257. package/dist/chunk-EEMSMWIZ.js +0 -566
  2258. package/dist/chunk-EEMSMWIZ.js.map +0 -1
  2259. package/dist/chunk-EPJNBIKL.js +0 -916
  2260. package/dist/chunk-EPJNBIKL.js.map +0 -1
  2261. package/dist/chunk-FJEY6LN2.cjs +0 -64
  2262. package/dist/chunk-FJEY6LN2.cjs.map +0 -1
  2263. package/dist/chunk-GZXXRVTM.cjs +0 -343
  2264. package/dist/chunk-GZXXRVTM.cjs.map +0 -1
  2265. package/dist/chunk-IE5L2QHV.js +0 -204
  2266. package/dist/chunk-IE5L2QHV.js.map +0 -1
  2267. package/dist/chunk-JPHORBTI.cjs +0 -366
  2268. package/dist/chunk-JPHORBTI.cjs.map +0 -1
  2269. package/dist/chunk-K4C5Z22R.js +0 -146
  2270. package/dist/chunk-K4C5Z22R.js.map +0 -1
  2271. package/dist/chunk-PAHR3D5L.js +0 -56
  2272. package/dist/chunk-PAHR3D5L.js.map +0 -1
  2273. package/dist/chunk-PE44UBFV.js +0 -324
  2274. package/dist/chunk-PE44UBFV.js.map +0 -1
  2275. package/dist/chunk-RNELVIKK.cjs +0 -1287
  2276. package/dist/chunk-RNELVIKK.cjs.map +0 -1
  2277. package/dist/chunk-S367Y35J.cjs +0 -39
  2278. package/dist/chunk-S367Y35J.cjs.map +0 -1
  2279. package/dist/chunk-ULLW73KN.cjs +0 -217
  2280. package/dist/chunk-ULLW73KN.cjs.map +0 -1
  2281. package/dist/chunk-UNYFAUWW.cjs +0 -630
  2282. package/dist/chunk-UNYFAUWW.cjs.map +0 -1
  2283. package/dist/chunk-V55QYTXF.js +0 -259
  2284. package/dist/chunk-V55QYTXF.js.map +0 -1
  2285. package/dist/chunk-WKVCFDEA.cjs +0 -599
  2286. package/dist/chunk-WKVCFDEA.cjs.map +0 -1
  2287. package/dist/chunk-YT4QVIBP.cjs +0 -292
  2288. package/dist/chunk-YT4QVIBP.cjs.map +0 -1
  2289. package/dist/cli/index.cjs +0 -155
  2290. package/dist/cli/index.cjs.map +0 -1
  2291. package/dist/cli/index.d.cts +0 -41
  2292. package/dist/cli/index.js.map +0 -1
  2293. package/dist/contracts/index.cjs +0 -37
  2294. package/dist/contracts/index.cjs.map +0 -1
  2295. package/dist/contracts/index.d.cts +0 -728
  2296. package/dist/contracts/index.js.map +0 -1
  2297. package/dist/core/index.cjs +0 -84
  2298. package/dist/core/index.cjs.map +0 -1
  2299. package/dist/core/index.d.cts +0 -329
  2300. package/dist/core/index.js.map +0 -1
  2301. package/dist/errors/index.cjs +0 -57
  2302. package/dist/errors/index.cjs.map +0 -1
  2303. package/dist/errors/index.d.cts +0 -96
  2304. package/dist/errors/index.js.map +0 -1
  2305. package/dist/extend-D57fwPSu.d.cts +0 -122
  2306. package/dist/extend-D57fwPSu.d.ts +0 -122
  2307. package/dist/extend-D_0wzsse.d.cts +0 -79
  2308. package/dist/extend-D_0wzsse.d.ts +0 -79
  2309. package/dist/extend-jcOQfU2G.d.cts +0 -162
  2310. package/dist/extend-jcOQfU2G.d.ts +0 -162
  2311. package/dist/feature-C8mVv66I.d.cts +0 -84
  2312. package/dist/feature-C8mVv66I.d.ts +0 -84
  2313. package/dist/feature-DENiK3vd.d.cts +0 -55
  2314. package/dist/feature-DENiK3vd.d.ts +0 -55
  2315. package/dist/feature-RWXQ_lnf.d.cts +0 -41
  2316. package/dist/feature-RWXQ_lnf.d.ts +0 -41
  2317. package/dist/features/about/index.cjs +0 -286
  2318. package/dist/features/about/index.cjs.map +0 -1
  2319. package/dist/features/about/index.d.cts +0 -42
  2320. package/dist/features/about/index.js.map +0 -1
  2321. package/dist/features/account/index.cjs +0 -1032
  2322. package/dist/features/account/index.cjs.map +0 -1
  2323. package/dist/features/account/index.d.cts +0 -555
  2324. package/dist/features/account/index.js.map +0 -1
  2325. package/dist/features/admin/index.cjs +0 -2747
  2326. package/dist/features/admin/index.cjs.map +0 -1
  2327. package/dist/features/admin/index.d.cts +0 -554
  2328. package/dist/features/admin/index.js.map +0 -1
  2329. package/dist/features/auctions/index.cjs +0 -1219
  2330. package/dist/features/auctions/index.cjs.map +0 -1
  2331. package/dist/features/auctions/index.d.cts +0 -513
  2332. package/dist/features/auctions/index.js.map +0 -1
  2333. package/dist/features/auth/index.cjs +0 -1897
  2334. package/dist/features/auth/index.cjs.map +0 -1
  2335. package/dist/features/auth/index.d.cts +0 -315
  2336. package/dist/features/auth/index.js.map +0 -1
  2337. package/dist/features/auth/server.cjs +0 -531
  2338. package/dist/features/auth/server.cjs.map +0 -1
  2339. package/dist/features/auth/server.d.cts +0 -24
  2340. package/dist/features/auth/server.js.map +0 -1
  2341. package/dist/features/before-after/index.cjs +0 -559
  2342. package/dist/features/before-after/index.cjs.map +0 -1
  2343. package/dist/features/before-after/index.d.cts +0 -128
  2344. package/dist/features/before-after/index.js.map +0 -1
  2345. package/dist/features/blog/index.cjs +0 -4088
  2346. package/dist/features/blog/index.cjs.map +0 -1
  2347. package/dist/features/blog/index.d.cts +0 -492
  2348. package/dist/features/blog/index.js.map +0 -1
  2349. package/dist/features/blog/server.cjs +0 -184
  2350. package/dist/features/blog/server.cjs.map +0 -1
  2351. package/dist/features/blog/server.d.cts +0 -74
  2352. package/dist/features/blog/server.js.map +0 -1
  2353. package/dist/features/cart/index.cjs +0 -1097
  2354. package/dist/features/cart/index.cjs.map +0 -1
  2355. package/dist/features/cart/index.d.cts +0 -451
  2356. package/dist/features/cart/index.js.map +0 -1
  2357. package/dist/features/categories/index.cjs +0 -2062
  2358. package/dist/features/categories/index.cjs.map +0 -1
  2359. package/dist/features/categories/index.d.cts +0 -461
  2360. package/dist/features/categories/index.js.map +0 -1
  2361. package/dist/features/categories/server.cjs +0 -796
  2362. package/dist/features/categories/server.cjs.map +0 -1
  2363. package/dist/features/categories/server.d.cts +0 -47
  2364. package/dist/features/categories/server.js.map +0 -1
  2365. package/dist/features/checkout/index.cjs +0 -200
  2366. package/dist/features/checkout/index.cjs.map +0 -1
  2367. package/dist/features/checkout/index.d.cts +0 -70
  2368. package/dist/features/checkout/index.js.map +0 -1
  2369. package/dist/features/cms/index.cjs +0 -5
  2370. package/dist/features/cms/index.cjs.map +0 -1
  2371. package/dist/features/cms/index.d.cts +0 -2
  2372. package/dist/features/cms/index.js.map +0 -1
  2373. package/dist/features/collections/index.cjs +0 -394
  2374. package/dist/features/collections/index.cjs.map +0 -1
  2375. package/dist/features/collections/index.d.cts +0 -148
  2376. package/dist/features/collections/index.js.map +0 -1
  2377. package/dist/features/consultation/index.cjs +0 -1099
  2378. package/dist/features/consultation/index.cjs.map +0 -1
  2379. package/dist/features/consultation/index.d.cts +0 -172
  2380. package/dist/features/consultation/index.js.map +0 -1
  2381. package/dist/features/contact/index.cjs +0 -593
  2382. package/dist/features/contact/index.cjs.map +0 -1
  2383. package/dist/features/contact/index.d.cts +0 -56
  2384. package/dist/features/contact/index.js.map +0 -1
  2385. package/dist/features/copilot/index.cjs +0 -688
  2386. package/dist/features/copilot/index.cjs.map +0 -1
  2387. package/dist/features/copilot/index.d.cts +0 -47
  2388. package/dist/features/copilot/index.js.map +0 -1
  2389. package/dist/features/corporate/index.cjs +0 -796
  2390. package/dist/features/corporate/index.cjs.map +0 -1
  2391. package/dist/features/corporate/index.d.cts +0 -183
  2392. package/dist/features/corporate/index.js.map +0 -1
  2393. package/dist/features/events/index.cjs +0 -1486
  2394. package/dist/features/events/index.cjs.map +0 -1
  2395. package/dist/features/events/index.d.cts +0 -841
  2396. package/dist/features/events/index.js.map +0 -1
  2397. package/dist/features/events/server.cjs +0 -199
  2398. package/dist/features/events/server.cjs.map +0 -1
  2399. package/dist/features/events/server.d.cts +0 -40
  2400. package/dist/features/events/server.js.map +0 -1
  2401. package/dist/features/faq/index.cjs +0 -1714
  2402. package/dist/features/faq/index.cjs.map +0 -1
  2403. package/dist/features/faq/index.d.cts +0 -619
  2404. package/dist/features/faq/index.js.map +0 -1
  2405. package/dist/features/filters/index.cjs +0 -1073
  2406. package/dist/features/filters/index.cjs.map +0 -1
  2407. package/dist/features/filters/index.d.cts +0 -136
  2408. package/dist/features/filters/index.js.map +0 -1
  2409. package/dist/features/forms/index.cjs +0 -936
  2410. package/dist/features/forms/index.cjs.map +0 -1
  2411. package/dist/features/forms/index.d.cts +0 -129
  2412. package/dist/features/forms/index.js.map +0 -1
  2413. package/dist/features/homepage/index.cjs +0 -6321
  2414. package/dist/features/homepage/index.cjs.map +0 -1
  2415. package/dist/features/homepage/index.d.cts +0 -846
  2416. package/dist/features/homepage/index.js.map +0 -1
  2417. package/dist/features/homepage/server.cjs +0 -1038
  2418. package/dist/features/homepage/server.cjs.map +0 -1
  2419. package/dist/features/homepage/server.d.cts +0 -121
  2420. package/dist/features/homepage/server.js.map +0 -1
  2421. package/dist/features/layout/index.cjs +0 -1766
  2422. package/dist/features/layout/index.cjs.map +0 -1
  2423. package/dist/features/layout/index.d.cts +0 -315
  2424. package/dist/features/layout/index.js.map +0 -1
  2425. package/dist/features/loyalty/index.cjs +0 -352
  2426. package/dist/features/loyalty/index.cjs.map +0 -1
  2427. package/dist/features/loyalty/index.d.cts +0 -174
  2428. package/dist/features/loyalty/index.js.map +0 -1
  2429. package/dist/features/media/index.cjs +0 -3620
  2430. package/dist/features/media/index.cjs.map +0 -1
  2431. package/dist/features/media/index.d.cts +0 -425
  2432. package/dist/features/media/index.js.map +0 -1
  2433. package/dist/features/orders/index.cjs +0 -882
  2434. package/dist/features/orders/index.cjs.map +0 -1
  2435. package/dist/features/orders/index.d.cts +0 -370
  2436. package/dist/features/orders/index.js.map +0 -1
  2437. package/dist/features/payments/index.cjs +0 -341
  2438. package/dist/features/payments/index.cjs.map +0 -1
  2439. package/dist/features/payments/index.d.cts +0 -141
  2440. package/dist/features/payments/index.js.map +0 -1
  2441. package/dist/features/pre-orders/index.cjs +0 -558
  2442. package/dist/features/pre-orders/index.cjs.map +0 -1
  2443. package/dist/features/pre-orders/index.d.cts +0 -170
  2444. package/dist/features/pre-orders/index.js.map +0 -1
  2445. package/dist/features/pre-orders/server.cjs +0 -111
  2446. package/dist/features/pre-orders/server.cjs.map +0 -1
  2447. package/dist/features/pre-orders/server.d.cts +0 -17
  2448. package/dist/features/pre-orders/server.js.map +0 -1
  2449. package/dist/features/products/index.cjs +0 -2513
  2450. package/dist/features/products/index.cjs.map +0 -1
  2451. package/dist/features/products/index.d.cts +0 -1066
  2452. package/dist/features/products/index.js.map +0 -1
  2453. package/dist/features/products/server.cjs +0 -809
  2454. package/dist/features/products/server.cjs.map +0 -1
  2455. package/dist/features/products/server.d.cts +0 -52
  2456. package/dist/features/products/server.js.map +0 -1
  2457. package/dist/features/promotions/index.cjs +0 -977
  2458. package/dist/features/promotions/index.cjs.map +0 -1
  2459. package/dist/features/promotions/index.d.cts +0 -301
  2460. package/dist/features/promotions/index.js.map +0 -1
  2461. package/dist/features/reviews/index.cjs +0 -2324
  2462. package/dist/features/reviews/index.cjs.map +0 -1
  2463. package/dist/features/reviews/index.d.cts +0 -434
  2464. package/dist/features/reviews/index.js.map +0 -1
  2465. package/dist/features/reviews/server.cjs +0 -776
  2466. package/dist/features/reviews/server.cjs.map +0 -1
  2467. package/dist/features/reviews/server.d.cts +0 -49
  2468. package/dist/features/reviews/server.js.map +0 -1
  2469. package/dist/features/search/index.cjs +0 -1368
  2470. package/dist/features/search/index.cjs.map +0 -1
  2471. package/dist/features/search/index.d.cts +0 -298
  2472. package/dist/features/search/index.js.map +0 -1
  2473. package/dist/features/search/server.cjs +0 -154
  2474. package/dist/features/search/server.cjs.map +0 -1
  2475. package/dist/features/search/server.d.cts +0 -83
  2476. package/dist/features/search/server.js.map +0 -1
  2477. package/dist/features/seller/index.cjs +0 -2086
  2478. package/dist/features/seller/index.cjs.map +0 -1
  2479. package/dist/features/seller/index.d.cts +0 -926
  2480. package/dist/features/seller/index.js.map +0 -1
  2481. package/dist/features/stores/index.cjs +0 -1942
  2482. package/dist/features/stores/index.cjs.map +0 -1
  2483. package/dist/features/stores/index.d.cts +0 -536
  2484. package/dist/features/stores/index.js.map +0 -1
  2485. package/dist/features/stores/server.cjs +0 -451
  2486. package/dist/features/stores/server.cjs.map +0 -1
  2487. package/dist/features/stores/server.d.cts +0 -106
  2488. package/dist/features/stores/server.js.map +0 -1
  2489. package/dist/features/whatsapp-bot/index.cjs +0 -168
  2490. package/dist/features/whatsapp-bot/index.cjs.map +0 -1
  2491. package/dist/features/whatsapp-bot/index.d.cts +0 -85
  2492. package/dist/features/whatsapp-bot/index.js.map +0 -1
  2493. package/dist/features/wishlist/index.cjs +0 -904
  2494. package/dist/features/wishlist/index.cjs.map +0 -1
  2495. package/dist/features/wishlist/index.d.cts +0 -360
  2496. package/dist/features/wishlist/index.js.map +0 -1
  2497. package/dist/http/index.cjs +0 -21
  2498. package/dist/http/index.cjs.map +0 -1
  2499. package/dist/http/index.d.cts +0 -61
  2500. package/dist/http/index.js.map +0 -1
  2501. package/dist/index-B6T9NNcG.d.cts +0 -9
  2502. package/dist/index-B6T9NNcG.d.ts +0 -9
  2503. package/dist/index-CakUKzrE.d.cts +0 -10
  2504. package/dist/index-CakUKzrE.d.ts +0 -10
  2505. package/dist/index-D0Fxv9Z8.d.cts +0 -32
  2506. package/dist/index-D0Fxv9Z8.d.ts +0 -32
  2507. package/dist/index-Dh42RtMY.d.cts +0 -54
  2508. package/dist/index-Dh42RtMY.d.ts +0 -54
  2509. package/dist/index.cjs +0 -1182
  2510. package/dist/index.cjs.map +0 -1
  2511. package/dist/index.d.cts +0 -17
  2512. package/dist/index.js.map +0 -1
  2513. package/dist/instrumentation/index.cjs +0 -17
  2514. package/dist/instrumentation/index.cjs.map +0 -1
  2515. package/dist/instrumentation/index.d.cts +0 -66
  2516. package/dist/instrumentation/index.js.map +0 -1
  2517. package/dist/monitoring/index.cjs +0 -141
  2518. package/dist/monitoring/index.cjs.map +0 -1
  2519. package/dist/monitoring/index.d.cts +0 -181
  2520. package/dist/monitoring/index.js.map +0 -1
  2521. package/dist/next/index.cjs +0 -693
  2522. package/dist/next/index.cjs.map +0 -1
  2523. package/dist/next/index.d.cts +0 -777
  2524. package/dist/next/index.js.map +0 -1
  2525. package/dist/providers/auth-firebase/index.cjs +0 -400
  2526. package/dist/providers/auth-firebase/index.cjs.map +0 -1
  2527. package/dist/providers/auth-firebase/index.d.cts +0 -137
  2528. package/dist/providers/auth-firebase/index.js.map +0 -1
  2529. package/dist/providers/db-firebase/index.cjs +0 -533
  2530. package/dist/providers/db-firebase/index.cjs.map +0 -1
  2531. package/dist/providers/db-firebase/index.d.cts +0 -265
  2532. package/dist/providers/db-firebase/index.js.map +0 -1
  2533. package/dist/providers/email-resend/index.cjs +0 -58
  2534. package/dist/providers/email-resend/index.cjs.map +0 -1
  2535. package/dist/providers/email-resend/index.d.cts +0 -73
  2536. package/dist/providers/email-resend/index.js.map +0 -1
  2537. package/dist/providers/payment-razorpay/index.cjs +0 -111
  2538. package/dist/providers/payment-razorpay/index.cjs.map +0 -1
  2539. package/dist/providers/payment-razorpay/index.d.cts +0 -96
  2540. package/dist/providers/payment-razorpay/index.js.map +0 -1
  2541. package/dist/providers/search-algolia/index.cjs +0 -301
  2542. package/dist/providers/search-algolia/index.cjs.map +0 -1
  2543. package/dist/providers/search-algolia/index.d.cts +0 -251
  2544. package/dist/providers/search-algolia/index.d.ts +0 -251
  2545. package/dist/providers/search-algolia/index.js +0 -280
  2546. package/dist/providers/search-algolia/index.js.map +0 -1
  2547. package/dist/providers/shipping-shiprocket/index.cjs +0 -147
  2548. package/dist/providers/shipping-shiprocket/index.cjs.map +0 -1
  2549. package/dist/providers/shipping-shiprocket/index.d.cts +0 -236
  2550. package/dist/providers/shipping-shiprocket/index.js.map +0 -1
  2551. package/dist/providers/storage-firebase/index.cjs +0 -176
  2552. package/dist/providers/storage-firebase/index.cjs.map +0 -1
  2553. package/dist/providers/storage-firebase/index.d.cts +0 -53
  2554. package/dist/providers/storage-firebase/index.js.map +0 -1
  2555. package/dist/react/index.cjs +0 -1687
  2556. package/dist/react/index.cjs.map +0 -1
  2557. package/dist/react/index.d.cts +0 -788
  2558. package/dist/react/index.js.map +0 -1
  2559. package/dist/repository-BO60jtdT.d.cts +0 -61
  2560. package/dist/repository-BO60jtdT.d.ts +0 -61
  2561. package/dist/repository-jKU_Ji1P.d.cts +0 -44
  2562. package/dist/repository-jKU_Ji1P.d.ts +0 -44
  2563. package/dist/security/index.cjs +0 -138
  2564. package/dist/security/index.cjs.map +0 -1
  2565. package/dist/security/index.d.cts +0 -309
  2566. package/dist/security/index.js.map +0 -1
  2567. package/dist/seed/index.cjs +0 -1085
  2568. package/dist/seed/index.cjs.map +0 -1
  2569. package/dist/seed/index.d.cts +0 -397
  2570. package/dist/seed/index.js.map +0 -1
  2571. package/dist/seo/index.cjs +0 -81
  2572. package/dist/seo/index.cjs.map +0 -1
  2573. package/dist/seo/index.d.cts +0 -150
  2574. package/dist/seo/index.js.map +0 -1
  2575. package/dist/style/tailwind/index.cjs +0 -40
  2576. package/dist/style/tailwind/index.cjs.map +0 -1
  2577. package/dist/style/tailwind/index.d.cts +0 -34
  2578. package/dist/style/tailwind/index.js.map +0 -1
  2579. package/dist/style/vanilla/index.cjs +0 -40
  2580. package/dist/style/vanilla/index.cjs.map +0 -1
  2581. package/dist/style/vanilla/index.d.cts +0 -26
  2582. package/dist/style/vanilla/index.js.map +0 -1
  2583. package/dist/style-BSlM-eWG.d.cts +0 -25
  2584. package/dist/style-BSlM-eWG.d.ts +0 -25
  2585. package/dist/tokens/index.cjs +0 -45
  2586. package/dist/tokens/index.cjs.map +0 -1
  2587. package/dist/tokens/index.d.cts +0 -734
  2588. package/dist/tokens/index.js.map +0 -1
  2589. package/dist/ui/index.cjs +0 -4870
  2590. package/dist/ui/index.cjs.map +0 -1
  2591. package/dist/ui/index.d.cts +0 -1644
  2592. package/dist/ui/index.js.map +0 -1
  2593. package/dist/utils/index.cjs +0 -505
  2594. package/dist/utils/index.cjs.map +0 -1
  2595. package/dist/utils/index.d.cts +0 -545
  2596. package/dist/utils/index.js.map +0 -1
  2597. package/dist/validation/index.cjs +0 -153
  2598. package/dist/validation/index.cjs.map +0 -1
  2599. package/dist/validation/index.d.cts +0 -126
  2600. package/dist/validation/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/errors/base-error.ts","../../../src/errors/error-codes.ts","../../../src/errors/api-error.ts","../../../src/errors/validation-error.ts","../../../src/errors/authentication-error.ts","../../../src/errors/authorization-error.ts","../../../src/errors/not-found-error.ts","../../../src/errors/database-error.ts","../../../src/errors/error-handler.ts","../../../src/errors/index.ts","../../../src/contracts/registry.ts","../../../src/next/api/routeHandler.ts","../../../src/next/request-helpers.ts","../../../src/core/Logger.ts","../../../src/core/Queue.ts","../../../src/core/StorageManager.ts","../../../src/core/EventBus.ts","../../../src/security/authorization.ts","../../../src/monitoring/client-logger.ts","../../../src/monitoring/server-logger.ts","../../../src/features/media/types/index.ts","../../../src/features/products/api/route.ts","../../../src/features/products/api/%5Bid%5D/route.ts"],"names":["NextResponse","z","GET"],"mappings":"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","file":"server.cjs","sourcesContent":["export class AppError extends Error {\n constructor(\n public statusCode: number,\n public message: string,\n public code: string,\n public data?: unknown,\n ) {\n super(message);\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n toJSON(): {\n success: false;\n error: string;\n code: string;\n statusCode: number;\n data?: unknown;\n } {\n return {\n success: false,\n error: this.message,\n code: this.code,\n statusCode: this.statusCode,\n ...(this.data !== undefined && { data: this.data }),\n };\n }\n}\n","export const ERROR_CODES = {\n // Authentication\n AUTH_INVALID_CREDENTIALS: \"AUTH_001\",\n AUTH_TOKEN_EXPIRED: \"AUTH_002\",\n AUTH_TOKEN_INVALID: \"AUTH_003\",\n AUTH_SESSION_EXPIRED: \"AUTH_004\",\n AUTH_EMAIL_NOT_VERIFIED: \"AUTH_005\",\n\n // Validation\n VALIDATION_REQUIRED_FIELD: \"VAL_001\",\n VALIDATION_INVALID_INPUT: \"VAL_002\",\n VALIDATION_INVALID_EMAIL: \"VAL_003\",\n VALIDATION_INVALID_PASSWORD: \"VAL_004\",\n VALIDATION_INVALID_PHONE: \"VAL_005\",\n\n // User\n USER_NOT_FOUND: \"USER_001\",\n USER_ALREADY_EXISTS: \"USER_002\",\n USER_NOT_AUTHENTICATED: \"USER_003\",\n USER_ACCOUNT_DISABLED: \"USER_004\",\n\n // Database\n DB_OPERATION_FAILED: \"DB_001\",\n DB_NOT_FOUND: \"DB_002\",\n DB_DUPLICATE_ENTRY: \"DB_003\",\n\n // Email\n EMAIL_SEND_FAILED: \"EMAIL_001\",\n EMAIL_INVALID_TEMPLATE: \"EMAIL_002\",\n EMAIL_RATE_LIMITED: \"EMAIL_003\",\n EMAIL_DELIVERY_FAILED: \"EMAIL_004\",\n\n // Password\n PWD_RESET_TOKEN_EXPIRED: \"PWD_001\",\n PWD_RESET_TOKEN_INVALID: \"PWD_002\",\n PWD_TOO_WEAK: \"PWD_003\",\n PWD_HISTORY_REUSE: \"PWD_004\",\n PWD_SAME_AS_CURRENT: \"PWD_005\",\n\n // Authorization\n AUTHZ_FORBIDDEN: \"AUTHZ_001\",\n AUTHZ_INSUFFICIENT_ROLE: \"AUTHZ_002\",\n\n // General\n GEN_BAD_REQUEST: \"GEN_001\",\n GEN_NOT_FOUND: \"GEN_002\",\n GEN_INTERNAL_ERROR: \"GEN_003\",\n GEN_SERVICE_UNAVAILABLE: \"GEN_004\",\n GEN_RATE_LIMITED: \"GEN_005\",\n GEN_UNKNOWN: \"GEN_999\",\n} as const;\n\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\n\nexport const ERROR_MESSAGES: Record<ErrorCode, string> = {\n // Authentication\n AUTH_001: \"Invalid email or password\",\n AUTH_002: \"Your session has expired. Please log in again\",\n AUTH_003: \"Invalid authentication token\",\n AUTH_004: \"Your session has expired. Please log in again\",\n AUTH_005: \"Please verify your email address before logging in\",\n\n // Validation\n VAL_001: \"This field is required\",\n VAL_002: \"Invalid input provided\",\n VAL_003: \"Please enter a valid email address\",\n VAL_004:\n \"Password must be at least 12 characters with uppercase, lowercase, number and special character\",\n VAL_005: \"Please enter a valid phone number\",\n\n // User\n USER_001: \"User not found\",\n USER_002: \"An account with this email already exists\",\n USER_003: \"Please log in to continue\",\n USER_004: \"Your account has been disabled. Please contact support\",\n\n // Database\n DB_001: \"A database error occurred. Please try again\",\n DB_002: \"The requested resource was not found\",\n DB_003: \"This record already exists\",\n\n // Email\n EMAIL_001: \"Failed to send email. Please try again\",\n EMAIL_002: \"Invalid email template\",\n EMAIL_003: \"Too many emails sent. Please wait before trying again\",\n EMAIL_004: \"Email delivery failed. Please check the address and try again\",\n\n // Password\n PWD_001: \"Password reset link has expired. Please request a new one\",\n PWD_002: \"Invalid password reset link\",\n PWD_003: \"Password does not meet security requirements\",\n PWD_004: \"Cannot reuse a recent password\",\n PWD_005: \"New password must be different from your current password\",\n\n // Authorization\n AUTHZ_001: \"You do not have permission to perform this action\",\n AUTHZ_002: \"Insufficient role to perform this action\",\n\n // General\n GEN_001: \"Bad request\",\n GEN_002: \"The requested resource was not found\",\n GEN_003: \"An internal server error occurred\",\n GEN_004: \"Service temporarily unavailable\",\n GEN_005: \"Too many requests. Please slow down\",\n GEN_999: \"An unknown error occurred\",\n};\n","import { AppError } from \"./base-error\";\n\nexport class ApiError extends AppError {\n constructor(statusCode: number, message: string, data?: unknown) {\n super(statusCode, message, \"API_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class ValidationError extends AppError {\n constructor(message: string, fields?: unknown) {\n super(400, message, \"VALIDATION_ERROR\", fields);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class AuthenticationError extends AppError {\n constructor(message: string, data?: unknown) {\n super(401, message, \"AUTHENTICATION_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class AuthorizationError extends AppError {\n constructor(message: string, data?: unknown) {\n super(403, message, \"AUTHORIZATION_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class NotFoundError extends AppError {\n constructor(message: string, data?: unknown) {\n super(404, message, \"NOT_FOUND\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class DatabaseError extends AppError {\n constructor(message: string, data?: unknown) {\n super(500, message, \"DATABASE_ERROR\", data);\n }\n}\n","import { NextResponse } from \"next/server.js\";\nimport { AppError } from \"./base-error\";\nimport { ERROR_CODES, ERROR_MESSAGES } from \"./error-codes\";\n\n/**\n * Handle API errors with consistent response format.\n * Use in Next.js API route catch blocks.\n */\nexport function handleApiError(error: unknown): NextResponse {\n if (error instanceof AppError) {\n if (error.statusCode >= 500) {\n console.error(\"[API Error]\", {\n code: error.code,\n message: error.message,\n statusCode: error.statusCode,\n data: error.data,\n });\n }\n return NextResponse.json(error.toJSON(), { status: error.statusCode });\n }\n\n // Zod / schema validation errors\n if (error && typeof error === \"object\" && \"issues\" in error) {\n return NextResponse.json(\n {\n success: false,\n error: \"Validation failed\",\n code: ERROR_CODES.VALIDATION_INVALID_INPUT,\n data: error,\n },\n { status: 400 },\n );\n }\n\n console.error(\"[Unexpected API Error]\", {\n error:\n error instanceof Error\n ? { name: error.name, message: error.message, stack: error.stack }\n : error,\n });\n\n return NextResponse.json(\n {\n success: false,\n error: ERROR_MESSAGES[ERROR_CODES.GEN_INTERNAL_ERROR],\n code: ERROR_CODES.GEN_INTERNAL_ERROR,\n },\n { status: 500 },\n );\n}\n\n/**\n * Log an error with optional context. Wraps console.error for package portability;\n * replace with your structured logger if needed.\n */\nexport function logError(\n error: unknown,\n context?: Record<string, unknown>,\n): void {\n console.error(\"[Application Error]\", {\n ...(context && { context }),\n error:\n error instanceof Error\n ? { name: error.name, message: error.message, stack: error.stack }\n : error,\n });\n}\n\n/**\n * Type guard — check if a value is an AppError instance.\n */\nexport function isAppError(error: unknown): error is AppError {\n return error instanceof AppError;\n}\n","export { AppError } from \"./base-error\";\nexport { ERROR_CODES, ERROR_MESSAGES } from \"./error-codes\";\nexport type { ErrorCode } from \"./error-codes\";\nexport { ApiError } from \"./api-error\";\nexport { ValidationError } from \"./validation-error\";\nexport { AuthenticationError } from \"./authentication-error\";\nexport { AuthorizationError } from \"./authorization-error\";\nexport { NotFoundError } from \"./not-found-error\";\nexport { DatabaseError } from \"./database-error\";\n// error-handler uses `next/server` — only import in server/API-route contexts\nexport { handleApiError, logError, isAppError } from \"./error-handler\";\n","import type { IAuthProvider, ISessionProvider } from \"./auth.js\";\nimport type { IEmailProvider } from \"./email.js\";\nimport type { IStorageProvider } from \"./storage.js\";\nimport type { IPaymentProvider } from \"./payment.js\";\nimport type { IShippingProvider } from \"./shipping.js\";\nimport type { ISearchProvider } from \"./search.js\";\nimport type { ICacheProvider, IQueueProvider, IEventBus } from \"./infra.js\";\nimport type { IStyleAdapter } from \"./style.js\";\nimport type { IDbProvider } from \"./repository.js\";\n\nexport interface ProviderRegistry {\n auth: IAuthProvider;\n session: ISessionProvider;\n email: IEmailProvider;\n storage: IStorageProvider;\n style: IStyleAdapter;\n db?: IDbProvider;\n payment?: IPaymentProvider;\n shipping?: IShippingProvider;\n search?: ISearchProvider;\n cache?: ICacheProvider;\n queue?: IQueueProvider;\n eventBus?: IEventBus;\n}\n\nlet _registry: ProviderRegistry | null = null;\n\nexport function registerProviders(registry: ProviderRegistry): void {\n _registry = registry;\n}\n\nexport function getProviders(): ProviderRegistry {\n if (!_registry) {\n throw new Error(\n \"[contracts] Call registerProviders() before getProviders(). \" +\n \"Ensure providers.config.ts is imported at app startup.\",\n );\n }\n return _registry;\n}\n\nexport function _resetProviders(): void {\n _registry = null;\n}","/**\r\n * createRouteHandler — provider-aware API route handler factory for feat-* packages.\r\n *\r\n * Works like letitrip.in's local `createApiHandler` but uses `getProviders().session`\r\n * for auth instead of a hardwired Firebase Admin call. This makes it portable across\r\n * all consumer projects that register an `ISessionProvider`.\r\n *\r\n * @example\r\n * ```ts\r\n * export const POST = createRouteHandler({\r\n * auth: true,\r\n * roles: [\"admin\"],\r\n * schema: mySchema,\r\n * handler: async ({ user, body }) => { ... },\r\n * });\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\n\r\n/** Minimal schema interface compatible with Zod v3 and v4. */\r\ninterface ParseableSchema<TOutput> {\r\n safeParse(\r\n data: unknown,\r\n ):\r\n | { success: true; data: TOutput }\r\n | { success: false; error: { issues?: unknown[] } };\r\n}\r\n\r\nexport interface RouteUser {\r\n uid: string;\r\n email?: string | null;\r\n role?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\ninterface RouteHandlerOptions<\r\n TInput = unknown,\r\n TParams = Record<string, string>,\r\n> {\r\n /** Require a valid session cookie. Implied when `roles` is set. */\r\n auth?: boolean;\r\n /**\r\n * If provided, the verified user's `role` must be in this list.\r\n * Implies `auth: true`.\r\n */\r\n roles?: string[];\r\n /** Zod schema to validate + parse the JSON request body. */\r\n schema?: ParseableSchema<TInput>;\r\n /** Route handler. `user` is present when `auth: true`. */\r\n handler: (ctx: {\r\n request: Request;\r\n user?: RouteUser;\r\n body?: TInput;\r\n params?: TParams;\r\n }) => Promise<Response>;\r\n}\r\n\r\n/** Read the `__session` HTTP-only cookie from request headers. */\r\nfunction readSessionCookie(request: Request): string | null {\r\n const cookieHeader = request.headers.get(\"cookie\") ?? \"\";\r\n const match = cookieHeader.match(/(?:^|;\\s*)__session=([^;]+)/);\r\n return match ? decodeURIComponent(match[1]) : null;\r\n}\r\n\r\n/**\r\n * Verify the session cookie using `getProviders().session`.\r\n * Returns a `RouteUser` on success, or throws for invalid credentials.\r\n */\r\nasync function verifySession(request: Request): Promise<RouteUser> {\r\n const { session } = getProviders();\r\n if (!session) {\r\n throw Object.assign(new Error(\"Session provider not configured\"), {\r\n status: 503,\r\n });\r\n }\r\n const cookie = readSessionCookie(request);\r\n if (!cookie) {\r\n throw Object.assign(new Error(\"Authentication required\"), { status: 401 });\r\n }\r\n try {\r\n const payload = await session.verifySession(cookie);\r\n return {\r\n uid: payload.uid,\r\n email: payload.email,\r\n role: payload.role,\r\n emailVerified: payload.emailVerified,\r\n ...payload.claims,\r\n };\r\n } catch {\r\n throw Object.assign(new Error(\"Invalid or expired session\"), {\r\n status: 401,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Create a typed Next.js App Router handler with built-in auth + Zod validation.\r\n */\r\nexport function createRouteHandler<\r\n TInput = unknown,\r\n TParams = Record<string, string>,\r\n>(options: RouteHandlerOptions<TInput, TParams>) {\r\n return async (\r\n request: Request,\r\n context: { params: Promise<TParams> },\r\n ): Promise<Response> => {\r\n try {\r\n // ── Auth ──────────────────────────────────────────────────────────────\r\n let user: RouteUser | undefined;\r\n const needsAuth =\r\n options.auth || (options.roles && options.roles.length > 0);\r\n\r\n if (needsAuth) {\r\n user = await verifySession(request);\r\n }\r\n\r\n if (options.roles && options.roles.length > 0) {\r\n if (!user || !options.roles.includes(user.role ?? \"\")) {\r\n return NextResponse.json(\r\n { success: false, error: \"Insufficient permissions\" },\r\n { status: 403 },\r\n );\r\n }\r\n }\r\n\r\n // ── Body validation ───────────────────────────────────────────────────\r\n let body: TInput | undefined;\r\n if (options.schema) {\r\n let raw: unknown;\r\n try {\r\n raw = await request.json();\r\n } catch {\r\n return NextResponse.json(\r\n { success: false, error: \"Invalid JSON body\" },\r\n { status: 400 },\r\n );\r\n }\r\n const result = options.schema.safeParse(raw);\r\n if (!result.success) {\r\n return NextResponse.json(\r\n {\r\n success: false,\r\n error: \"Validation failed\",\r\n issues: result.error.issues ?? [],\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n body = result.data;\r\n }\r\n\r\n // ── Params ────────────────────────────────────────────────────────────\r\n const params = context?.params ? await context.params : undefined;\r\n\r\n return await options.handler({\r\n request,\r\n user,\r\n body,\r\n params: params as TParams | undefined,\r\n });\r\n } catch (err: unknown) {\r\n // Structured errors thrown with .status\r\n const status =\r\n typeof (err as { status?: unknown })?.status === \"number\"\r\n ? (err as { status: number }).status\r\n : 500;\r\n const message =\r\n err instanceof Error ? err.message : \"Internal server error\";\r\n console.error(`[createRouteHandler] ${request.method} failed`, err);\r\n return NextResponse.json({ success: false, error: message }, { status });\r\n }\r\n };\r\n}\r\n","/**\r\n * API Request Helpers\r\n *\r\n * Generic utilities for API route request parsing and session extraction.\r\n * Uses structural request types (not NextRequest) to avoid cross-package\r\n * type identity issues when multiple Next.js installs exist in a monorepo.\r\n */\r\n\r\nimport { AuthenticationError } from \"@mohasinac/errors\";\r\n\r\ninterface CookieStoreLike {\r\n get(name: string): { value?: string } | string | undefined;\r\n}\r\n\r\ntype CookieCapableRequest = Request & { cookies?: CookieStoreLike };\r\n\r\nfunction readCookieFromHeader(request: Request, name: string): string | undefined {\r\n const cookieHeader = request.headers.get(\"cookie\") ?? \"\";\r\n const match = cookieHeader.match(\r\n new RegExp(`(?:^|;\\\\s*)${name}=([^;]+)`),\r\n );\r\n return match ? decodeURIComponent(match[1]) : undefined;\r\n}\r\n\r\nexport function getSearchParams(request: Request): URLSearchParams {\r\n return new URL(request.url).searchParams;\r\n}\r\n\r\nexport function getOptionalSessionCookie(\r\n request: CookieCapableRequest,\r\n): string | undefined {\r\n const cookieValue = request.cookies?.get(\"__session\");\r\n if (typeof cookieValue === \"string\") return cookieValue;\r\n if (cookieValue && typeof cookieValue === \"object\") return cookieValue.value;\r\n return readCookieFromHeader(request, \"__session\");\r\n}\r\n\r\nexport function getRequiredSessionCookie(request: CookieCapableRequest): string {\r\n const cookie = getOptionalSessionCookie(request);\r\n if (!cookie) throw new AuthenticationError(\"Unauthorized\");\r\n return cookie;\r\n}\r\n\r\nexport function getBooleanParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n): boolean | undefined {\r\n const value = searchParams.get(key);\r\n if (value === null) return undefined;\r\n return value === \"true\";\r\n}\r\n\r\nexport function getStringParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n): string | undefined {\r\n const value = searchParams.get(key);\r\n if (!value) return undefined;\r\n return value;\r\n}\r\n\r\nexport function getNumberParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n fallback: number,\r\n options?: { min?: number; max?: number },\r\n): number {\r\n const rawValue = searchParams.get(key);\r\n const parsed = rawValue ? Number.parseInt(rawValue, 10) : fallback;\r\n const safeValue = Number.isNaN(parsed) ? fallback : parsed;\r\n if (typeof options?.min === \"number\" && safeValue < options.min)\r\n return options.min;\r\n if (typeof options?.max === \"number\" && safeValue > options.max)\r\n return options.max;\r\n return safeValue;\r\n}\r\n","/**\n * Logger Class — @mohasinac/core\n *\n * Singleton class for application logging.\n * Pure utility — no framework or app-specific imports.\n *\n * The `logFileUrl` constructor option replaces the previous app-specific\n * `import(\"@/constants\")` call, making this usable in any context.\n */\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n data?: unknown;\n}\n\nexport interface LoggerOptions {\n minLevel?: LogLevel;\n enableConsole?: boolean;\n enableStorage?: boolean;\n /**\n * URL to POST error log entries. Set to your `/api/logs/write` route.\n */\n logFileUrl?: string;\n /**\n * @deprecated Prefer `logFileUrl`. When `true` and `logFileUrl` is not set,\n * defaults to `/api/logs/write` for backward compatibility with the\n * previous app-coupled Logger implementation.\n */\n enableFileLogging?: boolean;\n maxEntries?: number;\n /** Optional function to sanitize data before logging (e.g., PII redaction). */\n sanitizer?: (data: unknown) => unknown;\n}\n\nexport class Logger {\n private static instance: Logger;\n private logs: LogEntry[] = [];\n private options: Required<\n Omit<LoggerOptions, \"logFileUrl\" | \"enableFileLogging\" | \"sanitizer\">\n > & {\n logFileUrl?: string;\n sanitizer?: (data: unknown) => unknown;\n };\n private levelPriority: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n };\n\n private constructor(options?: LoggerOptions) {\n // `enableFileLogging: true` is a backward-compat alias for logFileUrl.\n const fileUrl =\n options?.logFileUrl ??\n (options?.enableFileLogging ? \"/api/logs/write\" : undefined);\n this.options = {\n minLevel: options?.minLevel ?? \"debug\",\n enableConsole: options?.enableConsole ?? true,\n enableStorage: options?.enableStorage ?? false,\n logFileUrl: fileUrl,\n maxEntries: options?.maxEntries ?? 1000,\n sanitizer: options?.sanitizer,\n };\n }\n\n /** Get singleton instance */\n public static getInstance(options?: LoggerOptions): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger(options);\n }\n return Logger.instance;\n }\n\n /** Set or update the data sanitizer (e.g., for PII redaction). */\n public static setSanitizer(fn: (data: unknown) => unknown): void {\n Logger.getInstance().options.sanitizer = fn;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return (\n this.levelPriority[level] >= this.levelPriority[this.options.minLevel]\n );\n }\n\n private addLog(level: LogLevel, message: string, data?: unknown): void {\n if (!this.shouldLog(level)) return;\n\n const sanitized =\n data && this.options.sanitizer ? this.options.sanitizer(data) : data;\n const entry: LogEntry = {\n level,\n message,\n timestamp: new Date(),\n data: sanitized,\n };\n\n this.logs.push(entry);\n if (this.logs.length > this.options.maxEntries) {\n this.logs.shift();\n }\n\n if (this.options.enableConsole) {\n this.logToConsole(entry);\n }\n\n if (this.options.enableStorage && typeof window !== \"undefined\") {\n this.saveToStorage();\n }\n\n if (this.options.logFileUrl && level === \"error\") {\n this.writeToFile(entry).catch(() => {\n // Silently fail to prevent recursive logging\n });\n }\n }\n\n private logToConsole(entry: LogEntry): void {\n const prefix = `[${entry.level.toUpperCase()}] ${entry.timestamp.toISOString()}`;\n const message = `${prefix} ${entry.message}`;\n switch (entry.level) {\n case \"debug\":\n console.debug(message, entry.data);\n break;\n case \"info\":\n console.info(message, entry.data);\n break;\n case \"warn\":\n console.warn(message, entry.data);\n break;\n case \"error\":\n console.error(message, entry.data);\n break;\n }\n }\n\n private saveToStorage(): void {\n try {\n localStorage.setItem(\"app_logs\", JSON.stringify(this.logs));\n } catch {\n // Silently fail\n }\n }\n\n private async writeToFile(entry: LogEntry): Promise<void> {\n if (typeof window === \"undefined\" || !this.options.logFileUrl) return;\n try {\n await fetch(this.options.logFileUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n level: entry.level,\n message: entry.message,\n timestamp: entry.timestamp.toISOString(),\n data: entry.data,\n }),\n });\n } catch {\n // Silently fail\n }\n }\n\n public debug(message: string, data?: unknown): void {\n this.addLog(\"debug\", message, data);\n }\n\n public info(message: string, data?: unknown): void {\n this.addLog(\"info\", message, data);\n }\n\n public warn(message: string, data?: unknown): void {\n this.addLog(\"warn\", message, data);\n }\n\n public error(message: string, data?: unknown): void {\n this.addLog(\"error\", message, data);\n }\n\n public getLogs(level?: LogLevel): LogEntry[] {\n if (level) return this.logs.filter((log) => log.level === level);\n return [...this.logs];\n }\n\n public clear(): void {\n this.logs = [];\n if (this.options.enableStorage && typeof window !== \"undefined\") {\n localStorage.removeItem(\"app_logs\");\n }\n }\n\n public export(): string {\n return JSON.stringify(this.logs, null, 2);\n }\n\n public getStats(): Record<LogLevel, number> {\n return {\n debug: this.logs.filter((l) => l.level === \"debug\").length,\n info: this.logs.filter((l) => l.level === \"info\").length,\n warn: this.logs.filter((l) => l.level === \"warn\").length,\n error: this.logs.filter((l) => l.level === \"error\").length,\n };\n }\n}\n\n/** Shared singleton instance */\nexport const logger = Logger.getInstance();\n","/**\n * Queue Class — @mohasinac/core\n *\n * Generic priority queue for task management.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst qLogger = Logger.getInstance();\n\nexport interface QueueOptions {\n concurrency?: number;\n autoStart?: boolean;\n}\n\nexport interface Task<T = unknown> {\n id: string;\n fn: () => Promise<T>;\n priority?: number;\n}\n\nexport class Queue<T = unknown> {\n private tasks: Task<T>[] = [];\n private running: number = 0;\n private readonly concurrency: number;\n private autoStart: boolean;\n private results: Map<string, T> = new Map();\n private errors: Map<string, Error> = new Map();\n\n constructor(options?: QueueOptions) {\n this.concurrency = options?.concurrency ?? 1;\n this.autoStart = options?.autoStart ?? true;\n }\n\n /** Add a task to the queue */\n public add(id: string, fn: () => Promise<T>, priority: number = 0): void {\n this.tasks.push({ id, fn, priority });\n this.tasks.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n if (this.autoStart) {\n this.process();\n }\n }\n\n private process(): void {\n while (this.running < this.concurrency && this.tasks.length > 0) {\n const task = this.tasks.shift();\n if (!task) break;\n this.running++;\n task\n .fn()\n .then((result) => {\n this.results.set(task.id, result);\n })\n .catch((error: unknown) => {\n this.errors.set(task.id, error as Error);\n })\n .finally(() => {\n this.running--;\n this.process();\n })\n .catch((err: unknown) => {\n qLogger.error(\"Queue.process error in finally\", { err });\n });\n }\n }\n\n public start(): void {\n this.process();\n }\n\n public pause(): void {\n this.autoStart = false;\n }\n\n public resume(): void {\n this.autoStart = true;\n this.process();\n }\n\n public clear(): void {\n this.tasks = [];\n this.results.clear();\n this.errors.clear();\n }\n\n public getResult(id: string): T | undefined {\n return this.results.get(id);\n }\n\n public getError(id: string): Error | undefined {\n return this.errors.get(id);\n }\n\n public size(): number {\n return this.tasks.length;\n }\n\n public getRunning(): number {\n return this.running;\n }\n\n public isEmpty(): boolean {\n return this.tasks.length === 0 && this.running === 0;\n }\n\n public async waitForCompletion(): Promise<void> {\n while (!this.isEmpty()) {\n await new Promise<void>((resolve) => setTimeout(resolve, 100));\n }\n }\n\n public getStats(): {\n pending: number;\n running: number;\n completed: number;\n failed: number;\n } {\n return {\n pending: this.tasks.length,\n running: this.running,\n completed: this.results.size,\n failed: this.errors.size,\n };\n }\n}\n","/**\n * StorageManager Class — @mohasinac/core\n *\n * Singleton class for managing localStorage and sessionStorage with\n * namespace prefixing and SSR-safe fallbacks.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst sLogger = Logger.getInstance();\n\nexport type StorageType = \"local\" | \"session\";\n\nexport interface StorageOptions {\n type?: StorageType;\n prefix?: string;\n}\n\nexport class StorageManager {\n /** Per-prefix instance map — prevents namespace collisions */\n private static instances = new Map<string, StorageManager>();\n private readonly prefix: string;\n\n private constructor(prefix: string = \"app_\") {\n this.prefix = prefix;\n }\n\n /**\n * Get-or-create a StorageManager for the given prefix.\n * Each prefix returns an independent instance.\n */\n public static getInstance(prefix: string = \"\"): StorageManager {\n if (!StorageManager.instances.has(prefix)) {\n StorageManager.instances.set(prefix, new StorageManager(prefix));\n }\n return StorageManager.instances.get(prefix)!;\n }\n\n private getStorage(type: StorageType): Storage | null {\n try {\n if (typeof window === \"undefined\") return null;\n const storage =\n type === \"local\" ? window.localStorage : window.sessionStorage;\n return storage ?? null;\n } catch {\n return null;\n }\n }\n\n private generateKey(key: string): string {\n return `${this.prefix}${key}`;\n }\n\n public set<T>(key: string, value: T, options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n storage.setItem(this.generateKey(key), JSON.stringify(value));\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.set error\", { error });\n return false;\n }\n }\n\n public get<T>(key: string, options?: StorageOptions): T | null {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return null;\n try {\n const item = storage.getItem(this.generateKey(key));\n if (item === null) return null;\n return JSON.parse(item) as T;\n } catch (error) {\n sLogger.error(\"StorageManager.get error\", { error });\n return null;\n }\n }\n\n public remove(key: string, options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n storage.removeItem(this.generateKey(key));\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.remove error\", { error });\n return false;\n }\n }\n\n public clear(options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n const keys = Object.keys(storage);\n keys.forEach((k) => {\n if (k.startsWith(this.prefix)) storage.removeItem(k);\n });\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.clear error\", { error });\n return false;\n }\n }\n\n public has(key: string, options?: StorageOptions): boolean {\n return this.get(key, options) !== null;\n }\n\n public keys(options?: StorageOptions): string[] {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return [];\n const result: string[] = [];\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n result.push(k.slice(this.prefix.length));\n }\n }\n return result;\n }\n\n public size(options?: StorageOptions): number {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return 0;\n let bytes = 0;\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n const v = storage.getItem(k);\n bytes += k.length + (v?.length ?? 0);\n }\n }\n return bytes;\n }\n\n public isAvailable(type: StorageType = \"local\"): boolean {\n const storage = this.getStorage(type);\n if (!storage) return false;\n try {\n const testKey = \"__storage_test__\";\n storage.setItem(testKey, \"1\");\n storage.removeItem(testKey);\n return true;\n } catch {\n return false;\n }\n }\n\n public getAll<T = unknown>(options?: StorageOptions): Record<string, T> {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return {};\n const result: Record<string, T> = {};\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n const v = this.get<T>(k.slice(this.prefix.length), options);\n if (v !== null) result[k.slice(this.prefix.length)] = v;\n }\n }\n return result;\n }\n}\n\n/** Default StorageManager instance (empty prefix) */\nexport const storageManager = StorageManager.getInstance(\"\");\n","/**\n * EventBus Class — @mohasinac/core\n *\n * Singleton pub/sub event bus for decoupled communication.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst logger = Logger.getInstance();\n\ntype EventCallback = (...args: unknown[]) => void;\n\nexport interface EventSubscription {\n unsubscribe: () => void;\n}\n\nexport class EventBus {\n private static instance: EventBus;\n private readonly events: Map<string, EventCallback[]> = new Map();\n\n private constructor() {}\n\n public static getInstance(): EventBus {\n if (!EventBus.instance) {\n EventBus.instance = new EventBus();\n }\n return EventBus.instance;\n }\n\n public on(event: string, callback: EventCallback): EventSubscription {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return { unsubscribe: () => this.off(event, callback) };\n }\n\n public once(event: string, callback: EventCallback): EventSubscription {\n const wrapped = (...args: unknown[]) => {\n callback(...args);\n this.off(event, wrapped);\n };\n return this.on(event, wrapped);\n }\n\n public off(event: string, callback: EventCallback): void {\n const callbacks = this.events.get(event);\n if (!callbacks) return;\n const idx = callbacks.indexOf(callback);\n if (idx > -1) callbacks.splice(idx, 1);\n if (callbacks.length === 0) this.events.delete(event);\n }\n\n public emit(event: string, ...args: unknown[]): void {\n const callbacks = this.events.get(event);\n if (!callbacks) return;\n callbacks.forEach((cb) => {\n try {\n cb(...args);\n } catch (error) {\n logger.error(`EventBus: error in handler for \"${event}\"`, { error });\n }\n });\n }\n\n public removeAllListeners(event?: string): void {\n if (event) {\n this.events.delete(event);\n } else {\n this.events.clear();\n }\n }\n\n public listenerCount(event: string): number {\n return this.events.get(event)?.length ?? 0;\n }\n\n public eventNames(): string[] {\n return Array.from(this.events.keys());\n }\n\n public hasListeners(event: string): boolean {\n return this.listenerCount(event) > 0;\n }\n}\n\n/** Shared singleton instance */\nexport const eventBus = EventBus.getInstance();\n","/**\n * Authorization Guards\n *\n * Pure utility functions that throw AuthenticationError / AuthorizationError.\n * Suitable for API routes, Server Actions, and middleware.\n *\n * Note: getUserFromRequest / requireAuthFromRequest are intentionally omitted —\n * they depend on Firebase Admin and the user repository; implement them in your\n * app layer using these primitives.\n */\n\nimport { AuthenticationError, AuthorizationError } from \"@mohasinac/errors\";\n\nexport type UserRole = \"admin\" | \"moderator\" | \"seller\" | \"user\";\n\nconst ROLE_HIERARCHY: Record<UserRole, number> = {\n admin: 4,\n moderator: 3,\n seller: 2,\n user: 1,\n};\n\nconst MSG = {\n NOT_AUTHENTICATED: \"Please log in to continue\",\n FORBIDDEN: \"You do not have permission to perform this action\",\n EMAIL_NOT_VERIFIED: \"Please verify your email address before logging in\",\n ACCOUNT_DISABLED: \"Your account has been disabled. Please contact support\",\n};\n\nexport function requireAuth(user: unknown): void {\n if (!user) {\n throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n }\n}\n\nexport function requireRole(\n user: Record<string, unknown> | null | undefined,\n roles: UserRole | UserRole[],\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n const requiredRoles = Array.isArray(roles) ? roles : [roles];\n const userRole = (user.role as UserRole) || \"user\";\n if (!requiredRoles.includes(userRole)) {\n throw new AuthorizationError(MSG.FORBIDDEN);\n }\n}\n\nexport function requireOwnership(\n user: Record<string, unknown> | null | undefined,\n resourceOwnerId: string,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (user.uid !== resourceOwnerId) {\n throw new AuthorizationError(MSG.FORBIDDEN);\n }\n}\n\nexport function requireEmailVerified(\n user: Record<string, unknown> | null | undefined,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (!user.emailVerified) throw new AuthorizationError(MSG.EMAIL_NOT_VERIFIED);\n}\n\nexport function requireActiveAccount(\n user: Record<string, unknown> | null | undefined,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (user.disabled) throw new AuthorizationError(MSG.ACCOUNT_DISABLED);\n}\n\n/**\n * Check if currentUserRole is allowed to change a target user's role.\n * - admin: can change anyone's role\n * - moderator: can only change user → seller\n */\nexport function canChangeRole(\n currentUserRole: UserRole,\n targetCurrentRole: UserRole,\n targetNewRole: UserRole,\n): boolean {\n if (currentUserRole === \"admin\") return true;\n if (currentUserRole === \"moderator\") {\n return targetCurrentRole === \"user\" && targetNewRole === \"seller\";\n }\n return false;\n}\n\n/** Return the numeric hierarchy level for a role. */\nexport function getRoleLevel(role: UserRole): number {\n return ROLE_HIERARCHY[role] ?? 0;\n}\n","/**\r\n * Client-Side Error Logging Utilities\r\n *\r\n * Wraps the Logger singleton for use in React components, client hooks, and\r\n * browser-only code. Automatically attaches timestamp, userAgent, and current URL.\r\n *\r\n * For server-side logging use `server-logger.ts`.\r\n */\r\n\r\nimport { logger } from \"../core\";\r\nimport { AppError } from \"../errors\";\r\n\r\nexport interface ClientErrorContext {\r\n userId?: string;\r\n component?: string;\r\n action?: string;\r\n url?: string;\r\n method?: string;\r\n statusCode?: number;\r\n [key: string]: unknown;\r\n}\r\n\r\nfunction buildClientMeta(\r\n error: unknown,\r\n context?: ClientErrorContext,\r\n): Record<string, unknown> {\r\n const base: Record<string, unknown> = {\r\n ...context,\r\n timestamp: new Date().toISOString(),\r\n userAgent:\r\n typeof navigator !== \"undefined\" ? navigator.userAgent : \"unknown\",\r\n url: typeof window !== \"undefined\" ? window.location.href : \"unknown\",\r\n };\r\n\r\n if (error instanceof AppError) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n code: error.code,\r\n statusCode: error.statusCode,\r\n data: error.data,\r\n };\r\n } else if (error instanceof Error) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n stack: error.stack,\r\n };\r\n } else {\r\n base.error = error;\r\n }\r\n\r\n return base;\r\n}\r\n\r\nexport const logClientError = (\r\n message: string,\r\n error: unknown,\r\n context?: ClientErrorContext,\r\n): void => {\r\n logger.error(message, buildClientMeta(error, context));\r\n};\r\n\r\nexport const logClientWarning = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.warn(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logClientInfo = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.info(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logClientDebug = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.debug(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n","/**\r\n * Server-Side Error Logging Utilities\r\n *\r\n * Wraps the Logger singleton for use in API routes, server components, and\r\n * server actions. Attaches request metadata when a NextRequest is available.\r\n *\r\n * IMPORTANT: Only import this file in server-side code. For client-side code\r\n * use `client-logger.ts`.\r\n */\r\n\r\nimport { logger } from \"../core\";\r\nimport { AppError } from \"../errors\";\r\nimport { type NextRequest } from \"next/server\";\r\n\r\nexport interface ServerErrorContext {\r\n userId?: string;\r\n endpoint?: string;\r\n method?: string;\r\n statusCode?: number;\r\n requestId?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\n/** Pull the commonly needed headers from a NextRequest in one call. */\r\nexport const extractRequestMetadata = (request: NextRequest) => ({\r\n method: request.method,\r\n url: request.url,\r\n userAgent: request.headers.get(\"user-agent\") ?? \"unknown\",\r\n ip:\r\n request.headers.get(\"x-forwarded-for\") ??\r\n request.headers.get(\"x-real-ip\") ??\r\n \"unknown\",\r\n referer: request.headers.get(\"referer\") ?? \"none\",\r\n});\r\n\r\nfunction buildServerMeta(\r\n error: unknown,\r\n context?: ServerErrorContext,\r\n): Record<string, unknown> {\r\n const base: Record<string, unknown> = {\r\n ...context,\r\n timestamp: new Date().toISOString(),\r\n };\r\n\r\n if (error instanceof AppError) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n code: error.code,\r\n statusCode: error.statusCode,\r\n data: error.data,\r\n };\r\n } else if (error instanceof Error) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n stack: error.stack,\r\n };\r\n } else {\r\n base.error = error;\r\n }\r\n\r\n return base;\r\n}\r\n\r\nexport const logServerError = (\r\n message: string,\r\n error: unknown,\r\n context?: ServerErrorContext,\r\n): void => {\r\n logger.error(message, buildServerMeta(error, context));\r\n};\r\n\r\nexport const logServerWarning = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.warn(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logServerInfo = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.info(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logServerDebug = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.debug(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n","import { z } from \"zod\";\r\n\r\nexport type MediaFieldType = \"image\" | \"video\" | \"file\";\r\n\r\nexport type MediaFieldInput = MediaField | string | null | undefined;\r\n\r\nexport interface MediaField {\r\n url: string;\r\n type: MediaFieldType;\r\n alt?: string;\r\n thumbnailUrl?: string;\r\n}\r\n\r\nexport const mediaFieldSchema = z.object({\r\n url: z.string().url(),\r\n type: z.enum([\"image\", \"video\", \"file\"]),\r\n alt: z.string().optional(),\r\n thumbnailUrl: z.string().url().optional(),\r\n});\r\n\r\nexport function coerceMediaField(\r\n value: MediaFieldInput,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n if (typeof value === \"string\") {\r\n return {\r\n url: value,\r\n type: fallbackType,\r\n };\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function coerceMediaFieldArray(\r\n values: Array<MediaField | string> | null | undefined,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField[] {\r\n if (!values || values.length === 0) {\r\n return [];\r\n }\r\n\r\n return values\r\n .map((value) => coerceMediaField(value, fallbackType))\r\n .filter((value): value is MediaField => value !== null);\r\n}\r\n\r\nexport function getMediaUrl(value: MediaFieldInput): string | undefined {\r\n return coerceMediaField(value)?.url;\r\n}\r\n\r\nexport function inferMediaTypeFromMime(\r\n mimeType?: string,\r\n url?: string,\r\n): MediaFieldType {\r\n if (mimeType?.startsWith(\"image/\")) return \"image\";\r\n if (mimeType?.startsWith(\"video/\")) return \"video\";\r\n\r\n if (url) {\r\n if (/\\.(jpe?g|png|gif|webp|svg)(\\?|$)/i.test(url)) return \"image\";\r\n if (/\\.(mp4|webm|ogg|mov|avi)(\\?|$)/i.test(url)) return \"video\";\r\n }\r\n\r\n return \"file\";\r\n}\r\n","/**\r\n * feat-products — Next.js App Router API handlers (GET /api/products, POST /api/products)\r\n *\r\n * These handlers are exported so consuming projects can create 2-line stubs:\r\n *\r\n * ```ts\r\n * // app/api/products/route.ts\r\n * export { GET, POST } from \"@mohasinac/feat-products\";\r\n * ```\r\n *\r\n * The db provider must be registered via providers.config.ts before the first\r\n * request is handled. Every read/write goes through the IRepository<ProductItem>\r\n * resolved from `getProviders().db.getRepository(\"products\")`.\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { z } from \"zod\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport { createRouteHandler } from \"@mohasinac/next\";\r\nimport type { ProductItem, ProductListResponse } from \"../types/index.js\";\r\nimport { mediaFieldSchema } from \"../../media/types/index.js\";\r\n\r\ntype ProductRecord = ProductItem & {\r\n sellerId?: string;\r\n sellerName?: string;\r\n};\r\n\r\n// ─── Mutation schemas ─────────────────────────────────────────────────────────\r\n// Minimal schemas for secured mutations — consumer apps can extend as needed.\r\n\r\nconst productMutateSchema = z\r\n .object({\r\n title: z.string().min(1).max(200).optional(),\r\n description: z.string().max(10000).optional(),\r\n price: z.number().positive().optional(),\r\n originalPrice: z.number().positive().optional(),\r\n currency: z.string().length(3).optional(),\r\n category: z.string().optional(),\r\n status: z\r\n .enum([\r\n \"draft\",\r\n \"published\",\r\n \"archived\",\r\n \"sold\",\r\n \"discontinued\",\r\n \"out_of_stock\",\r\n ])\r\n .optional(),\r\n mainImage: z.string().optional(),\r\n images: z.array(z.any()).optional(),\r\n tags: z.array(z.string()).optional(),\r\n featured: z.boolean().optional(),\r\n isPromoted: z.boolean().optional(),\r\n isAuction: z.boolean().optional(),\r\n isPreOrder: z.boolean().optional(),\r\n sellerId: z.string().optional(),\r\n sellerName: z.string().optional(),\r\n sellerEmail: z.string().email().optional(),\r\n slug: z.string().optional(),\r\n listingType: z\r\n .enum([\"fixed\", \"standard\", \"auction\", \"pre-order\"])\r\n .optional(),\r\n media: z.array(mediaFieldSchema).optional(),\r\n })\r\n .passthrough();\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────────────\r\n\r\nfunction param(url: URL, key: string): string | null {\r\n return url.searchParams.get(key);\r\n}\r\n\r\nfunction numParam(url: URL, key: string, fallback: number): number {\r\n const v = url.searchParams.get(key);\r\n const n = v !== null ? Number(v) : NaN;\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n\r\n/** Public fields callers may filter on via the ?filters= param. */\r\nconst SAFE_PRODUCT_FILTER_FIELDS = new Set([\r\n \"status\",\r\n \"category\",\r\n \"brand\",\r\n \"condition\",\r\n \"sellerId\",\r\n \"title\",\r\n \"price\",\r\n \"isAuction\",\r\n \"isPreOrder\",\r\n \"featured\",\r\n \"isPromoted\",\r\n \"stockQuantity\",\r\n \"availableQuantity\",\r\n \"tags\",\r\n]);\r\n\r\n/**\r\n * Validates a raw Sieve filter string against an allowlist of safe fields.\r\n * Drops any clause whose field name is not in the allowlist.\r\n */\r\nfunction validateSieveFilters(\r\n raw: string,\r\n allowedFields: ReadonlySet<string>,\r\n): string {\r\n return raw\r\n .split(\",\")\r\n .map((c) => c.trim())\r\n .filter((c) => {\r\n const m = c.match(/^([^<>=!@]+)\\s*(?:==|!=|<=|>=|<|>|@=\\*?)/);\r\n return m ? allowedFields.has(m[1].trim()) : false;\r\n })\r\n .join(\",\");\r\n}\r\n\r\nfunction buildFilters(url: URL): string {\r\n const parts: string[] = [];\r\n const status = param(url, \"status\");\r\n if (status) parts.push(`status==${status}`);\r\n const category = param(url, \"category\");\r\n if (category) parts.push(`category==${category}`);\r\n const brand = param(url, \"brand\");\r\n if (brand) parts.push(`brand==${brand}`);\r\n const condition = param(url, \"condition\");\r\n if (condition) parts.push(`condition==${condition}`);\r\n const sellerId = param(url, \"sellerId\");\r\n if (sellerId) parts.push(`sellerId==${sellerId}`);\r\n const q = param(url, \"q\");\r\n if (q) parts.push(`title@=*${q}`);\r\n const minPrice = param(url, \"minPrice\");\r\n if (minPrice !== null && !Number.isNaN(Number(minPrice)))\r\n parts.push(`price>=${minPrice}`);\r\n const maxPrice = param(url, \"maxPrice\");\r\n if (maxPrice !== null && !Number.isNaN(Number(maxPrice)))\r\n parts.push(`price<=${maxPrice}`);\r\n const inStock = param(url, \"inStock\");\r\n if (inStock === \"true\") parts.push(\"stockQuantity>0\");\r\n const isAuction = param(url, \"isAuction\");\r\n if (isAuction !== null) parts.push(`isAuction==${isAuction}`);\r\n const isPreOrder = param(url, \"isPreOrder\");\r\n if (isPreOrder !== null) parts.push(`isPreOrder==${isPreOrder}`);\r\n const featured = param(url, \"featured\");\r\n if (featured === \"true\") parts.push(\"featured==true\");\r\n // Merge validated Sieve filters — only safe public fields allowed\r\n const raw = param(url, \"filters\");\r\n if (raw) {\r\n const safe = validateSieveFilters(raw, SAFE_PRODUCT_FILTER_FIELDS);\r\n if (safe) parts.push(safe);\r\n }\r\n return parts.join(\",\");\r\n}\r\n\r\n// ─── GET /api/products ────────────────────────────────────────────────────────\r\n\r\nexport async function GET(request: Request): Promise<NextResponse> {\r\n try {\r\n const url = new URL(request.url);\r\n const page = numParam(url, \"page\", 1);\r\n const pageSize = numParam(url, \"pageSize\", 20);\r\n const sort = param(url, \"sorts\") ?? param(url, \"sort\") ?? \"-createdAt\";\r\n const filters = buildFilters(url);\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const repo = db.getRepository<ProductRecord>(\"products\");\r\n const result = await repo.findAll({\r\n filters,\r\n sort,\r\n page,\r\n perPage: pageSize,\r\n });\r\n\r\n const totalPages = Math.max(1, Math.ceil(result.total / pageSize));\r\n const body: ProductListResponse = {\r\n items: result.data,\r\n total: result.total,\r\n page: result.page,\r\n pageSize,\r\n totalPages,\r\n hasMore: result.page < totalPages,\r\n };\r\n\r\n const response = NextResponse.json({ success: true, data: body });\r\n response.headers.set(\r\n \"Cache-Control\",\r\n \"public, max-age=60, s-maxage=120, stale-while-revalidate=60\",\r\n );\r\n return response;\r\n } catch (error) {\r\n console.error(\"[feat-products] GET /api/products failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch products\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n\r\n// ─── POST /api/products ───────────────────────────────────────────────────────\r\n// Requires seller, moderator, or admin role.\r\n\r\nexport const POST = createRouteHandler({\r\n auth: true,\r\n roles: [\"seller\", \"moderator\", \"admin\"],\r\n schema: productMutateSchema,\r\n handler: async ({ user, body }) => {\r\n const payload = body as Record<string, unknown>;\r\n const userRecord = (user ?? {}) as Record<string, unknown>;\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n const repo = db.getRepository<ProductItem>(\"products\");\r\n const data: Partial<ProductItem> = {\r\n ...(payload as Partial<ProductRecord>),\r\n status: \"draft\",\r\n sellerId:\r\n typeof payload.sellerId === \"string\"\r\n ? payload.sellerId\r\n : typeof userRecord.uid === \"string\"\r\n ? userRecord.uid\r\n : undefined,\r\n sellerName:\r\n typeof payload.sellerName === \"string\"\r\n ? payload.sellerName\r\n : typeof userRecord.displayName === \"string\"\r\n ? userRecord.displayName\r\n : undefined,\r\n createdAt: new Date().toISOString(),\r\n updatedAt: new Date().toISOString(),\r\n };\r\n const created = await repo.create(data as Omit<ProductItem, \"id\">);\r\n return NextResponse.json({ success: true, data: created }, { status: 201 });\r\n },\r\n});\r\n","/**\r\n * feat-products — single-item route handlers (GET/PATCH/DELETE /api/products/[id])\r\n *\r\n * Consuming projects can create a 2-line stub:\r\n *\r\n * ```ts\r\n * // app/api/products/[id]/route.ts\r\n * export { productItemGET as GET, productItemPATCH as PATCH, productItemDELETE as DELETE }\r\n * from \"@mohasinac/feat-products\";\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { z } from \"zod\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport { createRouteHandler } from \"@mohasinac/next\";\r\nimport type { ProductItem } from \"../../types/index.js\";\r\nimport { mediaFieldSchema } from \"../../../media/types/index.js\";\r\n\r\ntype RouteContext = { params: Promise<{ id: string }> };\r\n\r\ntype ProductRecord = ProductItem & {\r\n sellerId?: string;\r\n};\r\n\r\nfunction getRepo() {\r\n const { db } = getProviders();\r\n if (!db) return null;\r\n return db.getRepository<ProductRecord>(\"products\");\r\n}\r\n\r\nconst productUpdateSchema = z\r\n .object({\r\n title: z.string().min(1).max(200).optional(),\r\n description: z.string().max(10000).optional(),\r\n price: z.number().positive().optional(),\r\n originalPrice: z.number().positive().optional(),\r\n currency: z.string().length(3).optional(),\r\n category: z.string().optional(),\r\n status: z\r\n .enum([\r\n \"draft\",\r\n \"published\",\r\n \"archived\",\r\n \"sold\",\r\n \"discontinued\",\r\n \"out_of_stock\",\r\n ])\r\n .optional(),\r\n mainImage: z.string().optional(),\r\n images: z.array(z.any()).optional(),\r\n tags: z.array(z.string()).optional(),\r\n featured: z.boolean().optional(),\r\n isPromoted: z.boolean().optional(),\r\n isAuction: z.boolean().optional(),\r\n isPreOrder: z.boolean().optional(),\r\n listingType: z\r\n .enum([\"fixed\", \"standard\", \"auction\", \"pre-order\"])\r\n .optional(),\r\n media: z.array(mediaFieldSchema).optional(),\r\n })\r\n .passthrough();\r\n\r\n// ─── GET /api/products/[id] ───────────────────────────────────────────────────\r\n\r\nexport async function GET(\r\n _request: Request,\r\n context: RouteContext,\r\n): Promise<NextResponse> {\r\n try {\r\n const { id } = await context.params;\r\n\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n // Support both Firestore document ID and URL slug\r\n let item = await repo.findById(id);\r\n if (!item) {\r\n // Slug fallback: search by slug==id, status==published\r\n const slugResult = await repo.findAll({\r\n filters: `slug==${id},status==published`,\r\n perPage: 1,\r\n });\r\n item = slugResult.data[0] ?? null;\r\n }\r\n if (!item) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n return NextResponse.json({ success: true, data: item });\r\n } catch (error) {\r\n console.error(\"[feat-products] GET /api/products/[id] failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch product\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n\r\n// ─── PATCH /api/products/[id] ─────────────────────────────────────────────────\r\n// Auth required; the caller must be the owner, a moderator, or an admin.\r\n\r\nexport const PATCH = createRouteHandler<\r\n z.infer<typeof productUpdateSchema>,\r\n { id: string }\r\n>({\r\n auth: true,\r\n schema: productUpdateSchema,\r\n handler: async ({ user, body, params }) => {\r\n const { id } = params!;\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const product = await repo.findById(id);\r\n if (!product) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n const isOwner = product.sellerId === user?.uid;\r\n const isModerator = user?.role === \"moderator\";\r\n const isAdmin = user?.role === \"admin\";\r\n\r\n if (!isOwner && !isModerator && !isAdmin) {\r\n return NextResponse.json(\r\n { success: false, error: \"Not authorized to update this product\" },\r\n { status: 403 },\r\n );\r\n }\r\n\r\n const updated = await repo.update(id, {\r\n ...(body as Partial<ProductItem>),\r\n updatedAt: new Date().toISOString(),\r\n });\r\n return NextResponse.json({ success: true, data: updated });\r\n },\r\n});\r\n\r\n// ─── DELETE /api/products/[id] ────────────────────────────────────────────────\r\n// Soft-delete (sets status to \"discontinued\"). Auth required.\r\n\r\nexport const DELETE = createRouteHandler<never, { id: string }>({\r\n auth: true,\r\n handler: async ({ user, params }) => {\r\n const { id } = params!;\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const product = await repo.findById(id);\r\n if (!product) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n const isOwner = product.sellerId === user?.uid;\r\n const isModerator = user?.role === \"moderator\";\r\n const isAdmin = user?.role === \"admin\";\r\n\r\n if (!isOwner && !isModerator && !isAdmin) {\r\n return NextResponse.json(\r\n { success: false, error: \"Not authorized to delete this product\" },\r\n { status: 403 },\r\n );\r\n }\r\n\r\n await repo.update(id, {\r\n status: \"discontinued\" as ProductItem[\"status\"],\r\n updatedAt: new Date().toISOString(),\r\n });\r\n return NextResponse.json({ success: true });\r\n },\r\n});\r\n\r\nexport {\r\n GET as productItemGET,\r\n PATCH as productItemPATCH,\r\n DELETE as productItemDELETE,\r\n};\r\n"]}
@@ -1,52 +0,0 @@
1
- import { NextResponse } from 'next/server.js';
2
-
3
- /**
4
- * feat-products — Next.js App Router API handlers (GET /api/products, POST /api/products)
5
- *
6
- * These handlers are exported so consuming projects can create 2-line stubs:
7
- *
8
- * ```ts
9
- * // app/api/products/route.ts
10
- * export { GET, POST } from "@mohasinac/feat-products";
11
- * ```
12
- *
13
- * The db provider must be registered via providers.config.ts before the first
14
- * request is handled. Every read/write goes through the IRepository<ProductItem>
15
- * resolved from `getProviders().db.getRepository("products")`.
16
- */
17
-
18
- declare function GET$1(request: Request): Promise<NextResponse>;
19
- declare const POST: (request: Request, context: {
20
- params: Promise<Record<string, string>>;
21
- }) => Promise<Response>;
22
-
23
- /**
24
- * feat-products — single-item route handlers (GET/PATCH/DELETE /api/products/[id])
25
- *
26
- * Consuming projects can create a 2-line stub:
27
- *
28
- * ```ts
29
- * // app/api/products/[id]/route.ts
30
- * export { productItemGET as GET, productItemPATCH as PATCH, productItemDELETE as DELETE }
31
- * from "@mohasinac/feat-products";
32
- * ```
33
- */
34
-
35
- type RouteContext = {
36
- params: Promise<{
37
- id: string;
38
- }>;
39
- };
40
- declare function GET(_request: Request, context: RouteContext): Promise<NextResponse>;
41
- declare const PATCH: (request: Request, context: {
42
- params: Promise<{
43
- id: string;
44
- }>;
45
- }) => Promise<Response>;
46
- declare const DELETE: (request: Request, context: {
47
- params: Promise<{
48
- id: string;
49
- }>;
50
- }) => Promise<Response>;
51
-
52
- export { GET$1 as GET, POST, DELETE as productItemDELETE, GET as productItemGET, PATCH as productItemPATCH };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/errors/base-error.ts","../../../src/errors/error-codes.ts","../../../src/errors/api-error.ts","../../../src/errors/validation-error.ts","../../../src/errors/authentication-error.ts","../../../src/errors/authorization-error.ts","../../../src/errors/not-found-error.ts","../../../src/errors/database-error.ts","../../../src/errors/error-handler.ts","../../../src/errors/index.ts","../../../src/contracts/registry.ts","../../../src/next/api/routeHandler.ts","../../../src/next/request-helpers.ts","../../../src/core/Logger.ts","../../../src/core/Queue.ts","../../../src/core/StorageManager.ts","../../../src/core/EventBus.ts","../../../src/security/authorization.ts","../../../src/monitoring/client-logger.ts","../../../src/monitoring/server-logger.ts","../../../src/features/media/types/index.ts","../../../src/features/products/api/route.ts","../../../src/features/products/api/%5Bid%5D/route.ts"],"names":["NextResponse","z","GET"],"mappings":"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","file":"server.js","sourcesContent":["export class AppError extends Error {\n constructor(\n public statusCode: number,\n public message: string,\n public code: string,\n public data?: unknown,\n ) {\n super(message);\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n toJSON(): {\n success: false;\n error: string;\n code: string;\n statusCode: number;\n data?: unknown;\n } {\n return {\n success: false,\n error: this.message,\n code: this.code,\n statusCode: this.statusCode,\n ...(this.data !== undefined && { data: this.data }),\n };\n }\n}\n","export const ERROR_CODES = {\n // Authentication\n AUTH_INVALID_CREDENTIALS: \"AUTH_001\",\n AUTH_TOKEN_EXPIRED: \"AUTH_002\",\n AUTH_TOKEN_INVALID: \"AUTH_003\",\n AUTH_SESSION_EXPIRED: \"AUTH_004\",\n AUTH_EMAIL_NOT_VERIFIED: \"AUTH_005\",\n\n // Validation\n VALIDATION_REQUIRED_FIELD: \"VAL_001\",\n VALIDATION_INVALID_INPUT: \"VAL_002\",\n VALIDATION_INVALID_EMAIL: \"VAL_003\",\n VALIDATION_INVALID_PASSWORD: \"VAL_004\",\n VALIDATION_INVALID_PHONE: \"VAL_005\",\n\n // User\n USER_NOT_FOUND: \"USER_001\",\n USER_ALREADY_EXISTS: \"USER_002\",\n USER_NOT_AUTHENTICATED: \"USER_003\",\n USER_ACCOUNT_DISABLED: \"USER_004\",\n\n // Database\n DB_OPERATION_FAILED: \"DB_001\",\n DB_NOT_FOUND: \"DB_002\",\n DB_DUPLICATE_ENTRY: \"DB_003\",\n\n // Email\n EMAIL_SEND_FAILED: \"EMAIL_001\",\n EMAIL_INVALID_TEMPLATE: \"EMAIL_002\",\n EMAIL_RATE_LIMITED: \"EMAIL_003\",\n EMAIL_DELIVERY_FAILED: \"EMAIL_004\",\n\n // Password\n PWD_RESET_TOKEN_EXPIRED: \"PWD_001\",\n PWD_RESET_TOKEN_INVALID: \"PWD_002\",\n PWD_TOO_WEAK: \"PWD_003\",\n PWD_HISTORY_REUSE: \"PWD_004\",\n PWD_SAME_AS_CURRENT: \"PWD_005\",\n\n // Authorization\n AUTHZ_FORBIDDEN: \"AUTHZ_001\",\n AUTHZ_INSUFFICIENT_ROLE: \"AUTHZ_002\",\n\n // General\n GEN_BAD_REQUEST: \"GEN_001\",\n GEN_NOT_FOUND: \"GEN_002\",\n GEN_INTERNAL_ERROR: \"GEN_003\",\n GEN_SERVICE_UNAVAILABLE: \"GEN_004\",\n GEN_RATE_LIMITED: \"GEN_005\",\n GEN_UNKNOWN: \"GEN_999\",\n} as const;\n\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\n\nexport const ERROR_MESSAGES: Record<ErrorCode, string> = {\n // Authentication\n AUTH_001: \"Invalid email or password\",\n AUTH_002: \"Your session has expired. Please log in again\",\n AUTH_003: \"Invalid authentication token\",\n AUTH_004: \"Your session has expired. Please log in again\",\n AUTH_005: \"Please verify your email address before logging in\",\n\n // Validation\n VAL_001: \"This field is required\",\n VAL_002: \"Invalid input provided\",\n VAL_003: \"Please enter a valid email address\",\n VAL_004:\n \"Password must be at least 12 characters with uppercase, lowercase, number and special character\",\n VAL_005: \"Please enter a valid phone number\",\n\n // User\n USER_001: \"User not found\",\n USER_002: \"An account with this email already exists\",\n USER_003: \"Please log in to continue\",\n USER_004: \"Your account has been disabled. Please contact support\",\n\n // Database\n DB_001: \"A database error occurred. Please try again\",\n DB_002: \"The requested resource was not found\",\n DB_003: \"This record already exists\",\n\n // Email\n EMAIL_001: \"Failed to send email. Please try again\",\n EMAIL_002: \"Invalid email template\",\n EMAIL_003: \"Too many emails sent. Please wait before trying again\",\n EMAIL_004: \"Email delivery failed. Please check the address and try again\",\n\n // Password\n PWD_001: \"Password reset link has expired. Please request a new one\",\n PWD_002: \"Invalid password reset link\",\n PWD_003: \"Password does not meet security requirements\",\n PWD_004: \"Cannot reuse a recent password\",\n PWD_005: \"New password must be different from your current password\",\n\n // Authorization\n AUTHZ_001: \"You do not have permission to perform this action\",\n AUTHZ_002: \"Insufficient role to perform this action\",\n\n // General\n GEN_001: \"Bad request\",\n GEN_002: \"The requested resource was not found\",\n GEN_003: \"An internal server error occurred\",\n GEN_004: \"Service temporarily unavailable\",\n GEN_005: \"Too many requests. Please slow down\",\n GEN_999: \"An unknown error occurred\",\n};\n","import { AppError } from \"./base-error\";\n\nexport class ApiError extends AppError {\n constructor(statusCode: number, message: string, data?: unknown) {\n super(statusCode, message, \"API_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class ValidationError extends AppError {\n constructor(message: string, fields?: unknown) {\n super(400, message, \"VALIDATION_ERROR\", fields);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class AuthenticationError extends AppError {\n constructor(message: string, data?: unknown) {\n super(401, message, \"AUTHENTICATION_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class AuthorizationError extends AppError {\n constructor(message: string, data?: unknown) {\n super(403, message, \"AUTHORIZATION_ERROR\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class NotFoundError extends AppError {\n constructor(message: string, data?: unknown) {\n super(404, message, \"NOT_FOUND\", data);\n }\n}\n","import { AppError } from \"./base-error\";\n\nexport class DatabaseError extends AppError {\n constructor(message: string, data?: unknown) {\n super(500, message, \"DATABASE_ERROR\", data);\n }\n}\n","import { NextResponse } from \"next/server.js\";\nimport { AppError } from \"./base-error\";\nimport { ERROR_CODES, ERROR_MESSAGES } from \"./error-codes\";\n\n/**\n * Handle API errors with consistent response format.\n * Use in Next.js API route catch blocks.\n */\nexport function handleApiError(error: unknown): NextResponse {\n if (error instanceof AppError) {\n if (error.statusCode >= 500) {\n console.error(\"[API Error]\", {\n code: error.code,\n message: error.message,\n statusCode: error.statusCode,\n data: error.data,\n });\n }\n return NextResponse.json(error.toJSON(), { status: error.statusCode });\n }\n\n // Zod / schema validation errors\n if (error && typeof error === \"object\" && \"issues\" in error) {\n return NextResponse.json(\n {\n success: false,\n error: \"Validation failed\",\n code: ERROR_CODES.VALIDATION_INVALID_INPUT,\n data: error,\n },\n { status: 400 },\n );\n }\n\n console.error(\"[Unexpected API Error]\", {\n error:\n error instanceof Error\n ? { name: error.name, message: error.message, stack: error.stack }\n : error,\n });\n\n return NextResponse.json(\n {\n success: false,\n error: ERROR_MESSAGES[ERROR_CODES.GEN_INTERNAL_ERROR],\n code: ERROR_CODES.GEN_INTERNAL_ERROR,\n },\n { status: 500 },\n );\n}\n\n/**\n * Log an error with optional context. Wraps console.error for package portability;\n * replace with your structured logger if needed.\n */\nexport function logError(\n error: unknown,\n context?: Record<string, unknown>,\n): void {\n console.error(\"[Application Error]\", {\n ...(context && { context }),\n error:\n error instanceof Error\n ? { name: error.name, message: error.message, stack: error.stack }\n : error,\n });\n}\n\n/**\n * Type guard — check if a value is an AppError instance.\n */\nexport function isAppError(error: unknown): error is AppError {\n return error instanceof AppError;\n}\n","export { AppError } from \"./base-error\";\nexport { ERROR_CODES, ERROR_MESSAGES } from \"./error-codes\";\nexport type { ErrorCode } from \"./error-codes\";\nexport { ApiError } from \"./api-error\";\nexport { ValidationError } from \"./validation-error\";\nexport { AuthenticationError } from \"./authentication-error\";\nexport { AuthorizationError } from \"./authorization-error\";\nexport { NotFoundError } from \"./not-found-error\";\nexport { DatabaseError } from \"./database-error\";\n// error-handler uses `next/server` — only import in server/API-route contexts\nexport { handleApiError, logError, isAppError } from \"./error-handler\";\n","import type { IAuthProvider, ISessionProvider } from \"./auth.js\";\nimport type { IEmailProvider } from \"./email.js\";\nimport type { IStorageProvider } from \"./storage.js\";\nimport type { IPaymentProvider } from \"./payment.js\";\nimport type { IShippingProvider } from \"./shipping.js\";\nimport type { ISearchProvider } from \"./search.js\";\nimport type { ICacheProvider, IQueueProvider, IEventBus } from \"./infra.js\";\nimport type { IStyleAdapter } from \"./style.js\";\nimport type { IDbProvider } from \"./repository.js\";\n\nexport interface ProviderRegistry {\n auth: IAuthProvider;\n session: ISessionProvider;\n email: IEmailProvider;\n storage: IStorageProvider;\n style: IStyleAdapter;\n db?: IDbProvider;\n payment?: IPaymentProvider;\n shipping?: IShippingProvider;\n search?: ISearchProvider;\n cache?: ICacheProvider;\n queue?: IQueueProvider;\n eventBus?: IEventBus;\n}\n\nlet _registry: ProviderRegistry | null = null;\n\nexport function registerProviders(registry: ProviderRegistry): void {\n _registry = registry;\n}\n\nexport function getProviders(): ProviderRegistry {\n if (!_registry) {\n throw new Error(\n \"[contracts] Call registerProviders() before getProviders(). \" +\n \"Ensure providers.config.ts is imported at app startup.\",\n );\n }\n return _registry;\n}\n\nexport function _resetProviders(): void {\n _registry = null;\n}","/**\r\n * createRouteHandler — provider-aware API route handler factory for feat-* packages.\r\n *\r\n * Works like letitrip.in's local `createApiHandler` but uses `getProviders().session`\r\n * for auth instead of a hardwired Firebase Admin call. This makes it portable across\r\n * all consumer projects that register an `ISessionProvider`.\r\n *\r\n * @example\r\n * ```ts\r\n * export const POST = createRouteHandler({\r\n * auth: true,\r\n * roles: [\"admin\"],\r\n * schema: mySchema,\r\n * handler: async ({ user, body }) => { ... },\r\n * });\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\n\r\n/** Minimal schema interface compatible with Zod v3 and v4. */\r\ninterface ParseableSchema<TOutput> {\r\n safeParse(\r\n data: unknown,\r\n ):\r\n | { success: true; data: TOutput }\r\n | { success: false; error: { issues?: unknown[] } };\r\n}\r\n\r\nexport interface RouteUser {\r\n uid: string;\r\n email?: string | null;\r\n role?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\ninterface RouteHandlerOptions<\r\n TInput = unknown,\r\n TParams = Record<string, string>,\r\n> {\r\n /** Require a valid session cookie. Implied when `roles` is set. */\r\n auth?: boolean;\r\n /**\r\n * If provided, the verified user's `role` must be in this list.\r\n * Implies `auth: true`.\r\n */\r\n roles?: string[];\r\n /** Zod schema to validate + parse the JSON request body. */\r\n schema?: ParseableSchema<TInput>;\r\n /** Route handler. `user` is present when `auth: true`. */\r\n handler: (ctx: {\r\n request: Request;\r\n user?: RouteUser;\r\n body?: TInput;\r\n params?: TParams;\r\n }) => Promise<Response>;\r\n}\r\n\r\n/** Read the `__session` HTTP-only cookie from request headers. */\r\nfunction readSessionCookie(request: Request): string | null {\r\n const cookieHeader = request.headers.get(\"cookie\") ?? \"\";\r\n const match = cookieHeader.match(/(?:^|;\\s*)__session=([^;]+)/);\r\n return match ? decodeURIComponent(match[1]) : null;\r\n}\r\n\r\n/**\r\n * Verify the session cookie using `getProviders().session`.\r\n * Returns a `RouteUser` on success, or throws for invalid credentials.\r\n */\r\nasync function verifySession(request: Request): Promise<RouteUser> {\r\n const { session } = getProviders();\r\n if (!session) {\r\n throw Object.assign(new Error(\"Session provider not configured\"), {\r\n status: 503,\r\n });\r\n }\r\n const cookie = readSessionCookie(request);\r\n if (!cookie) {\r\n throw Object.assign(new Error(\"Authentication required\"), { status: 401 });\r\n }\r\n try {\r\n const payload = await session.verifySession(cookie);\r\n return {\r\n uid: payload.uid,\r\n email: payload.email,\r\n role: payload.role,\r\n emailVerified: payload.emailVerified,\r\n ...payload.claims,\r\n };\r\n } catch {\r\n throw Object.assign(new Error(\"Invalid or expired session\"), {\r\n status: 401,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Create a typed Next.js App Router handler with built-in auth + Zod validation.\r\n */\r\nexport function createRouteHandler<\r\n TInput = unknown,\r\n TParams = Record<string, string>,\r\n>(options: RouteHandlerOptions<TInput, TParams>) {\r\n return async (\r\n request: Request,\r\n context: { params: Promise<TParams> },\r\n ): Promise<Response> => {\r\n try {\r\n // ── Auth ──────────────────────────────────────────────────────────────\r\n let user: RouteUser | undefined;\r\n const needsAuth =\r\n options.auth || (options.roles && options.roles.length > 0);\r\n\r\n if (needsAuth) {\r\n user = await verifySession(request);\r\n }\r\n\r\n if (options.roles && options.roles.length > 0) {\r\n if (!user || !options.roles.includes(user.role ?? \"\")) {\r\n return NextResponse.json(\r\n { success: false, error: \"Insufficient permissions\" },\r\n { status: 403 },\r\n );\r\n }\r\n }\r\n\r\n // ── Body validation ───────────────────────────────────────────────────\r\n let body: TInput | undefined;\r\n if (options.schema) {\r\n let raw: unknown;\r\n try {\r\n raw = await request.json();\r\n } catch {\r\n return NextResponse.json(\r\n { success: false, error: \"Invalid JSON body\" },\r\n { status: 400 },\r\n );\r\n }\r\n const result = options.schema.safeParse(raw);\r\n if (!result.success) {\r\n return NextResponse.json(\r\n {\r\n success: false,\r\n error: \"Validation failed\",\r\n issues: result.error.issues ?? [],\r\n },\r\n { status: 400 },\r\n );\r\n }\r\n body = result.data;\r\n }\r\n\r\n // ── Params ────────────────────────────────────────────────────────────\r\n const params = context?.params ? await context.params : undefined;\r\n\r\n return await options.handler({\r\n request,\r\n user,\r\n body,\r\n params: params as TParams | undefined,\r\n });\r\n } catch (err: unknown) {\r\n // Structured errors thrown with .status\r\n const status =\r\n typeof (err as { status?: unknown })?.status === \"number\"\r\n ? (err as { status: number }).status\r\n : 500;\r\n const message =\r\n err instanceof Error ? err.message : \"Internal server error\";\r\n console.error(`[createRouteHandler] ${request.method} failed`, err);\r\n return NextResponse.json({ success: false, error: message }, { status });\r\n }\r\n };\r\n}\r\n","/**\r\n * API Request Helpers\r\n *\r\n * Generic utilities for API route request parsing and session extraction.\r\n * Uses structural request types (not NextRequest) to avoid cross-package\r\n * type identity issues when multiple Next.js installs exist in a monorepo.\r\n */\r\n\r\nimport { AuthenticationError } from \"@mohasinac/errors\";\r\n\r\ninterface CookieStoreLike {\r\n get(name: string): { value?: string } | string | undefined;\r\n}\r\n\r\ntype CookieCapableRequest = Request & { cookies?: CookieStoreLike };\r\n\r\nfunction readCookieFromHeader(request: Request, name: string): string | undefined {\r\n const cookieHeader = request.headers.get(\"cookie\") ?? \"\";\r\n const match = cookieHeader.match(\r\n new RegExp(`(?:^|;\\\\s*)${name}=([^;]+)`),\r\n );\r\n return match ? decodeURIComponent(match[1]) : undefined;\r\n}\r\n\r\nexport function getSearchParams(request: Request): URLSearchParams {\r\n return new URL(request.url).searchParams;\r\n}\r\n\r\nexport function getOptionalSessionCookie(\r\n request: CookieCapableRequest,\r\n): string | undefined {\r\n const cookieValue = request.cookies?.get(\"__session\");\r\n if (typeof cookieValue === \"string\") return cookieValue;\r\n if (cookieValue && typeof cookieValue === \"object\") return cookieValue.value;\r\n return readCookieFromHeader(request, \"__session\");\r\n}\r\n\r\nexport function getRequiredSessionCookie(request: CookieCapableRequest): string {\r\n const cookie = getOptionalSessionCookie(request);\r\n if (!cookie) throw new AuthenticationError(\"Unauthorized\");\r\n return cookie;\r\n}\r\n\r\nexport function getBooleanParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n): boolean | undefined {\r\n const value = searchParams.get(key);\r\n if (value === null) return undefined;\r\n return value === \"true\";\r\n}\r\n\r\nexport function getStringParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n): string | undefined {\r\n const value = searchParams.get(key);\r\n if (!value) return undefined;\r\n return value;\r\n}\r\n\r\nexport function getNumberParam(\r\n searchParams: URLSearchParams,\r\n key: string,\r\n fallback: number,\r\n options?: { min?: number; max?: number },\r\n): number {\r\n const rawValue = searchParams.get(key);\r\n const parsed = rawValue ? Number.parseInt(rawValue, 10) : fallback;\r\n const safeValue = Number.isNaN(parsed) ? fallback : parsed;\r\n if (typeof options?.min === \"number\" && safeValue < options.min)\r\n return options.min;\r\n if (typeof options?.max === \"number\" && safeValue > options.max)\r\n return options.max;\r\n return safeValue;\r\n}\r\n","/**\n * Logger Class — @mohasinac/core\n *\n * Singleton class for application logging.\n * Pure utility — no framework or app-specific imports.\n *\n * The `logFileUrl` constructor option replaces the previous app-specific\n * `import(\"@/constants\")` call, making this usable in any context.\n */\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n data?: unknown;\n}\n\nexport interface LoggerOptions {\n minLevel?: LogLevel;\n enableConsole?: boolean;\n enableStorage?: boolean;\n /**\n * URL to POST error log entries. Set to your `/api/logs/write` route.\n */\n logFileUrl?: string;\n /**\n * @deprecated Prefer `logFileUrl`. When `true` and `logFileUrl` is not set,\n * defaults to `/api/logs/write` for backward compatibility with the\n * previous app-coupled Logger implementation.\n */\n enableFileLogging?: boolean;\n maxEntries?: number;\n /** Optional function to sanitize data before logging (e.g., PII redaction). */\n sanitizer?: (data: unknown) => unknown;\n}\n\nexport class Logger {\n private static instance: Logger;\n private logs: LogEntry[] = [];\n private options: Required<\n Omit<LoggerOptions, \"logFileUrl\" | \"enableFileLogging\" | \"sanitizer\">\n > & {\n logFileUrl?: string;\n sanitizer?: (data: unknown) => unknown;\n };\n private levelPriority: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n };\n\n private constructor(options?: LoggerOptions) {\n // `enableFileLogging: true` is a backward-compat alias for logFileUrl.\n const fileUrl =\n options?.logFileUrl ??\n (options?.enableFileLogging ? \"/api/logs/write\" : undefined);\n this.options = {\n minLevel: options?.minLevel ?? \"debug\",\n enableConsole: options?.enableConsole ?? true,\n enableStorage: options?.enableStorage ?? false,\n logFileUrl: fileUrl,\n maxEntries: options?.maxEntries ?? 1000,\n sanitizer: options?.sanitizer,\n };\n }\n\n /** Get singleton instance */\n public static getInstance(options?: LoggerOptions): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger(options);\n }\n return Logger.instance;\n }\n\n /** Set or update the data sanitizer (e.g., for PII redaction). */\n public static setSanitizer(fn: (data: unknown) => unknown): void {\n Logger.getInstance().options.sanitizer = fn;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return (\n this.levelPriority[level] >= this.levelPriority[this.options.minLevel]\n );\n }\n\n private addLog(level: LogLevel, message: string, data?: unknown): void {\n if (!this.shouldLog(level)) return;\n\n const sanitized =\n data && this.options.sanitizer ? this.options.sanitizer(data) : data;\n const entry: LogEntry = {\n level,\n message,\n timestamp: new Date(),\n data: sanitized,\n };\n\n this.logs.push(entry);\n if (this.logs.length > this.options.maxEntries) {\n this.logs.shift();\n }\n\n if (this.options.enableConsole) {\n this.logToConsole(entry);\n }\n\n if (this.options.enableStorage && typeof window !== \"undefined\") {\n this.saveToStorage();\n }\n\n if (this.options.logFileUrl && level === \"error\") {\n this.writeToFile(entry).catch(() => {\n // Silently fail to prevent recursive logging\n });\n }\n }\n\n private logToConsole(entry: LogEntry): void {\n const prefix = `[${entry.level.toUpperCase()}] ${entry.timestamp.toISOString()}`;\n const message = `${prefix} ${entry.message}`;\n switch (entry.level) {\n case \"debug\":\n console.debug(message, entry.data);\n break;\n case \"info\":\n console.info(message, entry.data);\n break;\n case \"warn\":\n console.warn(message, entry.data);\n break;\n case \"error\":\n console.error(message, entry.data);\n break;\n }\n }\n\n private saveToStorage(): void {\n try {\n localStorage.setItem(\"app_logs\", JSON.stringify(this.logs));\n } catch {\n // Silently fail\n }\n }\n\n private async writeToFile(entry: LogEntry): Promise<void> {\n if (typeof window === \"undefined\" || !this.options.logFileUrl) return;\n try {\n await fetch(this.options.logFileUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n level: entry.level,\n message: entry.message,\n timestamp: entry.timestamp.toISOString(),\n data: entry.data,\n }),\n });\n } catch {\n // Silently fail\n }\n }\n\n public debug(message: string, data?: unknown): void {\n this.addLog(\"debug\", message, data);\n }\n\n public info(message: string, data?: unknown): void {\n this.addLog(\"info\", message, data);\n }\n\n public warn(message: string, data?: unknown): void {\n this.addLog(\"warn\", message, data);\n }\n\n public error(message: string, data?: unknown): void {\n this.addLog(\"error\", message, data);\n }\n\n public getLogs(level?: LogLevel): LogEntry[] {\n if (level) return this.logs.filter((log) => log.level === level);\n return [...this.logs];\n }\n\n public clear(): void {\n this.logs = [];\n if (this.options.enableStorage && typeof window !== \"undefined\") {\n localStorage.removeItem(\"app_logs\");\n }\n }\n\n public export(): string {\n return JSON.stringify(this.logs, null, 2);\n }\n\n public getStats(): Record<LogLevel, number> {\n return {\n debug: this.logs.filter((l) => l.level === \"debug\").length,\n info: this.logs.filter((l) => l.level === \"info\").length,\n warn: this.logs.filter((l) => l.level === \"warn\").length,\n error: this.logs.filter((l) => l.level === \"error\").length,\n };\n }\n}\n\n/** Shared singleton instance */\nexport const logger = Logger.getInstance();\n","/**\n * Queue Class — @mohasinac/core\n *\n * Generic priority queue for task management.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst qLogger = Logger.getInstance();\n\nexport interface QueueOptions {\n concurrency?: number;\n autoStart?: boolean;\n}\n\nexport interface Task<T = unknown> {\n id: string;\n fn: () => Promise<T>;\n priority?: number;\n}\n\nexport class Queue<T = unknown> {\n private tasks: Task<T>[] = [];\n private running: number = 0;\n private readonly concurrency: number;\n private autoStart: boolean;\n private results: Map<string, T> = new Map();\n private errors: Map<string, Error> = new Map();\n\n constructor(options?: QueueOptions) {\n this.concurrency = options?.concurrency ?? 1;\n this.autoStart = options?.autoStart ?? true;\n }\n\n /** Add a task to the queue */\n public add(id: string, fn: () => Promise<T>, priority: number = 0): void {\n this.tasks.push({ id, fn, priority });\n this.tasks.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n if (this.autoStart) {\n this.process();\n }\n }\n\n private process(): void {\n while (this.running < this.concurrency && this.tasks.length > 0) {\n const task = this.tasks.shift();\n if (!task) break;\n this.running++;\n task\n .fn()\n .then((result) => {\n this.results.set(task.id, result);\n })\n .catch((error: unknown) => {\n this.errors.set(task.id, error as Error);\n })\n .finally(() => {\n this.running--;\n this.process();\n })\n .catch((err: unknown) => {\n qLogger.error(\"Queue.process error in finally\", { err });\n });\n }\n }\n\n public start(): void {\n this.process();\n }\n\n public pause(): void {\n this.autoStart = false;\n }\n\n public resume(): void {\n this.autoStart = true;\n this.process();\n }\n\n public clear(): void {\n this.tasks = [];\n this.results.clear();\n this.errors.clear();\n }\n\n public getResult(id: string): T | undefined {\n return this.results.get(id);\n }\n\n public getError(id: string): Error | undefined {\n return this.errors.get(id);\n }\n\n public size(): number {\n return this.tasks.length;\n }\n\n public getRunning(): number {\n return this.running;\n }\n\n public isEmpty(): boolean {\n return this.tasks.length === 0 && this.running === 0;\n }\n\n public async waitForCompletion(): Promise<void> {\n while (!this.isEmpty()) {\n await new Promise<void>((resolve) => setTimeout(resolve, 100));\n }\n }\n\n public getStats(): {\n pending: number;\n running: number;\n completed: number;\n failed: number;\n } {\n return {\n pending: this.tasks.length,\n running: this.running,\n completed: this.results.size,\n failed: this.errors.size,\n };\n }\n}\n","/**\n * StorageManager Class — @mohasinac/core\n *\n * Singleton class for managing localStorage and sessionStorage with\n * namespace prefixing and SSR-safe fallbacks.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst sLogger = Logger.getInstance();\n\nexport type StorageType = \"local\" | \"session\";\n\nexport interface StorageOptions {\n type?: StorageType;\n prefix?: string;\n}\n\nexport class StorageManager {\n /** Per-prefix instance map — prevents namespace collisions */\n private static instances = new Map<string, StorageManager>();\n private readonly prefix: string;\n\n private constructor(prefix: string = \"app_\") {\n this.prefix = prefix;\n }\n\n /**\n * Get-or-create a StorageManager for the given prefix.\n * Each prefix returns an independent instance.\n */\n public static getInstance(prefix: string = \"\"): StorageManager {\n if (!StorageManager.instances.has(prefix)) {\n StorageManager.instances.set(prefix, new StorageManager(prefix));\n }\n return StorageManager.instances.get(prefix)!;\n }\n\n private getStorage(type: StorageType): Storage | null {\n try {\n if (typeof window === \"undefined\") return null;\n const storage =\n type === \"local\" ? window.localStorage : window.sessionStorage;\n return storage ?? null;\n } catch {\n return null;\n }\n }\n\n private generateKey(key: string): string {\n return `${this.prefix}${key}`;\n }\n\n public set<T>(key: string, value: T, options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n storage.setItem(this.generateKey(key), JSON.stringify(value));\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.set error\", { error });\n return false;\n }\n }\n\n public get<T>(key: string, options?: StorageOptions): T | null {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return null;\n try {\n const item = storage.getItem(this.generateKey(key));\n if (item === null) return null;\n return JSON.parse(item) as T;\n } catch (error) {\n sLogger.error(\"StorageManager.get error\", { error });\n return null;\n }\n }\n\n public remove(key: string, options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n storage.removeItem(this.generateKey(key));\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.remove error\", { error });\n return false;\n }\n }\n\n public clear(options?: StorageOptions): boolean {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return false;\n try {\n const keys = Object.keys(storage);\n keys.forEach((k) => {\n if (k.startsWith(this.prefix)) storage.removeItem(k);\n });\n return true;\n } catch (error) {\n sLogger.error(\"StorageManager.clear error\", { error });\n return false;\n }\n }\n\n public has(key: string, options?: StorageOptions): boolean {\n return this.get(key, options) !== null;\n }\n\n public keys(options?: StorageOptions): string[] {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return [];\n const result: string[] = [];\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n result.push(k.slice(this.prefix.length));\n }\n }\n return result;\n }\n\n public size(options?: StorageOptions): number {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return 0;\n let bytes = 0;\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n const v = storage.getItem(k);\n bytes += k.length + (v?.length ?? 0);\n }\n }\n return bytes;\n }\n\n public isAvailable(type: StorageType = \"local\"): boolean {\n const storage = this.getStorage(type);\n if (!storage) return false;\n try {\n const testKey = \"__storage_test__\";\n storage.setItem(testKey, \"1\");\n storage.removeItem(testKey);\n return true;\n } catch {\n return false;\n }\n }\n\n public getAll<T = unknown>(options?: StorageOptions): Record<string, T> {\n const storage = this.getStorage(options?.type ?? \"local\");\n if (!storage) return {};\n const result: Record<string, T> = {};\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i);\n if (k?.startsWith(this.prefix)) {\n const v = this.get<T>(k.slice(this.prefix.length), options);\n if (v !== null) result[k.slice(this.prefix.length)] = v;\n }\n }\n return result;\n }\n}\n\n/** Default StorageManager instance (empty prefix) */\nexport const storageManager = StorageManager.getInstance(\"\");\n","/**\n * EventBus Class — @mohasinac/core\n *\n * Singleton pub/sub event bus for decoupled communication.\n * Pure utility — no framework or app-specific imports.\n */\n\nimport { Logger } from \"./Logger\";\n\nconst logger = Logger.getInstance();\n\ntype EventCallback = (...args: unknown[]) => void;\n\nexport interface EventSubscription {\n unsubscribe: () => void;\n}\n\nexport class EventBus {\n private static instance: EventBus;\n private readonly events: Map<string, EventCallback[]> = new Map();\n\n private constructor() {}\n\n public static getInstance(): EventBus {\n if (!EventBus.instance) {\n EventBus.instance = new EventBus();\n }\n return EventBus.instance;\n }\n\n public on(event: string, callback: EventCallback): EventSubscription {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event)!.push(callback);\n return { unsubscribe: () => this.off(event, callback) };\n }\n\n public once(event: string, callback: EventCallback): EventSubscription {\n const wrapped = (...args: unknown[]) => {\n callback(...args);\n this.off(event, wrapped);\n };\n return this.on(event, wrapped);\n }\n\n public off(event: string, callback: EventCallback): void {\n const callbacks = this.events.get(event);\n if (!callbacks) return;\n const idx = callbacks.indexOf(callback);\n if (idx > -1) callbacks.splice(idx, 1);\n if (callbacks.length === 0) this.events.delete(event);\n }\n\n public emit(event: string, ...args: unknown[]): void {\n const callbacks = this.events.get(event);\n if (!callbacks) return;\n callbacks.forEach((cb) => {\n try {\n cb(...args);\n } catch (error) {\n logger.error(`EventBus: error in handler for \"${event}\"`, { error });\n }\n });\n }\n\n public removeAllListeners(event?: string): void {\n if (event) {\n this.events.delete(event);\n } else {\n this.events.clear();\n }\n }\n\n public listenerCount(event: string): number {\n return this.events.get(event)?.length ?? 0;\n }\n\n public eventNames(): string[] {\n return Array.from(this.events.keys());\n }\n\n public hasListeners(event: string): boolean {\n return this.listenerCount(event) > 0;\n }\n}\n\n/** Shared singleton instance */\nexport const eventBus = EventBus.getInstance();\n","/**\n * Authorization Guards\n *\n * Pure utility functions that throw AuthenticationError / AuthorizationError.\n * Suitable for API routes, Server Actions, and middleware.\n *\n * Note: getUserFromRequest / requireAuthFromRequest are intentionally omitted —\n * they depend on Firebase Admin and the user repository; implement them in your\n * app layer using these primitives.\n */\n\nimport { AuthenticationError, AuthorizationError } from \"@mohasinac/errors\";\n\nexport type UserRole = \"admin\" | \"moderator\" | \"seller\" | \"user\";\n\nconst ROLE_HIERARCHY: Record<UserRole, number> = {\n admin: 4,\n moderator: 3,\n seller: 2,\n user: 1,\n};\n\nconst MSG = {\n NOT_AUTHENTICATED: \"Please log in to continue\",\n FORBIDDEN: \"You do not have permission to perform this action\",\n EMAIL_NOT_VERIFIED: \"Please verify your email address before logging in\",\n ACCOUNT_DISABLED: \"Your account has been disabled. Please contact support\",\n};\n\nexport function requireAuth(user: unknown): void {\n if (!user) {\n throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n }\n}\n\nexport function requireRole(\n user: Record<string, unknown> | null | undefined,\n roles: UserRole | UserRole[],\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n const requiredRoles = Array.isArray(roles) ? roles : [roles];\n const userRole = (user.role as UserRole) || \"user\";\n if (!requiredRoles.includes(userRole)) {\n throw new AuthorizationError(MSG.FORBIDDEN);\n }\n}\n\nexport function requireOwnership(\n user: Record<string, unknown> | null | undefined,\n resourceOwnerId: string,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (user.uid !== resourceOwnerId) {\n throw new AuthorizationError(MSG.FORBIDDEN);\n }\n}\n\nexport function requireEmailVerified(\n user: Record<string, unknown> | null | undefined,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (!user.emailVerified) throw new AuthorizationError(MSG.EMAIL_NOT_VERIFIED);\n}\n\nexport function requireActiveAccount(\n user: Record<string, unknown> | null | undefined,\n): void {\n if (!user) throw new AuthenticationError(MSG.NOT_AUTHENTICATED);\n if (user.disabled) throw new AuthorizationError(MSG.ACCOUNT_DISABLED);\n}\n\n/**\n * Check if currentUserRole is allowed to change a target user's role.\n * - admin: can change anyone's role\n * - moderator: can only change user → seller\n */\nexport function canChangeRole(\n currentUserRole: UserRole,\n targetCurrentRole: UserRole,\n targetNewRole: UserRole,\n): boolean {\n if (currentUserRole === \"admin\") return true;\n if (currentUserRole === \"moderator\") {\n return targetCurrentRole === \"user\" && targetNewRole === \"seller\";\n }\n return false;\n}\n\n/** Return the numeric hierarchy level for a role. */\nexport function getRoleLevel(role: UserRole): number {\n return ROLE_HIERARCHY[role] ?? 0;\n}\n","/**\r\n * Client-Side Error Logging Utilities\r\n *\r\n * Wraps the Logger singleton for use in React components, client hooks, and\r\n * browser-only code. Automatically attaches timestamp, userAgent, and current URL.\r\n *\r\n * For server-side logging use `server-logger.ts`.\r\n */\r\n\r\nimport { logger } from \"../core\";\r\nimport { AppError } from \"../errors\";\r\n\r\nexport interface ClientErrorContext {\r\n userId?: string;\r\n component?: string;\r\n action?: string;\r\n url?: string;\r\n method?: string;\r\n statusCode?: number;\r\n [key: string]: unknown;\r\n}\r\n\r\nfunction buildClientMeta(\r\n error: unknown,\r\n context?: ClientErrorContext,\r\n): Record<string, unknown> {\r\n const base: Record<string, unknown> = {\r\n ...context,\r\n timestamp: new Date().toISOString(),\r\n userAgent:\r\n typeof navigator !== \"undefined\" ? navigator.userAgent : \"unknown\",\r\n url: typeof window !== \"undefined\" ? window.location.href : \"unknown\",\r\n };\r\n\r\n if (error instanceof AppError) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n code: error.code,\r\n statusCode: error.statusCode,\r\n data: error.data,\r\n };\r\n } else if (error instanceof Error) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n stack: error.stack,\r\n };\r\n } else {\r\n base.error = error;\r\n }\r\n\r\n return base;\r\n}\r\n\r\nexport const logClientError = (\r\n message: string,\r\n error: unknown,\r\n context?: ClientErrorContext,\r\n): void => {\r\n logger.error(message, buildClientMeta(error, context));\r\n};\r\n\r\nexport const logClientWarning = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.warn(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logClientInfo = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.info(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logClientDebug = (\r\n message: string,\r\n data?: ClientErrorContext,\r\n): void => {\r\n logger.debug(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n","/**\r\n * Server-Side Error Logging Utilities\r\n *\r\n * Wraps the Logger singleton for use in API routes, server components, and\r\n * server actions. Attaches request metadata when a NextRequest is available.\r\n *\r\n * IMPORTANT: Only import this file in server-side code. For client-side code\r\n * use `client-logger.ts`.\r\n */\r\n\r\nimport { logger } from \"../core\";\r\nimport { AppError } from \"../errors\";\r\nimport { type NextRequest } from \"next/server\";\r\n\r\nexport interface ServerErrorContext {\r\n userId?: string;\r\n endpoint?: string;\r\n method?: string;\r\n statusCode?: number;\r\n requestId?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\n/** Pull the commonly needed headers from a NextRequest in one call. */\r\nexport const extractRequestMetadata = (request: NextRequest) => ({\r\n method: request.method,\r\n url: request.url,\r\n userAgent: request.headers.get(\"user-agent\") ?? \"unknown\",\r\n ip:\r\n request.headers.get(\"x-forwarded-for\") ??\r\n request.headers.get(\"x-real-ip\") ??\r\n \"unknown\",\r\n referer: request.headers.get(\"referer\") ?? \"none\",\r\n});\r\n\r\nfunction buildServerMeta(\r\n error: unknown,\r\n context?: ServerErrorContext,\r\n): Record<string, unknown> {\r\n const base: Record<string, unknown> = {\r\n ...context,\r\n timestamp: new Date().toISOString(),\r\n };\r\n\r\n if (error instanceof AppError) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n code: error.code,\r\n statusCode: error.statusCode,\r\n data: error.data,\r\n };\r\n } else if (error instanceof Error) {\r\n base.error = {\r\n name: error.name,\r\n message: error.message,\r\n stack: error.stack,\r\n };\r\n } else {\r\n base.error = error;\r\n }\r\n\r\n return base;\r\n}\r\n\r\nexport const logServerError = (\r\n message: string,\r\n error: unknown,\r\n context?: ServerErrorContext,\r\n): void => {\r\n logger.error(message, buildServerMeta(error, context));\r\n};\r\n\r\nexport const logServerWarning = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.warn(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logServerInfo = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.info(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n\r\nexport const logServerDebug = (\r\n message: string,\r\n data?: ServerErrorContext,\r\n): void => {\r\n logger.debug(message, { ...data, timestamp: new Date().toISOString() });\r\n};\r\n","import { z } from \"zod\";\r\n\r\nexport type MediaFieldType = \"image\" | \"video\" | \"file\";\r\n\r\nexport type MediaFieldInput = MediaField | string | null | undefined;\r\n\r\nexport interface MediaField {\r\n url: string;\r\n type: MediaFieldType;\r\n alt?: string;\r\n thumbnailUrl?: string;\r\n}\r\n\r\nexport const mediaFieldSchema = z.object({\r\n url: z.string().url(),\r\n type: z.enum([\"image\", \"video\", \"file\"]),\r\n alt: z.string().optional(),\r\n thumbnailUrl: z.string().url().optional(),\r\n});\r\n\r\nexport function coerceMediaField(\r\n value: MediaFieldInput,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n if (typeof value === \"string\") {\r\n return {\r\n url: value,\r\n type: fallbackType,\r\n };\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function coerceMediaFieldArray(\r\n values: Array<MediaField | string> | null | undefined,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField[] {\r\n if (!values || values.length === 0) {\r\n return [];\r\n }\r\n\r\n return values\r\n .map((value) => coerceMediaField(value, fallbackType))\r\n .filter((value): value is MediaField => value !== null);\r\n}\r\n\r\nexport function getMediaUrl(value: MediaFieldInput): string | undefined {\r\n return coerceMediaField(value)?.url;\r\n}\r\n\r\nexport function inferMediaTypeFromMime(\r\n mimeType?: string,\r\n url?: string,\r\n): MediaFieldType {\r\n if (mimeType?.startsWith(\"image/\")) return \"image\";\r\n if (mimeType?.startsWith(\"video/\")) return \"video\";\r\n\r\n if (url) {\r\n if (/\\.(jpe?g|png|gif|webp|svg)(\\?|$)/i.test(url)) return \"image\";\r\n if (/\\.(mp4|webm|ogg|mov|avi)(\\?|$)/i.test(url)) return \"video\";\r\n }\r\n\r\n return \"file\";\r\n}\r\n","/**\r\n * feat-products — Next.js App Router API handlers (GET /api/products, POST /api/products)\r\n *\r\n * These handlers are exported so consuming projects can create 2-line stubs:\r\n *\r\n * ```ts\r\n * // app/api/products/route.ts\r\n * export { GET, POST } from \"@mohasinac/feat-products\";\r\n * ```\r\n *\r\n * The db provider must be registered via providers.config.ts before the first\r\n * request is handled. Every read/write goes through the IRepository<ProductItem>\r\n * resolved from `getProviders().db.getRepository(\"products\")`.\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { z } from \"zod\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport { createRouteHandler } from \"@mohasinac/next\";\r\nimport type { ProductItem, ProductListResponse } from \"../types/index.js\";\r\nimport { mediaFieldSchema } from \"../../media/types/index.js\";\r\n\r\ntype ProductRecord = ProductItem & {\r\n sellerId?: string;\r\n sellerName?: string;\r\n};\r\n\r\n// ─── Mutation schemas ─────────────────────────────────────────────────────────\r\n// Minimal schemas for secured mutations — consumer apps can extend as needed.\r\n\r\nconst productMutateSchema = z\r\n .object({\r\n title: z.string().min(1).max(200).optional(),\r\n description: z.string().max(10000).optional(),\r\n price: z.number().positive().optional(),\r\n originalPrice: z.number().positive().optional(),\r\n currency: z.string().length(3).optional(),\r\n category: z.string().optional(),\r\n status: z\r\n .enum([\r\n \"draft\",\r\n \"published\",\r\n \"archived\",\r\n \"sold\",\r\n \"discontinued\",\r\n \"out_of_stock\",\r\n ])\r\n .optional(),\r\n mainImage: z.string().optional(),\r\n images: z.array(z.any()).optional(),\r\n tags: z.array(z.string()).optional(),\r\n featured: z.boolean().optional(),\r\n isPromoted: z.boolean().optional(),\r\n isAuction: z.boolean().optional(),\r\n isPreOrder: z.boolean().optional(),\r\n sellerId: z.string().optional(),\r\n sellerName: z.string().optional(),\r\n sellerEmail: z.string().email().optional(),\r\n slug: z.string().optional(),\r\n listingType: z\r\n .enum([\"fixed\", \"standard\", \"auction\", \"pre-order\"])\r\n .optional(),\r\n media: z.array(mediaFieldSchema).optional(),\r\n })\r\n .passthrough();\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────────────\r\n\r\nfunction param(url: URL, key: string): string | null {\r\n return url.searchParams.get(key);\r\n}\r\n\r\nfunction numParam(url: URL, key: string, fallback: number): number {\r\n const v = url.searchParams.get(key);\r\n const n = v !== null ? Number(v) : NaN;\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n\r\n/** Public fields callers may filter on via the ?filters= param. */\r\nconst SAFE_PRODUCT_FILTER_FIELDS = new Set([\r\n \"status\",\r\n \"category\",\r\n \"brand\",\r\n \"condition\",\r\n \"sellerId\",\r\n \"title\",\r\n \"price\",\r\n \"isAuction\",\r\n \"isPreOrder\",\r\n \"featured\",\r\n \"isPromoted\",\r\n \"stockQuantity\",\r\n \"availableQuantity\",\r\n \"tags\",\r\n]);\r\n\r\n/**\r\n * Validates a raw Sieve filter string against an allowlist of safe fields.\r\n * Drops any clause whose field name is not in the allowlist.\r\n */\r\nfunction validateSieveFilters(\r\n raw: string,\r\n allowedFields: ReadonlySet<string>,\r\n): string {\r\n return raw\r\n .split(\",\")\r\n .map((c) => c.trim())\r\n .filter((c) => {\r\n const m = c.match(/^([^<>=!@]+)\\s*(?:==|!=|<=|>=|<|>|@=\\*?)/);\r\n return m ? allowedFields.has(m[1].trim()) : false;\r\n })\r\n .join(\",\");\r\n}\r\n\r\nfunction buildFilters(url: URL): string {\r\n const parts: string[] = [];\r\n const status = param(url, \"status\");\r\n if (status) parts.push(`status==${status}`);\r\n const category = param(url, \"category\");\r\n if (category) parts.push(`category==${category}`);\r\n const brand = param(url, \"brand\");\r\n if (brand) parts.push(`brand==${brand}`);\r\n const condition = param(url, \"condition\");\r\n if (condition) parts.push(`condition==${condition}`);\r\n const sellerId = param(url, \"sellerId\");\r\n if (sellerId) parts.push(`sellerId==${sellerId}`);\r\n const q = param(url, \"q\");\r\n if (q) parts.push(`title@=*${q}`);\r\n const minPrice = param(url, \"minPrice\");\r\n if (minPrice !== null && !Number.isNaN(Number(minPrice)))\r\n parts.push(`price>=${minPrice}`);\r\n const maxPrice = param(url, \"maxPrice\");\r\n if (maxPrice !== null && !Number.isNaN(Number(maxPrice)))\r\n parts.push(`price<=${maxPrice}`);\r\n const inStock = param(url, \"inStock\");\r\n if (inStock === \"true\") parts.push(\"stockQuantity>0\");\r\n const isAuction = param(url, \"isAuction\");\r\n if (isAuction !== null) parts.push(`isAuction==${isAuction}`);\r\n const isPreOrder = param(url, \"isPreOrder\");\r\n if (isPreOrder !== null) parts.push(`isPreOrder==${isPreOrder}`);\r\n const featured = param(url, \"featured\");\r\n if (featured === \"true\") parts.push(\"featured==true\");\r\n // Merge validated Sieve filters — only safe public fields allowed\r\n const raw = param(url, \"filters\");\r\n if (raw) {\r\n const safe = validateSieveFilters(raw, SAFE_PRODUCT_FILTER_FIELDS);\r\n if (safe) parts.push(safe);\r\n }\r\n return parts.join(\",\");\r\n}\r\n\r\n// ─── GET /api/products ────────────────────────────────────────────────────────\r\n\r\nexport async function GET(request: Request): Promise<NextResponse> {\r\n try {\r\n const url = new URL(request.url);\r\n const page = numParam(url, \"page\", 1);\r\n const pageSize = numParam(url, \"pageSize\", 20);\r\n const sort = param(url, \"sorts\") ?? param(url, \"sort\") ?? \"-createdAt\";\r\n const filters = buildFilters(url);\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const repo = db.getRepository<ProductRecord>(\"products\");\r\n const result = await repo.findAll({\r\n filters,\r\n sort,\r\n page,\r\n perPage: pageSize,\r\n });\r\n\r\n const totalPages = Math.max(1, Math.ceil(result.total / pageSize));\r\n const body: ProductListResponse = {\r\n items: result.data,\r\n total: result.total,\r\n page: result.page,\r\n pageSize,\r\n totalPages,\r\n hasMore: result.page < totalPages,\r\n };\r\n\r\n const response = NextResponse.json({ success: true, data: body });\r\n response.headers.set(\r\n \"Cache-Control\",\r\n \"public, max-age=60, s-maxage=120, stale-while-revalidate=60\",\r\n );\r\n return response;\r\n } catch (error) {\r\n console.error(\"[feat-products] GET /api/products failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch products\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n\r\n// ─── POST /api/products ───────────────────────────────────────────────────────\r\n// Requires seller, moderator, or admin role.\r\n\r\nexport const POST = createRouteHandler({\r\n auth: true,\r\n roles: [\"seller\", \"moderator\", \"admin\"],\r\n schema: productMutateSchema,\r\n handler: async ({ user, body }) => {\r\n const payload = body as Record<string, unknown>;\r\n const userRecord = (user ?? {}) as Record<string, unknown>;\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n const repo = db.getRepository<ProductItem>(\"products\");\r\n const data: Partial<ProductItem> = {\r\n ...(payload as Partial<ProductRecord>),\r\n status: \"draft\",\r\n sellerId:\r\n typeof payload.sellerId === \"string\"\r\n ? payload.sellerId\r\n : typeof userRecord.uid === \"string\"\r\n ? userRecord.uid\r\n : undefined,\r\n sellerName:\r\n typeof payload.sellerName === \"string\"\r\n ? payload.sellerName\r\n : typeof userRecord.displayName === \"string\"\r\n ? userRecord.displayName\r\n : undefined,\r\n createdAt: new Date().toISOString(),\r\n updatedAt: new Date().toISOString(),\r\n };\r\n const created = await repo.create(data as Omit<ProductItem, \"id\">);\r\n return NextResponse.json({ success: true, data: created }, { status: 201 });\r\n },\r\n});\r\n","/**\r\n * feat-products — single-item route handlers (GET/PATCH/DELETE /api/products/[id])\r\n *\r\n * Consuming projects can create a 2-line stub:\r\n *\r\n * ```ts\r\n * // app/api/products/[id]/route.ts\r\n * export { productItemGET as GET, productItemPATCH as PATCH, productItemDELETE as DELETE }\r\n * from \"@mohasinac/feat-products\";\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { z } from \"zod\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport { createRouteHandler } from \"@mohasinac/next\";\r\nimport type { ProductItem } from \"../../types/index.js\";\r\nimport { mediaFieldSchema } from \"../../../media/types/index.js\";\r\n\r\ntype RouteContext = { params: Promise<{ id: string }> };\r\n\r\ntype ProductRecord = ProductItem & {\r\n sellerId?: string;\r\n};\r\n\r\nfunction getRepo() {\r\n const { db } = getProviders();\r\n if (!db) return null;\r\n return db.getRepository<ProductRecord>(\"products\");\r\n}\r\n\r\nconst productUpdateSchema = z\r\n .object({\r\n title: z.string().min(1).max(200).optional(),\r\n description: z.string().max(10000).optional(),\r\n price: z.number().positive().optional(),\r\n originalPrice: z.number().positive().optional(),\r\n currency: z.string().length(3).optional(),\r\n category: z.string().optional(),\r\n status: z\r\n .enum([\r\n \"draft\",\r\n \"published\",\r\n \"archived\",\r\n \"sold\",\r\n \"discontinued\",\r\n \"out_of_stock\",\r\n ])\r\n .optional(),\r\n mainImage: z.string().optional(),\r\n images: z.array(z.any()).optional(),\r\n tags: z.array(z.string()).optional(),\r\n featured: z.boolean().optional(),\r\n isPromoted: z.boolean().optional(),\r\n isAuction: z.boolean().optional(),\r\n isPreOrder: z.boolean().optional(),\r\n listingType: z\r\n .enum([\"fixed\", \"standard\", \"auction\", \"pre-order\"])\r\n .optional(),\r\n media: z.array(mediaFieldSchema).optional(),\r\n })\r\n .passthrough();\r\n\r\n// ─── GET /api/products/[id] ───────────────────────────────────────────────────\r\n\r\nexport async function GET(\r\n _request: Request,\r\n context: RouteContext,\r\n): Promise<NextResponse> {\r\n try {\r\n const { id } = await context.params;\r\n\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n // Support both Firestore document ID and URL slug\r\n let item = await repo.findById(id);\r\n if (!item) {\r\n // Slug fallback: search by slug==id, status==published\r\n const slugResult = await repo.findAll({\r\n filters: `slug==${id},status==published`,\r\n perPage: 1,\r\n });\r\n item = slugResult.data[0] ?? null;\r\n }\r\n if (!item) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n return NextResponse.json({ success: true, data: item });\r\n } catch (error) {\r\n console.error(\"[feat-products] GET /api/products/[id] failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch product\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n\r\n// ─── PATCH /api/products/[id] ─────────────────────────────────────────────────\r\n// Auth required; the caller must be the owner, a moderator, or an admin.\r\n\r\nexport const PATCH = createRouteHandler<\r\n z.infer<typeof productUpdateSchema>,\r\n { id: string }\r\n>({\r\n auth: true,\r\n schema: productUpdateSchema,\r\n handler: async ({ user, body, params }) => {\r\n const { id } = params!;\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const product = await repo.findById(id);\r\n if (!product) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n const isOwner = product.sellerId === user?.uid;\r\n const isModerator = user?.role === \"moderator\";\r\n const isAdmin = user?.role === \"admin\";\r\n\r\n if (!isOwner && !isModerator && !isAdmin) {\r\n return NextResponse.json(\r\n { success: false, error: \"Not authorized to update this product\" },\r\n { status: 403 },\r\n );\r\n }\r\n\r\n const updated = await repo.update(id, {\r\n ...(body as Partial<ProductItem>),\r\n updatedAt: new Date().toISOString(),\r\n });\r\n return NextResponse.json({ success: true, data: updated });\r\n },\r\n});\r\n\r\n// ─── DELETE /api/products/[id] ────────────────────────────────────────────────\r\n// Soft-delete (sets status to \"discontinued\"). Auth required.\r\n\r\nexport const DELETE = createRouteHandler<never, { id: string }>({\r\n auth: true,\r\n handler: async ({ user, params }) => {\r\n const { id } = params!;\r\n const repo = getRepo();\r\n if (!repo) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const product = await repo.findById(id);\r\n if (!product) {\r\n return NextResponse.json(\r\n { success: false, error: \"Product not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n const isOwner = product.sellerId === user?.uid;\r\n const isModerator = user?.role === \"moderator\";\r\n const isAdmin = user?.role === \"admin\";\r\n\r\n if (!isOwner && !isModerator && !isAdmin) {\r\n return NextResponse.json(\r\n { success: false, error: \"Not authorized to delete this product\" },\r\n { status: 403 },\r\n );\r\n }\r\n\r\n await repo.update(id, {\r\n status: \"discontinued\" as ProductItem[\"status\"],\r\n updatedAt: new Date().toISOString(),\r\n });\r\n return NextResponse.json({ success: true });\r\n },\r\n});\r\n\r\nexport {\r\n GET as productItemGET,\r\n PATCH as productItemPATCH,\r\n DELETE as productItemDELETE,\r\n};\r\n"]}