@mohasinac/appkit 4.11.2 → 4.11.3

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 (165) hide show
  1. package/dist/_internal/server/features/checkout/actions.d.ts +4 -0
  2. package/dist/_internal/server/features/checkout/actions.js +111 -4
  3. package/dist/_internal/server/features/checkout/data.d.ts +10 -0
  4. package/dist/_internal/server/features/orders/adapters.js +7 -0
  5. package/dist/_internal/server/features/products/data.d.ts +12 -3
  6. package/dist/_internal/server/features/products/data.js +55 -4
  7. package/dist/_internal/server/features/products/index.d.ts +1 -1
  8. package/dist/_internal/server/features/products/index.js +1 -1
  9. package/dist/_internal/server/features/products/list-public.d.ts +19 -0
  10. package/dist/_internal/server/features/products/list-public.js +39 -6
  11. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  12. package/dist/_internal/server/features/reviews/data.js +3 -2
  13. package/dist/_internal/server/features/tester/visibility.js +3 -3
  14. package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +1 -1
  15. package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +4 -1
  16. package/dist/_internal/server/jobs/core/testerSandboxRefresh.js +2 -0
  17. package/dist/_internal/server/jobs/handlers/_helpers.js +4 -1
  18. package/dist/_internal/shared/features/promotions/schema.d.ts +0 -16
  19. package/dist/_internal/shared/features/promotions/schema.js +0 -2
  20. package/dist/_internal/shared/features/reviews/config.d.ts +8 -1
  21. package/dist/_internal/shared/features/reviews/config.js +8 -1
  22. package/dist/_internal/shared/listing-types/_registry.d.ts +88 -1
  23. package/dist/_internal/shared/listing-types/_registry.js +63 -1
  24. package/dist/_internal/shared/listing-types/art/config.d.ts +59 -0
  25. package/dist/_internal/shared/listing-types/art/config.js +12 -0
  26. package/dist/_internal/shared/listing-types/auction/config.d.ts +53 -0
  27. package/dist/_internal/shared/listing-types/auction/config.js +17 -0
  28. package/dist/_internal/shared/listing-types/classified/config.d.ts +59 -0
  29. package/dist/_internal/shared/listing-types/classified/config.js +14 -0
  30. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +59 -0
  31. package/dist/_internal/shared/listing-types/digital-code/config.js +12 -0
  32. package/dist/_internal/shared/listing-types/live/config.d.ts +59 -0
  33. package/dist/_internal/shared/listing-types/live/config.js +14 -0
  34. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +110 -0
  35. package/dist/_internal/shared/listing-types/pre-order/config.js +14 -0
  36. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +44 -0
  37. package/dist/_internal/shared/listing-types/prize-draw/config.js +10 -0
  38. package/dist/_internal/shared/listing-types/standard/config.d.ts +59 -0
  39. package/dist/_internal/shared/listing-types/standard/config.js +9 -0
  40. package/dist/_internal/shared/listing-types/stickers/config.d.ts +59 -0
  41. package/dist/_internal/shared/listing-types/stickers/config.js +12 -0
  42. package/dist/client.d.ts +5 -1
  43. package/dist/client.js +4 -1
  44. package/dist/constants/field-names.d.ts +12 -0
  45. package/dist/constants/field-names.js +12 -0
  46. package/dist/constants/table-keys.d.ts +2 -0
  47. package/dist/constants/table-keys.js +2 -0
  48. package/dist/features/account/components/UserOrdersView.js +27 -5
  49. package/dist/features/admin/components/AdminAddressesView.js +3 -1
  50. package/dist/features/admin/components/AdminCouponEditorView.js +1 -4
  51. package/dist/features/admin/components/AdminPaymentMethodsView.js +3 -1
  52. package/dist/features/admin/components/AdminProductsView.js +34 -18
  53. package/dist/features/admin/constants/filter-tabs.d.ts +26 -9
  54. package/dist/features/admin/constants/filter-tabs.js +22 -9
  55. package/dist/features/auctions/components/AuctionBidsTable.js +1 -1
  56. package/dist/features/auctions/components/AuctionBottomActions.js +1 -0
  57. package/dist/features/auctions/components/AuctionDetailPageView.js +13 -11
  58. package/dist/features/cart/schemas/firestore.d.ts +0 -2
  59. package/dist/features/categories/components/BrandDetailTabs.js +31 -11
  60. package/dist/features/categories/components/CategoryDetailTabs.js +27 -7
  61. package/dist/features/categories/components/CategoryProductsListing.d.ts +9 -1
  62. package/dist/features/categories/components/CategoryProductsListing.js +5 -2
  63. package/dist/features/classified/components/ClassifiedDetailPageView.js +2 -1
  64. package/dist/features/contact/email.js +5 -1
  65. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +17 -16
  66. package/dist/features/homepage/components/FeaturedResultsSection.js +1 -1
  67. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  68. package/dist/features/homepage/components/ShopByCategorySection.js +1 -1
  69. package/dist/features/layout/AppLayoutShell.js +9 -2
  70. package/dist/features/layout/BottomActions.js +26 -3
  71. package/dist/features/layout/BottomActionsContext.d.ts +14 -0
  72. package/dist/features/layout/BottomActionsContext.js +13 -1
  73. package/dist/features/layout/hooks/useBottomActions.d.ts +6 -1
  74. package/dist/features/layout/hooks/useBottomActions.js +4 -1
  75. package/dist/features/layout/index.d.ts +1 -1
  76. package/dist/features/live/components/LiveItemDetailPageView.js +7 -6
  77. package/dist/features/orders/repository/orders.repository.d.ts +4 -0
  78. package/dist/features/orders/repository/orders.repository.js +4 -0
  79. package/dist/features/orders/types/index.d.ts +16 -0
  80. package/dist/features/pre-orders/components/PreOrderBottomActions.d.ts +1 -1
  81. package/dist/features/pre-orders/components/PreOrderBottomActions.js +3 -19
  82. package/dist/features/products/components/AuctionsIndexListing.js +1 -2
  83. package/dist/features/products/components/ListingBottomActions.d.ts +28 -0
  84. package/dist/features/products/components/ListingBottomActions.js +25 -0
  85. package/dist/features/products/components/PrizeDrawBottomActions.d.ts +1 -1
  86. package/dist/features/products/components/PrizeDrawBottomActions.js +3 -21
  87. package/dist/features/products/components/ProductDetailActions.js +4 -0
  88. package/dist/features/products/components/ProductDetailPageView.js +7 -7
  89. package/dist/features/products/constants/listing-tabs.d.ts +43 -198
  90. package/dist/features/products/constants/listing-tabs.js +71 -58
  91. package/dist/features/products/constants/sieve.d.ts +104 -1
  92. package/dist/features/products/constants/sieve.js +27 -7
  93. package/dist/features/products/repository/products.repository.d.ts +45 -1
  94. package/dist/features/products/repository/products.repository.js +26 -3
  95. package/dist/features/products/utils/listing-badge-variant.d.ts +20 -1
  96. package/dist/features/products/utils/listing-badge-variant.js +26 -1
  97. package/dist/features/products/utils/listing-type.d.ts +24 -0
  98. package/dist/features/products/utils/listing-type.js +48 -0
  99. package/dist/features/promotions/actions/coupon-actions.d.ts +7 -0
  100. package/dist/features/promotions/actions/coupon-actions.js +12 -1
  101. package/dist/features/promotions/actions/coupon-stacking.d.ts +24 -0
  102. package/dist/features/promotions/actions/coupon-stacking.js +21 -0
  103. package/dist/features/promotions/actions/index.d.ts +1 -0
  104. package/dist/features/promotions/actions/index.js +1 -0
  105. package/dist/features/promotions/actions/seller-coupon-actions.d.ts +0 -1
  106. package/dist/features/promotions/actions/seller-coupon-actions.js +0 -1
  107. package/dist/features/promotions/components/CouponHelpDetails.d.ts +20 -0
  108. package/dist/features/promotions/components/CouponHelpDetails.js +17 -0
  109. package/dist/features/promotions/components/CouponsIndexListing.js +2 -1
  110. package/dist/features/promotions/components/index.d.ts +2 -0
  111. package/dist/features/promotions/components/index.js +1 -0
  112. package/dist/features/promotions/constants/coupon-help.d.ts +27 -0
  113. package/dist/features/promotions/constants/coupon-help.js +42 -0
  114. package/dist/features/promotions/repository/coupons.repository.d.ts +10 -1
  115. package/dist/features/promotions/repository/coupons.repository.js +22 -8
  116. package/dist/features/promotions/schemas/firestore.d.ts +0 -1
  117. package/dist/features/promotions/schemas/firestore.js +1 -1
  118. package/dist/features/promotions/schemas/index.d.ts +0 -20
  119. package/dist/features/promotions/schemas/index.js +0 -1
  120. package/dist/features/reviews/actions/review-actions.js +5 -1
  121. package/dist/features/reviews/components/ReviewDetailPageView.js +2 -1
  122. package/dist/features/reviews/components/ReviewFilters.d.ts +7 -1
  123. package/dist/features/reviews/components/ReviewFilters.js +4 -3
  124. package/dist/features/reviews/components/ReviewsIndexListing.d.ts +6 -0
  125. package/dist/features/reviews/components/ReviewsIndexListing.js +9 -109
  126. package/dist/features/reviews/components/ReviewsListingPanel.d.ts +41 -0
  127. package/dist/features/reviews/components/ReviewsListingPanel.js +226 -0
  128. package/dist/features/reviews/components/index.d.ts +2 -0
  129. package/dist/features/reviews/components/index.js +1 -0
  130. package/dist/features/reviews/hooks/useReviews.d.ts +8 -0
  131. package/dist/features/reviews/hooks/useReviews.js +14 -6
  132. package/dist/features/reviews/repository/reviews.repository.d.ts +29 -1
  133. package/dist/features/reviews/repository/reviews.repository.js +77 -41
  134. package/dist/features/reviews/types/index.d.ts +8 -1
  135. package/dist/features/seller/components/SellerProductsCards.js +2 -2
  136. package/dist/features/seller/components/SellerProductsView.js +21 -18
  137. package/dist/features/stores/actions/store-query-actions.js +1 -1
  138. package/dist/features/stores/components/StoreAuctionsListing.js +5 -11
  139. package/dist/features/stores/components/StorePreOrdersListing.js +6 -11
  140. package/dist/features/stores/components/StoreReviewsListing.d.ts +4 -0
  141. package/dist/features/stores/components/StoreReviewsListing.js +7 -108
  142. package/dist/features/stores/schemas/index.d.ts +2 -2
  143. package/dist/features/tester/seed-data/coupons-tester-seed-data.js +3 -3
  144. package/dist/features/tester/seed-data/index.d.ts +1 -0
  145. package/dist/features/tester/seed-data/index.js +1 -0
  146. package/dist/features/tester/seed-data/offers-tester-seed-data.d.ts +2 -0
  147. package/dist/features/tester/seed-data/offers-tester-seed-data.js +61 -0
  148. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +337 -1
  149. package/dist/index.d.ts +9 -3
  150. package/dist/index.js +11 -2
  151. package/dist/react/hooks/useListingTypeFlags.d.ts +12 -19
  152. package/dist/react/hooks/useListingTypeFlags.js +4 -9
  153. package/dist/schemas/registry.d.ts +0 -12
  154. package/dist/seed/claimed-coupons-seed-data.js +3 -3
  155. package/dist/seed/coupons-seed-data.js +29 -10
  156. package/dist/seed/faq-seed-data.js +2 -2
  157. package/dist/seed/manifest.js +2 -2
  158. package/dist/styles.css +44 -39
  159. package/dist/tailwind-utilities.css +1 -1
  160. package/dist/ui/components/FilterChipGroup.d.ts +21 -3
  161. package/dist/ui/components/FilterChipGroup.js +33 -4
  162. package/dist/ui/components/HorizontalScroller.d.ts +1 -2
  163. package/dist/ui/components/HorizontalScroller.js +9 -5
  164. package/dist/ui/components/HorizontalScroller.style.css +43 -38
  165. package/package.json +1 -1
