@mohasinac/appkit 4.30.18 → 4.31.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 (557) hide show
  1. package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +5 -2
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +3 -3
  3. package/dist/_internal/client/features/layout/useSidebarSearch.d.ts +21 -5
  4. package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
  5. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
  6. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -86
  7. package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
  8. package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
  9. package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +5 -2
  10. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +11 -3
  11. package/dist/_internal/client/hand-mode/HandModeProvider.js +2 -0
  12. package/dist/_internal/server/features/auctions/actions.js +14 -3
  13. package/dist/_internal/server/features/auctions/service.js +1 -1
  14. package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
  15. package/dist/_internal/server/features/auth/permissions.js +3 -2
  16. package/dist/_internal/server/features/blog/data.js +2 -2
  17. package/dist/_internal/server/features/blog/service.js +3 -3
  18. package/dist/_internal/server/features/brands/data.js +1 -1
  19. package/dist/_internal/server/features/brands/service.js +3 -3
  20. package/dist/_internal/server/features/bundles/actions.js +6 -1
  21. package/dist/_internal/server/features/bundles/data.js +21 -4
  22. package/dist/_internal/server/features/cart/data.js +3 -1
  23. package/dist/_internal/server/features/cart/service.js +13 -2
  24. package/dist/_internal/server/features/categories/data.js +26 -6
  25. package/dist/_internal/server/features/classified/index.d.ts +0 -1
  26. package/dist/_internal/server/features/classified/index.js +0 -1
  27. package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
  28. package/dist/_internal/server/features/digital-code/index.js +0 -1
  29. package/dist/_internal/server/features/events/actions.js +17 -4
  30. package/dist/_internal/server/features/events/data.js +1 -1
  31. package/dist/_internal/server/features/events/service.js +1 -1
  32. package/dist/_internal/server/features/grouped/data.js +7 -2
  33. package/dist/_internal/server/features/item-requests/data.js +1 -1
  34. package/dist/_internal/server/features/live/index.d.ts +0 -1
  35. package/dist/_internal/server/features/live/index.js +0 -1
  36. package/dist/_internal/server/features/lottery/actions.js +2 -2
  37. package/dist/_internal/server/features/lottery/data.js +1 -1
  38. package/dist/_internal/server/features/orders/actions.js +7 -7
  39. package/dist/_internal/server/features/orders/data.d.ts +1 -1
  40. package/dist/_internal/server/features/orders/data.js +14 -2
  41. package/dist/_internal/server/features/orders/service.js +1 -1
  42. package/dist/_internal/server/features/pre-orders/service.js +1 -1
  43. package/dist/_internal/server/features/prize-draws/actions.js +1 -1
  44. package/dist/_internal/server/features/products/data.js +21 -6
  45. package/dist/_internal/server/features/products/list-public.d.ts +9 -0
  46. package/dist/_internal/server/features/products/list-public.js +95 -7
  47. package/dist/_internal/server/features/products/service.js +1 -1
  48. package/dist/_internal/server/features/promotions/actions.js +1 -1
  49. package/dist/_internal/server/features/promotions/data.js +1 -1
  50. package/dist/_internal/server/features/promotions/service.js +1 -1
  51. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  52. package/dist/_internal/server/features/reviews/data.js +6 -1
  53. package/dist/_internal/server/features/reviews/og-data.js +1 -1
  54. package/dist/_internal/server/features/shared/listing-data-factory.js +7 -2
  55. package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
  56. package/dist/_internal/server/features/site-settings/adapters.js +8 -5
  57. package/dist/_internal/server/features/stores/data.js +1 -1
  58. package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
  59. package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
  60. package/dist/_internal/server/features/tester/visibility.js +2 -2
  61. package/dist/_internal/server/functions/scheduled.d.ts +3 -1
  62. package/dist/_internal/server/functions/scheduled.js +27 -1
  63. package/dist/_internal/server/jobs/core/auctionSettlement.js +6 -1
  64. package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
  65. package/dist/_internal/server/jobs/core/index.d.ts +2 -0
  66. package/dist/_internal/server/jobs/core/index.js +2 -0
  67. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +7 -15
  68. package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
  69. package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
  70. package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
  71. package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
  72. package/dist/_internal/server/jobs/core/revenueRollup.js +7 -1
  73. package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
  74. package/dist/_internal/server/jobs/handlers/index.js +2 -0
  75. package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
  76. package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
  77. package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
  78. package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
  79. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  80. package/dist/_internal/shared/actions/action-registry.js +69 -22
  81. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
  82. package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
  83. package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
  84. package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
  85. package/dist/_internal/shared/features/layout/types.d.ts +37 -1
  86. package/dist/_internal/shared/features/layout/types.js +19 -1
  87. package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
  88. package/dist/_internal/shared/features/notifications/action-url.js +47 -0
  89. package/dist/_internal/shared/features/offers/config.d.ts +65 -0
  90. package/dist/_internal/shared/features/offers/config.js +73 -2
  91. package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
  92. package/dist/_internal/shared/features/orders/schema.js +22 -2
  93. package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
  94. package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
  95. package/dist/_internal/shared/listing-types/capabilities.js +6 -1
  96. package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
  97. package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
  98. package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
  99. package/dist/client/api/useApiQuery.js +17 -6
  100. package/dist/client.d.ts +38 -20
  101. package/dist/client.js +39 -14
  102. package/dist/configs/next.js +10 -2
  103. package/dist/constants/api-endpoints.d.ts +18 -54
  104. package/dist/constants/api-endpoints.js +6 -26
  105. package/dist/constants/field-names.d.ts +6 -24
  106. package/dist/constants/field-names.js +10 -27
  107. package/dist/constants/geo/countries.d.ts +50 -0
  108. package/dist/constants/geo/countries.js +129 -0
  109. package/dist/constants/geo/subdivisions.d.ts +13 -0
  110. package/dist/constants/geo/subdivisions.js +104 -0
  111. package/dist/constants/index.d.ts +2 -2
  112. package/dist/constants/index.js +2 -2
  113. package/dist/constants/table-keys.d.ts +24 -0
  114. package/dist/constants/table-keys.js +28 -0
  115. package/dist/contracts/client-realtime.d.ts +6 -0
  116. package/dist/contracts/extend.d.ts +0 -9
  117. package/dist/contracts/index.d.ts +1 -1
  118. package/dist/contracts/realtime-session.d.ts +12 -12
  119. package/dist/contracts/realtime-session.js +79 -77
  120. package/dist/core/browser.d.ts +1 -1
  121. package/dist/core/browser.js +1 -1
  122. package/dist/core/index.d.ts +1 -1
  123. package/dist/core/index.js +1 -1
  124. package/dist/core/site-config.d.ts +0 -3
  125. package/dist/core/site-config.js +0 -3
  126. package/dist/errors/index.d.ts +1 -1
  127. package/dist/errors/index.js +1 -1
  128. package/dist/errors/messages.d.ts +0 -8
  129. package/dist/errors/messages.js +0 -9
  130. package/dist/features/about/components/DeveloperView.js +7 -2
  131. package/dist/features/about/components/PolicyPageView.js +9 -1
  132. package/dist/features/about/components/PublicProfileView.js +23 -5
  133. package/dist/features/about/schemas/index.d.ts +8 -8
  134. package/dist/features/account/components/AddressFilters.js +32 -11
  135. package/dist/features/account/components/AddressForm.d.ts +26 -25
  136. package/dist/features/account/components/AddressForm.js +81 -103
  137. package/dist/features/account/components/AddressesIndexListing.js +8 -4
  138. package/dist/features/account/components/NotificationBell.js +4 -3
  139. package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
  140. package/dist/features/account/components/UserOffersPanel.js +1 -1
  141. package/dist/features/account/components/UserSidebar.d.ts +3 -4
  142. package/dist/features/account/components/UserSupportView.js +89 -58
  143. package/dist/features/account/components/index.d.ts +1 -7
  144. package/dist/features/account/components/index.js +0 -3
  145. package/dist/features/account/hooks/useAddresses.d.ts +4 -3
  146. package/dist/features/account/hooks/useAddresses.js +4 -6
  147. package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
  148. package/dist/features/account/hooks/useCollapsedSections.js +211 -38
  149. package/dist/features/account/hooks/useProfile.d.ts +8 -0
  150. package/dist/features/account/index.d.ts +0 -3
  151. package/dist/features/account/index.js +0 -3
  152. package/dist/features/account/schemas/index.d.ts +0 -92
  153. package/dist/features/account/schemas/index.js +42 -20
  154. package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
  155. package/dist/features/addresses/components/AddressLocationFields.js +41 -0
  156. package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
  157. package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
  158. package/dist/features/addresses/schemas/address-form.d.ts +423 -0
  159. package/dist/features/addresses/schemas/address-form.js +212 -0
  160. package/dist/features/addresses/schemas/index.d.ts +1 -0
  161. package/dist/features/addresses/schemas/index.js +8 -0
  162. package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
  163. package/dist/features/admin/actions/index.d.ts +0 -1
  164. package/dist/features/admin/actions/index.js +0 -1
  165. package/dist/features/admin/actions/notification-actions.js +1 -41
  166. package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
  167. package/dist/features/admin/components/AdminActionIndexView.js +128 -0
  168. package/dist/features/admin/components/AdminAdEditorView.js +159 -163
  169. package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
  170. package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
  171. package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
  172. package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
  173. package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
  174. package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
  175. package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
  176. package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
  177. package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
  178. package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
  179. package/dist/features/admin/components/AdminFulfillmentView.js +5 -2
  180. package/dist/features/admin/components/AdminMediaView.js +3 -3
  181. package/dist/features/admin/components/AdminNavEditorView.js +69 -44
  182. package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
  183. package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
  184. package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
  185. package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
  186. package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
  187. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
  188. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
  189. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
  190. package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
  191. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
  192. package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
  193. package/dist/features/admin/components/index.d.ts +2 -2
  194. package/dist/features/admin/components/index.js +1 -1
  195. package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
  196. package/dist/features/admin/constants/site-settings-tabs.js +152 -0
  197. package/dist/features/admin/index.d.ts +0 -3
  198. package/dist/features/admin/index.js +0 -2
  199. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
  200. package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
  201. package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
  202. package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
  203. package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
  204. package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
  205. package/dist/features/admin/schemas/admin-user-form.js +7 -0
  206. package/dist/features/admin/schemas/firestore.d.ts +48 -95
  207. package/dist/features/admin/schemas/firestore.js +15 -151
  208. package/dist/features/admin/schemas/nav-item-form.js +9 -2
  209. package/dist/features/admin/server.d.ts +0 -4
  210. package/dist/features/admin/server.js +0 -2
  211. package/dist/features/admin/types/index.d.ts +0 -7
  212. package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
  213. package/dist/features/analytics/repository/page-views.repository.js +24 -0
  214. package/dist/features/analytics/types.d.ts +1 -1
  215. package/dist/features/analytics/types.js +13 -0
  216. package/dist/features/auctions/components/AuctionDetailPageView.js +6 -2
  217. package/dist/features/auctions/components/MarketplaceAuctionCard.js +3 -1
  218. package/dist/features/auth/actions/index.d.ts +0 -1
  219. package/dist/features/auth/actions/index.js +0 -1
  220. package/dist/features/auth/actions/profile-actions.js +4 -3
  221. package/dist/features/auth/actions/realtime-token-actions.js +1 -12
  222. package/dist/features/auth/auth-helpers.js +5 -7
  223. package/dist/features/auth/components/ForgotPasswordView.js +1 -1
  224. package/dist/features/auth/components/Guards.js +2 -1
  225. package/dist/features/auth/components/LoginForm.d.ts +0 -2
  226. package/dist/features/auth/components/LoginForm.js +2 -4
  227. package/dist/features/auth/components/RegisterForm.js +62 -19
  228. package/dist/features/auth/components/ResetPasswordView.js +1 -1
  229. package/dist/features/auth/hooks/useAuth.js +3 -0
  230. package/dist/features/auth/permissions/constants.d.ts +27 -1
  231. package/dist/features/auth/role-predicates.d.ts +75 -7
  232. package/dist/features/auth/role-predicates.js +28 -2
  233. package/dist/features/auth/schemas/firestore.d.ts +22 -0
  234. package/dist/features/auth/schemas/index.d.ts +1 -1
  235. package/dist/features/auth/schemas/index.js +44 -8
  236. package/dist/features/auth/types/index.d.ts +14 -1
  237. package/dist/features/blog/api/route.js +10 -2
  238. package/dist/features/blog/components/BlogIndexListing.js +1 -1
  239. package/dist/features/blog/hooks/useBlog.js +2 -2
  240. package/dist/features/blog/repository/blog.repository.js +3 -1
  241. package/dist/features/blog/schemas/index.d.ts +4 -0
  242. package/dist/features/blog/schemas/index.js +2 -0
  243. package/dist/features/blog/types/index.d.ts +1 -1
  244. package/dist/features/cart/actions/cart-actions.js +13 -4
  245. package/dist/features/cart/utils/pending-ops.js +1 -1
  246. package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
  247. package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
  248. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  249. package/dist/features/catalogue/schemas/validation.js +47 -10
  250. package/dist/features/categories/components/BrandDetailPageView.js +28 -12
  251. package/dist/features/categories/components/CategoryDetailPageView.js +37 -20
  252. package/dist/features/categories/repository/categories.repository.js +3 -1
  253. package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
  254. package/dist/features/categories/schemas/bundle-form.js +149 -0
  255. package/dist/features/checkout/actions/checkout-value-otp-actions.js +10 -1
  256. package/dist/features/classified/components/ClassifiedContactSellerPanel.js +1 -1
  257. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
  258. package/dist/features/classified/components/ClassifiedDetailPageView.js +47 -18
  259. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  260. package/dist/features/consultation/schemas/index.js +34 -10
  261. package/dist/features/corporate/schemas/index.js +36 -15
  262. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -1
  263. package/dist/features/events/components/EventBanner.js +5 -2
  264. package/dist/features/events/components/EventOfferCard.js +3 -1
  265. package/dist/features/events/components/EventPollWidget.js +1 -1
  266. package/dist/features/events/components/SpinWheelView.js +3 -2
  267. package/dist/features/filters/FilterPanel.js +3 -3
  268. package/dist/features/filters/RangeFilter.d.ts +10 -0
  269. package/dist/features/filters/RangeFilter.js +41 -4
  270. package/dist/features/grouped/components/GroupedListingEditorView.js +2 -1
  271. package/dist/features/history/hooks/useHistory.js +29 -27
  272. package/dist/features/homepage/components/AdSlot.js +3 -1
  273. package/dist/features/homepage/components/GoogleReviewsSection.js +8 -2
  274. package/dist/features/homepage/components/MarketplaceHomepageView.js +58 -15
  275. package/dist/features/homepage/components/SocialFeedSection.js +4 -1
  276. package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
  277. package/dist/features/homepage/lib/live-stats.js +8 -1
  278. package/dist/features/homepage/repository/carousel.repository.js +2 -1
  279. package/dist/features/layout/BottomActions.js +84 -11
  280. package/dist/features/layout/BottomActionsContext.d.ts +1 -6
  281. package/dist/features/layout/BottomActionsContext.js +1 -1
  282. package/dist/features/layout/hooks/useBottomActions.js +2 -2
  283. package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
  284. package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
  285. package/dist/features/live/components/LiveItemDetailPageView.js +4 -1
  286. package/dist/features/lottery/schemas/config-write.d.ts +9 -5
  287. package/dist/features/lottery/schemas/config-write.js +69 -9
  288. package/dist/features/media/finalize.js +3 -1
  289. package/dist/features/media/modals/ImageEditor.js +1 -1
  290. package/dist/features/media/modals/VideoThumbnailSelector.js +5 -2
  291. package/dist/features/media/modals/VideoTrimModal.js +5 -2
  292. package/dist/features/media/upload/MediaUploadField.js +2 -2
  293. package/dist/features/messages/hooks/useConversation.js +18 -4
  294. package/dist/features/messages/hooks/useConversations.js +25 -8
  295. package/dist/features/orders/components/RefundRequestView.js +5 -2
  296. package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
  297. package/dist/features/orders/schemas/buyer-forms.js +31 -3
  298. package/dist/features/orders/schemas/index.d.ts +2 -2
  299. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -1
  300. package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
  301. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -1
  302. package/dist/features/products/components/GroupSettingsPanel.js +3 -1
  303. package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
  304. package/dist/features/products/components/MakeOfferButton.js +33 -11
  305. package/dist/features/products/components/PrizeDrawDetailPageView.js +4 -1
  306. package/dist/features/products/components/ProductDetailActions.js +0 -1
  307. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
  308. package/dist/features/products/components/ProductDetailPageView.js +16 -7
  309. package/dist/features/products/components/ShareButton.js +3 -1
  310. package/dist/features/products/constants/action-defs.d.ts +1 -2
  311. package/dist/features/products/constants/action-defs.js +40 -43
  312. package/dist/features/products/repository/loadProductFeatures.js +10 -2
  313. package/dist/features/products/repository/products.repository.d.ts +5 -1
  314. package/dist/features/products/repository/products.repository.js +25 -2
  315. package/dist/features/products/schemas/firestore.d.ts +7 -3
  316. package/dist/features/products/schemas/product-features.validators.js +3 -0
  317. package/dist/features/promotions/components/CouponCard.js +11 -8
  318. package/dist/features/reviews/actions/review-actions.js +8 -1
  319. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -3
  320. package/dist/features/reviews/components/ReviewDetailShell.js +3 -1
  321. package/dist/features/scams/actions/scam-actions.d.ts +9 -1
  322. package/dist/features/scams/actions/scam-actions.js +52 -12
  323. package/dist/features/scams/components/SellerTrustBadge.d.ts +1 -1
  324. package/dist/features/scams/components/SellerTrustBadge.js +13 -0
  325. package/dist/features/scams/repository/scammer.repository.js +2 -1
  326. package/dist/features/scams/schemas/firestore.d.ts +15 -1
  327. package/dist/features/scams/schemas/report-form.d.ts +5 -5
  328. package/dist/features/scams/schemas/report-form.js +18 -3
  329. package/dist/features/search/action-index/derive.d.ts +49 -0
  330. package/dist/features/search/action-index/derive.js +121 -0
  331. package/dist/features/search/action-index/repository.d.ts +42 -0
  332. package/dist/features/search/action-index/repository.js +100 -0
  333. package/dist/features/search/action-index/settings-entries.d.ts +41 -0
  334. package/dist/features/search/action-index/settings-entries.js +268 -0
  335. package/dist/features/search/action-index/types.d.ts +81 -0
  336. package/dist/features/search/action-index/types.js +102 -0
  337. package/dist/features/search/action-index/validate-entry.d.ts +34 -0
  338. package/dist/features/search/action-index/validate-entry.js +114 -0
  339. package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
  340. package/dist/features/search/hooks/useNavSuggestions.js +23 -3
  341. package/dist/features/search/repository/search.repository.js +3 -1
  342. package/dist/features/seller/actions/offer-actions.js +43 -19
  343. package/dist/features/seller/actions/seller-actions.js +29 -5
  344. package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
  345. package/dist/features/seller/components/CategoryChipPicker.js +12 -0
  346. package/dist/features/seller/components/FulfillmentView.js +5 -2
  347. package/dist/features/seller/components/PhysicalLocationModal.js +1 -1
  348. package/dist/features/seller/components/PrintCenterView.js +3 -1
  349. package/dist/features/seller/components/SellerAddressesView.js +5 -1
  350. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
  351. package/dist/features/seller/components/SellerArtView.d.ts +14 -7
  352. package/dist/features/seller/components/SellerArtView.js +4 -119
  353. package/dist/features/seller/components/SellerBidsView.js +1 -1
  354. package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
  355. package/dist/features/seller/components/SellerClassifiedView.js +4 -124
  356. package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
  357. package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
  358. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  359. package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
  360. package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
  361. package/dist/features/seller/components/SellerGoogleReviewsView.js +2 -2
  362. package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
  363. package/dist/features/seller/components/SellerListingTypeView.js +277 -0
  364. package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
  365. package/dist/features/seller/components/SellerLiveView.js +4 -126
  366. package/dist/features/seller/components/SellerOrdersView.js +3 -3
  367. package/dist/features/seller/components/SellerPayoutMethodsView.js +2 -2
  368. package/dist/features/seller/components/SellerProductShell.d.ts +5 -0
  369. package/dist/features/seller/components/SellerProductShell.js +15 -5
  370. package/dist/features/seller/components/SellerProductsView.js +24 -10
  371. package/dist/features/seller/components/SellerReviewsView.js +47 -16
  372. package/dist/features/seller/components/SellerShippingConfigsView.js +5 -4
  373. package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
  374. package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
  375. package/dist/features/seller/components/SellerStickersView.js +4 -119
  376. package/dist/features/seller/components/SellerStoreCategoriesView.js +3 -2
  377. package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
  378. package/dist/features/seller/components/SellerSupportView.js +100 -0
  379. package/dist/features/seller/components/index.d.ts +4 -8
  380. package/dist/features/seller/components/index.js +2 -4
  381. package/dist/features/seller/index.d.ts +0 -1
  382. package/dist/features/seller/index.js +0 -1
  383. package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
  384. package/dist/features/seller/schemas/coupon-form.js +155 -23
  385. package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
  386. package/dist/features/seller/schemas/offer-forms.js +28 -12
  387. package/dist/features/shell/FormShell.js +2 -2
  388. package/dist/features/shell/QuickFormDrawer.js +2 -2
  389. package/dist/features/shell/SectionForm.d.ts +19 -1
  390. package/dist/features/shell/SectionForm.js +104 -17
  391. package/dist/features/shell/build-sections.d.ts +23 -0
  392. package/dist/features/shell/build-sections.js +106 -8
  393. package/dist/features/shell/field-ui-meta.d.ts +44 -0
  394. package/dist/features/shell/field-ui-meta.js +14 -7
  395. package/dist/features/shell/form-sections.d.ts +46 -0
  396. package/dist/features/shell/form-sections.js +114 -0
  397. package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
  398. package/dist/features/shipments/schemas/validation.d.ts +2 -2
  399. package/dist/features/shipments/schemas/validation.js +44 -13
  400. package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
  401. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
  402. package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
  403. package/dist/features/stores/actions/store-query-actions.js +3 -2
  404. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
  405. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
  406. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
  407. package/dist/features/stores/components/StoreDetailLayoutView.js +12 -3
  408. package/dist/features/support/repository/support.repository.d.ts +21 -0
  409. package/dist/features/support/repository/support.repository.js +63 -0
  410. package/dist/features/support/schemas/firestore.d.ts +27 -2
  411. package/dist/features/support/schemas/firestore.js +2 -0
  412. package/dist/features/support/schemas/ticket-create-form.js +7 -0
  413. package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
  414. package/dist/features/tester/schemas/checklist-item-form.js +109 -0
  415. package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
  416. package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
  417. package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
  418. package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
  419. package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
  420. package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
  421. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +291 -30
  422. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +51 -14
  423. package/dist/features/wishlist/hooks/useWishlistToggle.js +8 -1
  424. package/dist/http/api-handler.js +2 -1
  425. package/dist/index.d.ts +25 -104
  426. package/dist/index.js +38 -143
  427. package/dist/jobs.d.ts +1 -1
  428. package/dist/jobs.js +1 -1
  429. package/dist/monitoring/browser.d.ts +0 -2
  430. package/dist/monitoring/browser.js +12 -1
  431. package/dist/monitoring/index.d.ts +0 -2
  432. package/dist/monitoring/index.js +0 -1
  433. package/dist/next/api/routeHandler.js +9 -4
  434. package/dist/next/index.d.ts +1 -2
  435. package/dist/next/index.js +0 -1
  436. package/dist/next/middleware/index.d.ts +0 -2
  437. package/dist/next/middleware/index.js +0 -1
  438. package/dist/next/routing/route-map.d.ts +8 -7
  439. package/dist/next/routing/route-map.js +10 -3
  440. package/dist/providers/auth-firebase/session.js +3 -1
  441. package/dist/providers/db-firebase/admin-app-lite.js +8 -8
  442. package/dist/providers/db-firebase/admin.js +27 -13
  443. package/dist/providers/db-firebase/browser-stub.d.ts +1 -11
  444. package/dist/providers/db-firebase/browser-stub.js +6 -11
  445. package/dist/providers/db-firebase/index.d.ts +0 -1
  446. package/dist/providers/db-firebase/index.js +0 -1
  447. package/dist/providers/db-firebase/rtdb-paths.d.ts +15 -6
  448. package/dist/providers/db-firebase/rtdb-paths.js +15 -6
  449. package/dist/providers/db-firebase/rtdb-url.d.ts +27 -0
  450. package/dist/providers/db-firebase/rtdb-url.js +50 -0
  451. package/dist/providers/db-firebase/sieve.d.ts +22 -0
  452. package/dist/providers/firebase-client/realtime.d.ts +20 -0
  453. package/dist/providers/firebase-client/realtime.js +34 -1
  454. package/dist/providers.d.ts +1 -1
  455. package/dist/providers.js +1 -1
  456. package/dist/react/hooks/use-action-dispatch.js +8 -2
  457. package/dist/react/hooks/useFormStatePreservation.js +3 -1
  458. package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
  459. package/dist/react/hooks/useListingTypeFlags.js +1 -1
  460. package/dist/react/hooks/usePendingFilters.js +5 -3
  461. package/dist/react/hooks/usePendingTable.js +15 -3
  462. package/dist/react/hooks/useRealtimeEvent.js +20 -9
  463. package/dist/repositories/index.d.ts +0 -1
  464. package/dist/repositories/index.js +0 -1
  465. package/dist/schemas/registry.d.ts +197 -232
  466. package/dist/schemas/registry.js +5 -6
  467. package/dist/schemas/webhooks/razorpay.d.ts +50 -50
  468. package/dist/security/authorization.d.ts +9 -0
  469. package/dist/security/authorization.js +16 -2
  470. package/dist/security/browser.d.ts +1 -3
  471. package/dist/security/browser.js +5 -2
  472. package/dist/security/index.d.ts +1 -3
  473. package/dist/security/index.js +19 -2
  474. package/dist/security/pii-encrypt.js +16 -0
  475. package/dist/security/pii-schemas.d.ts +0 -14
  476. package/dist/security/pii-schemas.js +7 -15
  477. package/dist/seed/_helpers/category-forest.js +2 -2
  478. package/dist/seed/_helpers/media.d.ts +19 -0
  479. package/dist/seed/_helpers/media.js +75 -0
  480. package/dist/seed/blog-posts-seed-data.js +17 -17
  481. package/dist/seed/carousel-slides-seed-data.js +7 -7
  482. package/dist/seed/cart-seed-data.js +13 -13
  483. package/dist/seed/categories-seed-data.js +10 -10
  484. package/dist/seed/events-seed-data.js +24 -24
  485. package/dist/seed/factories/product.factory.js +4 -4
  486. package/dist/seed/factories/store.factory.js +3 -3
  487. package/dist/seed/factories/user.factory.js +2 -2
  488. package/dist/seed/grouped-listings-seed-data.js +11 -11
  489. package/dist/seed/homepage-sections-seed-data.js +2 -2
  490. package/dist/seed/index.d.ts +0 -1
  491. package/dist/seed/index.js +0 -1
  492. package/dist/seed/manifest.d.ts +1 -1
  493. package/dist/seed/manifest.js +0 -5
  494. package/dist/seed/notifications-seed-data.js +20 -1
  495. package/dist/seed/orders-seed-data.js +2 -2
  496. package/dist/seed/products-art-seed-data.js +16 -16
  497. package/dist/seed/products-auctions-seed-data.js +34 -34
  498. package/dist/seed/products-classifieds-seed-data.js +35 -37
  499. package/dist/seed/products-digital-codes-seed-data.js +20 -20
  500. package/dist/seed/products-live-items-seed-data.js +11 -11
  501. package/dist/seed/products-preorders-seed-data.js +13 -13
  502. package/dist/seed/products-prize-draws-seed-data.js +43 -43
  503. package/dist/seed/products-standard-seed-data.js +54 -54
  504. package/dist/seed/products-stickers-seed-data.js +15 -15
  505. package/dist/seed/reviews-seed-data.js +4 -4
  506. package/dist/seed/scammers-seed-data.js +3 -3
  507. package/dist/seed/site-settings-seed-data.js +11 -24
  508. package/dist/seed/store-extensions-seed-data.js +10 -10
  509. package/dist/seed/stores-seed-data.js +11 -11
  510. package/dist/seed/support-tickets-seed-data.d.ts +14 -0
  511. package/dist/seed/support-tickets-seed-data.js +20 -1
  512. package/dist/seed/users-seed-data.js +20 -20
  513. package/dist/server-entry.d.ts +0 -1
  514. package/dist/server-entry.js +0 -1
  515. package/dist/server.d.ts +9 -6
  516. package/dist/server.js +7 -13
  517. package/dist/styles.css +248 -68
  518. package/dist/tailwind-utilities.css +1 -1
  519. package/dist/tokens/themes/default-dark.js +2 -2
  520. package/dist/tokens/themes/default-light.js +2 -2
  521. package/dist/tokens/tokens.css +24 -4
  522. package/dist/ui/components/ActionRow.d.ts +50 -0
  523. package/dist/ui/components/ActionRow.js +53 -0
  524. package/dist/ui/components/ActionRow.style.css +145 -0
  525. package/dist/ui/components/Drawer.d.ts +10 -0
  526. package/dist/ui/components/Drawer.js +2 -1
  527. package/dist/ui/components/FilterDrawer.js +4 -1
  528. package/dist/ui/components/FilterDrawer.style.css +6 -12
  529. package/dist/ui/components/FormActionBar.js +14 -1
  530. package/dist/ui/components/FormActionBar.style.css +12 -11
  531. package/dist/ui/components/ListingLayout.js +8 -1
  532. package/dist/ui/components/ListingLayout.style.css +6 -13
  533. package/dist/ui/components/Modal.d.ts +15 -1
  534. package/dist/ui/components/Modal.js +17 -3
  535. package/dist/ui/components/QuickCreateModal.js +2 -2
  536. package/dist/ui/components/QuickCreateModal.style.css +78 -84
  537. package/dist/ui/components/RecordDetailModal.js +2 -2
  538. package/dist/ui/components/SideDrawer.d.ts +8 -0
  539. package/dist/ui/components/SideDrawer.js +2 -1
  540. package/dist/ui/components/SideDrawer.style.css +6 -3
  541. package/dist/ui/components/SideModal.d.ts +11 -1
  542. package/dist/ui/components/SideModal.js +3 -2
  543. package/dist/ui/components/SideModal.style.css +14 -0
  544. package/dist/ui/components/Typography.style.css +33 -24
  545. package/dist/ui/components/index.style.css +1 -0
  546. package/dist/ui/components/toolbar-collapse.js +1 -2
  547. package/dist/ui/forms/FormShell.style.css +260 -311
  548. package/dist/ui/index.d.ts +2 -0
  549. package/dist/ui/index.js +1 -0
  550. package/dist/utils/index.d.ts +0 -1
  551. package/dist/utils/index.js +0 -1
  552. package/dist/validation/index.d.ts +1 -1
  553. package/dist/validation/index.js +1 -1
  554. package/dist/validation/schemas.d.ts +0 -19
  555. package/dist/validation/schemas.js +8 -19
  556. package/package.json +1 -1
  557. package/scripts/seed-cli.mjs +3 -6
