@mohasinac/appkit 2.6.1 → 2.6.2

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 (301) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +38 -0
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +75 -0
  3. package/dist/_internal/client/features/layout/RoleGuard.d.ts +15 -0
  4. package/dist/_internal/client/features/layout/RoleGuard.js +25 -0
  5. package/dist/_internal/client/features/layout/index.d.ts +5 -0
  6. package/dist/_internal/client/features/layout/index.js +4 -0
  7. package/dist/_internal/server/features/brands/actions.d.ts +3 -3
  8. package/dist/_internal/server/features/brands/actions.js +72 -5
  9. package/dist/_internal/server/features/brands/data.d.ts +8 -8
  10. package/dist/_internal/server/features/brands/data.js +10 -11
  11. package/dist/_internal/server/features/brands/service.d.ts +2 -2
  12. package/dist/_internal/server/features/brands/service.js +5 -5
  13. package/dist/_internal/server/features/categories/og.d.ts +33 -0
  14. package/dist/_internal/server/features/categories/og.js +75 -0
  15. package/dist/_internal/server/features/checkout/actions.d.ts +24 -0
  16. package/dist/_internal/server/features/checkout/actions.js +442 -13
  17. package/dist/_internal/server/features/checkout/index.d.ts +1 -1
  18. package/dist/_internal/server/features/checkout/index.js +1 -1
  19. package/dist/_internal/server/features/checkout/prize-bundle-gates.d.ts +59 -0
  20. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +99 -0
  21. package/dist/_internal/server/features/grouped/data.js +12 -5
  22. package/dist/_internal/server/features/homepage/data.d.ts +1 -1
  23. package/dist/_internal/server/features/homepage/data.js +2 -2
  24. package/dist/_internal/server/features/media/contextGuards.d.ts +52 -0
  25. package/dist/_internal/server/features/media/contextGuards.js +198 -0
  26. package/dist/_internal/server/features/orders/adapters.js +12 -0
  27. package/dist/_internal/server/features/products/data.d.ts +1 -1
  28. package/dist/_internal/server/features/sublisting-categories/data.d.ts +1 -1
  29. package/dist/_internal/server/features/sublisting-categories/data.js +2 -2
  30. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +24 -0
  31. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +86 -0
  32. package/dist/_internal/server/jobs/handlers/bundleStockSync.d.ts +18 -0
  33. package/dist/_internal/server/jobs/handlers/bundleStockSync.js +80 -0
  34. package/dist/_internal/server/jobs/handlers/index.d.ts +8 -0
  35. package/dist/_internal/server/jobs/handlers/index.js +13 -0
  36. package/dist/_internal/server/jobs/handlers/listingProcessor.js +13 -3
  37. package/dist/_internal/server/jobs/handlers/onProductStockChange.d.ts +17 -0
  38. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +136 -0
  39. package/dist/_internal/server/jobs/handlers/onProductWrite.js +17 -1
  40. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +9 -0
  41. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +29 -0
  42. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +10 -0
  43. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +58 -0
  44. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +10 -0
  45. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +65 -0
  46. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +9 -0
  47. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +45 -0
  48. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +30 -0
  49. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +94 -0
  50. package/dist/_internal/shared/features/brands/schema.d.ts +3 -3
  51. package/dist/_internal/shared/features/cart/schema.d.ts +8 -8
  52. package/dist/_internal/shared/features/cart/schema.js +1 -1
  53. package/dist/_internal/shared/features/categories/bundle-config.d.ts +17 -0
  54. package/dist/_internal/shared/features/categories/bundle-config.js +17 -0
  55. package/dist/_internal/shared/features/layout/config.d.ts +35 -0
  56. package/dist/_internal/shared/features/layout/config.js +58 -0
  57. package/dist/_internal/shared/features/layout/index.d.ts +3 -0
  58. package/dist/_internal/shared/features/layout/index.js +2 -0
  59. package/dist/_internal/shared/features/layout/types.d.ts +137 -0
  60. package/dist/_internal/shared/features/layout/types.js +13 -0
  61. package/dist/_internal/shared/features/products/types.d.ts +1 -1
  62. package/dist/_internal/shared/listing-types/_registry.d.ts +57 -0
  63. package/dist/_internal/shared/listing-types/_registry.js +28 -0
  64. package/dist/_internal/shared/listing-types/auction/config.d.ts +7 -0
  65. package/dist/_internal/shared/listing-types/auction/config.js +8 -0
  66. package/dist/_internal/shared/listing-types/auction/ctas.d.ts +1 -0
  67. package/dist/_internal/shared/listing-types/auction/ctas.js +2 -0
  68. package/dist/_internal/shared/listing-types/auction/og.d.ts +1 -0
  69. package/dist/_internal/shared/listing-types/auction/og.js +1 -0
  70. package/dist/_internal/shared/listing-types/auction/schema.d.ts +1 -0
  71. package/dist/_internal/shared/listing-types/auction/schema.js +1 -0
  72. package/dist/_internal/shared/listing-types/auction/seed-factory.d.ts +1 -0
  73. package/dist/_internal/shared/listing-types/auction/seed-factory.js +1 -0
  74. package/dist/_internal/shared/listing-types/capabilities.d.ts +41 -0
  75. package/dist/_internal/shared/listing-types/capabilities.js +75 -0
  76. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +7 -0
  77. package/dist/_internal/shared/listing-types/pre-order/config.js +8 -0
  78. package/dist/_internal/shared/listing-types/pre-order/ctas.d.ts +1 -0
  79. package/dist/_internal/shared/listing-types/pre-order/ctas.js +2 -0
  80. package/dist/_internal/shared/listing-types/pre-order/og.d.ts +1 -0
  81. package/dist/_internal/shared/listing-types/pre-order/og.js +1 -0
  82. package/dist/_internal/shared/listing-types/pre-order/schema.d.ts +1 -0
  83. package/dist/_internal/shared/listing-types/pre-order/schema.js +1 -0
  84. package/dist/_internal/shared/listing-types/pre-order/seed-factory.d.ts +1 -0
  85. package/dist/_internal/shared/listing-types/pre-order/seed-factory.js +1 -0
  86. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +7 -0
  87. package/dist/_internal/shared/listing-types/prize-draw/config.js +8 -0
  88. package/dist/_internal/shared/listing-types/prize-draw/ctas.d.ts +1 -0
  89. package/dist/_internal/shared/listing-types/prize-draw/ctas.js +2 -0
  90. package/dist/_internal/shared/listing-types/prize-draw/og.d.ts +1 -0
  91. package/dist/_internal/shared/listing-types/prize-draw/og.js +1 -0
  92. package/dist/_internal/shared/listing-types/prize-draw/schema.d.ts +1 -0
  93. package/dist/_internal/shared/listing-types/prize-draw/schema.js +1 -0
  94. package/dist/_internal/shared/listing-types/prize-draw/seed-factory.d.ts +1 -0
  95. package/dist/_internal/shared/listing-types/prize-draw/seed-factory.js +1 -0
  96. package/dist/_internal/shared/listing-types/standard/config.d.ts +7 -0
  97. package/dist/_internal/shared/listing-types/standard/config.js +8 -0
  98. package/dist/_internal/shared/listing-types/standard/ctas.d.ts +1 -0
  99. package/dist/_internal/shared/listing-types/standard/ctas.js +3 -0
  100. package/dist/_internal/shared/listing-types/standard/og.d.ts +1 -0
  101. package/dist/_internal/shared/listing-types/standard/og.js +1 -0
  102. package/dist/_internal/shared/listing-types/standard/schema.d.ts +1 -0
  103. package/dist/_internal/shared/listing-types/standard/schema.js +1 -0
  104. package/dist/_internal/shared/listing-types/standard/seed-factory.d.ts +1 -0
  105. package/dist/_internal/shared/listing-types/standard/seed-factory.js +1 -0
  106. package/dist/_internal/shared/media/limits.d.ts +33 -0
  107. package/dist/_internal/shared/media/limits.js +97 -0
  108. package/dist/_internal/shared/schema-versions.d.ts +76 -0
  109. package/dist/_internal/shared/schema-versions.js +82 -0
  110. package/dist/client.d.ts +9 -0
  111. package/dist/client.js +7 -0
  112. package/dist/constants/api-endpoints.d.ts +6 -3
  113. package/dist/constants/api-endpoints.js +2 -1
  114. package/dist/errors/messages.d.ts +1 -1
  115. package/dist/errors/messages.js +1 -1
  116. package/dist/features/account/migrations.d.ts +2 -0
  117. package/dist/features/account/migrations.js +10 -0
  118. package/dist/features/admin/components/AdminMediaView.js +1 -1
  119. package/dist/features/admin/components/AdminProductsView.js +7 -3
  120. package/dist/features/admin/migrations.d.ts +2 -0
  121. package/dist/features/admin/migrations.js +10 -0
  122. package/dist/features/admin/types/product.types.d.ts +1 -1
  123. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +1 -1
  124. package/dist/features/auctions/migrations.d.ts +2 -0
  125. package/dist/features/auctions/migrations.js +10 -0
  126. package/dist/features/auctions/schemas/index.d.ts +3 -3
  127. package/dist/features/auctions/schemas/index.js +1 -1
  128. package/dist/features/auth/migrations.d.ts +2 -0
  129. package/dist/features/auth/migrations.js +10 -0
  130. package/dist/features/blog/migrations.d.ts +2 -0
  131. package/dist/features/blog/migrations.js +10 -0
  132. package/dist/features/brands/migrations.d.ts +2 -0
  133. package/dist/features/brands/migrations.js +10 -0
  134. package/dist/features/bundles/components/BundlesByCategoryListing.d.ts +6 -0
  135. package/dist/features/bundles/components/BundlesByCategoryListing.js +50 -0
  136. package/dist/features/bundles/components/index.d.ts +2 -0
  137. package/dist/features/bundles/components/index.js +1 -0
  138. package/dist/features/bundles/migrations.d.ts +2 -0
  139. package/dist/features/bundles/migrations.js +10 -0
  140. package/dist/features/bundles/schemas/index.d.ts +1 -0
  141. package/dist/features/bundles/schemas/index.js +1 -0
  142. package/dist/features/bundles/schemas/zod.d.ts +377 -0
  143. package/dist/features/bundles/schemas/zod.js +71 -0
  144. package/dist/features/cart/migrations.d.ts +2 -0
  145. package/dist/features/cart/migrations.js +10 -0
  146. package/dist/features/cart/schemas/firestore.d.ts +2 -2
  147. package/dist/features/categories/components/BrandDetailPageView.js +35 -4
  148. package/dist/features/categories/components/BrandDetailTabs.d.ts +5 -1
  149. package/dist/features/categories/components/BrandDetailTabs.js +22 -8
  150. package/dist/features/categories/components/CategoryBundlesListing.d.ts +6 -0
  151. package/dist/features/categories/components/CategoryBundlesListing.js +74 -0
  152. package/dist/features/categories/components/CategoryDetailPageView.js +29 -4
  153. package/dist/features/categories/components/CategoryDetailTabs.d.ts +5 -1
  154. package/dist/features/categories/components/CategoryDetailTabs.js +22 -8
  155. package/dist/features/categories/migrations.d.ts +2 -0
  156. package/dist/features/categories/migrations.js +10 -0
  157. package/dist/features/categories/repository/categories.repository.d.ts +29 -0
  158. package/dist/features/categories/repository/categories.repository.js +83 -0
  159. package/dist/features/categories/schemas/firestore.d.ts +59 -2
  160. package/dist/features/categories/schemas/firestore.js +6 -0
  161. package/dist/features/categories/types/index.d.ts +11 -3
  162. package/dist/features/events/migrations.d.ts +2 -0
  163. package/dist/features/events/migrations.js +10 -0
  164. package/dist/features/faq/migrations.d.ts +2 -0
  165. package/dist/features/faq/migrations.js +10 -0
  166. package/dist/features/grouped/migrations.d.ts +2 -0
  167. package/dist/features/grouped/migrations.js +10 -0
  168. package/dist/features/grouped/schemas/firestore.d.ts +29 -10
  169. package/dist/features/grouped/schemas/firestore.js +10 -5
  170. package/dist/features/history/migrations.d.ts +2 -0
  171. package/dist/features/history/migrations.js +10 -0
  172. package/dist/features/homepage/hooks/useFeaturedAuctions.js +2 -2
  173. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +2 -2
  174. package/dist/features/homepage/lib/section-renderer.js +5 -3
  175. package/dist/features/media/AvatarUpload.js +6 -28
  176. package/dist/features/media/hooks/useMedia.d.ts +31 -15
  177. package/dist/features/media/hooks/useMedia.js +48 -13
  178. package/dist/features/media/upload/ImageUpload.js +1 -1
  179. package/dist/features/media/upload/MediaUploadField.js +1 -1
  180. package/dist/features/messages/migrations.d.ts +2 -0
  181. package/dist/features/messages/migrations.js +10 -0
  182. package/dist/features/orders/components/OrdersList.js +10 -1
  183. package/dist/features/orders/migrations.d.ts +2 -0
  184. package/dist/features/orders/migrations.js +10 -0
  185. package/dist/features/orders/repository/orders.repository.d.ts +16 -0
  186. package/dist/features/orders/repository/orders.repository.js +49 -0
  187. package/dist/features/orders/schemas/firestore.d.ts +8 -0
  188. package/dist/features/orders/types/index.d.ts +12 -0
  189. package/dist/features/orders/utils/order-splitter.d.ts +2 -2
  190. package/dist/features/orders/utils/order-splitter.js +5 -0
  191. package/dist/features/payments/migrations.d.ts +2 -0
  192. package/dist/features/payments/migrations.js +10 -0
  193. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -1
  194. package/dist/features/products/actions/product-actions.d.ts +1 -1
  195. package/dist/features/products/api/[id]/route.js +34 -0
  196. package/dist/features/products/api/route.js +1 -19
  197. package/dist/features/products/components/CompareOverlay.d.ts +1 -1
  198. package/dist/features/products/components/MarketplacePrizeDrawCard.d.ts +24 -0
  199. package/dist/features/products/components/MarketplacePrizeDrawCard.js +102 -0
  200. package/dist/features/products/components/PrizeDrawCollage.d.ts +32 -0
  201. package/dist/features/products/components/PrizeDrawCollage.js +22 -0
  202. package/dist/features/products/components/PrizeDrawDetailPageView.d.ts +27 -0
  203. package/dist/features/products/components/PrizeDrawDetailPageView.js +118 -0
  204. package/dist/features/products/components/PrizeDrawEntryActions.d.ts +19 -0
  205. package/dist/features/products/components/PrizeDrawEntryActions.js +48 -0
  206. package/dist/features/products/components/PrizeDrawItemsEditor.d.ts +13 -0
  207. package/dist/features/products/components/PrizeDrawItemsEditor.js +97 -0
  208. package/dist/features/products/components/PrizeDrawsIndexListing.d.ts +8 -0
  209. package/dist/features/products/components/PrizeDrawsIndexListing.js +128 -0
  210. package/dist/features/products/components/PrizeDrawsListingView.d.ts +15 -0
  211. package/dist/features/products/components/PrizeDrawsListingView.js +49 -0
  212. package/dist/features/products/components/PrizeRevealModal.d.ts +34 -0
  213. package/dist/features/products/components/PrizeRevealModal.js +124 -0
  214. package/dist/features/products/components/ProductDetailPageView.js +13 -1
  215. package/dist/features/products/components/ProductForm.js +35 -2
  216. package/dist/features/products/components/ProductGrid.js +3 -1
  217. package/dist/features/products/components/index.d.ts +16 -0
  218. package/dist/features/products/components/index.js +8 -0
  219. package/dist/features/products/constants/listing-tabs.d.ts +113 -0
  220. package/dist/features/products/constants/listing-tabs.js +43 -0
  221. package/dist/features/products/index.d.ts +1 -0
  222. package/dist/features/products/index.js +1 -0
  223. package/dist/features/products/migrations.d.ts +2 -0
  224. package/dist/features/products/migrations.js +10 -0
  225. package/dist/features/products/repository/products.repository.d.ts +11 -7
  226. package/dist/features/products/repository/products.repository.js +49 -24
  227. package/dist/features/products/schemas/firestore.d.ts +3 -3
  228. package/dist/features/products/schemas/firestore.js +2 -2
  229. package/dist/features/products/schemas/index.d.ts +5 -5
  230. package/dist/features/products/schemas/index.js +3 -1
  231. package/dist/features/products/schemas/product-features.validators.d.ts +6 -6
  232. package/dist/features/products/types/index.d.ts +17 -1
  233. package/dist/features/products/utils/listing-type.d.ts +7 -4
  234. package/dist/features/products/utils/listing-type.js +8 -4
  235. package/dist/features/promotions/actions/coupon-actions.d.ts +1 -1
  236. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  237. package/dist/features/promotions/migrations.d.ts +2 -0
  238. package/dist/features/promotions/migrations.js +10 -0
  239. package/dist/features/promotions/repository/coupons.repository.d.ts +1 -1
  240. package/dist/features/promotions/schemas/index.d.ts +2 -2
  241. package/dist/features/reviews/migrations.d.ts +2 -0
  242. package/dist/features/reviews/migrations.js +10 -0
  243. package/dist/features/scams/migrations.d.ts +2 -0
  244. package/dist/features/scams/migrations.js +10 -0
  245. package/dist/features/search/api/route.d.ts +1 -1
  246. package/dist/features/search/api/route.js +3 -3
  247. package/dist/features/search/components/Search.d.ts +1 -1
  248. package/dist/features/search/schemas/index.d.ts +3 -3
  249. package/dist/features/search/schemas/index.js +3 -1
  250. package/dist/features/search/types/index.d.ts +2 -2
  251. package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
  252. package/dist/features/seller/components/SellerProductsView.js +20 -6
  253. package/dist/features/seller/migrations.d.ts +2 -0
  254. package/dist/features/seller/migrations.js +10 -0
  255. package/dist/features/seller/schemas/index.d.ts +2 -2
  256. package/dist/features/stores/components/StoreBundlesPageView.d.ts +12 -0
  257. package/dist/features/stores/components/StoreBundlesPageView.js +24 -0
  258. package/dist/features/stores/components/StoreDetailLayoutView.js +15 -3
  259. package/dist/features/stores/components/StorePrizeDrawsPageView.d.ts +11 -0
  260. package/dist/features/stores/components/StorePrizeDrawsPageView.js +27 -0
  261. package/dist/features/stores/components/index.d.ts +2 -0
  262. package/dist/features/stores/migrations.d.ts +2 -0
  263. package/dist/features/stores/migrations.js +10 -0
  264. package/dist/features/stores/schemas/index.d.ts +2 -2
  265. package/dist/features/stores/types/index.d.ts +1 -1
  266. package/dist/features/sublisting/migrations.d.ts +2 -0
  267. package/dist/features/sublisting/migrations.js +10 -0
  268. package/dist/features/sublisting/schemas/firestore.d.ts +2 -0
  269. package/dist/features/support/migrations.d.ts +2 -0
  270. package/dist/features/support/migrations.js +10 -0
  271. package/dist/features/wishlist/migrations.d.ts +2 -0
  272. package/dist/features/wishlist/migrations.js +10 -0
  273. package/dist/features/wishlist/types/index.d.ts +1 -1
  274. package/dist/index.d.ts +26 -18
  275. package/dist/index.js +41 -24
  276. package/dist/jobs.d.ts +1 -1
  277. package/dist/jobs.js +4 -0
  278. package/dist/next/routing/route-map.d.ts +4 -0
  279. package/dist/next/routing/route-map.js +2 -0
  280. package/dist/providers/db-firebase/filter-aliases.d.ts +2 -2
  281. package/dist/repositories/index.d.ts +0 -5
  282. package/dist/repositories/index.js +5 -4
  283. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  284. package/dist/seed/categories-seed-data.js +1105 -6
  285. package/dist/seed/faq-seed-data.js +160 -0
  286. package/dist/seed/grouped-listings-seed-data.js +32 -32
  287. package/dist/seed/homepage-sections-seed-data.js +52 -6
  288. package/dist/seed/index.d.ts +1 -3
  289. package/dist/seed/index.js +4 -3
  290. package/dist/seed/manifest.js +8 -13
  291. package/dist/seed/products-prize-draws-seed-data.d.ts +17 -0
  292. package/dist/seed/products-prize-draws-seed-data.js +313 -0
  293. package/dist/seo/json-ld.d.ts +1 -1
  294. package/dist/server-entry.d.ts +2 -2
  295. package/dist/server-entry.js +5 -3
  296. package/dist/server.d.ts +9 -2
  297. package/dist/server.js +11 -5
  298. package/dist/tailwind-utilities.css +1 -1
  299. package/dist/validation/schemas.d.ts +8 -8
  300. package/package.json +1 -1
  301. package/scripts/seed-cli.mjs +2 -4
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Prize-Draw Products Seed Data — Collectibles Edition (SB5-E)
3
+ *
4
+ * Stored as ProductDocument with listingType: "prize-draw". Each draw lists
5
+ * 3–16 PrizeDrawItem entries; one is revealed per paid order via crypto.randomInt
6
+ * during the reveal window (see /api/prize-draws/[id]/reveal, SB4-H).
7
+ *
8
+ * Prices in INR paise (₹1 = 100 paise).
9
+ */
10
+ const NOW = new Date();
11
+ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
12
+ const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
13
+ const _rawProductsPrizeDrawsSeedData = [
14
+ // 1. Pokémon Mystery Box — June
15
+ {
16
+ id: "prize-pokemon-mystery-box-june",
17
+ slug: "prize-pokemon-mystery-box-june",
18
+ title: "Pokémon Mystery Box — June Mega Draw",
19
+ description: "10 sealed Pokémon TCG mystery prizes. Each entry gives you a fair shot at one of the 10 prizes — from a Charizard-themed ETB to a genuine PSA 9 Base Set holo. Reveal opens June 25, 10:00 IST. Non-refundable digital entry.",
20
+ category: "category-pokemon-tcg",
21
+ categoryName: "Pokémon TCG",
22
+ brand: "The Pokémon Company",
23
+ brandSlug: "brand-pokemon-company",
24
+ price: 500, // ₹5 per entry (matches pricePerEntry; price is the unit cost for cart totals)
25
+ currency: "INR",
26
+ stockQuantity: 50,
27
+ availableQuantity: 50,
28
+ mainImage: "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=800&h=800&fit=crop",
29
+ images: [
30
+ "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=800&h=800&fit=crop",
31
+ "https://images.unsplash.com/photo-1607604276583-eef5d076aa5f?w=800&h=800&fit=crop",
32
+ ],
33
+ status: "published",
34
+ storeName: "Pokémon Palace",
35
+ storeId: "store-pokemon-palace",
36
+ featured: true,
37
+ isPromoted: true,
38
+ tags: [
39
+ "pokemon",
40
+ "prize-draw",
41
+ "mystery-box",
42
+ "tcg",
43
+ "charizard",
44
+ "fair-rng",
45
+ ],
46
+ condition: "new",
47
+ listingType: "prize-draw",
48
+ pricePerEntry: 500,
49
+ prizeMaxEntries: 50,
50
+ prizeCurrentEntries: 0,
51
+ prizeRevealWindowStart: daysAhead(5),
52
+ prizeRevealWindowEnd: daysAhead(12),
53
+ prizeRevealStatus: "pending",
54
+ prizeRevealDeadlineDays: 3,
55
+ prizeGithubFileUrl: "https://github.com/letitripin/proof-of-fairness/blob/main/draws/prize-pokemon-mystery-box-june.json",
56
+ maxPerUser: 5,
57
+ prizeDrawItems: _pokemonPrizeItems(),
58
+ shippingInfo: "Each physical prize ships separately within 5 business days of reveal. Reveal digitally first, then we ship.",
59
+ returnPolicy: "Prize-draw entries are non-refundable once the reveal window opens. Pool-exhausted entries auto-refund.",
60
+ allowOffers: false,
61
+ createdAt: daysAgo(10),
62
+ updatedAt: daysAgo(1),
63
+ },
64
+ // 2. Hot Wheels Treasure Hunt
65
+ {
66
+ id: "prize-hot-wheels-treasure-hunt",
67
+ slug: "prize-hot-wheels-treasure-hunt",
68
+ title: "Hot Wheels Super Treasure Hunt Draw",
69
+ description: "8 confirmed Super Treasure Hunt Hot Wheels — including a 1969 Volkswagen Squareback, Datsun 510, and Custom Mustang. Single entry, single reveal, single prize. RNG verified post-reveal on GitHub.",
70
+ category: "category-diecast-vehicles",
71
+ categoryName: "Diecast Vehicles",
72
+ brand: "Hot Wheels",
73
+ brandSlug: "brand-hot-wheels",
74
+ price: 29900, // ₹299 per entry
75
+ currency: "INR",
76
+ stockQuantity: 100,
77
+ availableQuantity: 100,
78
+ mainImage: "https://images.unsplash.com/photo-1583121274602-3e2820c69888?w=800&h=800&fit=crop",
79
+ images: [
80
+ "https://images.unsplash.com/photo-1583121274602-3e2820c69888?w=800&h=800&fit=crop",
81
+ "https://images.unsplash.com/photo-1503376780353-7e6692767b70?w=800&h=800&fit=crop",
82
+ ],
83
+ status: "published",
84
+ storeName: "Diecast Depot",
85
+ storeId: "store-diecast-depot",
86
+ featured: true,
87
+ isPromoted: false,
88
+ tags: [
89
+ "hot-wheels",
90
+ "prize-draw",
91
+ "super-treasure-hunt",
92
+ "diecast",
93
+ "fair-rng",
94
+ ],
95
+ condition: "new",
96
+ listingType: "prize-draw",
97
+ pricePerEntry: 29900,
98
+ prizeMaxEntries: 100,
99
+ prizeCurrentEntries: 0,
100
+ prizeRevealWindowStart: daysAhead(7),
101
+ prizeRevealWindowEnd: daysAhead(14),
102
+ prizeRevealStatus: "pending",
103
+ prizeRevealDeadlineDays: 3,
104
+ prizeGithubFileUrl: "https://github.com/letitripin/proof-of-fairness/blob/main/draws/prize-hot-wheels-treasure-hunt.json",
105
+ maxPerUser: 10,
106
+ prizeDrawItems: _hotWheelsPrizeItems(),
107
+ shippingInfo: "Each prize ships within 5 business days of reveal. Insured for declared value.",
108
+ returnPolicy: "Prize-draw entries are non-refundable once the reveal window opens. Pool-exhausted entries auto-refund.",
109
+ allowOffers: false,
110
+ createdAt: daysAgo(8),
111
+ updatedAt: daysAgo(1),
112
+ },
113
+ ];
114
+ function _pokemonPrizeItems() {
115
+ return [
116
+ {
117
+ itemNumber: 1,
118
+ title: "Charizard-themed Elite Trainer Box (sealed)",
119
+ description: "Scarlet & Violet 151 ETB featuring Charizard art.",
120
+ images: [
121
+ "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=600&h=600&fit=crop",
122
+ ],
123
+ condition: "new",
124
+ estimatedValue: 549900,
125
+ isWon: false,
126
+ },
127
+ {
128
+ itemNumber: 2,
129
+ title: "PSA 9 Base Set Blastoise Holo (#2/102)",
130
+ images: [
131
+ "https://images.unsplash.com/photo-1607604276583-eef5d076aa5f?w=600&h=600&fit=crop",
132
+ ],
133
+ condition: "graded",
134
+ estimatedValue: 1249900,
135
+ isWon: false,
136
+ },
137
+ {
138
+ itemNumber: 3,
139
+ title: "Pokémon 151 Booster Bundle (6 packs)",
140
+ images: [
141
+ "https://images.unsplash.com/photo-1614108831137-558fffac9ead?w=600&h=600&fit=crop",
142
+ ],
143
+ condition: "new",
144
+ estimatedValue: 199900,
145
+ isWon: false,
146
+ },
147
+ {
148
+ itemNumber: 4,
149
+ title: "Pikachu V-UNION Special Collection",
150
+ images: [
151
+ "https://images.unsplash.com/photo-1628968434441-d9c61d543a91?w=600&h=600&fit=crop",
152
+ ],
153
+ condition: "new",
154
+ estimatedValue: 299900,
155
+ isWon: false,
156
+ },
157
+ {
158
+ itemNumber: 5,
159
+ title: "Mewtwo VSTAR Premium Collection",
160
+ images: [
161
+ "https://images.unsplash.com/photo-1606503153255-59d8b8b82176?w=600&h=600&fit=crop",
162
+ ],
163
+ condition: "new",
164
+ estimatedValue: 249900,
165
+ isWon: false,
166
+ },
167
+ {
168
+ itemNumber: 6,
169
+ title: "Paldean Fates 3-Pack Tin",
170
+ images: [
171
+ "https://images.unsplash.com/photo-1613771404721-1f92d799e49f?w=600&h=600&fit=crop",
172
+ ],
173
+ condition: "new",
174
+ estimatedValue: 99900,
175
+ isWon: false,
176
+ },
177
+ {
178
+ itemNumber: 7,
179
+ title: "Eevee Heroes Booster Box (Japanese)",
180
+ images: [
181
+ "https://images.unsplash.com/photo-1607604276583-eef5d076aa5f?w=600&h=600&fit=crop",
182
+ ],
183
+ condition: "new",
184
+ estimatedValue: 1999900,
185
+ isWon: false,
186
+ },
187
+ {
188
+ itemNumber: 8,
189
+ title: "Ancient Mew Promo Card (sealed)",
190
+ images: [
191
+ "https://images.unsplash.com/photo-1610890716171-6b1bb98ffd09?w=600&h=600&fit=crop",
192
+ ],
193
+ condition: "new",
194
+ estimatedValue: 79900,
195
+ isWon: false,
196
+ },
197
+ {
198
+ itemNumber: 9,
199
+ title: "Pokémon Center Plush — Snorlax",
200
+ images: [
201
+ "https://images.unsplash.com/photo-1542779283-5a86fe9aab09?w=600&h=600&fit=crop",
202
+ ],
203
+ condition: "new",
204
+ estimatedValue: 449900,
205
+ isWon: false,
206
+ },
207
+ {
208
+ itemNumber: 10,
209
+ title: "Mystery Holo Lot — 10 cards",
210
+ description: "10 random holographic rares from various sets.",
211
+ images: [
212
+ "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=600&h=600&fit=crop",
213
+ ],
214
+ condition: "used",
215
+ estimatedValue: 149900,
216
+ isWon: false,
217
+ },
218
+ ];
219
+ }
220
+ function _hotWheelsPrizeItems() {
221
+ return [
222
+ {
223
+ itemNumber: 1,
224
+ title: "1969 Volkswagen Squareback STH",
225
+ images: [
226
+ "https://images.unsplash.com/photo-1583121274602-3e2820c69888?w=600&h=600&fit=crop",
227
+ ],
228
+ condition: "new",
229
+ estimatedValue: 899900,
230
+ isWon: false,
231
+ },
232
+ {
233
+ itemNumber: 2,
234
+ title: "Datsun 510 STH (Mountain Metal)",
235
+ images: [
236
+ "https://images.unsplash.com/photo-1503376780353-7e6692767b70?w=600&h=600&fit=crop",
237
+ ],
238
+ condition: "new",
239
+ estimatedValue: 499900,
240
+ isWon: false,
241
+ },
242
+ {
243
+ itemNumber: 3,
244
+ title: "Custom Mustang STH",
245
+ images: [
246
+ "https://images.unsplash.com/photo-1494976388531-d1058494cdd8?w=600&h=600&fit=crop",
247
+ ],
248
+ condition: "new",
249
+ estimatedValue: 599900,
250
+ isWon: false,
251
+ },
252
+ {
253
+ itemNumber: 4,
254
+ title: "Porsche 935 STH (Mountain Metal)",
255
+ images: [
256
+ "https://images.unsplash.com/photo-1611821064430-0d40291922d2?w=600&h=600&fit=crop",
257
+ ],
258
+ condition: "new",
259
+ estimatedValue: 449900,
260
+ isWon: false,
261
+ },
262
+ {
263
+ itemNumber: 5,
264
+ title: "Nissan Skyline GT-R (R32) STH",
265
+ images: [
266
+ "https://images.unsplash.com/photo-1492144534655-ae79c964c9d7?w=600&h=600&fit=crop",
267
+ ],
268
+ condition: "new",
269
+ estimatedValue: 699900,
270
+ isWon: false,
271
+ },
272
+ {
273
+ itemNumber: 6,
274
+ title: "'71 Datsun Bluebird 510 Wagon STH",
275
+ images: [
276
+ "https://images.unsplash.com/photo-1611821064430-0d40291922d2?w=600&h=600&fit=crop",
277
+ ],
278
+ condition: "new",
279
+ estimatedValue: 549900,
280
+ isWon: false,
281
+ },
282
+ {
283
+ itemNumber: 7,
284
+ title: "Toyota AE86 Sprinter Trueno STH",
285
+ images: [
286
+ "https://images.unsplash.com/photo-1494976388531-d1058494cdd8?w=600&h=600&fit=crop",
287
+ ],
288
+ condition: "new",
289
+ estimatedValue: 799900,
290
+ isWon: false,
291
+ },
292
+ {
293
+ itemNumber: 8,
294
+ title: "Mazda RX-7 STH (FD)",
295
+ images: [
296
+ "https://images.unsplash.com/photo-1503376780353-7e6692767b70?w=600&h=600&fit=crop",
297
+ ],
298
+ condition: "new",
299
+ estimatedValue: 649900,
300
+ isWon: false,
301
+ },
302
+ ];
303
+ }
304
+ /**
305
+ * SB1-G Phase 4 — every prize-draw is stamped with `listingType: "prize-draw"`.
306
+ * Mirrors the wrapper pattern used in
307
+ * `products-standard-seed-data.ts` / `products-auctions-seed-data.ts` /
308
+ * `products-preorders-seed-data.ts`.
309
+ */
310
+ export const productsPrizeDrawsSeedData = _rawProductsPrizeDrawsSeedData.map((p) => ({
311
+ ...p,
312
+ listingType: "prize-draw",
313
+ }));
@@ -26,7 +26,7 @@ export interface ProductJsonLdInput {
26
26
  status?: string;
27
27
  auctionEndDate?: Date;
28
28
  /** Canonical discriminator (SB1-G Phase 4). */
29
- listingType?: "standard" | "auction" | "pre-order" | "prize-draw" | "bundle";
29
+ listingType?: "standard" | "auction" | "pre-order" | "prize-draw";
30
30
  }
