@mohasinac/appkit 2.7.50 → 2.7.53

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 (143) hide show
  1. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +1 -0
  2. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +65 -0
  3. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +1 -0
  4. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +163 -0
  5. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +1 -0
  6. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +115 -0
  7. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +1 -0
  8. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +96 -0
  9. package/dist/client.d.ts +29 -6
  10. package/dist/client.js +16 -4
  11. package/dist/constants/api-endpoints.d.ts +42 -0
  12. package/dist/constants/api-endpoints.js +14 -0
  13. package/dist/features/_guide-cls.d.ts +13 -0
  14. package/dist/features/_guide-cls.js +14 -0
  15. package/dist/features/about/components/HelpPageView.js +29 -26
  16. package/dist/features/account/components/BuyerAccountGuideView.d.ts +1 -0
  17. package/dist/features/account/components/BuyerAccountGuideView.js +39 -0
  18. package/dist/features/account/components/BuyerAuctionsGuideView.d.ts +1 -0
  19. package/dist/features/account/components/BuyerAuctionsGuideView.js +38 -0
  20. package/dist/features/account/components/BuyerOrdersGuideView.d.ts +1 -0
  21. package/dist/features/account/components/BuyerOrdersGuideView.js +48 -0
  22. package/dist/features/account/components/BuyerShoppingGuideView.d.ts +1 -0
  23. package/dist/features/account/components/BuyerShoppingGuideView.js +38 -0
  24. package/dist/features/admin/components/AdminAnalyticsGuideView.d.ts +1 -0
  25. package/dist/features/admin/components/AdminAnalyticsGuideView.js +24 -0
  26. package/dist/features/admin/components/AdminBlogEditorView.js +100 -77
  27. package/dist/features/admin/components/AdminBundleEditorView.js +20 -14
  28. package/dist/features/admin/components/AdminBundlesView.d.ts +1 -3
  29. package/dist/features/admin/components/AdminBundlesView.js +173 -52
  30. package/dist/features/admin/components/AdminCatalogGuideView.d.ts +1 -0
  31. package/dist/features/admin/components/AdminCatalogGuideView.js +28 -0
  32. package/dist/features/admin/components/AdminContentGuideView.d.ts +1 -0
  33. package/dist/features/admin/components/AdminContentGuideView.js +36 -0
  34. package/dist/features/admin/components/AdminCouponEditorView.js +1 -1
  35. package/dist/features/admin/components/AdminGuideHubView.d.ts +5 -0
  36. package/dist/features/admin/components/AdminGuideHubView.js +79 -0
  37. package/dist/features/admin/components/AdminOrdersGuideView.d.ts +1 -0
  38. package/dist/features/admin/components/AdminOrdersGuideView.js +44 -0
  39. package/dist/features/admin/components/AdminProductsView.js +8 -3
  40. package/dist/features/admin/components/AdminSiteConfigGuideView.d.ts +1 -0
  41. package/dist/features/admin/components/AdminSiteConfigGuideView.js +21 -0
  42. package/dist/features/admin/components/AdminStoresGuideView.d.ts +1 -0
  43. package/dist/features/admin/components/AdminStoresGuideView.js +32 -0
  44. package/dist/features/admin/components/AdminTeamGuideView.d.ts +1 -0
  45. package/dist/features/admin/components/AdminTeamGuideView.js +33 -0
  46. package/dist/features/admin/components/AdminTrustGuideView.d.ts +1 -0
  47. package/dist/features/admin/components/AdminTrustGuideView.js +40 -0
  48. package/dist/features/admin/components/AdminUsersGuideView.d.ts +1 -0
  49. package/dist/features/admin/components/AdminUsersGuideView.js +38 -0
  50. package/dist/features/categories/components/CategoryBundlesListing.js +3 -33
  51. package/dist/features/categories/components/index.d.ts +0 -2
  52. package/dist/features/categories/components/index.js +0 -1
  53. package/dist/features/events/components/AdminEventEditorView.js +223 -269
  54. package/dist/features/grouped/repository/grouped-listings.repository.d.ts +9 -0
  55. package/dist/features/grouped/repository/grouped-listings.repository.js +12 -0
  56. package/dist/features/media/upload/MediaUploadField.js +1 -1
  57. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +3 -1
  58. package/dist/features/products/components/AuctionsIndexListing.js +3 -1
  59. package/dist/features/products/components/MarketplaceBundleCard.d.ts +21 -0
  60. package/dist/features/products/components/MarketplaceBundleCard.js +56 -0
  61. package/dist/features/products/components/ProductsIndexListing.js +3 -1
  62. package/dist/features/products/components/index.d.ts +2 -4
  63. package/dist/features/products/components/index.js +1 -2
  64. package/dist/features/promotions/schemas/firestore.js +1 -1
  65. package/dist/features/reviews/components/index.d.ts +0 -2
  66. package/dist/features/reviews/components/index.js +0 -1
  67. package/dist/features/seller/components/BrandInlineSelect.js +23 -3
  68. package/dist/features/seller/components/CategoryInlineSelect.js +20 -3
  69. package/dist/features/seller/components/SellerAnalyticsAlertsView.d.ts +6 -0
  70. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +124 -0
  71. package/dist/features/seller/components/SellerAnalyticsView.d.ts +2 -0
  72. package/dist/features/seller/components/SellerAnalyticsView.js +17 -9
  73. package/dist/features/seller/components/SellerBundlesView.d.ts +5 -0
  74. package/dist/features/seller/components/SellerBundlesView.js +104 -0
  75. package/dist/features/seller/components/SellerClassifiedView.d.ts +5 -0
  76. package/dist/features/seller/components/SellerClassifiedView.js +113 -0
  77. package/dist/features/seller/components/SellerDashboardView.js +19 -7
  78. package/dist/features/seller/components/SellerDigitalCodesView.d.ts +5 -0
  79. package/dist/features/seller/components/SellerDigitalCodesView.js +115 -0
  80. package/dist/features/seller/components/SellerGoogleReviewsView.d.ts +14 -0
  81. package/dist/features/seller/components/SellerGoogleReviewsView.js +95 -0
  82. package/dist/features/seller/components/SellerGroupedListingsView.d.ts +6 -0
  83. package/dist/features/seller/components/SellerGroupedListingsView.js +112 -0
  84. package/dist/features/seller/components/SellerLiveView.d.ts +5 -0
  85. package/dist/features/seller/components/SellerLiveView.js +113 -0
  86. package/dist/features/seller/components/SellerOrdersView.js +18 -2
  87. package/dist/features/seller/components/SellerPayoutMethodsView.d.ts +7 -0
  88. package/dist/features/seller/components/SellerPayoutMethodsView.js +120 -0
  89. package/dist/features/seller/components/SellerPayoutSettingsView.js +50 -12
  90. package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
  91. package/dist/features/seller/components/SellerProductShell.js +9 -7
  92. package/dist/features/seller/components/SellerProductsFilterDrawer.js +3 -1
  93. package/dist/features/seller/components/SellerProductsView.js +48 -54
  94. package/dist/features/seller/components/SellerShippingConfigsView.d.ts +7 -0
  95. package/dist/features/seller/components/SellerShippingConfigsView.js +149 -0
  96. package/dist/features/seller/components/SellerShippingView.js +37 -10
  97. package/dist/features/seller/components/SellerStoreCategoriesView.d.ts +9 -0
  98. package/dist/features/seller/components/SellerStoreCategoriesView.js +122 -0
  99. package/dist/features/seller/components/SellerStorefrontView.d.ts +0 -7
  100. package/dist/features/seller/components/SellerStorefrontView.js +26 -29
  101. package/dist/features/seller/components/SellerTemplatesView.d.ts +10 -0
  102. package/dist/features/seller/components/SellerTemplatesView.js +265 -0
  103. package/dist/features/seller/components/index.d.ts +26 -0
  104. package/dist/features/seller/components/index.js +13 -0
  105. package/dist/features/stores/api/[storeSlug]/reviews/route.js +49 -7
  106. package/dist/features/stores/components/StoreCapabilitiesGuideView.d.ts +3 -0
  107. package/dist/features/stores/components/StoreCapabilitiesGuideView.js +101 -0
  108. package/dist/features/stores/components/StoreFinanceGuideView.d.ts +3 -0
  109. package/dist/features/stores/components/StoreFinanceGuideView.js +79 -0
  110. package/dist/features/stores/components/StoreGuideHubView.d.ts +5 -0
  111. package/dist/features/stores/components/StoreGuideHubView.js +89 -0
  112. package/dist/features/stores/components/StoreListingsGuideView.d.ts +3 -0
  113. package/dist/features/stores/components/StoreListingsGuideView.js +151 -0
  114. package/dist/features/stores/components/StoreOrdersGuideView.d.ts +3 -0
  115. package/dist/features/stores/components/StoreOrdersGuideView.js +122 -0
  116. package/dist/features/stores/components/StoreReviewsListing.js +100 -23
  117. package/dist/features/stores/components/StoreSettingsGuideView.d.ts +3 -0
  118. package/dist/features/stores/components/StoreSettingsGuideView.js +56 -0
  119. package/dist/features/stores/components/index.d.ts +12 -1
  120. package/dist/features/stores/components/index.js +6 -1
  121. package/dist/features/stores/hooks/useStores.d.ts +5 -0
  122. package/dist/features/stores/hooks/useStores.js +10 -0
  123. package/dist/features/stores/manifest.js +1 -1
  124. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +13 -2
  125. package/dist/index.d.ts +54 -9
  126. package/dist/index.js +58 -15
  127. package/dist/next/routing/route-map.d.ts +55 -0
  128. package/dist/next/routing/route-map.js +25 -0
  129. package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +1 -0
  130. package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +93 -0
  131. package/dist/providers/db-firebase/sieve.d.ts +49 -0
  132. package/dist/providers/db-firebase/sieve.js +61 -8
  133. package/dist/repositories/index.d.ts +1 -0
  134. package/dist/repositories/index.js +2 -0
  135. package/dist/tailwind-utilities.css +1 -1
  136. package/dist/ui/components/ListingToolbar.d.ts +8 -1
  137. package/dist/ui/components/ListingToolbar.js +4 -2
  138. package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +1 -0
  139. package/dist/ui/components/__tests__/BulkActionBar.test.js +96 -0
  140. package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +1 -0
  141. package/dist/ui/components/__tests__/ListingToolbar.test.js +125 -0
  142. package/dist/ui/index.d.ts +1 -1
  143. package/package.json +8 -2