package/dist/index.js CHANGED
@@ -385,8 +385,6 @@ export { ZodSetup } from "./validation/index";
385
385
  // addPhoneSchema - Helper for add phone schema.
386
386
  export { addPhoneSchema } from "./validation/index";
387
387
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
388
- // addressSchema - Model for address schema.
389
- export { addressSchema } from "./validation/index";
390
388
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
391
389
  // calculatePasswordStrength - Helper for calculate password strength.
392
390
  export { calculatePasswordStrength } from "./validation/index";
@@ -568,6 +566,11 @@ export { mapToHttpError, HTTP_ERROR_CODES } from "./errors/index";
568
566
  // [UTIL]-Pure utility — client-safe lookup of inline-field + i18n key per error code.
569
567
  // ERROR_DISPLAY_MAP - CLAUDE.md Rule #9 source-of-truth for client error rendering.
570
568
  export { ERROR_DISPLAY_MAP, getErrorDisplay } from "./errors/index";
569
+ // [UTIL]-Pure utility — the ONLY sanctioned way to turn a failure into user copy.
570
+ // toUserMessage - resolves a stable error code through errors.codes.*; terminates
571
+ // in a constant, so a thrown value's own .message can never reach a user
572
+ // (audit-raw-error-text).
573
+ export { toUserMessage, GENERIC_USER_MESSAGE } from "./errors/index";
571
574
  // [SERVER-ONLY] parseJsonBody — strict JSON request-body parser for API routes.
