@mohasinac/appkit 2.6.3 → 2.6.4

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 (606) hide show
  1. package/dist/_internal/server/features/account/data.js +2 -2
  2. package/dist/_internal/server/features/bundles/data.d.ts +26 -6
  3. package/dist/_internal/server/features/bundles/data.js +41 -6
  4. package/dist/_internal/server/features/bundles/index.d.ts +3 -2
  5. package/dist/_internal/server/features/bundles/index.js +4 -2
  6. package/dist/_internal/server/features/bundles/metadata.d.ts +20 -0
  7. package/dist/_internal/server/features/bundles/metadata.js +46 -0
  8. package/dist/_internal/server/features/bundles/og.d.ts +38 -0
  9. package/dist/_internal/server/features/bundles/og.js +122 -0
  10. package/dist/_internal/server/features/checkout/actions.js +192 -133
  11. package/dist/_internal/server/features/checkout/bundle-expansion.d.ts +57 -0
  12. package/dist/_internal/server/features/checkout/bundle-expansion.js +70 -0
  13. package/dist/_internal/server/features/checkout/prize-bundle-gates.d.ts +5 -15
  14. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +5 -21
  15. package/dist/_internal/server/features/media/contextGuards.js +15 -1
  16. package/dist/_internal/server/features/payouts/actions.d.ts +19 -0
  17. package/dist/_internal/server/features/payouts/actions.js +38 -0
  18. package/dist/_internal/server/features/products/data.js +1 -2
  19. package/dist/_internal/server/features/raffle/actions.d.ts +11 -0
  20. package/dist/_internal/server/features/raffle/actions.js +31 -0
  21. package/dist/_internal/server/features/refunds/actions.d.ts +31 -0
  22. package/dist/_internal/server/features/refunds/actions.js +77 -0
  23. package/dist/_internal/server/jobs/core/adminAnalytics.d.ts +28 -0
  24. package/dist/_internal/server/jobs/core/adminAnalytics.js +98 -0
  25. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +19 -0
  26. package/dist/_internal/server/jobs/core/assignSpinPrize.js +81 -0
  27. package/dist/_internal/server/jobs/core/auctionSettlement.d.ts +2 -0
  28. package/dist/_internal/server/jobs/core/auctionSettlement.js +70 -0
  29. package/dist/_internal/server/jobs/core/autoPayoutEligibility.d.ts +2 -0
  30. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +109 -0
  31. package/dist/_internal/server/jobs/core/bundleStockSync.d.ts +10 -0
  32. package/dist/_internal/server/jobs/core/bundleStockSync.js +71 -0
  33. package/dist/_internal/server/jobs/core/cartPrune.d.ts +2 -0
  34. package/dist/_internal/server/jobs/core/cartPrune.js +13 -0
  35. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.d.ts +2 -0
  36. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +45 -0
  37. package/dist/_internal/server/jobs/core/countersReconcile.d.ts +2 -0
  38. package/dist/_internal/server/jobs/core/countersReconcile.js +107 -0
  39. package/dist/_internal/server/jobs/core/couponExpiry.d.ts +2 -0
  40. package/dist/_internal/server/jobs/core/couponExpiry.js +13 -0
  41. package/dist/_internal/server/jobs/core/dailyDataCleanup.d.ts +2 -0
  42. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +20 -0
  43. package/dist/_internal/server/jobs/core/index.d.ts +44 -0
  44. package/dist/_internal/server/jobs/core/index.js +47 -0
  45. package/dist/_internal/server/jobs/core/listingProcessor.d.ts +30 -0
  46. package/dist/_internal/server/jobs/core/listingProcessor.js +138 -0
  47. package/dist/_internal/server/jobs/core/mediaTmpCleanup.d.ts +14 -0
  48. package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +68 -0
  49. package/dist/_internal/server/jobs/core/notificationPrune.d.ts +2 -0
  50. package/dist/_internal/server/jobs/core/notificationPrune.js +13 -0
  51. package/dist/_internal/server/jobs/core/offerExpiry.d.ts +2 -0
  52. package/dist/_internal/server/jobs/core/offerExpiry.js +50 -0
  53. package/dist/_internal/server/jobs/core/onBidPlaced.d.ts +15 -0
  54. package/dist/_internal/server/jobs/core/onBidPlaced.js +59 -0
  55. package/dist/_internal/server/jobs/core/onCategoryWrite.d.ts +14 -0
  56. package/dist/_internal/server/jobs/core/onCategoryWrite.js +134 -0
  57. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +18 -0
  58. package/dist/_internal/server/jobs/core/onOrderCreate.js +78 -0
  59. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +19 -0
  60. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +139 -0
  61. package/dist/_internal/server/jobs/core/onProductStockChange.d.ts +23 -0
  62. package/dist/_internal/server/jobs/core/onProductStockChange.js +130 -0
  63. package/dist/_internal/server/jobs/core/onProductWrite.d.ts +12 -0
  64. package/dist/_internal/server/jobs/core/onProductWrite.js +94 -0
  65. package/dist/_internal/server/jobs/core/onReviewWrite.d.ts +7 -0
  66. package/dist/_internal/server/jobs/core/onReviewWrite.js +49 -0
  67. package/dist/_internal/server/jobs/core/onStoreWrite.d.ts +12 -0
  68. package/dist/_internal/server/jobs/core/onStoreWrite.js +7 -0
  69. package/dist/_internal/server/jobs/core/payoutBatch.d.ts +8 -0
  70. package/dist/_internal/server/jobs/core/payoutBatch.js +102 -0
  71. package/dist/_internal/server/jobs/core/pendingOrderTimeout.d.ts +2 -0
  72. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +27 -0
  73. package/dist/_internal/server/jobs/core/positionsReconcile.d.ts +7 -0
  74. package/dist/_internal/server/jobs/core/positionsReconcile.js +87 -0
  75. package/dist/_internal/server/jobs/core/prizeRevealClose.d.ts +2 -0
  76. package/dist/_internal/server/jobs/core/prizeRevealClose.js +22 -0
  77. package/dist/_internal/server/jobs/core/prizeRevealExpiry.d.ts +2 -0
  78. package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +50 -0
  79. package/dist/_internal/server/jobs/core/prizeRevealOpen.d.ts +2 -0
  80. package/dist/_internal/server/jobs/core/prizeRevealOpen.js +56 -0
  81. package/dist/_internal/server/jobs/core/prizeRevealReminder.d.ts +2 -0
  82. package/dist/_internal/server/jobs/core/prizeRevealReminder.js +38 -0
  83. package/dist/_internal/server/jobs/core/productStatsSync.d.ts +8 -0
  84. package/dist/_internal/server/jobs/core/productStatsSync.js +36 -0
  85. package/dist/_internal/server/jobs/core/promotions.d.ts +12 -0
  86. package/dist/_internal/server/jobs/core/promotions.js +43 -0
  87. package/dist/_internal/server/jobs/core/storeAnalytics.d.ts +30 -0
  88. package/dist/_internal/server/jobs/core/storeAnalytics.js +109 -0
  89. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +19 -0
  90. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +86 -0
  91. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.d.ts +6 -0
  92. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +85 -0
  93. package/dist/_internal/server/jobs/handlers/adminAnalytics.d.ts +2 -26
  94. package/dist/_internal/server/jobs/handlers/adminAnalytics.js +2 -98
  95. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +1 -22
  96. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +2 -86
  97. package/dist/_internal/server/jobs/handlers/auctionSettlement.js +2 -70
  98. package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +2 -110
  99. package/dist/_internal/server/jobs/handlers/bundleStockSync.d.ts +0 -16
  100. package/dist/_internal/server/jobs/handlers/bundleStockSync.js +2 -80
  101. package/dist/_internal/server/jobs/handlers/cartPrune.js +2 -13
  102. package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +2 -45
  103. package/dist/_internal/server/jobs/handlers/countersReconcile.js +2 -109
  104. package/dist/_internal/server/jobs/handlers/couponExpiry.js +2 -13
  105. package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +2 -20
  106. package/dist/_internal/server/jobs/handlers/listingProcessor.d.ts +3 -28
  107. package/dist/_internal/server/jobs/handlers/listingProcessor.js +3 -138
  108. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.d.ts +0 -12
  109. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +2 -69
  110. package/dist/_internal/server/jobs/handlers/notificationPrune.js +2 -13
  111. package/dist/_internal/server/jobs/handlers/offerExpiry.js +2 -50
  112. package/dist/_internal/server/jobs/handlers/onBidPlaced.d.ts +1 -10
  113. package/dist/_internal/server/jobs/handlers/onBidPlaced.js +2 -56
  114. package/dist/_internal/server/jobs/handlers/onCategoryWrite.d.ts +1 -8
  115. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +6 -134
  116. package/dist/_internal/server/jobs/handlers/onOrderCreate.d.ts +1 -12
  117. package/dist/_internal/server/jobs/handlers/onOrderCreate.js +2 -76
  118. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.d.ts +1 -12
  119. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +2 -139
  120. package/dist/_internal/server/jobs/handlers/onProductStockChange.d.ts +0 -13
  121. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +7 -134
  122. package/dist/_internal/server/jobs/handlers/onProductWrite.d.ts +1 -6
  123. package/dist/_internal/server/jobs/handlers/onProductWrite.js +6 -106
  124. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +2 -49
  125. package/dist/_internal/server/jobs/handlers/onStoreWrite.d.ts +1 -8
  126. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +7 -8
  127. package/dist/_internal/server/jobs/handlers/payoutBatch.d.ts +0 -9
  128. package/dist/_internal/server/jobs/handlers/payoutBatch.js +2 -104
  129. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.d.ts +0 -6
  130. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +2 -33
  131. package/dist/_internal/server/jobs/handlers/positionsReconcile.d.ts +0 -5
  132. package/dist/_internal/server/jobs/handlers/positionsReconcile.js +2 -87
  133. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +0 -7
  134. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +2 -29
  135. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +0 -8
  136. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +2 -58
  137. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +0 -8
  138. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +2 -65
  139. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +0 -7
  140. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +2 -45
  141. package/dist/_internal/server/jobs/handlers/productStatsSync.d.ts +0 -6
  142. package/dist/_internal/server/jobs/handlers/productStatsSync.js +2 -36
  143. package/dist/_internal/server/jobs/handlers/promotions.d.ts +2 -10
  144. package/dist/_internal/server/jobs/handlers/promotions.js +2 -43
  145. package/dist/_internal/server/jobs/handlers/storeAnalytics.d.ts +2 -28
  146. package/dist/_internal/server/jobs/handlers/storeAnalytics.js +2 -109
  147. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +1 -28
  148. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +2 -94
  149. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.d.ts +0 -6
  150. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +2 -87
  151. package/dist/_internal/server/jobs/index.d.ts +1 -0
  152. package/dist/_internal/server/jobs/index.js +1 -0
  153. package/dist/_internal/server/jobs/runtime/adapters/firebase.js +21 -0
  154. package/dist/_internal/shared/actions/action-registry.d.ts +84 -0
  155. package/dist/_internal/shared/actions/action-registry.js +160 -0
  156. package/dist/_internal/shared/checkout/rules/_defaults.d.ts +3 -0
  157. package/dist/_internal/shared/checkout/rules/_defaults.js +22 -0
  158. package/dist/_internal/shared/checkout/rules/_limits.d.ts +19 -0
  159. package/dist/_internal/shared/checkout/rules/_limits.js +19 -0
  160. package/dist/_internal/shared/checkout/rules/_registry.d.ts +44 -0
  161. package/dist/_internal/shared/checkout/rules/_registry.js +87 -0
  162. package/dist/_internal/shared/checkout/rules/auction.rule.d.ts +2 -0
  163. package/dist/_internal/shared/checkout/rules/auction.rule.js +10 -0
  164. package/dist/_internal/shared/checkout/rules/bundle.rule.d.ts +11 -0
  165. package/dist/_internal/shared/checkout/rules/bundle.rule.js +6 -0
  166. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -0
  167. package/dist/_internal/shared/checkout/rules/classified.rule.js +9 -0
  168. package/dist/_internal/shared/checkout/rules/digital-code.rule.d.ts +8 -0
  169. package/dist/_internal/shared/checkout/rules/digital-code.rule.js +6 -0
  170. package/dist/_internal/shared/checkout/rules/index.d.ts +12 -0
  171. package/dist/_internal/shared/checkout/rules/index.js +12 -0
  172. package/dist/_internal/shared/checkout/rules/live.rule.d.ts +10 -0
  173. package/dist/_internal/shared/checkout/rules/live.rule.js +6 -0
  174. package/dist/_internal/shared/checkout/rules/offer.rule.d.ts +2 -0
  175. package/dist/_internal/shared/checkout/rules/offer.rule.js +9 -0
  176. package/dist/_internal/shared/checkout/rules/preorder.rule.d.ts +2 -0
  177. package/dist/_internal/shared/checkout/rules/preorder.rule.js +28 -0
  178. package/dist/_internal/shared/checkout/rules/prize-draw.rule.d.ts +2 -0
  179. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +65 -0
  180. package/dist/_internal/shared/checkout/rules/standard.rule.d.ts +2 -0
  181. package/dist/_internal/shared/checkout/rules/standard.rule.js +5 -0
  182. package/dist/_internal/shared/checkout/rules/types.d.ts +125 -0
  183. package/dist/_internal/shared/checkout/rules/types.js +13 -0
  184. package/dist/_internal/shared/features/cart/schema.d.ts +6 -6
  185. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +123 -0
  186. package/dist/_internal/shared/features/categories/bundle-copy.js +134 -0
  187. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +318 -0
  188. package/dist/_internal/shared/features/categories/bundle-schemas.js +55 -0
  189. package/dist/_internal/shared/features/orders/refund-copy.d.ts +36 -0
  190. package/dist/_internal/shared/features/orders/refund-copy.js +40 -0
  191. package/dist/_internal/shared/features/orders/schema.d.ts +4 -4
  192. package/dist/_internal/shared/features/products/schema.d.ts +8 -8
  193. package/dist/_internal/shared/listing-types/_registry.d.ts +27 -0
  194. package/dist/_internal/shared/listing-types/_registry.js +8 -0
  195. package/dist/_internal/shared/listing-types/action-tracker.d.ts +41 -0
  196. package/dist/_internal/shared/listing-types/action-tracker.js +70 -0
  197. package/dist/_internal/shared/listing-types/capabilities.js +25 -0
  198. package/dist/_internal/shared/listing-types/cart-shipping.d.ts +37 -0
  199. package/dist/_internal/shared/listing-types/cart-shipping.js +46 -0
  200. package/dist/_internal/shared/listing-types/classified/config.d.ts +7 -0
  201. package/dist/_internal/shared/listing-types/classified/config.js +8 -0
  202. package/dist/_internal/shared/listing-types/classified/ctas.d.ts +1 -0
  203. package/dist/_internal/shared/listing-types/classified/ctas.js +3 -0
  204. package/dist/_internal/shared/listing-types/classified/og.d.ts +1 -0
  205. package/dist/_internal/shared/listing-types/classified/og.js +1 -0
  206. package/dist/_internal/shared/listing-types/classified/schema.d.ts +1 -0
  207. package/dist/_internal/shared/listing-types/classified/schema.js +1 -0
  208. package/dist/_internal/shared/listing-types/classified/seed-factory.d.ts +1 -0
  209. package/dist/_internal/shared/listing-types/classified/seed-factory.js +1 -0
  210. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +7 -0
  211. package/dist/_internal/shared/listing-types/digital-code/config.js +8 -0
  212. package/dist/_internal/shared/listing-types/digital-code/ctas.d.ts +1 -0
  213. package/dist/_internal/shared/listing-types/digital-code/ctas.js +3 -0
  214. package/dist/_internal/shared/listing-types/digital-code/og.d.ts +1 -0
  215. package/dist/_internal/shared/listing-types/digital-code/og.js +1 -0
  216. package/dist/_internal/shared/listing-types/digital-code/schema.d.ts +1 -0
  217. package/dist/_internal/shared/listing-types/digital-code/schema.js +1 -0
  218. package/dist/_internal/shared/listing-types/digital-code/seed-factory.d.ts +1 -0
  219. package/dist/_internal/shared/listing-types/digital-code/seed-factory.js +1 -0
  220. package/dist/_internal/shared/listing-types/feature-flags.d.ts +34 -0
  221. package/dist/_internal/shared/listing-types/feature-flags.js +45 -0
  222. package/dist/_internal/shared/listing-types/live/config.d.ts +7 -0
  223. package/dist/_internal/shared/listing-types/live/config.js +8 -0
  224. package/dist/_internal/shared/listing-types/live/ctas.d.ts +1 -0
  225. package/dist/_internal/shared/listing-types/live/ctas.js +3 -0
  226. package/dist/_internal/shared/listing-types/live/og.d.ts +1 -0
  227. package/dist/_internal/shared/listing-types/live/og.js +1 -0
  228. package/dist/_internal/shared/listing-types/live/schema.d.ts +1 -0
  229. package/dist/_internal/shared/listing-types/live/schema.js +1 -0
  230. package/dist/_internal/shared/listing-types/live/seed-factory.d.ts +1 -0
  231. package/dist/_internal/shared/listing-types/live/seed-factory.js +1 -0
  232. package/dist/_internal/shared/media/limits.js +8 -0
  233. package/dist/client.d.ts +6 -1
  234. package/dist/client.js +14 -1
  235. package/dist/configs/next.js +7 -0
  236. package/dist/constants/api-endpoints.d.ts +6 -0
  237. package/dist/constants/api-endpoints.js +4 -0
  238. package/dist/core/hooks/useSyncManager.js +13 -1
  239. package/dist/core/unit-of-work.d.ts +1 -1
  240. package/dist/core/unit-of-work.js +2 -2
  241. package/dist/features/account/actions/address-actions.d.ts +1 -1
  242. package/dist/features/account/actions/address-actions.js +15 -7
  243. package/dist/features/account/schemas/firestore.d.ts +8 -43
  244. package/dist/features/account/schemas/firestore.js +8 -54
  245. package/dist/features/account/schemas/index.d.ts +6 -6
  246. package/dist/features/account/server.d.ts +1 -1
  247. package/dist/features/account/server.js +3 -1
  248. package/dist/features/addresses/index.d.ts +2 -0
  249. package/dist/features/addresses/index.js +2 -0
  250. package/dist/features/addresses/repository/addresses.repository.d.ts +29 -0
  251. package/dist/features/addresses/repository/addresses.repository.js +157 -0
  252. package/dist/features/addresses/schemas/firestore.d.ts +53 -0
  253. package/dist/features/addresses/schemas/firestore.js +68 -0
  254. package/dist/features/{bundles → addresses}/schemas/index.d.ts +0 -1
  255. package/dist/features/{bundles → addresses}/schemas/index.js +0 -1
  256. package/dist/features/addresses/server.d.ts +2 -0
  257. package/dist/features/addresses/server.js +2 -0
  258. package/dist/features/admin/components/AdminAllEventEntriesView.js +4 -3
  259. package/dist/features/admin/components/AdminBidsView.js +4 -3
  260. package/dist/features/admin/components/AdminBlogView.js +8 -3
  261. package/dist/features/admin/components/AdminBundleEditorView.d.ts +9 -0
  262. package/dist/features/admin/components/AdminBundleEditorView.js +209 -0
  263. package/dist/features/admin/components/AdminBundlesView.d.ts +9 -0
  264. package/dist/features/admin/components/AdminBundlesView.js +59 -0
  265. package/dist/features/admin/components/AdminCartsView.js +13 -3
  266. package/dist/features/admin/components/AdminContactView.js +4 -3
  267. package/dist/features/admin/components/AdminCouponsView.js +32 -13
  268. package/dist/features/admin/components/AdminNewsletterView.js +4 -3
  269. package/dist/features/admin/components/AdminOrdersView.js +15 -7
  270. package/dist/features/admin/components/AdminPayoutsView.js +4 -3
  271. package/dist/features/admin/components/AdminProductsView.js +6 -5
  272. package/dist/features/admin/components/AdminReviewsView.js +5 -4
  273. package/dist/features/admin/components/AdminStoresView.js +4 -3
  274. package/dist/features/admin/components/AdminUsersView.js +15 -5
  275. package/dist/features/admin/components/AdminWishlistsView.js +10 -1
  276. package/dist/features/admin/components/DataTable.d.ts +5 -1
  277. package/dist/features/admin/components/DataTable.js +24 -20
  278. package/dist/features/admin/components/index.d.ts +4 -0
  279. package/dist/features/admin/components/index.js +3 -0
  280. package/dist/features/admin/constants/filter-tabs.d.ts +401 -0
  281. package/dist/features/admin/constants/filter-tabs.js +200 -0
  282. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -0
  283. package/dist/features/admin/hooks/useAdminListingData.js +1 -0
  284. package/dist/features/admin/schemas/firestore.d.ts +15 -0
  285. package/dist/features/admin/schemas/firestore.js +18 -0
  286. package/dist/features/admin/types/product.types.d.ts +2 -2
  287. package/dist/features/auctions/components/AuctionCard.d.ts +4 -1
  288. package/dist/features/auctions/components/AuctionCard.js +5 -3
  289. package/dist/features/auctions/components/AuctionDetailPageView.js +1 -1
  290. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +2 -2
  291. package/dist/features/auctions/components/PlaceBidFormClient.js +12 -2
  292. package/dist/features/auctions/schemas/index.d.ts +2 -2
  293. package/dist/features/auth/index.d.ts +1 -0
  294. package/dist/features/auth/index.js +1 -0
  295. package/dist/features/auth/role-predicates.d.ts +16 -0
  296. package/dist/features/auth/role-predicates.js +15 -0
  297. package/dist/features/blog/components/BlogFeaturedCard.d.ts +4 -1
  298. package/dist/features/blog/components/BlogFeaturedCard.js +5 -3
  299. package/dist/features/cart/actions/cart-actions.d.ts +1 -0
  300. package/dist/features/cart/actions/cart-actions.js +16 -0
  301. package/dist/features/cart/components/CartView.d.ts +19 -1
  302. package/dist/features/cart/components/CartView.js +2 -2
  303. package/dist/features/cart/components/ShippingPicker.d.ts +13 -0
  304. package/dist/features/cart/components/ShippingPicker.js +48 -0
  305. package/dist/features/cart/components/index.d.ts +3 -1
  306. package/dist/features/cart/components/index.js +1 -0
  307. package/dist/features/cart/hooks/useCartCount.js +7 -1
  308. package/dist/features/cart/repository/cart.repository.d.ts +1 -0
  309. package/dist/features/cart/repository/cart.repository.js +35 -0
  310. package/dist/features/cart/schemas/firestore.d.ts +27 -2
  311. package/dist/features/categories/components/BundleAddToCartCta.d.ts +16 -0
  312. package/dist/features/categories/components/BundleAddToCartCta.js +54 -0
  313. package/dist/features/categories/components/BundleBuyNowCta.d.ts +8 -0
  314. package/dist/features/categories/components/BundleBuyNowCta.js +37 -0
  315. package/dist/features/categories/components/BundleDetailView.d.ts +22 -0
  316. package/dist/features/categories/components/BundleDetailView.js +31 -0
  317. package/dist/features/categories/components/BundleDynamicRuleEditor.d.ts +18 -0
  318. package/dist/features/categories/components/BundleDynamicRuleEditor.js +60 -0
  319. package/dist/features/categories/components/BundleItemsPicker.d.ts +26 -0
  320. package/dist/features/categories/components/BundleItemsPicker.js +135 -0
  321. package/dist/features/categories/components/BundlesListView.d.ts +13 -0
  322. package/dist/features/categories/components/BundlesListView.js +27 -0
  323. package/dist/features/categories/components/index.d.ts +12 -0
  324. package/dist/features/categories/components/index.js +9 -0
  325. package/dist/features/checkout/actions/checkout-actions.js +10 -3
  326. package/dist/features/events/components/AdminEventEditorView.js +108 -2
  327. package/dist/features/events/components/AdminEventsView.js +16 -4
  328. package/dist/features/events/components/EventCard.d.ts +4 -1
  329. package/dist/features/events/components/EventCard.js +7 -3
  330. package/dist/features/events/components/EventRaffleWinnerView.d.ts +21 -0
  331. package/dist/features/events/components/EventRaffleWinnerView.js +18 -0
  332. package/dist/features/events/components/SpinWheelView.d.ts +27 -0
  333. package/dist/features/events/components/SpinWheelView.js +64 -0
  334. package/dist/features/events/components/index.d.ts +4 -0
  335. package/dist/features/events/components/index.js +2 -0
  336. package/dist/features/events/schemas/firestore.d.ts +27 -1
  337. package/dist/features/events/schemas/firestore.js +7 -0
  338. package/dist/features/events/types/index.d.ts +27 -1
  339. package/dist/features/homepage/components/FeaturedBundlesSection.d.ts +16 -0
  340. package/dist/features/homepage/components/FeaturedBundlesSection.js +24 -0
  341. package/dist/features/homepage/components/MarketplaceHomepageView.js +4 -1
  342. package/dist/features/homepage/components/WhatsAppCommunitySection.js +2 -2
  343. package/dist/features/homepage/lib/section-renderer.d.ts +2 -0
  344. package/dist/features/homepage/lib/section-renderer.js +5 -5
  345. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  346. package/dist/features/layout/NavbarLayout.js +32 -3
  347. package/dist/features/layout/TitleBarLayout.d.ts +6 -3
  348. package/dist/features/layout/TitleBarLayout.js +22 -7
  349. package/dist/features/media/upload/MediaUploadField.d.ts +15 -1
  350. package/dist/features/media/upload/MediaUploadField.js +22 -1
  351. package/dist/features/orders/components/MarketplaceOrderCard.js +4 -2
  352. package/dist/features/orders/components/OrderSiblingPayments.d.ts +8 -0
  353. package/dist/features/orders/components/OrderSiblingPayments.js +16 -0
  354. package/dist/features/orders/components/RefundHistoryTable.d.ts +6 -0
  355. package/dist/features/orders/components/RefundHistoryTable.js +23 -0
  356. package/dist/features/orders/components/RefundRequestView.d.ts +8 -0
  357. package/dist/features/orders/components/RefundRequestView.js +42 -0
  358. package/dist/features/orders/components/index.d.ts +6 -0
  359. package/dist/features/orders/components/index.js +3 -0
  360. package/dist/features/orders/index.d.ts +1 -0
  361. package/dist/features/orders/index.js +2 -0
  362. package/dist/features/orders/repository/orders.repository.d.ts +20 -1
  363. package/dist/features/orders/repository/orders.repository.js +30 -1
  364. package/dist/features/orders/schemas/firestore.d.ts +63 -13
  365. package/dist/features/orders/schemas/firestore.js +5 -5
  366. package/dist/features/orders/schemas/index.d.ts +4 -4
  367. package/dist/features/orders/types/index.d.ts +12 -2
  368. package/dist/features/orders/utils/bundle-grouping.d.ts +48 -0
  369. package/dist/features/orders/utils/bundle-grouping.js +54 -0
  370. package/dist/features/orders/utils/order-splitter.d.ts +9 -10
  371. package/dist/features/orders/utils/order-splitter.js +24 -30
  372. package/dist/features/payments/repository/payout.repository.d.ts +17 -1
  373. package/dist/features/payments/repository/payout.repository.js +47 -0
  374. package/dist/features/payments/schemas/firestore.d.ts +26 -0
  375. package/dist/features/pre-orders/components/PreorderCard.d.ts +4 -1
  376. package/dist/features/pre-orders/components/PreorderCard.js +8 -6
  377. package/dist/features/products/actions/product-actions.d.ts +1 -1
  378. package/dist/features/products/actions/product-actions.js +1 -1
  379. package/dist/features/products/components/CompareOverlay.d.ts +2 -2
  380. package/dist/features/products/components/CompareOverlay.js +4 -4
  381. package/dist/features/products/components/InteractiveProductCard.js +7 -12
  382. package/dist/features/products/components/NonRefundableConsentModal.d.ts +1 -1
  383. package/dist/features/products/components/NonRefundableConsentModal.js +0 -10
  384. package/dist/features/products/components/ProductGrid.js +28 -12
  385. package/dist/features/products/components/ShowGroupSection.js +3 -3
  386. package/dist/features/products/components/SublistingCarouselSection.js +2 -2
  387. package/dist/features/products/components/index.d.ts +0 -4
  388. package/dist/features/products/components/index.js +5 -2
  389. package/dist/features/products/index.d.ts +1 -1
  390. package/dist/features/products/index.js +3 -1
  391. package/dist/features/products/repository/products.repository.js +4 -0
  392. package/dist/features/products/schemas/catalog-product.d.ts +70 -0
  393. package/dist/features/products/schemas/catalog-product.js +50 -0
  394. package/dist/features/products/schemas/firestore.d.ts +110 -2
  395. package/dist/features/products/schemas/firestore.js +30 -0
  396. package/dist/features/products/schemas/index.d.ts +8 -8
  397. package/dist/features/products/types/index.d.ts +1 -1
  398. package/dist/features/products/utils/listing-type.d.ts +9 -0
  399. package/dist/features/products/utils/listing-type.js +4 -0
  400. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  401. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  402. package/dist/features/promotions/components/CouponCard.d.ts +28 -10
  403. package/dist/features/promotions/components/CouponCard.js +116 -14
  404. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  405. package/dist/features/promotions/repository/coupons.repository.d.ts +1 -1
  406. package/dist/features/reviews/schemas/index.d.ts +2 -2
  407. package/dist/features/search/schemas/index.d.ts +2 -2
  408. package/dist/features/search/types/index.d.ts +2 -2
  409. package/dist/features/seller/components/SellerAuctionsView.js +4 -5
  410. package/dist/features/seller/components/SellerBidsView.js +5 -13
  411. package/dist/features/seller/components/SellerCouponsView.js +31 -67
  412. package/dist/features/seller/components/SellerOffersView.js +4 -5
  413. package/dist/features/seller/components/SellerOrdersView.js +4 -5
  414. package/dist/features/seller/components/SellerPayoutsView.js +4 -5
  415. package/dist/features/seller/components/SellerProductsView.js +4 -8
  416. package/dist/features/seller/schemas/index.d.ts +2 -2
  417. package/dist/features/stores/actions/store-address-actions.d.ts +10 -6
  418. package/dist/features/stores/actions/store-address-actions.js +8 -7
  419. package/dist/features/stores/components/InteractiveStoreCard.js +3 -10
  420. package/dist/features/stores/components/StoreDetailLayoutView.js +20 -5
  421. package/dist/features/stores/schemas/firestore.d.ts +45 -38
  422. package/dist/features/stores/schemas/firestore.js +2 -49
  423. package/dist/features/stores/server.d.ts +0 -1
  424. package/dist/features/stores/server.js +2 -1
  425. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -9
  426. package/dist/features/wishlist/hooks/useWishlistCount.js +67 -86
  427. package/dist/features/wishlist/types/index.d.ts +1 -1
  428. package/dist/index.d.ts +50 -9
  429. package/dist/index.js +57 -11
  430. package/dist/next/routing/route-map.d.ts +6 -0
  431. package/dist/next/routing/route-map.js +4 -0
  432. package/dist/providers/db-firebase/admin.d.ts +6 -2
  433. package/dist/providers/db-firebase/admin.js +23 -0
  434. package/dist/repositories/index.d.ts +1 -2
  435. package/dist/repositories/index.js +5 -2
  436. package/dist/security/authorization.d.ts +2 -1
  437. package/dist/security/authorization.js +3 -2
  438. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  439. package/dist/seed/bids-seed-data.d.ts +2 -2
  440. package/dist/seed/bids-seed-data.js +77 -2
  441. package/dist/seed/cart-seed-data.d.ts +10 -10
  442. package/dist/seed/cart-seed-data.js +15 -15
  443. package/dist/seed/events-seed-data.js +77 -0
  444. package/dist/seed/manifest.js +16 -8
  445. package/dist/seed/orders-seed-data.js +41 -2
  446. package/dist/seed/payouts-seed-data.js +18 -2
  447. package/dist/seed/stores-seed-data.js +55 -0
  448. package/dist/server-entry.d.ts +1 -0
  449. package/dist/server-entry.js +2 -0
  450. package/dist/server.d.ts +4 -0
  451. package/dist/server.js +8 -0
  452. package/dist/tailwind-utilities.css +1 -1
  453. package/dist/ui/components/FilterChipGroup.d.ts +39 -0
  454. package/dist/ui/components/FilterChipGroup.js +15 -0
  455. package/dist/ui/components/HorizontalScroller.js +32 -7
  456. package/dist/ui/components/HorizontalScroller.style.css +6 -0
  457. package/dist/ui/components/SiteLogo.js +1 -1
  458. package/dist/ui/index.d.ts +2 -0
  459. package/dist/ui/index.js +2 -0
  460. package/dist/utils/id-generators.d.ts +11 -0
  461. package/dist/utils/id-generators.js +16 -0
  462. package/package.json +1 -1
  463. package/dist/_internal/shared/features/bundles/config.d.ts +0 -6
  464. package/dist/_internal/shared/features/bundles/config.js +0 -6
  465. package/dist/_internal/shared/schema-versions.d.ts +0 -76
  466. package/dist/_internal/shared/schema-versions.js +0 -82
  467. package/dist/features/account/migrations.d.ts +0 -2
  468. package/dist/features/account/migrations.js +0 -10
  469. package/dist/features/admin/migrations.d.ts +0 -2
  470. package/dist/features/admin/migrations.js +0 -10
  471. package/dist/features/auctions/migrations.d.ts +0 -2
  472. package/dist/features/auctions/migrations.js +0 -10
  473. package/dist/features/auth/migrations.d.ts +0 -2
  474. package/dist/features/auth/migrations.js +0 -10
  475. package/dist/features/blog/migrations.d.ts +0 -2
  476. package/dist/features/blog/migrations.js +0 -10
  477. package/dist/features/brands/actions/brand-actions.d.ts +0 -2
  478. package/dist/features/brands/actions/brand-actions.js +0 -5
  479. package/dist/features/brands/index.d.ts +0 -3
  480. package/dist/features/brands/index.js +0 -3
  481. package/dist/features/brands/migrations.d.ts +0 -2
  482. package/dist/features/brands/migrations.js +0 -10
  483. package/dist/features/brands/repository/brands.repository.d.ts +0 -13
  484. package/dist/features/brands/repository/brands.repository.js +0 -60
  485. package/dist/features/brands/schemas/index.d.ts +0 -33
  486. package/dist/features/brands/schemas/index.js +0 -15
  487. package/dist/features/brands/server.d.ts +0 -7
  488. package/dist/features/brands/server.js +0 -7
  489. package/dist/features/bundles/components/AdminBundleEditorView.d.ts +0 -8
  490. package/dist/features/bundles/components/AdminBundleEditorView.js +0 -7
  491. package/dist/features/bundles/components/BundleDetailPageView.d.ts +0 -9
  492. package/dist/features/bundles/components/BundleDetailPageView.js +0 -45
  493. package/dist/features/bundles/components/BundleForm.d.ts +0 -12
  494. package/dist/features/bundles/components/BundleForm.js +0 -126
  495. package/dist/features/bundles/components/BundleItemsPicker.d.ts +0 -9
  496. package/dist/features/bundles/components/BundleItemsPicker.js +0 -77
  497. package/dist/features/bundles/components/BundlesByCategoryListing.d.ts +0 -6
  498. package/dist/features/bundles/components/BundlesByCategoryListing.js +0 -50
  499. package/dist/features/bundles/components/BundlesListingView.d.ts +0 -17
  500. package/dist/features/bundles/components/BundlesListingView.js +0 -50
  501. package/dist/features/bundles/components/FeaturedBundlesSection.d.ts +0 -5
  502. package/dist/features/bundles/components/FeaturedBundlesSection.js +0 -55
  503. package/dist/features/bundles/components/SellerBundleCreateView.d.ts +0 -8
  504. package/dist/features/bundles/components/SellerBundleCreateView.js +0 -7
  505. package/dist/features/bundles/components/SellerBundleEditView.d.ts +0 -9
  506. package/dist/features/bundles/components/SellerBundleEditView.js +0 -7
  507. package/dist/features/bundles/components/index.d.ts +0 -18
  508. package/dist/features/bundles/components/index.js +0 -9
  509. package/dist/features/bundles/constants/index.d.ts +0 -32
  510. package/dist/features/bundles/constants/index.js +0 -35
  511. package/dist/features/bundles/index.d.ts +0 -2
  512. package/dist/features/bundles/index.js +0 -2
  513. package/dist/features/bundles/migrations.d.ts +0 -2
  514. package/dist/features/bundles/migrations.js +0 -10
  515. package/dist/features/bundles/repository/bundles.repository.d.ts +0 -36
  516. package/dist/features/bundles/repository/bundles.repository.js +0 -148
  517. package/dist/features/bundles/repository/index.d.ts +0 -1
  518. package/dist/features/bundles/repository/index.js +0 -1
  519. package/dist/features/bundles/schemas/firestore.d.ts +0 -88
  520. package/dist/features/bundles/schemas/firestore.js +0 -29
  521. package/dist/features/bundles/schemas/zod.d.ts +0 -377
  522. package/dist/features/bundles/schemas/zod.js +0 -71
  523. package/dist/features/cart/migrations.d.ts +0 -2
  524. package/dist/features/cart/migrations.js +0 -10
  525. package/dist/features/categories/migrations.d.ts +0 -2
  526. package/dist/features/categories/migrations.js +0 -10
  527. package/dist/features/events/migrations.d.ts +0 -2
  528. package/dist/features/events/migrations.js +0 -10
  529. package/dist/features/faq/migrations.d.ts +0 -2
  530. package/dist/features/faq/migrations.js +0 -10
  531. package/dist/features/grouped/migrations.d.ts +0 -2
  532. package/dist/features/grouped/migrations.js +0 -10
  533. package/dist/features/history/migrations.d.ts +0 -2
  534. package/dist/features/history/migrations.js +0 -10
  535. package/dist/features/messages/migrations.d.ts +0 -2
  536. package/dist/features/messages/migrations.js +0 -10
  537. package/dist/features/orders/migrations.d.ts +0 -2
  538. package/dist/features/orders/migrations.js +0 -10
  539. package/dist/features/payments/migrations.d.ts +0 -2
  540. package/dist/features/payments/migrations.js +0 -10
  541. package/dist/features/products/migrations.d.ts +0 -2
  542. package/dist/features/products/migrations.js +0 -10
  543. package/dist/features/products/repository/sublisting-categories.repository.d.ts +0 -16
  544. package/dist/features/products/repository/sublisting-categories.repository.js +0 -126
  545. package/dist/features/products/schemas/sublisting-categories.d.ts +0 -45
  546. package/dist/features/products/schemas/sublisting-categories.js +0 -16
  547. package/dist/features/promotions/migrations.d.ts +0 -2
  548. package/dist/features/promotions/migrations.js +0 -10
  549. package/dist/features/reviews/migrations.d.ts +0 -2
  550. package/dist/features/reviews/migrations.js +0 -10
  551. package/dist/features/scams/migrations.d.ts +0 -2
  552. package/dist/features/scams/migrations.js +0 -10
  553. package/dist/features/seller/migrations.d.ts +0 -2
  554. package/dist/features/seller/migrations.js +0 -10
  555. package/dist/features/stores/migrations.d.ts +0 -2
  556. package/dist/features/stores/migrations.js +0 -10
  557. package/dist/features/sublisting/migrations.d.ts +0 -2
  558. package/dist/features/sublisting/migrations.js +0 -10
  559. package/dist/features/sublisting/schemas/firestore.d.ts +0 -32
  560. package/dist/features/sublisting/schemas/firestore.js +0 -19
  561. package/dist/features/support/migrations.d.ts +0 -2
  562. package/dist/features/support/migrations.js +0 -10
  563. package/dist/features/wishlist/migrations.d.ts +0 -2
  564. package/dist/features/wishlist/migrations.js +0 -10
  565. package/dist/seed/_bundle-constants.d.ts +0 -14
  566. package/dist/seed/_bundle-constants.js +0 -14
  567. package/dist/seed/anime-figures-seed-data.d.ts +0 -8
  568. package/dist/seed/anime-figures-seed-data.js +0 -1033
  569. package/dist/seed/beyblade-seed-data.d.ts +0 -7
  570. package/dist/seed/beyblade-seed-data.js +0 -1129
  571. package/dist/seed/brands-seed-data.d.ts +0 -7
  572. package/dist/seed/brands-seed-data.js +0 -410
  573. package/dist/seed/bundles-seed-data.d.ts +0 -13
  574. package/dist/seed/bundles-seed-data.js +0 -229
  575. package/dist/seed/cosplay-accessories-seed-data.d.ts +0 -8
  576. package/dist/seed/cosplay-accessories-seed-data.js +0 -647
  577. package/dist/seed/hot-wheels-seed-data.d.ts +0 -7
  578. package/dist/seed/hot-wheels-seed-data.js +0 -1612
  579. package/dist/seed/letitrip-official-seed-data.d.ts +0 -8
  580. package/dist/seed/letitrip-official-seed-data.js +0 -399
  581. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +0 -8
  582. package/dist/seed/pokemon-carousel-slides-seed-data.js +0 -322
  583. package/dist/seed/pokemon-categories-seed-data.d.ts +0 -24
  584. package/dist/seed/pokemon-categories-seed-data.js +0 -547
  585. package/dist/seed/pokemon-coupons-seed-data.d.ts +0 -6
  586. package/dist/seed/pokemon-coupons-seed-data.js +0 -465
  587. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +0 -7
  588. package/dist/seed/pokemon-homepage-sections-seed-data.js +0 -241
  589. package/dist/seed/pokemon-products-seed-data.d.ts +0 -9
  590. package/dist/seed/pokemon-products-seed-data.js +0 -1791
  591. package/dist/seed/pokemon-seed-bundle.d.ts +0 -47
  592. package/dist/seed/pokemon-seed-bundle.js +0 -71
  593. package/dist/seed/pokemon-stores-seed-data.d.ts +0 -6
  594. package/dist/seed/pokemon-stores-seed-data.js +0 -179
  595. package/dist/seed/pokemon-users-seed-data.d.ts +0 -6
  596. package/dist/seed/pokemon-users-seed-data.js +0 -521
  597. package/dist/seed/products-seed-data.d.ts +0 -6
  598. package/dist/seed/products-seed-data.js +0 -2530
  599. package/dist/seed/retro-gaming-seed-data.d.ts +0 -8
  600. package/dist/seed/retro-gaming-seed-data.js +0 -801
  601. package/dist/seed/server.d.ts +0 -2
  602. package/dist/seed/server.js +0 -7
  603. package/dist/seed/sublisting-categories-seed-data.d.ts +0 -7
  604. package/dist/seed/sublisting-categories-seed-data.js +0 -159
  605. package/dist/seed/transformers-seed-data.d.ts +0 -7
  606. package/dist/seed/transformers-seed-data.js +0 -530
