@mohasinac/appkit 3.8.2 → 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 (479) 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 +3 -7
  246. package/dist/index.js +7 -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/seed/bids-seed-data.js +6 -6
  253. package/dist/seed/blog-posts-seed-data.js +1 -0
  254. package/dist/seed/cart-seed-data.js +13 -13
  255. package/dist/seed/catalogue-seed-data.js +6 -6
  256. package/dist/seed/categories-seed-data.js +5 -5
  257. package/dist/seed/claimed-coupons-seed-data.js +3 -3
  258. package/dist/seed/coupons-seed-data.js +20 -20
  259. package/dist/seed/events-seed-data.js +27 -27
  260. package/dist/seed/factories/bid.factory.js +1 -1
  261. package/dist/seed/faq-seed-data.js +20 -1
  262. package/dist/seed/grouped-listings-seed-data.d.ts +2 -2
  263. package/dist/seed/grouped-listings-seed-data.js +3 -3
  264. package/dist/seed/offers-seed-data.js +19 -19
  265. package/dist/seed/orders-seed-data.js +29 -29
  266. package/dist/seed/payouts-seed-data.js +7 -7
  267. package/dist/seed/products-auctions-seed-data.js +6 -6
  268. package/dist/seed/products-preorders-seed-data.d.ts +2 -2
  269. package/dist/seed/products-preorders-seed-data.js +1 -1
  270. package/dist/seed/products-standard-seed-data.js +8 -8
  271. package/dist/seed/scammers-seed-data.js +2 -2
  272. package/dist/seed/shipments-seed-data.js +29 -29
  273. package/dist/seed/site-settings-seed-data.js +3 -2
  274. package/dist/seed/store-extensions-seed-data.js +8 -8
  275. package/dist/seed/stores-seed-data.js +37 -8
  276. package/dist/seed/users-seed-data.js +38 -1
  277. package/dist/server-entry.d.ts +1 -3
  278. package/dist/server-entry.js +1 -3
  279. package/dist/server.d.ts +2 -1
  280. package/dist/server.js +3 -1
  281. package/dist/ui/components/PriceDisplay.js +3 -12
  282. package/dist/utils/number.formatter.d.ts +2 -7
  283. package/dist/utils/number.formatter.js +3 -8
  284. package/package.json +1 -1
  285. package/scripts/seed-cli.mjs +8 -3
  286. package/dist/_internal/client/scaffolds/DashboardScaffold.d.ts +0 -34
  287. package/dist/_internal/client/scaffolds/DashboardScaffold.js +0 -26
  288. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.d.ts +0 -1
  289. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.js +0 -109
  290. package/dist/_internal/server/features/auctions/__tests__/service.test.d.ts +0 -1
  291. package/dist/_internal/server/features/auctions/__tests__/service.test.js +0 -140
  292. package/dist/_internal/server/features/checkout/__tests__/actions.test.d.ts +0 -1
  293. package/dist/_internal/server/features/checkout/__tests__/actions.test.js +0 -600
  294. package/dist/_internal/server/features/refunds/__tests__/actions.test.d.ts +0 -1
  295. package/dist/_internal/server/features/refunds/__tests__/actions.test.js +0 -263
  296. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.d.ts +0 -1
  297. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.js +0 -249
  298. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +0 -1
  299. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +0 -65
  300. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +0 -1
  301. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +0 -163
  302. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +0 -1
  303. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +0 -115
  304. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.d.ts +0 -1
  305. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.js +0 -201
  306. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.d.ts +0 -1
  307. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.js +0 -169
  308. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.d.ts +0 -1
  309. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.js +0 -148
  310. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.d.ts +0 -1
  311. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.js +0 -210
  312. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.d.ts +0 -1
  313. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.js +0 -190
  314. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.d.ts +0 -1
  315. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.js +0 -161
  316. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.d.ts +0 -1
  317. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.js +0 -302
  318. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +0 -1
  319. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +0 -96
  320. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.d.ts +0 -1
  321. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.js +0 -252
  322. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.d.ts +0 -1
  323. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.js +0 -129
  324. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.d.ts +0 -15
  325. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.js +0 -38
  326. package/dist/_internal/server/providers/index.d.ts +0 -11
  327. package/dist/_internal/server/providers/index.js +0 -11
  328. package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +0 -52
  329. package/dist/_internal/server/providers/payment/razorpay-mock.js +0 -118
  330. package/dist/_internal/server/providers/resolve.d.ts +0 -36
  331. package/dist/_internal/server/providers/resolve.js +0 -31
  332. package/dist/_internal/server/providers/shipping/shiprocket-mock.d.ts +0 -29
  333. package/dist/_internal/server/providers/shipping/shiprocket-mock.js +0 -152
  334. package/dist/_internal/shared/types/__tests__/action-result.test.d.ts +0 -1
  335. package/dist/_internal/shared/types/__tests__/action-result.test.js +0 -65
  336. package/dist/errors/__tests__/error-mapping.test.d.ts +0 -1
  337. package/dist/errors/__tests__/error-mapping.test.js +0 -122
  338. package/dist/errors/__tests__/safe-read.test.d.ts +0 -1
  339. package/dist/errors/__tests__/safe-read.test.js +0 -39
  340. package/dist/features/addresses/repository/__tests__/addresses.repository.test.d.ts +0 -1
  341. package/dist/features/addresses/repository/__tests__/addresses.repository.test.js +0 -386
  342. package/dist/features/admin/components/AdminListingScaffold.d.ts +0 -41
  343. package/dist/features/admin/components/AdminListingScaffold.js +0 -68
  344. package/dist/features/admin/components/QuickActionsPanel.d.ts +0 -15
  345. package/dist/features/admin/components/QuickActionsPanel.js +0 -5
  346. package/dist/features/admin/repository/__tests__/notification.repository.test.d.ts +0 -1
  347. package/dist/features/admin/repository/__tests__/notification.repository.test.js +0 -356
  348. package/dist/features/admin/repository/__tests__/site-settings.repository.test.d.ts +0 -1
  349. package/dist/features/admin/repository/__tests__/site-settings.repository.test.js +0 -298
  350. package/dist/features/auctions/repository/__tests__/bid.repository.test.d.ts +0 -1
  351. package/dist/features/auctions/repository/__tests__/bid.repository.test.js +0 -290
  352. package/dist/features/auctions/repository/auctions.repository.d.ts +0 -12
  353. package/dist/features/auctions/repository/auctions.repository.js +0 -42
  354. package/dist/features/auth/repository/__tests__/session.repository.test.d.ts +0 -1
  355. package/dist/features/auth/repository/__tests__/session.repository.test.js +0 -310
  356. package/dist/features/auth/repository/__tests__/session.test.d.ts +0 -1
  357. package/dist/features/auth/repository/__tests__/session.test.js +0 -146
  358. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.d.ts +0 -1
  359. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.js +0 -171
  360. package/dist/features/auth/repository/__tests__/sms-counter.test.d.ts +0 -1
  361. package/dist/features/auth/repository/__tests__/sms-counter.test.js +0 -88
  362. package/dist/features/auth/repository/__tests__/token.repository.test.d.ts +0 -1
  363. package/dist/features/auth/repository/__tests__/token.repository.test.js +0 -260
  364. package/dist/features/auth/repository/__tests__/token.test.d.ts +0 -1
  365. package/dist/features/auth/repository/__tests__/token.test.js +0 -140
  366. package/dist/features/auth/repository/__tests__/user.repository.test.d.ts +0 -1
  367. package/dist/features/auth/repository/__tests__/user.repository.test.js +0 -352
  368. package/dist/features/auth/repository/__tests__/user.test.d.ts +0 -1
  369. package/dist/features/auth/repository/__tests__/user.test.js +0 -226
  370. package/dist/features/before-after/repository/before-after.repository.d.ts +0 -13
  371. package/dist/features/before-after/repository/before-after.repository.js +0 -36
  372. package/dist/features/before-after/server.d.ts +0 -6
  373. package/dist/features/before-after/server.js +0 -6
  374. package/dist/features/cart/repository/__tests__/cart.repository.test.d.ts +0 -1
  375. package/dist/features/cart/repository/__tests__/cart.repository.test.js +0 -371
  376. package/dist/features/categories/repository/__tests__/categories.repository.test.d.ts +0 -1
  377. package/dist/features/categories/repository/__tests__/categories.repository.test.js +0 -813
  378. package/dist/features/collections/repository/collections.repository.d.ts +0 -8
  379. package/dist/features/collections/repository/collections.repository.js +0 -16
  380. package/dist/features/collections/server.d.ts +0 -6
  381. package/dist/features/collections/server.js +0 -6
  382. package/dist/features/events/repository/__tests__/event.repository.test.d.ts +0 -1
  383. package/dist/features/events/repository/__tests__/event.repository.test.js +0 -299
  384. package/dist/features/faq/repository/__tests__/faqs.repository.test.d.ts +0 -1
  385. package/dist/features/faq/repository/__tests__/faqs.repository.test.js +0 -311
  386. package/dist/features/forms/Form.d.ts +0 -25
  387. package/dist/features/forms/Form.js +0 -37
  388. package/dist/features/history/repository/__tests__/user-history.repository.test.d.ts +0 -1
  389. package/dist/features/history/repository/__tests__/user-history.repository.test.js +0 -180
  390. package/dist/features/homepage/repository/__tests__/carousel.repository.test.d.ts +0 -1
  391. package/dist/features/homepage/repository/__tests__/carousel.repository.test.js +0 -182
  392. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.d.ts +0 -1
  393. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.js +0 -185
  394. package/dist/features/layout/ListingLayout.d.ts +0 -34
  395. package/dist/features/layout/ListingLayout.js +0 -103
  396. package/dist/features/messages/repository/__tests__/conversations.repository.test.d.ts +0 -1
  397. package/dist/features/messages/repository/__tests__/conversations.repository.test.js +0 -257
  398. package/dist/features/orders/repository/__tests__/orders.repository.test.d.ts +0 -1
  399. package/dist/features/orders/repository/__tests__/orders.repository.test.js +0 -211
  400. package/dist/features/payments/repository/__tests__/payout.repository.test.d.ts +0 -1
  401. package/dist/features/payments/repository/__tests__/payout.repository.test.js +0 -292
  402. package/dist/features/pre-orders/repository/preorders.repository.d.ts +0 -8
  403. package/dist/features/pre-orders/repository/preorders.repository.js +0 -25
  404. package/dist/features/products/repository/__tests__/product-features.repository.test.d.ts +0 -1
  405. package/dist/features/products/repository/__tests__/product-features.repository.test.js +0 -329
  406. package/dist/features/products/repository/__tests__/products.repository.test.d.ts +0 -1
  407. package/dist/features/products/repository/__tests__/products.repository.test.js +0 -607
  408. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.d.ts +0 -1
  409. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.js +0 -219
  410. package/dist/features/promotions/repository/__tests__/coupons.repository.test.d.ts +0 -1
  411. package/dist/features/promotions/repository/__tests__/coupons.repository.test.js +0 -480
  412. package/dist/features/promotions/repository/promotions.repository.d.ts +0 -14
  413. package/dist/features/promotions/repository/promotions.repository.js +0 -43
  414. package/dist/features/reviews/repository/__tests__/reviews.repository.test.d.ts +0 -1
  415. package/dist/features/reviews/repository/__tests__/reviews.repository.test.js +0 -327
  416. package/dist/features/scams/repository/__tests__/scammer.repository.test.d.ts +0 -1
  417. package/dist/features/scams/repository/__tests__/scammer.repository.test.js +0 -385
  418. package/dist/features/search/repository/__tests__/search.repository.test.d.ts +0 -1
  419. package/dist/features/search/repository/__tests__/search.repository.test.js +0 -369
  420. package/dist/features/seller/components/SellerStatCard.d.ts +0 -14
  421. package/dist/features/seller/components/SellerStatCard.js +0 -6
  422. package/dist/features/seller/components/seller-products-styles.d.ts +0 -7
  423. package/dist/features/seller/components/seller-products-styles.js +0 -14
  424. package/dist/features/seller/repository/__tests__/offer.repository.test.d.ts +0 -1
  425. package/dist/features/seller/repository/__tests__/offer.repository.test.js +0 -458
  426. package/dist/features/seller/repository/seller.repository.d.ts +0 -22
  427. package/dist/features/seller/repository/seller.repository.js +0 -72
  428. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.d.ts +0 -1
  429. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.js +0 -37
  430. package/dist/features/stores/repository/__tests__/store.repository.test.d.ts +0 -1
  431. package/dist/features/stores/repository/__tests__/store.repository.test.js +0 -261
  432. package/dist/features/stores/repository/stores.repository.d.ts +0 -11
  433. package/dist/features/stores/repository/stores.repository.js +0 -37
  434. package/dist/features/support/repository/__tests__/support.repository.test.d.ts +0 -1
  435. package/dist/features/support/repository/__tests__/support.repository.test.js +0 -312
  436. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.d.ts +0 -1
  437. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.js +0 -139
  438. package/dist/features/wishlist/repository/wishlist.repository.d.ts +0 -13
  439. package/dist/features/wishlist/repository/wishlist.repository.js +0 -31
  440. package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +0 -1
  441. package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +0 -93
  442. package/dist/providers/shipping-shiprocket/index.d.ts +0 -297
  443. package/dist/providers/shipping-shiprocket/index.js +0 -194
  444. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +0 -45
  445. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +0 -168
  446. package/dist/react/contexts/ThemeContext.d.ts +0 -13
  447. package/dist/react/contexts/ThemeContext.js +0 -64
  448. package/dist/schemas/webhooks/shiprocket.d.ts +0 -30
  449. package/dist/schemas/webhooks/shiprocket.js +0 -22
  450. package/dist/seed/actions/demo-seed-actions.d.ts +0 -42
  451. package/dist/seed/actions/demo-seed-actions.js +0 -36
  452. package/dist/seed/actions/index.d.ts +0 -1
  453. package/dist/seed/actions/index.js +0 -1
  454. package/dist/seed/sub-listings-seed-data.d.ts +0 -123
  455. package/dist/seed/sub-listings-seed-data.js +0 -447
  456. package/dist/seed/tester-checklist-seed-data.d.ts +0 -2
  457. package/dist/seed/tester-checklist-seed-data.js +0 -248
  458. package/dist/ui/components/DashboardStatsCard.d.ts +0 -15
  459. package/dist/ui/components/DashboardStatsCard.js +0 -27
  460. package/dist/ui/components/DashboardStatsCard.style.css +0 -68
  461. package/dist/ui/components/DynamicSelect.d.ts +0 -23
  462. package/dist/ui/components/DynamicSelect.js +0 -77
  463. package/dist/ui/components/DynamicSelect.style.css +0 -101
  464. package/dist/ui/components/InlineCreateSelect.d.ts +0 -48
  465. package/dist/ui/components/InlineCreateSelect.js +0 -75
  466. package/dist/ui/components/ListingViewShell.d.ts +0 -37
  467. package/dist/ui/components/ListingViewShell.js +0 -9
  468. package/dist/ui/components/PaginatedMultiSelect.d.ts +0 -28
  469. package/dist/ui/components/PaginatedMultiSelect.js +0 -141
  470. package/dist/ui/components/PaginatedMultiSelect.style.css +0 -272
  471. package/dist/ui/components/SectionTabs.d.ts +0 -19
  472. package/dist/ui/components/SectionTabs.js +0 -66
  473. package/dist/ui/components/SectionTabs.style.css +0 -164
  474. package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +0 -1
  475. package/dist/ui/components/__tests__/BulkActionBar.test.js +0 -96
  476. package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +0 -1
  477. package/dist/ui/components/__tests__/ListingToolbar.test.js +0 -125
  478. package/dist/ui/components/__tests__/new-primitives.test.d.ts +0 -1
  479. package/dist/ui/components/__tests__/new-primitives.test.js +0 -187