572
575
  // Replaces the silent `request.json().catch(() => ({}))` anti-pattern. Throws
573
576
  // ValidationError on malformed JSON → routeHandler wrapper maps to 400.
@@ -654,8 +657,6 @@ export { CopilotLogRepository } from "./core/index";
654
657
  // EventBus - Shared export for event bus.
655
658
  export { EventBus } from "./core/index";
656
659
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
657
- // FEATURE_FLAGS - Constant used across modules.
658
- export { FEATURE_FLAGS } from "./core/index";
659
660
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
660
661
  // Logger - Shared export for logger.
661
662
  export { Logger } from "./core/index";
@@ -776,14 +777,9 @@ export { ADDRESS_PII_FIELDS } from "./security/index";
776
777
  // BID_PII_FIELDS - Constant used across modules.
777
778
  export { BID_PII_FIELDS } from "./security/index";
778
779
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
779
- // CHAT_PII_FIELDS - Constant used across modules.
780
- export { CHAT_PII_FIELDS } from "./security/index";
781
780
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
782
781
  // Can - Shared export for can.
783
- export { Can } from "./security/index";
784
782
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
785
- // DEFAULT_ROLES - Constant used across modules.
786
- export { DEFAULT_ROLES } from "./security/index";
787
783
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
788
784
  // EVENT_ENTRY_PII_FIELDS - Constant used across modules.