31
31
  export interface ReviewJsonLdInput {
32
32
  id: string;
@@ -31,8 +31,7 @@ export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, crea
31
31
  export { getSearchResults, searchAction, type SearchQuery, } from "./_internal/server/features/search/index";
32
32
  export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
33
33
  export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
34
- export { getBundleForDetail, getBundleWithItems, listBundles, listFeaturedBundles, listSitemapBundles, BUNDLES_PAGE_SIZE, BUNDLES_FEATURED_LIMIT, BUNDLES_SITEMAP_LIMIT, type BundleWithItems, type ListBundlesParams, type SitemapBundle, } from "./_internal/server/features/bundles/index";
35
- export { createCheckoutOrderAction, attachPaymentAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, } from "./_internal/server/features/checkout/index";
34
+ export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type VerifyAndPlaceRazorpayOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, } from "./_internal/server/features/checkout/index";
36
35
  export { createPaymentIntentAction, verifyPaymentSignatureAction, resolvePaymentFee, PAYMENTS_DEFAULT_RAZORPAY_FEE_PERCENT, PAYMENTS_RECEIPT_PREFIX, type CreatePaymentIntentInput, type CreatePaymentIntentResult, type VerifyPaymentSignatureInput, type ResolvedPaymentFee, } from "./_internal/server/features/payments/index";
