@mohasinac/appkit 3.8.1 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/dist/_internal/client/features/live/LiveItemDetailView.js +2 -2
  2. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +4 -4
  3. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +8 -8
  4. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.d.ts +1 -1
  5. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.js +2 -2
  6. package/dist/_internal/server/features/bundles/actions.js +2 -2
  7. package/dist/_internal/server/features/bundles/og.d.ts +1 -1
  8. package/dist/_internal/server/features/bundles/og.js +4 -5
  9. package/dist/_internal/server/features/checkout/actions.js +57 -21
  10. package/dist/_internal/server/features/checkout/stock-restore.d.ts +19 -0
  11. package/dist/_internal/server/features/checkout/stock-restore.js +80 -0
  12. package/dist/_internal/server/features/checkout/upi-resolution.d.ts +11 -0
  13. package/dist/_internal/server/features/checkout/upi-resolution.js +28 -0
  14. package/dist/_internal/server/features/classified/og.js +1 -1
  15. package/dist/_internal/server/features/digital-code/og.js +1 -1
  16. package/dist/_internal/server/features/item-requests/og.d.ts +2 -2
  17. package/dist/_internal/server/features/item-requests/og.js +4 -5
  18. package/dist/_internal/server/features/live/og.js +1 -1
  19. package/dist/_internal/server/features/lottery/adapters.d.ts +2 -2
  20. package/dist/_internal/server/features/lottery/adapters.js +1 -1
  21. package/dist/_internal/server/features/orders/actions.d.ts +28 -0
  22. package/dist/_internal/server/features/orders/actions.js +239 -4
  23. package/dist/_internal/server/features/orders/adapters.js +3 -0
  24. package/dist/_internal/server/features/payments/data.js +3 -2
  25. package/dist/_internal/server/features/payouts/actions.d.ts +2 -2
  26. package/dist/_internal/server/features/payouts/actions.js +4 -3
  27. package/dist/_internal/server/features/pre-orders/service.d.ts +1 -1
  28. package/dist/_internal/server/features/pre-orders/service.js +3 -2
  29. package/dist/_internal/server/features/prize-draws/og.js +5 -5
  30. package/dist/_internal/server/features/products/og.js +1 -1
  31. package/dist/_internal/server/features/promotions/service.js +3 -1
  32. package/dist/_internal/server/features/refunds/actions.d.ts +2 -2
  33. package/dist/_internal/server/features/refunds/actions.js +7 -6
  34. package/dist/_internal/server/functions/firestore.js +1 -1
  35. package/dist/_internal/server/functions/scheduled.d.ts +4 -1
  36. package/dist/_internal/server/functions/scheduled.js +26 -2
  37. package/dist/_internal/server/jobs/core/emiInstallmentReminder.js +1 -1
  38. package/dist/_internal/server/jobs/core/hardBanCascade.d.ts +4 -0
  39. package/dist/_internal/server/jobs/core/hardBanCascade.js +15 -4
  40. package/dist/_internal/server/jobs/core/hardBanReinstatement.d.ts +16 -0
  41. package/dist/_internal/server/jobs/core/hardBanReinstatement.js +63 -0
  42. package/dist/_internal/server/jobs/core/jobRunners.js +3 -1
  43. package/dist/_internal/server/jobs/core/onScamReportCreate.js +1 -1
  44. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.d.ts +10 -0
  45. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +60 -0
  46. package/dist/_internal/server/jobs/core/paymentWindowTimeout.d.ts +15 -0
  47. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +59 -0
  48. package/dist/_internal/server/jobs/core/pendingOrderTimeout.d.ts +7 -0
  49. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +32 -6
  50. package/dist/_internal/server/jobs/handlers/hardBanReinstatement.d.ts +2 -0
  51. package/dist/_internal/server/jobs/handlers/hardBanReinstatement.js +2 -0
  52. package/dist/_internal/server/jobs/handlers/index.d.ts +3 -0
  53. package/dist/_internal/server/jobs/handlers/index.js +3 -0
  54. package/dist/_internal/server/jobs/handlers/messages.d.ts +4 -0
  55. package/dist/_internal/server/jobs/handlers/messages.js +4 -0
  56. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.d.ts +3 -3
  57. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +12 -12
  58. package/dist/_internal/server/jobs/handlers/onShipmentItemWrite.d.ts +1 -1
  59. package/dist/_internal/server/jobs/handlers/onShipmentItemWrite.js +5 -5
  60. package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.d.ts +2 -0
  61. package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.js +2 -0
  62. package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.d.ts +2 -0
  63. package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.js +2 -0
  64. package/dist/_internal/shared/actions/action-registry.js +27 -0
  65. package/dist/_internal/shared/checkout/order-math.js +3 -2
  66. package/dist/_internal/shared/checkout/rules/_defaults.js +1 -0
  67. package/dist/_internal/shared/checkout/rules/preorder.rule.js +7 -0
  68. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +7 -0
  69. package/dist/_internal/shared/checkout/rules/types.d.ts +11 -0
  70. package/dist/_internal/shared/features/auctions/errors.js +1 -1
  71. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +0 -1
  72. package/dist/_internal/shared/features/categories/bundle-copy.js +0 -1
  73. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +6 -6
  74. package/dist/_internal/shared/features/categories/bundle-schemas.js +2 -2
  75. package/dist/_internal/shared/features/checkout/config.d.ts +3 -3
  76. package/dist/_internal/shared/features/checkout/config.js +3 -3
  77. package/dist/_internal/shared/features/emi/schedule.d.ts +6 -6
  78. package/dist/_internal/shared/features/emi/schedule.js +10 -9
  79. package/dist/_internal/shared/features/promotions/errors.js +1 -1
  80. package/dist/_internal/shared/fees/calculator.d.ts +5 -5
  81. package/dist/_internal/shared/fees/calculator.js +19 -19
  82. package/dist/client.d.ts +1 -1
  83. package/dist/client.js +1 -1
  84. package/dist/constants/api-endpoints.d.ts +9 -0
  85. package/dist/constants/api-endpoints.js +3 -0
  86. package/dist/constants/field-names.d.ts +4 -0
  87. package/dist/constants/field-names.js +4 -0
  88. package/dist/features/admin/components/AdminArtView.js +2 -2
  89. package/dist/features/admin/components/AdminBidsView.js +2 -2
  90. package/dist/features/admin/components/AdminBundleEditorView.d.ts +1 -1
  91. package/dist/features/admin/components/AdminBundleEditorView.js +8 -8
  92. package/dist/features/admin/components/AdminBundlesView.js +6 -6
  93. package/dist/features/admin/components/AdminClassifiedView.js +2 -2
  94. package/dist/features/admin/components/AdminDigitalCodesView.js +2 -2
  95. package/dist/features/admin/components/AdminLiveView.js +2 -2
  96. package/dist/features/admin/components/AdminOrderEditorView.d.ts +6 -1
  97. package/dist/features/admin/components/AdminOrderEditorView.js +45 -5
  98. package/dist/features/admin/components/AdminOrdersView.js +8 -3
  99. package/dist/features/admin/components/AdminPayoutsView.js +2 -2
  100. package/dist/features/admin/components/AdminPrizeDrawsView.js +2 -2
  101. package/dist/features/admin/components/AdminReturnRequestsView.js +2 -2
  102. package/dist/features/admin/components/AdminSiteSettingsView.js +11 -11
  103. package/dist/features/admin/components/AdminStickersView.js +2 -2
  104. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  105. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -1
  106. package/dist/features/admin/hooks/useAdminListingData.js +3 -2
  107. package/dist/features/admin/schemas/firestore.d.ts +9 -7
  108. package/dist/features/admin/schemas/firestore.js +4 -3
  109. package/dist/features/auctions/components/AuctionBidsTable.js +3 -3
  110. package/dist/features/auth/checkout-value-otp.d.ts +46 -0
  111. package/dist/features/auth/checkout-value-otp.js +73 -0
  112. package/dist/features/auth/repository/user.repository.d.ts +6 -0
  113. package/dist/features/auth/repository/user.repository.js +19 -0
  114. package/dist/features/auth/schemas/firestore.d.ts +10 -0
  115. package/dist/features/auth/schemas/firestore.js +2 -0
  116. package/dist/features/cart/actions/cart-actions.d.ts +1 -1
  117. package/dist/features/cart/actions/cart-actions.js +4 -4
  118. package/dist/features/cart/components/CartView.d.ts +2 -2
  119. package/dist/features/cart/components/ShippingPicker.d.ts +4 -4
  120. package/dist/features/cart/components/ShippingPicker.js +11 -11
  121. package/dist/features/cart/repository/cart.repository.d.ts +1 -1
  122. package/dist/features/cart/repository/cart.repository.js +2 -2
  123. package/dist/features/cart/schemas/firestore.d.ts +2 -2
  124. package/dist/features/catalogue/components/CatalogueItemEditorView.js +3 -3
  125. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -2
  126. package/dist/features/catalogue/schemas/validation.js +1 -1
  127. package/dist/features/categories/components/BundleCollage.js +2 -2
  128. package/dist/features/categories/components/BundleDetailView.js +2 -2
  129. package/dist/features/categories/components/BundleItemsPicker.d.ts +1 -1
  130. package/dist/features/categories/components/BundleItemsPicker.js +2 -2
  131. package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
  132. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  133. package/dist/features/categories/schemas/index.d.ts +3 -3
  134. package/dist/features/categories/schemas/index.js +2 -2
  135. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +16 -0
  136. package/dist/features/checkout/actions/checkout-value-otp-actions.js +83 -0
  137. package/dist/features/checkout/actions/index.d.ts +1 -0
  138. package/dist/features/checkout/actions/index.js +1 -0
  139. package/dist/features/checkout/schemas/firestore.d.ts +1 -1
  140. package/dist/features/classified/components/index.d.ts +0 -4
  141. package/dist/features/classified/components/index.js +0 -2
  142. package/dist/features/digital-codes/components/index.d.ts +0 -4
  143. package/dist/features/digital-codes/components/index.js +0 -2
  144. package/dist/features/events/schemas/index.d.ts +1 -1
  145. package/dist/features/events/schemas/index.js +1 -1
  146. package/dist/features/homepage/components/FeaturedBundlesSection.js +2 -2
  147. package/dist/features/live/components/index.d.ts +0 -4
  148. package/dist/features/live/components/index.js +0 -2
  149. package/dist/features/lottery/types/index.d.ts +3 -3
  150. package/dist/features/lottery/types/index.js +5 -5
  151. package/dist/features/orders/components/OrderPaymentSummary.js +2 -2
  152. package/dist/features/orders/components/OrderSiblingPayments.js +1 -1
  153. package/dist/features/orders/components/RefundHistoryTable.js +1 -1
  154. package/dist/features/orders/components/RefundRequestView.js +1 -1
  155. package/dist/features/orders/constants/payment-window.d.ts +10 -0
  156. package/dist/features/orders/constants/payment-window.js +10 -0
  157. package/dist/features/orders/repository/orders.repository.d.ts +25 -0
  158. package/dist/features/orders/repository/orders.repository.js +50 -1
  159. package/dist/features/orders/schemas/firestore.d.ts +50 -2
  160. package/dist/features/orders/schemas/index.d.ts +24 -24
  161. package/dist/features/orders/schemas/index.js +20 -20
  162. package/dist/features/orders/types/index.d.ts +4 -0
  163. package/dist/features/orders/utils/bundle-grouping.d.ts +1 -1
  164. package/dist/features/orders/utils/bundle-grouping.js +1 -1
  165. package/dist/features/payments/schemas/index.d.ts +10 -10
  166. package/dist/features/payments/schemas/index.js +9 -9
  167. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -2
  168. package/dist/features/products/components/ArtStickersListView.d.ts +7 -0
  169. package/dist/features/products/components/ArtStickersListView.js +57 -0
  170. package/dist/features/products/components/GroupSettingsPanel.js +1 -1
  171. package/dist/features/products/components/MakeOfferButton.js +3 -3
  172. package/dist/features/products/components/MarketplaceBundleCard.d.ts +1 -1
  173. package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
  174. package/dist/features/products/components/PrizeDrawCollage.js +2 -2
  175. package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
  176. package/dist/features/products/components/PrizeRevealModal.js +1 -1
  177. package/dist/features/products/components/ProductDetailPageView.js +2 -9
  178. package/dist/features/products/components/ProductForm.js +2 -2
  179. package/dist/features/products/components/ProductGrid.js +2 -2
  180. package/dist/features/products/components/ProductsIndexListing.d.ts +13 -1
  181. package/dist/features/products/components/ProductsIndexListing.js +7 -5
  182. package/dist/features/products/components/ProductsIndexPageView.js +6 -1
  183. package/dist/features/products/constants/listing-tabs.d.ts +42 -17
  184. package/dist/features/products/constants/listing-tabs.js +25 -6
  185. package/dist/features/products/schemas/catalog-product.d.ts +5 -5
  186. package/dist/features/products/schemas/catalog-product.js +1 -1
  187. package/dist/features/products/schemas/firestore.d.ts +5 -5
  188. package/dist/features/products/schemas/firestore.js +2 -2
  189. package/dist/features/products/types/index.d.ts +5 -2
  190. package/dist/features/promotions/components/CouponCard.js +2 -2
  191. package/dist/features/promotions/schemas/firestore.d.ts +2 -0
  192. package/dist/features/promotions/schemas/firestore.js +1 -0
  193. package/dist/features/promotions/schemas/index.d.ts +14 -14
  194. package/dist/features/promotions/schemas/index.js +6 -6
  195. package/dist/features/scams/components/ScamProfileView.js +3 -7
  196. package/dist/features/scams/components/ScamRegistryView.js +2 -6
  197. package/dist/features/scams/schemas/firestore.d.ts +1 -1
  198. package/dist/features/search/components/Search.d.ts +1 -1
  199. package/dist/features/seller/actions/offer-actions.js +1 -1
  200. package/dist/features/seller/components/PrintCenterView.js +2 -2
  201. package/dist/features/seller/components/QuickProductForm.js +5 -5
  202. package/dist/features/seller/components/SellerArtView.js +2 -2
  203. package/dist/features/seller/components/SellerAuctionsView.js +2 -2
  204. package/dist/features/seller/components/SellerBidsView.js +2 -2
  205. package/dist/features/seller/components/SellerBundlesView.js +6 -6
  206. package/dist/features/seller/components/SellerClassifiedView.js +2 -2
  207. package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
  208. package/dist/features/seller/components/SellerLiveView.js +2 -2
  209. package/dist/features/seller/components/SellerOffersView.js +2 -2
  210. package/dist/features/seller/components/SellerOrdersView.js +3 -3
  211. package/dist/features/seller/components/SellerPayoutRequestView.js +2 -2
  212. package/dist/features/seller/components/SellerPayoutSettingsView.js +2 -2
  213. package/dist/features/seller/components/SellerPayoutsView.js +2 -2
  214. package/dist/features/seller/components/SellerPreOrdersView.js +2 -2
  215. package/dist/features/seller/components/SellerPrizeDrawsView.js +2 -2
  216. package/dist/features/seller/components/SellerProductShell.js +8 -8
  217. package/dist/features/seller/components/SellerProductsView.js +1 -1
  218. package/dist/features/seller/components/SellerShippingView.js +6 -6
  219. package/dist/features/seller/components/SellerStickersView.js +2 -2
  220. package/dist/features/seller/hooks/useSellerListingData.d.ts +1 -1
  221. package/dist/features/seller/hooks/useSellerListingData.js +3 -2
  222. package/dist/features/shipments/components/AdminShipmentEditorView.js +10 -10
  223. package/dist/features/shipments/components/AdminShipmentLotItemsView.js +4 -4
  224. package/dist/features/shipments/components/AdminShipmentProjectionsView.js +5 -5
  225. package/dist/features/shipments/components/AdminShipmentsView.js +4 -4
  226. package/dist/features/shipments/repository/shipment-lots.repository.d.ts +2 -2
  227. package/dist/features/shipments/repository/shipment-lots.repository.js +8 -8
  228. package/dist/features/shipments/schemas/firestore.d.ts +21 -21
  229. package/dist/features/shipments/schemas/firestore.js +9 -9
  230. package/dist/features/shipments/schemas/validation.d.ts +30 -30
  231. package/dist/features/shipments/schemas/validation.js +6 -6
  232. package/dist/features/shipments/utils/cost-allocation.d.ts +5 -5
  233. package/dist/features/shipments/utils/cost-allocation.js +39 -38
  234. package/dist/features/store-extensions/schemas/firestore.d.ts +5 -5
  235. package/dist/features/stores/components/StoreDetailLayoutView.js +9 -13
  236. package/dist/features/stores/schemas/firestore.d.ts +7 -7
  237. package/dist/features/stores/schemas/index.d.ts +84 -84
  238. package/dist/features/stores/schemas/index.js +5 -5
  239. package/dist/features/tester/seed-data/categories-tester-seed-data.js +1 -1
  240. package/dist/features/tester/seed-data/products-tester-seed-data.js +6 -6
  241. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +9 -2
  242. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +8 -1
  243. package/dist/features/whatsapp-bot/helpers/whatsapp.js +13 -2
  244. package/dist/features/whatsapp-bot/types/index.d.ts +9 -1
  245. package/dist/index.d.ts +4 -7
  246. package/dist/index.js +9 -5
  247. package/dist/next/routing/route-map.d.ts +2 -0
  248. package/dist/next/routing/route-map.js +6 -0
  249. package/dist/schemas/firestore-helpers.d.ts +2 -2
  250. package/dist/schemas/firestore-helpers.js +2 -2
  251. package/dist/schemas/registry.d.ts +73 -73
  252. package/dist/security/index.d.ts +2 -1
  253. package/dist/security/index.js +5 -1
  254. package/dist/security/pii-encrypt.d.ts +2 -53
  255. package/dist/security/pii-encrypt.js +19 -100
  256. package/dist/security/pii-mask.d.ts +67 -0
  257. package/dist/security/pii-mask.js +100 -0
  258. package/dist/seed/bids-seed-data.js +6 -6
  259. package/dist/seed/blog-posts-seed-data.js +1 -0
  260. package/dist/seed/cart-seed-data.js +13 -13
  261. package/dist/seed/catalogue-seed-data.js +6 -6
  262. package/dist/seed/categories-seed-data.js +5 -5
  263. package/dist/seed/claimed-coupons-seed-data.js +3 -3
  264. package/dist/seed/coupons-seed-data.js +20 -20
  265. package/dist/seed/events-seed-data.js +27 -27
  266. package/dist/seed/factories/bid.factory.js +1 -1
  267. package/dist/seed/faq-seed-data.js +20 -1
  268. package/dist/seed/grouped-listings-seed-data.d.ts +2 -2
  269. package/dist/seed/grouped-listings-seed-data.js +3 -3
  270. package/dist/seed/offers-seed-data.js +19 -19
  271. package/dist/seed/orders-seed-data.js +29 -29
  272. package/dist/seed/payouts-seed-data.js +7 -7
  273. package/dist/seed/products-auctions-seed-data.js +6 -6
  274. package/dist/seed/products-preorders-seed-data.d.ts +2 -2
  275. package/dist/seed/products-preorders-seed-data.js +1 -1
  276. package/dist/seed/products-standard-seed-data.js +8 -8
  277. package/dist/seed/scammers-seed-data.js +2 -2
  278. package/dist/seed/shipments-seed-data.js +29 -29
  279. package/dist/seed/site-settings-seed-data.js +3 -2
  280. package/dist/seed/store-extensions-seed-data.js +8 -8
  281. package/dist/seed/stores-seed-data.js +37 -8
  282. package/dist/seed/users-seed-data.js +38 -1
  283. package/dist/server-entry.d.ts +1 -3
  284. package/dist/server-entry.js +1 -3
  285. package/dist/server.d.ts +2 -1
  286. package/dist/server.js +3 -1
  287. package/dist/ui/components/PriceDisplay.js +3 -12
  288. package/dist/utils/number.formatter.d.ts +2 -7
  289. package/dist/utils/number.formatter.js +3 -8
  290. package/package.json +1 -1
  291. package/scripts/seed-cli.mjs +17 -3
  292. package/dist/_internal/client/scaffolds/DashboardScaffold.d.ts +0 -34
  293. package/dist/_internal/client/scaffolds/DashboardScaffold.js +0 -26
  294. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.d.ts +0 -1
  295. package/dist/_internal/client/theme/__tests__/ThemeProvider.test.js +0 -109
  296. package/dist/_internal/server/features/auctions/__tests__/service.test.d.ts +0 -1
  297. package/dist/_internal/server/features/auctions/__tests__/service.test.js +0 -140
  298. package/dist/_internal/server/features/checkout/__tests__/actions.test.d.ts +0 -1
  299. package/dist/_internal/server/features/checkout/__tests__/actions.test.js +0 -600
  300. package/dist/_internal/server/features/refunds/__tests__/actions.test.d.ts +0 -1
  301. package/dist/_internal/server/features/refunds/__tests__/actions.test.js +0 -263
  302. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.d.ts +0 -1
  303. package/dist/_internal/server/jobs/core/__tests__/auctionSettlement.test.js +0 -249
  304. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +0 -1
  305. package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +0 -65
  306. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +0 -1
  307. package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +0 -163
  308. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +0 -1
  309. package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +0 -115
  310. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.d.ts +0 -1
  311. package/dist/_internal/server/jobs/core/__tests__/onBidPlaced.test.js +0 -201
  312. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.d.ts +0 -1
  313. package/dist/_internal/server/jobs/core/__tests__/onOrderCreate.test.js +0 -169
  314. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.d.ts +0 -1
  315. package/dist/_internal/server/jobs/core/__tests__/onOrderStatusChange.test.js +0 -148
  316. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.d.ts +0 -1
  317. package/dist/_internal/server/jobs/core/__tests__/onProductStockChange.test.js +0 -210
  318. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.d.ts +0 -1
  319. package/dist/_internal/server/jobs/core/__tests__/onReviewWrite.test.js +0 -190
  320. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.d.ts +0 -1
  321. package/dist/_internal/server/jobs/core/__tests__/onUserBanChange.test.js +0 -161
  322. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.d.ts +0 -1
  323. package/dist/_internal/server/jobs/core/__tests__/payoutBatch.test.js +0 -302
  324. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +0 -1
  325. package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +0 -96
  326. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.d.ts +0 -1
  327. package/dist/_internal/server/jobs/core/__tests__/triggerEventRaffle.test.js +0 -252
  328. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.d.ts +0 -1
  329. package/dist/_internal/server/jobs/core/__tests__/wrapJobHandler.test.js +0 -129
  330. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.d.ts +0 -15
  331. package/dist/_internal/server/jobs/core/onCatalogueSubmittedForApproval.js +0 -38
  332. package/dist/_internal/server/providers/index.d.ts +0 -11
  333. package/dist/_internal/server/providers/index.js +0 -11
  334. package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +0 -52
  335. package/dist/_internal/server/providers/payment/razorpay-mock.js +0 -118
  336. package/dist/_internal/server/providers/resolve.d.ts +0 -36
  337. package/dist/_internal/server/providers/resolve.js +0 -31
  338. package/dist/_internal/server/providers/shipping/shiprocket-mock.d.ts +0 -29
  339. package/dist/_internal/server/providers/shipping/shiprocket-mock.js +0 -152
  340. package/dist/_internal/shared/types/__tests__/action-result.test.d.ts +0 -1
  341. package/dist/_internal/shared/types/__tests__/action-result.test.js +0 -65
  342. package/dist/errors/__tests__/error-mapping.test.d.ts +0 -1
  343. package/dist/errors/__tests__/error-mapping.test.js +0 -122
  344. package/dist/errors/__tests__/safe-read.test.d.ts +0 -1
  345. package/dist/errors/__tests__/safe-read.test.js +0 -39
  346. package/dist/features/addresses/repository/__tests__/addresses.repository.test.d.ts +0 -1
  347. package/dist/features/addresses/repository/__tests__/addresses.repository.test.js +0 -386
  348. package/dist/features/admin/components/AdminListingScaffold.d.ts +0 -41
  349. package/dist/features/admin/components/AdminListingScaffold.js +0 -68
  350. package/dist/features/admin/components/QuickActionsPanel.d.ts +0 -15
  351. package/dist/features/admin/components/QuickActionsPanel.js +0 -5
  352. package/dist/features/admin/repository/__tests__/notification.repository.test.d.ts +0 -1
  353. package/dist/features/admin/repository/__tests__/notification.repository.test.js +0 -356
  354. package/dist/features/admin/repository/__tests__/site-settings.repository.test.d.ts +0 -1
  355. package/dist/features/admin/repository/__tests__/site-settings.repository.test.js +0 -298
  356. package/dist/features/auctions/repository/__tests__/bid.repository.test.d.ts +0 -1
  357. package/dist/features/auctions/repository/__tests__/bid.repository.test.js +0 -290
  358. package/dist/features/auctions/repository/auctions.repository.d.ts +0 -12
  359. package/dist/features/auctions/repository/auctions.repository.js +0 -42
  360. package/dist/features/auth/repository/__tests__/session.repository.test.d.ts +0 -1
  361. package/dist/features/auth/repository/__tests__/session.repository.test.js +0 -310
  362. package/dist/features/auth/repository/__tests__/session.test.d.ts +0 -1
  363. package/dist/features/auth/repository/__tests__/session.test.js +0 -146
  364. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.d.ts +0 -1
  365. package/dist/features/auth/repository/__tests__/sms-counter.repository.test.js +0 -171
  366. package/dist/features/auth/repository/__tests__/sms-counter.test.d.ts +0 -1
  367. package/dist/features/auth/repository/__tests__/sms-counter.test.js +0 -88
  368. package/dist/features/auth/repository/__tests__/token.repository.test.d.ts +0 -1
  369. package/dist/features/auth/repository/__tests__/token.repository.test.js +0 -260
  370. package/dist/features/auth/repository/__tests__/token.test.d.ts +0 -1
  371. package/dist/features/auth/repository/__tests__/token.test.js +0 -140
  372. package/dist/features/auth/repository/__tests__/user.repository.test.d.ts +0 -1
  373. package/dist/features/auth/repository/__tests__/user.repository.test.js +0 -352
  374. package/dist/features/auth/repository/__tests__/user.test.d.ts +0 -1
  375. package/dist/features/auth/repository/__tests__/user.test.js +0 -226
  376. package/dist/features/before-after/repository/before-after.repository.d.ts +0 -13
  377. package/dist/features/before-after/repository/before-after.repository.js +0 -36
  378. package/dist/features/before-after/server.d.ts +0 -6
  379. package/dist/features/before-after/server.js +0 -6
  380. package/dist/features/cart/repository/__tests__/cart.repository.test.d.ts +0 -1
  381. package/dist/features/cart/repository/__tests__/cart.repository.test.js +0 -371
  382. package/dist/features/categories/repository/__tests__/categories.repository.test.d.ts +0 -1
  383. package/dist/features/categories/repository/__tests__/categories.repository.test.js +0 -813
  384. package/dist/features/collections/repository/collections.repository.d.ts +0 -8
  385. package/dist/features/collections/repository/collections.repository.js +0 -16
  386. package/dist/features/collections/server.d.ts +0 -6
  387. package/dist/features/collections/server.js +0 -6
  388. package/dist/features/events/repository/__tests__/event.repository.test.d.ts +0 -1
  389. package/dist/features/events/repository/__tests__/event.repository.test.js +0 -299
  390. package/dist/features/faq/repository/__tests__/faqs.repository.test.d.ts +0 -1
  391. package/dist/features/faq/repository/__tests__/faqs.repository.test.js +0 -311
  392. package/dist/features/forms/Form.d.ts +0 -25
  393. package/dist/features/forms/Form.js +0 -37
  394. package/dist/features/history/repository/__tests__/user-history.repository.test.d.ts +0 -1
  395. package/dist/features/history/repository/__tests__/user-history.repository.test.js +0 -180
  396. package/dist/features/homepage/repository/__tests__/carousel.repository.test.d.ts +0 -1
  397. package/dist/features/homepage/repository/__tests__/carousel.repository.test.js +0 -182
  398. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.d.ts +0 -1
  399. package/dist/features/homepage/repository/__tests__/homepage-sections.repository.test.js +0 -185
  400. package/dist/features/layout/ListingLayout.d.ts +0 -34
  401. package/dist/features/layout/ListingLayout.js +0 -103
  402. package/dist/features/messages/repository/__tests__/conversations.repository.test.d.ts +0 -1
  403. package/dist/features/messages/repository/__tests__/conversations.repository.test.js +0 -257
  404. package/dist/features/orders/repository/__tests__/orders.repository.test.d.ts +0 -1
  405. package/dist/features/orders/repository/__tests__/orders.repository.test.js +0 -211
  406. package/dist/features/payments/repository/__tests__/payout.repository.test.d.ts +0 -1
  407. package/dist/features/payments/repository/__tests__/payout.repository.test.js +0 -292
  408. package/dist/features/pre-orders/repository/preorders.repository.d.ts +0 -8
  409. package/dist/features/pre-orders/repository/preorders.repository.js +0 -25
  410. package/dist/features/products/repository/__tests__/product-features.repository.test.d.ts +0 -1
  411. package/dist/features/products/repository/__tests__/product-features.repository.test.js +0 -329
  412. package/dist/features/products/repository/__tests__/products.repository.test.d.ts +0 -1
  413. package/dist/features/products/repository/__tests__/products.repository.test.js +0 -607
  414. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.d.ts +0 -1
  415. package/dist/features/promotions/repository/__tests__/claimed-coupons.repository.test.js +0 -219
  416. package/dist/features/promotions/repository/__tests__/coupons.repository.test.d.ts +0 -1
  417. package/dist/features/promotions/repository/__tests__/coupons.repository.test.js +0 -480
  418. package/dist/features/promotions/repository/promotions.repository.d.ts +0 -14
  419. package/dist/features/promotions/repository/promotions.repository.js +0 -43
  420. package/dist/features/reviews/repository/__tests__/reviews.repository.test.d.ts +0 -1
  421. package/dist/features/reviews/repository/__tests__/reviews.repository.test.js +0 -327
  422. package/dist/features/scams/repository/__tests__/scammer.repository.test.d.ts +0 -1
  423. package/dist/features/scams/repository/__tests__/scammer.repository.test.js +0 -385
  424. package/dist/features/search/repository/__tests__/search.repository.test.d.ts +0 -1
  425. package/dist/features/search/repository/__tests__/search.repository.test.js +0 -369
  426. package/dist/features/seller/components/SellerStatCard.d.ts +0 -14
  427. package/dist/features/seller/components/SellerStatCard.js +0 -6
  428. package/dist/features/seller/components/seller-products-styles.d.ts +0 -7
  429. package/dist/features/seller/components/seller-products-styles.js +0 -14
  430. package/dist/features/seller/repository/__tests__/offer.repository.test.d.ts +0 -1
  431. package/dist/features/seller/repository/__tests__/offer.repository.test.js +0 -458
  432. package/dist/features/seller/repository/seller.repository.d.ts +0 -22
  433. package/dist/features/seller/repository/seller.repository.js +0 -72
  434. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.d.ts +0 -1
  435. package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.js +0 -37
  436. package/dist/features/stores/repository/__tests__/store.repository.test.d.ts +0 -1
  437. package/dist/features/stores/repository/__tests__/store.repository.test.js +0 -261
  438. package/dist/features/stores/repository/stores.repository.d.ts +0 -11
  439. package/dist/features/stores/repository/stores.repository.js +0 -37
  440. package/dist/features/support/repository/__tests__/support.repository.test.d.ts +0 -1
  441. package/dist/features/support/repository/__tests__/support.repository.test.js +0 -312
  442. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.d.ts +0 -1
  443. package/dist/features/wishlist/repository/__tests__/user-wishlist.repository.test.js +0 -139
  444. package/dist/features/wishlist/repository/wishlist.repository.d.ts +0 -13
  445. package/dist/features/wishlist/repository/wishlist.repository.js +0 -31
  446. package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +0 -1
  447. package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +0 -93
  448. package/dist/providers/shipping-shiprocket/index.d.ts +0 -297
  449. package/dist/providers/shipping-shiprocket/index.js +0 -194
  450. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +0 -45
  451. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +0 -168
  452. package/dist/react/contexts/ThemeContext.d.ts +0 -13
  453. package/dist/react/contexts/ThemeContext.js +0 -64
  454. package/dist/schemas/webhooks/shiprocket.d.ts +0 -30
  455. package/dist/schemas/webhooks/shiprocket.js +0 -22
  456. package/dist/seed/actions/demo-seed-actions.d.ts +0 -42
  457. package/dist/seed/actions/demo-seed-actions.js +0 -36
  458. package/dist/seed/actions/index.d.ts +0 -1
  459. package/dist/seed/actions/index.js +0 -1
  460. package/dist/seed/sub-listings-seed-data.d.ts +0 -123
  461. package/dist/seed/sub-listings-seed-data.js +0 -447
  462. package/dist/seed/tester-checklist-seed-data.d.ts +0 -2
  463. package/dist/seed/tester-checklist-seed-data.js +0 -248
  464. package/dist/ui/components/DashboardStatsCard.d.ts +0 -15
  465. package/dist/ui/components/DashboardStatsCard.js +0 -27
  466. package/dist/ui/components/DashboardStatsCard.style.css +0 -68
  467. package/dist/ui/components/DynamicSelect.d.ts +0 -23
  468. package/dist/ui/components/DynamicSelect.js +0 -77
  469. package/dist/ui/components/DynamicSelect.style.css +0 -101
  470. package/dist/ui/components/InlineCreateSelect.d.ts +0 -48
  471. package/dist/ui/components/InlineCreateSelect.js +0 -75
  472. package/dist/ui/components/ListingViewShell.d.ts +0 -37
  473. package/dist/ui/components/ListingViewShell.js +0 -9
  474. package/dist/ui/components/PaginatedMultiSelect.d.ts +0 -28
  475. package/dist/ui/components/PaginatedMultiSelect.js +0 -141
  476. package/dist/ui/components/PaginatedMultiSelect.style.css +0 -272
  477. package/dist/ui/components/SectionTabs.d.ts +0 -19
  478. package/dist/ui/components/SectionTabs.js +0 -66
  479. package/dist/ui/components/SectionTabs.style.css +0 -164
  480. package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +0 -1
  481. package/dist/ui/components/__tests__/BulkActionBar.test.js +0 -96
  482. package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +0 -1
  483. package/dist/ui/components/__tests__/ListingToolbar.test.js +0 -125
  484. package/dist/ui/components/__tests__/new-primitives.test.d.ts +0 -1
  485. package/dist/ui/components/__tests__/new-primitives.test.js +0 -187
@@ -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
- });