789
785
  export { EVENT_ENTRY_PII_FIELDS } from "./security/index";
@@ -835,17 +831,9 @@ export { canChangeRole } from "./security/index";
835
831
  // clearRateLimitStore - Shared export for clear rate limit store.
836
832
  export { clearRateLimitStore } from "./security/index";
837
833
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
838
- // createRbacHook - Helper for create rbac hook.
839
- export { createRbacHook } from "./security/index";
840
834
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
841
- // createRbacMiddleware - Helper for create rbac middleware.
842
- export { createRbacMiddleware } from "./security/index";
843
835
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
844
- // createRequirePermission - Helper for create require permission.
845
- export { createRequirePermission } from "./security/index";
846
836
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
847
- // createRequirePermissionSync - Helper for create require permission sync.
848
- export { createRequirePermissionSync } from "./security/index";
849
837
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
850
838
  // decryptSecret - Helper for decrypt secret.
851
839
  export { decryptSecret } from "./security/index";
@@ -860,13 +848,13 @@ export { generateNonce } from "./security/index";
860
848
  export { getRoleLevel } from "./security/index";
861
849
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
862
850
  // hasAllPermissions - Shared export for has all permissions.
863
- export { hasAllPermissions } from "./security/index";
851
+ export { hasAllPermissions } from "./features/auth/permissions/constants";
864
852
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
865
853
  // hasAnyPermission - Model for has any permission.
866
- export { hasAnyPermission } from "./security/index";
854
+ export { hasAnyPermission } from "./features/auth/permissions/constants";
867
855
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
868
856
  // hasPermission - Model for has permission.
869
- export { hasPermission } from "./security/index";
857
+ export { hasPermission } from "./features/auth/permissions/constants";
870
858
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
871
859
  // isSecretEncrypted - Shared export for is secret encrypted.
872
860
  export { isSecretEncrypted } from "./security/index";
@@ -899,9 +887,6 @@ export { requireOwnership } from "./security/index";
899
887
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
900
888
  // requireRole - Model for require role.
901
889
  export { requireRole } from "./security/index";
902
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
903
- // resolvePermissions - Helper for resolve permissions.
904
- export { resolvePermissions } from "./security/index";
905
890
  // ./repositories/index
906
891
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
907
892
  // AddressesRepository - unified top-level addresses collection (SB-UNI-A 2026-05-13).
@@ -1001,8 +986,6 @@ export { cartRepository } from "./repositories/index";
1001
986
  // categoriesRepository - Shared export for categories repository.
1002
987
  export { categoriesRepository } from "./repositories/index";
1003
988
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1004
- // chatRepository - Shared export for chat repository.
1005
- export { chatRepository } from "./repositories/index";
1006
989
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1007
990
  // couponsRepository - Shared export for coupons repository.
1008
991
  export { couponsRepository } from "./repositories/index";
@@ -1387,16 +1370,10 @@ export { usersSeedData } from "./seed/index";
1387
1370
  export { wishlistsSeedData } from "./seed/index";
1388
1371
  // historySeedData - Model for history (recently-viewed) seed data.
1389
1372
  export { historySeedData } from "./seed/index";
1390
- // conversationsSeedData - Model for conversations seed data.
1391
- export { conversationsSeedData } from "./seed/index";
1392
1373
  // SB-UNI-B â€" sublistingCategoriesSeedData merged into categoriesSeedData with categoryType:"sublisting".
1393
1374
  // groupedListingsSeedData - Model for grouped listings seed data.
1394
1375
  export { groupedListingsSeedData } from "./seed/index";
1395
1376
  export { NOTIFICATION_TYPE_VALUES } from "./features/admin/schemas/firestore";
1396
- // ./monitoring/index
1397
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1398
- // ANALYTICS_EVENTS - Constant used across modules.
1399
- export { ANALYTICS_EVENTS } from "./monitoring/index";
1400
1377
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1401
1378
  // ErrorCategory - Shared export for error category.
1402
1379
  export { ErrorCategory } from "./monitoring/index";
@@ -1422,9 +1399,6 @@ export { getCacheMetrics } from "./monitoring/index";
1422
1399
  // getCacheStatistics - Helper for get cache statistics.
1423
1400
  export { getCacheStatistics } from "./monitoring/index";
1424
1401
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1425
- // initializeAnalytics - Shared export for initialize analytics.
1426
- export { initializeAnalytics } from "./monitoring/index";
1427
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1428
1402
  // initializeClientLogger - Shared export for initialize client logger.
1429
1403
  export { initializeClientLogger } from "./monitoring/index";