37
36
  export { getSublistingCategoryForDetail } from "./_internal/server/features/sublisting-categories/index";
38
37
  export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores, STORES_PAGE_SIZE, STORES_PRODUCTS_PAGE_SIZE, STORES_SITEMAP_LIMIT, STORES_FEATURED_LIMIT, } from "./_internal/server/features/stores/index";
@@ -56,3 +55,4 @@ export { renderBlogOg, renderBlogOgImage, type BlogOgData } from "./_internal/se
56
55
  export { renderEventOg, renderEventOgImage, type EventOgData } from "./_internal/server/features/events/og";
57
56
  export { renderSublistingCategoryOg, renderSublistingCategoryOgImage, type SublistingCategoryOgData } from "./_internal/server/features/sublisting-categories/og";
58
57
  export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage, type UserProfileOgData } from "./_internal/server/features/profile/og";
58
+ export { renderCategoryOg, renderCategoryOgImage, type CategoryOgData } from "./_internal/server/features/categories/og";
@@ -52,10 +52,11 @@ export { getSearchResults, searchAction, } from "./_internal/server/features/sea
52
52
  export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
53
53
  // S3: grouped listings data layer
54
54
  export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, } from "./_internal/server/features/grouped/index";
55
- // S3: bundles data layer (consumer alias over groupedListings)
56
- export { getBundleForDetail, getBundleWithItems, listBundles, listFeaturedBundles, listSitemapBundles, BUNDLES_PAGE_SIZE, BUNDLES_FEATURED_LIMIT, BUNDLES_SITEMAP_LIMIT, } from "./_internal/server/features/bundles/index";
55
+ // SB-UNI-V bundles data layer deleted; consumers should query
56
+ // `categoriesRepository.findBySlugAndType(slug, "bundle")` /
57
+ // `.listByType("bundle", opts)` / `.findById(id)` directly.
57
58
  // S4: checkout actions
