@mohasinac/appkit 3.8.1 → 3.9.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 (485) hide show
  1. package/dist/_internal/client/features/live/LiveItemDetailView.js +2 -2
  2. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +4 -4
  3. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +8 -8
  4. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.d.ts +1 -1
  5. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.js +2 -2
  6. package/dist/_internal/server/features/bundles/actions.js +2 -2
  7. package/dist/_internal/server/features/bundles/og.d.ts +1 -1
  8. package/dist/_internal/server/features/bundles/og.js +4 -5
  9. package/dist/_internal/server/features/checkout/actions.js +57 -21
  10. package/dist/_internal/server/features/checkout/stock-restore.d.ts +19 -0
  11. package/dist/_internal/server/features/checkout/stock-restore.js +80 -0
  12. package/dist/_internal/server/features/checkout/upi-resolution.d.ts +11 -0
  13. package/dist/_internal/server/features/checkout/upi-resolution.js +28 -0
  14. package/dist/_internal/server/features/classified/og.js +1 -1
  15. package/dist/_internal/server/features/digital-code/og.js +1 -1
  16. package/dist/_internal/server/features/item-requests/og.d.ts +2 -2
  17. package/dist/_internal/server/features/item-requests/og.js +4 -5
  18. package/dist/_internal/server/features/live/og.js +1 -1
  19. package/dist/_internal/server/features/lottery/adapters.d.ts +2 -2
  20. package/dist/_internal/server/features/lottery/adapters.js +1 -1
  21. package/dist/_internal/server/features/orders/actions.d.ts +28 -0
  22. package/dist/_internal/server/features/orders/actions.js +239 -4
  23. package/dist/_internal/server/features/orders/adapters.js +3 -0
  24. package/dist/_internal/server/features/payments/data.js +3 -2
  25. package/dist/_internal/server/features/payouts/actions.d.ts +2 -2
  26. package/dist/_internal/server/features/payouts/actions.js +4 -3
  27. package/dist/_internal/server/features/pre-orders/service.d.ts +1 -1
  28. package/dist/_internal/server/features/pre-orders/service.js +3 -2
  29. package/dist/_internal/server/features/prize-draws/og.js +5 -5
  30. package/dist/_internal/server/features/products/og.js +1 -1
  31. package/dist/_internal/server/features/promotions/service.js +3 -1
  32. package/dist/_internal/server/features/refunds/actions.d.ts +2 -2
  33. package/dist/_internal/server/features/refunds/actions.js +7 -6
  34. package/dist/_internal/server/functions/firestore.js +1 -1
  35. package/dist/_internal/server/functions/scheduled.d.ts +4 -1
  36. package/dist/_internal/server/functions/scheduled.js +26 -2
  37. package/dist/_internal/server/jobs/core/emiInstallmentReminder.js +1 -1
  38. package/dist/_internal/server/jobs/core/hardBanCascade.d.ts +4 -0
  39. package/dist/_internal/server/jobs/core/hardBanCascade.js +15 -4
  40. package/dist/_internal/server/jobs/core/hardBanReinstatement.d.ts +16 -0
  41. package/dist/_internal/server/jobs/core/hardBanReinstatement.js +63 -0
  42. package/dist/_internal/server/jobs/core/jobRunners.js +3 -1
  43. package/dist/_internal/server/jobs/core/onScamReportCreate.js +1 -1
  44. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.d.ts +10 -0
  45. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +60 -0
  46. package/dist/_internal/server/jobs/core/paymentWindowTimeout.d.ts +15 -0
  47. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +59 -0
  48. package/dist/_internal/server/jobs/core/pendingOrderTimeout.d.ts +7 -0
  49. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +32 -6
  50. package/dist/_internal/server/jobs/handlers/hardBanReinstatement.d.ts +2 -0
  51. package/dist/_internal/server/jobs/handlers/hardBanReinstatement.js +2 -0
  52. package/dist/_internal/server/jobs/handlers/index.d.ts +3 -0
  53. package/dist/_internal/server/jobs/handlers/index.js +3 -0
  54. package/dist/_internal/server/jobs/handlers/messages.d.ts +4 -0
  55. package/dist/_internal/server/jobs/handlers/messages.js +4 -0
  56. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.d.ts +3 -3
  57. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +12 -12
  58. package/dist/_internal/server/jobs/handlers/onShipmentItemWrite.d.ts +1 -1
  59. package/dist/_internal/server/jobs/handlers/onShipmentItemWrite.js +5 -5
  60. package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.d.ts +2 -0
  61. package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.js +2 -0
  62. package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.d.ts +2 -0
  63. package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.js +2 -0
  64. package/dist/_internal/shared/actions/action-registry.js +27 -0
  65. package/dist/_internal/shared/checkout/order-math.js +3 -2
  66. package/dist/_internal/shared/checkout/rules/_defaults.js +1 -0
  67. package/dist/_internal/shared/checkout/rules/preorder.rule.js +7 -0
  68. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +7 -0
  69. package/dist/_internal/shared/checkout/rules/types.d.ts +11 -0
  70. package/dist/_internal/shared/features/auctions/errors.js +1 -1
  71. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +0 -1
  72. package/dist/_internal/shared/features/categories/bundle-copy.js +0 -1
  73. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +6 -6
  74. package/dist/_internal/shared/features/categories/bundle-schemas.js +2 -2
  75. package/dist/_internal/shared/features/checkout/config.d.ts +3 -3
  76. package/dist/_internal/shared/features/checkout/config.js +3 -3
  77. package/dist/_internal/shared/features/emi/schedule.d.ts +6 -6
  78. package/dist/_internal/shared/features/emi/schedule.js +10 -9
  79. package/dist/_internal/shared/features/promotions/errors.js +1 -1
  80. package/dist/_internal/shared/fees/calculator.d.ts +5 -5
  81. package/dist/_internal/shared/fees/calculator.js +19 -19
  82. package/dist/client.d.ts +1 -1
  83. package/dist/client.js +1 -1
  84. package/dist/constants/api-endpoints.d.ts +9 -0
  85. package/dist/constants/api-endpoints.js +3 -0
  86. package/dist/constants/field-names.d.ts +4 -0
  87. package/dist/constants/field-names.js +4 -0
  88. package/dist/features/admin/components/AdminArtView.js +2 -2
  89. package/dist/features/admin/components/AdminBidsView.js +2 -2
  90. package/dist/features/admin/components/AdminBundleEditorView.d.ts +1 -1
  91. package/dist/features/admin/components/AdminBundleEditorView.js +8 -8
  92. package/dist/features/admin/components/AdminBundlesView.js +6 -6
  93. package/dist/features/admin/components/AdminClassifiedView.js +2 -2
  94. package/dist/features/admin/components/AdminDigitalCodesView.js +2 -2
  95. package/dist/features/admin/components/AdminLiveView.js +2 -2
  96. package/dist/features/admin/components/AdminOrderEditorView.d.ts +6 -1
  97. package/dist/features/admin/components/AdminOrderEditorView.js +45 -5
  98. package/dist/features/admin/components/AdminOrdersView.js +8 -3
  99. package/dist/features/admin/components/AdminPayoutsView.js +2 -2
  100. package/dist/features/admin/components/AdminPrizeDrawsView.js +2 -2
  101. package/dist/features/admin/components/AdminReturnRequestsView.js +2 -2
  102. package/dist/features/admin/components/AdminSiteSettingsView.js +11 -11
  103. package/dist/features/admin/components/AdminStickersView.js +2 -2
  104. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  105. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -1
  106. package/dist/features/admin/hooks/useAdminListingData.js +3 -2
  107. package/dist/features/admin/schemas/firestore.d.ts +9 -7
  108. package/dist/features/admin/schemas/firestore.js +4 -3
  109. package/dist/features/auctions/components/AuctionBidsTable.js +3 -3
  110. package/dist/features/auth/checkout-value-otp.d.ts +46 -0
  111. package/dist/features/auth/checkout-value-otp.js +73 -0
  112. package/dist/features/auth/repository/user.repository.d.ts +6 -0
  113. package/dist/features/auth/repository/user.repository.js +19 -0
  114. package/dist/features/auth/schemas/firestore.d.ts +10 -0
  115. package/dist/features/auth/schemas/firestore.js +2 -0
  116. package/dist/features/cart/actions/cart-actions.d.ts +1 -1
  117. package/dist/features/cart/actions/cart-actions.js +4 -4
  118. package/dist/features/cart/components/CartView.d.ts +2 -2
  119. package/dist/features/cart/components/ShippingPicker.d.ts +4 -4
  120. package/dist/features/cart/components/ShippingPicker.js +11 -11
  121. package/dist/features/cart/repository/cart.repository.d.ts +1 -1
  122. package/dist/features/cart/repository/cart.repository.js +2 -2
  123. package/dist/features/cart/schemas/firestore.d.ts +2 -2
  124. package/dist/features/catalogue/components/CatalogueItemEditorView.js +3 -3
  125. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -2
  126. package/dist/features/catalogue/schemas/validation.js +1 -1
  127. package/dist/features/categories/components/BundleCollage.js +2 -2
  128. package/dist/features/categories/components/BundleDetailView.js +2 -2
  129. package/dist/features/categories/components/BundleItemsPicker.d.ts +1 -1
  130. package/dist/features/categories/components/BundleItemsPicker.js +2 -2
  131. package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
  132. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  133. package/dist/features/categories/schemas/index.d.ts +3 -3
  134. package/dist/features/categories/schemas/index.js +2 -2
  135. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +16 -0
  136. package/dist/features/checkout/actions/checkout-value-otp-actions.js +83 -0
  137. package/dist/features/checkout/actions/index.d.ts +1 -0
  138. package/dist/features/checkout/actions/index.js +1 -0
  139. package/dist/features/checkout/schemas/firestore.d.ts +1 -1
  140. package/dist/features/classified/components/index.d.ts +0 -4
  141. package/dist/features/classified/components/index.js +0 -2
  142. package/dist/features/digital-codes/components/index.d.ts +0 -4
  143. package/dist/features/digital-codes/components/index.js +0 -2
  144. package/dist/features/events/schemas/index.d.ts +1 -1
  145. package/dist/features/events/schemas/index.js +1 -1
  146. package/dist/features/homepage/components/FeaturedBundlesSection.js +2 -2
  147. package/dist/features/live/components/index.d.ts +0 -4
  148. package/dist/features/live/components/index.js +0 -2
  149. package/dist/features/lottery/types/index.d.ts +3 -3
  150. package/dist/features/lottery/types/index.js +5 -5
  151. package/dist/features/orders/components/OrderPaymentSummary.js +2 -2
  152. package/dist/features/orders/components/OrderSiblingPayments.js +1 -1
  153. package/dist/features/orders/components/RefundHistoryTable.js +1 -1
  154. package/dist/features/orders/components/RefundRequestView.js +1 -1
  155. package/dist/features/orders/constants/payment-window.d.ts +10 -0
  156. package/dist/features/orders/constants/payment-window.js +10 -0
  157. package/dist/features/orders/repository/orders.repository.d.ts +25 -0
  158. package/dist/features/orders/repository/orders.repository.js +50 -1
  159. package/dist/features/orders/schemas/firestore.d.ts +50 -2
  160. package/dist/features/orders/schemas/index.d.ts +24 -24
  161. package/dist/features/orders/schemas/index.js +20 -20
  162. package/dist/features/orders/types/index.d.ts +4 -0
  163. package/dist/features/orders/utils/bundle-grouping.d.ts +1 -1
  164. package/dist/features/orders/utils/bundle-grouping.js +1 -1
  165. package/dist/features/payments/schemas/index.d.ts +10 -10
  166. package/dist/features/payments/schemas/index.js +9 -9
  167. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -2
  168. package/dist/features/products/components/ArtStickersListView.d.ts +7 -0
  169. package/dist/features/products/components/ArtStickersListView.js +57 -0
  170. package/dist/features/products/components/GroupSettingsPanel.js +1 -1
  171. package/dist/features/products/components/MakeOfferButton.js +3 -3
  172. package/dist/features/products/components/MarketplaceBundleCard.d.ts +1 -1
  173. package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
  174. package/dist/features/products/components/PrizeDrawCollage.js +2 -2
  175. package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
  176. package/dist/features/products/components/PrizeRevealModal.js +1 -1
  177. package/dist/features/products/components/ProductDetailPageView.js +2 -9
  178. package/dist/features/products/components/ProductForm.js +2 -2
  179. package/dist/features/products/components/ProductGrid.js +2 -2
  180. package/dist/features/products/components/ProductsIndexListing.d.ts +13 -1
  181. package/dist/features/products/components/ProductsIndexListing.js +7 -5
  182. package/dist/features/products/components/ProductsIndexPageView.js +6 -1
  183. package/dist/features/products/constants/listing-tabs.d.ts +42 -17
  184. package/dist/features/products/constants/listing-tabs.js +25 -6
  185. package/dist/features/products/schemas/catalog-product.d.ts +5 -5
  186. package/dist/features/products/schemas/catalog-product.js +1 -1
  187. package/dist/features/products/schemas/firestore.d.ts +5 -5
  188. package/dist/features/products/schemas/firestore.js +2 -2
  189. package/dist/features/products/types/index.d.ts +5 -2
  190. package/dist/features/promotions/components/CouponCard.js +2 -2
  191. package/dist/features/promotions/schemas/firestore.d.ts +2 -0
  192. package/dist/features/promotions/schemas/firestore.js +1 -0
  193. package/dist/features/promotions/schemas/index.d.ts +14 -14
  194. package/dist/features/promotions/schemas/index.js +6 -6
  195. package/dist/features/scams/components/ScamProfileView.js +3 -7
  196. package/dist/features/scams/components/ScamRegistryView.js +2 -6
  197. package/dist/features/scams/schemas/firestore.d.ts +1 -1
  198. package/dist/features/search/components/Search.d.ts +1 -1
  199. package/dist/features/seller/actions/offer-actions.js +1 -1
  200. package/dist/features/seller/components/PrintCenterView.js +2 -2
  201. package/dist/features/seller/components/QuickProductForm.js +5 -5
  202. package/dist/features/seller/components/SellerArtView.js +2 -2
  203. package/dist/features/seller/components/SellerAuctionsView.js +2 -2
  204. package/dist/features/seller/components/SellerBidsView.js +2 -2
  205. package/dist/features/seller/components/SellerBundlesView.js +6 -6
  206. package/dist/features/seller/components/SellerClassifiedView.js +2 -2
  207. package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
  208. package/dist/features/seller/components/SellerLiveView.js +2 -2
  209. package/dist/features/seller/components/SellerOffersView.js +2 -2
  210. package/dist/features/seller/components/SellerOrdersView.js +3 -3
  211. package/dist/features/seller/components/SellerPayoutRequestView.js +2 -2
  212. package/dist/features/seller/components/SellerPayoutSettingsView.js +2 -2
  213. package/dist/features/seller/components/SellerPayoutsView.js +2 -2
  214. package/dist/features/seller/components/SellerPreOrdersView.js +2 -2
  215. package/dist/features/seller/components/SellerPrizeDrawsView.js +2 -2
  216. package/dist/features/seller/components/SellerProductShell.js +8 -8
  217. package/dist/features/seller/components/SellerProductsView.js +1 -1
  218. package/dist/features/seller/components/SellerShippingView.js +6 -6
  219. package/dist/features/seller/components/SellerStickersView.js +2 -2
  220. package/dist/features/seller/hooks/useSellerListingData.d.ts +1 -1
  221. package/dist/features/seller/hooks/useSellerListingData.js +3 -2
  222. package/dist/features/shipments/components/AdminShipmentEditorView.js +10 -10
  223. package/dist/features/shipments/components/AdminShipmentLotItemsView.js +4 -4
  224. package/dist/features/shipments/components/AdminShipmentProjectionsView.js +5 -5
  225. package/dist/features/shipments/components/AdminShipmentsView.js +4 -4
  226. package/dist/features/shipments/repository/shipment-lots.repository.d.ts +2 -2
  227. package/dist/features/shipments/repository/shipment-lots.repository.js +8 -8
  228. package/dist/features/shipments/schemas/firestore.d.ts +21 -21
  229. package/dist/features/shipments/schemas/firestore.js +9 -9
  230. package/dist/features/shipments/schemas/validation.d.ts +30 -30
  231. package/dist/features/shipments/schemas/validation.js +6 -6
  232. package/dist/features/shipments/utils/cost-allocation.d.ts +5 -5
  233. package/dist/features/shipments/utils/cost-allocation.js +39 -38
  234. package/dist/features/store-extensions/schemas/firestore.d.ts +5 -5
  235. package/dist/features/stores/components/StoreDetailLayoutView.js +9 -13
  236. package/dist/features/stores/schemas/firestore.d.ts +7 -7
  237. package/dist/features/stores/schemas/index.d.ts +84 -84
  238. package/dist/features/stores/schemas/index.js +5 -5
  239. package/dist/features/tester/seed-data/categories-tester-seed-data.js +1 -1
  240. package/dist/features/tester/seed-data/products-tester-seed-data.js +6 -6
  241. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +9 -2
  242. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +8 -1
  243. package/dist/features/whatsapp-bot/helpers/whatsapp.js +13 -2
  244. package/dist/features/whatsapp-bot/types/index.d.ts +9 -1
  245. package/dist/index.d.ts +4 -7
  246. package/dist/index.js +9 -5
  247. package/dist/next/routing/route-map.d.ts +2 -0
  248. package/dist/next/routing/route-map.js +6 -0
  249. package/dist/schemas/firestore-helpers.d.ts +2 -2
  250. package/dist/schemas/firestore-helpers.js +2 -2
  251. package/dist/schemas/registry.d.ts +73 -73
  252. package/dist/security/index.d.ts +2 -1
  253. package/dist/security/index.js +5 -1
  254. package/dist/security/pii-encrypt.d.ts +2 -53
  255. package/dist/security/pii-encrypt.js +19 -100
  256. package/dist/security/pii-mask.d.ts +67 -0
  257. package/dist/security/pii-mask.js +100 -0
  258. package/dist/seed/bids-seed-data.js +6 -6
  259. package/dist/seed/blog-posts-seed-data.js +1 -0
  260. package/dist/seed/cart-seed-data.js +13 -13
  261. package/dist/seed/catalogue-seed-data.js +6 -6
  262. package/dist/seed/categories-seed-data.js +5 -5
  263. package/dist/seed/claimed-coupons-seed-data.js +3 -3
  264. package/dist/seed/coupons-seed-data.js +20 -20
  265. package/dist/seed/events-seed-data.js +27 -27
  266. package/dist/seed/factories/bid.factory.js +1 -1
  267. package/dist/seed/faq-seed-data.js +20 -1
  268. package/dist/seed/grouped-listings-seed-data.d.ts +2 -2
  269. package/dist/seed/grouped-listings-seed-data.js +3 -3
  270. package/dist/seed/offers-seed-data.js +19 -19
  271. package/dist/seed/orders-seed-data.js +29 -29
  272. package/dist/seed/payouts-seed-data.js +7 -7
  273. package/dist/seed/products-auctions-seed-data.js +6 -6
  274. package/dist/seed/products-preorders-seed-data.d.ts +2 -2
  275. package/dist/seed/products-preorders-seed-data.js +1 -1
  276. package/dist/seed/products-standard-seed-data.js +8 -8
  277. package/dist/seed/scammers-seed-data.js +2 -2
  278. package/dist/seed/shipments-seed-data.js +29 -29
  279. package/dist/seed/site-settings-seed-data.js +3 -2
  280. package/dist/seed/store-extensions-seed-data.js +8 -8
  281. package/dist/seed/stores-seed-data.js +37 -8
  282. package/dist/seed/users-seed-data.js +38 -1
  283. package/dist/server-entry.d.ts +1 -3
  284. package/dist/server-entry.js +1 -3
  285. package/dist/server.d.ts +2 -1
  286. package/dist/server.js +3 -1
  287. package/dist/ui/components/PriceDisplay.js +3 -12
  288. package/dist/utils/number.formatter.d.ts +2 -7
  289. package/dist/utils/number.formatter.js +3 -8
  290. package/package.json +1 -1
  291. package/scripts/seed-cli.mjs +17 -3
  292. package/dist/_internal/client/scaffolds/DashboardScaffold.d.ts +0 -34
  293. package/dist/_internal/client/scaffolds/DashboardScaffold.js +0 -26
  294. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.d.ts +0 -1
  295. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.js +0 -109
  296. package/dist/_internal/server/features/auctions/__tests__/service.test.d.ts +0 -1
  297. package/dist/_internal/server/features/auctions/__tests__/service.test.js +0 -140
  298. package/dist/_internal/server/features/checkout/__tests__/actions.test.d.ts +0 -1
  299. package/dist/_internal/server/features/checkout/__tests__/actions.test.js +0 -600
  300. package/dist/_internal/server/features/refunds/__tests__/actions.test.d.ts +0 -1
  301. package/dist/_internal/server/features/refunds/__tests__/actions.test.js +0 -263
  302. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.d.ts +0 -1
  303. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.js +0 -249
  304. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +0 -1
  305. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +0 -65
  306. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +0 -1
  307. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +0 -163
  308. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +0 -1
  309. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +0 -115
  310. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.d.ts +0 -1
  311. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.js +0 -201
  312. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.d.ts +0 -1
  313. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.js +0 -169
  314. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.d.ts +0 -1
  315. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.js +0 -148
  316. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.d.ts +0 -1
  317. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.js +0 -210
  318. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.d.ts +0 -1
  319. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.js +0 -190
  320. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.d.ts +0 -1
  321. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.js +0 -161
  322. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.d.ts +0 -1
  323. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.js +0 -302
  324. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +0 -1
  325. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +0 -96
  326. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.d.ts +0 -1
  327. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.js +0 -252
  328. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.d.ts +0 -1
  329. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.js +0 -129
  330. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.d.ts +0 -15
  331. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.js +0 -38
  332. package/dist/_internal/server/providers/index.d.ts +0 -11
  333. package/dist/_internal/server/providers/index.js +0 -11
  334. package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +0 -52
  335. package/dist/_internal/server/providers/payment/razorpay-mock.js +0 -118
  336. package/dist/_internal/server/providers/resolve.d.ts +0 -36
  337. package/dist/_internal/server/providers/resolve.js +0 -31
  338. package/dist/_internal/server/providers/shipping/shiprocket-mock.d.ts +0 -29
  339. package/dist/_internal/server/providers/shipping/shiprocket-mock.js +0 -152
  340. package/dist/_internal/shared/types/__tests__/action-result.test.d.ts +0 -1
  341. package/dist/_internal/shared/types/__tests__/action-result.test.js +0 -65
  342. package/dist/errors/__tests__/error-mapping.test.d.ts +0 -1
  343. package/dist/errors/__tests__/error-mapping.test.js +0 -122
  344. package/dist/errors/__tests__/safe-read.test.d.ts +0 -1
  345. package/dist/errors/__tests__/safe-read.test.js +0 -39
  346. package/dist/features/addresses/repository/__tests__/addresses.repository.test.d.ts +0 -1
  347. package/dist/features/addresses/repository/__tests__/addresses.repository.test.js +0 -386
  348. package/dist/features/admin/components/AdminListingScaffold.d.ts +0 -41
  349. package/dist/features/admin/components/AdminListingScaffold.js +0 -68
  350. package/dist/features/admin/components/QuickActionsPanel.d.ts +0 -15
  351. package/dist/features/admin/components/QuickActionsPanel.js +0 -5
  352. package/dist/features/admin/repository/__tests__/notification.repository.test.d.ts +0 -1
  353. package/dist/features/admin/repository/__tests__/notification.repository.test.js +0 -356
  354. package/dist/features/admin/repository/__tests__/site-settings.repository.test.d.ts +0 -1
  355. package/dist/features/admin/repository/__tests__/site-settings.repository.test.js +0 -298
  356. package/dist/features/auctions/repository/__tests__/bid.repository.test.d.ts +0 -1
  357. package/dist/features/auctions/repository/__tests__/bid.repository.test.js +0 -290
  358. package/dist/features/auctions/repository/auctions.repository.d.ts +0 -12
  359. package/dist/features/auctions/repository/auctions.repository.js +0 -42
  360. package/dist/features/auth/repository/__tests__/session.repository.test.d.ts +0 -1
  361. package/dist/features/auth/repository/__tests__/session.repository.test.js +0 -310
  362. package/dist/features/auth/repository/__tests__/session.test.d.ts +0 -1
  363. package/dist/features/auth/repository/__tests__/session.test.js +0 -146
  364. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.d.ts +0 -1
  365. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.js +0 -171
  366. package/dist/features/auth/repository/__tests__/sms-counter.test.d.ts +0 -1
  367. package/dist/features/auth/repository/__tests__/sms-counter.test.js +0 -88
  368. package/dist/features/auth/repository/__tests__/token.repository.test.d.ts +0 -1
  369. package/dist/features/auth/repository/__tests__/token.repository.test.js +0 -260
  370. package/dist/features/auth/repository/__tests__/token.test.d.ts +0 -1
  371. package/dist/features/auth/repository/__tests__/token.test.js +0 -140
  372. package/dist/features/auth/repository/__tests__/user.repository.test.d.ts +0 -1
  373. package/dist/features/auth/repository/__tests__/user.repository.test.js +0 -352
  374. package/dist/features/auth/repository/__tests__/user.test.d.ts +0 -1
  375. package/dist/features/auth/repository/__tests__/user.test.js +0 -226
  376. package/dist/features/before-after/repository/before-after.repository.d.ts +0 -13
  377. package/dist/features/before-after/repository/before-after.repository.js +0 -36
  378. package/dist/features/before-after/server.d.ts +0 -6
  379. package/dist/features/before-after/server.js +0 -6
  380. package/dist/features/cart/repository/__tests__/cart.repository.test.d.ts +0 -1
  381. package/dist/features/cart/repository/__tests__/cart.repository.test.js +0 -371
  382. package/dist/features/categories/repository/__tests__/categories.repository.test.d.ts +0 -1
  383. package/dist/features/categories/repository/__tests__/categories.repository.test.js +0 -813
  384. package/dist/features/collections/repository/collections.repository.d.ts +0 -8
  385. package/dist/features/collections/repository/collections.repository.js +0 -16
  386. package/dist/features/collections/server.d.ts +0 -6
  387. package/dist/features/collections/server.js +0 -6
  388. package/dist/features/events/repository/__tests__/event.repository.test.d.ts +0 -1
  389. package/dist/features/events/repository/__tests__/event.repository.test.js +0 -299
  390. package/dist/features/faq/repository/__tests__/faqs.repository.test.d.ts +0 -1
  391. package/dist/features/faq/repository/__tests__/faqs.repository.test.js +0 -311
  392. package/dist/features/forms/Form.d.ts +0 -25
  393. package/dist/features/forms/Form.js +0 -37
  394. package/dist/features/history/repository/__tests__/user-history.repository.test.d.ts +0 -1
  395. package/dist/features/history/repository/__tests__/user-history.repository.test.js +0 -180
  396. package/dist/features/homepage/repository/__tests__/carousel.repository.test.d.ts +0 -1
  397. package/dist/features/homepage/repository/__tests__/carousel.repository.test.js +0 -182
  398. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.d.ts +0 -1
  399. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.js +0 -185
  400. package/dist/features/layout/ListingLayout.d.ts +0 -34
  401. package/dist/features/layout/ListingLayout.js +0 -103
  402. package/dist/features/messages/repository/__tests__/conversations.repository.test.d.ts +0 -1
  403. package/dist/features/messages/repository/__tests__/conversations.repository.test.js +0 -257
  404. package/dist/features/orders/repository/__tests__/orders.repository.test.d.ts +0 -1
  405. package/dist/features/orders/repository/__tests__/orders.repository.test.js +0 -211
  406. package/dist/features/payments/repository/__tests__/payout.repository.test.d.ts +0 -1
  407. package/dist/features/payments/repository/__tests__/payout.repository.test.js +0 -292
  408. package/dist/features/pre-orders/repository/preorders.repository.d.ts +0 -8
  409. package/dist/features/pre-orders/repository/preorders.repository.js +0 -25
  410. package/dist/features/products/repository/__tests__/product-features.repository.test.d.ts +0 -1
  411. package/dist/features/products/repository/__tests__/product-features.repository.test.js +0 -329
  412. package/dist/features/products/repository/__tests__/products.repository.test.d.ts +0 -1
  413. package/dist/features/products/repository/__tests__/products.repository.test.js +0 -607
  414. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.d.ts +0 -1
  415. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.js +0 -219
  416. package/dist/features/promotions/repository/__tests__/coupons.repository.test.d.ts +0 -1
  417. package/dist/features/promotions/repository/__tests__/coupons.repository.test.js +0 -480
  418. package/dist/features/promotions/repository/promotions.repository.d.ts +0 -14
  419. package/dist/features/promotions/repository/promotions.repository.js +0 -43
  420. package/dist/features/reviews/repository/__tests__/reviews.repository.test.d.ts +0 -1
  421. package/dist/features/reviews/repository/__tests__/reviews.repository.test.js +0 -327
  422. package/dist/features/scams/repository/__tests__/scammer.repository.test.d.ts +0 -1
  423. package/dist/features/scams/repository/__tests__/scammer.repository.test.js +0 -385
  424. package/dist/features/search/repository/__tests__/search.repository.test.d.ts +0 -1
  425. package/dist/features/search/repository/__tests__/search.repository.test.js +0 -369
  426. package/dist/features/seller/components/SellerStatCard.d.ts +0 -14
  427. package/dist/features/seller/components/SellerStatCard.js +0 -6
  428. package/dist/features/seller/components/seller-products-styles.d.ts +0 -7
  429. package/dist/features/seller/components/seller-products-styles.js +0 -14
  430. package/dist/features/seller/repository/__tests__/offer.repository.test.d.ts +0 -1
  431. package/dist/features/seller/repository/__tests__/offer.repository.test.js +0 -458
  432. package/dist/features/seller/repository/seller.repository.d.ts +0 -22
  433. package/dist/features/seller/repository/seller.repository.js +0 -72
  434. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.d.ts +0 -1
  435. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.js +0 -37
  436. package/dist/features/stores/repository/__tests__/store.repository.test.d.ts +0 -1
  437. package/dist/features/stores/repository/__tests__/store.repository.test.js +0 -261
  438. package/dist/features/stores/repository/stores.repository.d.ts +0 -11
  439. package/dist/features/stores/repository/stores.repository.js +0 -37
  440. package/dist/features/support/repository/__tests__/support.repository.test.d.ts +0 -1
  441. package/dist/features/support/repository/__tests__/support.repository.test.js +0 -312
  442. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.d.ts +0 -1
  443. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.js +0 -139
  444. package/dist/features/wishlist/repository/wishlist.repository.d.ts +0 -13
  445. package/dist/features/wishlist/repository/wishlist.repository.js +0 -31
  446. package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +0 -1
  447. package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +0 -93
  448. package/dist/providers/shipping-shiprocket/index.d.ts +0 -297
  449. package/dist/providers/shipping-shiprocket/index.js +0 -194
  450. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +0 -45
  451. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +0 -168
  452. package/dist/react/contexts/ThemeContext.d.ts +0 -13
  453. package/dist/react/contexts/ThemeContext.js +0 -64
  454. package/dist/schemas/webhooks/shiprocket.d.ts +0 -30
  455. package/dist/schemas/webhooks/shiprocket.js +0 -22
  456. package/dist/seed/actions/demo-seed-actions.d.ts +0 -42
  457. package/dist/seed/actions/demo-seed-actions.js +0 -36
  458. package/dist/seed/actions/index.d.ts +0 -1
  459. package/dist/seed/actions/index.js +0 -1
  460. package/dist/seed/sub-listings-seed-data.d.ts +0 -123
  461. package/dist/seed/sub-listings-seed-data.js +0 -447
  462. package/dist/seed/tester-checklist-seed-data.d.ts +0 -2
  463. package/dist/seed/tester-checklist-seed-data.js +0 -248
  464. package/dist/ui/components/DashboardStatsCard.d.ts +0 -15
  465. package/dist/ui/components/DashboardStatsCard.js +0 -27
  466. package/dist/ui/components/DashboardStatsCard.style.css +0 -68
  467. package/dist/ui/components/DynamicSelect.d.ts +0 -23
  468. package/dist/ui/components/DynamicSelect.js +0 -77
  469. package/dist/ui/components/DynamicSelect.style.css +0 -101
  470. package/dist/ui/components/InlineCreateSelect.d.ts +0 -48
  471. package/dist/ui/components/InlineCreateSelect.js +0 -75
  472. package/dist/ui/components/ListingViewShell.d.ts +0 -37
  473. package/dist/ui/components/ListingViewShell.js +0 -9
  474. package/dist/ui/components/PaginatedMultiSelect.d.ts +0 -28
  475. package/dist/ui/components/PaginatedMultiSelect.js +0 -141
  476. package/dist/ui/components/PaginatedMultiSelect.style.css +0 -272
  477. package/dist/ui/components/SectionTabs.d.ts +0 -19
  478. package/dist/ui/components/SectionTabs.js +0 -66
  479. package/dist/ui/components/SectionTabs.style.css +0 -164
  480. package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +0 -1
  481. package/dist/ui/components/__tests__/BulkActionBar.test.js +0 -96
  482. package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +0 -1
  483. package/dist/ui/components/__tests__/ListingToolbar.test.js +0 -125
  484. package/dist/ui/components/__tests__/new-primitives.test.d.ts +0 -1
  485. package/dist/ui/components/__tests__/new-primitives.test.js +0 -187