1430
1404
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
@@ -1515,12 +1489,6 @@ export { resetCacheMetrics } from "./monitoring/index";
1515
1489
  // serverLogger - Shared export for server logger.
1516
1490
  export { serverLogger } from "./monitoring/index";
1517
1491
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1518
- // setAnalyticsUserId - Helper for set analytics user id.
1519
- export { setAnalyticsUserId } from "./monitoring/index";
1520
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1521
- // setAnalyticsUserProperties - Helper for set analytics user properties.
1522
- export { setAnalyticsUserProperties } from "./monitoring/index";
1523
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1524
1492
  // setErrorTracker - Helper for set error tracker.
1525
1493
  export { setErrorTracker } from "./monitoring/index";
1526
1494
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
@@ -1539,39 +1507,18 @@ export { startTrace } from "./monitoring/index";
1539
1507
  // stopTrace - Helper for stop trace.
1540
1508
  export { stopTrace } from "./monitoring/index";
1541
1509
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1542
- // trackAdmin - Helper for track admin.
1543
- export { trackAdmin } from "./monitoring/index";
1544
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1545
1510
  // trackApiError - Helper for track api error.
1546
1511
  export { trackApiError } from "./monitoring/index";
1547
1512
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1548
- // trackAuth - Helper for track auth.
1549
- export { trackAuth } from "./monitoring/index";
1550
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1551
1513
  // trackAuthError - Helper for track auth error.
1552
1514
  export { trackAuthError } from "./monitoring/index";
1553
1515
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1554
- // trackContent - Helper for track content.
1555
- export { trackContent } from "./monitoring/index";
1556
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1557
1516
  // trackDatabaseError - Helper for track database error.
1558
1517
  export { trackDatabaseError } from "./monitoring/index";
1559
1518
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1560
- // trackEcommerce - Helper for track ecommerce.
1561
- export { trackEcommerce } from "./monitoring/index";
1562
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1563
1519
  // trackError - Helper for track error.
1564
1520
  export { trackError } from "./monitoring/index";
1565
1521
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1566
- // trackEvent - Helper for track event.
1567
- export { trackEvent } from "./monitoring/index";
1568
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1569
- // trackForm - Helper for track form.
1570
- export { trackForm } from "./monitoring/index";
1571
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1572
- // trackPageView - Helper for track page view.
1573
- export { trackPageView } from "./monitoring/index";
1574
- // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
1575
1522
  // trackPermissionError - Helper for track permission error.
1576
1523
  export { trackPermissionError } from "./monitoring/index";
1577
1524
  // [UTIL]-Pure utility â€" no framework or runtime dependency; safe to import from any environment.
@@ -1626,8 +1573,6 @@ export { createApiHandlerFactory } from "./next/index";
1626
1573
  // createApiMiddleware - Helper for create api middleware.
1627
1574
  export { createApiMiddleware } from "./next/index";
1628
1575
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1629
- // createPiiRedactorMiddleware - Helper for create pii redactor middleware.
1630
- export { createPiiRedactorMiddleware } from "./next/index";
1631
1576
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1632
1577
  // createRouteHandler - Helper for create route handler.
1633
1578
  export { createRouteHandler } from "./next/index";
@@ -1726,8 +1671,6 @@ export { verifyIdToken } from "./providers/auth-firebase/index";
1726
1671
  export { verifySessionCookie } from "./providers/auth-firebase/index";
1727
1672
  // ./providers/db-firebase/index
1728
1673
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1729
- // FirebaseRealtimeRepository - Shared export for firebase realtime repository.
1730
- export { FirebaseRealtimeRepository } from "./providers/db-firebase/index";
1731
1674
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1732
1675
  // FirebaseRepository - Shared export for firebase repository.
1733
1676
  export { FirebaseRepository } from "./providers/db-firebase/index";
@@ -1911,8 +1854,6 @@ export { ADDRESS_PUBLIC_FIELDS } from "./features/account/index";
1911
1854
  // ADDRESS_SUBCOLLECTION - Constant used across modules.
1912
1855
  export { ADDRESS_SUBCOLLECTION } from "./features/account/index";
1913
1856
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1914
- // ADDRESS_TYPES - Constant used across modules.
1915
- export { ADDRESS_TYPES } from "./features/account/index";
1916
1857
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
1917
1858
  // ADDRESS_UPDATABLE_FIELDS - Constant used across modules.
1918
1859
  export { ADDRESS_UPDATABLE_FIELDS } from "./features/account/index";
@@ -1931,22 +1872,10 @@ export { AddressSelectorCreate } from "./features/account/index";
1931
1872
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1932
1873
  // BecomeSellerView - Component for become seller view.
1933
1874
  export { BecomeSellerView } from "./features/account/index";
1934
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1935
- // ChatList - Shared export for chat list.
1936
- export { ChatList } from "./features/account/index";
1937
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1938
- // ChatWindow - Shared export for chat window.
1939
- export { ChatWindow } from "./features/account/index";
1940
1875
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
1941
1876
  // DEFAULT_ADDRESS_DATA - Constant used across modules.
1942
1877
  export { DEFAULT_ADDRESS_DATA } from "./features/account/index";
1943
1878
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1944
- // INDIAN_STATES - Constant used across modules.
1945
- export { INDIAN_STATES } from "./features/account/index";
1946
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1947
- // MessagesView - Component for messages view.
1948
- export { MessagesView } from "./features/account/index";
1949
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1950
1879
  // NotificationBell - Shared export for notification bell.
1951
1880
  export { NotificationBell } from "./features/account/index";
1952
1881
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -1999,8 +1928,6 @@ export { updateProfileSchema } from "./features/account/index";
1999
1928
  // useAddress - React hook for use address.
2000
1929
  export { useAddress } from "./features/account/index";
2001
1930
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2002
- // useAddressForm - React hook for use address form.
2003
- export { useAddressForm } from "./features/account/index";
2004
1931
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2005
1932
  // useAddressSelector - React hook for use address selector.
2006
1933
  export { useAddressSelector } from "./features/account/index";
@@ -2035,14 +1962,9 @@ export { useUpdateAddress } from "./features/account/index";
2035
1962
  // useUpdateProfile - React hook for use update profile.
2036
1963
  export { useUpdateProfile } from "./features/account/index";
2037
1964
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2038
- // userAddressSchema - Model for user address schema.
2039
- export { userAddressSchema } from "./features/account/index";
2040
1965
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2041
1966
  // userProfileSchema - Model for user profile schema.
2042
1967
  export { userProfileSchema } from "./features/account/index";
2043
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2044
- // validateAddressForm - Helper for validate address form.
2045
- export { validateAddressForm } from "./features/account/index";
2046
1968
  // ./features/account/server
2047
1969
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
2048
1970
  // AccountRepository - Shared export for account repository.
@@ -2067,8 +1989,6 @@ export { setDefaultAddressForUser } from "./features/account/server";
2067
1989
  export { updateAddressForUser } from "./features/account/server";
2068
1990
  // ./features/admin/index
2069
1991
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2070
- // ADMIN_PAGE_PERMISSIONS - Constant used across modules.
2071
- export { ADMIN_PAGE_PERMISSIONS } from "./features/admin/index";
2072
1992
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2073
1993
  // ADMIN_PRODUCT_STATUS_OPTIONS - Constant used across modules.
2074
1994
  export { ADMIN_PRODUCT_STATUS_OPTIONS } from "./features/admin/index";
@@ -2138,8 +2058,6 @@ export { BugHunterLeaderboardView } from "./features/tester/index";
2138
2058
  // AdminNavEditorView - SideDrawer form for nav item create/edit.
2139
2059
  export { AdminNavEditorView } from "./features/admin/index";
2140
2060
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2141
- // AdminFeatureFlagsView - Component for admin feature flags view.
2142
- export { AdminFeatureFlagsView } from "./features/admin/index";
2143
2061
  // AdminNewsletterView - Admin view for newsletter subscribers.
2144
2062
  export { AdminNewsletterView } from "./features/admin/index";
2145
2063
  // AdminContactView - Admin view for contact form submissions.
@@ -2274,17 +2192,9 @@ export { AdminTopProductsTable } from "./features/admin/index";
2274
2192
  // AdminUsersView - Component for admin users view.
2275
2193
  export { AdminUsersView } from "./features/admin/index";
2276
2194
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2277
- // CHAT_ROOM_COLLECTION - Constant used across modules.
2278
- export { CHAT_ROOM_COLLECTION } from "./features/admin/index";
2279
2195
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2280
- // CHAT_ROOM_FIELDS - Constant used across modules.
2281
- export { CHAT_ROOM_FIELDS } from "./features/admin/index";
2282
2196
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2283
- // CHAT_ROOM_INDEXED_FIELDS - Constant used across modules.
2284
- export { CHAT_ROOM_INDEXED_FIELDS } from "./features/admin/index";
2285
2197
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2286
- // DEFAULT_CHAT_ROOM_DATA - Constant used across modules.
2287
- export { DEFAULT_CHAT_ROOM_DATA } from "./features/admin/index";
2288
2198
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2289
2199
  // DEFAULT_NOTIFICATION_CHANNELS - Default channel config (inApp always on, others off).
2290
2200
  export { DEFAULT_NOTIFICATION_CHANNELS } from "./features/admin/index";
@@ -2324,8 +2234,6 @@ export { AdminSupportTicketDetailView } from "./features/admin/index";
2324
2234
  // DrawerFormFooter - Shared export for drawer form footer.
2325
2235
  export { DrawerFormFooter } from "./features/admin/index";
2326
2236
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2327
- // FEATURE_FLAG_META - Constant used across modules.
2328
- export { FEATURE_FLAG_META } from "./features/admin/index";
2329
2237
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
2330
2238
  // NOTIFICATIONS_COLLECTION - Constant used across modules.