58
- export { createCheckoutOrderAction, attachPaymentAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, } from "./_internal/server/features/checkout/index";
59
+ export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, } from "./_internal/server/features/checkout/index";
59
60
  // S4: payments actions
60
61
  export { createPaymentIntentAction, verifyPaymentSignatureAction, resolvePaymentFee, PAYMENTS_DEFAULT_RAZORPAY_FEE_PERCENT, PAYMENTS_RECEIPT_PREFIX, } from "./_internal/server/features/payments/index";
61
62
  // S3: sublisting categories data layer
@@ -94,3 +95,4 @@ export { renderBlogOg, renderBlogOgImage } from "./_internal/server/features/blo
94
95
  export { renderEventOg, renderEventOgImage } from "./_internal/server/features/events/og";
95
96
  export { renderSublistingCategoryOg, renderSublistingCategoryOgImage } from "./_internal/server/features/sublisting-categories/og";
96
97
  export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage } from "./_internal/server/features/profile/og";
98
+ export { renderCategoryOg, renderCategoryOgImage } from "./_internal/server/features/categories/og";
package/dist/server.d.ts CHANGED
@@ -222,7 +222,6 @@ export { blogSlugGET } from "./features/blog/server";
222
222
  export { createBlogPost } from "./features/blog/server";