@@ -30,7 +30,7 @@ export const claimedCouponsSeedData = [
30
30
  type: "percentage",
31
31
  scope: "admin",
32
32
  discount: { value: 10, maxDiscount: 500, minPurchase: 999 },
33
- restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: false },
33
+ restrictions: { firstTimeUserOnly: true },
34
34
  },
35
35
  status: "active",
36
36
  expiresAt: daysAhead(14),
@@ -51,7 +51,7 @@ export const claimedCouponsSeedData = [
51
51
  type: "fixed",
52
52
  scope: "admin",
53
53
  discount: { value: 500, minPurchase: 5000 },
54
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
54
+ restrictions: { firstTimeUserOnly: false },
55
55
  },
56
56
  status: "expired",
57
57
  expiresAt: daysAgo(5),
@@ -72,7 +72,7 @@ export const claimedCouponsSeedData = [
72
72
  type: "free_shipping",
73
73
  scope: "admin",
74
74
  discount: { value: 0, minPurchase: 499 },
75
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
75
+ restrictions: { firstTimeUserOnly: false },
76
76
  },
77
77
  status: "used",
78
78
  expiresAt: daysAhead(60),
@@ -28,7 +28,7 @@ export const couponsSeedData = [
28
28
  discount: { value: 10, maxDiscount: 200, minPurchase: 500 },
29
29
  usage: { totalLimit: undefined, perUserLimit: 1, currentUsage: 312 },
30
30
  validity: { startDate: daysAgo(90), endDate: daysAhead(180), isActive: true },
31
- restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: true },
31
+ restrictions: { firstTimeUserOnly: true },
32
32
  createdBy: "user-admin-letitrip",