@@ -1,36 +0,0 @@
1
- /**
2
- * `resolvePaymentProvider` — decide between the real adapter and the
3
- * in-process mock based on site-settings feature flags.
4
- *
5
- * Resolution rule (single explicit boolean, no implicit fallback):
6
- *
7
- * 1. Read `siteSettings.featureFlags.useMockPayment`.
8
- * 2. If the flag is `true` and `process.env.NODE_ENV !== "production"` →
9
- * return the mock provider.
10
- * 3. If the flag is `true` and `process.env.NODE_ENV === "production"` →
11
- * THROW. Production must never run with a mock flag set. Loud failure
12
- * is the contract.
13
- * 4. Otherwise → return the real provider supplied by the caller.
14
- *
15
- * The resolver is intentionally provider-agnostic (it accepts factories so
16
- * the consumer's `providers.config.ts` controls instantiation), keeping this
17
- * file zero-dep on the Razorpay SDK chain.
18
- *
19
- * Shipping has no equivalent resolver: the manual shipping provider makes no
20
- * external API calls, so there is nothing to mock — `providers.config.ts`
21
- * registers `ManualShippingProvider` directly.
22
- */
23
- import type { IPaymentProvider } from "../../../contracts";
24
- export interface ProviderResolutionContext {
25
- readonly nodeEnv: string;
26
- readonly siteSettings: {
27
- readonly featureFlags?: {
28
- readonly useMockPayment?: boolean;
29
- };
30
- };
31
- }
32
- export interface PaymentResolutionFactories {
33
- readonly real: () => Promise<IPaymentProvider> | IPaymentProvider;
34
- readonly mock: () => Promise<IPaymentProvider> | IPaymentProvider;
35
- }
36
- export declare function resolvePaymentProvider(ctx: ProviderResolutionContext, factories: PaymentResolutionFactories): Promise<IPaymentProvider>;
@@ -1,31 +0,0 @@
1
- /**
2
- * `resolvePaymentProvider` — decide between the real adapter and the
3
- * in-process mock based on site-settings feature flags.
4
- *
5
- * Resolution rule (single explicit boolean, no implicit fallback):
6
- *
7
- * 1. Read `siteSettings.featureFlags.useMockPayment`.
8
- * 2. If the flag is `true` and `process.env.NODE_ENV !== "production"` →
9
- * return the mock provider.
10
- * 3. If the flag is `true` and `process.env.NODE_ENV === "production"` →
11
- * THROW. Production must never run with a mock flag set. Loud failure
12
- * is the contract.
13
- * 4. Otherwise → return the real provider supplied by the caller.
14
- *
15
- * The resolver is intentionally provider-agnostic (it accepts factories so
16
- * the consumer's `providers.config.ts` controls instantiation), keeping this
17
- * file zero-dep on the Razorpay SDK chain.
18
- *
19
- * Shipping has no equivalent resolver: the manual shipping provider makes no
20
- * external API calls, so there is nothing to mock — `providers.config.ts`
21
- * registers `ManualShippingProvider` directly.
22
- */
23
- export async function resolvePaymentProvider(ctx, factories) {
24
- const want = ctx.siteSettings.featureFlags?.useMockPayment === true;
25
- if (want && ctx.nodeEnv === "production") {
26
- throw new Error("[providers] siteSettings.featureFlags.useMockPayment is TRUE in production. " +
27
- "The mock payment provider must never run in production. Set the flag to false " +
28
- "in Admin → Site Settings, or unset NODE_ENV=production for the deploy.");
29
- }
30
- return want ? await factories.mock() : await factories.real();
31
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * `MockShiprocketProvider` — in-process mock implementing `IShippingProvider`.
3
- *
4
- * Replaces the orphaned `/api/dev/mock-shiprocket/**` HTTP routes (deleted
5
- * in Track H). State is per-process; status progression is deterministic so
6
- * tests can assert against a known sequence.
7
- */
8
- import type { CreateShipmentInput, IShippingProvider, ServiceabilityResult, Shipment, TrackingInfo } from "../../../../contracts";
9
- export type ShipmentEvent = "Pickup Scheduled" | "Pickup Completed" | "In Transit" | "Out for Delivery" | "Delivered" | "Cancelled";
10
- export type ShipmentEventSink = (trackingId: string, event: ShipmentEvent, shipment: Shipment) => Promise<void> | void;
11
- export declare class MockShiprocketProvider implements IShippingProvider {
12
- readonly name: "shiprocket-mock";
13
- private readonly shipments;
14
- private eventSink;
15
- setEventSink(sink: ShipmentEventSink | null): void;
16
- createShipment(data: CreateShipmentInput): Promise<Shipment>;
17
- trackShipment(trackingId: string): Promise<TrackingInfo>;
18
- cancelShipment(shipmentId: string): Promise<void>;
19
- private findShipmentById;
20
- private notifyCancellation;
21
- checkServiceability(pincode: string, weight: number): Promise<ServiceabilityResult>;
22
- generateLabel(shipmentId: string): Promise<ArrayBuffer>;
23
- /**
24
- * Mocks-only — advance a shipment's tracking status and fire a tracking
25
- * event through the consumer-registered sink. Used by
26
- * `/api/admin/dev/emit-shipping-event` to drive end-to-end test flows.
27
- */
28
- emitTrackingEvent(trackingId: string, event: ShipmentEvent): Promise<void>;
29
- }
@@ -1,152 +0,0 @@
1
- /**
2
- * `MockShiprocketProvider` — in-process mock implementing `IShippingProvider`.
3
- *
4
- * Replaces the orphaned `/api/dev/mock-shiprocket/**` HTTP routes (deleted
5
- * in Track H). State is per-process; status progression is deterministic so
6
- * tests can assert against a known sequence.
7
- */
8
- import { randomBytes } from "node:crypto";
9
- const PICKUP_SCHEDULED = "Pickup Scheduled";
10
- const TRACKING_PROGRESSION = [
11
- PICKUP_SCHEDULED,
12
- "Pickup Completed",
13
- "In Transit",
14
- "Out for Delivery",
15
- "Delivered",
16
- ];
17
- export class MockShiprocketProvider {
18
- constructor() {
19
- this.name = "shiprocket-mock";
20
- this.shipments = new Map();
21
- this.eventSink = null;
22
- }
23
- setEventSink(sink) {
24
- this.eventSink = sink;
25
- }
26
- async createShipment(data) {
27
- const trackingId = `MOCK${randomBytes(5).toString("hex").toUpperCase()}`;
28
- const id = `shp_mock_${randomBytes(8).toString("hex")}`;
29
- const courier = "MockExpress";
30
- const initialEvent = {
31
- status: PICKUP_SCHEDULED,
32
- location: data.pickup.city,
33
- timestamp: new Date().toISOString(),
34
- description: "Pickup scheduled with carrier",
35
- };
36
- this.shipments.set(trackingId, {
37
- id,
38
- trackingId,
39
- orderId: data.orderId,
40
- courier,
41
- createdAt: initialEvent.timestamp,
42
- events: [initialEvent],
43
- });
44
- return {
45
- id,
46
- trackingId,
47
- orderId: data.orderId,
48
- status: initialEvent.status,
49
- courier,
50
- createdAt: initialEvent.timestamp,
51
- };
52
- }
53
- async trackShipment(trackingId) {
54
- const shipment = this.shipments.get(trackingId);
55
- if (!shipment) {
56
- throw Object.assign(new Error(`Mock shipment not found: ${trackingId}`), {
57
- httpStatus: 404,
58
- });
59
- }
60
- return {
61
- trackingId,
62
- currentStatus: shipment.events[shipment.events.length - 1]?.status ?? "Unknown",
63
- events: [...shipment.events],
64
- };
65
- }
66
- async cancelShipment(shipmentId) {
67
- const entry = this.findShipmentById(shipmentId);
68
- if (!entry) {
69
- throw Object.assign(new Error(`Mock shipment not found: ${shipmentId}`), {
70
- httpStatus: 404,
71
- });
72
- }
73
- const [trackingId, ship] = entry;
74
- ship.events.push({
75
- status: "Cancelled",
76
- location: ship.events[ship.events.length - 1]?.location ?? "Origin",
77
- timestamp: new Date().toISOString(),
78
- description: "Mock shipment cancelled",
79
- });
80
- await this.notifyCancellation(trackingId, ship);
81
- }
82
- findShipmentById(shipmentId) {
83
- for (const entry of this.shipments) {
84
- if (entry[1].id === shipmentId)
85
- return entry;
86
- }
87
- return null;
88
- }
89
- async notifyCancellation(trackingId, ship) {
90
- if (!this.eventSink)
91
- return;
92
- await this.eventSink(trackingId, "Cancelled", {
93
- id: ship.id,
94
- trackingId,
95
- orderId: ship.orderId,
96
- status: "Cancelled",
97
- courier: ship.courier,
98
- createdAt: ship.createdAt,
99
- });
100
- }
101
- async checkServiceability(pincode, weight) {
102
- // Mock policy: every pincode is serviceable; rate scales with weight.
103
- return {
104
- isServiceable: true,
105
- couriers: [
106
- { name: "MockExpress", estimatedDays: 3, rate: Math.round(60 + weight * 25) },
107
- { name: "MockEconomy", estimatedDays: 5, rate: Math.round(40 + weight * 18) },
108
- ],
109
- };
110
- }
111
- async generateLabel(shipmentId) {
112
- void shipmentId;
113
- // Mock label: a tiny PDF-like blob. Production tests never read the
114
- // bytes — they assert the API contract returns an ArrayBuffer.
115
- const placeholder = new TextEncoder().encode(`%PDF-MOCK\n${shipmentId}\n`);
116
- return placeholder.buffer.slice(placeholder.byteOffset, placeholder.byteOffset + placeholder.byteLength);
117
- }
118
- /**
119
- * Mocks-only — advance a shipment's tracking status and fire a tracking
120
- * event through the consumer-registered sink. Used by
121
- * `/api/admin/dev/emit-shipping-event` to drive end-to-end test flows.
122
- */
123
- async emitTrackingEvent(trackingId, event) {
124
- const shipment = this.shipments.get(trackingId);
125
- if (!shipment) {
126
- throw new Error(`Mock shipment not found: ${trackingId}`);
127
- }
128
- if (!this.eventSink) {
129
- throw new Error("MockShiprocketProvider.emitTrackingEvent called with no sink registered. " +
130
- "Call provider.setEventSink(handler) at startup.");
131
- }
132
- if (event !== "Cancelled" && !TRACKING_PROGRESSION.includes(event)) {
133
- throw new Error(`Unknown tracking event: ${event}`);
134
- }
135
- const last = shipment.events[shipment.events.length - 1];
136
- const trackingEvent = {
137
- status: event,
138
- location: last?.location ?? "Origin",
139
- timestamp: new Date().toISOString(),
140
- description: `Mock event: ${event}`,
141
- };
142
- shipment.events.push(trackingEvent);
143
- await this.eventSink(trackingId, event, {
144
- id: shipment.id,
145
- trackingId,
146
- orderId: shipment.orderId,
147
- status: event,
148
- courier: shipment.courier,
149
- createdAt: shipment.createdAt,
150
- });
151
- }
152
- }
@@ -1,65 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { wrapAction, isOk, unwrap } from "../action-result";
3
- import { ValidationError } from "../../../../errors/validation-error";
4
- import { NotFoundError } from "../../../../errors/not-found-error";
5
- describe("wrapAction", () => {
6
- it("returns ok envelope on success", async () => {
7
- const r = await wrapAction(async () => 42);
8
- expect(r.ok).toBe(true);
9
- if (r.ok)
10
- expect(r.data).toBe(42);
11
- });
12
- it("returns error envelope on thrown ValidationError → VALIDATION_FAILED", async () => {
13
- const r = await wrapAction(async () => {
14
- throw new ValidationError("bad");
15
- });
16
- expect(r.ok).toBe(false);
17
- if (!r.ok) {
18
- expect(r.code).toBe("VALIDATION_FAILED");
19
- expect(r.error).toBe("bad");
20
- }
21
- });
22
- it("returns error envelope on thrown NotFoundError → NOT_FOUND", async () => {
23
- const r = await wrapAction(async () => {
24
- throw new NotFoundError("user-1");
25
- });
26
- expect(r.ok).toBe(false);
27
- if (!r.ok)
28
- expect(r.code).toBe("NOT_FOUND");
29
- });
30
- it("returns error envelope on unknown Error → INTERNAL", async () => {
31
- const r = await wrapAction(async () => {
32
- throw new Error("oops");
33
- });
34
- expect(r.ok).toBe(false);
35
- if (!r.ok)
36
- expect(r.code).toBe("INTERNAL");
37
- });
38
- it("never throws — string throws also produce an envelope", async () => {
39
- const r = await wrapAction(async () => {
40
- throw "raw string";
41
- });
42
- expect(r.ok).toBe(false);
43
- });
44
- });
45
- describe("isOk", () => {
46
- it("narrows ok arm", async () => {
47
- const r = await wrapAction(async () => "x");
48
- if (isOk(r)) {
49
- // type narrowed — `data` accessible
50
- expect(r.data).toBe("x");
51
- }
52
- });
53
- });
54
- describe("unwrap", () => {
55
- it("returns data on ok", async () => {
56
- const r = await wrapAction(async () => 7);
57
- expect(unwrap(r)).toBe(7);
58
- });
59
- it("throws on error", async () => {
60
- const r = await wrapAction(async () => {
61
- throw new ValidationError("bad");
62
- });
63
- expect(() => unwrap(r)).toThrow("bad");
64
- });
65
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,122 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { mapToHttpError, HTTP_ERROR_CODES } from "../error-mapping";
3
- import { ApiError } from "../api-error";
4
- import { ValidationError } from "../validation-error";
5
- import { AuthenticationError } from "../authentication-error";
6
- import { AuthorizationError } from "../authorization-error";
7
- import { NotFoundError } from "../not-found-error";
8
- import { DatabaseError } from "../database-error";
9
- import { RazorpayUnreachableError } from "../razorpay-unreachable";
10
- describe("mapToHttpError", () => {
11
- describe("AppError subclasses", () => {
12
- it("maps ValidationError → 400 VALIDATION_FAILED", () => {
13
- const r = mapToHttpError(new ValidationError("bad email"));
14
- expect(r.status).toBe(400);
15
- expect(r.code).toBe(HTTP_ERROR_CODES.VALIDATION_FAILED);
16
- expect(r.message).toBe("bad email");
17
- });
18
- it("maps AuthenticationError → 401 UNAUTHENTICATED", () => {
19
- const r = mapToHttpError(new AuthenticationError("nope"));
20
- expect(r.status).toBe(401);
21
- expect(r.code).toBe(HTTP_ERROR_CODES.UNAUTHENTICATED);
22
- });
23
- it("maps AuthorizationError → 403 FORBIDDEN", () => {
24
- const r = mapToHttpError(new AuthorizationError("denied"));
25
- expect(r.status).toBe(403);
26
- expect(r.code).toBe(HTTP_ERROR_CODES.FORBIDDEN);
27
- });
28
- it("maps NotFoundError → 404 NOT_FOUND", () => {
29
- const r = mapToHttpError(new NotFoundError("missing"));
30
- expect(r.status).toBe(404);
31
- expect(r.code).toBe(HTTP_ERROR_CODES.NOT_FOUND);
32
- });
33
- it("maps RazorpayUnreachableError → 503 UPSTREAM_UNAVAILABLE", () => {
34
- const r = mapToHttpError(new RazorpayUnreachableError("network"));
35
- expect(r.status).toBe(503);
36
- expect(r.code).toBe(HTTP_ERROR_CODES.UPSTREAM_UNAVAILABLE);
37
- });
38
- it("maps ApiError → its declared status + code", () => {
39
- const r = mapToHttpError(new ApiError(418, "teapot"));
40
- expect(r.status).toBe(418);
41
- expect(r.code).toBe("API_ERROR");
42
- expect(r.message).toBe("teapot");
43
- });
44
- });
45
- describe("DatabaseError wrapping FirestoreError", () => {
46
- it("unwraps numeric FirestoreError 5 → 404 NOT_FOUND", () => {
47
- const dbErr = new DatabaseError("doc missing", { code: 5, message: "not-found" });
48
- const r = mapToHttpError(dbErr);
49
- expect(r.status).toBe(404);
50
- expect(r.code).toBe(HTTP_ERROR_CODES.NOT_FOUND);
51
- });
52
- it("unwraps numeric FirestoreError 7 → 403 PERMISSION_DENIED", () => {
53
- const r = mapToHttpError(new DatabaseError("denied", { code: 7 }));
54
- expect(r.status).toBe(403);
55
- expect(r.code).toBe(HTTP_ERROR_CODES.PERMISSION_DENIED);
56
- });
57
- it("unwraps numeric FirestoreError 10 → 409 CONCURRENT_MODIFICATION", () => {
58
- const r = mapToHttpError(new DatabaseError("aborted", { code: 10 }));
59
- expect(r.status).toBe(409);
60
- expect(r.code).toBe(HTTP_ERROR_CODES.CONCURRENT_MODIFICATION);
61
- });
62
- it("falls back to 500 DATABASE_ERROR when inner cause is not FirestoreError", () => {
63
- const r = mapToHttpError(new DatabaseError("disk full", undefined));
64
- expect(r.status).toBe(500);
65
- });
66
- });
67
- describe("bare FirestoreError-shaped objects", () => {
68
- it("maps numeric code 7 → 403 PERMISSION_DENIED", () => {
69
- const r = mapToHttpError({ code: 7, message: "permission-denied" });
70
- expect(r.status).toBe(403);
71
- expect(r.code).toBe(HTTP_ERROR_CODES.PERMISSION_DENIED);
72
- });
73
- it("maps string code permission-denied → 403", () => {
74
- const r = mapToHttpError({ code: "permission-denied", message: "no" });
75
- expect(r.status).toBe(403);
76
- expect(r.code).toBe(HTTP_ERROR_CODES.PERMISSION_DENIED);
77
- });
78
- });
79
- describe("Zod-shaped errors", () => {
80
- it("maps Zod-like { issues } → 400 VALIDATION_FAILED with issues", () => {
81
- const r = mapToHttpError({ issues: [{ path: ["email"], message: "bad" }] });
82
- expect(r.status).toBe(400);
83
- expect(r.code).toBe(HTTP_ERROR_CODES.VALIDATION_FAILED);
84
- expect(r.issues).toHaveLength(1);
85
- });
86
- });
87
- describe("Unknown errors", () => {
88
- it("scrubs in production mode", () => {
89
- const r = mapToHttpError(new Error("DB password=secret"), {
90
- isProduction: true,
91
- });
92
- expect(r.status).toBe(500);
93
- expect(r.message).toBe("An internal error occurred");
94
- });
95
- it("preserves message in dev mode", () => {
96
- const r = mapToHttpError(new Error("specific dev message"));
97
- expect(r.status).toBe(500);
98
- expect(r.message).toBe("specific dev message");
99
- });
100
- it("handles string throws", () => {
101
- const r = mapToHttpError("oops");
102
- expect(r.status).toBe(500);
103
- expect(r.message).toBe("oops");
104
- });
105
- it("handles undefined throws", () => {
106
- const r = mapToHttpError(undefined);
107
- expect(r.status).toBe(500);
108
- });
109
- });
110
- describe("Legacy { status } objects", () => {
111
- it("maps { status: 401 } → 401 UNAUTHENTICATED", () => {
112
- const r = mapToHttpError({ status: 401, message: "auth" });
113
- expect(r.status).toBe(401);
114
- expect(r.code).toBe(HTTP_ERROR_CODES.UNAUTHENTICATED);
115
- });
116
- it("maps { statusCode: 404 } → 404 NOT_FOUND", () => {
117
- const r = mapToHttpError({ statusCode: 404, message: "gone" });
118
- expect(r.status).toBe(404);
119
- expect(r.code).toBe(HTTP_ERROR_CODES.NOT_FOUND);
120
- });
121
- });
122
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,39 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { safeRead, installDegradedReadReporter } from "../safe-read";
3
- describe("safeRead", () => {
4
- it("returns the data on success without invoking the reporter", async () => {
5
- const reporter = vi.fn();
6
- installDegradedReadReporter(reporter);
7
- const result = await safeRead(async () => 42, {
8
- route: "/test",
9
- key: "k",
10
- fallback: -1,
11
- });
12
- expect(result).toBe(42);
13
- expect(reporter).not.toHaveBeenCalled();
14
- });
15
- it("returns the fallback and reports on failure", async () => {
16
- const reporter = vi.fn();
17
- installDegradedReadReporter(reporter);
18
- const fallback = ["empty"];
19
- const result = await safeRead(async () => {
20
- throw new Error("boom");
21
- }, { route: "/test", key: "k2", fallback });
22
- expect(result).toBe(fallback);
23
- expect(reporter).toHaveBeenCalledTimes(1);
24
- const call = reporter.mock.calls[0][0];
25
- expect(call.route).toBe("/test");
26
- expect(call.key).toBe("k2");
27
- expect(call.code).toBe("DEGRADED_READ");
28
- expect(call.message).toBe("boom");
29
- });
30
- it("never throws when the reporter itself throws", async () => {
31
- installDegradedReadReporter(() => {
32
- throw new Error("reporter broken");
33
- });
34
- const result = await safeRead(async () => {
35
- throw new Error("inner");
36
- }, { route: "/x", key: "y", fallback: null });
37
- expect(result).toBeNull();
38
- });
39
- });