223
223
  export { createBlogPostSchema } from "./features/blog/server";
224
224
  export { deleteBlogPost } from "./features/blog/server";
225
- export { getBrandBySlug } from "./features/brands/server";
226
225
  export { getBlogPostById } from "./features/blog/server";
227
226
  export { getBlogPostBySlug } from "./features/blog/server";
228
227
  export { getFeaturedBlogPosts } from "./features/blog/server";
@@ -421,7 +420,6 @@ export { getWishlistForUser } from "./features/wishlist/server";
421
420
  export { removeFromWishlist } from "./features/wishlist/server";
422
421
  export { siteSettingsRepository } from "./repositories/index";
423
422
  export { storeRepository } from "./repositories/index";
424
- export { bundlesRepository, BundlesRepository } from "./repositories/index";
425
423
  export { serverLogger } from "./monitoring/index";
426
424
  export { applyRateLimit } from "./security/index";
427
425
  export { rateLimitByIdentifier } from "./security/index";
@@ -461,8 +459,17 @@ export { renderAuctionOg, renderAuctionOgImage, type AuctionOgData } from "./_in
461
459
  export { renderPreOrderOg, renderPreOrderOgImage, type PreOrderOgData } from "./_internal/server/features/pre-orders/og";
462
460
  export { renderStoreOg, renderStoreOgImage, type StoreOgData } from "./_internal/server/features/stores/og";
