@mohasinac/appkit 4.65.0 → 4.67.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 (848) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +4 -1
  3. package/dist/_internal/client/features/digital-code/DigitalContentPoolManager.js +5 -1
  4. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +1 -1
  5. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +3 -1
  6. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +6 -2
  7. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.js +5 -1
  8. package/dist/_internal/client/features/lottery/LotteryDetailView.js +6 -1
  9. package/dist/_internal/client/features/lottery/LotteryEntriesView.js +6 -1
  10. package/dist/_internal/client/features/lottery/LotteryListView.js +7 -1
  11. package/dist/_internal/client/features/lottery/LotteryPullForm.js +3 -1
  12. package/dist/_internal/client/features/lottery/LotterySlotGrid.js +3 -1
  13. package/dist/_internal/client/features/lottery/PrizeDrawLotteryDetailView.js +6 -1
  14. package/dist/_internal/client/features/maintenance/index.d.ts +1 -0
  15. package/dist/_internal/client/features/maintenance/index.js +1 -0
  16. package/dist/_internal/client/features/maintenance/views/CacheInvalidationPanel.d.ts +33 -0
  17. package/dist/_internal/client/features/maintenance/views/CacheInvalidationPanel.js +96 -0
  18. package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -1
  19. package/dist/_internal/client/scaffolds/AppShell.js +3 -1
  20. package/dist/_internal/server/features/account/data.js +2 -1
  21. package/dist/_internal/server/features/auctions/service.js +1 -1
  22. package/dist/_internal/server/features/auth/capabilities.js +1 -1
  23. package/dist/_internal/server/features/auth/permissions.js +1 -1
  24. package/dist/_internal/server/features/brands/actions.js +1 -1
  25. package/dist/_internal/server/features/brands/data.js +1 -1
  26. package/dist/_internal/server/features/brands/service.js +1 -1
  27. package/dist/_internal/server/features/bundles/actions.js +1 -1
  28. package/dist/_internal/server/features/bundles/data.js +2 -2
  29. package/dist/_internal/server/features/cart/actions.js +1 -1
  30. package/dist/_internal/server/features/cart/data.js +1 -1
  31. package/dist/_internal/server/features/cart/service.js +1 -1
  32. package/dist/_internal/server/features/categories/data.js +1 -1
  33. package/dist/_internal/server/features/checkout/actions.js +2 -2
  34. package/dist/_internal/server/features/checkout/group-rule-revalidation.js +1 -1
  35. package/dist/_internal/server/features/checkout/locked-lines.js +1 -1
  36. package/dist/_internal/server/features/checkout/upi-resolution.js +2 -1
  37. package/dist/_internal/server/features/grouped/data.js +2 -1
  38. package/dist/_internal/server/features/history/actions.d.ts +1 -1
  39. package/dist/_internal/server/features/history/actions.js +1 -1
  40. package/dist/_internal/server/features/history/data.d.ts +1 -1
  41. package/dist/_internal/server/features/history/data.js +1 -1
  42. package/dist/_internal/server/features/item-requests/data.js +1 -1
  43. package/dist/_internal/server/features/messages/actions.js +1 -1
  44. package/dist/_internal/server/features/payouts/actions.js +1 -1
  45. package/dist/_internal/server/features/pre-orders/actions.js +1 -1
  46. package/dist/_internal/server/features/pre-orders/service.js +1 -1
  47. package/dist/_internal/server/features/prize-draws/actions.js +1 -1
  48. package/dist/_internal/server/features/products/actions.js +1 -1
  49. package/dist/_internal/server/features/products/data.js +1 -1
  50. package/dist/_internal/server/features/products/list-public.js +1 -1
  51. package/dist/_internal/server/features/products/service.js +1 -1
  52. package/dist/_internal/server/features/products/surface-counts.d.ts +26 -0
  53. package/dist/_internal/server/features/products/surface-counts.js +60 -0
  54. package/dist/_internal/server/features/promotions/actions.js +1 -1
  55. package/dist/_internal/server/features/promotions/adapters.js +9 -0
  56. package/dist/_internal/server/features/promotions/data.d.ts +24 -3
  57. package/dist/_internal/server/features/promotions/data.js +41 -6
  58. package/dist/_internal/server/features/promotions/index.d.ts +1 -1
  59. package/dist/_internal/server/features/promotions/index.js +1 -1
  60. package/dist/_internal/server/features/promotions/service.js +1 -1
  61. package/dist/_internal/server/features/seo/sitemap.js +39 -5
  62. package/dist/_internal/server/features/shared/listing-data-factory.js +1 -1
  63. package/dist/_internal/server/features/shipping/courier-block.js +1 -1
  64. package/dist/_internal/server/features/site-settings/adapters.d.ts +16 -0
  65. package/dist/_internal/server/features/site-settings/adapters.js +11 -0
  66. package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +1 -1
  67. package/dist/_internal/server/features/stores/data.js +1 -1
  68. package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
  69. package/dist/_internal/server/features/wishlist/actions.d.ts +1 -1
  70. package/dist/_internal/server/features/wishlist/actions.js +1 -1
  71. package/dist/_internal/server/features/wishlist/data.d.ts +1 -1
  72. package/dist/_internal/server/features/wishlist/data.js +1 -1
  73. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +1 -1
  74. package/dist/_internal/server/jobs/core/cartPrune.js +1 -1
  75. package/dist/_internal/server/jobs/core/catalogueImageStalenessReminder.js +1 -1
  76. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +1 -1
  77. package/dist/_internal/server/jobs/core/couponExpiry.js +1 -1
  78. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +2 -1
  79. package/dist/_internal/server/jobs/core/draftPrune.js +1 -1
  80. package/dist/_internal/server/jobs/core/hardBanReinstatement.js +1 -1
  81. package/dist/_internal/server/jobs/core/newsletterExport.js +1 -1
  82. package/dist/_internal/server/jobs/core/notificationPrune.js +1 -1
  83. package/dist/_internal/server/jobs/core/onJobCreated.js +1 -1
  84. package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -1
  85. package/dist/_internal/server/jobs/core/onProductWrite.js +35 -1
  86. package/dist/_internal/server/jobs/core/onScamReportCreate.js +2 -1
  87. package/dist/_internal/server/jobs/core/onScamReportRejected.js +1 -1
  88. package/dist/_internal/server/jobs/core/onScamReportVerified.js +1 -1
  89. package/dist/_internal/server/jobs/core/revenueRollup.js +1 -1
  90. package/dist/_internal/server/jobs/core/runJobOnce.js +1 -1
  91. package/dist/_internal/server/jobs/core/sellerStandingRollup.js +1 -1
  92. package/dist/_internal/server/jobs/core/surfaceCountsRollup.d.ts +55 -0
  93. package/dist/_internal/server/jobs/core/surfaceCountsRollup.js +128 -0
  94. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +1 -1
  95. package/dist/_internal/server/jobs/handlers/countersReconcile.js +54 -1
  96. package/dist/_internal/server/jobs/handlers/onCatalogueSubmittedForApproval.js +1 -1
  97. package/dist/_internal/shared/actions/action-registry.js +28 -0
  98. package/dist/_internal/shared/cache/revalidate-targets.js +66 -47
  99. package/dist/_internal/shared/features/blog/schema.d.ts +12 -12
  100. package/dist/_internal/shared/features/brands/schema.d.ts +19 -19
  101. package/dist/_internal/shared/features/cart/schema.d.ts +17 -17
  102. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +60 -60
  103. package/dist/_internal/shared/features/events/schema.d.ts +4 -4
  104. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  105. package/dist/_internal/shared/features/products/schema.d.ts +2 -2
  106. package/dist/_internal/shared/features/promotions/schema.d.ts +12 -12
  107. package/dist/_internal/shared/features/reviews/schema.d.ts +3 -3
  108. package/dist/_internal/shared/features/site-settings/types.d.ts +17 -0
  109. package/dist/_internal/shared/listing-types/feature-flags.d.ts +45 -0
  110. package/dist/_internal/shared/listing-types/feature-flags.js +51 -0
  111. package/dist/client.d.ts +225 -118
  112. package/dist/client.js +150 -74
  113. package/dist/constants/api-endpoints.d.ts +3 -0
  114. package/dist/constants/api-endpoints.js +11 -0
  115. package/dist/errors/error-handler.d.ts +1 -1
  116. package/dist/features/about/components/AboutView.js +9 -1
  117. package/dist/features/about/components/DeveloperView.js +8 -2
  118. package/dist/features/about/components/FAQPageView.js +5 -2
  119. package/dist/features/about/components/FeesView.js +4 -1
  120. package/dist/features/about/components/GstExplainerView.js +6 -1
  121. package/dist/features/about/components/GuidesHubView.js +5 -1
  122. package/dist/features/about/components/HelpPageView.js +6 -2
  123. package/dist/features/about/components/HowAuctionsWorkView.js +6 -2
  124. package/dist/features/about/components/HowCheckoutWorksView.js +6 -2
  125. package/dist/features/about/components/HowEmiWorksView.js +7 -2
  126. package/dist/features/about/components/HowOffersWorkView.js +6 -2
  127. package/dist/features/about/components/HowOrdersWorkView.js +6 -2
  128. package/dist/features/about/components/HowPayoutsWorkView.js +6 -2
  129. package/dist/features/about/components/HowPreOrdersWorkView.js +6 -2
  130. package/dist/features/about/components/HowReviewsWorkView.js +6 -2
  131. package/dist/features/about/components/PolicyPageView.js +6 -3
  132. package/dist/features/about/components/ProseHero.js +3 -1
  133. package/dist/features/about/components/PublicProfileView.js +6 -1
  134. package/dist/features/about/components/SecurityPrivacyView.js +6 -2
  135. package/dist/features/about/components/ShippingPolicyView.js +7 -3
  136. package/dist/features/about/components/SpotAFakeView.js +6 -1
  137. package/dist/features/about/components/TrackOrderView.js +5 -2
  138. package/dist/features/about/components/UnauthorizedView.js +5 -2
  139. package/dist/features/about/schemas/index.d.ts +18 -18
  140. package/dist/features/account/components/AddressBook.js +4 -1
  141. package/dist/features/account/components/AddressFilters.js +1 -1
  142. package/dist/features/account/components/AddressForm.js +1 -1
  143. package/dist/features/account/components/AddressSelectorCreate.js +2 -1
  144. package/dist/features/account/components/AddressesIndexListing.js +5 -1
  145. package/dist/features/account/components/BecomeSellerView.js +2 -1
  146. package/dist/features/account/components/BuyerAccountGuideView.js +6 -1
  147. package/dist/features/account/components/BuyerAuctionsGuideView.js +5 -1
  148. package/dist/features/account/components/BuyerOrdersGuideView.js +5 -1
  149. package/dist/features/account/components/BuyerShoppingGuideView.js +5 -1
  150. package/dist/features/account/components/LinkedAccountsSection.js +5 -1
  151. package/dist/features/account/components/NotificationBell.js +8 -1
  152. package/dist/features/account/components/NotificationPreferencesPanel.js +6 -1
  153. package/dist/features/account/components/OrderDetailView.d.ts +1 -1
  154. package/dist/features/account/components/OrderDetailView.js +1 -1
  155. package/dist/features/account/components/ProfileView.d.ts +1 -1
  156. package/dist/features/account/components/ProfileView.js +1 -1
  157. package/dist/features/account/components/UserAccountHubView.d.ts +1 -1
  158. package/dist/features/account/components/UserAccountHubView.js +1 -1
  159. package/dist/features/account/components/UserBidsView.js +5 -1
  160. package/dist/features/account/components/UserOffersPanel.js +9 -1
  161. package/dist/features/account/components/UserOrderTrackView.d.ts +1 -1
  162. package/dist/features/account/components/UserOrderTrackView.js +1 -1
  163. package/dist/features/account/components/UserOrdersView.js +6 -1
  164. package/dist/features/account/components/UserReturnsView.js +3 -1
  165. package/dist/features/account/components/UserSidebar.js +8 -1
  166. package/dist/features/account/schemas/index.d.ts +10 -10
  167. package/dist/features/addresses/schemas/address-form.d.ts +16 -16
  168. package/dist/features/addresses/schemas/index.d.ts +2 -2
  169. package/dist/features/admin/actions/admin-actions.d.ts +3 -3
  170. package/dist/features/admin/actions/admin-coupon-actions.d.ts +1 -1
  171. package/dist/features/admin/actions/admin-read-actions.d.ts +3 -3
  172. package/dist/features/admin/components/AdminActionIndexView.d.ts +1 -1
  173. package/dist/features/admin/components/AdminActionIndexView.js +7 -1
  174. package/dist/features/admin/components/AdminAdEditorView.d.ts +1 -1
  175. package/dist/features/admin/components/AdminAdEditorView.js +8 -1
  176. package/dist/features/admin/components/AdminAddressBookView.js +8 -1
  177. package/dist/features/admin/components/AdminAddressClustersView.js +7 -1
  178. package/dist/features/admin/components/AdminAddressEditorView.d.ts +1 -1
  179. package/dist/features/admin/components/AdminAddressEditorView.js +4 -1
  180. package/dist/features/admin/components/AdminAddressesView.js +6 -1
  181. package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +1 -1
  182. package/dist/features/admin/components/AdminAllEventEntriesView.js +5 -1
  183. package/dist/features/admin/components/AdminAnalyticsGuideView.js +5 -1
  184. package/dist/features/admin/components/AdminAnalyticsView.js +4 -2
  185. package/dist/features/admin/components/AdminArtView.d.ts +1 -1
  186. package/dist/features/admin/components/AdminArtView.js +1 -1
  187. package/dist/features/admin/components/AdminAuditLogView.d.ts +1 -1
  188. package/dist/features/admin/components/AdminAuditLogView.js +5 -1
  189. package/dist/features/admin/components/AdminBeysView.d.ts +1 -1
  190. package/dist/features/admin/components/AdminBeysView.js +3 -1
  191. package/dist/features/admin/components/AdminBidsView.d.ts +1 -1
  192. package/dist/features/admin/components/AdminBidsView.js +7 -2
  193. package/dist/features/admin/components/AdminBlogEditorView.d.ts +1 -1
  194. package/dist/features/admin/components/AdminBlogEditorView.js +14 -2
  195. package/dist/features/admin/components/AdminBlogView.d.ts +1 -1
  196. package/dist/features/admin/components/AdminBlogView.js +2 -1
  197. package/dist/features/admin/components/AdminBrandEditorView.d.ts +1 -1
  198. package/dist/features/admin/components/AdminBrandEditorView.js +7 -2
  199. package/dist/features/admin/components/AdminBrandsView.d.ts +1 -1
  200. package/dist/features/admin/components/AdminBrandsView.js +4 -2
  201. package/dist/features/admin/components/AdminBundleEditorView.d.ts +1 -1
  202. package/dist/features/admin/components/AdminBundleEditorView.js +3 -1
  203. package/dist/features/admin/components/AdminBundlesView.js +7 -1
  204. package/dist/features/admin/components/AdminCarouselEditorView.d.ts +1 -1
  205. package/dist/features/admin/components/AdminCarouselEditorView.js +12 -2
  206. package/dist/features/admin/components/AdminCarouselGroupEditorView.d.ts +1 -1
  207. package/dist/features/admin/components/AdminCarouselView.d.ts +1 -1
  208. package/dist/features/admin/components/AdminCarouselView.js +16 -2
  209. package/dist/features/admin/components/AdminCartsView.d.ts +1 -1
  210. package/dist/features/admin/components/AdminCartsView.js +3 -1
  211. package/dist/features/admin/components/AdminCatalogGuideView.js +5 -1
  212. package/dist/features/admin/components/AdminCategoriesView.d.ts +1 -1
  213. package/dist/features/admin/components/AdminCategoriesView.js +3 -1
  214. package/dist/features/admin/components/AdminCategoryEditorView.d.ts +1 -1
  215. package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
  216. package/dist/features/admin/components/AdminClassifiedView.d.ts +1 -1
  217. package/dist/features/admin/components/AdminClassifiedView.js +1 -1
  218. package/dist/features/admin/components/AdminContactView.d.ts +1 -1
  219. package/dist/features/admin/components/AdminContactView.js +5 -1
  220. package/dist/features/admin/components/AdminContentGuideView.js +5 -1
  221. package/dist/features/admin/components/AdminCouponEditorView.d.ts +1 -1
  222. package/dist/features/admin/components/AdminCouponEditorView.js +5 -1
  223. package/dist/features/admin/components/AdminCouponsView.d.ts +1 -1
  224. package/dist/features/admin/components/AdminCouponsView.js +6 -1
  225. package/dist/features/admin/components/AdminDashboardView.d.ts +1 -1
  226. package/dist/features/admin/components/AdminDashboardView.js +2 -2
  227. package/dist/features/admin/components/AdminDigitalCodesView.d.ts +1 -1
  228. package/dist/features/admin/components/AdminDigitalCodesView.js +1 -1
  229. package/dist/features/admin/components/AdminFaqEditorView.d.ts +1 -1
  230. package/dist/features/admin/components/AdminFaqEditorView.js +12 -2
  231. package/dist/features/admin/components/AdminFaqsView.d.ts +1 -1
  232. package/dist/features/admin/components/AdminFaqsView.js +3 -1
  233. package/dist/features/admin/components/AdminFeatureEditorView.d.ts +1 -1
  234. package/dist/features/admin/components/AdminFeatureEditorView.js +6 -1
  235. package/dist/features/admin/components/AdminFeaturesView.d.ts +1 -1
  236. package/dist/features/admin/components/AdminFeaturesView.js +2 -1
  237. package/dist/features/admin/components/AdminFulfillmentView.js +2 -1
  238. package/dist/features/admin/components/AdminGatewayEventsView.d.ts +1 -1
  239. package/dist/features/admin/components/AdminGatewayEventsView.js +8 -1
  240. package/dist/features/admin/components/AdminGroupedListingsView.d.ts +1 -1
  241. package/dist/features/admin/components/AdminGroupedListingsView.js +7 -2
  242. package/dist/features/admin/components/AdminGuideHubView.js +6 -1
  243. package/dist/features/admin/components/AdminHistoryView.d.ts +1 -1
  244. package/dist/features/admin/components/AdminHistoryView.js +1 -1
  245. package/dist/features/admin/components/AdminIntegrationsView.js +6 -1
  246. package/dist/features/admin/components/AdminInvoicingView.js +6 -1
  247. package/dist/features/admin/components/AdminLiveView.d.ts +1 -1
  248. package/dist/features/admin/components/AdminLiveView.js +1 -1
  249. package/dist/features/admin/components/AdminMediaView.d.ts +1 -1
  250. package/dist/features/admin/components/AdminMediaView.js +11 -1
  251. package/dist/features/admin/components/AdminMoneyCasesView.d.ts +1 -1
  252. package/dist/features/admin/components/AdminMoneyCasesView.js +7 -1
  253. package/dist/features/admin/components/AdminNavEditorView.js +3 -1
  254. package/dist/features/admin/components/AdminNavigationView.d.ts +1 -1
  255. package/dist/features/admin/components/AdminNavigationView.js +10 -1
  256. package/dist/features/admin/components/AdminNewsletterView.d.ts +1 -1
  257. package/dist/features/admin/components/AdminNewsletterView.js +7 -1
  258. package/dist/features/admin/components/AdminNotificationsView.d.ts +1 -1
  259. package/dist/features/admin/components/AdminNotificationsView.js +5 -1
  260. package/dist/features/admin/components/AdminOffersView.d.ts +1 -1
  261. package/dist/features/admin/components/AdminOffersView.js +5 -1
  262. package/dist/features/admin/components/AdminOrderEditorView.js +8 -2
  263. package/dist/features/admin/components/AdminOrdersGuideView.js +4 -1
  264. package/dist/features/admin/components/AdminOrdersView.d.ts +1 -1
  265. package/dist/features/admin/components/AdminOrdersView.js +3 -1
  266. package/dist/features/admin/components/AdminPartsView.d.ts +1 -1
  267. package/dist/features/admin/components/AdminPartsView.js +3 -1
  268. package/dist/features/admin/components/AdminPaymentClustersView.js +7 -1
  269. package/dist/features/admin/components/AdminPaymentMethodsView.js +7 -1
  270. package/dist/features/admin/components/AdminPaymentsGuideView.js +4 -1
  271. package/dist/features/admin/components/AdminPayoutsView.d.ts +1 -1
  272. package/dist/features/admin/components/AdminPayoutsView.js +5 -1
  273. package/dist/features/admin/components/AdminPrizeDrawsView.d.ts +1 -1
  274. package/dist/features/admin/components/AdminPrizeDrawsView.js +7 -1
  275. package/dist/features/admin/components/AdminProductEditorView.d.ts +1 -1
  276. package/dist/features/admin/components/AdminProductEditorView.js +1 -1
  277. package/dist/features/admin/components/AdminProductsView.d.ts +1 -1
  278. package/dist/features/admin/components/AdminProductsView.js +5 -2
  279. package/dist/features/admin/components/AdminReturnRequestsView.js +3 -1
  280. package/dist/features/admin/components/AdminReviewsView.d.ts +1 -1
  281. package/dist/features/admin/components/AdminReviewsView.js +8 -1
  282. package/dist/features/admin/components/AdminScammersView.d.ts +1 -1
  283. package/dist/features/admin/components/AdminScammersView.js +5 -1
  284. package/dist/features/admin/components/AdminSectionsView.js +1 -1
  285. package/dist/features/admin/components/AdminSessionsManager.js +1 -1
  286. package/dist/features/admin/components/AdminSessionsView.d.ts +1 -1
  287. package/dist/features/admin/components/AdminSessionsView.js +6 -1
  288. package/dist/features/admin/components/AdminSidebar.js +7 -1
  289. package/dist/features/admin/components/AdminSiteConfigGuideView.js +5 -1
  290. package/dist/features/admin/components/AdminSiteSettingsView.d.ts +1 -1
  291. package/dist/features/admin/components/AdminSiteSettingsView.js +2 -2
  292. package/dist/features/admin/components/AdminSparesView.d.ts +1 -1
  293. package/dist/features/admin/components/AdminSparesView.js +1 -1
  294. package/dist/features/admin/components/AdminStickersView.d.ts +1 -1
  295. package/dist/features/admin/components/AdminStickersView.js +1 -1
  296. package/dist/features/admin/components/AdminStoreAddressesView.js +1 -1
  297. package/dist/features/admin/components/AdminStoreEditorView.js +7 -1
  298. package/dist/features/admin/components/AdminStoresGuideView.js +5 -1
  299. package/dist/features/admin/components/AdminStoresView.d.ts +1 -1
  300. package/dist/features/admin/components/AdminStoresView.js +4 -1
  301. package/dist/features/admin/components/AdminSublistingCategoryEditorView.d.ts +1 -1
  302. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +8 -3
  303. package/dist/features/admin/components/AdminSupportTicketDetailView.js +12 -1
  304. package/dist/features/admin/components/AdminSupportTicketsView.d.ts +1 -1
  305. package/dist/features/admin/components/AdminSupportTicketsView.js +4 -1
  306. package/dist/features/admin/components/AdminTaxCodeEditorView.d.ts +1 -1
  307. package/dist/features/admin/components/AdminTaxCodeEditorView.js +4 -1
  308. package/dist/features/admin/components/AdminTaxCodesView.d.ts +1 -1
  309. package/dist/features/admin/components/AdminTaxCodesView.js +1 -1
  310. package/dist/features/admin/components/AdminTeamGuideView.js +5 -1
  311. package/dist/features/admin/components/AdminTeamView.d.ts +1 -1
  312. package/dist/features/admin/components/AdminTeamView.js +4 -1
  313. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.d.ts +1 -1
  314. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +4 -1
  315. package/dist/features/admin/components/AdminTesterChecklistView.d.ts +1 -1
  316. package/dist/features/admin/components/AdminTesterChecklistView.js +4 -1
  317. package/dist/features/admin/components/AdminTopBar.js +1 -1
  318. package/dist/features/admin/components/AdminTrustGuideView.js +5 -1
  319. package/dist/features/admin/components/AdminUserEditorView.js +12 -1
  320. package/dist/features/admin/components/AdminUsersGuideView.js +5 -1
  321. package/dist/features/admin/components/AdminUsersView.d.ts +1 -1
  322. package/dist/features/admin/components/AdminViewCards.js +4 -1
  323. package/dist/features/admin/components/AdminWishlistsView.d.ts +1 -1
  324. package/dist/features/admin/components/AdminWishlistsView.js +1 -1
  325. package/dist/features/admin/components/DashboardStats.js +3 -1
  326. package/dist/features/admin/components/DataListingView.d.ts +1 -1
  327. package/dist/features/admin/components/DataListingView.js +14 -2
  328. package/dist/features/admin/components/DataTable.js +7 -1
  329. package/dist/features/admin/components/OwnerQuickActions.js +2 -1
  330. package/dist/features/admin/components/QuickEditMenu.js +2 -1
  331. package/dist/features/admin/components/ViewAuditLogEntryModal.js +6 -1
  332. package/dist/features/admin/components/ViewNotificationModal.js +6 -1
  333. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +2 -1
  334. package/dist/features/admin/components/analytics/AdminStatCard.js +3 -1
  335. package/dist/features/admin/components/analytics/AdminTopProductsTable.js +3 -1
  336. package/dist/features/admin/components/sections/adminSectionsTypes.js +1 -0
  337. package/dist/features/admin/constants/site-settings-tabs.d.ts +1 -1
  338. package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
  339. package/dist/features/admin/hooks/useOptimisticRowFlag.js +1 -1
  340. package/dist/features/admin/schemas/action-index-form.d.ts +2 -2
  341. package/dist/features/admin/schemas/admin-editor-forms.d.ts +12 -12
  342. package/dist/features/admin/schemas/admin-ops-forms.d.ts +8 -8
  343. package/dist/features/admin/schemas/admin-user-form.d.ts +8 -8
  344. package/dist/features/admin/schemas/nav-item-form.d.ts +8 -8
  345. package/dist/features/auctions/actions/bid-actions.js +1 -1
  346. package/dist/features/auctions/components/AuctionBidsTable.js +6 -1
  347. package/dist/features/auctions/components/AuctionBottomActions.js +1 -1
  348. package/dist/features/auctions/components/AuctionDetailPageView.js +11 -2
  349. package/dist/features/auctions/components/AuctionFilters.js +1 -1
  350. package/dist/features/auctions/components/AuctionLiveStatusBadge.js +1 -1
  351. package/dist/features/auctions/components/AuctionsListView.js +3 -1
  352. package/dist/features/auctions/components/CollapsibleBidHistory.js +4 -1
  353. package/dist/features/auctions/components/LiveBidPrice.js +3 -1
  354. package/dist/features/auctions/components/LiveMinIncrement.js +1 -1
  355. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +1 -1
  356. package/dist/features/auctions/components/MarketplaceAuctionCard.js +9 -3
  357. package/dist/features/auctions/components/MarketplaceAuctionGrid.d.ts +1 -1
  358. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +3 -1
  359. package/dist/features/auctions/components/PlaceBidFormClient.js +8 -1
  360. package/dist/features/auctions/schemas/index.d.ts +34 -34
  361. package/dist/features/auth/components/ForgotPasswordView.js +6 -1
  362. package/dist/features/auth/components/Guards.js +4 -1
  363. package/dist/features/auth/components/LoginForm.js +7 -1
  364. package/dist/features/auth/components/OAuthLoadingView.js +3 -1
  365. package/dist/features/auth/components/RegisterForm.js +5 -1
  366. package/dist/features/auth/components/ResetPasswordView.js +6 -1
  367. package/dist/features/auth/components/SocialAuthButtons.js +4 -1
  368. package/dist/features/auth/components/VerifyEmailView.js +4 -1
  369. package/dist/features/auth/schemas/index.d.ts +2 -2
  370. package/dist/features/before-after/components/BeforeAfterGallery.js +3 -1
  371. package/dist/features/before-after/components/BeforeAfterSlider.js +3 -1
  372. package/dist/features/before-after/schemas/index.d.ts +4 -4
  373. package/dist/features/beys/components/BeyDetailPageView.js +7 -1
  374. package/dist/features/blog/actions/blog-actions.d.ts +39 -39
  375. package/dist/features/blog/components/BlogFeaturedCard.js +6 -1
  376. package/dist/features/blog/components/BlogFilters.js +1 -1
  377. package/dist/features/blog/components/BlogIndexListing.js +7 -1
  378. package/dist/features/blog/components/BlogIndexPageView.js +3 -1
  379. package/dist/features/blog/components/BlogListView.js +6 -1
  380. package/dist/features/blog/components/BlogPostForm.js +9 -2
  381. package/dist/features/blog/components/BlogPostView.js +5 -1
  382. package/dist/features/blog/schemas/blog-form.d.ts +10 -10
  383. package/dist/features/blog/schemas/index.d.ts +80 -80
  384. package/dist/features/cart/components/CartDrawer.js +6 -1
  385. package/dist/features/cart/components/CartGroupLineRow.js +5 -1
  386. package/dist/features/cart/components/CartPriceBreakdown.js +4 -1
  387. package/dist/features/cart/components/CartSummary.js +2 -1
  388. package/dist/features/cart/components/CartView.js +3 -1
  389. package/dist/features/cart/components/CheckoutAddressStep.js +3 -1
  390. package/dist/features/cart/components/CheckoutSuccessView.d.ts +1 -1
  391. package/dist/features/cart/components/CheckoutSuccessView.js +1 -1
  392. package/dist/features/cart/components/CheckoutView.js +3 -1
  393. package/dist/features/cart/components/PointsTenderPicker.js +3 -1
  394. package/dist/features/cart/components/ShippingPicker.js +4 -1
  395. package/dist/features/cart/components/StoreAddonsPicker.js +3 -1
  396. package/dist/features/cart/schemas/index.d.ts +30 -30
  397. package/dist/features/catalogue/actions/approve-catalogue-listing.js +1 -1
  398. package/dist/features/catalogue/actions/list-from-catalogue.js +2 -1
  399. package/dist/features/catalogue/actions/submit-for-approval.js +1 -1
  400. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +6 -1
  401. package/dist/features/catalogue/components/CatalogueItemEditorView.js +1 -1
  402. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +6 -1
  403. package/dist/features/catalogue/components/PublicCatalogueView.js +5 -1
  404. package/dist/features/catalogue/components/UserCatalogueView.js +7 -1
  405. package/dist/features/catalogue/schemas/validation.d.ts +12 -12
  406. package/dist/features/catalogue/utils/product-from-item.js +1 -1
  407. package/dist/features/categories/components/BrandDetailPageView.js +6 -2
  408. package/dist/features/categories/components/BrandDetailTabs.js +2 -1
  409. package/dist/features/categories/components/BreadcrumbTrail.js +4 -2
  410. package/dist/features/categories/components/BundleBuyNowCta.js +5 -2
  411. package/dist/features/categories/components/BundleCollage.js +5 -1
  412. package/dist/features/categories/components/BundleDetailView.js +6 -1
  413. package/dist/features/categories/components/BundleDynamicRuleEditor.js +6 -1
  414. package/dist/features/categories/components/BundleItemsPicker.js +7 -1
  415. package/dist/features/categories/components/BundlesListView.js +4 -2
  416. package/dist/features/categories/components/CategoriesIndexListing.js +8 -1
  417. package/dist/features/categories/components/CategoriesIndexPageView.js +3 -1
  418. package/dist/features/categories/components/CategoryBundlesListing.js +8 -2
  419. package/dist/features/categories/components/CategoryDetailPageView.js +7 -2
  420. package/dist/features/categories/components/CategoryDetailTabs.js +2 -1
  421. package/dist/features/categories/components/CategoryFilters.js +1 -1
  422. package/dist/features/categories/components/CategoryForm.js +3 -1
  423. package/dist/features/categories/components/CategoryGrid.js +3 -1
  424. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.js +3 -1
  425. package/dist/features/categories/components/CategoryProductsListing.js +8 -1
  426. package/dist/features/categories/components/CategorySelectorCreate.js +6 -1
  427. package/dist/features/categories/components/CategorySortSelect.js +4 -1
  428. package/dist/features/categories/components/CategoryStoresListing.js +2 -1
  429. package/dist/features/categories/components/CategoryTableColumns.js +6 -2
  430. package/dist/features/categories/components/CategoryTemplatePicker.js +4 -1
  431. package/dist/features/categories/components/CategoryTree.js +2 -1
  432. package/dist/features/categories/components/ConcernCard.js +3 -1
  433. package/dist/features/categories/components/ConcernGrid.js +1 -1
  434. package/dist/features/categories/components/PriceGuidanceHint.js +3 -1
  435. package/dist/features/categories/components/SubcategoryCardRow.js +4 -1
  436. package/dist/features/categories/schemas/bundle-form.d.ts +22 -22
  437. package/dist/features/categories/schemas/index.d.ts +100 -100
  438. package/dist/features/checkout/components/CheckoutStepper.js +3 -1
  439. package/dist/features/classified/components/ClassifiedDetailPageView.js +7 -1
  440. package/dist/features/classified/components/ClassifiedFilters.js +3 -1
  441. package/dist/features/collections/components/CollectionCard.js +4 -1
  442. package/dist/features/collections/schemas/index.d.ts +9 -9
  443. package/dist/features/consultation/components/ConsultationForm.js +3 -1
  444. package/dist/features/consultation/schemas/index.d.ts +8 -8
  445. package/dist/features/contact/components/ContactForm.js +5 -2
  446. package/dist/features/contact/components/ContactInfoSidebar.js +4 -1
  447. package/dist/features/contact/components/ContactPageView.js +6 -1
  448. package/dist/features/corporate/components/CorporateInquiryForm.js +3 -1
  449. package/dist/features/dashboard/components/DashboardHubView.js +7 -1
  450. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +7 -1
  451. package/dist/features/digital-codes/components/DigitalCodeFilters.js +1 -1
  452. package/dist/features/dispute-reasons/components/AdminDisputeReasonsView.js +4 -1
  453. package/dist/features/events/components/AdminEventEditorView.d.ts +1 -1
  454. package/dist/features/events/components/AdminEventEditorView.js +13 -2
  455. package/dist/features/events/components/AdminEventEntriesView.js +10 -2
  456. package/dist/features/events/components/AdminEventsView.d.ts +1 -1
  457. package/dist/features/events/components/AdminEventsView.js +2 -1
  458. package/dist/features/events/components/EventBanner.js +3 -1
  459. package/dist/features/events/components/EventCard.js +7 -1
  460. package/dist/features/events/components/EventDetailView.d.ts +1 -1
  461. package/dist/features/events/components/EventDetailView.js +1 -1
  462. package/dist/features/events/components/EventFilters.js +1 -1
  463. package/dist/features/events/components/EventFormDrawer.js +1 -1
  464. package/dist/features/events/components/EventInsights.js +3 -1
  465. package/dist/features/events/components/EventLeaderboard.js +3 -1
  466. package/dist/features/events/components/EventLikeButton.js +4 -1
  467. package/dist/features/events/components/EventLikersRail.js +5 -1
  468. package/dist/features/events/components/EventOfferCard.js +3 -1
  469. package/dist/features/events/components/EventParticipateView.js +1 -1
  470. package/dist/features/events/components/EventPollWidget.js +8 -1
  471. package/dist/features/events/components/EventRaffleEntryForm.js +3 -1
  472. package/dist/features/events/components/EventRaffleWinnerView.js +6 -1
  473. package/dist/features/events/components/EventRafflesSection.js +3 -1
  474. package/dist/features/events/components/EventSaleBanner.js +4 -1
  475. package/dist/features/events/components/EventStatusBadge.js +1 -1
  476. package/dist/features/events/components/EventTypeBadge.js +1 -1
  477. package/dist/features/events/components/EventsIndexListing.js +7 -1
  478. package/dist/features/events/components/EventsListPageView.js +3 -1
  479. package/dist/features/events/components/EventsListView.js +4 -1
  480. package/dist/features/events/components/RelatedEventsCarousel.js +3 -1
  481. package/dist/features/events/components/SpinWheel.js +1 -1
  482. package/dist/features/events/components/SpinWheelView.js +7 -1
  483. package/dist/features/events/schemas/event-form.d.ts +5 -0
  484. package/dist/features/events/schemas/event-form.js +17 -0
  485. package/dist/features/events/schemas/firestore.d.ts +49 -1
  486. package/dist/features/events/schemas/index.d.ts +184 -184
  487. package/dist/features/events/utils/carousel-slide.d.ts +0 -9
  488. package/dist/features/events/utils/carousel-slide.js +38 -1
  489. package/dist/features/faq/actions/faq-actions.d.ts +12 -12
  490. package/dist/features/faq/components/ContactCTA.js +5 -1
  491. package/dist/features/faq/components/FAQAccordion.js +6 -1
  492. package/dist/features/faq/components/FAQCategorySidebar.js +5 -1
  493. package/dist/features/faq/components/FAQHelpfulButtons.js +3 -1
  494. package/dist/features/faq/components/FAQPageContent.js +8 -1
  495. package/dist/features/faq/components/FAQSearchableList.js +2 -1
  496. package/dist/features/faq/components/FAQSortDropdown.js +4 -1
  497. package/dist/features/faq/components/RelatedFAQs.js +4 -1
  498. package/dist/features/faq/schemas/index.d.ts +14 -14
  499. package/dist/features/filters/AsyncFacetSection.js +6 -1
  500. package/dist/features/filters/FilterFacetSection.js +6 -1
  501. package/dist/features/filters/FilterPanel.js +1 -1
  502. package/dist/features/filters/RangeFilter.js +6 -1
  503. package/dist/features/filters/SwitchFilter.js +5 -1
  504. package/dist/features/forms/Checkbox.js +3 -1
  505. package/dist/features/forms/Input.js +2 -1
  506. package/dist/features/forms/Radio.js +3 -1
  507. package/dist/features/forms/Select.js +2 -1
  508. package/dist/features/forms/Slider.js +3 -1
  509. package/dist/features/forms/Textarea.js +3 -1
  510. package/dist/features/forms/Toggle.js +3 -1
  511. package/dist/features/gateway-events/schemas/index.d.ts +10 -10
  512. package/dist/features/grouped/components/GroupedListingDetailView.js +4 -1
  513. package/dist/features/grouped/components/GroupedListingEditorView.js +5 -2
  514. package/dist/features/grouped/components/GroupedListingsCarousel.js +1 -1
  515. package/dist/features/grouped/schemas/grouped-listing-form.d.ts +2 -2
  516. package/dist/features/grouped/schemas/index.d.ts +6 -6
  517. package/dist/features/history/hooks/useHistory.js +1 -1
  518. package/dist/features/homepage/actions/homepage-section-actions.d.ts +4 -4
  519. package/dist/features/homepage/components/AdSlot.js +3 -1
  520. package/dist/features/homepage/components/BrandsSection.js +6 -1
  521. package/dist/features/homepage/components/CTABannerSection.js +6 -1
  522. package/dist/features/homepage/components/CharacterHotspot.js +5 -1
  523. package/dist/features/homepage/components/CharacterHotspotForm.js +8 -1
  524. package/dist/features/homepage/components/CollectionCardsSection.js +4 -1
  525. package/dist/features/homepage/components/CustomCardsSection.js +6 -1
  526. package/dist/features/homepage/components/CustomerReviewsSection.js +5 -1
  527. package/dist/features/homepage/components/FAQSection.js +8 -1
  528. package/dist/features/homepage/components/FeaturedBundlesSection.js +3 -1
  529. package/dist/features/homepage/components/GoogleReviewsSection.js +6 -1
  530. package/dist/features/homepage/components/HeroCarousel.js +6 -1
  531. package/dist/features/homepage/components/HomepageCouponsSection.d.ts +25 -0
  532. package/dist/features/homepage/components/HomepageCouponsSection.js +42 -0
  533. package/dist/features/homepage/components/HowItWorksSection.d.ts +1 -1
  534. package/dist/features/homepage/components/HowItWorksSection.js +7 -1
  535. package/dist/features/homepage/components/MarketplaceHomepageView.js +52 -4
  536. package/dist/features/homepage/components/NewsletterSection.js +4 -1
  537. package/dist/features/homepage/components/PromoGrid.js +4 -1
  538. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
  539. package/dist/features/homepage/components/SectionCarousel.js +6 -1
  540. package/dist/features/homepage/components/SecurityHighlightsSection.js +6 -1
  541. package/dist/features/homepage/components/ShopByCategorySection.js +7 -1
  542. package/dist/features/homepage/components/SocialFeedSection.js +6 -1
  543. package/dist/features/homepage/components/SocialPostCard.js +4 -1
  544. package/dist/features/homepage/components/StatsCounterSection.js +5 -1
  545. package/dist/features/homepage/components/TestimonialsCarousel.js +4 -1
  546. package/dist/features/homepage/components/TrustFeaturesSection.js +5 -1
  547. package/dist/features/homepage/components/WelcomeSection.js +10 -1
  548. package/dist/features/homepage/components/WhatsAppCommunitySection.js +8 -1
  549. package/dist/features/homepage/lib/section-renderer.d.ts +2 -0
  550. package/dist/features/homepage/lib/section-renderer.js +8 -0
  551. package/dist/features/homepage/schemas/firestore.d.ts +23 -2
  552. package/dist/features/homepage/schemas/firestore.js +2 -0
  553. package/dist/features/homepage/schemas/index.d.ts +133 -133
  554. package/dist/features/inventory/components/ReceiveStationView.js +9 -1
  555. package/dist/features/jobs/actions/enqueue-job.js +1 -1
  556. package/dist/features/layout/AutoBreadcrumbs.js +3 -1
  557. package/dist/features/layout/BackToTop.js +2 -1
  558. package/dist/features/layout/BottomActions.js +5 -1
  559. package/dist/features/layout/BottomActionsContext.d.ts +1 -1
  560. package/dist/features/layout/BottomChrome.js +1 -1
  561. package/dist/features/layout/BottomNavItem.js +2 -1
  562. package/dist/features/layout/BottomNavLayout.js +1 -1
  563. package/dist/features/layout/BottomSheet.js +4 -1
  564. package/dist/features/layout/Breadcrumbs.js +2 -1
  565. package/dist/features/layout/FooterLayout.js +5 -1
  566. package/dist/features/layout/LocaleSwitcher.js +1 -1
  567. package/dist/features/layout/NavItem.js +2 -1
  568. package/dist/features/layout/NavbarLayout.js +5 -1
  569. package/dist/features/layout/PageTabs.js +1 -1
  570. package/dist/features/layout/SideActionDock.js +7 -1
  571. package/dist/features/layout/SidebarLayout.d.ts +1 -1
  572. package/dist/features/layout/SidebarLayout.js +2 -1
  573. package/dist/features/layout/TitleBarLayout.js +9 -1
  574. package/dist/features/live/components/LiveItemDetailPageView.js +7 -1
  575. package/dist/features/live/components/LiveItemFilters.js +3 -1
  576. package/dist/features/lottery/schemas/config-write.d.ts +10 -10
  577. package/dist/features/lottery/schemas/zod.d.ts +6 -6
  578. package/dist/features/media/modals/ImageCropModal.js +6 -1
  579. package/dist/features/media/modals/ImageEditor.js +6 -1
  580. package/dist/features/media/modals/VideoTrimModal.js +6 -1
  581. package/dist/features/media/types/index.d.ts +4 -4
  582. package/dist/features/media/upload/MediaUploadList.js +7 -1
  583. package/dist/features/orders/components/OrderAddonBadges.js +2 -1
  584. package/dist/features/orders/components/OrderFilters.js +1 -1
  585. package/dist/features/orders/components/OrderPaymentSummary.js +4 -1
  586. package/dist/features/orders/components/OrderProvenanceCard.js +5 -1
  587. package/dist/features/orders/components/OrderScopeTabs.js +1 -1
  588. package/dist/features/orders/components/OrderSiblingPayments.js +3 -1
  589. package/dist/features/orders/components/OrderStatusTimeline.js +4 -1
  590. package/dist/features/orders/components/OrdersList.js +4 -1
  591. package/dist/features/orders/components/RefundHistoryTable.js +4 -1
  592. package/dist/features/orders/components/RefundRequestView.js +1 -1
  593. package/dist/features/orders/components/YourPurchaseStrip.js +5 -1
  594. package/dist/features/orders/schemas/index.d.ts +86 -86
  595. package/dist/features/parts/components/AssemblyDrawer.js +8 -1
  596. package/dist/features/parts/components/ModelCompositionPanel.js +5 -1
  597. package/dist/features/parts/components/PartDetailPageView.js +7 -1
  598. package/dist/features/parts/components/PartsIndexPageView.js +6 -1
  599. package/dist/features/parts/components/PartsSearchBox.js +5 -1
  600. package/dist/features/payments/schemas/index.d.ts +10 -10
  601. package/dist/features/points/schemas/adjust-form.d.ts +2 -2
  602. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +1 -1
  603. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +10 -3
  604. package/dist/features/pre-orders/components/PreOrderActionsClient.js +6 -1
  605. package/dist/features/pre-orders/components/PreOrderBadge.js +2 -1
  606. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +9 -2
  607. package/dist/features/pre-orders/components/PreOrderFilters.js +1 -1
  608. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +11 -2
  609. package/dist/features/pre-orders/components/PreOrdersListView.js +3 -1
  610. package/dist/features/pre-orders/components/PreorderCard.js +1 -1
  611. package/dist/features/pre-orders/schemas/index.d.ts +15 -15
  612. package/dist/features/price-index/components/PriceIndexToolView.js +4 -1
  613. package/dist/features/pricing/components/AdminPricingView.js +4 -1
  614. package/dist/features/print/components/BoxLabelPrintView.js +5 -1
  615. package/dist/features/print/components/LabelProfilePicker.js +3 -1
  616. package/dist/features/print/components/labels.js +3 -1
  617. package/dist/features/products/columns/productTableColumns.js +5 -1
  618. package/dist/features/products/components/ArtStickersListView.js +3 -1
  619. package/dist/features/products/components/AuctionDetailView.d.ts +1 -1
  620. package/dist/features/products/components/AuctionDetailView.js +2 -1
  621. package/dist/features/products/components/AuctionsIndexListing.js +10 -2
  622. package/dist/features/products/components/AvailabilityScopeHint.js +3 -1
  623. package/dist/features/products/components/AvailabilityTabs.js +1 -1
  624. package/dist/features/products/components/BidHistory.js +4 -1
  625. package/dist/features/products/components/CityCollectiblesView.js +6 -1
  626. package/dist/features/products/components/CompareOverlay.js +6 -1
  627. package/dist/features/products/components/CustomFieldsEditor.js +6 -1
  628. package/dist/features/products/components/CustomSectionTabContent.js +4 -1
  629. package/dist/features/products/components/CustomSectionsEditor.js +6 -1
  630. package/dist/features/products/components/FeatureBadge.js +2 -1
  631. package/dist/features/products/components/GroupMemberPicker.js +8 -1
  632. package/dist/features/products/components/GroupSettingsPanel.js +12 -1
  633. package/dist/features/products/components/MakeOfferButton.js +6 -1
  634. package/dist/features/products/components/MarketplaceBundleCard.js +6 -1
  635. package/dist/features/products/components/MarketplacePrizeDrawCard.js +7 -1
  636. package/dist/features/products/components/NonRefundableConsentModal.js +6 -1
  637. package/dist/features/products/components/PreOrderDetailView.d.ts +1 -1
  638. package/dist/features/products/components/PreOrderDetailView.js +1 -1
  639. package/dist/features/products/components/PrizeDrawCollage.js +6 -1
  640. package/dist/features/products/components/PrizeDrawDetailPageView.js +6 -1
  641. package/dist/features/products/components/PrizeDrawEntryActions.js +7 -1
  642. package/dist/features/products/components/PrizeDrawWinnerMappingView.js +7 -1
  643. package/dist/features/products/components/PrizeDrawsIndexListing.js +8 -1
  644. package/dist/features/products/components/PrizeDrawsListingView.js +3 -1
  645. package/dist/features/products/components/PrizeDrawsSection.js +3 -1
  646. package/dist/features/products/components/PrizeRevealModal.js +6 -1
  647. package/dist/features/products/components/ProductCardMetadataSection.js +3 -1
  648. package/dist/features/products/components/ProductDetailActions.js +4 -1
  649. package/dist/features/products/components/ProductDetailPageView.js +10 -2
  650. package/dist/features/products/components/ProductDetailView.d.ts +1 -1
  651. package/dist/features/products/components/ProductDetailView.js +1 -1
  652. package/dist/features/products/components/ProductFeatureBadges.js +4 -1
  653. package/dist/features/products/components/ProductFeaturesSelector.js +3 -1
  654. package/dist/features/products/components/ProductFilters.js +2 -1
  655. package/dist/features/products/components/ProductForm.js +1 -1
  656. package/dist/features/products/components/ProductGalleryClient.js +4 -1
  657. package/dist/features/products/components/ProductGradingTab.js +4 -1
  658. package/dist/features/products/components/ProductGrid.d.ts +1 -1
  659. package/dist/features/products/components/ProductGrid.js +7 -1
  660. package/dist/features/products/components/ProductsIndexListing.js +11 -3
  661. package/dist/features/products/components/ProductsIndexPageView.js +6 -2
  662. package/dist/features/products/components/RelatedItemsSection.js +1 -1
  663. package/dist/features/products/components/RelatedProducts.js +3 -1
  664. package/dist/features/products/components/ShowGroupSection.js +7 -1
  665. package/dist/features/products/components/SparesListView.js +4 -1
  666. package/dist/features/products/components/SublistingCarouselSection.js +4 -1
  667. package/dist/features/products/components/SublistingCategorySelect.js +2 -1
  668. package/dist/features/products/hooks/useProducts.js +1 -1
  669. package/dist/features/products/schemas/index.d.ts +70 -70
  670. package/dist/features/products/schemas/product-features.validators.d.ts +52 -52
  671. package/dist/features/products/schemas/surface-counts.d.ts +83 -0
  672. package/dist/features/products/schemas/surface-counts.js +58 -0
  673. package/dist/features/promotions/actions/promotions-actions.js +22 -6
  674. package/dist/features/promotions/components/AttachedCouponsSection.js +5 -2
  675. package/dist/features/promotions/components/CouponCard.js +8 -1
  676. package/dist/features/promotions/components/CouponCodeCopyRow.js +2 -1
  677. package/dist/features/promotions/components/CouponHelpDetails.js +4 -1
  678. package/dist/features/promotions/components/CouponsIndexListing.js +12 -1
  679. package/dist/features/promotions/components/PromotionsView.js +4 -1
  680. package/dist/features/promotions/constants/attached-coupons.d.ts +14 -0
  681. package/dist/features/promotions/repository/coupons.repository.js +32 -2
  682. package/dist/features/promotions/schemas/firestore.d.ts +33 -0
  683. package/dist/features/promotions/schemas/firestore.js +44 -0
  684. package/dist/features/promotions/schemas/index.d.ts +108 -108
  685. package/dist/features/reviews/components/ReviewDetailPageView.js +4 -1
  686. package/dist/features/reviews/components/ReviewDetailShell.js +8 -1
  687. package/dist/features/reviews/components/ReviewFilters.js +1 -1
  688. package/dist/features/reviews/components/ReviewModal.js +7 -2
  689. package/dist/features/reviews/components/ReviewSummary.js +4 -2
  690. package/dist/features/reviews/components/ReviewsIndexPageView.js +3 -1
  691. package/dist/features/reviews/components/ReviewsList.js +7 -2
  692. package/dist/features/reviews/components/ReviewsListingPanel.js +7 -1
  693. package/dist/features/reviews/schemas/index.d.ts +40 -40
  694. package/dist/features/scams/components/ScamAwarenessModal.js +7 -1
  695. package/dist/features/scams/components/ScamProfileView.js +11 -1
  696. package/dist/features/scams/constants/scammer-status-display.d.ts +1 -1
  697. package/dist/features/scams/schemas/index.d.ts +22 -22
  698. package/dist/features/scams/schemas/report-form.d.ts +4 -4
  699. package/dist/features/search/components/EntityTypeahead.js +5 -1
  700. package/dist/features/search/components/Search.js +7 -1
  701. package/dist/features/search/components/SearchFacetRail.js +4 -1
  702. package/dist/features/search/components/SearchResultsClient.js +1 -1
  703. package/dist/features/search/components/SearchResultsPageView.js +5 -1
  704. package/dist/features/seller/components/BulkStockModal.js +2 -1
  705. package/dist/features/seller/components/CategoryChipPicker.js +3 -1
  706. package/dist/features/seller/components/FulfillmentView.js +2 -1
  707. package/dist/features/seller/components/GroupInlineSelect.js +1 -1
  708. package/dist/features/seller/components/SellerAddressesView.js +11 -2
  709. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +9 -1
  710. package/dist/features/seller/components/SellerAnalyticsView.d.ts +1 -1
  711. package/dist/features/seller/components/SellerAnalyticsView.js +4 -1
  712. package/dist/features/seller/components/SellerBidsView.js +8 -2
  713. package/dist/features/seller/components/SellerBundlesView.js +7 -1
  714. package/dist/features/seller/components/SellerCouponEditorView.js +5 -1
  715. package/dist/features/seller/components/SellerCouponsView.d.ts +1 -1
  716. package/dist/features/seller/components/SellerCouponsView.js +5 -1
  717. package/dist/features/seller/components/SellerDashboardView.d.ts +1 -1
  718. package/dist/features/seller/components/SellerDashboardView.js +4 -1
  719. package/dist/features/seller/components/SellerFeaturesView.js +8 -1
  720. package/dist/features/seller/components/SellerGoogleReviewsView.js +7 -1
  721. package/dist/features/seller/components/SellerGroupedListingsView.js +4 -1
  722. package/dist/features/seller/components/SellerGuideView.d.ts +1 -1
  723. package/dist/features/seller/components/SellerGuideView.js +1 -1
  724. package/dist/features/seller/components/SellerListingTypeView.js +4 -1
  725. package/dist/features/seller/components/SellerOffersView.d.ts +1 -1
  726. package/dist/features/seller/components/SellerOffersView.js +4 -1
  727. package/dist/features/seller/components/SellerOrdersView.js +8 -1
  728. package/dist/features/seller/components/SellerPayoutHistoryTable.js +2 -1
  729. package/dist/features/seller/components/SellerPayoutMethodsView.js +7 -1
  730. package/dist/features/seller/components/SellerPayoutRequestView.js +8 -1
  731. package/dist/features/seller/components/SellerPayoutSettingsView.js +3 -2
  732. package/dist/features/seller/components/SellerPayoutStats.js +1 -1
  733. package/dist/features/seller/components/SellerPayoutsView.d.ts +1 -1
  734. package/dist/features/seller/components/SellerPayoutsView.js +10 -1
  735. package/dist/features/seller/components/SellerProductsCards.js +7 -1
  736. package/dist/features/seller/components/SellerProductsFilterDrawer.js +4 -1
  737. package/dist/features/seller/components/SellerProductsView.js +7 -1
  738. package/dist/features/seller/components/SellerReviewsView.js +11 -1
  739. package/dist/features/seller/components/SellerShippingConfigsView.js +6 -1
  740. package/dist/features/seller/components/SellerShippingView.js +2 -2
  741. package/dist/features/seller/components/SellerSidebar.js +7 -1
  742. package/dist/features/seller/components/SellerStoreCategoriesView.js +5 -1
  743. package/dist/features/seller/components/SellerStoreSetupView.js +2 -1
  744. package/dist/features/seller/components/SellerStorefrontView.js +1 -1
  745. package/dist/features/seller/components/SellerSupportView.d.ts +1 -1
  746. package/dist/features/seller/components/SellerSupportView.js +4 -1
  747. package/dist/features/seller/components/SellersListView.d.ts +1 -1
  748. package/dist/features/seller/components/SellersListView.js +1 -1
  749. package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +1 -1
  750. package/dist/features/seller/components/analytics/SellerRevenueChart.js +2 -1
  751. package/dist/features/seller/components/analytics/SellerTopProducts.js +3 -1
  752. package/dist/features/seller/schemas/coupon-form.d.ts +50 -50
  753. package/dist/features/seller/schemas/index.d.ts +22 -22
  754. package/dist/features/seller/schemas/order-forms.d.ts +12 -12
  755. package/dist/features/server-errors/schemas/index.d.ts +4 -4
  756. package/dist/features/shell/CommandPalette.js +7 -1
  757. package/dist/features/shell/FormShell.js +5 -1
  758. package/dist/features/shell/SectionForm.js +4 -1
  759. package/dist/features/shipments/components/AdminShipmentEditorView.js +9 -1
  760. package/dist/features/shipments/components/AdminShipmentLotItemsView.js +11 -1
  761. package/dist/features/shipments/components/AdminShipmentProjectionsView.js +10 -1
  762. package/dist/features/shipments/components/AdminShipmentsView.d.ts +1 -1
  763. package/dist/features/shipments/components/AdminShipmentsView.js +3 -1
  764. package/dist/features/shipments/components/ShipmentItemLinkModal.js +7 -1
  765. package/dist/features/shipments/schemas/validation.d.ts +44 -44
  766. package/dist/features/site-settings/components/ActionPermissionsManager.js +7 -2
  767. package/dist/features/site-settings/components/NavPermissionsManager.js +6 -2
  768. package/dist/features/site-settings/components/ThemeManagerView.js +9 -1
  769. package/dist/features/status-history/components/StatusTimeline.js +4 -1
  770. package/dist/features/sticker-trace/components/StickerPrintPanel.js +6 -1
  771. package/dist/features/sticker-trace/components/StickerRetryPanel.js +4 -1
  772. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +5 -1
  773. package/dist/features/sticker-trace/components/StickerTraceStudio.js +5 -1
  774. package/dist/features/store-extensions/schemas/admin-notification-form.d.ts +5 -5
  775. package/dist/features/store-extensions/schemas/custom-role-form.d.ts +12 -12
  776. package/dist/features/store-extensions/schemas/item-request-create-form.d.ts +2 -2
  777. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +13 -13
  778. package/dist/features/store-extensions/schemas/payout-method-form.d.ts +10 -10
  779. package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +12 -12
  780. package/dist/features/store-extensions/schemas/store-category-form.d.ts +10 -10
  781. package/dist/features/stores/components/InteractiveStoreCard.js +6 -1
  782. package/dist/features/stores/components/SellerStandingPanel.js +3 -1
  783. package/dist/features/stores/components/SellerTierBadge.js +2 -1
  784. package/dist/features/stores/components/StoreAboutView.js +5 -1
  785. package/dist/features/stores/components/StoreAddressSelectorCreate.js +2 -1
  786. package/dist/features/stores/components/StoreAuctionsListing.js +8 -1
  787. package/dist/features/stores/components/StoreAuctionsView.d.ts +1 -1
  788. package/dist/features/stores/components/StoreAuctionsView.js +1 -1
  789. package/dist/features/stores/components/StoreBundlesPageView.js +1 -1
  790. package/dist/features/stores/components/StoreCapabilitiesGuideView.js +6 -1
  791. package/dist/features/stores/components/StoreClassifiedsListing.js +7 -1
  792. package/dist/features/stores/components/StoreCreateForm.js +3 -1
  793. package/dist/features/stores/components/StoreDetailLayoutView.js +5 -2
  794. package/dist/features/stores/components/StoreDigitalCodesListing.js +7 -1
  795. package/dist/features/stores/components/StoreFilters.js +1 -1
  796. package/dist/features/stores/components/StoreFinanceGuideView.js +6 -1
  797. package/dist/features/stores/components/StoreGuideHubView.js +6 -1
  798. package/dist/features/stores/components/StoreHeader.js +6 -1
  799. package/dist/features/stores/components/StoreListingsGuideView.js +6 -1
  800. package/dist/features/stores/components/StoreLiveItemsListing.js +7 -1
  801. package/dist/features/stores/components/StoreNavTabs.js +3 -1
  802. package/dist/features/stores/components/StoreOrdersGuideView.js +7 -1
  803. package/dist/features/stores/components/StorePreOrdersListing.js +7 -1
  804. package/dist/features/stores/components/StoreProductsListing.js +8 -1
  805. package/dist/features/stores/components/StoreProductsView.js +5 -1
  806. package/dist/features/stores/components/StoreReviewsView.d.ts +1 -1
  807. package/dist/features/stores/components/StoreReviewsView.js +1 -1
  808. package/dist/features/stores/components/StoreSettingsGuideView.js +6 -1
  809. package/dist/features/stores/components/StoresIndexListing.js +9 -2
  810. package/dist/features/stores/components/StoresIndexPageView.js +4 -2
  811. package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +1 -1
  812. package/dist/features/stores/schemas/index.d.ts +28 -28
  813. package/dist/features/support/schemas/index.d.ts +14 -14
  814. package/dist/features/support/schemas/ticket-create-form.d.ts +4 -4
  815. package/dist/features/tax-codes/schemas/tax-code-form.d.ts +4 -4
  816. package/dist/features/tax-codes/schemas/tax-codes.validators.d.ts +10 -10
  817. package/dist/features/tester/actions/checklist-item-actions.d.ts +3 -3
  818. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +7 -1
  819. package/dist/features/tester/components/AdminTesterFeedbackListView.js +5 -1
  820. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +2 -1
  821. package/dist/features/tester/components/AdminTesterFeedbackView.js +5 -1
  822. package/dist/features/tester/components/TesterChecklistStepRow.js +8 -1
  823. package/dist/features/tester/components/TesterFeedbackChart.js +3 -1
  824. package/dist/features/tester/schemas/checklist-item-form.d.ts +2 -2
  825. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +8 -1
  826. package/dist/features/wishlist/components/WishlistCapWatcher.js +1 -1
  827. package/dist/features/wishlist/components/WishlistHeartButton.js +2 -1
  828. package/dist/features/wishlist/components/WishlistPage.js +5 -1
  829. package/dist/features/wishlist/components/WishlistView.js +3 -1
  830. package/dist/features/wishlist/hooks/useWishlistToggle.js +1 -1
  831. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  832. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  833. package/dist/index.d.ts +2496 -2453
  834. package/dist/index.js +1545 -1500
  835. package/dist/next/api/routeHandler.js +1 -1
  836. package/dist/react/hooks/use-action-dispatch.d.ts +1 -1
  837. package/dist/react/hooks/use-action-dispatch.js +1 -1
  838. package/dist/react/hooks/useListingSurfaceVisibility.d.ts +44 -0
  839. package/dist/react/hooks/useListingSurfaceVisibility.js +20 -0
  840. package/dist/schemas/registry.d.ts +488 -483
  841. package/dist/schemas/sieve.d.ts +5 -5
  842. package/dist/schemas/webhooks/google-oauth.d.ts +4 -4
  843. package/dist/server.d.ts +371 -362
  844. package/dist/server.js +367 -351
  845. package/dist/ui/components/HorizontalScroller.js +27 -2
  846. package/dist/ui/components/Repeater.js +4 -1
  847. package/dist/validation/schemas.d.ts +26 -26
  848. package/package.json +121 -1