package/dist/index.d.ts CHANGED
@@ -554,6 +554,7 @@ export type { ProductTemplateDocument, ProductTemplateCreateInput, ProductTempla
554
554
  export { tokenRepository } from "./repositories/index";
555
555
  export { userRepository } from "./repositories/index";
556
556
  export { wishlistRepository } from "./repositories/index";
557
+ export { GroupedListingsRepository, groupedListingsRepository } from "./repositories/index";
557
558
  export type { NewsletterListModel } from "./repositories/index";
558
559
  export type { WishlistItem } from "./repositories/index";
559
560
  export { ADDRESS_FIXTURES } from "./seed/index";
@@ -1558,7 +1559,6 @@ export { CATEGORY_FIELDS } from "./features/categories/index";
1558
1559
  export { CATEGORY_FILTER_KEYS } from "./features/categories/index";
1559
1560
  export { CATEGORY_PUBLIC_SORT_OPTIONS } from "./features/categories/index";
1560
1561
  export { CATEGORY_SELLER_SORT_OPTIONS } from "./features/categories/index";
1561
- export { CategoriesListView } from "./features/categories/index";
1562
1562
  export { CategoryCard } from "./features/categories/index";
1563
1563
  export { CategoryFilters } from "./features/categories/index";
1564
1564
  export { CategoryForm } from "./features/categories/index";
@@ -1600,7 +1600,6 @@ export { useCategoryDetail } from "./features/categories/index";
1600
1600
  export { useCategorySelector } from "./features/categories/index";
1601
1601
  export { useCreateCategory } from "./features/categories/index";
1602
1602
  export type { BreadcrumbTrailProps } from "./features/categories/index";
1603
- export type { CategoriesListViewProps } from "./features/categories/index";
1604
1603
  export type { CategoriesResponse } from "./features/categories/index";
1605
1604
  export type { Category } from "./features/categories/index";
1606
1605
  export type { CategoryAncestor } from "./features/categories/index";
@@ -2312,7 +2311,6 @@ export { BundleCollage } from "./features/categories/components/BundleCollage";
2312
2311
  export type { BundleCollageProps } from "./features/categories/components/BundleCollage";
2313
2312
  export { BundleBuyNowCta } from "./features/categories/components/BundleBuyNowCta";
2314
2313
  export type { BundleBuyNowCtaProps } from "./features/categories/components/BundleBuyNowCta";
2315
- export { AuctionsView } from "./features/products/index";
2316
2314
  export { BidHistory } from "./features/products/index";
2317
2315
  export { BuyBar } from "./features/products/index";
2318
2316
  export { DEFAULT_PRODUCT_DATA } from "./features/products/index";
@@ -2343,7 +2341,6 @@ export { PRODUCT_STATUS_OPTIONS } from "./features/products/index";
2343
2341
  export { PRODUCT_UPDATABLE_FIELDS } from "./features/products/index";
2344
2342
  export { PlaceBidForm } from "./features/products/index";
2345
2343
  export { PreOrderDetailView } from "./features/products/index";
2346
- export { PreOrdersView } from "./features/products/index";
2347
2344
  export type { PrizeDrawsListingViewProps } from "./features/products/components/PrizeDrawsListingView";
2348
2345
  export { PrizeDrawsIndexListing } from "./features/products/index";
2349
2346
  export type { PrizeDrawsIndexListingProps } from "./features/products/index";
@@ -2397,7 +2394,6 @@ export { useProductDetail } from "./features/products/index";
2397
2394
  export { useProducts } from "./features/products/index";
2398
2395
  export { useRelatedProducts } from "./features/products/index";
2399
2396
  export type { AuctionDetailViewProps } from "./features/products/index";
2400
- export type { AuctionsViewProps } from "./features/products/index";
2401
2397
  export type { BidHistoryEntry } from "./features/products/index";
2402
2398
  export type { BidHistoryProps } from "./features/products/index";
2403
2399
  export type { BuyBarProps } from "./features/products/index";
@@ -2406,7 +2402,6 @@ export type { ListingType } from "./features/products/index";
2406
2402
  export type { MakeOfferFormProps } from "./features/products/index";
2407
2403
  export type { PlaceBidFormProps } from "./features/products/index";
2408
2404
  export type { PreOrderDetailViewProps } from "./features/products/index";
2409
- export type { PreOrdersViewProps } from "./features/products/index";
2410
2405
  export type { ProductAdminUpdateInput } from "./features/products/index";
2411
2406
  export type { ProductCondition } from "./features/products/index";
2412
2407
  export type { ProductCreateInput } from "./features/products/index";
@@ -2531,7 +2526,6 @@ export { ReviewFilters } from "./features/reviews/index";
2531
2526
  export { ReviewStatusValues } from "./features/reviews/index";
2532
2527
  export { ReviewSummary } from "./features/reviews/index";
2533
2528
  export { ReviewsList } from "./features/reviews/index";
2534
- export { ReviewsListView } from "./features/reviews/index";
2535
2529
  export type { ReviewDetailPageViewProps } from "./features/reviews/components/ReviewDetailPageView";
2536
2530
  export { ReviewsIndexListing } from "./features/reviews/components/ReviewsIndexListing";
2537
2531
  export type { ReviewsIndexListingProps } from "./features/reviews/components/ReviewsIndexListing";
@@ -2568,7 +2562,6 @@ export type { ReviewUpdateInput } from "./features/reviews/index";
2568
2562
  export type { ReviewVideo } from "./features/reviews/index";
2569
2563
  export type { ReviewVideoField } from "./features/reviews/index";
2570
2564
  export type { ReviewsListProps } from "./features/reviews/index";
2571
- export type { ReviewsListViewProps } from "./features/reviews/index";
2572
2565
  export type { ViewReviewModalProps } from "./features/reviews/index";
2573
2566
  export { adminDeleteReview } from "./features/reviews/server";
2574
2567
  export { adminUpdateReview } from "./features/reviews/server";
@@ -2635,6 +2628,12 @@ export { SellerDashboardView } from "./features/seller/index";
2635
2628
  export { SellerEditProductView } from "./features/seller/index";
2636
2629
  export { SellerGuideView } from "./features/seller/index";
2637
2630
  export { SellerOffersView } from "./features/seller/index";
2631
+ export { SellerGroupedListingsView } from "./features/seller/index";
2632
+ export type { SellerGroupedListingsViewProps } from "./features/seller/index";
2633
+ export { SellerGroupedListingsView as StoreGroupedListingsView } from "./features/seller/index";
2634
+ export { SellerAnalyticsAlertsView } from "./features/seller/index";
2635
+ export type { SellerAnalyticsAlertsViewProps } from "./features/seller/index";
2636
+ export { SellerAnalyticsAlertsView as StoreAnalyticsAlertsView } from "./features/seller/index";
2638
2637
  export { SellerOffersPanel } from "./features/seller/index";
2639
2638
  export type { SellerOffersPanelProps, SellerOfferAction } from "./features/seller/index";
2640
2639
  export { SellerOrdersView } from "./features/seller/index";
@@ -2807,7 +2806,6 @@ export { StoreNavTabs } from "./features/stores/index";
2807
2806
  export { StoreProductsView } from "./features/stores/index";
2808
2807
  export { StoreReviewsView } from "./features/stores/index";
2809
2808
  export { StoreStatusValues } from "./features/stores/index";
2810
- export { StoresListView } from "./features/stores/index";
2811
2809
  export { StoresIndexListing } from "./features/stores/index";
2812
2810
  export type { StoresIndexListingProps } from "./features/stores/index";
2813
2811
  export { StoreProductsListing } from "./features/stores/components/StoreProductsListing";
@@ -2819,6 +2817,33 @@ export type { StoreReviewsListingProps } from "./features/stores/components/Stor
2819
2817
  export { StoreReviewsPageView } from "./features/stores/components/StoreReviewsPageView";
2820
2818
  export type { StorePrizeDrawsPageViewProps } from "./features/stores/components/StorePrizeDrawsPageView";
2821
2819
  export type { StoreBundlesPageViewProps } from "./features/stores/components/StoreBundlesPageView";
2820
+ export { AdminGuideHubView } from "./features/admin/components/AdminGuideHubView";
2821
+ export type { AdminGuideHubViewProps } from "./features/admin/components/AdminGuideHubView";
2822
+ export { AdminUsersGuideView } from "./features/admin/components/AdminUsersGuideView";
2823
+ export { AdminCatalogGuideView } from "./features/admin/components/AdminCatalogGuideView";
2824
+ export { AdminStoresGuideView } from "./features/admin/components/AdminStoresGuideView";
2825
+ export { AdminOrdersGuideView } from "./features/admin/components/AdminOrdersGuideView";
2826
+ export { AdminContentGuideView } from "./features/admin/components/AdminContentGuideView";
2827
+ export { AdminSiteConfigGuideView } from "./features/admin/components/AdminSiteConfigGuideView";
2828
+ export { AdminTeamGuideView } from "./features/admin/components/AdminTeamGuideView";
2829
+ export { AdminAnalyticsGuideView } from "./features/admin/components/AdminAnalyticsGuideView";
2830
+ export { AdminTrustGuideView } from "./features/admin/components/AdminTrustGuideView";
2831
+ export { BuyerShoppingGuideView } from "./features/account/components/BuyerShoppingGuideView";
2832
+ export { BuyerAuctionsGuideView } from "./features/account/components/BuyerAuctionsGuideView";
2833
+ export { BuyerOrdersGuideView } from "./features/account/components/BuyerOrdersGuideView";
2834
+ export { BuyerAccountGuideView } from "./features/account/components/BuyerAccountGuideView";
2835
+ export { StoreGuideHubView } from "./features/stores/components/StoreGuideHubView";
2836
+ export type { StoreGuideHubViewProps } from "./features/stores/components/StoreGuideHubView";
2837
+ export { StoreListingsGuideView } from "./features/stores/components/StoreListingsGuideView";
2838
+ export type { StoreListingsGuideViewProps } from "./features/stores/components/StoreListingsGuideView";
2839
+ export { StoreOrdersGuideView } from "./features/stores/components/StoreOrdersGuideView";
2840
+ export type { StoreOrdersGuideViewProps } from "./features/stores/components/StoreOrdersGuideView";
2841
+ export { StoreFinanceGuideView } from "./features/stores/components/StoreFinanceGuideView";
2842
+ export type { StoreFinanceGuideViewProps } from "./features/stores/components/StoreFinanceGuideView";
2843
+ export { StoreCapabilitiesGuideView } from "./features/stores/components/StoreCapabilitiesGuideView";
2844
+ export type { StoreCapabilitiesGuideViewProps } from "./features/stores/components/StoreCapabilitiesGuideView";
2845
+ export { StoreSettingsGuideView } from "./features/stores/components/StoreSettingsGuideView";
2846
+ export type { StoreSettingsGuideViewProps } from "./features/stores/components/StoreSettingsGuideView";
2822
2847
  export { StorePreOrdersListing } from "./features/stores/components/StorePreOrdersListing";
2823
2848
  export type { StorePreOrdersListingProps } from "./features/stores/components/StorePreOrdersListing";
2824
2849
  export { buildStoreColumns } from "./features/stores/index";
@@ -3104,3 +3129,23 @@ export { getDigitalCodeForDetail } from "./_internal/server/features/digital-cod
3104
3129
  export { PRODUCT_CODES_SUBCOLLECTION } from "./features/products/schemas/firestore";
3105
3130
  export type { ProductCodeDocument } from "./features/products/schemas/firestore";
3106
3131
  export { getLiveItemForDetail } from "./_internal/server/features/live/data";
3132
+ export { MarketplaceBundleCard } from "./features/products/index";
3133
+ export type { MarketplaceBundleCardProps, MarketplaceBundleCardData, MarketplaceBundleCardLabels, } from "./features/products/index";
3134
+ export { SellerStoreCategoriesView } from "./features/seller/components/SellerStoreCategoriesView";
3135
+ export type { SellerStoreCategoriesViewProps } from "./features/seller/components/SellerStoreCategoriesView";
3136
+ export { SellerTemplatesView } from "./features/seller/components/SellerTemplatesView";
3137
+ export type { SellerTemplatesViewProps } from "./features/seller/components/SellerTemplatesView";
3138
+ export { SellerPayoutMethodsView } from "./features/seller/components/SellerPayoutMethodsView";
3139
+ export type { SellerPayoutMethodsViewProps } from "./features/seller/components/SellerPayoutMethodsView";
3140
+ export { SellerShippingConfigsView } from "./features/seller/components/SellerShippingConfigsView";
3141
+ export type { SellerShippingConfigsViewProps } from "./features/seller/components/SellerShippingConfigsView";
3142
+ export { SellerGoogleReviewsView } from "./features/seller/components/SellerGoogleReviewsView";
3143
+ export type { SellerGoogleReviewsViewProps } from "./features/seller/components/SellerGoogleReviewsView";
3144
+ export { SellerBundlesView } from "./features/seller/components/SellerBundlesView";
3145
+ export type { SellerBundlesViewProps } from "./features/seller/components/SellerBundlesView";
3146
+ export { SellerClassifiedView } from "./features/seller/components/SellerClassifiedView";
3147
+ export type { SellerClassifiedViewProps } from "./features/seller/components/SellerClassifiedView";
3148
+ export { SellerDigitalCodesView } from "./features/seller/components/SellerDigitalCodesView";
3149
+ export type { SellerDigitalCodesViewProps } from "./features/seller/components/SellerDigitalCodesView";
3150
+ export { SellerLiveView } from "./features/seller/components/SellerLiveView";
3151
+ export type { SellerLiveViewProps } from "./features/seller/components/SellerLiveView";
package/dist/index.js CHANGED
@@ -1118,6 +1118,7 @@ export { userRepository } from "./repositories/index";
1118
1118
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1119
1119
  // wishlistRepository - Shared export for wishlist repository.
1120
1120
  export { wishlistRepository } from "./repositories/index";
1121
+ export { GroupedListingsRepository, groupedListingsRepository } from "./repositories/index";
1121
1122
  // ./seed/index
1122
1123
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1123
1124
  // ADDRESS_FIXTURES - Constant used across modules.
@@ -2977,9 +2978,6 @@ export { CATEGORY_PUBLIC_SORT_OPTIONS } from "./features/categories/index";
2977
2978
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2978
2979
  // CATEGORY_SELLER_SORT_OPTIONS - Constant used across modules.
2979
2980
  export { CATEGORY_SELLER_SORT_OPTIONS } from "./features/categories/index";
2980
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2981
- // CategoriesListView - Component for categories list view.
2982
- export { CategoriesListView } from "./features/categories/index";
2983
2981
  // [SERVER-RSC]-Self-fetching index/detail page views for categories.
2984
2982
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2985
2983
  // CategoryCard - Component for category card.
@@ -4286,9 +4284,6 @@ export { BundleBuyNowCta } from "./features/categories/components/BundleBuyNowCt
4286
4284
  // CategoryBundlesListing is also re-exported lower in this file (line ~8871);
4287
4285
  // the canonical export lives there next to BUNDLE_MIN_ITEMS / BUNDLE_MAX_ITEMS.
4288
4286
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4289
- // AuctionsView - Component for auctions view.
4290
- export { AuctionsView } from "./features/products/index";
4291
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4292
4287
  // BidHistory - Shared export for bid history.
4293
4288
  export { BidHistory } from "./features/products/index";
4294
4289
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -4352,9 +4347,6 @@ export { PlaceBidForm } from "./features/products/index";
4352
4347
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4353
4348
  // PreOrderDetailView - Component for pre order detail view.
4354
4349
  export { PreOrderDetailView } from "./features/products/index";
4355
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4356
- // PreOrdersView - Component for pre orders view.
4357
- export { PreOrdersView } from "./features/products/index";
4358
4350
  // [CLIENT]-Client toolbar+grid for prize draws (SB4-F).
4359
4351
  export { PrizeDrawsIndexListing } from "./features/products/index";
4360
4352
  // [CLIENT]-Marketplace card for prize draws (SB4-F).
@@ -4681,9 +4673,6 @@ export { ReviewSummary } from "./features/reviews/index";
4681
4673
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4682
4674
  // ReviewsList - Shared export for reviews list.
4683
4675
  export { ReviewsList } from "./features/reviews/index";
4684
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4685
- // ReviewsListView - Component for reviews list view.
4686
- export { ReviewsListView } from "./features/reviews/index";
4687
4676
  // ReviewsIndexListing - Client listing component with sort/filter/pagination.
4688
4677
  export { ReviewsIndexListing } from "./features/reviews/components/ReviewsIndexListing";
4689
4678
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
@@ -4873,6 +4862,10 @@ export { SellerGuideView } from "./features/seller/index";
4873
4862
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4874
4863
  // SellerOffersView - Component for seller offers view.
4875
4864
  export { SellerOffersView } from "./features/seller/index";
4865
+ export { SellerGroupedListingsView } from "./features/seller/index";
4866
+ export { SellerGroupedListingsView as StoreGroupedListingsView } from "./features/seller/index";
4867
+ export { SellerAnalyticsAlertsView } from "./features/seller/index";
4868
+ export { SellerAnalyticsAlertsView as StoreAnalyticsAlertsView } from "./features/seller/index";
4876
4869
  // [CLIENT]-Runs in browser only â€" uses useState/useEffect/fetch.
4877
4870
  // SellerOffersPanel - Interactive panel with accept/decline/counter actions for seller offers.
4878
4871
  export { SellerOffersPanel } from "./features/seller/index";
@@ -5166,15 +5159,52 @@ export { StoreReviewsView } from "./features/stores/index";
5166
5159
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
5167
5160
  // StoreStatusValues - Model for store status values.
5168
5161
  export { StoreStatusValues } from "./features/stores/index";
5169
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
5170
- // StoresListView - Component for stores list view.
5171
- export { StoresListView } from "./features/stores/index";
5172
5162
  // [SERVER-RSC] â€" Self-fetching RSC page views for store tab pages.
5173
5163
  export { StoresIndexListing } from "./features/stores/index";
5174
5164
  export { StoreProductsListing } from "./features/stores/components/StoreProductsListing";
5175
5165
  export { StoreAuctionsListing } from "./features/stores/components/StoreAuctionsListing";
5176
5166
  export { StoreReviewsListing } from "./features/stores/components/StoreReviewsListing";
5177
5167
  export { StoreReviewsPageView } from "./features/stores/components/StoreReviewsPageView";
5168
+ // [CLIENT-SSR]-Admin guide hub — static view, permission-aware card grid.
5169
+ export { AdminGuideHubView } from "./features/admin/components/AdminGuideHubView";
5170
+ // [CLIENT-SSR]-Admin users guide — static view, no firebase-admin.
5171
+ export { AdminUsersGuideView } from "./features/admin/components/AdminUsersGuideView";
5172
+ // [CLIENT-SSR]-Admin catalog guide — static view, no firebase-admin.
5173
+ export { AdminCatalogGuideView } from "./features/admin/components/AdminCatalogGuideView";
5174
+ // [CLIENT-SSR]-Admin stores guide — static view, no firebase-admin.
5175
+ export { AdminStoresGuideView } from "./features/admin/components/AdminStoresGuideView";
5176
+ // [CLIENT-SSR]-Admin orders guide — static view, no firebase-admin.
5177
+ export { AdminOrdersGuideView } from "./features/admin/components/AdminOrdersGuideView";
5178
+ // [CLIENT-SSR]-Admin content guide — static view, no firebase-admin.
5179
+ export { AdminContentGuideView } from "./features/admin/components/AdminContentGuideView";
5180
+ // [CLIENT-SSR]-Admin site config guide — static view, no firebase-admin.
5181
+ export { AdminSiteConfigGuideView } from "./features/admin/components/AdminSiteConfigGuideView";
5182
+ // [CLIENT-SSR]-Admin team guide — static view, no firebase-admin.
5183
+ export { AdminTeamGuideView } from "./features/admin/components/AdminTeamGuideView";
5184
+ // [CLIENT-SSR]-Admin analytics guide — static view, no firebase-admin.
5185
+ export { AdminAnalyticsGuideView } from "./features/admin/components/AdminAnalyticsGuideView";
5186
+ // [CLIENT-SSR]-Admin trust & safety guide — static view, no firebase-admin.
5187
+ export { AdminTrustGuideView } from "./features/admin/components/AdminTrustGuideView";
5188
+ // [CLIENT-SSR]-Buyer shopping guide — static view, no firebase-admin.
5189
+ export { BuyerShoppingGuideView } from "./features/account/components/BuyerShoppingGuideView";
5190
+ // [CLIENT-SSR]-Buyer auctions & pre-orders guide — static view, no firebase-admin.
5191
+ export { BuyerAuctionsGuideView } from "./features/account/components/BuyerAuctionsGuideView";
5192
+ // [CLIENT-SSR]-Buyer orders & returns guide — static view, no firebase-admin.
5193
+ export { BuyerOrdersGuideView } from "./features/account/components/BuyerOrdersGuideView";
5194
+ // [CLIENT-SSR]-Buyer account & safety guide — static view, no firebase-admin.
5195
+ export { BuyerAccountGuideView } from "./features/account/components/BuyerAccountGuideView";
5196
+ // [CLIENT-SSR]-Store seller guide hub — static view, no firebase-admin.
5197
+ export { StoreGuideHubView } from "./features/stores/components/StoreGuideHubView";
5198
+ // [CLIENT-SSR]-Store listings guide — static view, no firebase-admin.
5199
+ export { StoreListingsGuideView } from "./features/stores/components/StoreListingsGuideView";
5200
+ // [CLIENT-SSR]-Store orders guide — static view, no firebase-admin.
5201
+ export { StoreOrdersGuideView } from "./features/stores/components/StoreOrdersGuideView";
5202
+ // [CLIENT-SSR]-Store finance guide — static view, no firebase-admin.
5203
+ export { StoreFinanceGuideView } from "./features/stores/components/StoreFinanceGuideView";
5204
+ // [CLIENT-SSR]-Store capabilities guide — static view, no firebase-admin.
5205
+ export { StoreCapabilitiesGuideView } from "./features/stores/components/StoreCapabilitiesGuideView";
5206
+ // [CLIENT-SSR]-Store settings guide — static view, no firebase-admin.
5207
+ export { StoreSettingsGuideView } from "./features/stores/components/StoreSettingsGuideView";
5178
5208
  export { StorePreOrdersListing } from "./features/stores/components/StorePreOrdersListing";
5179
5209
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
5180
5210
  // buildStoreColumns - Helper for build store columns.
@@ -5542,3 +5572,16 @@ export { getDigitalCodeForDetail } from "./_internal/server/features/digital-cod
5542
5572
  export { PRODUCT_CODES_SUBCOLLECTION } from "./features/products/schemas/firestore";
5543
5573
  // ── Live-item listing feature ─────────────────────────────────────────────────
5544
5574
  export { getLiveItemForDetail } from "./_internal/server/features/live/data";
5575
+ // ── MarketplaceBundleCard (W3) ────────────────────────────────────────────────
5576
+ export { MarketplaceBundleCard } from "./features/products/index";
5577
+ // ── Wave 4 Seller management views ───────────────────────────────────────────
5578
+ export { SellerStoreCategoriesView } from "./features/seller/components/SellerStoreCategoriesView";
5579
+ export { SellerTemplatesView } from "./features/seller/components/SellerTemplatesView";
5580
+ export { SellerPayoutMethodsView } from "./features/seller/components/SellerPayoutMethodsView";
5581
+ export { SellerShippingConfigsView } from "./features/seller/components/SellerShippingConfigsView";
5582
+ export { SellerGoogleReviewsView } from "./features/seller/components/SellerGoogleReviewsView";
5583
+ // ── Wave 5 listing-type views ─────────────────────────────────────────────────
5584
+ export { SellerBundlesView } from "./features/seller/components/SellerBundlesView";
5585
+ export { SellerClassifiedView } from "./features/seller/components/SellerClassifiedView";
5586
+ export { SellerDigitalCodesView } from "./features/seller/components/SellerDigitalCodesView";
5587
+ export { SellerLiveView } from "./features/seller/components/SellerLiveView";
@@ -53,6 +53,10 @@ export declare const DEFAULT_ROUTE_MAP: {
53
53
  readonly CONTACT: "/contact";
54
54
  readonly BLOG: "/blog";
55
55
  readonly HELP: "/help";
56
+ readonly HELP_SHOPPING: "/help/shopping";
57
+ readonly HELP_AUCTIONS: "/help/auctions";
58
+ readonly HELP_ORDERS: "/help/orders";
59
+ readonly HELP_ACCOUNT: "/help/account";
56
60
  readonly TERMS: "/terms";
57
61
  readonly PRIVACY: "/privacy";
58
62
  readonly SECURITY: "/security";
@@ -199,6 +203,9 @@ export declare const DEFAULT_ROUTE_MAP: {
199
203
  readonly SHIPPING_CONFIGS_EDIT: (id: string) => string;
200
204
  readonly ANALYTICS_CARDS: "/store/analytics/cards";
201
205
  readonly ANALYTICS_ALERTS: "/store/analytics/alerts";
206
+ readonly GROUPED_LISTINGS: "/store/grouped-listings";
207
+ readonly GROUPED_LISTINGS_NEW: "/store/grouped-listings/new";
208
+ readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
202
209
  readonly STORE_CATEGORIES: "/store/categories";
203
210
  readonly STORE_CATEGORIES_NEW: "/store/categories/new";
204
211
  readonly STORE_CATEGORIES_EDIT: (id: string) => string;
@@ -206,6 +213,12 @@ export declare const DEFAULT_ROUTE_MAP: {
206
213
  readonly LISTING_TEMPLATES_NEW: "/store/listing-templates/new";
207
214
  readonly LISTING_TEMPLATES_EDIT: (id: string) => string;
208
215
  readonly GOOGLE_REVIEWS: "/store/google-reviews";
216
+ readonly GUIDE: "/store/guide";
217
+ readonly GUIDE_LISTINGS: "/store/guide/listings";
218
+ readonly GUIDE_ORDERS: "/store/guide/orders";
219
+ readonly GUIDE_FINANCE: "/store/guide/finance";
220
+ readonly GUIDE_CAPABILITIES: "/store/guide/capabilities";
221
+ readonly GUIDE_SETTINGS: "/store/guide/settings";
209
222
  };
210
223
  readonly ADMIN: {
211
224
  readonly DASHBOARD: "/admin/dashboard";
@@ -298,6 +311,16 @@ export declare const DEFAULT_ROUTE_MAP: {
298
311
  readonly ROLES_EDIT: (id: string) => string;
299
312
  readonly PERMISSIONS: "/admin/permissions";
300
313
  readonly ADMIN_NOTIFICATIONS: "/admin/admin-notifications";
314
+ readonly GUIDE: "/admin/guide";
315
+ readonly GUIDE_USERS: "/admin/guide/users";
316
+ readonly GUIDE_CATALOG: "/admin/guide/catalog";
317
+ readonly GUIDE_STORES: "/admin/guide/stores";
318
+ readonly GUIDE_ORDERS: "/admin/guide/orders";
319
+ readonly GUIDE_CONTENT: "/admin/guide/content";
320
+ readonly GUIDE_SITE: "/admin/guide/site";
321
+ readonly GUIDE_TEAM: "/admin/guide/team";
322
+ readonly GUIDE_ANALYTICS: "/admin/guide/analytics";
323
+ readonly GUIDE_TRUST: "/admin/guide/trust";
301
324
  };
302
325
  readonly DEMO: {
303
326
  readonly SEED: "/demo/seed";
@@ -350,6 +373,10 @@ export declare const ROUTES: {
350
373
  readonly CONTACT: "/contact";
351
374
  readonly BLOG: "/blog";
352
375
  readonly HELP: "/help";
376
+ readonly HELP_SHOPPING: "/help/shopping";
377
+ readonly HELP_AUCTIONS: "/help/auctions";
378
+ readonly HELP_ORDERS: "/help/orders";
379
+ readonly HELP_ACCOUNT: "/help/account";
353
380
  readonly TERMS: "/terms";
354
381
  readonly PRIVACY: "/privacy";
355
382
  readonly SECURITY: "/security";
@@ -496,6 +523,9 @@ export declare const ROUTES: {
496
523
  readonly SHIPPING_CONFIGS_EDIT: (id: string) => string;
497
524
  readonly ANALYTICS_CARDS: "/store/analytics/cards";
498
525
  readonly ANALYTICS_ALERTS: "/store/analytics/alerts";
526
+ readonly GROUPED_LISTINGS: "/store/grouped-listings";
527
+ readonly GROUPED_LISTINGS_NEW: "/store/grouped-listings/new";
528
+ readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
499
529
  readonly STORE_CATEGORIES: "/store/categories";
500
530
  readonly STORE_CATEGORIES_NEW: "/store/categories/new";
501
531
  readonly STORE_CATEGORIES_EDIT: (id: string) => string;
@@ -503,6 +533,12 @@ export declare const ROUTES: {
503
533
  readonly LISTING_TEMPLATES_NEW: "/store/listing-templates/new";
504
534
  readonly LISTING_TEMPLATES_EDIT: (id: string) => string;
505
535
  readonly GOOGLE_REVIEWS: "/store/google-reviews";
536
+ readonly GUIDE: "/store/guide";
537
+ readonly GUIDE_LISTINGS: "/store/guide/listings";
538
+ readonly GUIDE_ORDERS: "/store/guide/orders";
539
+ readonly GUIDE_FINANCE: "/store/guide/finance";
540
+ readonly GUIDE_CAPABILITIES: "/store/guide/capabilities";
541
+ readonly GUIDE_SETTINGS: "/store/guide/settings";
506
542
  };
507
543
  readonly ADMIN: {
508
544
  readonly DASHBOARD: "/admin/dashboard";
@@ -595,6 +631,16 @@ export declare const ROUTES: {
595
631
  readonly ROLES_EDIT: (id: string) => string;
596
632
  readonly PERMISSIONS: "/admin/permissions";
597
633
  readonly ADMIN_NOTIFICATIONS: "/admin/admin-notifications";
634
+ readonly GUIDE: "/admin/guide";
635
+ readonly GUIDE_USERS: "/admin/guide/users";
636
+ readonly GUIDE_CATALOG: "/admin/guide/catalog";
637
+ readonly GUIDE_STORES: "/admin/guide/stores";
638
+ readonly GUIDE_ORDERS: "/admin/guide/orders";
639
+ readonly GUIDE_CONTENT: "/admin/guide/content";
640
+ readonly GUIDE_SITE: "/admin/guide/site";
641
+ readonly GUIDE_TEAM: "/admin/guide/team";
642
+ readonly GUIDE_ANALYTICS: "/admin/guide/analytics";
643
+ readonly GUIDE_TRUST: "/admin/guide/trust";
598
644
  };
599
645
  readonly DEMO: {
600
646
  readonly SEED: "/demo/seed";
@@ -667,6 +713,9 @@ export declare const SELLER_ROUTES: {
667
713
  readonly SHIPPING_CONFIGS_EDIT: (id: string) => string;
668
714
  readonly ANALYTICS_CARDS: "/store/analytics/cards";
669
715
  readonly ANALYTICS_ALERTS: "/store/analytics/alerts";
716
+ readonly GROUPED_LISTINGS: "/store/grouped-listings";
717
+ readonly GROUPED_LISTINGS_NEW: "/store/grouped-listings/new";
718
+ readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
670
719
  readonly STORE_CATEGORIES: "/store/categories";
671
720
  readonly STORE_CATEGORIES_NEW: "/store/categories/new";
672
721
  readonly STORE_CATEGORIES_EDIT: (id: string) => string;
@@ -674,6 +723,12 @@ export declare const SELLER_ROUTES: {
674
723
  readonly LISTING_TEMPLATES_NEW: "/store/listing-templates/new";
675
724
  readonly LISTING_TEMPLATES_EDIT: (id: string) => string;
676
725
  readonly GOOGLE_REVIEWS: "/store/google-reviews";
726
+ readonly GUIDE: "/store/guide";
727
+ readonly GUIDE_LISTINGS: "/store/guide/listings";
728
+ readonly GUIDE_ORDERS: "/store/guide/orders";
729
+ readonly GUIDE_FINANCE: "/store/guide/finance";
730
+ readonly GUIDE_CAPABILITIES: "/store/guide/capabilities";
731
+ readonly GUIDE_SETTINGS: "/store/guide/settings";
677
732
  };
678
733
  export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
679
734
  export declare const PROTECTED_ROUTES: readonly [string, string, string, string, string, string, string];
@@ -41,6 +41,10 @@ export const DEFAULT_ROUTE_MAP = {
41
41
  CONTACT: "/contact",
42
42
  BLOG: "/blog",
43
43
  HELP: "/help",
44
+ HELP_SHOPPING: "/help/shopping",
45
+ HELP_AUCTIONS: "/help/auctions",
46
+ HELP_ORDERS: "/help/orders",
47
+ HELP_ACCOUNT: "/help/account",
44
48
  TERMS: "/terms",
45
49
  PRIVACY: "/privacy",
46
50
  SECURITY: "/security",
@@ -190,6 +194,9 @@ export const DEFAULT_ROUTE_MAP = {
190
194
  SHIPPING_CONFIGS_EDIT: (id) => `/store/shipping-configs/${id}/edit`,
191
195
  ANALYTICS_CARDS: "/store/analytics/cards",
192
196
  ANALYTICS_ALERTS: "/store/analytics/alerts",
197
+ GROUPED_LISTINGS: "/store/grouped-listings",
198
+ GROUPED_LISTINGS_NEW: "/store/grouped-listings/new",
199
+ GROUPED_LISTINGS_EDIT: (id) => `/store/grouped-listings/${id}/edit`,
193
200
  STORE_CATEGORIES: "/store/categories",
194
201
  STORE_CATEGORIES_NEW: "/store/categories/new",
195
202
  STORE_CATEGORIES_EDIT: (id) => `/store/categories/${id}/edit`,
@@ -197,6 +204,13 @@ export const DEFAULT_ROUTE_MAP = {
197
204
  LISTING_TEMPLATES_NEW: "/store/listing-templates/new",
198
205
  LISTING_TEMPLATES_EDIT: (id) => `/store/listing-templates/${id}/edit`,
199
206
  GOOGLE_REVIEWS: "/store/google-reviews",
207
+ // GD1–GD6 — Store Guide Hub + sub-pages
208
+ GUIDE: "/store/guide",
209
+ GUIDE_LISTINGS: "/store/guide/listings",
210
+ GUIDE_ORDERS: "/store/guide/orders",
211
+ GUIDE_FINANCE: "/store/guide/finance",
212
+ GUIDE_CAPABILITIES: "/store/guide/capabilities",
213
+ GUIDE_SETTINGS: "/store/guide/settings",
200
214
  },
201
215
  ADMIN: {
202
216
  DASHBOARD: "/admin/dashboard",
@@ -292,6 +306,17 @@ export const DEFAULT_ROUTE_MAP = {
292
306
  ROLES_EDIT: (id) => `/admin/roles/${id}/edit`,
293
307
  PERMISSIONS: "/admin/permissions",
294
308
  ADMIN_NOTIFICATIONS: "/admin/admin-notifications",
309
+ // GD13–GD22 — Admin Guide Hub + sub-pages
310
+ GUIDE: "/admin/guide",
311
+ GUIDE_USERS: "/admin/guide/users",
312
+ GUIDE_CATALOG: "/admin/guide/catalog",
313
+ GUIDE_STORES: "/admin/guide/stores",
314
+ GUIDE_ORDERS: "/admin/guide/orders",
315
+ GUIDE_CONTENT: "/admin/guide/content",
316
+ GUIDE_SITE: "/admin/guide/site",
317
+ GUIDE_TEAM: "/admin/guide/team",
318
+ GUIDE_ANALYTICS: "/admin/guide/analytics",
319
+ GUIDE_TRUST: "/admin/guide/trust",
295
320
  },
296
321
  DEMO: {
297
322
  SEED: "/demo/seed",
@@ -0,0 +1,93 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { expandFilterAliases } from "../filter-aliases";
3
+ describe("expandFilterAliases", () => {
4
+ it("returns undefined when filters is undefined", () => {
5
+ const aliases = { scope: () => "status==active" };
6
+ expect(expandFilterAliases(undefined, aliases)).toBeUndefined();
7
+ });
8
+ it("returns filters unchanged when aliases is undefined", () => {
9
+ expect(expandFilterAliases("status==active", undefined)).toBe("status==active");
10
+ });
11
+ it("returns filters unchanged when aliases is empty object", () => {
12
+ expect(expandFilterAliases("status==active", {})).toBe("status==active");
13
+ });
14
+ it("expands a single alias clause", () => {
15
+ const aliases = {
16
+ scope: (value) => value === "publicAuctions" ? "status==published,listingType==auction" : "",
17
+ };
18
+ expect(expandFilterAliases("scope==publicAuctions", aliases)).toBe("status==published,listingType==auction");
19
+ });
20
+ it("passes the operator to the alias function", () => {
21
+ const received = [];
22
+ const aliases = {
23
+ myField: (value, op) => {
24
+ received.push({ value, op });
25
+ return "x==1";
26
+ },
27
+ };
28
+ expandFilterAliases("myField!=foo", aliases);
29
+ expect(received).toEqual([{ value: "foo", op: "!=" }]);
30
+ });
31
+ it("expands an alias and passes through unknown clauses", () => {
32
+ const aliases = {
33
+ scope: () => "status==published,listingType==auction",
34
+ };
35
+ const result = expandFilterAliases("scope==publicAuctions,storeId==store-abc", aliases);
36
+ expect(result).toBe("status==published,listingType==auction,storeId==store-abc");
37
+ });
38
+ it("passes through a clause whose field has no alias", () => {
39
+ const aliases = { scope: () => "status==active" };
40
+ expect(expandFilterAliases("category==brand-pokemon", aliases)).toBe("category==brand-pokemon");
41
+ });
42
+ it("drops a clause when the alias returns empty string", () => {
43
+ const aliases = {
44
+ scope: () => "",
45
+ };
46
+ expect(expandFilterAliases("scope==unknown", aliases)).toBe("");
47
+ });
48
+ it("drops an empty-expansion clause while keeping other clauses", () => {
49
+ const aliases = {
50
+ scope: (value) => (value === "known" ? "status==active" : ""),
51
+ };
52
+ const result = expandFilterAliases("scope==notknown,listingType==standard", aliases);
53
+ expect(result).toBe("listingType==standard");
54
+ });
55
+ it("handles multiple alias fields in one filter string", () => {
56
+ const aliases = {
57
+ scope: () => "status==active",
58
+ type: () => "listingType==auction",
59
+ };
60
+ const result = expandFilterAliases("scope==any,type==any", aliases);
61
+ expect(result).toBe("status==active,listingType==auction");
62
+ });
63
+ it("trims whitespace around clauses", () => {
64
+ const aliases = { scope: () => "status==active" };
65
+ const result = expandFilterAliases(" scope==x , name==foo ", aliases);
66
+ expect(result).toBe("status==active,name==foo");
67
+ });
68
+ it("passes through a clause that does not match the operator pattern", () => {
69
+ const aliases = { scope: () => "status==active" };
70
+ // A malformed clause has no operator — should pass through unchanged
71
+ expect(expandFilterAliases("malformed", aliases)).toBe("malformed");
72
+ });
73
+ it("handles @= operator", () => {
74
+ const received = [];
75
+ const aliases = {
76
+ tags: (_v, op) => { received.push(op); return "tags@=value"; },
77
+ };
78
+ expandFilterAliases("tags@=value", aliases);
79
+ expect(received[0]).toBe("@=");
80
+ });
81
+ it("handles @=* operator", () => {
82
+ const received = [];
83
+ const aliases = {
84
+ tags: (_v, op) => { received.push(op); return "tags@=*value"; },
85
+ };
86
+ expandFilterAliases("tags@=*value", aliases);
87
+ expect(received[0]).toBe("@=*");
88
+ });
89
+ it("returns empty string when all clauses expand to empty", () => {
90
+ const aliases = { scope: () => "" };
91
+ expect(expandFilterAliases("scope==x", aliases)).toBe("");
92
+ });
93
+ });
@@ -16,6 +16,55 @@
16
16
  * }, { baseQuery });
17
17
  * }
18
18
  * ```
19
+ *
20
+ * ## Known Sieve ↔ Firestore incompatibilities
21
+ *
22
+ * These Sieve DSL features are silently unsupported or produce wrong results
23
+ * when translated to Firestore queries. Document them here to avoid surprise.
24
+ *
25
+ * ### 1. String-contains `@=*` (case-insensitive full-text)
26
+ * Sieve's `title@=*query` is a substring/CI match. Firestore has no native
27
+ * LIKE or ILIKE operator. The Firebase adapter maps it to `>=` / `<` prefix
28
+ * range tricks that only work for prefix matches on ASCII strings, not
29
+ * arbitrary substrings. Use a Firebase Function or in-memory post-filter for
30
+ * real substring search; never rely on `@=*` to match mid-string.
31
+ *
32
+ * ### 2. OR across different fields (`|` pipe between clauses)
33
+ * Sieve's `field1==v1|field2==v2` (OR across two different fields) is
34
+ * translated to `whereOr` by the stock Firebase adapter. Firestore's Admin SDK
35
+ * v6+ supports `Query.where(Filter.or(...))`, but the stock adapter version
36
+ * bundled with sievejs may emit an unsupported form. The enhanced adapter in
37
+ * this file only upgrades single-field OR groups (same-field equality → `in`
38
+ * query). Multi-field OR is still unsupported — apply it in memory.
39
+ *
40
+ * ### 3. OR on the same field (`field==v1|v2`) → Firestore `in`
41
+ * The custom `createEnhancedFirebaseAdapter` in this file upgrades these to
42
+ * Firestore `.where(field, "in", [v1, v2])`. Firestore supports up to 30
43
+ * values in an `in` clause. More than 30 values will throw. The stock adapter
44
+ * would have emitted a `whereOr` call that fails entirely.
45
+ *
46
+ * ### 4. Multi-field `orderBy` without a matching composite index
47
+ * Firestore requires a composite index for every combination of `where` +
48
+ * `orderBy` fields. Sieve sorts like `-createdAt,price` translate to two
49
+ * `orderBy` calls; if the Firestore collection has no index for that
50
+ * combination the query throws `FAILED_PRECONDITION`. Add the index to
51
+ * `appkit/firebase/base/firestore.indexes.json` and deploy before shipping.
52
+ *
53
+ * ### 5. Inequality filter + `orderBy` on a different field
54
+ * Firestore's rule: if you have an inequality filter (`!=`, `<`, `>`, `<=`,
55
+ * `>=`) on field A, the first `orderBy` must also be on field A. Sieve queries
56
+ * like `price>=100 & sorts=-createdAt` translate to an inequality on `price`
57
+ * with `orderBy createdAt`, which Firestore rejects. Work-arounds:
58
+ * (a) move the inequality filter to the Firebase Function path where it can
59
+ * be handled server-side, (b) apply it in-memory in the fallback path,
60
+ * (c) restructure the sort to use the same field as the filter.
61
+ *
62
+ * ### 6. Dot-notation nested field filters (`address.city==Delhi`)
63
+ * Sieve parses the field name verbatim; the Firebase adapter passes it as the
64
+ * Firestore field path. Firestore Admin SDK supports dot-notation for nested
65
+ * fields, so `address.city==Delhi` works — but only if the field is indexed.
66
+ * Add nested-field indexes explicitly; Firestore does not auto-index nested
67
+ * paths in composite indexes declared at the root level.
19
68
  */
20
69
  import type { CollectionReference, DocumentData, Query } from "firebase-admin/firestore";
21
70
  import { FirebaseRepository } from "./base";