463
461
  export { renderBrandOg, renderBrandOgImage, type BrandOgData } from "./_internal/server/features/brands/og";
462
+ export { renderCategoryOg, renderCategoryOgImage, type CategoryOgData } from "./_internal/server/features/categories/og";
464
463
  export { renderBlogOg, renderBlogOgImage, type BlogOgData } from "./_internal/server/features/blog/og";
465
464
  export { renderEventOg, renderEventOgImage, type EventOgData } from "./_internal/server/features/events/og";
466
465
  export { renderSublistingCategoryOg, renderSublistingCategoryOgImage, type SublistingCategoryOgData } from "./_internal/server/features/sublisting-categories/og";
467
466
  export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage, type UserProfileOgData } from "./_internal/server/features/profile/og";
468
467
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
468
+ export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
469
+ export type { ListingTypeCapability } from "./_internal/shared/listing-types/capabilities";
470
+ export { LISTING_TYPE_REGISTRY, pluginFor } from "./_internal/shared/listing-types/_registry";
471
+ export type { ListingTypePlugin } from "./_internal/shared/listing-types/_registry";
472
+ export { applyMediaContextGuards, CONTEXT_LIMITS, } from "./_internal/server/features/media/contextGuards";
473
+ export type { GuardResult, GuardError, GuardSuccess } from "./_internal/server/features/media/contextGuards";
474
+ export { MEGABYTE, MAX_IMAGE_BYTES, MAX_PDF_BYTES, MAX_VIDEO_BYTES, MAX_LABEL, MAX_BYTES, ALLOWED_IMAGE_MIMES, ALLOWED_VIDEO_MIMES, ALLOWED_DOC_MIMES, ALLOWED_MIMES, ALLOWED_TYPES_LABEL, MIME_TO_EXT, PDF_MAGIC, VIDEO_CONVERSION_HINTS, classifyMime, isAllowedMime, maxBytesFor, getConversionHint, } from "./_internal/shared/media/limits";
475
+ export type { MediaKind, AllowedImageMime, AllowedVideoMime, AllowedDocMime, AllowedMime, } from "./_internal/shared/media/limits";
package/dist/server.js CHANGED
@@ -670,9 +670,8 @@ export { createBlogPostSchema } from "./features/blog/server";
670
670
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
671
671
  // deleteBlogPost - Helper for delete blog post.