@@ -7,7 +7,7 @@
7
7
  * request.
8
8
  */
9
9
  import { cache } from "react";
10
- import { itemRequestsRepository } from "../../../../repositories/index.js";
10
+ import { itemRequestsRepository } from "../../../../features/store-extensions/repository/store-extensions.repositories.js";
11
11
  /**
12
12
  * Fetch a single item-request by id. Returns null when the id is empty
13
13
  * or no matching document exists.
@@ -13,7 +13,7 @@ import { finalizeStagedMediaArray } from "../../../../features/media/finalize.js
13
13
  import { sendNotification } from "../../../../features/admin/actions/notification-actions.js";
14
14
  import { productRepository } from "../../../../features/products/repository/products.repository.js";
15
15
  import { normalizeListingType } from "../../../../features/products/utils/listing-type.js";
16
- import { siteSettingsRepository } from "../../../../repositories/index.js";
16
+ import { siteSettingsRepository } from "../../../../features/admin/repository/site-settings.repository.js";
17
17
  const MESSAGE_MAX_LENGTH = 2000;
18
18
  /**
19
19
  * Off by default — `undefined` reads as OFF, never a default-true `??`. A
@@ -60,7 +60,7 @@ import { wrapAction } from "../../../shared/types/action-result.js";
60
60
  * this change buys is that the loss is now VISIBLE — a durable row with the
61
61
  * store, the order and the amount — instead of silently absorbed.
62
62
  */