@@ -0,0 +1,67 @@
1
+ /**
2
+ * PII display-masking helpers — pure string manipulation, zero runtime
3
+ * dependencies. Split out from pii-encrypt.ts so these can be exported
4
+ * from the universal client+server barrel (index.ts): pii-encrypt.ts has
5
+ * a top-level `import { createRequire } from "node:module"` (needed for
6
+ * the AES-256-GCM/HMAC functions to work under both Next.js's bundler and
7
+ * a pure-ESM standalone script context) that poisons the whole module for
8
+ * client bundling — Turbopack statically resolves every export in a file
9
+ * before tree-shaking, so re-exporting even one crypto-free symbol from
10
+ * pii-encrypt.ts still pulls `node:module` into the client graph and hard
11
+ * fails the browser build. This file has no such import and is safe
12
+ * anywhere `ReviewModal`/`ReviewDetailShell`/`ReviewsList` (client
13
+ * components displaying masked reviewer names) can reach it.
14
+ */
15
+ export declare const ENC_PREFIX = "enc:v1:";
16
+ export declare const HMAC_PREFIX = "hmac-sha256:";
17
+ /** Check if a value is encrypted by our PII system. */
18
+ export declare function isPiiEncrypted(value: string): boolean;
19
+ /**
20
+ * Mask a person's name for public display.
21
+ * Each word is reduced to its first letter followed by "***".
22
+ *
23
+ * "John Doe" → "J*** D***"
24
+ * "Alice" → "A***"
25
+ *
26
+ * If the value is still an encrypted blob (e.g. PII_ENCRYPTION_KEY not set),
27
+ * returns "Anonymous" so encrypted ciphertext never leaks to the UI.
28
+ */
29
+ export declare function maskName(name: string | null | undefined): string;
30
+ /**
31
+ * Mask an email address for public display.
32
+ * "john.doe@example.com" → "j***@***.com"
33
+ */
34
+ export declare function maskEmail(email: string | null | undefined): string;
35
+ /**
36
+ * Return a copy of a review document with PII fields masked for public display.
37
+ * Admin/owner endpoints should NOT call this — use the raw document instead.
38
+ */
39
+ export declare function maskPublicReview<T extends {
40
+ userName: string;
41
+ }>(review: T): T;
42
+ /**
43
+ * Return a copy of a bid document with PII masked for public display
44
+ * (auction product page).
45
+ */
46
+ export declare function maskPublicBid<T extends {
47
+ userName: string;
48
+ }>(bid: T): T;
49
+ /**
50
+ * Return a copy of an event-entry document with PII masked for the leaderboard.
51
+ * ipAddress and userEmail are never sent to the client;
52
+ * only userDisplayName needs masking for a public leaderboard view.
53
+ */
54
+ export declare function maskPublicEventEntry<T extends {
55
+ userDisplayName?: string;
56
+ userEmail?: string;
57
+ ipAddress?: string;
58
+ }>(entry: T): Omit<T, "userEmail" | "ipAddress">;
59
+ /**
60
+ * Return a copy of an offer document with buyer PII masked for the seller view.
61
+ * The seller needs to know an offer was made and its amount, but the buyer's
62
+ * full name and email should remain private until the order is confirmed.
63
+ */
64
+ export declare function maskOfferForSeller<T extends {
65
+ buyerName: string;
66
+ buyerEmail: string;
67
+ }>(offer: T): T;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * PII display-masking helpers — pure string manipulation, zero runtime
3
+ * dependencies. Split out from pii-encrypt.ts so these can be exported
4
+ * from the universal client+server barrel (index.ts): pii-encrypt.ts has
5
+ * a top-level `import { createRequire } from "node:module"` (needed for
6
+ * the AES-256-GCM/HMAC functions to work under both Next.js's bundler and
7
+ * a pure-ESM standalone script context) that poisons the whole module for
8
+ * client bundling — Turbopack statically resolves every export in a file
9
+ * before tree-shaking, so re-exporting even one crypto-free symbol from
10
+ * pii-encrypt.ts still pulls `node:module` into the client graph and hard
11
+ * fails the browser build. This file has no such import and is safe
12
+ * anywhere `ReviewModal`/`ReviewDetailShell`/`ReviewsList` (client
13
+ * components displaying masked reviewer names) can reach it.
14
+ */
15
+ export const ENC_PREFIX = "enc:v1:";
16
+ export const HMAC_PREFIX = "hmac-sha256:";
17
+ /** Check if a value is encrypted by our PII system. */
18
+ export function isPiiEncrypted(value) {
19
+ return typeof value === "string" && value.startsWith(ENC_PREFIX);
20
+ }
21
+ /**
22
+ * Mask a person's name for public display.
23
+ * Each word is reduced to its first letter followed by "***".
24
+ *
25
+ * "John Doe" → "J*** D***"
26
+ * "Alice" → "A***"
27
+ *
28
+ * If the value is still an encrypted blob (e.g. PII_ENCRYPTION_KEY not set),
29
+ * returns "Anonymous" so encrypted ciphertext never leaks to the UI.
30
+ */
31
+ export function maskName(name) {
32
+ if (!name || typeof name !== "string")
33
+ return "Anonymous";
34
+ if (isPiiEncrypted(name))
35
+ return "Anonymous";
36
+ return name
37
+ .trim()
38
+ .split(/\s+/)
39
+ .filter(Boolean)
40
+ .map((word) => word[0] + "***")
41
+ .join(" ");
42
+ }
43
+ /**
44
+ * Mask an email address for public display.
45
+ * "john.doe@example.com" → "j***@***.com"
46
+ */
47
+ export function maskEmail(email) {
48
+ if (!email || typeof email !== "string")
49
+ return "***@***.***";
50
+ if (isPiiEncrypted(email))
51
+ return "***@***.***";
52
+ const atIdx = email.indexOf("@");
53
+ if (atIdx < 0)
54
+ return "***";
55
+ const local = email.slice(0, atIdx);
56
+ const domain = email.slice(atIdx + 1);
57
+ const dotIdx = domain.lastIndexOf(".");
58
+ const domainMasked = dotIdx > 0 ? "***" + domain.slice(dotIdx) : "***";
59
+ return (local[0] ?? "*") + "***@" + domainMasked;
60
+ }
61
+ /**
62
+ * Return a copy of a review document with PII fields masked for public display.
63
+ * Admin/owner endpoints should NOT call this — use the raw document instead.
64
+ */
65
+ export function maskPublicReview(review) {
66
+ return { ...review, userName: maskName(review.userName) };
67
+ }
68
+ /**
69
+ * Return a copy of a bid document with PII masked for public display
70
+ * (auction product page).
71
+ */
72
+ export function maskPublicBid(bid) {
73
+ return { ...bid };
74
+ }
75
+ /**
76
+ * Return a copy of an event-entry document with PII masked for the leaderboard.
77
+ * ipAddress and userEmail are never sent to the client;
78
+ * only userDisplayName needs masking for a public leaderboard view.
79
+ */
80
+ export function maskPublicEventEntry(entry) {
81
+ const { userEmail: _e, ipAddress: _ip, ...rest } = entry;
82
+ return {
83
+ ...rest,
84
+ ...(rest.userDisplayName !== undefined
85
+ ? { userDisplayName: maskName(rest.userDisplayName) }
86
+ : {}),
87
+ };
88
+ }
89
+ /**
90
+ * Return a copy of an offer document with buyer PII masked for the seller view.
91
+ * The seller needs to know an offer was made and its amount, but the buyer's
92
+ * full name and email should remain private until the order is confirmed.
93
+ */
94
+ export function maskOfferForSeller(offer) {
95
+ return {
96
+ ...offer,
97
+ buyerName: maskName(offer.buyerName),
98
+ buyerEmail: maskEmail(offer.buyerEmail),
99
+ };
100
+ }
@@ -64,20 +64,20 @@ function buildLadder(params) {
64
64
  });