672
672
  export { deleteBlogPost } from "./features/blog/server";
673
- // [SERVER-ONLY]-Server-onlyuses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
674
- // getBrandBySlug - Helper for get brand by slug.
675
- export { getBrandBySlug } from "./features/brands/server";
673
+ // SB-UNI-CgetBrandBySlug deleted with features/brands/. Use
674
+ // categoriesRepository.findBySlugAndType(slug, "brand") instead.
676
675
  // getBlogPostById - Helper for get blog post by id.
677
676
  export { getBlogPostById } from "./features/blog/server";
678
677
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -1261,8 +1260,7 @@ export { removeFromWishlist } from "./features/wishlist/server";
1261
1260
  export { siteSettingsRepository } from "./repositories/index";
1262
1261
  // storeRepository - Shared export for store repository.
1263
1262
  export { storeRepository } from "./repositories/index";
1264
- // bundlesRepository - SB1-H bundles CRUD + stock sync.
1265
- export { bundlesRepository, BundlesRepository } from "./repositories/index";
1263
+ // SB-UNI-V bundlesRepository deleted; use categoriesRepository with categoryType:"bundle".
1266
1264
  // -- Monitoring --------------------------------------------------------------
1267
1265
  // serverLogger - Structured server-side logger.
1268
1266
  export { serverLogger } from "./monitoring/index";