63
- import { payoutRepository } from "../../../../repositories/index.js";
63
+ import { payoutRepository } from "../../../../features/payments/repository/payout.repository.js";
64
64
  import { serverErrorsRepository } from "../../../../features/server-errors/repository/server-errors.repository.js";
65
65
  import { ValidationError } from "../../../../errors/index.js";
66
66
  import { roundRupees } from "../../../../utils/number.formatter.js";
@@ -11,7 +11,7 @@
11
11
  * .wasm files, naming none of the responsible files. Root Cause #18.
12
12
  */
13
13
  import { wrapAction } from "../../../shared/types/action-result.js";
14
- import { productRepository } from "../../../../repositories/index.js";
14
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
15
15
  import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
16
16
  import { reservePreOrderSchema } from "../../../shared/features/pre-orders/schema.js";
17
17
  import { assertPreOrderAvailable, computeDeposit } from "./service.js";
@@ -1,4 +1,4 @@
1
- import { productRepository } from "../../../../repositories/index.js";
1
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
2
2
  import { isPreOrderListing } from "../../../../features/products/utils/listing-type.js";
3
3
  import { roundRupees } from "../../../../utils/number.formatter.js";
4
4
  import { PreOrderNotFoundError, PreOrderSoldOutError, PreOrderNotOpenError, } from "../../../shared/features/pre-orders/errors.js";