2331
2239
  export { NOTIFICATIONS_COLLECTION } from "./features/admin/index";
@@ -2348,26 +2256,16 @@ export { SITE_SETTINGS_INDEXED_FIELDS } from "./features/admin/index";
2348
2256
  // SITE_SETTINGS_PUBLIC_FIELDS - Constant used across modules.
2349
2257
  export { SITE_SETTINGS_PUBLIC_FIELDS } from "./features/admin/index";
2350
2258
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2351
- // chatRoomQueryHelpers - Shared export for chat room query helpers.
2352
- export { chatRoomQueryHelpers } from "./features/admin/index";
2353
2259
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2354
2260
  // notificationQueryHelpers - Shared export for notification query helpers.
2355
2261
  export { notificationQueryHelpers } from "./features/admin/index";
2356
2262
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2357
- // useChat - React hook for use chat.
2358
- export { useChat } from "./features/admin/index";
2359
2263
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2360
- // useChatRooms - React hook for use chat rooms.
2361
- export { useChatRooms } from "./features/admin/index";
2362
2264
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2363
- // useCreateChatRoom - React hook for use create chat room.
2364
- export { useCreateChatRoom } from "./features/admin/index";
2365
2265
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2366
2266
  // useDashboardStats - React hook for use dashboard stats.
2367
2267
  export { useDashboardStats } from "./features/admin/index";
2368
2268
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2369
- // useDeleteChatRoom - React hook for use delete chat room.
2370
- export { useDeleteChatRoom } from "./features/admin/index";
2371
2269
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2372
2270
  // useAdminListingData - React hook for admin listing data fetching.
2373
2271
  export { useAdminListingData } from "./features/admin/index";
@@ -2384,6 +2282,7 @@ export { toRelativeDate } from "./features/admin/index";
2384
2282
  export { AdminScammersView } from "./features/admin/index";
2385
2283
  // AdminScammerEditorView - Scammer profile review/status SideDrawer.
2386
2284
  export { AdminScammerEditorView } from "./features/admin/index";
2285
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
2387
2286
  // ./features/admin/server
2388
2287
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2389
2288
  // adminBidsGET - Shared export for admin bids get.
@@ -2431,11 +2330,7 @@ export { adminUpdateStoreStatus } from "./features/admin/server";
2431
2330
  // adminUpdateUser - Shared export for admin update user.
2432
2331
  export { adminUpdateUser } from "./features/admin/server";
2433
2332
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2434
- // createOrGetChatRoom - Helper for create or get chat room.
2435
- export { createOrGetChatRoom } from "./features/admin/server";
2436
2333
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2437
- // deleteChatRoom - Helper for delete chat room.
2438
- export { deleteChatRoom } from "./features/admin/server";
2439
2334
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2440
2335
  // deleteNotification - Helper for delete notification.
2441
2336
  export { deleteNotification } from "./features/admin/server";
@@ -2446,8 +2341,6 @@ export { getAdminAnalytics } from "./features/admin/server";
2446
2341
  // getAdminDashboardStats - Helper for get admin dashboard stats.
2447
2342
  export { getAdminDashboardStats } from "./features/admin/server";
2448
2343
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2449
- // getChatRooms - Helper for get chat rooms.
2450
- export { getChatRooms } from "./features/admin/server";
2451
2344
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2452
2345
  // getSiteSettings - Helper for get site settings.
2453
2346
  export { getSiteSettings } from "./features/admin/server";
@@ -2500,11 +2393,12 @@ export { revokeSession } from "./features/admin/server";
2500
2393
  // revokeUserSessions - Shared export for revoke user sessions.
2501
2394
  export { revokeUserSessions } from "./features/admin/server";
2502
2395
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2503
- // sendChatMessage - Shared export for send chat message.
2504
- export { sendChatMessage } from "./features/admin/server";
2505
2396
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2506
2397
  // updateSiteSettings - Helper for update site settings.
2507
2398
  export { updateSiteSettings } from "./features/admin/server";
2399
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
2400
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
2401
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
2508
2402
  // ./features/auctions/index
2509
2403
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2510
2404
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
@@ -2639,9 +2533,6 @@ export { getUserProfile } from "./features/auth/server";
2639
2533
  // getUserSessions - Helper for get user sessions.
2640
2534
  export { getUserSessions } from "./features/auth/server";
2641
2535
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2642
- // issueRealtimeToken - Shared export for issue realtime token.
2643
- export { issueRealtimeToken } from "./features/auth/server";
2644
- // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
2645
2536
  // markPasswordResetTokenAsUsed - Shared export for mark password reset token as used.
2646
2537
  export { markPasswordResetTokenAsUsed } from "./features/auth/server";
2647
2538
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -4493,7 +4384,7 @@ export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote } from ".
4493
4384
  // definition of "safe to send to a browser" for fee data. See fees.ts header.
4494
4385
  export { toBuyerFacingFees, toBuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees";
4495
4386
  // User-role predicates â€" SB-UNI-E 2026-05-13.
4496
- export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, } from "./features/auth/role-predicates";
4387
+ export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, isTesterUser, canTestAdminSurfaces, isStrictSellerUser, isAccountDisabled, } from "./features/auth/role-predicates";
4497
4388
  // [SERVER-ONLY]-Safe in browser but intended for server routes.
4498
4389
  // sanitizeProductForPublic - Strip sellerId/sellerName/sellerEmail/ownerId before returning a product in a public response.
4499
4390
  export { sanitizeProductForPublic, sanitizeProductsForPublic } from "./features/products/index";
@@ -4884,8 +4775,6 @@ export { OFFER_INDEXED_FIELDS } from "./features/seller/index";
4884
4775
  // OfferStatusValues - Model for offer status values.
4885
4776
  export { OfferStatusValues } from "./features/seller/index";
4886
4777
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4887
- // SELLER_PAGE_PERMISSIONS - Constant used across modules.
4888
- export { SELLER_PAGE_PERMISSIONS } from "./features/seller/index";
4889
4778
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4890
4779
  // SellerAddressesView - Component for seller addresses view.
4891
4780
  export { SellerAddressesView } from "./features/seller/index";
@@ -4899,9 +4788,6 @@ export { SellerAnalyticsStats } from "./features/seller/index";
4899
4788
  // SellerAnalyticsView - Component for seller analytics view.
4900
4789
  export { SellerAnalyticsView } from "./features/seller/index";
4901
4790
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4902
- // SellerAuctionsView - Component for seller auctions view.
4903
- export { SellerAuctionsView } from "./features/seller/index";
4904
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4905
4791
  // SellerCouponsView - Component for seller coupons view.
4906
4792
  export { SellerCouponsView } from "./features/seller/index";
4907
4793
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -4952,12 +4838,6 @@ export { SellerPayoutStats } from "./features/seller/index";
4952
4838
  // SellerPayoutsView - Component for seller payouts view.
4953
4839
  export { SellerPayoutsView } from "./features/seller/index";
4954
4840
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4955
- // SellerPreOrdersView - Component for seller pre-orders listing view (SB4-E).
4956
- export { SellerPreOrdersView } from "./features/seller/index";
4957
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4958
- // SellerPrizeDrawsView - Component for seller prize draws listing view (SB4-E).
4959
- export { SellerPrizeDrawsView } from "./features/seller/index";
4960
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4961
4841
  // SellerProductsView - Component for seller products view.
4962
4842
  export { SellerProductsView } from "./features/seller/index";
4963
4843
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -5480,6 +5360,7 @@ export { CAROUSELS_COLLECTION, MAX_SLIDES_PER_CAROUSEL } from "./features/homepa
5480
5360
  export { Button } from "./ui/index";
5481
5361
  export { Heading, Spinner, IconButton, Progress, IndeterminateProgress, Pagination, PageLoader } from "./ui/index";
5482
5362
  export { ModalFooter, UnsavedChangesModal, ResponsiveView, Textarea, Checkbox } from "./ui/index";
5363
+ export { ActionRow } from "./ui/index";
5483
5364
  export { ToastProvider, StarRating, StepperNav, ViewToggle, PriceDisplay, SummaryCard } from "./ui/index";
5484
5365
  export { CountdownDisplay, ItemRow, HorizontalScroller } from "./ui/index";
5485
5366
  export { CardBody, MenuTrigger, MenuContent, MenuSeparator, RoleBadge, SkipToMain } from "./ui/index";
@@ -5494,7 +5375,7 @@ export { Ol } from "./ui/index";
5494
5375
  export { LoginRequiredModal } from "./ui/components/LoginRequiredModal";
5495
5376
  export { isAuthError } from "./utils/auth-error";
5496
5377
  // -- Missing constants ----------------------------------------------------------
