@mohasinac/appkit 3.8.2 → 3.9.1

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 (508) 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/AdminSectionsView.js +4 -4
  103. package/dist/features/admin/components/AdminSiteSettingsView.js +11 -11
  104. package/dist/features/admin/components/AdminStickersView.js +2 -2
  105. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  106. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +13 -5
  107. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +4 -0
  108. package/dist/features/admin/components/sections/adminSectionsTypes.js +9 -5
  109. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -1
  110. package/dist/features/admin/hooks/useAdminListingData.js +3 -2
  111. package/dist/features/admin/schemas/firestore.d.ts +9 -7
  112. package/dist/features/admin/schemas/firestore.js +4 -3
  113. package/dist/features/auctions/components/AuctionBidsTable.js +3 -3
  114. package/dist/features/auth/checkout-value-otp.d.ts +46 -0
  115. package/dist/features/auth/checkout-value-otp.js +73 -0
  116. package/dist/features/auth/repository/user.repository.d.ts +6 -0
  117. package/dist/features/auth/repository/user.repository.js +19 -0
  118. package/dist/features/auth/schemas/firestore.d.ts +10 -0
  119. package/dist/features/auth/schemas/firestore.js +2 -0
  120. package/dist/features/cart/actions/cart-actions.d.ts +1 -1
  121. package/dist/features/cart/actions/cart-actions.js +4 -4
  122. package/dist/features/cart/components/CartView.d.ts +2 -2
  123. package/dist/features/cart/components/ShippingPicker.d.ts +4 -4
  124. package/dist/features/cart/components/ShippingPicker.js +11 -11
  125. package/dist/features/cart/repository/cart.repository.d.ts +1 -1
  126. package/dist/features/cart/repository/cart.repository.js +2 -2
  127. package/dist/features/cart/schemas/firestore.d.ts +2 -2
  128. package/dist/features/catalogue/components/CatalogueItemEditorView.js +3 -3
  129. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -2
  130. package/dist/features/catalogue/schemas/validation.js +1 -1
  131. package/dist/features/categories/components/BundleCollage.js +2 -2
  132. package/dist/features/categories/components/BundleDetailView.js +2 -2
  133. package/dist/features/categories/components/BundleItemsPicker.d.ts +1 -1
  134. package/dist/features/categories/components/BundleItemsPicker.js +2 -2
  135. package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
  136. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  137. package/dist/features/categories/schemas/index.d.ts +3 -3
  138. package/dist/features/categories/schemas/index.js +2 -2
  139. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +16 -0
  140. package/dist/features/checkout/actions/checkout-value-otp-actions.js +83 -0
  141. package/dist/features/checkout/actions/index.d.ts +1 -0
  142. package/dist/features/checkout/actions/index.js +1 -0
  143. package/dist/features/checkout/schemas/firestore.d.ts +1 -1
  144. package/dist/features/classified/components/index.d.ts +0 -4
  145. package/dist/features/classified/components/index.js +0 -2
  146. package/dist/features/digital-codes/components/index.d.ts +0 -4
  147. package/dist/features/digital-codes/components/index.js +0 -2
  148. package/dist/features/events/schemas/index.d.ts +1 -1
  149. package/dist/features/events/schemas/index.js +1 -1
  150. package/dist/features/homepage/components/BrandsSection.d.ts +4 -1
  151. package/dist/features/homepage/components/BrandsSection.js +2 -2
  152. package/dist/features/homepage/components/CustomCardsSection.js +3 -3
  153. package/dist/features/homepage/components/CustomerReviewsSection.d.ts +4 -1
  154. package/dist/features/homepage/components/CustomerReviewsSection.js +2 -2
  155. package/dist/features/homepage/components/EventsSection.d.ts +4 -1
  156. package/dist/features/homepage/components/EventsSection.js +2 -2
  157. package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +2 -1
  158. package/dist/features/homepage/components/FeaturedAuctionsSection.js +2 -2
  159. package/dist/features/homepage/components/FeaturedBundlesSection.js +2 -2
  160. package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +2 -1
  161. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +2 -2
  162. package/dist/features/homepage/components/FeaturedProductsSection.d.ts +2 -1
  163. package/dist/features/homepage/components/FeaturedProductsSection.js +2 -2
  164. package/dist/features/homepage/components/FeaturedStoresSection.d.ts +4 -1
  165. package/dist/features/homepage/components/FeaturedStoresSection.js +2 -2
  166. package/dist/features/homepage/components/HomepageCustomerReviewsSection.d.ts +4 -1
  167. package/dist/features/homepage/components/HomepageCustomerReviewsSection.js +2 -2
  168. package/dist/features/homepage/components/SectionCarousel.d.ts +3 -1
  169. package/dist/features/homepage/components/SectionCarousel.js +2 -2
  170. package/dist/features/homepage/components/ShopByCategorySection.d.ts +4 -1
  171. package/dist/features/homepage/components/ShopByCategorySection.js +2 -2
  172. package/dist/features/homepage/lib/section-renderer.js +9 -9
  173. package/dist/features/homepage/schemas/firestore.d.ts +8 -0
  174. package/dist/features/live/components/index.d.ts +0 -4
  175. package/dist/features/live/components/index.js +0 -2
  176. package/dist/features/lottery/types/index.d.ts +3 -3
  177. package/dist/features/lottery/types/index.js +5 -5
  178. package/dist/features/orders/components/OrderPaymentSummary.js +2 -2
  179. package/dist/features/orders/components/OrderSiblingPayments.js +1 -1
  180. package/dist/features/orders/components/RefundHistoryTable.js +1 -1
  181. package/dist/features/orders/components/RefundRequestView.js +1 -1
  182. package/dist/features/orders/constants/payment-window.d.ts +10 -0
  183. package/dist/features/orders/constants/payment-window.js +10 -0
  184. package/dist/features/orders/repository/orders.repository.d.ts +25 -0
  185. package/dist/features/orders/repository/orders.repository.js +50 -1
  186. package/dist/features/orders/schemas/firestore.d.ts +50 -2
  187. package/dist/features/orders/schemas/index.d.ts +24 -24
  188. package/dist/features/orders/schemas/index.js +20 -20
  189. package/dist/features/orders/types/index.d.ts +4 -0
  190. package/dist/features/orders/utils/bundle-grouping.d.ts +1 -1
  191. package/dist/features/orders/utils/bundle-grouping.js +1 -1
  192. package/dist/features/payments/schemas/index.d.ts +10 -10
  193. package/dist/features/payments/schemas/index.js +9 -9
  194. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -2
  195. package/dist/features/products/components/ArtStickersListView.d.ts +7 -0
  196. package/dist/features/products/components/ArtStickersListView.js +57 -0
  197. package/dist/features/products/components/GroupSettingsPanel.js +1 -1
  198. package/dist/features/products/components/MakeOfferButton.js +3 -3
  199. package/dist/features/products/components/MarketplaceBundleCard.d.ts +1 -1
  200. package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
  201. package/dist/features/products/components/PrizeDrawCollage.js +2 -2
  202. package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
  203. package/dist/features/products/components/PrizeRevealModal.js +1 -1
  204. package/dist/features/products/components/ProductDetailPageView.js +2 -9
  205. package/dist/features/products/components/ProductForm.js +2 -2
  206. package/dist/features/products/components/ProductGrid.js +2 -2
  207. package/dist/features/products/components/ProductsIndexListing.d.ts +13 -1
  208. package/dist/features/products/components/ProductsIndexListing.js +7 -5
  209. package/dist/features/products/components/ProductsIndexPageView.js +6 -1
  210. package/dist/features/products/constants/listing-tabs.d.ts +42 -17
  211. package/dist/features/products/constants/listing-tabs.js +25 -6
  212. package/dist/features/products/schemas/catalog-product.d.ts +5 -5
  213. package/dist/features/products/schemas/catalog-product.js +1 -1
  214. package/dist/features/products/schemas/firestore.d.ts +5 -5
  215. package/dist/features/products/schemas/firestore.js +2 -2
  216. package/dist/features/products/types/index.d.ts +5 -2
  217. package/dist/features/promotions/components/CouponCard.js +2 -2
  218. package/dist/features/promotions/schemas/firestore.d.ts +2 -0
  219. package/dist/features/promotions/schemas/firestore.js +1 -0
  220. package/dist/features/promotions/schemas/index.d.ts +14 -14
  221. package/dist/features/promotions/schemas/index.js +6 -6
  222. package/dist/features/scams/components/ScamProfileView.js +3 -7
  223. package/dist/features/scams/components/ScamRegistryView.js +2 -6
  224. package/dist/features/scams/schemas/firestore.d.ts +1 -1
  225. package/dist/features/search/components/Search.d.ts +1 -1
  226. package/dist/features/seller/actions/offer-actions.js +1 -1
  227. package/dist/features/seller/components/PrintCenterView.js +2 -2
  228. package/dist/features/seller/components/QuickProductForm.js +5 -5
  229. package/dist/features/seller/components/SellerArtView.js +2 -2
  230. package/dist/features/seller/components/SellerAuctionsView.js +2 -2
  231. package/dist/features/seller/components/SellerBidsView.js +2 -2
  232. package/dist/features/seller/components/SellerBundlesView.js +6 -6
  233. package/dist/features/seller/components/SellerClassifiedView.js +2 -2
  234. package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
  235. package/dist/features/seller/components/SellerLiveView.js +2 -2
  236. package/dist/features/seller/components/SellerOffersView.js +2 -2
  237. package/dist/features/seller/components/SellerOrdersView.js +3 -3
  238. package/dist/features/seller/components/SellerPayoutRequestView.js +2 -2
  239. package/dist/features/seller/components/SellerPayoutSettingsView.js +2 -2
  240. package/dist/features/seller/components/SellerPayoutsView.js +2 -2
  241. package/dist/features/seller/components/SellerPreOrdersView.js +2 -2
  242. package/dist/features/seller/components/SellerPrizeDrawsView.js +2 -2
  243. package/dist/features/seller/components/SellerProductShell.js +8 -8
  244. package/dist/features/seller/components/SellerProductsView.js +1 -1
  245. package/dist/features/seller/components/SellerShippingView.js +6 -6
  246. package/dist/features/seller/components/SellerStickersView.js +2 -2
  247. package/dist/features/seller/hooks/useSellerListingData.d.ts +1 -1
  248. package/dist/features/seller/hooks/useSellerListingData.js +3 -2
  249. package/dist/features/shipments/components/AdminShipmentEditorView.js +10 -10
  250. package/dist/features/shipments/components/AdminShipmentLotItemsView.js +4 -4
  251. package/dist/features/shipments/components/AdminShipmentProjectionsView.js +5 -5
  252. package/dist/features/shipments/components/AdminShipmentsView.js +4 -4
  253. package/dist/features/shipments/repository/shipment-lots.repository.d.ts +2 -2
  254. package/dist/features/shipments/repository/shipment-lots.repository.js +8 -8
  255. package/dist/features/shipments/schemas/firestore.d.ts +21 -21
  256. package/dist/features/shipments/schemas/firestore.js +9 -9
  257. package/dist/features/shipments/schemas/validation.d.ts +30 -30
  258. package/dist/features/shipments/schemas/validation.js +6 -6
  259. package/dist/features/shipments/utils/cost-allocation.d.ts +5 -5
  260. package/dist/features/shipments/utils/cost-allocation.js +39 -38
  261. package/dist/features/store-extensions/schemas/firestore.d.ts +5 -5
  262. package/dist/features/stores/components/StoreDetailLayoutView.js +9 -13
  263. package/dist/features/stores/schemas/firestore.d.ts +7 -7
  264. package/dist/features/stores/schemas/index.d.ts +84 -84
  265. package/dist/features/stores/schemas/index.js +5 -5
  266. package/dist/features/tester/seed-data/categories-tester-seed-data.js +1 -1
  267. package/dist/features/tester/seed-data/products-tester-seed-data.js +6 -6
  268. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +9 -2
  269. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +8 -1
  270. package/dist/features/whatsapp-bot/helpers/whatsapp.js +13 -2
  271. package/dist/features/whatsapp-bot/types/index.d.ts +9 -1
  272. package/dist/index.d.ts +3 -7
  273. package/dist/index.js +7 -5
  274. package/dist/next/routing/route-map.d.ts +2 -0
  275. package/dist/next/routing/route-map.js +6 -0
  276. package/dist/schemas/firestore-helpers.d.ts +2 -2
  277. package/dist/schemas/firestore-helpers.js +2 -2
  278. package/dist/schemas/registry.d.ts +73 -73
  279. package/dist/seed/bids-seed-data.js +6 -6
  280. package/dist/seed/blog-posts-seed-data.js +1 -0
  281. package/dist/seed/cart-seed-data.js +13 -13
  282. package/dist/seed/catalogue-seed-data.js +6 -6
  283. package/dist/seed/categories-seed-data.js +5 -5
  284. package/dist/seed/claimed-coupons-seed-data.js +3 -3
  285. package/dist/seed/coupons-seed-data.js +20 -20
  286. package/dist/seed/events-seed-data.js +27 -27
  287. package/dist/seed/factories/bid.factory.js +1 -1
  288. package/dist/seed/faq-seed-data.js +20 -1
  289. package/dist/seed/grouped-listings-seed-data.d.ts +2 -2
  290. package/dist/seed/grouped-listings-seed-data.js +3 -3
  291. package/dist/seed/homepage-sections-seed-data.js +10 -0
  292. package/dist/seed/offers-seed-data.js +19 -19
  293. package/dist/seed/orders-seed-data.js +29 -29
  294. package/dist/seed/payouts-seed-data.js +7 -7
  295. package/dist/seed/products-auctions-seed-data.js +6 -6
  296. package/dist/seed/products-preorders-seed-data.d.ts +2 -2
  297. package/dist/seed/products-preorders-seed-data.js +1 -1
  298. package/dist/seed/products-standard-seed-data.js +8 -8
  299. package/dist/seed/scammers-seed-data.js +2 -2
  300. package/dist/seed/shipments-seed-data.js +29 -29
  301. package/dist/seed/site-settings-seed-data.js +3 -2
  302. package/dist/seed/store-extensions-seed-data.js +8 -8
  303. package/dist/seed/stores-seed-data.js +37 -8
  304. package/dist/seed/users-seed-data.js +38 -1
  305. package/dist/server-entry.d.ts +1 -3
  306. package/dist/server-entry.js +1 -3
  307. package/dist/server.d.ts +2 -1
  308. package/dist/server.js +3 -1
  309. package/dist/ui/components/HorizontalScroller.js +3 -0
  310. package/dist/ui/components/PriceDisplay.js +3 -12
  311. package/dist/utils/number.formatter.d.ts +2 -7
  312. package/dist/utils/number.formatter.js +3 -8
  313. package/package.json +1 -1
  314. package/scripts/seed-cli.mjs +8 -3
  315. package/dist/_internal/client/scaffolds/DashboardScaffold.d.ts +0 -34
  316. package/dist/_internal/client/scaffolds/DashboardScaffold.js +0 -26
  317. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.d.ts +0 -1
  318. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.js +0 -109
  319. package/dist/_internal/server/features/auctions/__tests__/service.test.d.ts +0 -1
  320. package/dist/_internal/server/features/auctions/__tests__/service.test.js +0 -140
  321. package/dist/_internal/server/features/checkout/__tests__/actions.test.d.ts +0 -1
  322. package/dist/_internal/server/features/checkout/__tests__/actions.test.js +0 -600
  323. package/dist/_internal/server/features/refunds/__tests__/actions.test.d.ts +0 -1
  324. package/dist/_internal/server/features/refunds/__tests__/actions.test.js +0 -263
  325. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.d.ts +0 -1
  326. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.js +0 -249
  327. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +0 -1
  328. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +0 -65
  329. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +0 -1
  330. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +0 -163
  331. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +0 -1
  332. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +0 -115
  333. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.d.ts +0 -1
  334. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.js +0 -201
  335. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.d.ts +0 -1
  336. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.js +0 -169
  337. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.d.ts +0 -1
  338. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.js +0 -148
  339. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.d.ts +0 -1
  340. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.js +0 -210
  341. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.d.ts +0 -1
  342. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.js +0 -190
  343. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.d.ts +0 -1
  344. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.js +0 -161
  345. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.d.ts +0 -1
  346. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.js +0 -302
  347. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +0 -1
  348. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +0 -96
  349. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.d.ts +0 -1
  350. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.js +0 -252
  351. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.d.ts +0 -1
  352. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.js +0 -129
  353. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.d.ts +0 -15
  354. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.js +0 -38
  355. package/dist/_internal/server/providers/index.d.ts +0 -11
  356. package/dist/_internal/server/providers/index.js +0 -11
  357. package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +0 -52
  358. package/dist/_internal/server/providers/payment/razorpay-mock.js +0 -118
  359. package/dist/_internal/server/providers/resolve.d.ts +0 -36
  360. package/dist/_internal/server/providers/resolve.js +0 -31
  361. package/dist/_internal/server/providers/shipping/shiprocket-mock.d.ts +0 -29
  362. package/dist/_internal/server/providers/shipping/shiprocket-mock.js +0 -152
  363. package/dist/_internal/shared/types/__tests__/action-result.test.d.ts +0 -1
  364. package/dist/_internal/shared/types/__tests__/action-result.test.js +0 -65
  365. package/dist/errors/__tests__/error-mapping.test.d.ts +0 -1
  366. package/dist/errors/__tests__/error-mapping.test.js +0 -122
  367. package/dist/errors/__tests__/safe-read.test.d.ts +0 -1
  368. package/dist/errors/__tests__/safe-read.test.js +0 -39
  369. package/dist/features/addresses/repository/__tests__/addresses.repository.test.d.ts +0 -1
  370. package/dist/features/addresses/repository/__tests__/addresses.repository.test.js +0 -386
  371. package/dist/features/admin/components/AdminListingScaffold.d.ts +0 -41
  372. package/dist/features/admin/components/AdminListingScaffold.js +0 -68
  373. package/dist/features/admin/components/QuickActionsPanel.d.ts +0 -15
  374. package/dist/features/admin/components/QuickActionsPanel.js +0 -5
  375. package/dist/features/admin/repository/__tests__/notification.repository.test.d.ts +0 -1
  376. package/dist/features/admin/repository/__tests__/notification.repository.test.js +0 -356
  377. package/dist/features/admin/repository/__tests__/site-settings.repository.test.d.ts +0 -1
  378. package/dist/features/admin/repository/__tests__/site-settings.repository.test.js +0 -298
  379. package/dist/features/auctions/repository/__tests__/bid.repository.test.d.ts +0 -1
  380. package/dist/features/auctions/repository/__tests__/bid.repository.test.js +0 -290
  381. package/dist/features/auctions/repository/auctions.repository.d.ts +0 -12
  382. package/dist/features/auctions/repository/auctions.repository.js +0 -42
  383. package/dist/features/auth/repository/__tests__/session.repository.test.d.ts +0 -1
  384. package/dist/features/auth/repository/__tests__/session.repository.test.js +0 -310
  385. package/dist/features/auth/repository/__tests__/session.test.d.ts +0 -1
  386. package/dist/features/auth/repository/__tests__/session.test.js +0 -146
  387. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.d.ts +0 -1
  388. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.js +0 -171
  389. package/dist/features/auth/repository/__tests__/sms-counter.test.d.ts +0 -1
  390. package/dist/features/auth/repository/__tests__/sms-counter.test.js +0 -88
  391. package/dist/features/auth/repository/__tests__/token.repository.test.d.ts +0 -1
  392. package/dist/features/auth/repository/__tests__/token.repository.test.js +0 -260
  393. package/dist/features/auth/repository/__tests__/token.test.d.ts +0 -1
  394. package/dist/features/auth/repository/__tests__/token.test.js +0 -140
  395. package/dist/features/auth/repository/__tests__/user.repository.test.d.ts +0 -1
  396. package/dist/features/auth/repository/__tests__/user.repository.test.js +0 -352
  397. package/dist/features/auth/repository/__tests__/user.test.d.ts +0 -1
  398. package/dist/features/auth/repository/__tests__/user.test.js +0 -226
  399. package/dist/features/before-after/repository/before-after.repository.d.ts +0 -13
  400. package/dist/features/before-after/repository/before-after.repository.js +0 -36
  401. package/dist/features/before-after/server.d.ts +0 -6
  402. package/dist/features/before-after/server.js +0 -6
  403. package/dist/features/cart/repository/__tests__/cart.repository.test.d.ts +0 -1
  404. package/dist/features/cart/repository/__tests__/cart.repository.test.js +0 -371
  405. package/dist/features/categories/repository/__tests__/categories.repository.test.d.ts +0 -1
  406. package/dist/features/categories/repository/__tests__/categories.repository.test.js +0 -813
  407. package/dist/features/collections/repository/collections.repository.d.ts +0 -8
  408. package/dist/features/collections/repository/collections.repository.js +0 -16
  409. package/dist/features/collections/server.d.ts +0 -6
  410. package/dist/features/collections/server.js +0 -6
  411. package/dist/features/events/repository/__tests__/event.repository.test.d.ts +0 -1
  412. package/dist/features/events/repository/__tests__/event.repository.test.js +0 -299
  413. package/dist/features/faq/repository/__tests__/faqs.repository.test.d.ts +0 -1
  414. package/dist/features/faq/repository/__tests__/faqs.repository.test.js +0 -311
  415. package/dist/features/forms/Form.d.ts +0 -25
  416. package/dist/features/forms/Form.js +0 -37
  417. package/dist/features/history/repository/__tests__/user-history.repository.test.d.ts +0 -1
  418. package/dist/features/history/repository/__tests__/user-history.repository.test.js +0 -180
  419. package/dist/features/homepage/repository/__tests__/carousel.repository.test.d.ts +0 -1
  420. package/dist/features/homepage/repository/__tests__/carousel.repository.test.js +0 -182
  421. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.d.ts +0 -1
  422. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.js +0 -185
  423. package/dist/features/layout/ListingLayout.d.ts +0 -34
  424. package/dist/features/layout/ListingLayout.js +0 -103
  425. package/dist/features/messages/repository/__tests__/conversations.repository.test.d.ts +0 -1
  426. package/dist/features/messages/repository/__tests__/conversations.repository.test.js +0 -257
  427. package/dist/features/orders/repository/__tests__/orders.repository.test.d.ts +0 -1
  428. package/dist/features/orders/repository/__tests__/orders.repository.test.js +0 -211
  429. package/dist/features/payments/repository/__tests__/payout.repository.test.d.ts +0 -1
  430. package/dist/features/payments/repository/__tests__/payout.repository.test.js +0 -292
  431. package/dist/features/pre-orders/repository/preorders.repository.d.ts +0 -8
  432. package/dist/features/pre-orders/repository/preorders.repository.js +0 -25
  433. package/dist/features/products/repository/__tests__/product-features.repository.test.d.ts +0 -1
  434. package/dist/features/products/repository/__tests__/product-features.repository.test.js +0 -329
  435. package/dist/features/products/repository/__tests__/products.repository.test.d.ts +0 -1
  436. package/dist/features/products/repository/__tests__/products.repository.test.js +0 -607
  437. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.d.ts +0 -1
  438. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.js +0 -219
  439. package/dist/features/promotions/repository/__tests__/coupons.repository.test.d.ts +0 -1
  440. package/dist/features/promotions/repository/__tests__/coupons.repository.test.js +0 -480
  441. package/dist/features/promotions/repository/promotions.repository.d.ts +0 -14
  442. package/dist/features/promotions/repository/promotions.repository.js +0 -43
  443. package/dist/features/reviews/repository/__tests__/reviews.repository.test.d.ts +0 -1
  444. package/dist/features/reviews/repository/__tests__/reviews.repository.test.js +0 -327
  445. package/dist/features/scams/repository/__tests__/scammer.repository.test.d.ts +0 -1
  446. package/dist/features/scams/repository/__tests__/scammer.repository.test.js +0 -385
  447. package/dist/features/search/repository/__tests__/search.repository.test.d.ts +0 -1
  448. package/dist/features/search/repository/__tests__/search.repository.test.js +0 -369
  449. package/dist/features/seller/components/SellerStatCard.d.ts +0 -14
  450. package/dist/features/seller/components/SellerStatCard.js +0 -6
  451. package/dist/features/seller/components/seller-products-styles.d.ts +0 -7
  452. package/dist/features/seller/components/seller-products-styles.js +0 -14
  453. package/dist/features/seller/repository/__tests__/offer.repository.test.d.ts +0 -1
  454. package/dist/features/seller/repository/__tests__/offer.repository.test.js +0 -458
  455. package/dist/features/seller/repository/seller.repository.d.ts +0 -22
  456. package/dist/features/seller/repository/seller.repository.js +0 -72
  457. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.d.ts +0 -1
  458. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.js +0 -37
  459. package/dist/features/stores/repository/__tests__/store.repository.test.d.ts +0 -1
  460. package/dist/features/stores/repository/__tests__/store.repository.test.js +0 -261
  461. package/dist/features/stores/repository/stores.repository.d.ts +0 -11
  462. package/dist/features/stores/repository/stores.repository.js +0 -37
  463. package/dist/features/support/repository/__tests__/support.repository.test.d.ts +0 -1
  464. package/dist/features/support/repository/__tests__/support.repository.test.js +0 -312
  465. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.d.ts +0 -1
  466. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.js +0 -139
  467. package/dist/features/wishlist/repository/wishlist.repository.d.ts +0 -13
  468. package/dist/features/wishlist/repository/wishlist.repository.js +0 -31
  469. package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +0 -1
  470. package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +0 -93
  471. package/dist/providers/shipping-shiprocket/index.d.ts +0 -297
  472. package/dist/providers/shipping-shiprocket/index.js +0 -194
  473. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +0 -45
  474. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +0 -168
  475. package/dist/react/contexts/ThemeContext.d.ts +0 -13
  476. package/dist/react/contexts/ThemeContext.js +0 -64
  477. package/dist/schemas/webhooks/shiprocket.d.ts +0 -30
  478. package/dist/schemas/webhooks/shiprocket.js +0 -22
  479. package/dist/seed/actions/demo-seed-actions.d.ts +0 -42
  480. package/dist/seed/actions/demo-seed-actions.js +0 -36
  481. package/dist/seed/actions/index.d.ts +0 -1
  482. package/dist/seed/actions/index.js +0 -1
  483. package/dist/seed/sub-listings-seed-data.d.ts +0 -123
  484. package/dist/seed/sub-listings-seed-data.js +0 -447
  485. package/dist/seed/tester-checklist-seed-data.d.ts +0 -2
  486. package/dist/seed/tester-checklist-seed-data.js +0 -248
  487. package/dist/ui/components/DashboardStatsCard.d.ts +0 -15
  488. package/dist/ui/components/DashboardStatsCard.js +0 -27
  489. package/dist/ui/components/DashboardStatsCard.style.css +0 -68
  490. package/dist/ui/components/DynamicSelect.d.ts +0 -23
  491. package/dist/ui/components/DynamicSelect.js +0 -77
  492. package/dist/ui/components/DynamicSelect.style.css +0 -101
  493. package/dist/ui/components/InlineCreateSelect.d.ts +0 -48
  494. package/dist/ui/components/InlineCreateSelect.js +0 -75
  495. package/dist/ui/components/ListingViewShell.d.ts +0 -37
  496. package/dist/ui/components/ListingViewShell.js +0 -9
  497. package/dist/ui/components/PaginatedMultiSelect.d.ts +0 -28
  498. package/dist/ui/components/PaginatedMultiSelect.js +0 -141
  499. package/dist/ui/components/PaginatedMultiSelect.style.css +0 -272
  500. package/dist/ui/components/SectionTabs.d.ts +0 -19
  501. package/dist/ui/components/SectionTabs.js +0 -66
  502. package/dist/ui/components/SectionTabs.style.css +0 -164
  503. package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +0 -1
  504. package/dist/ui/components/__tests__/BulkActionBar.test.js +0 -96
  505. package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +0 -1
  506. package/dist/ui/components/__tests__/ListingToolbar.test.js +0 -125
  507. package/dist/ui/components/__tests__/new-primitives.test.d.ts +0 -1
  508. 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
- });