@@ -11,7 +11,7 @@
11
11
  * .wasm files, naming none of the responsible files. Root Cause #18.
12
12
  */
13
13
  import { wrapAction } from "../../../shared/types/action-result.js";
14
- import { productRepository } from "../../../../repositories/index.js";
14
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
15
15
  import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
16
16
  import { assertPrizeDrawOpen } from "./service.js";
17
17
  export async function enterPrizeDrawAction(input) {
@@ -11,7 +11,7 @@
11
11
  * .wasm files, naming none of the responsible files. Root Cause #18.
12
12
  */
13
13
  import { wrapAction } from "../../../shared/types/action-result.js";
14
- import { productRepository } from "../../../../repositories/index.js";
14
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
15
15
  import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
16
16
  import { isAdminUser } from "../../../../features/auth/role-predicates.js";
17
17
  import { productInputSchema, productUpdateSchema, auctionInputSchema, preOrderInputSchema, setFeaturedSchema, setStatusSchema } from "../../../shared/features/products/schema.js";
@@ -4,7 +4,7 @@ import { cache } from "react";
4
4
  // without dragging this file's firebase-admin chain into the client bundle.
5
5
  import { toProductItem } from "../../../shared/features/products/to-product-item.js";
6
6
  export { toProductItem };
7
- import { productRepository } from "../../../../repositories/index.js";
7
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
8
8
  import { reviewRepository } from "../../../../repositories/index.js";
9
9
  import { getAdminDb } from "../../../../providers/db-firebase/index.js";
10
10
  import { normalizeError } from "../../../../errors/normalize.js";
@@ -33,7 +33,7 @@
33
33
  * @tag consumers:ProductsIndexPageView,ArtStickersListView,AuctionsListView,PreOrdersListView,api/products
34
34
  * @tag sideEffects:firestore-read
35
35
  */
36
- import { productRepository } from "../../../../repositories/index.js";
36
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
37
37
  import { filterTestDataForViewer } from "../tester/visibility.js";
38
38
  import { normalizeError } from "../../../../errors/normalize.js";
39
39
  import { serverLogger } from "../../../../monitoring/server-logger.js";
@@ -1,4 +1,4 @@
1
- import { productRepository } from "../../../../repositories/index.js";
1
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
2
2
  import { isAuctionListing, isPreOrderListing, } from "../../../../features/products/utils/listing-type.js";
3
3
  import { ProductNotFoundError, ProductOwnershipError, ProductStatusError, ProductStockError, } from "../../../shared/features/products/errors.js";
4
4
  import { ValidationError } from "../../../shared/errors/index.js";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Read `surfaceCounts/global` — one document, for the public settings payload
3
+ * and the server-side page guards.
4
+ *
5
+ * 🛑 FAILS OPEN, AND "OPEN" HERE MEANS `undefined`, NOT `{}`.
6
+ *
7
+ * Every failure path — missing document, unreadable document, malformed
8
+ * payload — returns `undefined`, which `isListingSurfaceVisible` reads as
9
+ * "unknown, show it". Returning an empty object instead would read as
10
+ * "measured, everything is empty" and would 404 every browse page on the site
11
+ * the first time Firestore hiccuped.
12
+ *
13
+ * This is the same failure posture as `guardBrowsePage`'s settings read ("a
14
+ * Firestore blip must not 404 the catalogue") and `getLiveCategoryCounts`
15
+ * ("a missing document is `undefined`, never 0").
16
+ *
17
+ * @tag domain:products
18
+ * @tag layer:server-feature
19
+ * @tag access:server-only
20
+ * @tag sideEffects:firestore-read
21
+ */
22
+ export interface PublicSurfaceCounts {
23
+ listingTypes?: Record<string, number>;
24
+ surfaces?: Record<string, number>;
25
+ }
26
+ export declare function getSurfaceCounts(): Promise<PublicSurfaceCounts | undefined>;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Read `surfaceCounts/global` — one document, for the public settings payload
3
+ * and the server-side page guards.
4
+ *
5
+ * 🛑 FAILS OPEN, AND "OPEN" HERE MEANS `undefined`, NOT `{}`.
6
+ *
7
+ * Every failure path — missing document, unreadable document, malformed
8
+ * payload — returns `undefined`, which `isListingSurfaceVisible` reads as
9
+ * "unknown, show it". Returning an empty object instead would read as
10
+ * "measured, everything is empty" and would 404 every browse page on the site
11
+ * the first time Firestore hiccuped.
12
+ *
13
+ * This is the same failure posture as `guardBrowsePage`'s settings read ("a
14
+ * Firestore blip must not 404 the catalogue") and `getLiveCategoryCounts`
15
+ * ("a missing document is `undefined`, never 0").
16
+ *
17
+ * @tag domain:products
18
+ * @tag layer:server-feature
19
+ * @tag access:server-only
20
+ * @tag sideEffects:firestore-read
21
+ */
22
+ import { normalizeError } from "../../../../errors/normalize.js";
23
+ import { serverLogger } from "../../../../monitoring/server-logger.js";
24
+ import { getAdminDb } from "../../../../providers/db-firebase/index.js";
25
+ import { SURFACE_COUNTS_COLLECTION, SURFACE_COUNTS_DOC_ID, } from "../../../../features/products/schemas/surface-counts.js";
26
+ /** Keep only numeric entries — a malformed value must not read as a zero. */
27
+ function sanitize(input) {
28
+ if (!input || typeof input !== "object")
29
+ return undefined;
30
+ const out = {};
31
+ for (const [k, v] of Object.entries(input)) {
32
+ if (typeof v === "number" && Number.isFinite(v) && v >= 0)
33
+ out[k] = v;
34
+ }
35
+ return Object.keys(out).length > 0 ? out : undefined;
36
+ }
37
+ export async function getSurfaceCounts() {
38
+ try {
39
+ const db = getAdminDb();
40
+ const snap = await db
41
+ .collection(SURFACE_COUNTS_COLLECTION)
42
+ .doc(SURFACE_COUNTS_DOC_ID)
43
+ .get();
44
+ if (!snap.exists)
45
+ return undefined;
46
+ const data = snap.data() ?? {};
47
+ const listingTypes = sanitize(data.listingTypes);
48
+ const surfaces = sanitize(data.surfaces);
49
+ // Both empty -> `undefined`, not `{}`. A document that exists but holds
50
+ // nothing usable is not a measurement.
51
+ if (!listingTypes && !surfaces)
52
+ return undefined;
53
+ return { listingTypes, surfaces };
54
+ }
55
+ catch (err) {
56
+ void normalizeError(err);
57
+ serverLogger.warn("surfaceCounts read failed — surfaces will all render visible");
58
+ return undefined;
59
+ }
60
+ }
@@ -11,7 +11,7 @@
11
11
  * .wasm files, naming none of the responsible files. Root Cause #18.
12
12
  */
13
13
  import { wrapAction } from "../../../shared/types/action-result.js";
14
- import { couponsRepository } from "../../../../repositories/index.js";
14
+ import { couponsRepository } from "../../../../features/promotions/repository/coupons.repository.js";
15
15
  import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
16
16
  import { applyCouponSchema, createCouponSchema, updateCouponSchema, } from "../../../shared/features/promotions/schema.js";
17
17
  import { validateCoupon, computeDiscount } from "./service.js";
@@ -39,5 +39,14 @@ export function toAttachedCoupon(doc) {
39
39
  * missing `endsAt` as expired hides every open-ended coupon.
40
40
  */
41
41
  endsAt: doc.validity.endDate ? new Date(doc.validity.endDate).toISOString() : undefined,
42
+ /*
43
+ * Emitted ONLY when it is in the future, so the renderer never has to
44
+ * re-ask the question. A start date in the past is the ordinary case and
45
+ * says nothing worth printing — carrying it anyway would invite a card to
46
+ * announce "Opens 6 Nov" for the rest of time.
47
+ */
48
+ startsAt: doc.validity.startDate && new Date(doc.validity.startDate) > new Date()
49
+ ? new Date(doc.validity.startDate).toISOString()
50
+ : undefined,
42
51
  };
43
52
  }