5497
- export { API_ENDPOINTS, API_ROUTES, LOGS_ENDPOINTS, AUTH_ENDPOINTS, ACCOUNT_ENDPOINTS, NOTIFICATIONS_ENDPOINTS, ADMIN_ENDPOINTS, CHAT_ENDPOINTS, AUCTION_ENDPOINTS, BID_ENDPOINTS, CART_ENDPOINTS, CATEGORY_ENDPOINTS, CHECKOUT_ENDPOINTS, PAYMENT_ENDPOINTS, COPILOT_ENDPOINTS, CORPORATE_ENDPOINTS, EVENT_ENDPOINTS, FAQ_ENDPOINTS, HOMEPAGE_ENDPOINTS, LOYALTY_ENDPOINTS, ANALYTICS_ENDPOINTS, MEDIA_ENDPOINTS, ORDER_ENDPOINTS, PREORDER_ENDPOINTS, PRODUCT_ENDPOINTS, REVIEW_ENDPOINTS, SEARCH_ENDPOINTS, SELLER_ENDPOINTS, BLOG_ENDPOINTS, WISHLIST_ENDPOINTS, COLLECTION_CACHE_PATHS, resolveEndpoint, resolveEndpointFn, ROUTES, PUBLIC_ROUTES, PROTECTED_ROUTES, AUTH_ROUTES, WISHLIST_MAX, HISTORY_MAX, CART_MAX_ITEMS, WISHLIST_DOC_ID, HISTORY_DOC_ID, WISHLIST_COLLECTION, HISTORY_COLLECTION, } from "./constants/index";
5378
+ export { API_ENDPOINTS, API_ROUTES, LOGS_ENDPOINTS, AUTH_ENDPOINTS, ACCOUNT_ENDPOINTS, NOTIFICATIONS_ENDPOINTS, ADMIN_ENDPOINTS, AUCTION_ENDPOINTS, BID_ENDPOINTS, CART_ENDPOINTS, CATEGORY_ENDPOINTS, CHECKOUT_ENDPOINTS, PAYMENT_ENDPOINTS, COPILOT_ENDPOINTS, CORPORATE_ENDPOINTS, EVENT_ENDPOINTS, FAQ_ENDPOINTS, HOMEPAGE_ENDPOINTS, LOYALTY_ENDPOINTS, ANALYTICS_ENDPOINTS, MEDIA_ENDPOINTS, ORDER_ENDPOINTS, PREORDER_ENDPOINTS, PRODUCT_ENDPOINTS, REVIEW_ENDPOINTS, SEARCH_ENDPOINTS, SELLER_ENDPOINTS, BLOG_ENDPOINTS, WISHLIST_ENDPOINTS, COLLECTION_CACHE_PATHS, resolveEndpoint, resolveEndpointFn, ROUTES, PUBLIC_ROUTES, PROTECTED_ROUTES, AUTH_ROUTES, WISHLIST_MAX, HISTORY_MAX, CART_MAX_ITEMS, WISHLIST_DOC_ID, HISTORY_DOC_ID, WISHLIST_COLLECTION, HISTORY_COLLECTION, } from "./constants/index";
5498
5379
  // Wishlist server errors (server-only via tree-shake â€" class only, no firebase-admin at module scope)
5499
5380
  export { WishlistFullError } from "./features/wishlist/server";
5500
5381
  // History â€" client hook + guest util are safe in main barrel; repository is server-only
@@ -5538,12 +5419,10 @@ export { deriveContextTypeFromFilename } from "./utils/id-generators";
5538
5419
  export { resolveMediaUrl, resolveVideoUrl, FIREBASE_STORAGE_HOST, GCS_HOST, isStoredMediaRef, MEDIA_PROXY_PREFIX, MEDIA_URL_MAX_LENGTH, MEDIA_URL_MESSAGE, APPROVED_MEDIA_DOMAINS, } from "./utils/media-url";
5539
5420
  export { generateFAQId } from "./utils/id-generators";
5540
5421
  export { generateCroppedImageFilename } from "./utils/id-generators";
5541
- // Messages / Conversations feature schemas
5542
- export { CONVERSATIONS_COLLECTION } from "./features/messages/schemas/firestore";
5543
- // Messages server-side (D5 + VC7) â€" repository + actions
5544
- export { conversationsRepository, ConversationsRepository, ConversationFullError, listConversationsForBuyer, listConversationsForStore, getConversation, sendMessage, markConversationRead, MESSAGE_MAX_LENGTH, pingConversationRtdb, } from "./features/messages/server";
5545
- // Messages realtime channel â€" shared between client + server (D5 + VC7)
5546
- export { conversationPingPath, userConversationsPingPath, buildConversationPingPaths, } from "./features/messages/realtime";
5422
+ // D5 + VC7 buyer↔seller conversations were deleted 2026-08-31 (W11/D16). The
5423
+ // feature had two pages, five API routes and a repository, and one live CTA
5424
+ // anywhere in the product — the classified PDP's "Contact Seller" — which now
5425
+ // opens the offer form instead. See `offerIsOnlyPurchasePath`.
5547
5426
  // SB-UNI-B â€" SublistingCategoryDocument deleted; sublistings are CategoryDocument with categoryType:"sublisting".
5548
5427
  // Product features feature schemas (FI1)
5549
5428
  export { PRODUCT_FEATURES_COLLECTION, PRODUCT_FEATURE_PREFIX, MAX_STORE_CUSTOM_FEATURES, MAX_FEATURES_PER_PRODUCT, PRODUCT_FEATURE_SIEVE_FIELDS, isFeatureIconPath, } from "./features/products/schemas/product-features";
@@ -5646,7 +5525,7 @@ export { MEGABYTE, MAX_IMAGE_BYTES, MAX_PDF_BYTES, MAX_VIDEO_BYTES, MAX_LABEL, M
5646
5525
  // NOTE: STORE_FIELDS, CATEGORY_FIELDS, EVENT_FIELDS, EVENT_ENTRY_FIELDS, PAYOUT_FIELDS,
5647
5526
  // COUPON_FIELDS, CART_FIELDS, USER_FIELDS, ADDRESS_FIELDS, NOTIFICATION_FIELDS,
5648
5527
  // SESSION_FIELDS, SCAMMER_FIELDS are already exported from feature barrels above.
5649
- export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, AD_TRACKED_FIELDS, BLOG_FIELDS, BRAND_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, COUPON_USAGE_FIELDS, CONVERSATION_FIELDS, CAROUSEL_FIELDS, FAQ_FIELDS, HOMEPAGE_SECTION_FIELDS, SITE_SETTINGS_FIELDS, COMMON_FIELDS, OAUTH_STATE_VALUES, SCHEMA_DEFAULTS, } from "./constants/field-names";
5528
+ export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, AD_TRACKED_FIELDS, BLOG_FIELDS, BRAND_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, COUPON_USAGE_FIELDS, CAROUSEL_FIELDS, FAQ_FIELDS, HOMEPAGE_SECTION_FIELDS, SITE_SETTINGS_FIELDS, COMMON_FIELDS, OAUTH_STATE_VALUES, SCHEMA_DEFAULTS, } from "./constants/field-names";
5650
5529
  // ── Sort helpers ──────────────────────────────────────────────────────────────
5651
5530
  export { SORT_DIR, sortBy } from "./constants/sort";
5652
5531
  // ── URL table keys + view mode ────────────────────────────────────────────────
@@ -5664,7 +5543,6 @@ export { NavPermissionsManager } from "./features/site-settings/components/NavPe
5664
5543
  export { ThemeManagerView } from "./features/site-settings/components/ThemeManagerView";
5665
5544
  // ── Classified listing feature ─────────────────────────────────────────────────
5666
5545
  export { getClassifiedForDetail } from "./_internal/server/features/classified/data";
5667
- export { startClassifiedConversationAction } from "./_internal/server/features/classified/actions";
5668
5546
  // ── Digital-code listing feature ──────────────────────────────────────────────
5669
5547
  export { getDigitalCodeForDetail } from "./_internal/server/features/digital-code/data";
5670
5548
  export { PRODUCT_CODES_SUBCOLLECTION } from "./features/products/schemas/firestore";
@@ -5708,7 +5586,7 @@ export { raffleEntrySchema } from "./features/contact/schemas/inquiry-forms";
5708
5586
  export { orderCancelSchema, paymentProofSchema, } from "./features/orders/schemas/buyer-forms";
5709
5587
  export { scamReportFormSchema } from "./features/scams/schemas/report-form";
5710
5588
  export { sublistingCategoryFormSchema } from "./features/store-extensions/schemas/sublisting-category-form";
5711
- export { adminAddressFormSchema, adminStoreUpdateSchema, announcementBarSchema, } from "./features/admin/schemas/admin-editor-forms";
5589
+ export { adminStoreUpdateSchema, announcementBarSchema, } from "./features/admin/schemas/admin-editor-forms";
5712
5590
  export { adminOrderUpdateSchema, employeeInviteSchema, hardBanReasonSchema, featureFlagsUpdateSchema, adminAdFormSchema, } from "./features/admin/schemas/admin-ops-forms";
5713
5591
  export { changeEmailSchema } from "./features/account/schemas/index";
5714
5592
  export { adminUserUpdateSchema, whatsappSettingsSchema, lotteryPullSchema, } from "./features/admin/schemas/admin-user-form";
@@ -5732,3 +5610,20 @@ export { wishlistAddSchema } from "./schemas/api-routes";
5732
5610
  * is usually a missing funnel, not a reason to export more of it.
5733
5611
  */
5734
5612
  export { withHistory, buildHistoryEntry, appendHistoryEntry, diffTrackedFields, STATUS_HISTORY_MAX, } from "./_internal/shared/history/index";
5613
+ /*
5614
+ * Nav item ids are DERIVED from the href (W6). Exported from the MAIN entry as
5615
+ * well as `/client` because `store/layout.tsx` is a Server Component: a
5616
+ * binding taken from the `"use client"` entry is a client-reference proxy
5617
+ * there, and CALLING one throws as an opaque React #441 (Root Cause #76).
5618
+ */
5619
+ export { navItemId } from "./_internal/shared/features/layout/types";
5620
+ /*
5621
+ * The action index (W7). Its base is DERIVED from the nav groups, so an entry
5622
+ * cannot exist without its nav item and cannot go stale when one is renamed.
5623
+ */
5624
+ export { mergeActionIndex, projectActionIndexForViewer, ACTION_INDEX_COLLECTION, ACTION_INDEX_DOC_ID, } from "./features/search/action-index/types";
5625
+ export { deriveNavEntries, deriveQuickActionEntries, buildActionIndexBase, } from "./features/search/action-index/derive";
5626
+ export { matchesNavQuery } from "./_internal/shared/features/layout/matchesNavQuery";
5627
+ export { SITE_SETTINGS_ENTRIES, deriveSettingsEntries, } from "./features/search/action-index/settings-entries";
5628
+ export { SITE_SETTINGS_TABS, SITE_SETTINGS_TAB_IDS, isSiteSettingsTabId, } from "./features/admin/constants/site-settings-tabs";
5629
+ export { validateActionIndexEntry, normaliseRoute, } from "./features/search/action-index/validate-entry";
package/dist/jobs.d.ts CHANGED
@@ -20,7 +20,7 @@
20
20
  * listingProcessorHandler,