@@ -0,0 +1,109 @@
1
+ import { orderRepository, payoutRepository, storeRepository, userRepository, } from "../../../../repositories";
2
+ import { getDefaultCurrency } from "../../../../core/index";
3
+ import { BATCH_LIMIT } from "../handlers/messages";
4
+ const AUTO_PAYOUT_WINDOW_DAYS = 7;
5
+ const PLATFORM_COMMISSION_RATE = 0.05;
6
+ const GATEWAY_FEE_RATE = 0.0236;
7
+ const GST_RATE = 0.18;
8
+ function getBusinessDayCutoff(daysAgo) {
9
+ const now = new Date();
10
+ const cutoff = new Date(now);
11
+ cutoff.setUTCDate(cutoff.getUTCDate() - daysAgo);
12
+ cutoff.setUTCHours(4, 30, 0, 0);
13
+ return cutoff;
14
+ }
15
+ export async function runAutoPayoutEligibility(ctx) {
16
+ ctx.logger.info("Starting daily auto-payout eligibility sweep", {
17
+ windowDays: AUTO_PAYOUT_WINDOW_DAYS,
18
+ });
19
+ const cutoff = getBusinessDayCutoff(AUTO_PAYOUT_WINDOW_DAYS);
20
+ const eligible = await orderRepository.getEligibleAutomatic(cutoff);
21
+ if (eligible.length === 0) {
22
+ ctx.logger.info("No auto-payout eligible orders found");
23
+ return;
24
+ }
25
+ ctx.logger.info(`Found ${eligible.length} eligible order(s) — grouping by seller`);
26
+ const byStore = new Map();
27
+ for (const entry of eligible) {
28
+ const storeId = entry.data.storeId;
29
+ if (!storeId) {
30
+ ctx.logger.warn(`Order ${entry.id} has no storeId — skipping`);
31
+ continue;
32
+ }
33
+ if (!byStore.has(storeId))
34
+ byStore.set(storeId, []);
35
+ byStore.get(storeId).push(entry);
36
+ }
37
+ let payoutsCreated = 0;
38
+ let ordersProcessed = 0;
39
+ for (const [storeId, orders] of byStore.entries()) {
40
+ const store = await storeRepository.findBySlug(storeId);
41
+ const seller = store ? await userRepository.findById(store.ownerId) : null;
42
+ if (!seller) {
43
+ ctx.logger.warn(`Store/seller ${storeId} not found — skipping ${orders.length} order(s)`, { orderIds: orders.map((o) => o.id) });
44
+ continue;
45
+ }
46
+ const sellerId = store.ownerId;
47
+ const grossAmount = orders.reduce((sum, o) => sum + (o.data.totalPrice ?? 0), 0);
48
+ const platformFee = Math.round(grossAmount * PLATFORM_COMMISSION_RATE * 100) / 100;
49
+ const gatewayFee = Math.round(grossAmount * GATEWAY_FEE_RATE * 100) / 100;
50
+ const gstAmount = Math.round(platformFee * GST_RATE * 100) / 100;
51
+ const netAmount = Math.round((grossAmount - platformFee - gatewayFee - gstAmount) * 100) / 100;
52
+ const payoutInput = {
53
+ storeId,
54
+ sellerName: (seller.displayName ?? seller.email ?? sellerId),
55
+ sellerEmail: (seller.email ?? ""),
56
+ orderIds: orders.map((o) => o.id),
57
+ amount: netAmount,
58
+ grossAmount,
59
+ platformFee,
60
+ platformFeeRate: PLATFORM_COMMISSION_RATE,
61
+ gatewayFee,
62
+ gatewayFeeRate: GATEWAY_FEE_RATE,
63
+ gstAmount,
64
+ gstRate: GST_RATE,
65
+ isAutomatic: true,
66
+ currency: getDefaultCurrency(),
67
+ status: "pending",
68
+ paymentMethod: seller.payoutDetails?.method === "upi"
69
+ ? "upi"
70
+ : "bank_transfer",
71
+ upiId: seller.payoutDetails?.method === "upi" ? seller.payoutDetails.upiId : undefined,
72
+ bankAccount: seller.payoutDetails?.method === "bank_transfer" &&
73
+ seller.payoutDetails.bankAccount
74
+ ? {
75
+ accountHolderName: seller.payoutDetails.bankAccount.accountHolderName,
76
+ accountNumberMasked: seller.payoutDetails.bankAccount.accountNumberMasked,
77
+ ifscCode: seller.payoutDetails.bankAccount.ifscCode,
78
+ bankName: seller.payoutDetails.bankAccount.bankName,
79
+ }
80
+ : undefined,
81
+ notes: `Auto-payout — ${orders.length} delivered order(s) past ${AUTO_PAYOUT_WINDOW_DAYS}-day window`,
82
+ requestedAt: new Date(),
83
+ };
84
+ const { id: payoutId } = await payoutRepository.create(payoutInput);
85
+ for (let i = 0; i < orders.length; i += BATCH_LIMIT) {
86
+ const slice = orders.slice(i, i + BATCH_LIMIT);
87
+ const batch = ctx.db.batch();
88
+ for (const entry of slice) {
89
+ orderRepository.markPayoutRequested(batch, entry.ref, payoutId);
90
+ }
91
+ await batch.commit();
92
+ }
93
+ ctx.logger.info(`Auto-payout created for store ${storeId}`, {
94
+ payoutId,
95
+ orderCount: orders.length,
96
+ grossAmount,
97
+ platformFee,
98
+ gatewayFee,
99
+ gstAmount,
100
+ netAmount,
101
+ });
102
+ payoutsCreated++;
103
+ ordersProcessed += orders.length;
104
+ }
105
+ ctx.logger.info("Daily auto-payout eligibility sweep complete", {
106
+ payoutsCreated,
107
+ ordersProcessed,
108
+ });
109
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core: bundle stock sync (daily safety net).
3
+ *
4
+ * SB-UNI-V: bundles live on the `categories` collection with
5
+ * categoryType:"bundle". Each bundle row owns `bundleProductIds[]` +
6
+ * `bundleStockStatus`. This sweep recomputes `bundleStockStatus` for
7
+ * every active bundle by inspecting its members' product status.
8
+ */
9
+ import type { JobContext } from "../runtime/types";
10
+ export declare function runBundleStockSync(ctx: JobContext): Promise<void>;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Core: bundle stock sync (daily safety net).
3
+ *
4
+ * SB-UNI-V: bundles live on the `categories` collection with
5
+ * categoryType:"bundle". Each bundle row owns `bundleProductIds[]` +
6
+ * `bundleStockStatus`. This sweep recomputes `bundleStockStatus` for
7
+ * every active bundle by inspecting its members' product status.
8
+ */
9
+ const CATEGORIES_COLLECTION = "categories";
10
+ const PRODUCT_COLLECTION = "products";
11
+ const UNAVAILABLE = new Set(["sold", "out_of_stock", "discontinued"]);
12
+ const MIN_ACTIVE_DEFAULT = 1;
13
+ async function computeBundleStockStatus(productIds, minActive, ctx) {
14
+ if (productIds.length === 0)
15
+ return "out_of_stock";
16
+ let unavailable = 0;
17
+ for (let i = 0; i < productIds.length; i += 30) {
18
+ const chunk = productIds.slice(i, i + 30);
19
+ const snap = await ctx.db
20
+ .collection(PRODUCT_COLLECTION)
21
+ .where("__name__", "in", chunk)
22
+ .get();
23
+ for (const doc of snap.docs) {
24
+ const status = doc.data().status;
25
+ if (!status || UNAVAILABLE.has(status))
26
+ unavailable++;
27
+ }
28
+ if (snap.size < chunk.length)
29
+ unavailable += chunk.length - snap.size;
30
+ }
31
+ const active = productIds.length - unavailable;
32
+ if (unavailable === 0)
33
+ return "in_stock";
34
+ if (active < minActive)
35
+ return "out_of_stock";
36
+ return "partial";
37
+ }
38
+ export async function runBundleStockSync(ctx) {
39
+ ctx.logger.info("Bundle stock sync starting (SB-UNI-V categories)");
40
+ const snap = await ctx.db
41
+ .collection(CATEGORIES_COLLECTION)
42
+ .where("categoryType", "==", "bundle")
43
+ .where("isActive", "==", true)
44
+ .limit(500)
45
+ .get();
46
+ if (snap.empty) {
47
+ ctx.logger.info("No active bundle categories to scan");
48
+ return;
49
+ }
50
+ let updated = 0;
51
+ for (const bundleDoc of snap.docs) {
52
+ const data = bundleDoc.data();
53
+ const productIds = data.bundleProductIds ?? [];
54
+ if (productIds.length === 0)
55
+ continue;
56
+ const minActive = data.minActiveMembers ?? MIN_ACTIVE_DEFAULT;
57
+ const nextStatus = await computeBundleStockStatus(productIds, minActive, ctx);
58
+ if (nextStatus !== data.bundleStockStatus) {
59
+ await bundleDoc.ref.update({
60
+ bundleStockStatus: nextStatus,
61
+ bundleQueryResolvedAt: ctx.now,
62
+ updatedAt: ctx.now,
63
+ });
64
+ updated++;
65
+ }
66
+ }
67
+ ctx.logger.info("Bundle stock sync complete", {
68
+ scanned: snap.size,
69
+ updated,
70
+ });
71
+ }
@@ -0,0 +1,2 @@
1
+ import type { JobContext } from "../runtime/types";
2
+ export declare function runCartPrune(ctx: JobContext): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import { cartRepository } from "../../../../repositories";
2
+ import { CART_TTL_DAYS } from "../handlers/messages";
3
+ import { batchDelete } from "../handlers/_helpers";
4
+ export async function runCartPrune(ctx) {
5
+ ctx.logger.info(`Pruning carts idle for > ${CART_TTL_DAYS} days`);
6
+ const refs = await cartRepository.getStaleRefs(CART_TTL_DAYS);
7
+ if (refs.length === 0) {
8
+ ctx.logger.info("No stale carts found");
9
+ return;
10
+ }
11
+ const deleted = await batchDelete(ctx, refs);
12
+ ctx.logger.info("Cart prune complete", { deleted });
13
+ }
@@ -0,0 +1,2 @@
1
+ import type { JobContext } from "../runtime/types";
2
+ export declare function runCleanupRtdbEvents(ctx: JobContext): Promise<void>;
@@ -0,0 +1,45 @@
1
+ import { getAdminAuth, getAdminRealtimeDb } from "../../../../providers/db-firebase";
2
+ const AUTH_STALE_MS = 3 * 60 * 1000;
3
+ const PAYMENT_STALE_MS = 15 * 60 * 1000;
4
+ export async function runCleanupRtdbEvents(ctx) {
5
+ ctx.logger.info("Starting RTDB events cleanup");
6
+ const rtdb = getAdminRealtimeDb();
7
+ const auth = getAdminAuth();
8
+ const now = Date.now();
9
+ try {
10
+ const authSnap = await rtdb.ref("auth_events").get();
11
+ if (authSnap.exists()) {
12
+ const allEvents = authSnap.val();
13
+ const staleAuthIds = Object.entries(allEvents)
14
+ .filter(([, node]) => (node.createdAt ?? 0) < now - AUTH_STALE_MS)
15
+ .map(([id]) => id);
16
+ if (staleAuthIds.length > 0) {
17
+ await Promise.all(staleAuthIds.flatMap((id) => [
18
+ rtdb.ref(`auth_events/${id}`).remove(),
19
+ auth.deleteUser(`auth_event_${id}`).catch(() => { }),
20
+ ]));
21
+ ctx.logger.info("Auth events removed", { count: staleAuthIds.length });
22
+ }
23
+ }
24
+ }
25
+ catch (authErr) {
26
+ ctx.logger.error("Auth events cleanup failed (non-fatal)", authErr);
27
+ }
28
+ try {
29
+ const paySnap = await rtdb.ref("payment_events").get();
30
+ if (paySnap.exists()) {
31
+ const allPayments = paySnap.val();
32
+ const stalePayIds = Object.entries(allPayments)
33
+ .filter(([, node]) => (node.createdAt ?? 0) < now - PAYMENT_STALE_MS)
34
+ .map(([id]) => id);
35
+ if (stalePayIds.length > 0) {
36
+ await Promise.all(stalePayIds.map((id) => rtdb.ref(`payment_events/${id}`).remove()));
37
+ ctx.logger.info("Payment events removed", { count: stalePayIds.length });
38
+ }
39
+ }
40
+ }
41
+ catch (payErr) {
42
+ ctx.logger.error("Payment events cleanup failed (non-fatal)", payErr);
43
+ }
44
+ ctx.logger.info("RTDB events cleanup complete");
45
+ }
@@ -0,0 +1,2 @@
1
+ import type { JobContext } from "../runtime/types";
2
+ export declare function runCountersReconcile(ctx: JobContext): Promise<void>;
@@ -0,0 +1,107 @@
1
+ import { categoriesRepository, reviewRepository, storeRepository, } from "../../../../repositories";
2
+ import { ProductStatusValues, PRODUCT_COLLECTION } from "../../../../features/products/schemas/firestore";
3
+ import { QUERY_LIMIT } from "../handlers/messages";
4
+ const STORES_COLLECTION = "stores";
5
+ const ORDERS_COLLECTION = "orders";
6
+ async function reconcileCategories(ctx) {
7
+ const snap = await ctx.db
8
+ .collection(PRODUCT_COLLECTION)
9
+ .where("status", "==", ProductStatusValues.PUBLISHED)
10
+ .limit(QUERY_LIMIT)
11
+ .get();
12
+ ctx.logger.info(`[categories] ${snap.size} published products found`);
13
+ const leafCounts = {};
14
+ for (const doc of snap.docs) {
15
+ const data = doc.data();
16
+ const catId = data.category;
17
+ if (!catId)
18
+ continue;
19
+ if (!leafCounts[catId])
20
+ leafCounts[catId] = { productIds: [], auctionIds: [] };
21
+ if (data.listingType === "auction")
22
+ leafCounts[catId].auctionIds.push(doc.id);
23
+ else
24
+ leafCounts[catId].productIds.push(doc.id);
25
+ }
26
+ const ancestorAggregates = {};
27
+ let leafUpdated = 0;
28
+ for (const [catId, { productIds, auctionIds }] of Object.entries(leafCounts)) {
29
+ await categoriesRepository.setMetrics(catId, productIds.length, auctionIds.length, productIds, auctionIds);
30
+ leafUpdated++;
31
+ const parentIds = (await categoriesRepository.findById(catId))?.parentIds ?? [];
32
+ for (const ancestorId of parentIds) {
33
+ if (!ancestorAggregates[ancestorId]) {
34
+ ancestorAggregates[ancestorId] = { productDelta: 0, auctionDelta: 0 };
35
+ }
36
+ ancestorAggregates[ancestorId].productDelta += productIds.length;
37
+ ancestorAggregates[ancestorId].auctionDelta += auctionIds.length;
38
+ }
39
+ }
40
+ const ancestorEntries = Object.entries(ancestorAggregates);
41
+ for (const [ancestorId, { productDelta, auctionDelta }] of ancestorEntries) {
42
+ await categoriesRepository.setMetrics(ancestorId, productDelta, auctionDelta, [], []);
43
+ }
44
+ ctx.logger.info("[categories] reconciliation complete", {
45
+ leafCategoriesUpdated: leafUpdated,
46
+ ancestorCategoriesUpdated: ancestorEntries.length,
47
+ });
48
+ }
49
+ async function reconcileStores(ctx) {
50
+ const storeIds = await storeRepository.listIds();
51
+ ctx.logger.info(`[stores] ${storeIds.length} stores found`);
52
+ let processed = 0;
53
+ let errors = 0;
54
+ for (const storeId of storeIds) {
55
+ try {
56
+ const storeSnap = await ctx.db.collection(STORES_COLLECTION).doc(storeId).get();
57
+ if (!storeSnap.exists)
58
+ continue;
59
+ const sellerId = storeSnap.data().ownerId;
60
+ if (!sellerId)
61
+ continue;
62
+ const [productsSnap, ordersSnap, reviewStats] = await Promise.all([
63
+ ctx.db
64
+ .collection(PRODUCT_COLLECTION)
65
+ .where("sellerId", "==", sellerId)
66
+ .where("status", "==", ProductStatusValues.PUBLISHED)
67
+ .limit(QUERY_LIMIT)
68
+ .get(),
69
+ ctx.db
70
+ .collection(ORDERS_COLLECTION)
71
+ .where("sellerId", "==", sellerId)
72
+ .where("status", "==", "delivered")
73
+ .limit(QUERY_LIMIT)
74
+ .get(),
75
+ reviewRepository.getApprovedRatingAggregateByStore(storeId),
76
+ ]);
77
+ await storeRepository.setStats(storeId, productsSnap.size, ordersSnap.size, reviewStats.count, reviewStats.count > 0 ? reviewStats.avgRating : null);
78
+ processed++;
79
+ }
80
+ catch (storeErr) {
81
+ errors++;
82
+ ctx.logger.error(`[stores] failed for store ${storeId}`, storeErr);
83
+ }
84
+ }
85
+ ctx.logger.info("[stores] reconciliation complete", {
86
+ processed,
87
+ errors,
88
+ total: storeIds.length,
89
+ });
90
+ }
91
+ export async function runCountersReconcile(ctx) {
92
+ ctx.logger.info("Starting counters reconciliation (categories + stores)");
93
+ try {
94
+ await reconcileCategories(ctx);
95
+ }
96
+ catch (err) {
97
+ ctx.logger.error("Category reconciliation failed", err);
98
+ }
99
+ try {
100
+ await reconcileStores(ctx);
101
+ }
102
+ catch (err) {
103
+ ctx.logger.error("Store reconciliation failed", err);
104
+ throw err;
105
+ }
106
+ ctx.logger.info("Counters reconciliation complete");
107
+ }
@@ -0,0 +1,2 @@
1
+ import type { JobContext } from "../runtime/types";
2
+ export declare function runCouponExpiry(ctx: JobContext): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import { couponsRepository } from "../../../../repositories";
2
+ export async function runCouponExpiry(ctx) {
3
+ ctx.logger.info("Starting coupon expiry sweep");
4
+ const refs = await couponsRepository.getExpiredActiveRefs(ctx.now);
5
+ if (refs.length === 0) {
6
+ ctx.logger.info("No expired active coupons found");
7
+ return;
8
+ }
9
+ const batch = ctx.db.batch();
10
+ refs.forEach((ref) => couponsRepository.deactivateInBatch(batch, ref));
11
+ await batch.commit();
12
+ ctx.logger.info("Coupon expiry complete", { deactivated: refs.length });
13
+ }
@@ -0,0 +1,2 @@
1
+ import type { JobContext } from "../runtime/types";
2
+ export declare function runDailyDataCleanup(ctx: JobContext): Promise<void>;
@@ -0,0 +1,20 @@
1
+ import { sessionRepository, tokenRepository } from "../../../../repositories";
2
+ import { batchDelete } from "../handlers/_helpers";
3
+ export async function runDailyDataCleanup(ctx) {
4
+ ctx.logger.info("Starting daily data cleanup (sessions + tokens)");
5
+ const sessionRefs = await sessionRepository.getExpiredRefs(ctx.now);
6
+ const sessionsDeleted = await batchDelete(ctx, sessionRefs);
7
+ ctx.logger.info("Session cleanup complete", { deleted: sessionsDeleted });
8
+ const emailRefs = await tokenRepository.getExpiredEmailVerificationRefs(ctx.now);
9
+ const emailDeleted = await batchDelete(ctx, emailRefs);
10
+ const pwRefs = await tokenRepository.getExpiredPasswordResetRefs(ctx.now);
11
+ const pwDeleted = await batchDelete(ctx, pwRefs);
12
+ ctx.logger.info("Token cleanup complete", {
13
+ emailVerificationDeleted: emailDeleted,
14
+ passwordResetDeleted: pwDeleted,
15
+ });
16
+ ctx.logger.info("Daily data cleanup complete", {
17
+ sessionsDeleted,
18
+ tokensDeleted: emailDeleted + pwDeleted,
19
+ });
20
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Pure job-core functions — no Firebase Functions trigger types, no event
3
+ * envelope. Call any of these from an API route, server action, script,
4
+ * Vitest test, or another runtime by passing a `JobContext`.
5
+ *
6
+ * The matching `handlers/<name>.ts` wrappers add Firebase Functions trigger
7
+ * typing (ScheduleHandler / FirestoreTriggerHandler / CallableHandler) and
8
+ * unwrap the Firestore event envelope — that's the only Firebase-specific
9
+ * layer. Wire those into `functions/src/index.ts` via `bindToFirebase.*`.
10
+ */
11
+ export { runCouponExpiry } from "./couponExpiry";
12
+ export { runOfferExpiry } from "./offerExpiry";
13
+ export { runCartPrune } from "./cartPrune";
14
+ export { runNotificationPrune } from "./notificationPrune";
15
+ export { runDailyDataCleanup } from "./dailyDataCleanup";
16
+ export { runCleanupRtdbEvents } from "./cleanupRtdbEvents";
17
+ export { runMediaTmpCleanup } from "./mediaTmpCleanup";
18
+ export { runPendingOrderTimeout } from "./pendingOrderTimeout";
19
+ export { runCountersReconcile } from "./countersReconcile";
20
+ export { runBundleStockSync } from "./bundleStockSync";
21
+ export { runPayoutBatch } from "./payoutBatch";
22
+ export { runAutoPayoutEligibility } from "./autoPayoutEligibility";
23
+ export { runProductStatsSync } from "./productStatsSync";
24
+ export { runPositionsReconcile } from "./positionsReconcile";
25
+ export { runWeeklyPayoutEligibility } from "./weeklyPayoutEligibility";
26
+ export { runAuctionSettlement } from "./auctionSettlement";
27
+ export { runPrizeRevealOpen } from "./prizeRevealOpen";
28
+ export { runPrizeRevealClose } from "./prizeRevealClose";
29
+ export { runPrizeRevealExpiry } from "./prizeRevealExpiry";
30
+ export { runPrizeRevealReminder } from "./prizeRevealReminder";
31
+ export { runPromotions, type PromotionsCallableResult } from "./promotions";
32
+ export { runListingProcessor, supportedListingCollections, type ListingRequestBody, type ListingResponseBody, } from "./listingProcessor";
33
+ export { runStoreAnalytics, type StoreAnalyticsInput, type StoreAnalyticsResult, } from "./storeAnalytics";
34
+ export { runAdminAnalytics, type AdminAnalyticsResult } from "./adminAnalytics";
35
+ export { runTriggerEventRaffle, type TriggerEventRaffleInput, type TriggerEventRaffleResult, } from "./triggerEventRaffle";
36
+ export { runAssignSpinPrize, type AssignSpinPrizeInput, type AssignSpinPrizeResult, } from "./assignSpinPrize";
37
+ export { handleBidPlaced, type HandleBidPlacedInput, type NewBid } from "./onBidPlaced";
38
+ export { handleOrderCreate, type HandleOrderCreateInput, type NewOrder, } from "./onOrderCreate";
39
+ export { handleOrderStatusChange, type HandleOrderStatusChangeInput, type OrderAfter, type OrderBefore, } from "./onOrderStatusChange";
40
+ export { handleProductWrite, type HandleProductWriteInput, type ProductDoc, } from "./onProductWrite";
41
+ export { handleProductStockChange, type HandleProductStockChangeInput, syncBundlesForProduct, syncGroupedListingsForProduct, isAvailable, } from "./onProductStockChange";
42
+ export { handleReviewWrite, type HandleReviewWriteInput } from "./onReviewWrite";
43
+ export { handleCategoryWrite, type HandleCategoryWriteInput, type CategoryDoc, } from "./onCategoryWrite";
44
+ export { handleStoreWrite, type HandleStoreWriteInput, type StoreDoc, } from "./onStoreWrite";
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Pure job-core functions — no Firebase Functions trigger types, no event
3
+ * envelope. Call any of these from an API route, server action, script,
4
+ * Vitest test, or another runtime by passing a `JobContext`.
5
+ *
6
+ * The matching `handlers/<name>.ts` wrappers add Firebase Functions trigger
7
+ * typing (ScheduleHandler / FirestoreTriggerHandler / CallableHandler) and
8
+ * unwrap the Firestore event envelope — that's the only Firebase-specific
9
+ * layer. Wire those into `functions/src/index.ts` via `bindToFirebase.*`.
10
+ */
11
+ // Schedule jobs
12
+ export { runCouponExpiry } from "./couponExpiry";
13
+ export { runOfferExpiry } from "./offerExpiry";
14
+ export { runCartPrune } from "./cartPrune";
15
+ export { runNotificationPrune } from "./notificationPrune";
16
+ export { runDailyDataCleanup } from "./dailyDataCleanup";
17
+ export { runCleanupRtdbEvents } from "./cleanupRtdbEvents";
18
+ export { runMediaTmpCleanup } from "./mediaTmpCleanup";
19
+ export { runPendingOrderTimeout } from "./pendingOrderTimeout";
20
+ export { runCountersReconcile } from "./countersReconcile";
21
+ export { runBundleStockSync } from "./bundleStockSync";
22
+ export { runPayoutBatch } from "./payoutBatch";
23
+ export { runAutoPayoutEligibility } from "./autoPayoutEligibility";
24
+ export { runProductStatsSync } from "./productStatsSync";
25
+ export { runPositionsReconcile } from "./positionsReconcile";
26
+ export { runWeeklyPayoutEligibility } from "./weeklyPayoutEligibility";
27
+ export { runAuctionSettlement } from "./auctionSettlement";
28
+ export { runPrizeRevealOpen } from "./prizeRevealOpen";
29
+ export { runPrizeRevealClose } from "./prizeRevealClose";
30
+ export { runPrizeRevealExpiry } from "./prizeRevealExpiry";
31
+ export { runPrizeRevealReminder } from "./prizeRevealReminder";
32
+ // Callables
33
+ export { runPromotions } from "./promotions";
34
+ export { runListingProcessor, supportedListingCollections, } from "./listingProcessor";
35
+ export { runStoreAnalytics, } from "./storeAnalytics";
36
+ export { runAdminAnalytics } from "./adminAnalytics";
37
+ export { runTriggerEventRaffle, } from "./triggerEventRaffle";
38
+ export { runAssignSpinPrize, } from "./assignSpinPrize";
39
+ // Trigger reactors — call with the meaningful payload, no Firestore event needed
40
+ export { handleBidPlaced } from "./onBidPlaced";
41
+ export { handleOrderCreate, } from "./onOrderCreate";
42
+ export { handleOrderStatusChange, } from "./onOrderStatusChange";
43
+ export { handleProductWrite, } from "./onProductWrite";
44
+ export { handleProductStockChange, syncBundlesForProduct, syncGroupedListingsForProduct, isAvailable, } from "./onProductStockChange";
45
+ export { handleReviewWrite } from "./onReviewWrite";
46
+ export { handleCategoryWrite, } from "./onCategoryWrite";
47
+ export { handleStoreWrite, } from "./onStoreWrite";
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Core: server-to-server listing proxy. Every appkit repository routes its
3
+ * `.list()` through the same Sieve adapter, so adding a new collection is a
4
+ * one-line addition to `LISTERS`.
5
+ *
6
+ * Cursor: opaque base64 over `{ page }`. Callers may use either page-mode
7
+ * (`p` directly) or infinite-mode (forward `cursor` from previous response).
8
+ */
9
+ import type { JobContext } from "../runtime/types";
10
+ export interface ListingRequestBody {
11
+ collection: string;
12
+ q?: string;
13
+ f?: string;
14
+ s?: string;
15
+ p?: number | string;
16
+ ps?: number | string;
17
+ cursor?: string;
18
+ baseOpts?: Record<string, unknown>;
19
+ }
20
+ export interface ListingResponseBody {
21
+ items: unknown[];
22
+ total: number;
23
+ page: number;
24
+ pageSize: number;
25
+ totalPages: number;
26
+ hasMore: boolean;
27
+ cursor: string | null;
28
+ }
29
+ export declare function runListingProcessor(body: ListingRequestBody, ctx: JobContext): Promise<ListingResponseBody>;
30
+ export declare const supportedListingCollections: string[];