@@ -1330,9 +1328,17 @@ export { renderAuctionOg, renderAuctionOgImage } from "./_internal/server/featur
1330
1328
  export { renderPreOrderOg, renderPreOrderOgImage } from "./_internal/server/features/pre-orders/og";
1331
1329
  export { renderStoreOg, renderStoreOgImage } from "./_internal/server/features/stores/og";
1332
1330
  export { renderBrandOg, renderBrandOgImage } from "./_internal/server/features/brands/og";
1331
+ export { renderCategoryOg, renderCategoryOgImage } from "./_internal/server/features/categories/og";
1333
1332
  export { renderBlogOg, renderBlogOgImage } from "./_internal/server/features/blog/og";
1334
1333
  export { renderEventOg, renderEventOgImage } from "./_internal/server/features/events/og";
1335
1334
  export { renderSublistingCategoryOg, renderSublistingCategoryOgImage } from "./_internal/server/features/sublisting-categories/og";
1336
1335
  export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage } from "./_internal/server/features/profile/og";
1337
1336
  // Adapters
1338
1337
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
1338
+ // Listing-type capability registry — SB-UNI X1.
1339
+ export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
1340
+ export { LISTING_TYPE_REGISTRY, pluginFor } from "./_internal/shared/listing-types/_registry";
1341
+ // Media context guards — shared by /api/media/sign + legacy /api/media/upload.
1342
+ export { applyMediaContextGuards, CONTEXT_LIMITS, } from "./_internal/server/features/media/contextGuards";
1343
+ // Media upload limits — shared by /api/media/sign + /api/media/finalize + /api/media/upload.
1344
+ export { MEGABYTE, MAX_IMAGE_BYTES, MAX_PDF_BYTES, MAX_VIDEO_BYTES, MAX_LABEL, MAX_BYTES, ALLOWED_IMAGE_MIMES, ALLOWED_VIDEO_MIMES, ALLOWED_DOC_MIMES, ALLOWED_MIMES, ALLOWED_TYPES_LABEL, MIME_TO_EXT, PDF_MAGIC, VIDEO_CONVERSION_HINTS, classifyMime, isAllowedMime, maxBytesFor, getConversionHint, } from "./_internal/shared/media/limits";