33
33
  createdAt: daysAgo(90),
34
34
  updatedAt: daysAgo(5),
@@ -44,7 +44,7 @@ export const couponsSeedData = [
44
44
  discount: { value: 500, maxDiscount: 500, minPurchase: 2000 },
45
45
  usage: { totalLimit: 500, perUserLimit: 2, currentUsage: 187 },
46
46
  validity: { startDate: daysAgo(30), endDate: daysAhead(60), isActive: true },
47
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
47
+ restrictions: { firstTimeUserOnly: false },
48
48
  createdBy: "user-admin-letitrip",
49
49
  createdAt: daysAgo(30),
50
50
  updatedAt: daysAgo(3),
@@ -60,7 +60,7 @@ export const couponsSeedData = [
60
60
  discount: { value: 0, maxDiscount: 0, minPurchase: 499 },
61
61
  usage: { totalLimit: undefined, perUserLimit: 5, currentUsage: 1024 },
62
62
  validity: { startDate: daysAgo(60), endDate: daysAhead(120), isActive: true },
63
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
63
+ restrictions: { firstTimeUserOnly: false },
64
64
  createdBy: "user-admin-letitrip",
65
65
  createdAt: daysAgo(60),
66
66
  updatedAt: daysAgo(1),
@@ -76,7 +76,7 @@ export const couponsSeedData = [
76
76
  discount: { value: 20, maxDiscount: 400, minPurchase: 1000 },
77
77
  usage: { totalLimit: undefined, perUserLimit: 1, currentUsage: 89 },
78
78
  validity: { startDate: daysAgo(14), endDate: daysAhead(90), isActive: true },
79
- restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: false },
79
+ restrictions: { firstTimeUserOnly: true },
80
80
  createdBy: "user-admin-letitrip",
81
81
  createdAt: daysAgo(14),
82
82
  updatedAt: daysAgo(2),
@@ -92,7 +92,7 @@ export const couponsSeedData = [
92
92
  discount: { value: 200, maxDiscount: 200, minPurchase: 1000 },
93
93
  usage: { totalLimit: 1000, perUserLimit: 3, currentUsage: 456 },
94
94
  validity: { startDate: daysAgo(45), endDate: daysAhead(45), isActive: true },
95
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
95
+ restrictions: { firstTimeUserOnly: false },
96
96
  createdBy: "user-admin-letitrip",
97
97
  createdAt: daysAgo(45),
98
98
  updatedAt: daysAgo(1),
@@ -110,7 +110,7 @@ export const couponsSeedData = [
110
110
  discount: { value: 25, maxDiscount: 500, minPurchase: 1000 },
111
111
  usage: { totalLimit: 200, perUserLimit: 2, currentUsage: 67 },
112
112
  validity: { startDate: daysAgo(20), endDate: daysAhead(40), isActive: true },
113
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: false },
113
+ restrictions: { firstTimeUserOnly: false },
114
114
  createdBy: "user-tyson-blader",
115
115
  createdAt: daysAgo(20),
116
116
  updatedAt: daysAgo(4),
@@ -130,7 +130,6 @@ export const couponsSeedData = [
130
130
  restrictions: {
131
131
  applicableCategories: ["category-beyblade-original", "category-beyblade-metal"],
132
132
  firstTimeUserOnly: false,
133
- combineWithSellerCoupons: false,
134
133
  },
135
134
  createdBy: "user-tyson-blader",
136
135
  createdAt: daysAgo(10),
@@ -153,7 +152,7 @@ export const couponsSeedData = [
153
152
  },
154
153
  usage: { totalLimit: 100, perUserLimit: 3, currentUsage: 34 },
155
154
  validity: { startDate: daysAgo(15), endDate: daysAhead(45), isActive: true },
156
- restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: false },
155
+ restrictions: { firstTimeUserOnly: false },
157
156
  createdBy: "user-tyson-blader",
158
157
  createdAt: daysAgo(15),
159
158
  updatedAt: daysAgo(2),
@@ -173,7 +172,6 @@ export const couponsSeedData = [
173
172
  restrictions: {
174
173
  applicableCategories: ["category-beyblade-burst", "category-beyblade-x"],
175
174
  firstTimeUserOnly: false,
176
- combineWithSellerCoupons: false,
177
175
  },
178
176
  createdBy: "user-tyson-blader",
179
177
  createdAt: daysAgo(7),
@@ -194,11 +192,32 @@ export const couponsSeedData = [
194
192
  restrictions: {
195
193
  applicableCategories: ["bundle-original-collectors-set", "bundle-metal-fusion-duo", "bundle-burst-battlers-pack", "bundle-x-series-starter"],
196
194
  firstTimeUserOnly: false,
197
- combineWithSellerCoupons: false,
198
195
  },
199
196
  createdBy: "user-tyson-blader",
200
197
  createdAt: daysAgo(5),
201
198
  updatedAt: daysAgo(1),
202
199
  stats: { totalUses: 19, totalRevenue: 95000, totalDiscount: 11400 },
203
200
  },
201
+ // ── Seller coupon (LetItRip Official) ──────────────────────────────────────
202
+ // Deliberately on a SECOND store: every other seller coupon above belongs to
203
+ // store-beyblade-arena, so without this one the "one coupon per store, plus
204
+ // one platform-wide coupon" stacking rule could never be demonstrated on a
205
+ // real multi-store cart.
206
+ {
207
+ id: "coupon-official10",
208
+ code: "OFFICIAL10",
209
+ name: "LetItRip Official — 10% Off",
210
+ description: "10% off anything from the LetItRip Official store. Stacks with other stores' coupons and with a platform-wide coupon.",
211
+ type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
212
+ scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
213
+ storeId: "store-letitrip-official",
214
+ discount: { value: 10, maxDiscount: 300, minPurchase: 500 },
215
+ usage: { totalLimit: 300, perUserLimit: 2, currentUsage: 41 },
216
+ validity: { startDate: daysAgo(15), endDate: daysAhead(45), isActive: true },
217
+ restrictions: { firstTimeUserOnly: false },
218
+ createdBy: "user-admin-letitrip",
219
+ createdAt: daysAgo(15),
220
+ updatedAt: daysAgo(2),
221
+ stats: { totalUses: 41, totalRevenue: 205000, totalDiscount: 20500 },
222
+ },
204
223
  ];
@@ -256,7 +256,7 @@ export const faqSeedData = [
256
256
  {
257
257
  id: "faq-free-shipping-available",
258
258
  question: "Is free shipping available?",
259
- answer: html(`<p>Many sellers offer free shipping on orders above a certain amount. Look for the "Free Shipping" badge on product listings. You can also use the FREESHIP999 coupon for free shipping on orders ₹999+.</p>`),
259
+ answer: html(`<p>Many sellers offer free shipping on orders above a certain amount. Look for the "Free Shipping" badge on product listings. You can also use the FREESHIP499 coupon for free shipping on orders ₹499+.</p>`),
260
260
  category: "shipping_delivery",
261
261
  showOnHomepage: true,
262
262
  showInFooter: false,
@@ -543,7 +543,7 @@ export const faqSeedData = [
543
543
  {
544
544
  id: "faq-coupons-and-discounts",
545
545
  question: "How do I use coupons and discount codes?",
546
- answer: html(`<p>Enter your coupon code at checkout in the "Apply Coupon" field. Coupons may be platform-wide (from LetItRip) or store-specific (from individual sellers). Some coupons have minimum order requirements, expiry dates, or per-user limits. You cannot stack multiple coupons on a single order unless the coupon explicitly allows it.</p>`),
546
+ answer: html(`<p>Enter your coupon code at checkout in the "Apply Coupon" field. Coupons are either <strong>store coupons</strong> (issued by an individual seller) or <strong>platform-wide coupons</strong> (issued by LetItRip).</p><p><strong>Coupons stack.</strong> You can apply <strong>one coupon per store</strong> — so a cart with items from three stores can carry all three of those stores' coupons at once — <strong>plus one platform-wide coupon</strong> on top. A second coupon for the same store, or a second platform-wide coupon, is declined; remove the first one to swap it.</p><p>A store coupon only discounts that store's items. A platform-wide coupon is spread proportionally across every store in your cart. Because orders are placed per store, each store's order shows its own share of the discount.</p><p>Coupons may also have a minimum order value (measured against the items the coupon actually covers, not your whole cart), an expiry date, a per-user limit, or a total limit across all buyers. Coupons are re-checked when you place the order if one expired or ran out while it sat in your cart, it is removed and your total is recalculated before payment.</p>`),
547
547
  category: "orders_payment",
548
548
  showOnHomepage: false,
549
549
  showInFooter: false,
@@ -51,7 +51,7 @@ import { offersSeedData } from "./offers-seed-data";
51
51
  import { couponUsageSeedData } from "./coupon-usage-seed-data";
52
52
  import { claimedCouponsSeedData } from "./claimed-coupons-seed-data";
53
53
  // Tester sandbox seed fixtures live in ../features/tester/seed-data (isolated on purpose).
54
- import { testerChecklistSeedData, storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData, blogTesterSeedData, eventsTesterSeedData, couponsTesterSeedData, bidsTesterSeedData, ordersTesterSeedData, } from "../features/tester/seed-data";
54
+ import { testerChecklistSeedData, storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData, blogTesterSeedData, eventsTesterSeedData, couponsTesterSeedData, bidsTesterSeedData, ordersTesterSeedData, offersTesterSeedData, } from "../features/tester/seed-data";
55
55
  function asArr(items) {
56
56
  return items ?? [];
57
57
  }
@@ -199,7 +199,7 @@ export const SEED_MANIFEST = {
199
199
  ...f,
200
200
  name: f.label ?? f.id,
201
201
  }))),
202
- offers: pick(asArr(offersSeedData).map((o) => ({
202
+ offers: pick([...asArr(offersSeedData), ...asArr(offersTesterSeedData)].map((o) => ({
203
203
  ...o,
204
204
  name: o.productTitle ?? o.id,
205
205
  }))),