@@ -15,13 +15,34 @@ export declare const getCouponByCode: (code: string) => Promise<import("../../..
15
15
  * 🛑 EXPIRED AND INACTIVE COUPONS ARE DROPPED HERE, not in the renderer.
16
16
  * A blog post from March that still advertises a code which now errors at
17
17
  * checkout is worse than one that advertises nothing: the reader does the
18
- * work of copying it and is refused at the till. `isCouponValid` is the same
19
- * predicate checkout applies (active + inside its window + under its total
20
- * limit), so the page cannot promise what the till will decline.
18
+ * work of copying it and is refused at the till.
19
+ *
20
+ * 🛑 BUT A NOT-YET-OPEN CODE IS KEPT — `isCouponDisplayable`, not
21
+ * `isCouponValid`. This used to be the checkout predicate, which also requires
22
+ * `startDate <= now`, and that single clause is why the Diwali event rendered
23
+ * ONE coupon where it carries five: all four attached codes open on Dhanteras.
24
+ * Publishing a code ahead of time is deliberate ("save it ahead of time," says
25
+ * the event's own copy); hiding it breaks the page's own promise.
21
26
  *
22
27
  * It does NOT check `perUserLimit` — that is per-reader and unknowable on a
23
28
  * cached public page. A reader who has personally exhausted a still-valid
24
29
  * coupon is refused at checkout with a message that can explain why; that is
25
30
  * the correct place for it.
26
31
  */
32
+ /**
33
+ * Every live coupon, for the homepage `coupons` rail.
34
+ *
35
+ * 🛑 SAME DISPLAY PREDICATE AS `/promotions` AND THE EVENT PAGE, deliberately.
36
+ * These are the same claim made in three places; a code visible on one and
37
+ * absent from another reads as a broken link. One `isCouponDisplayable` call
38
+ * is what keeps them from drifting — this codebase has paid for hand-written
39
+ * copies of a money predicate before (Root Cause #75), and these three had in
40
+ * fact already drifted from `/api/coupons`, which never applied the
41
+ * start-date clause and so rendered codes the server surfaces swore did not
42
+ * exist.
43
+ *
44
+ * `limit` is applied LAST, after filtering, so an expired code can never
45
+ * occupy one of the rail's slots and silently push a live one off the end.
46
+ */
47
+ export declare const getHomepageCoupons: (limit: number) => Promise<AttachedCoupon[]>;
27
48
  export declare const getAttachedCoupons: (couponIds: readonly string[] | undefined) => Promise<AttachedCoupon[]>;
@@ -1,6 +1,6 @@
1
1
  import { cache } from "react";
2
- import { couponsRepository } from "../../../../repositories/index.js";
3
- import { isCouponValid } from "../../../../features/promotions/schemas/index.js";
2
+ import { couponsRepository } from "../../../../features/promotions/repository/coupons.repository.js";
3
+ import { isCouponDisplayable } from "../../../../features/promotions/schemas/index.js";
4
4
  import { toAttachedCoupon } from "./adapters.js";
5
5
  import { safeRead } from "../../../../errors/safe-read.js";
6
6
  export const getCouponByCode = cache(async (code) => {
@@ -21,15 +21,50 @@ export const getCouponByCode = cache(async (code) => {
21
21
  * 🛑 EXPIRED AND INACTIVE COUPONS ARE DROPPED HERE, not in the renderer.
22
22
  * A blog post from March that still advertises a code which now errors at
23
23
  * checkout is worse than one that advertises nothing: the reader does the
24
- * work of copying it and is refused at the till. `isCouponValid` is the same
25
- * predicate checkout applies (active + inside its window + under its total
26
- * limit), so the page cannot promise what the till will decline.
24
+ * work of copying it and is refused at the till.
25
+ *
26
+ * 🛑 BUT A NOT-YET-OPEN CODE IS KEPT — `isCouponDisplayable`, not
27
+ * `isCouponValid`. This used to be the checkout predicate, which also requires
28
+ * `startDate <= now`, and that single clause is why the Diwali event rendered
29
+ * ONE coupon where it carries five: all four attached codes open on Dhanteras.
30
+ * Publishing a code ahead of time is deliberate ("save it ahead of time," says
31
+ * the event's own copy); hiding it breaks the page's own promise.
27
32
  *
28
33
  * It does NOT check `perUserLimit` — that is per-reader and unknowable on a
29
34
  * cached public page. A reader who has personally exhausted a still-valid
30
35
  * coupon is refused at checkout with a message that can explain why; that is
31
36
  * the correct place for it.
32
37
  */
38
+ /**
39
+ * Every live coupon, for the homepage `coupons` rail.
40
+ *
41
+ * 🛑 SAME DISPLAY PREDICATE AS `/promotions` AND THE EVENT PAGE, deliberately.
42
+ * These are the same claim made in three places; a code visible on one and
43
+ * absent from another reads as a broken link. One `isCouponDisplayable` call
44
+ * is what keeps them from drifting — this codebase has paid for hand-written
45
+ * copies of a money predicate before (Root Cause #75), and these three had in
46
+ * fact already drifted from `/api/coupons`, which never applied the
47
+ * start-date clause and so rendered codes the server surfaces swore did not
48
+ * exist.
49
+ *
50
+ * `limit` is applied LAST, after filtering, so an expired code can never
51
+ * occupy one of the rail's slots and silently push a live one off the end.
52
+ */
53
+ export const getHomepageCoupons = cache(async (limit) => {
54
+ /*
55
+ * `safeRead`, for the reason given on `getAttachedCoupons` below: the
56
+ * homepage is prerendered and an unguarded throw during the prerender
57
+ * ATTEMPT is fatal to the production build. A failed read costs the page
58
+ * its coupon rail and records a DEGRADED_READ — it does not cost the
59
+ * homepage.
60
+ */
61
+ const docs = await safeRead(() => couponsRepository.getActiveCoupons(), {
62
+ route: "/",
63
+ key: "promotions.getActiveCoupons",
64
+ fallback: [],
65
+ });
66
+ return docs.filter(isCouponDisplayable).map(toAttachedCoupon).slice(0, limit);
67
+ });
33
68
  export const getAttachedCoupons = cache(async (couponIds) => {
34
69
  if (!couponIds || couponIds.length === 0)
35
70
  return [];
@@ -46,5 +81,5 @@ export const getAttachedCoupons = cache(async (couponIds) => {
46
81
  key: "promotions.findByIds",
47
82
  fallback: [],
48
83
  });
49
- return docs.filter(isCouponValid).map(toAttachedCoupon);
84
+ return docs.filter(isCouponDisplayable).map(toAttachedCoupon);
50
85
  });
@@ -1,4 +1,4 @@
1
- export { getCouponByCode, getAttachedCoupons } from "./data";
1
+ export { getCouponByCode, getAttachedCoupons, getHomepageCoupons } from "./data";
2
2
  export { toAttachedCoupon } from "./adapters";
3
3
  export { validateCoupon, computeDiscount } from "./service";
4
4
  export { applyCouponAction, createCouponAction, updateCouponAction, deactivateCouponAction } from "./actions";
@@ -1,4 +1,4 @@
1
- export { getCouponByCode, getAttachedCoupons } from "./data.js";
1
+ export { getCouponByCode, getAttachedCoupons, getHomepageCoupons } from "./data.js";
2
2
  export { toAttachedCoupon } from "./adapters.js";
3
3
  export { validateCoupon, computeDiscount } from "./service.js";
4
4
  export { applyCouponAction, createCouponAction, updateCouponAction, deactivateCouponAction } from "./actions.js";
@@ -1,4 +1,4 @@
1
- import { couponsRepository } from "../../../../repositories/index.js";
1
+ import { couponsRepository } from "../../../../features/promotions/repository/coupons.repository.js";
2
2
  import { roundRupees } from "../../../../utils/number.formatter.js";
3
3
  import { CouponNotFoundError, CouponExpiredError, CouponUsageLimitError, CouponPerUserLimitError, CouponMinPurchaseError, CouponScopeError, } from "../../../shared/features/promotions/errors.js";
4
4
  export async function validateCoupon(input, userId) {
@@ -2,7 +2,7 @@ import { normalizeError } from "../../../../errors/normalize.js";
2
2
  import { getAdminDb } from "../../../../providers/db-firebase/index.js";
3
3
  import { ROUTES } from "../../../../next/routing/route-map.js";
4
4
  import { PRODUCT_COLLECTION } from "../../../../features/products/schemas/firestore.js";
5
- import { EVENTS_COLLECTION, EVENT_FIELDS } from "../../../../features/events/index.js";
5
+ import { EVENTS_COLLECTION, EVENT_FIELDS } from "../../../../features/events/schemas/firestore.js";
6
6
  import { BLOG_POSTS_COLLECTION, BLOG_POST_FIELDS } from "../../../../features/blog/schemas/firestore.js";
7
7
  import { CATEGORIES_COLLECTION, CATEGORY_FIELDS } from "../../../../features/categories/schemas/firestore.js";
8
8
  // Imported from the DEFINING module, not the feature barrel (Root Cause #18).
@@ -15,8 +15,10 @@ import { serverLogger } from "../../../../monitoring/server-logger.js";
15
15
  import { PRODUCT_FIELDS } from "../../../../constants/field-names.js";
16
16
  import { PRODUCT_DETAIL_LISTING_TYPES } from "./product-detail-types.js";
17
17
  import { safeRead } from "../../../../errors/safe-read.js";
18
- import { siteSettingsRepository } from "../../../../repositories/index.js";
19
- import { ALL_BROWSE_PAGES, browsePageForPath, isBrowsePageEnabled, } from "../../../shared/listing-types/feature-flags.js";
18
+ import { siteSettingsRepository } from "../../../../features/admin/repository/site-settings.repository.js";
19
+ import { ALL_BROWSE_PAGES, ALL_LISTING_TYPES, browsePageForPath, isBrowsePageEnabled, isListingSurfaceVisible, } from "../../../shared/listing-types/feature-flags.js";
20
+ import { pluginFor } from "../../../shared/listing-types/_registry.js";
21
+ import { getSurfaceCounts } from "../products/surface-counts.js";
20
22
  // Product field strings — matches consumer field-names.ts
21
23
  const PRODUCT_STATUS = "status";
22
24
  const PRODUCT_STATUS_PUBLISHED = "published";
@@ -648,12 +650,44 @@ export async function buildSitemap({ baseUrl }) {
648
650
  fallback: null,
649
651
  });
650
652
  const closed = new Set(ALL_BROWSE_PAGES.filter((p) => !isBrowsePageEnabled(p, settings)));
653
+ /*
654
+ * The same treatment for a listing-type surface that is switched off or
655
+ * measured as holding nothing — `/auctions`, `/art`, `/spares`, …
656
+ *
657
+ * 🛑 BROWSE ROUTES ONLY, matched on the exact path. Detail URLs are NOT
658
+ * dropped here and that is deliberate: art, stickers, spares and standard
659
+ * all detail at `/products/{slug}`, so a path test cannot tell them apart,
660
+ * and a prefix rule would silently delist the entire standard catalogue the
661
+ * day `spares` emptied. An empty type contributes no detail URLs anyway —
662
+ * its fetcher returns none — so the exact-path rule loses nothing real.
663
+ *
664
+ * 🛑 Fails OPEN twice: `settings` is already `safeRead`-wrapped above, and
665
+ * `getSurfaceCounts` returns `undefined` on any failure, which
666
+ * `isListingSurfaceVisible` reads as visible. An unmeasured surface stays in
667
+ * the sitemap rather than being withdrawn by a job that has not run.
668
+ */
669
+ const counts = await getSurfaceCounts();
670
+ const hiddenSurfacePaths = new Set(ALL_LISTING_TYPES.filter((t) => !isListingSurfaceVisible(t, settings, counts))
671
+ .map((t) => String(pluginFor(t).browseRoute ?? ""))
672
+ .filter(Boolean));
673
+ /*
674
+ * A route shared by several types survives while ANY of them is visible —
675
+ * `/art` spans art and stickers. Without this, hiding stickers alone would
676
+ * delist a page art still fills.
677
+ */
678
+ for (const t of ALL_LISTING_TYPES) {
679
+ if (isListingSurfaceVisible(t, settings, counts)) {
680
+ hiddenSurfacePaths.delete(String(pluginFor(t).browseRoute ?? ""));
681
+ }
682
+ }
651
683
  const keep = (entry) => {
652
- if (closed.size === 0)
653
- return true;
654
684
  const path = entry.url.startsWith("http")
655
685
  ? new URL(entry.url).pathname
656
686
  : entry.url;
687
+ if (hiddenSurfacePaths.has(path.replace(/\/+$/, "") || "/"))
688
+ return false;
689
+ if (closed.size === 0)
690
+ return true;
657
691
  const page = browsePageForPath(path);
658
692
  return page === null || !closed.has(page);
659
693
  };
@@ -1,5 +1,5 @@
1
1
  import { cache } from "react";
2
- import { productRepository } from "../../../../repositories/index.js";
2
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
3
3
  import { safeRead } from "../../../../errors/safe-read.js";
4
4
  import { loadProductFeaturesForStore } from "../../../../features/products/repository/loadProductFeatures.js";
5
5
  import { isPubliclyVisible } from "../../../shared/listing-types/availability.js";
@@ -28,7 +28,7 @@ import { EmailContainer, EmailDoc, EmailRow, } from "../../../../features/email/
28
28
  import { paymentCasesRepository } from "../../../../features/payment-cases/repository/payment-cases.repository.js";
29
29
  // `adminNotificationsRepository` lives behind the repositories barrel — the
30
30
  // same import the two existing staff-signal call sites use.
31
- import { adminNotificationsRepository } from "../../../../repositories/index.js";
31
+ import { adminNotificationsRepository } from "../../../../features/store-extensions/repository/rbac.repositories.js";
32
32
  import { siteSettingsRepository } from "../../../../features/admin/repository/site-settings.repository.js";
33
33
  import { normalizeError } from "../../../../errors/normalize.js";
34
34
  import { serverLogger } from "../../../../monitoring/server-logger.js";
@@ -47,5 +47,21 @@ export interface ToPublicSiteSettingsOptions {
47
47
  * (`src/lib/watermark/resolve-effective-watermark.ts`), not in appkit.
48
48
  */
49
49
  effectiveWatermark?: MediaVideoWatermark;
50
+ /**
51
+ * The `surfaceCounts/global` document, when one exists.
52
+ *
53
+ * Injected rather than read here for the same reason as the watermark: this
54
+ * adapter is a pure projection over a document it is handed, and giving it
55
+ * a Firestore read of its own would make every caller pay for it.
56
+ *
57
+ * 🛑 Pass `undefined` when the document is missing OR the read failed. Those
58
+ * two must not be distinguished here and must never become `{}`: an absent
59
+ * key means "unknown, show it", and an empty object measured as all-zero
60
+ * would hide every browse surface on the site.
61
+ */
62
+ surfaceCounts?: {
63
+ listingTypes?: Record<string, number>;
64
+ surfaces?: Record<string, number>;
65
+ };
50
66
  }
51
67
  export declare function toPublicSiteSettings(doc: SiteSettingsDocument, opts?: ToPublicSiteSettingsOptions): PublicSiteSettings;
@@ -186,6 +186,17 @@ export function toPublicSiteSettings(doc, opts) {
186
186
  // and leave the next person wondering whether the projection ran at all.
187
187
  disabledRoutes: doc.disabledRoutes ?? [],
188
188
  effectiveWatermark: opts?.effectiveWatermark,
189
+ /*
190
+ * 🛑 Passed through as-is, INCLUDING `undefined` — the exact opposite of
191
+ * the `disabledRoutes` line three above, and the contrast is deliberate.
192
+ *
193
+ * There, defaulting to `[]` is right because the proxy fails open and an
194
+ * absent list and an empty list already mean the same thing. Here they
195
+ * mean OPPOSITE things: absent is "never measured, show everything",
196
+ * `{}` is "measured, and every surface is empty". Defaulting this one
197
+ * would take the entire catalogue off the navbar.
198
+ */
199
+ surfaceCounts: opts?.surfaceCounts,
189
200
  // D9 — undefined reads as OFF, never a default-true `??`.
190
201
  chat: { enabled: doc.chat?.enabled === true },
191
202
  /*
@@ -34,7 +34,7 @@
34
34
  import { ValidationError } from "../../../../errors/validation-error.js";
35
35
  import { serverLogger } from "../../../../monitoring/server-logger.js";
36
36
  import { normalizeError } from "../../../../errors/normalize.js";
37
- import { productRepository } from "../../../../repositories/index.js";
37
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
38
38
  import { mediaAssetsRepository } from "../../../../features/media/repository/media-assets.repository.js";
39
39
  import { stickerSheetsRepository } from "../../../../features/sticker-trace/repository/sticker-sheets.repository.js";
40
40
  /** A part that becomes its own listing: unique, and actually rendered. */
@@ -1,6 +1,6 @@
1
1
  "use server";
2
2
  import { cache } from "react";
3
- import { storeRepository } from "../../../../repositories/index.js";
3
+ import { storeRepository } from "../../../../features/stores/repository/store.repository.js";
4
4
  import { STORES_PRODUCTS_PAGE_SIZE, STORES_SITEMAP_LIMIT, } from "../../../shared/features/stores/config.js";
5
5
  import { makeGetStoreListingsInitial } from "../shared/listing-data-factory.js";
6
6
  import { safeRead } from "../../../../errors/safe-read.js";
@@ -1,5 +1,5 @@
1
1
  import { cache } from "react";
2
- import { categoriesRepository } from "../../../../repositories/index.js";
2
+ import { categoriesRepository } from "../../../../features/categories/repository/categories.repository.js";
3
3
  export const getSublistingCategoryForDetail = cache(async (slug) => {
4
4
  return categoriesRepository.findBySlugAndType(slug, "sublisting");
5
5
  });
@@ -1,5 +1,5 @@
1
1
  import { type ActionResult } from "../../../shared/types/action-result";
2
- import { type WishlistItem } from "../../../../repositories";
2
+ import type { UserWishlistItem as WishlistItem } from "../../../../features/wishlist/repository/user-wishlist.repository";
3
3
  export declare function addToWishlistAction(productId: string, extras?: {
4
4
  productType?: WishlistItem["productType"];
5
5
  priceAtAdd?: number;
@@ -13,7 +13,7 @@ import { normalizeError } from "../../../../errors/normalize.js";
13
13
  */
14
14
  import { wrapAction } from "../../../shared/types/action-result.js";
15
15
  import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
16
- import { wishlistRepository, WishlistFullError, } from "../../../../repositories/index.js";
16
+ import { wishlistRepository, WishlistFullError } from "../../../../features/wishlist/repository/user-wishlist.repository.js";
17
17
  import { WISHLIST_MAX } from "../../../shared/features/wishlist/config.js";
18
18
  import { WishlistCapError } from "../../../shared/features/wishlist/errors.js";
19
19
  export async function addToWishlistAction(productId, extras) {
@@ -1,4 +1,4 @@
1
- import { type WishlistItem } from "../../../../repositories";
1
+ import type { UserWishlistItem as WishlistItem } from "../../../../features/wishlist/repository/user-wishlist.repository";
2
2
  export declare const getWishlistForUser: (userId: string) => Promise<{
3
3
  items: WishlistItem[];
4
4
  meta: {
@@ -1,5 +1,5 @@
1
1
  import { cache } from "react";
2
- import { wishlistRepository } from "../../../../repositories/index.js";
2
+ import { wishlistRepository } from "../../../../features/wishlist/repository/user-wishlist.repository.js";
3
3
  export const getWishlistForUser = cache(async (userId) => {
4
4
  const items = await wishlistRepository.getWishlistItems(userId).catch(() => []);
5
5
  return { items, meta: { total: items.length } };
@@ -1,5 +1,5 @@
1
1
  import { orderRepository, payoutRepository, storeRepository, userRepository, siteSettingsRepository, } from "../../../../repositories/index.js";
2
- import { getDefaultCurrency } from "../../../../core/index.js";
2
+ import { getDefaultCurrency } from "../../../../core/baseline-resolver.js";
3
3
  import { computePayoutDeduction } from "../../../shared/fees/calculator.js";
4
4
  import { payoutCutoff } from "../../../shared/fees/payout-hold.js";
5
5
  import { PROTECTION_CLAIM_WINDOW_HOURS } from "../../../shared/features/shipping/protections.js";
@@ -1,4 +1,4 @@
1
- import { cartRepository } from "../../../../repositories/index.js";
1
+ import { cartRepository } from "../../../../features/cart/repository/cart.repository.js";
2
2
  import { CART_TTL_DAYS } from "../handlers/messages.js";
3
3
  import { batchDelete } from "../handlers/_helpers.js";
4
4
  export async function runCartPrune(ctx) {
@@ -1,6 +1,6 @@
1
1
  import { normalizeError } from "../../../../errors/normalize.js";
2
2
  import { sendNotification } from "../../../../features/admin/actions/notification-actions.js";
3
- import { catalogueRepository } from "../../../../repositories/index.js";
3
+ import { catalogueRepository } from "../../../../features/catalogue/repository/catalogue.repository.js";
4
4
  import { CATALOGUE_IMAGE_FRESHNESS_DAYS } from "../../../../features/catalogue/schemas/firestore.js";
5
5
  const REMINDER_LEAD_DAYS = 5;
6
6
  const DAY_MS = 86400000;
@@ -1,7 +1,7 @@
1
1
  import { normalizeError } from "../../../../errors/normalize.js";
2
2
  import { getAdminAuth, getAdminRealtimeDb } from "../../../../providers/db-firebase/index.js";
3
3
  import { RTDB_PATHS } from "../../../../providers/db-firebase/rtdb-paths.js";
4
- import { jobsRepository } from "../../../../repositories/index.js";
4
+ import { jobsRepository } from "../../../../features/jobs/repository/jobs.repository.js";
5
5
  import { batchDelete } from "../handlers/_helpers.js";
6
6
  const AUTH_STALE_MS = 3 * 60 * 1000;
7
7
  const PAYMENT_STALE_MS = 15 * 60 * 1000;
@@ -1,4 +1,4 @@
1
- import { couponsRepository } from "../../../../repositories/index.js";
1
+ import { couponsRepository } from "../../../../features/promotions/repository/coupons.repository.js";
2
2
  export async function runCouponExpiry(ctx) {
3
3
  ctx.logger.info("Starting coupon expiry sweep");
4
4
  const refs = await couponsRepository.getExpiredActiveRefs(ctx.now);
@@ -1,4 +1,5 @@
1
- import { sessionRepository, tokenRepository } from "../../../../repositories/index.js";
1
+ import { sessionRepository } from "../../../../features/auth/repository/session.repository.js";
2
+ import { tokenRepository } from "../../../../features/auth/repository/token.repository.js";
2
3
  import { gatewayEventsRepository } from "../../../../features/gateway-events/repository/gateway-events.repository.js";
3
4
  import { pointsRepository } from "../../../../features/points/repository/points.repository.js";
4
5
  import { paymentCasesRepository } from "../../../../features/payment-cases/repository/payment-cases.repository.js";
@@ -1,4 +1,4 @@
1
- import { productRepository } from "../../../../repositories/index.js";
1
+ import { productRepository } from "../../../../features/products/repository/products.repository.js";
2
2
  import { batchDelete } from "../handlers/_helpers.js";
3
3
  const DRAFT_TTL_DAYS = 30;
4
4
  export async function runDraftPrune(ctx) {
@@ -1,5 +1,5 @@
1
1
  import { normalizeError } from "../../../../errors/normalize.js";
2
- import { userRepository } from "../../../../repositories/index.js";
2
+ import { userRepository } from "../../../../features/auth/repository/user.repository.js";
3
3
  import { sendNotification } from "../../../../features/admin/actions/notification-actions.js";
4
4
  import { getAdminAuth } from "../../../../providers/db-firebase/index.js";
5
5
  /**