65
65
  }
66
66
  const _rawBidsSeedData = [
67
- // auction-beyblade-original-dragoon-storm — bidCount: 3, currentBid: 349900
67
+ // auction-beyblade-original-dragoon-storm — bidCount: 3, currentBid: 3499
68
68
  ...buildLadder({
69
69
  productId: "auction-beyblade-original-dragoon-storm",
70
70
  productTitle: "Beyblade Original — Dragoon Storm (Rare Sealed)",
71
- startingBid: 299900,
72
- currentBid: 349900,
71
+ startingBid: 2999,
72
+ currentBid: 3499,
73
73
  bidderIds: ["user-rohit-collector", "user-ananya-collector", "user-meera-bey"],
74
74
  }),
75
- // auction-beyblade-metal-lightning-l-drago — bidCount: 5, currentBid: 229900
75
+ // auction-beyblade-metal-lightning-l-drago — bidCount: 5, currentBid: 2299
76
76
  ...buildLadder({
77
77
  productId: "auction-beyblade-metal-lightning-l-drago",
78
78
  productTitle: "Metal Fight Beyblade BB-99 Lightning L-Drago",
79
- startingBid: 199900,
80
- currentBid: 229900,
79
+ startingBid: 1999,
80
+ currentBid: 2299,
81
81
  bidderIds: [
82
82
  "user-meera-bey",
83
83
  "user-rohit-collector",
@@ -108,6 +108,7 @@ export const blogPostsSeedData = [
108
108
  title: "Gundam Model Kit Grades Explained: HG vs RG vs MG vs PG",
109
109
  slug: "gundam-model-kit-grades-explained",
110
110
  excerpt: "Not sure which Gundam grade to start with? Here's a detailed breakdown of every Bandai grade — from the beginner-friendly HG to the massive Perfect Grade.",
111
+ // audit-money-units-ok: prose HTML content — "1/144 Scale"/"1/100 Scale" are model-kit scale ratios, not paise math
111
112
  content: `<h2>High Grade (HG) — 1/144 Scale</h2><p>The entry point for most builders. ~100 parts, snap-fit (no glue needed), completes in 2–3 hours. ₹800–₹2,000. Great articulation for the price.</p><h2>Real Grade (RG) — 1/144 Scale</h2><p>Master Grade detail at HG size. ~200 parts, pre-colored inner frame. More fragile than HG due to small parts. ₹1,800–₹3,500. The RG Nu Gundam and RG Wing Zero are fan favorites.</p><h2>Master Grade (MG) — 1/100 Scale</h2><p>The collector's standard. ~400 parts, fully detailed inner frame, excellent poseability. ₹3,500–₹8,000. Build time: 6–12 hours. MG Barbatos and MG Freedom 2.0 are top sellers on LetItRip.</p><h2>Perfect Grade (PG) — 1/60 Scale</h2><p>The pinnacle. ~800+ parts, LED-compatible, museum-quality detail. ₹12,000–₹25,000+. Build time: 20–40 hours. A showpiece, not a toy.</p><h2>Other Grades</h2><p><strong>SD</strong> (Super Deformed) — chibi proportions, great for kids. <strong>EG</strong> (Entry Grade) — simplified build, no tools needed. <strong>MGEX</strong> — MG with extreme detail (Unicorn Gundam only). <strong>PG Unleashed</strong> — beyond PG, the ultimate kit.</p>`,
112
113
  category: "guides",
113
114
  tags: ["gundam", "bandai", "model-kits", "hg", "mg", "rg", "pg"],
@@ -28,7 +28,7 @@ export const cartsSeedData = [
28
28
  productId: "product-dark-magician-lob-1st",
29
29
  productTitle: "Dark Magician LOB 1st Edition",
30
30
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/46986414.jpg"),
31
- price: 499900,
31
+ price: 4999,
32
32
  currency: _CURRENCY,
33
33
  quantity: 1,
34
34
  storeId: "store-kaiba-corp-cards",
@@ -42,7 +42,7 @@ export const cartsSeedData = [
42
42
  productId: "product-lob-booster-pack",
43
43
  productTitle: "Legend of Blue Eyes Booster Pack",
44
44
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/89631139.jpg"),
45
- price: 149900,
45
+ price: 1499,
46
46
  currency: _CURRENCY,
47
47
  quantity: 2,
48
48
  storeId: "store-kaiba-corp-cards",
@@ -56,7 +56,7 @@ export const cartsSeedData = [
56
56
  productId: "product-kuriboh-mrd",
57
57
  productTitle: "Kuriboh MRD",
58
58
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/40640057.jpg"),
59
- price: 29900,
59
+ price: 299,
60
60
  currency: _CURRENCY,
61
61
  quantity: 1,
62
62
  storeId: "store-kaiba-corp-cards",
@@ -70,7 +70,7 @@ export const cartsSeedData = [
70
70
  productId: "auction-blue-eyes-white-dragon-psa9",
71
71
  productTitle: "Blue-Eyes White Dragon PSA 9 — Won Auction",
72
72
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/89631139.jpg"),
73
- price: 2499900,
73
+ price: 14999,
74
74
  currency: _CURRENCY,
75
75
  quantity: 1,
76
76
  storeId: "store-kaiba-corp-cards",
@@ -85,7 +85,7 @@ export const cartsSeedData = [
85
85
  productId: "product-red-eyes-black-dragon-mrd",
86
86
  productTitle: "Red-Eyes Black Dragon MRD — Offer Accepted",
87
87
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/74677422.jpg"),
88
- price: 899900,
88
+ price: 8999,
89
89
  currency: _CURRENCY,
90
90
  quantity: 1,
91
91
  storeId: "store-kaiba-corp-cards",
@@ -93,7 +93,7 @@ export const cartsSeedData = [
93
93
  listingType: "standard",
94
94
  isOffer: true,
95
95
  offerId: "offer-yugi-red-eyes-001",
96
- lockedPrice: 350000,
96
+ lockedPrice: 3500,
97
97
  locked: true,
98
98
  addedAt: daysAgo(1),
99
99
  updatedAt: daysAgo(1),
@@ -112,7 +112,7 @@ export const cartsSeedData = [
112
112
  productId: "product-duelist-kingdom-playmat",
113
113
  productTitle: "Duelist Kingdom Playmat",
114
114
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/10000015.jpg"),
115
- price: 129900,
115
+ price: 1299,
116
116
  currency: _CURRENCY,
117
117
  quantity: 1,
118
118
  storeId: "store-letitrip-official",
@@ -126,7 +126,7 @@ export const cartsSeedData = [
126
126
  productId: "product-exodia-art-print",
127
127
  productTitle: "Exodia Art Print A3",
128
128
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/33396948.jpg"),
129
- price: 79900,
129
+ price: 799,
130
130
  currency: _CURRENCY,
131
131
  quantity: 1,
132
132
  storeId: "store-letitrip-official",
@@ -140,7 +140,7 @@ export const cartsSeedData = [
140
140
  productId: "preorder-gate-guardian-reprint-2026",
141
141
  productTitle: "Gate Guardian 2026 Reprint — Pre-Order",
142
142
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/25833572.jpg"),
143
- price: 349900,
143
+ price: 3499,
144
144
  currency: _CURRENCY,
145
145
  quantity: 1,
146
146
  storeId: "store-letitrip-official",
@@ -163,7 +163,7 @@ export const cartsSeedData = [
163
163
  productId: "product-chaos-emperor-dragon",
164
164
  productTitle: "Chaos Emperor Dragon — Envoy of the End",
165
165
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/82301904.jpg"),
166
- price: 1299900,
166
+ price: 12999,
167
167
  currency: _CURRENCY,
168
168
  quantity: 1,
169
169
  storeId: "store-kaiba-corp-cards",
@@ -177,7 +177,7 @@ export const cartsSeedData = [
177
177
  productId: "product-potd-booster-box",
178
178
  productTitle: "Power of the Duelist Booster Box 24pk",
179
179
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/89943723.jpg"),
180
- price: 899900,
180
+ price: 8999,
181
181
  currency: _CURRENCY,
182
182
  quantity: 1,
183
183
  storeId: "store-kaiba-corp-cards",
@@ -200,7 +200,7 @@ export const cartsSeedData = [
200
200
  productId: "product-mirror-force-mrd",
201
201
  productTitle: "Mirror Force MRD Ultra Rare",
202
202
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/44095762.jpg"),
203
- price: 999900,
203
+ price: 9999,
204
204
  currency: _CURRENCY,
205
205
  quantity: 1,
206
206
  storeId: "store-kaiba-corp-cards",
@@ -214,7 +214,7 @@ export const cartsSeedData = [
214
214
  productId: "product-yugi-starter-deck",
215
215
  productTitle: "Starter Deck: Yugi",
216
216
  productImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/46986414.jpg"),
217
- price: 199900,
217
+ price: 1999,
218
218
  currency: _CURRENCY,
219
219
  quantity: 1,
220
220
  storeId: "store-kaiba-corp-cards",
@@ -21,7 +21,7 @@ export const catalogueSeedData = [
21
21
  images: [],
22
22
  mainImage: undefined,
23
23
  condition: "good",
24
- price: 450000,
24
+ price: 4500,
25
25
  quantity: 1,
26
26
  visibility: "public",
27
27
  listingStatus: "not_listed",
@@ -36,7 +36,7 @@ export const catalogueSeedData = [
36
36
  title: "Charizard Holo 1st Edition (played)",
37
37
  images: [],
38
38
  condition: "fair",
39
- price: 1200000,
39
+ price: 12000,
40
40
  quantity: 1,
41
41
  visibility: "public",
42
42
  listingStatus: "pending_admin_approval",
@@ -52,7 +52,7 @@ export const catalogueSeedData = [
52
52
  title: "Gundam RX-78-2 Model Kit (built)",
53
53
  images: [],
54
54
  condition: "like_new",
55
- price: 250000,
55
+ price: 2500,
56
56
  quantity: 1,
57
57
  visibility: "public",
58
58
  listingStatus: "listed",
@@ -69,7 +69,7 @@ export const catalogueSeedData = [
69
69
  title: "Beyblade Burst (missing launcher)",
70
70
  images: [],
71
71
  condition: "poor",
72
- price: 30000,
72
+ price: 300,
73
73
  quantity: 1,
74
74
  visibility: "private",
75
75
  listingStatus: "rejected",
@@ -86,7 +86,7 @@ export const catalogueSeedData = [
86
86
  title: "Pokémon Binder — 180 cards, mixed sets",
87
87
  images: [],
88
88
  condition: "good",
89
- price: 800000,
89
+ price: 8000,
90
90
  quantity: 1,
91
91
  visibility: "public",
92
92
  listingStatus: "not_listed",
@@ -101,7 +101,7 @@ export const catalogueSeedData = [
101
101
  title: "Funko Pop Batman (box wear only)",
102
102
  images: [],
103
103
  condition: "new",
104
- price: 180000,
104
+ price: 1800,
105
105
  quantity: 2,
106
106
  visibility: "private",
107
107
  listingStatus: "not_listed",
@@ -239,7 +239,7 @@ const bundleRows = [
239
239
  description: "Both original-generation Beyblades — Dranzer S and Driger V — bundled at a discount.",
240
240
  categoryType: "bundle",
241
241
  bundleKind: "special",
242
- bundlePriceInPaise: 299900,
242
+ bundlePrice: 2999,
243
243
  bundleQueryRule: {
244
244
  type: "static",
245
245
  productIds: ["product-beyblade-original-dranzer-s", "product-beyblade-original-driger-v", "product-beyblade-metal-storm-pegasus"],
@@ -271,7 +271,7 @@ const bundleRows = [
271
271
  description: "Storm Pegasus and Flame Sagittario — the classic Metal Fight rivalry, together.",
272
272
  categoryType: "bundle",
273
273
  bundleKind: "special",
274
- bundlePriceInPaise: 349900,
274
+ bundlePrice: 3499,
275
275
  bundleQueryRule: {
276
276
  type: "static",
277
277
  productIds: ["product-beyblade-metal-storm-pegasus", "product-beyblade-metal-flame-sagittario", "product-beyblade-original-dranzer-s"],
@@ -303,7 +303,7 @@ const bundleRows = [
303
303
  description: "Valkyrie and Regalia Genesis — top-tier Burst-era attackers in one set.",
304
304
  categoryType: "bundle",
305
305
  bundleKind: "special",
306
- bundlePriceInPaise: 379900,
306
+ bundlePrice: 3799,
307
307
  bundleQueryRule: {
308
308
  type: "static",
309
309
  productIds: ["product-beyblade-burst-valkyrie", "product-beyblade-burst-regalia-genesis", "product-beyblade-metal-flame-sagittario"],
@@ -335,7 +335,7 @@ const bundleRows = [
335
335
  description: "Wizard Arrow and Knife Shinobi — the newest X-series tops for new battlers.",
336
336
  categoryType: "bundle",
337
337
  bundleKind: "special",
338
- bundlePriceInPaise: 249900,
338
+ bundlePrice: 2499,
339
339
  bundleQueryRule: {
340
340
  type: "static",
341
341
  productIds: ["product-beyblade-x-wizard-arrow", "product-beyblade-x-knife-shinobi", "product-beyblade-burst-valkyrie"],
@@ -367,7 +367,7 @@ const bundleRows = [
367
367
  description: "One top from every Beyblade generation — Original, Metal Fight, Burst, and X — the ultimate collector's starter pack.",
368
368
  categoryType: "bundle",
369
369
  bundleKind: "special",
370
- bundlePriceInPaise: 599900,
370
+ bundlePrice: 5999,
371
371
  bundleQueryRule: {
372
372
  type: "static",
373
373
  productIds: [
@@ -29,7 +29,7 @@ export const claimedCouponsSeedData = [
29
29
  description: "10% off your first order on LetItRip.",
30
30
  type: "percentage",
31
31
  scope: "admin",
32
- discount: { value: 10, maxDiscount: 50000, minPurchase: 99900 },
32
+ discount: { value: 10, maxDiscount: 500, minPurchase: 999 },
33
33
  restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: false },
34
34
  },
35
35
  status: "active",
@@ -50,7 +50,7 @@ export const claimedCouponsSeedData = [
50
50
  description: "₹500 flat discount on orders above ₹5,000.",
51
51
  type: "fixed",
52
52
  scope: "admin",
53
- discount: { value: 50000, minPurchase: 500000 },
53
+ discount: { value: 500, minPurchase: 5000 },
54
54
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
55
55
  },
56
56
  status: "expired",
@@ -71,7 +71,7 @@ export const claimedCouponsSeedData = [
71
71
  description: "Free shipping on orders above ₹499.",
72
72
  type: "free_shipping",
73
73
  scope: "admin",
74
- discount: { value: 0, minPurchase: 49900 },
74
+ discount: { value: 0, minPurchase: 499 },
75
75
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
76
76
  },
77
77
  status: "used",
@@ -25,14 +25,14 @@ export const couponsSeedData = [
25
25
  description: "10% off your first order on LetItRip. Maximum discount ₹200. First-time buyers only.",
26
26
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
27
27
  scope: COUPON_FIELDS.SCOPE_VALUES.ADMIN,
28
- discount: { value: 10, maxDiscount: 20000, minPurchase: 50000 },
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
31
  restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: true },
32
32
  createdBy: "user-admin-letitrip",
33
33
  createdAt: daysAgo(90),
34
34
  updatedAt: daysAgo(5),
35
- stats: { totalUses: 312, totalRevenue: 156000000, totalDiscount: 3120000 },
35
+ stats: { totalUses: 312, totalRevenue: 1560000, totalDiscount: 31200 },
36
36
  },
37
37
  {
38
38
  id: "coupon-exodia50",
@@ -41,14 +41,14 @@ export const couponsSeedData = [
41
41
  description: "₹500 off on orders above ₹2,000. All categories. Limited to 500 total uses.",
42
42
  type: COUPON_FIELDS.TYPE_VALUES.FIXED,
43
43
  scope: COUPON_FIELDS.SCOPE_VALUES.ADMIN,
44
- discount: { value: 50000, maxDiscount: 50000, minPurchase: 200000 },
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
47
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
48
48
  createdBy: "user-admin-letitrip",
49
49
  createdAt: daysAgo(30),
50
50
  updatedAt: daysAgo(3),
51
- stats: { totalUses: 187, totalRevenue: 93500000, totalDiscount: 9350000 },
51
+ stats: { totalUses: 187, totalRevenue: 935000, totalDiscount: 93500 },
52
52
  },
53
53
  {
54
54
  id: "coupon-freeship499",
@@ -57,14 +57,14 @@ export const couponsSeedData = [
57
57
  description: "Free shipping on all orders above ₹499. No category restrictions.",
58
58
  type: COUPON_FIELDS.TYPE_VALUES.FREE_SHIPPING,
59
59
  scope: COUPON_FIELDS.SCOPE_VALUES.ADMIN,
60
- discount: { value: 0, maxDiscount: 0, minPurchase: 49900 },
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
63
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
64
64
  createdBy: "user-admin-letitrip",
65
65
  createdAt: daysAgo(60),
66
66
  updatedAt: daysAgo(1),
67
- stats: { totalUses: 1024, totalRevenue: 512000000, totalDiscount: 15360000 },
67
+ stats: { totalUses: 1024, totalRevenue: 5120000, totalDiscount: 153600 },
68
68
  },
69
69
  {
70
70
  id: "coupon-newduelist",
@@ -73,14 +73,14 @@ export const couponsSeedData = [
73
73
  description: "20% off your first order. Maximum discount ₹400. First-time buyers only.",
74
74
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
75
75
  scope: COUPON_FIELDS.SCOPE_VALUES.ADMIN,
76
- discount: { value: 20, maxDiscount: 40000, minPurchase: 100000 },
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
79
  restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: false },
80
80
  createdBy: "user-admin-letitrip",
81
81
  createdAt: daysAgo(14),
82
82
  updatedAt: daysAgo(2),
83
- stats: { totalUses: 89, totalRevenue: 44500000, totalDiscount: 3560000 },
83
+ stats: { totalUses: 89, totalRevenue: 445000, totalDiscount: 35600 },
84
84
  },
85
85
  {
86
86
  id: "coupon-tournament2026",
@@ -89,14 +89,14 @@ export const couponsSeedData = [
89
89
  description: "₹200 off on any purchase ₹1,000+. Valid during 2026 tournament season.",
90
90
  type: COUPON_FIELDS.TYPE_VALUES.FIXED,
91
91
  scope: COUPON_FIELDS.SCOPE_VALUES.ADMIN,
92
- discount: { value: 20000, maxDiscount: 20000, minPurchase: 100000 },
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
95
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
96
96
  createdBy: "user-admin-letitrip",
97
97
  createdAt: daysAgo(45),
98
98
  updatedAt: daysAgo(1),
99
- stats: { totalUses: 456, totalRevenue: 228000000, totalDiscount: 9120000 },
99
+ stats: { totalUses: 456, totalRevenue: 2280000, totalDiscount: 91200 },
100
100
  },
101
101
  // ── Seller coupons (Kaiba Corp) ────────────────────────────────────────────
102
102
  {
@@ -107,14 +107,14 @@ export const couponsSeedData = [
107
107
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
108
108
  scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
109
109
  storeId: "store-kaiba-corp-cards",
110
- discount: { value: 25, maxDiscount: 50000, minPurchase: 100000 },
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
113
  restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: false },
114
114
  createdBy: "user-seto-kaiba",
115
115
  createdAt: daysAgo(20),
116
116
  updatedAt: daysAgo(4),
117
- stats: { totalUses: 67, totalRevenue: 33500000, totalDiscount: 3350000 },
117
+ stats: { totalUses: 67, totalRevenue: 335000, totalDiscount: 33500 },
118
118
  },
119
119
  {
120
120
  id: "coupon-blueeyesvip",
@@ -124,7 +124,7 @@ export const couponsSeedData = [
124
124
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
125
125
  scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
126
126
  storeId: "store-kaiba-corp-cards",
127
- discount: { value: 15, maxDiscount: 75000, minPurchase: 200000 },
127
+ discount: { value: 15, maxDiscount: 750, minPurchase: 2000 },
128
128
  usage: { totalLimit: 50, perUserLimit: 1, currentUsage: 12 },
129
129
  validity: { startDate: daysAgo(10), endDate: daysAhead(60), isActive: true },
130
130
  restrictions: {
@@ -135,7 +135,7 @@ export const couponsSeedData = [
135
135
  createdBy: "user-seto-kaiba",
136
136
  createdAt: daysAgo(10),
137
137
  updatedAt: daysAgo(3),
138
- stats: { totalUses: 12, totalRevenue: 6000000, totalDiscount: 900000 },
138
+ stats: { totalUses: 12, totalRevenue: 60000, totalDiscount: 9000 },
139
139
  },
140
140
  {
141
141
  id: "coupon-buynow10",
@@ -145,7 +145,7 @@ export const couponsSeedData = [
145
145
  type: COUPON_FIELDS.TYPE_VALUES.BUY_X_GET_Y,
146
146
  scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
147
147
  storeId: "store-kaiba-corp-cards",
148
- discount: { value: 10, maxDiscount: 30000, minPurchase: 0 },
148
+ discount: { value: 10, maxDiscount: 300, minPurchase: 0 },
149
149
  bxgy: {
150
150
  buyQuantity: 3,
151
151
  getQuantity: 0,
@@ -157,7 +157,7 @@ export const couponsSeedData = [
157
157
  createdBy: "user-seto-kaiba",
158
158
  createdAt: daysAgo(15),
159
159
  updatedAt: daysAgo(2),
160
- stats: { totalUses: 34, totalRevenue: 17000000, totalDiscount: 1700000 },
160
+ stats: { totalUses: 34, totalRevenue: 170000, totalDiscount: 17000 },
161
161
  },
162
162
  {
163
163
  id: "coupon-sealed20",
@@ -167,7 +167,7 @@ export const couponsSeedData = [
167
167
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
168
168
  scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
169
169
  storeId: "store-kaiba-corp-cards",
170
- discount: { value: 20, maxDiscount: 100000, minPurchase: 100000 },
170
+ discount: { value: 20, maxDiscount: 1000, minPurchase: 1000 },
171
171
  usage: { totalLimit: 75, perUserLimit: 2, currentUsage: 28 },
172
172
  validity: { startDate: daysAgo(7), endDate: daysAhead(30), isActive: true },
173
173
  restrictions: {
@@ -178,7 +178,7 @@ export const couponsSeedData = [
178
178
  createdBy: "user-seto-kaiba",
179
179
  createdAt: daysAgo(7),
180
180
  updatedAt: daysAgo(1),
181
- stats: { totalUses: 28, totalRevenue: 14000000, totalDiscount: 2800000 },
181
+ stats: { totalUses: 28, totalRevenue: 140000, totalDiscount: 28000 },
182
182
  },
183
183
  {
184
184
  id: "coupon-gradedset",
@@ -188,7 +188,7 @@ export const couponsSeedData = [
188
188
  type: COUPON_FIELDS.TYPE_VALUES.PERCENTAGE,
189
189
  scope: COUPON_FIELDS.SCOPE_VALUES.SELLER,
190
190
  storeId: "store-kaiba-corp-cards",
191
- discount: { value: 12, maxDiscount: 60000, minPurchase: 150000 },
191
+ discount: { value: 12, maxDiscount: 600, minPurchase: 1500 },
192
192
  usage: { totalLimit: 100, perUserLimit: 2, currentUsage: 19 },
193
193
  validity: { startDate: daysAgo(5), endDate: daysAhead(55), isActive: true },
194
194
  restrictions: {
@@ -199,6 +199,6 @@ export const couponsSeedData = [
199
199
  createdBy: "user-seto-kaiba",
200
200
  createdAt: daysAgo(5),
201
201
  updatedAt: daysAgo(1),
202
- stats: { totalUses: 19, totalRevenue: 9500000, totalDiscount: 1140000 },
202
+ stats: { totalUses: 19, totalRevenue: 95000, totalDiscount: 11400 },
203
203
  },
204
204
  ];