21
21
  * } from "@mohasinac/appkit/jobs";
22
22
  */
23
- export { couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections, onPrizeDrawPaymentConfirmedHandler, prizeDrawSoldOutRevealHandler, prizeDrawExpiryRevealHandler, bundleStockSyncHandler, onProductStockChangeHandler, triggerEventRaffleHandler, assignSpinPrizeHandler, draftPruneHandler, onSupportTicketCreateHandler, onSupportTicketUpdateHandler, onUserBanChangeHandler, onScamReportCreateHandler, onScamReportUpdateHandler, bindSchedule, bindDocumentWritten, bindDocumentCreated, bindDocumentUpdated, bindCallable, bindHttps, bindToFirebase, } from "./_internal/server/jobs/index.js";
23
+ export { couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, pageViewRollupHandler, pageViewPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections, onPrizeDrawPaymentConfirmedHandler, prizeDrawSoldOutRevealHandler, prizeDrawExpiryRevealHandler, bundleStockSyncHandler, onProductStockChangeHandler, triggerEventRaffleHandler, assignSpinPrizeHandler, draftPruneHandler, onSupportTicketCreateHandler, onSupportTicketUpdateHandler, onUserBanChangeHandler, onScamReportCreateHandler, onScamReportUpdateHandler, bindSchedule, bindDocumentWritten, bindDocumentCreated, bindDocumentUpdated, bindCallable, bindHttps, bindToFirebase, } from "./_internal/server/jobs/index.js";
24
24
  export { defineFunction, mergeFunctionRegistries, bindAllFromRegistry, APPKIT_FUNCTIONS, APPKIT_FUNCTIONS_BY_NAME, } from "./_internal/server/functions/index.js";
25
25
  export { orderRepository, siteSettingsRepository } from "./repositories/index.js";
26
26
  export type { OrderDocument, OrderDocumentItem } from "./features/orders/index.js";
package/dist/jobs.js CHANGED
@@ -22,7 +22,7 @@
22
22
  */
23
23
  export {
24
24
  // S4–S5: Job handlers (pure, framework-agnostic)
25
- couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections,
25
+ couponExpiryHandler, offerExpiryHandler, cartPruneHandler, notificationPruneHandler, pageViewRollupHandler, pageViewPruneHandler, dailyDataCleanupHandler, cleanupRtdbEventsHandler, auctionSettlementHandler, autoPayoutEligibilityHandler, countersReconcileHandler, onOrderCreateHandler, onOrderStatusChangeHandler, onReviewWriteHandler, promotionsHandler, mediaTmpCleanupHandler, pendingOrderTimeoutHandler, productStatsSyncHandler, positionsReconcileHandler, payoutBatchHandler, weeklyPayoutEligibilityHandler, onCategoryWriteHandler, onProductWriteHandler, onStoreWriteHandler, adminAnalyticsHandler, storeAnalyticsHandler, listingProcessorHandler, supportedListingCollections,
26
26
  // SB1-L (S7-PrizeDraws) — prize-draw reveal redesigned to a fully-automatic model.
27
27
  onPrizeDrawPaymentConfirmedHandler, prizeDrawSoldOutRevealHandler, prizeDrawExpiryRevealHandler, bundleStockSyncHandler,
28
28
  // SB-UNI-V — Firestore onWrite trigger for product stock changes.
@@ -6,5 +6,3 @@ export { logClientError, logClientWarning, logClientInfo, logClientDebug, logApi
6
6
  export type { ClientErrorContext } from "./client-logger";
7
7
  export { setPerformanceProvider, startTrace, stopTrace, addTraceAttribute, addTraceMetric, } from "./performance";
8
8
  export type { PerformanceTrace, PerformanceProvider } from "./performance";
9
- export { ANALYTICS_EVENTS, initializeAnalytics, trackEvent, setAnalyticsUserId, setAnalyticsUserProperties, trackPageView, trackAuth, trackEcommerce, trackContent, trackForm, trackAdmin, } from "./analytics";
10
- export type { AnalyticsEvent } from "./analytics";
@@ -3,4 +3,15 @@ export { getCacheMetrics, recordCacheHit, recordCacheMiss, resetCacheMetrics, ge
3
3
  export { setupGlobalErrorHandler, setupCacheMonitoring } from "./runtime";
4
4
  export { logClientError, logClientWarning, logClientInfo, logClientDebug, logApiError, logValidationError, logNavigationError, logAuthError, logUploadError, logPaymentError, logApplicationError, initializeClientLogger, } from "./client-logger";
5
5
  export { setPerformanceProvider, startTrace, stopTrace, addTraceAttribute, addTraceMetric, } from "./performance";
6
- export { ANALYTICS_EVENTS, initializeAnalytics, trackEvent, setAnalyticsUserId, setAnalyticsUserProperties, trackPageView, trackAuth, trackEcommerce, trackContent, trackForm, trackAdmin, } from "./analytics";
6
+ /*
7
+ * The Firebase-Analytics module that lived at ./analytics was deleted
8
+ * 2026-08-31. It defined 11 events, `initializeAnalytics` and `trackEvent`, and
9
+ * had ZERO call sites anywhere — it was re-exported through three barrels and
10
+ * never invoked once.
11
+ *
12
+ * Site analytics now runs through `siteSettings.integrations`
13
+ * (GA / GTM / Meta Pixel), emitted by `src/components/analytics/AnalyticsScripts`.
14
+ * Wiring a second, unrelated system in parallel would have given the project
15
+ * two answers to "how is this page counted", which is how it ended up with two
16
+ * view counters that could never reconcile.
17
+ */
@@ -8,5 +8,3 @@ export { serverLogger, logServerError, logServerWarning, logServerInfo, logServe
8
8
  export type { ServerErrorContext } from "./server-logger";
9
9
  export { setPerformanceProvider, startTrace, stopTrace, addTraceAttribute, addTraceMetric, } from "./performance";
10
10
  export type { PerformanceTrace, PerformanceProvider } from "./performance";
11
- export { ANALYTICS_EVENTS, initializeAnalytics, trackEvent, setAnalyticsUserId, setAnalyticsUserProperties, trackPageView, trackAuth, trackEcommerce, trackContent, trackForm, trackAdmin, } from "./analytics";
12
- export type { AnalyticsEvent } from "./analytics";
@@ -4,4 +4,3 @@ export { setupGlobalErrorHandler, setupCacheMonitoring } from "./runtime";
4
4
  export { logClientError, logClientWarning, logClientInfo, logClientDebug, logApiError, logValidationError, logNavigationError, logAuthError, logUploadError, logPaymentError, logApplicationError, initializeClientLogger, } from "./client-logger";
5
5
  export { serverLogger, logServerError, logServerWarning, logServerInfo, logServerDebug, extractRequestMetadata, logApiRouteError, logDatabaseError, logServerAuthError, logAuthorizationError, logEmailError, logStorageError, logExternalApiError, logSlowOperation, logSecurityEvent, } from "./server-logger";
6
6
  export { setPerformanceProvider, startTrace, stopTrace, addTraceAttribute, addTraceMetric, } from "./performance";
7
- export { ANALYTICS_EVENTS, initializeAnalytics, trackEvent, setAnalyticsUserId, setAnalyticsUserProperties, trackPageView, trackAuth, trackEcommerce, trackContent, trackForm, trackAdmin, } from "./analytics";
@@ -30,7 +30,7 @@ import { normalizeError } from "../../errors/normalize";
30
30
  */
31
31
  import { NextResponse } from "next/server.js";
32
32
  import { getProviders } from "../../contracts";
33
- import { isEffectiveAdminUser } from "../../features/auth/role-predicates";
33
+ import { isEffectiveAdminUser, isTesterUser, canTestAdminSurfaces } from "../../features/auth/role-predicates";
34
34
  import { mapToHttpError, HTTP_ERROR_CODES } from "../../errors/error-mapping";
35
35
  import { describeCauseChain } from "../../errors/describe-cause";
36
36
  import { buildErrorEnvelope, toApiIssues } from "../../errors/error-envelope";
@@ -158,8 +158,11 @@ async function isTesterEligibleForAdminRoute(user, effectiveRoles) {
158
158
  if (!user || !effectiveRoles.includes("admin"))
159
159
  return false;
160
160
  const profile = await userRepository.findById(user.uid);
161
- return Boolean(profile?.isTester &&
162
- profile?.canTestAdmin);
161
+ // Reads the `tester` role + `tester:admin-surfaces` permission first, and the
162
+ // legacy `isTester`/`canTestAdmin` booleans second — see role-predicates.
163
+ // The live Firestore read is required either way: none of these reach the
164
+ // session-cookie claims, which carry only `role`.
165
+ return isTesterUser(profile) && canTestAdminSurfaces(profile);
163
166
  }
164
167
  export function createRouteHandler(options) {
165
168
  if (options.bodyOptional && options.bodyRequired) {
@@ -182,10 +185,12 @@ export function createRouteHandler(options) {
182
185
  else if (options.authOptional) {
183
186
  try {
184
187
  user = await verifySession(request);
188
+ // Deliberate: this is the OPTIONAL-auth path. A bad or absent session means
189
+ // anonymous, which is a legitimate outcome here — routes that require a
190
+ // user use `auth: true`, which throws instead.
185
191
  }
186
192
  catch (_err) {
187
193
  void normalizeError(_err);
188
- // anonymous
189
194
  }
190
195
  }
191
196
  // -- Role check --------------------------------------------------------