@mohasinac/appkit 3.2.20 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/_internal/server/features/checkout/actions.d.ts +2 -0
  2. package/dist/_internal/server/features/checkout/actions.js +239 -190
  3. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  4. package/dist/_internal/server/functions/scheduled.js +9 -1
  5. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +8 -11
  6. package/dist/_internal/server/jobs/core/emiInstallmentReminder.d.ts +8 -0
  7. package/dist/_internal/server/jobs/core/emiInstallmentReminder.js +78 -0
  8. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.d.ts +2 -2
  9. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +15 -10
  10. package/dist/_internal/server/jobs/handlers/emiInstallmentReminder.d.ts +2 -0
  11. package/dist/_internal/server/jobs/handlers/emiInstallmentReminder.js +2 -0
  12. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  13. package/dist/_internal/server/jobs/handlers/index.js +2 -0
  14. package/dist/_internal/server/providers/index.d.ts +4 -4
  15. package/dist/_internal/server/providers/index.js +4 -4
  16. package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +3 -2
  17. package/dist/_internal/server/providers/payment/razorpay-mock.js +3 -1
  18. package/dist/_internal/server/providers/resolve.d.ts +10 -13
  19. package/dist/_internal/server/providers/resolve.js +9 -15
  20. package/dist/_internal/shared/actions/action-registry.js +28 -0
  21. package/dist/_internal/shared/checkout/rules/_defaults.js +1 -0
  22. package/dist/_internal/shared/checkout/rules/_registry.js +4 -0
  23. package/dist/_internal/shared/checkout/rules/art.rule.d.ts +9 -0
  24. package/dist/_internal/shared/checkout/rules/art.rule.js +5 -0
  25. package/dist/_internal/shared/checkout/rules/auction.rule.js +1 -0
  26. package/dist/_internal/shared/checkout/rules/classified.rule.js +1 -0
  27. package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
  28. package/dist/_internal/shared/checkout/rules/index.js +2 -0
  29. package/dist/_internal/shared/checkout/rules/stickers.rule.d.ts +9 -0
  30. package/dist/_internal/shared/checkout/rules/stickers.rule.js +5 -0
  31. package/dist/_internal/shared/checkout/rules/types.d.ts +6 -0
  32. package/dist/_internal/shared/features/checkout/config.d.ts +16 -1
  33. package/dist/_internal/shared/features/checkout/config.js +16 -1
  34. package/dist/_internal/shared/features/emi/schedule.d.ts +63 -0
  35. package/dist/_internal/shared/features/emi/schedule.js +62 -0
  36. package/dist/_internal/shared/fees/calculator.d.ts +53 -0
  37. package/dist/_internal/shared/fees/calculator.js +40 -0
  38. package/dist/_internal/shared/listing-types/_registry.d.ts +22 -66
  39. package/dist/_internal/shared/listing-types/_registry.js +19 -2
  40. package/dist/_internal/shared/listing-types/art/config.d.ts +15 -0
  41. package/dist/_internal/shared/listing-types/art/config.js +14 -0
  42. package/dist/_internal/shared/listing-types/art/ctas.d.ts +1 -0
  43. package/dist/_internal/shared/listing-types/art/ctas.js +3 -0
  44. package/dist/_internal/shared/listing-types/art/og.d.ts +1 -0
  45. package/dist/_internal/shared/listing-types/art/og.js +1 -0
  46. package/dist/_internal/shared/listing-types/art/schema.d.ts +2 -0
  47. package/dist/_internal/shared/listing-types/art/schema.js +3 -0
  48. package/dist/_internal/shared/listing-types/art/seed-factory.d.ts +1 -0
  49. package/dist/_internal/shared/listing-types/art/seed-factory.js +1 -0
  50. package/dist/_internal/shared/listing-types/auction/config.d.ts +8 -0
  51. package/dist/_internal/shared/listing-types/auction/config.js +6 -0
  52. package/dist/_internal/shared/listing-types/capabilities.js +17 -0
  53. package/dist/_internal/shared/listing-types/classified/config.d.ts +8 -0
  54. package/dist/_internal/shared/listing-types/classified/config.js +6 -0
  55. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +8 -0
  56. package/dist/_internal/shared/listing-types/digital-code/config.js +6 -0
  57. package/dist/_internal/shared/listing-types/live/config.d.ts +8 -0
  58. package/dist/_internal/shared/listing-types/live/config.js +6 -0
  59. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +8 -0
  60. package/dist/_internal/shared/listing-types/pre-order/config.js +6 -0
  61. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +8 -0
  62. package/dist/_internal/shared/listing-types/prize-draw/config.js +6 -0
  63. package/dist/_internal/shared/listing-types/standard/config.d.ts +8 -0
  64. package/dist/_internal/shared/listing-types/standard/config.js +6 -0
  65. package/dist/_internal/shared/listing-types/stickers/config.d.ts +15 -0
  66. package/dist/_internal/shared/listing-types/stickers/config.js +14 -0
  67. package/dist/_internal/shared/listing-types/stickers/ctas.d.ts +1 -0
  68. package/dist/_internal/shared/listing-types/stickers/ctas.js +3 -0
  69. package/dist/_internal/shared/listing-types/stickers/og.d.ts +1 -0
  70. package/dist/_internal/shared/listing-types/stickers/og.js +1 -0
  71. package/dist/_internal/shared/listing-types/stickers/schema.d.ts +2 -0
  72. package/dist/_internal/shared/listing-types/stickers/schema.js +3 -0
  73. package/dist/_internal/shared/listing-types/stickers/seed-factory.d.ts +1 -0
  74. package/dist/_internal/shared/listing-types/stickers/seed-factory.js +1 -0
  75. package/dist/client.d.ts +7 -2
  76. package/dist/client.js +4 -2
  77. package/dist/constants/field-names.d.ts +2 -6
  78. package/dist/constants/field-names.js +2 -6
  79. package/dist/contracts/index.d.ts +4 -2
  80. package/dist/contracts/index.js +6 -0
  81. package/dist/contracts/payment.d.ts +14 -9
  82. package/dist/contracts/payment.js +11 -1
  83. package/dist/contracts/shipping.d.ts +14 -9
  84. package/dist/contracts/shipping.js +11 -1
  85. package/dist/features/about/components/PublicProfileView.js +3 -6
  86. package/dist/features/admin/components/AdminAddressBookView.d.ts +11 -0
  87. package/dist/features/admin/components/AdminAddressBookView.js +30 -0
  88. package/dist/features/admin/components/AdminArtView.d.ts +3 -0
  89. package/dist/features/admin/components/AdminArtView.js +45 -0
  90. package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
  91. package/dist/features/admin/components/AdminSiteSettingsView.js +14 -9
  92. package/dist/features/admin/components/AdminStickersView.d.ts +3 -0
  93. package/dist/features/admin/components/AdminStickersView.js +45 -0
  94. package/dist/features/admin/components/index.d.ts +6 -0
  95. package/dist/features/admin/components/index.js +4 -0
  96. package/dist/features/admin/schemas/firestore.d.ts +19 -11
  97. package/dist/features/admin/schemas/firestore.js +12 -2
  98. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +3 -2
  99. package/dist/features/auth/hooks/useAuth.js +35 -9
  100. package/dist/features/auth/schemas/firestore.d.ts +2 -6
  101. package/dist/features/cart/schemas/firestore.d.ts +3 -2
  102. package/dist/features/consultation/schemas/index.d.ts +2 -2
  103. package/dist/features/loyalty/schemas/index.d.ts +6 -6
  104. package/dist/features/orders/repository/orders.repository.d.ts +20 -2
  105. package/dist/features/orders/repository/orders.repository.js +34 -5
  106. package/dist/features/orders/schemas/firestore.d.ts +33 -7
  107. package/dist/features/orders/schemas/firestore.js +1 -1
  108. package/dist/features/orders/schemas/index.d.ts +176 -31
  109. package/dist/features/orders/schemas/index.js +20 -6
  110. package/dist/features/orders/types/index.d.ts +3 -3
  111. package/dist/features/payments/repository/payout.repository.js +2 -2
  112. package/dist/features/payments/schemas/firestore.d.ts +3 -3
  113. package/dist/features/payments/schemas/firestore.js +2 -2
  114. package/dist/features/payments/schemas/index.d.ts +5 -5
  115. package/dist/features/payments/schemas/index.js +2 -2
  116. package/dist/features/products/api/[id]/route.js +4 -1
  117. package/dist/features/products/api/route.js +4 -1
  118. package/dist/features/products/components/CompareOverlay.js +7 -9
  119. package/dist/features/products/components/ProductDetailPageView.d.ts +3 -1
  120. package/dist/features/products/components/ProductDetailPageView.js +2 -2
  121. package/dist/features/products/components/ProductForm.js +18 -7
  122. package/dist/features/products/components/ProductGrid.js +7 -12
  123. package/dist/features/products/components/ShowGroupSection.js +3 -5
  124. package/dist/features/products/components/SublistingCarouselSection.js +3 -6
  125. package/dist/features/products/constants/listing-tabs.d.ts +32 -0
  126. package/dist/features/products/constants/listing-tabs.js +8 -0
  127. package/dist/features/products/index.d.ts +1 -1
  128. package/dist/features/products/index.js +3 -1
  129. package/dist/features/products/schemas/firestore.d.ts +20 -1
  130. package/dist/features/products/schemas/firestore.js +2 -0
  131. package/dist/features/products/schemas/index.d.ts +48 -0
  132. package/dist/features/products/schemas/index.js +9 -0
  133. package/dist/features/products/schemas/product-features.d.ts +1 -1
  134. package/dist/features/products/types/index.d.ts +5 -3
  135. package/dist/features/products/utils/listing-type.d.ts +6 -0
  136. package/dist/features/products/utils/listing-type.js +3 -0
  137. package/dist/features/reviews/api/[id]/route.js +5 -4
  138. package/dist/features/seller/actions/seller-actions.d.ts +29 -14
  139. package/dist/features/seller/actions/seller-actions.js +101 -27
  140. package/dist/features/seller/components/SellerArtView.d.ts +7 -0
  141. package/dist/features/seller/components/SellerArtView.js +114 -0
  142. package/dist/features/seller/components/SellerOrdersView.js +38 -1
  143. package/dist/features/seller/components/SellerProductShell.d.ts +5 -1
  144. package/dist/features/seller/components/SellerProductShell.js +69 -59
  145. package/dist/features/seller/components/SellerShippingView.js +6 -25
  146. package/dist/features/seller/components/SellerStickersView.d.ts +7 -0
  147. package/dist/features/seller/components/SellerStickersView.js +114 -0
  148. package/dist/features/seller/components/index.d.ts +4 -0
  149. package/dist/features/seller/components/index.js +2 -0
  150. package/dist/features/seller/messages/en.json +1 -1
  151. package/dist/features/seller/schemas/index.d.ts +7 -7
  152. package/dist/features/seller/schemas/index.js +1 -1
  153. package/dist/features/seller/types/index.d.ts +1 -1
  154. package/dist/features/stores/components/StoreDetailLayoutView.js +18 -2
  155. package/dist/features/stores/schemas/firestore.d.ts +7 -1
  156. package/dist/features/stores/schemas/index.d.ts +19 -16
  157. package/dist/features/stores/schemas/index.js +1 -1
  158. package/dist/index.d.ts +21 -36
  159. package/dist/index.js +27 -39
  160. package/dist/next/routing/route-map.d.ts +22 -0
  161. package/dist/next/routing/route-map.js +10 -0
  162. package/dist/providers/payment-manual/index.d.ts +40 -0
  163. package/dist/providers/payment-manual/index.js +91 -0
  164. package/dist/providers/payment-razorpay/index.d.ts +4 -2
  165. package/dist/providers/payment-razorpay/index.js +4 -1
  166. package/dist/providers/shipping-manual/index.d.ts +22 -0
  167. package/dist/providers/shipping-manual/index.js +47 -0
  168. package/dist/providers.d.ts +2 -2
  169. package/dist/providers.js +5 -3
  170. package/dist/schemas/registry.d.ts +129 -70
  171. package/dist/schemas/registry.js +0 -4
  172. package/dist/security/pii-encrypt.js +0 -7
  173. package/dist/security/pii-redact.js +0 -1
  174. package/dist/seed/conversations-seed-data.js +2 -2
  175. package/dist/seed/faq-seed-data.js +7 -7
  176. package/dist/seed/grouped-listings-seed-data.d.ts +2 -0
  177. package/dist/seed/index.d.ts +2 -0
  178. package/dist/seed/index.js +2 -0
  179. package/dist/seed/manifest.js +20 -16
  180. package/dist/seed/payouts-seed-data.js +5 -5
  181. package/dist/seed/products-art-seed-data.d.ts +11 -0
  182. package/dist/seed/products-art-seed-data.js +125 -0
  183. package/dist/seed/products-preorders-seed-data.d.ts +2 -0
  184. package/dist/seed/products-stickers-seed-data.d.ts +11 -0
  185. package/dist/seed/products-stickers-seed-data.js +125 -0
  186. package/dist/seed/site-settings-seed-data.js +13 -4
  187. package/dist/seed/stores-seed-data.js +11 -11
  188. package/dist/server.d.ts +7 -15
  189. package/dist/server.js +17 -42
  190. package/package.json +1 -1
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Art Products Seed Data (EMI/art-stickers session)
3
+ *
4
+ * Stored as ProductDocument with listingType: "art". Printed-only fan art —
5
+ * standard cart/checkout flow, distinguished by `printMeta` (size, material,
6
+ * finish, edition size).
7
+ *
8
+ * Prices in INR paise (₹1 = 100 paise).
9
+ */
10
+ import { PRODUCT_FIELDS } from "../constants/field-names";
11
+ import { buildSearchTokens } from "../utils/search-tokens";
12
+ import { seedExtMedia } from "./_helpers/media";
13
+ function withTokens(p) {
14
+ return {
15
+ tags: [],
16
+ featured: false,
17
+ ...p,
18
+ searchTokens: buildSearchTokens(p.title, p.description, p.brand, p.brandSlug, p.categoryNames, p.tags, p.features, p.condition),
19
+ };
20
+ }
21
+ const NOW = new Date();
22
+ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
23
+ const _rawArtSeedData = [
24
+ {
25
+ id: "art-charizard-fan-print-a3",
26
+ slug: "art-charizard-fan-print-a3",
27
+ title: "Charizard Fan Art Print — A3 Matte",
28
+ description: "Hand-drawn fan art print of Charizard, digitally reproduced on matte photo paper. Unofficial fan work — not affiliated with or endorsed by the Pokémon Company. Ships flat in a rigid mailer.",
29
+ categorySlugs: ["category-trading-cards"],
30
+ categoryNames: ["Trading Cards"],
31
+ brand: "Independent Artist",
32
+ price: 89900,
33
+ currency: "INR",
34
+ stockQuantity: 25,
35
+ availableQuantity: 25,
36
+ mainImage: seedExtMedia("https://picsum.photos/seed/art-charizard-print/800/1000"),
37
+ images: [seedExtMedia("https://picsum.photos/seed/art-charizard-print/800/1000")],
38
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
39
+ storeId: "store-tokyo-toys-india",
40
+ storeName: "Tokyo Toys India",
41
+ tags: ["art", "fan-art", "charizard", "print", "a3"],
42
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
43
+ printMeta: { size: "A3 (297x420mm)", material: "Matte photo paper", finish: "Matte", editionSize: 100 },
44
+ allowOffers: false,
45
+ createdAt: daysAgo(6),
46
+ updatedAt: daysAgo(2),
47
+ },
48
+ {
49
+ id: "art-gundam-rx78-poster-12x18",
50
+ slug: "art-gundam-rx78-poster-12x18",
51
+ title: "RX-78-2 Gundam Illustration Poster — 12x18 Glossy",
52
+ description: "Original illustration of the RX-78-2 Gundam in dynamic pose, printed glossy on 200gsm poster stock. Great for a model-kit display shelf backdrop.",
53
+ categorySlugs: ["category-model-kits"],
54
+ categoryNames: ["Model Kits"],
55
+ brand: "Independent Artist",
56
+ price: 129900,
57
+ currency: "INR",
58
+ stockQuantity: 15,
59
+ availableQuantity: 15,
60
+ mainImage: seedExtMedia("https://picsum.photos/seed/art-gundam-poster/800/1200"),
61
+ images: [seedExtMedia("https://picsum.photos/seed/art-gundam-poster/800/1200")],
62
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
63
+ storeId: "store-gundam-galaxy",
64
+ storeName: "Gundam Galaxy",
65
+ tags: ["art", "gundam", "poster", "illustration"],
66
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
67
+ printMeta: { size: "12x18 in", material: "200gsm poster paper", finish: "Glossy" },
68
+ allowOffers: false,
69
+ createdAt: daysAgo(4),
70
+ updatedAt: daysAgo(1),
71
+ },
72
+ {
73
+ id: "art-beyblade-burst-canvas-square",
74
+ slug: "art-beyblade-burst-canvas-square",
75
+ title: "Beyblade Burst Arena Canvas Print — 12x12 Square",
76
+ description: "Stretched canvas print of a Beyblade Burst arena battle scene. Ready to hang, no framing needed. Limited run of 50 numbered canvases.",
77
+ categorySlugs: ["category-spinning-tops"],
78
+ categoryNames: ["Spinning Tops"],
79
+ brand: "Independent Artist",
80
+ price: 249900,
81
+ currency: "INR",
82
+ stockQuantity: 8,
83
+ availableQuantity: 8,
84
+ mainImage: seedExtMedia("https://picsum.photos/seed/art-beyblade-canvas/900/900"),
85
+ images: [seedExtMedia("https://picsum.photos/seed/art-beyblade-canvas/900/900")],
86
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
87
+ storeId: "store-beyblade-arena",
88
+ storeName: "Beyblade Arena",
89
+ tags: ["art", "beyblade", "canvas", "limited-edition"],
90
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
91
+ printMeta: { size: "12x12 in", material: "Stretched canvas", finish: "Matte", editionSize: 50 },
92
+ isPromoted: true,
93
+ allowOffers: false,
94
+ createdAt: daysAgo(9),
95
+ updatedAt: daysAgo(3),
96
+ },
97
+ {
98
+ id: "art-hotwheels-redline-mini-print",
99
+ slug: "art-hotwheels-redline-mini-print",
100
+ title: "Hot Wheels Redline Vintage Ad Art — Mini Print Set (3)",
101
+ description: "Set of 3 mini prints (5x7 in each) recreating vintage Hot Wheels Redline-era print ads in a retro poster style. Perfect for a collector's display case.",
102
+ categorySlugs: ["category-diecast-vehicles"],
103
+ categoryNames: ["Diecast Vehicles"],
104
+ brand: "Independent Artist",
105
+ price: 69900,
106
+ currency: "INR",
107
+ stockQuantity: 30,
108
+ availableQuantity: 30,
109
+ mainImage: seedExtMedia("https://picsum.photos/seed/art-hotwheels-print/700/900"),
110
+ images: [seedExtMedia("https://picsum.photos/seed/art-hotwheels-print/700/900")],
111
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
112
+ storeId: "store-diecast-depot",
113
+ storeName: "Diecast Depot",
114
+ tags: ["art", "hot-wheels", "retro", "print-set"],
115
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
116
+ printMeta: { size: "5x7 in (x3)", material: "Matte cardstock", finish: "Matte" },
117
+ allowOffers: false,
118
+ createdAt: daysAgo(2),
119
+ updatedAt: daysAgo(1),
120
+ },
121
+ ];
122
+ export const productsArtSeedData = _rawArtSeedData.map((p) => withTokens({
123
+ ...p,
124
+ listingType: "art",
125
+ }));
@@ -67,6 +67,8 @@ export declare const productsPreordersSeedData: {
67
67
  isPromoted?: boolean | undefined;
68
68
  isOnSale?: boolean | undefined;
69
69
  isSold?: boolean | undefined;
70
+ allowShipBeforeEmiComplete?: boolean | undefined;
71
+ printMeta?: import("../features/products").ProductPrintMeta | undefined;
70
72
  promotionEndDate?: Date | undefined;
71
73
  pickupAddressId?: string | undefined;
72
74
  viewCount?: number | undefined;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Stickers Products Seed Data (EMI/art-stickers session)
3
+ *
4
+ * Stored as ProductDocument with listingType: "stickers". Printed-only
5
+ * sticker sheets/packs — standard cart/checkout flow, distinguished by
6
+ * `printMeta` (size, material, finish, edition size).
7
+ *
8
+ * Prices in INR paise (₹1 = 100 paise).
9
+ */
10
+ import type { ProductDocument } from "../features/products/schemas/firestore";
11
+ export declare const productsStickersSeedData: Partial<ProductDocument>[];
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Stickers Products Seed Data (EMI/art-stickers session)
3
+ *
4
+ * Stored as ProductDocument with listingType: "stickers". Printed-only
5
+ * sticker sheets/packs — standard cart/checkout flow, distinguished by
6
+ * `printMeta` (size, material, finish, edition size).
7
+ *
8
+ * Prices in INR paise (₹1 = 100 paise).
9
+ */
10
+ import { PRODUCT_FIELDS } from "../constants/field-names";
11
+ import { buildSearchTokens } from "../utils/search-tokens";
12
+ import { seedExtMedia } from "./_helpers/media";
13
+ function withTokens(p) {
14
+ return {
15
+ tags: [],
16
+ featured: false,
17
+ ...p,
18
+ searchTokens: buildSearchTokens(p.title, p.description, p.brand, p.brandSlug, p.categoryNames, p.tags, p.features, p.condition),
19
+ };
20
+ }
21
+ const NOW = new Date();
22
+ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
23
+ const _rawStickersSeedData = [
24
+ {
25
+ id: "sticker-pokemon-starter-vinyl-sheet",
26
+ slug: "sticker-pokemon-starter-vinyl-sheet",
27
+ title: "Pokémon Starters Vinyl Sticker Sheet — Waterproof",
28
+ description: "Die-cut waterproof vinyl sticker sheet featuring the classic starter trio. Fan art, unofficial. Great for water bottles, laptops, and binders.",
29
+ categorySlugs: ["category-trading-cards"],
30
+ categoryNames: ["Trading Cards"],
31
+ brand: "Independent Artist",
32
+ price: 19900,
33
+ currency: "INR",
34
+ stockQuantity: 80,
35
+ availableQuantity: 80,
36
+ mainImage: seedExtMedia("https://picsum.photos/seed/sticker-pokemon-sheet/800/800"),
37
+ images: [seedExtMedia("https://picsum.photos/seed/sticker-pokemon-sheet/800/800")],
38
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
39
+ storeId: "store-pokemon-palace",
40
+ storeName: "Pokemon Palace",
41
+ tags: ["stickers", "pokemon", "vinyl", "waterproof"],
42
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
43
+ printMeta: { size: "10x15 cm sheet", material: "Vinyl", finish: "Glossy" },
44
+ allowOffers: false,
45
+ createdAt: daysAgo(5),
46
+ updatedAt: daysAgo(1),
47
+ },
48
+ {
49
+ id: "sticker-gundam-mech-holographic-pack",
50
+ slug: "sticker-gundam-mech-holographic-pack",
51
+ title: "Gundam Mech Squad Holographic Sticker Pack (10 pcs)",
52
+ description: "Pack of 10 individual holographic stickers featuring iconic Gundam mech silhouettes. Weatherproof, laptop and helmet safe.",
53
+ categorySlugs: ["category-model-kits"],
54
+ categoryNames: ["Model Kits"],
55
+ brand: "Independent Artist",
56
+ price: 29900,
57
+ currency: "INR",
58
+ stockQuantity: 60,
59
+ availableQuantity: 60,
60
+ mainImage: seedExtMedia("https://picsum.photos/seed/sticker-gundam-pack/800/800"),
61
+ images: [seedExtMedia("https://picsum.photos/seed/sticker-gundam-pack/800/800")],
62
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
63
+ storeId: "store-gundam-galaxy",
64
+ storeName: "Gundam Galaxy",
65
+ tags: ["stickers", "gundam", "holographic", "pack"],
66
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
67
+ printMeta: { size: "5x5 cm each (x10)", material: "Vinyl", finish: "Holographic" },
68
+ isPromoted: true,
69
+ allowOffers: false,
70
+ createdAt: daysAgo(3),
71
+ updatedAt: daysAgo(1),
72
+ },
73
+ {
74
+ id: "sticker-beyblade-burst-die-cut-set",
75
+ slug: "sticker-beyblade-burst-die-cut-set",
76
+ title: "Beyblade Burst Die-Cut Sticker Set (6 pcs)",
77
+ description: "Set of 6 die-cut matte stickers of fan-favorite Beyblade Burst tops. Perfect for notebooks and arena cases.",
78
+ categorySlugs: ["category-spinning-tops"],
79
+ categoryNames: ["Spinning Tops"],
80
+ brand: "Independent Artist",
81
+ price: 14900,
82
+ currency: "INR",
83
+ stockQuantity: 100,
84
+ availableQuantity: 100,
85
+ mainImage: seedExtMedia("https://picsum.photos/seed/sticker-beyblade-set/800/800"),
86
+ images: [seedExtMedia("https://picsum.photos/seed/sticker-beyblade-set/800/800")],
87
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
88
+ storeId: "store-beyblade-arena",
89
+ storeName: "Beyblade Arena",
90
+ tags: ["stickers", "beyblade", "die-cut", "set"],
91
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
92
+ printMeta: { size: "4x4 cm each (x6)", material: "Matte vinyl", finish: "Matte" },
93
+ allowOffers: false,
94
+ createdAt: daysAgo(7),
95
+ updatedAt: daysAgo(2),
96
+ },
97
+ {
98
+ id: "sticker-hotwheels-retro-logo-pack",
99
+ slug: "sticker-hotwheels-retro-logo-pack",
100
+ title: "Hot Wheels Retro Logo Sticker Pack (5 pcs)",
101
+ description: "Retro-style Hot Wheels-inspired logo stickers, glossy finish, weatherproof for toolboxes and diecast display cases.",
102
+ categorySlugs: ["category-diecast-vehicles"],
103
+ categoryNames: ["Diecast Vehicles"],
104
+ brand: "Independent Artist",
105
+ price: 12900,
106
+ currency: "INR",
107
+ stockQuantity: 120,
108
+ availableQuantity: 120,
109
+ mainImage: seedExtMedia("https://picsum.photos/seed/sticker-hotwheels-pack/800/800"),
110
+ images: [seedExtMedia("https://picsum.photos/seed/sticker-hotwheels-pack/800/800")],
111
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
112
+ storeId: "store-diecast-depot",
113
+ storeName: "Diecast Depot",
114
+ tags: ["stickers", "hot-wheels", "retro", "pack"],
115
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
116
+ printMeta: { size: "6x4 cm each (x5)", material: "Vinyl", finish: "Glossy" },
117
+ allowOffers: false,
118
+ createdAt: daysAgo(1),
119
+ updatedAt: daysAgo(1),
120
+ },
121
+ ];
122
+ export const productsStickersSeedData = _rawStickersSeedData.map((p) => withTokens({
123
+ ...p,
124
+ listingType: "stickers",
125
+ }));
@@ -92,9 +92,18 @@ export const siteSettingsSeedData = {
92
92
  whatsappNumber: `${_phonePrefix.replace(/[^+\d]/g, "")}9876543210`,
93
93
  },
94
94
  payment: {
95
- razorpayEnabled: true,
95
+ razorpayEnabled: false,
96
96
  upiManualEnabled: true,
97
- codEnabled: false,
97
+ codEnabled: true,
98
+ },
99
+ emi: {
100
+ enabled: true,
101
+ minOrderValueInPaise: 1000000,
102
+ tenureOptions: [2, 3, 4, 5, 6],
103
+ tokenPercent: 10,
104
+ billingDay: 5,
105
+ surchargePercentPerMonth: 1,
106
+ surchargeSellerSharePercent: 50,
98
107
  },
99
108
  socialLinks: {
100
109
  facebook: "https://facebook.com/letitrip",
@@ -358,6 +367,8 @@ export const siteSettingsSeedData = {
358
367
  minimumTransactionFee: 0,
359
368
  gatewayFeePercent: 2,
360
369
  codDepositPercent: 10,
370
+ codHandlingFeeMinInPaise: 20000,
371
+ codHandlingFeePercent: 10,
361
372
  sellerShippingFixed: 0,
362
373
  platformShippingPercent: 0,
363
374
  platformShippingFixedMin: 0,
@@ -405,8 +416,6 @@ export const siteSettingsSeedData = {
405
416
  whatsappPhoneNumberId: "",
406
417
  whatsappCloudApiToken: "",
407
418
  whatsappAdminNotifyNumbers: "",
408
- shiprocketEmail: "shiprocket@letitrip.in",
409
- shiprocketPassword: "shiprocket_PLACEHOLDER",
410
419
  metaAppId: "meta_app_PLACEHOLDER",
411
420
  metaAppSecret: "meta_secret_PLACEHOLDER",
412
421
  metaPageAccessToken: "meta_page_token_PLACEHOLDER",
@@ -46,7 +46,7 @@ export const storesSeedData = [
46
46
  {
47
47
  providerId: "provider-letitrip-standard",
48
48
  label: "Standard Shipping",
49
- type: "shiprocket",
49
+ type: "custom",
50
50
  fee: { flatInPaise: 4900, freeAboveInPaise: 99900 },
51
51
  etaDaysMin: 3,
52
52
  etaDaysMax: 5,
@@ -55,7 +55,7 @@ export const storesSeedData = [
55
55
  {
56
56
  providerId: "provider-letitrip-express",
57
57
  label: "Express Shipping",
58
- type: "shiprocket",
58
+ type: "custom",
59
59
  fee: { flatInPaise: 9900 },
60
60
  etaDaysMin: 1,
61
61
  etaDaysMax: 2,
@@ -131,7 +131,7 @@ export const storesSeedData = [
131
131
  {
132
132
  providerId: "provider-kaiba-box",
133
133
  label: "Box Shipping (Sealed Product)",
134
- type: "shiprocket",
134
+ type: "custom",
135
135
  fee: { flatInPaise: 14900 },
136
136
  etaDaysMin: 4,
137
137
  etaDaysMax: 7,
@@ -140,7 +140,7 @@ export const storesSeedData = [
140
140
  {
141
141
  providerId: "provider-kaiba-express",
142
142
  label: "Express Courier",
143
- type: "shiprocket",
143
+ type: "custom",
144
144
  fee: { flatInPaise: 19900 },
145
145
  etaDaysMin: 1,
146
146
  etaDaysMax: 2,
@@ -190,7 +190,7 @@ export const storesSeedData = [
190
190
  shippingConfig: {
191
191
  defaultProviderId: "provider-pokemon-standard",
192
192
  providers: [
193
- { providerId: "provider-pokemon-standard", label: "Standard Shipping", type: "shiprocket", fee: { flatInPaise: 4900, freeAboveInPaise: 79900 }, etaDaysMin: 4, etaDaysMax: 6, requiresAwbUpload: true },
193
+ { providerId: "provider-pokemon-standard", label: "Standard Shipping", type: "custom", fee: { flatInPaise: 4900, freeAboveInPaise: 79900 }, etaDaysMin: 4, etaDaysMax: 6, requiresAwbUpload: true },
194
194
  ],
195
195
  },
196
196
  isPublic: true,
@@ -215,11 +215,11 @@ export const storesSeedData = [
215
215
  location: "Hyderabad, Telangana, India",
216
216
  socialLinks: { instagram: "https://instagram.com/cardgamehub.in", twitter: "https://twitter.com/cardgamehub" },
217
217
  returnPolicy: "5-day returns. Items must be in original packaging.",
218
- shippingPolicy: "Free shipping above ₹1,499. Ships within 48 hours via Shiprocket.",
218
+ shippingPolicy: "Free shipping above ₹1,499. Ships within 48 hours.",
219
219
  shippingConfig: {
220
220
  defaultProviderId: "provider-cardgame-standard",
221
221
  providers: [
222
- { providerId: "provider-cardgame-standard", label: "Standard", type: "shiprocket", fee: { flatInPaise: 5900, freeAboveInPaise: 149900 }, etaDaysMin: 4, etaDaysMax: 7, requiresAwbUpload: true },
222
+ { providerId: "provider-cardgame-standard", label: "Standard", type: "custom", fee: { flatInPaise: 5900, freeAboveInPaise: 149900 }, etaDaysMin: 4, etaDaysMax: 7, requiresAwbUpload: true },
223
223
  ],
224
224
  },
225
225
  isPublic: true,
@@ -248,7 +248,7 @@ export const storesSeedData = [
248
248
  shippingConfig: {
249
249
  defaultProviderId: "provider-beyblade-standard",
250
250
  providers: [
251
- { providerId: "provider-beyblade-standard", label: "Standard", type: "shiprocket", fee: { flatInPaise: 4500, freeAboveInPaise: 59900 }, etaDaysMin: 3, etaDaysMax: 6, requiresAwbUpload: true },
251
+ { providerId: "provider-beyblade-standard", label: "Standard", type: "custom", fee: { flatInPaise: 4500, freeAboveInPaise: 59900 }, etaDaysMin: 3, etaDaysMax: 6, requiresAwbUpload: true },
252
252
  ],
253
253
  },
254
254
  isPublic: true,
@@ -278,8 +278,8 @@ export const storesSeedData = [
278
278
  shippingConfig: {
279
279
  defaultProviderId: "provider-tokyo-standard",
280
280
  providers: [
281
- { providerId: "provider-tokyo-standard", label: "Standard (Double-Box)", type: "shiprocket", fee: { flatInPaise: 9900, freeAboveInPaise: 199900 }, etaDaysMin: 5, etaDaysMax: 8, requiresAwbUpload: true },
282
- { providerId: "provider-tokyo-express", label: "Express", type: "shiprocket", fee: { flatInPaise: 19900 }, etaDaysMin: 2, etaDaysMax: 3, requiresAwbUpload: true },
281
+ { providerId: "provider-tokyo-standard", label: "Standard (Double-Box)", type: "custom", fee: { flatInPaise: 9900, freeAboveInPaise: 199900 }, etaDaysMin: 5, etaDaysMax: 8, requiresAwbUpload: true },
282
+ { providerId: "provider-tokyo-express", label: "Express", type: "custom", fee: { flatInPaise: 19900 }, etaDaysMin: 2, etaDaysMax: 3, requiresAwbUpload: true },
283
283
  ],
284
284
  },
285
285
  isPublic: true,
@@ -308,7 +308,7 @@ export const storesSeedData = [
308
308
  shippingConfig: {
309
309
  defaultProviderId: "provider-gundam-standard",
310
310
  providers: [
311
- { providerId: "provider-gundam-standard", label: "Standard", type: "shiprocket", fee: { flatInPaise: 7900, freeAboveInPaise: 149900 }, etaDaysMin: 4, etaDaysMax: 7, requiresAwbUpload: true },
311
+ { providerId: "provider-gundam-standard", label: "Standard", type: "custom", fee: { flatInPaise: 7900, freeAboveInPaise: 149900 }, etaDaysMin: 4, etaDaysMax: 7, requiresAwbUpload: true },
312
312
  ],
313
313
  },
314
314
  isPublic: true,
package/dist/server.d.ts CHANGED
@@ -139,19 +139,9 @@ export { rupeesToPaise } from "./providers/payment-razorpay/index";
139
139
  export { verifyPaymentSignature } from "./providers/payment-razorpay/index";
140
140
  export { verifyPaymentSignatureWithKeys } from "./providers/payment-razorpay/index";
141
141
  export { verifyWebhookSignature } from "./providers/payment-razorpay/index";
142
- export { SHIPROCKET_TOKEN_TTL_MS } from "./providers/shipping-shiprocket/index";
143
- export { SHIPROCKET_TRACKING_URL_BASE, buildShiprocketTrackingUrl, SHIPROCKET_STATUS_PICKUP_SCHEDULED, } from "./providers/shipping-shiprocket/index";
144
- export { ShiprocketProvider } from "./providers/shipping-shiprocket/index";
145
- export { isShiprocketTokenExpired } from "./providers/shipping-shiprocket/index";
146
- export { shiprocketAddPickupLocation } from "./providers/shipping-shiprocket/index";
147
- export { shiprocketAuthenticate } from "./providers/shipping-shiprocket/index";
148
- export { shiprocketCheckServiceability } from "./providers/shipping-shiprocket/index";
149
- export { shiprocketCreateOrder } from "./providers/shipping-shiprocket/index";
150
- export { shiprocketGenerateAWB } from "./providers/shipping-shiprocket/index";
151
- export { shiprocketGeneratePickup } from "./providers/shipping-shiprocket/index";
152
- export { shiprocketGetPickupLocations } from "./providers/shipping-shiprocket/index";
153
- export { shiprocketTrackByAWB } from "./providers/shipping-shiprocket/index";
154
- export { shiprocketVerifyPickupOTP } from "./providers/shipping-shiprocket/index";
142
+ export { resolveKeys } from "./core/integration-keys";
143
+ export { ManualPaymentProvider } from "./providers/payment-manual/index";
144
+ export { ManualShippingProvider } from "./providers/shipping-manual/index";
155
145
  export { createAddressForUser } from "./features/account/server";
156
146
  export { deleteAddressForUser } from "./features/account/server";
157
147
  export { getAddressByIdForUser } from "./features/account/server";
@@ -294,6 +284,8 @@ export { listPublicEvents } from "./features/events/server";
294
284
  export { updateEvent } from "./features/events/server";
295
285
  export { triggerEventRaffleAction, assignSpinPrizeAction, } from "./_internal/server/features/raffle/actions";
296
286
  export { processRefundAction, type ProcessRefundInput, } from "./_internal/server/features/refunds/actions";
287
+ export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, } from "./_internal/shared/fees/calculator";
288
+ export type { FeeCommissionRates, CheckoutFees, PayoutDeduction, CodHandlingFeeRates, } from "./_internal/shared/fees/calculator";
297
289
  export { applyRefundDeductionAction, type ApplyRefundDeductionInput, type ApplyRefundDeductionResult, } from "./_internal/server/features/payouts/actions";
298
290
  export { createFaq } from "./features/faq/server";
299
291
  export { deleteFaq } from "./features/faq/server";
@@ -495,7 +487,7 @@ export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePage
495
487
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
496
488
  export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
497
489
  export type { ListingTypeCapability } from "./_internal/shared/listing-types/capabilities";
498
- export { LISTING_TYPE_REGISTRY, pluginFor } from "./_internal/shared/listing-types/_registry";
490
+ export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry";
499
491
  export type { ListingTypePlugin } from "./_internal/shared/listing-types/_registry";
500
492
  export { applyMediaContextGuards, CONTEXT_LIMITS, } from "./_internal/server/features/media/contextGuards";
501
493
  export type { GuardResult, GuardError, GuardSuccess } from "./_internal/server/features/media/contextGuards";
@@ -529,7 +521,7 @@ export { getLiveItemForDetail } from "./_internal/server/features/live/data";
529
521
  export { toClientLiveItem, type LiveItemClientShape } from "./_internal/server/features/live/adapters";
530
522
  export { buildLiveItemMetadata, type LiveItemMetadataOptions } from "./_internal/server/features/live/metadata";
531
523
  export { renderLiveItemOg, renderLiveItemOgImage, renderLiveItemOgFromDoc, type LiveItemOgData } from "./_internal/server/features/live/og";
532
- export { MockRazorpayProvider, MockShiprocketProvider, resolvePaymentProvider, resolveShippingProvider, type MockWebhookEvent, type MockWebhookPayload, type WebhookSink, type ShipmentEvent, type ShipmentEventSink, type PaymentResolutionFactories, type ProviderResolutionContext, type ShippingResolutionFactories, } from "./_internal/server/providers";
524
+ export { MockRazorpayProvider, resolvePaymentProvider, type MockWebhookEvent, type MockWebhookPayload, type WebhookSink, type PaymentResolutionFactories, type ProviderResolutionContext, } from "./_internal/server/providers";
533
525
  export { getLotteryEventCached, listLotteryEvents, getLotteryEntriesForAdmin, getLotteryEntriesForUser } from "./_internal/server/features/lottery/data";
534
526
  export type { LotteryEventClient } from "./_internal/server/features/lottery/data";
535
527
  export { toClientLotterySlot, toClientLotteryConfig } from "./_internal/server/features/lottery/adapters";
package/dist/server.js CHANGED
@@ -402,43 +402,14 @@ export { verifyPaymentSignatureWithKeys } from "./providers/payment-razorpay/ind
402
402
  // verifyWebhookSignature - Shared export for verify webhook signature.
403
403
  export { verifyWebhookSignature } from "./providers/payment-razorpay/index";
404
404
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
405
- // SHIPROCKET_TOKEN_TTL_MS - Constant used across modules.
406
- export { SHIPROCKET_TOKEN_TTL_MS } from "./providers/shipping-shiprocket/index";
407
- // SHIPROCKET_TRACKING_URL_BASE / buildShiprocketTrackingUrl / SHIPROCKET_STATUS_PICKUP_SCHEDULED — see I5/O5
408
- export { SHIPROCKET_TRACKING_URL_BASE, buildShiprocketTrackingUrl, SHIPROCKET_STATUS_PICKUP_SCHEDULED, } from "./providers/shipping-shiprocket/index";
405
+ // resolveKeys - resolves integration credentials (Razorpay etc.) from Firestore site settings, falling back to env vars. Used by providers.config.ts to construct RazorpayProvider when siteSettings.payment.razorpayEnabled is true.
406
+ export { resolveKeys } from "./core/integration-keys";
409
407
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
410
- // ShiprocketProvider - Component for shiprocket provider.
411
- export { ShiprocketProvider } from "./providers/shipping-shiprocket/index";
408
+ // ManualPaymentProvider - the default IPaymentProvider implementation (no gateway).
409
+ export { ManualPaymentProvider } from "./providers/payment-manual/index";
412
410
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
413
- // isShiprocketTokenExpired - Shared export for is shiprocket token expired.
414
- export { isShiprocketTokenExpired } from "./providers/shipping-shiprocket/index";
415
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
416
- // shiprocketAddPickupLocation - Shared export for shiprocket add pickup location.
417
- export { shiprocketAddPickupLocation } from "./providers/shipping-shiprocket/index";
418
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
419
- // shiprocketAuthenticate - Shared export for shiprocket authenticate.
420
- export { shiprocketAuthenticate } from "./providers/shipping-shiprocket/index";
421
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
422
- // shiprocketCheckServiceability - Shared export for shiprocket check serviceability.
423
- export { shiprocketCheckServiceability } from "./providers/shipping-shiprocket/index";
424
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
425
- // shiprocketCreateOrder - Shared export for shiprocket create order.
426
- export { shiprocketCreateOrder } from "./providers/shipping-shiprocket/index";
427
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
428
- // shiprocketGenerateAWB - Shared export for shiprocket generate awb.
429
- export { shiprocketGenerateAWB } from "./providers/shipping-shiprocket/index";
430
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
431
- // shiprocketGeneratePickup - Shared export for shiprocket generate pickup.
432
- export { shiprocketGeneratePickup } from "./providers/shipping-shiprocket/index";
433
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
434
- // shiprocketGetPickupLocations - Shared export for shiprocket get pickup locations.
435
- export { shiprocketGetPickupLocations } from "./providers/shipping-shiprocket/index";
436
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
437
- // shiprocketTrackByAWB - Shared export for shiprocket track by awb.
438
- export { shiprocketTrackByAWB } from "./providers/shipping-shiprocket/index";
439
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
440
- // shiprocketVerifyPickupOTP - Shared export for shiprocket verify pickup otp.
441
- export { shiprocketVerifyPickupOTP } from "./providers/shipping-shiprocket/index";
411
+ // ManualShippingProvider - the default (and only) IShippingProvider implementation.
412
+ export { ManualShippingProvider } from "./providers/shipping-manual/index";
442
413
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
443
414
  // createAddressForUser - Helper for create address for user.
444
415
  export { createAddressForUser } from "./features/account/server";
@@ -861,6 +832,8 @@ export { updateEvent } from "./features/events/server";
861
832
  export { triggerEventRaffleAction, assignSpinPrizeAction, } from "./_internal/server/features/raffle/actions";
862
833
  // [SERVER-ONLY] S-SBUNI-RULES — refund action (Razorpay + manual paths)
863
834
  export { processRefundAction, } from "./_internal/server/features/refunds/actions";
835
+ // [SERVER-ONLY] Shared fee calculator — platform/gateway/GST/COD handling fee math.
836
+ export { computeCheckoutFees, computePayoutDeduction, computeCodHandlingFee, } from "./_internal/shared/fees/calculator";
864
837
  // [SERVER-ONLY] Payout refund deduction action
865
838
  export { applyRefundDeductionAction, } from "./_internal/server/features/payouts/actions";
866
839
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -1384,7 +1357,7 @@ export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePage
1384
1357
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
1385
1358
  // Listing-type capability registry — SB-UNI X1.
1386
1359
  export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
1387
- export { LISTING_TYPE_REGISTRY, pluginFor } from "./_internal/shared/listing-types/_registry";
1360
+ export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry";
1388
1361
  // Media context guards — shared by /api/media/sign + legacy /api/media/upload.
1389
1362
  export { applyMediaContextGuards, CONTEXT_LIMITS, } from "./_internal/server/features/media/contextGuards";
1390
1363
  // Media upload limits — shared by /api/media/sign + /api/media/finalize + /api/media/upload.
@@ -1426,12 +1399,14 @@ export { getLiveItemForDetail } from "./_internal/server/features/live/data";
1426
1399
  export { toClientLiveItem } from "./_internal/server/features/live/adapters";
1427
1400
  export { buildLiveItemMetadata } from "./_internal/server/features/live/metadata";
1428
1401
  export { renderLiveItemOg, renderLiveItemOgImage, renderLiveItemOgFromDoc } from "./_internal/server/features/live/og";
1429
- // ── Track H — Payment + Shipping provider abstraction ────────────────────────
1430
- // In-process mock implementations. Real providers continue to live in
1431
- // appkit/src/providers/payment-razorpay + shipping-shiprocket and are
1432
- // registered separately. The resolver helper sits next to them so consumers
1433
- // can drive selection from siteSettings.featureFlags.useMockPayment.
1434
- export { MockRazorpayProvider, MockShiprocketProvider, resolvePaymentProvider, resolveShippingProvider, } from "./_internal/server/providers";
1402
+ // ── Track H — Payment provider abstraction ────────────────────────────────
1403
+ // In-process mock implementation. The real provider continues to live in
1404
+ // appkit/src/providers/payment-razorpay and is registered separately. The
1405
+ // resolver helper sits next to it so consumers can drive selection from
1406
+ // siteSettings.featureFlags.useMockPayment. Shipping has no mock/resolver —
1407
+ // ManualShippingProvider makes no external API calls, so there's nothing to
1408
+ // mock or choose between.
1409
+ export { MockRazorpayProvider, resolvePaymentProvider, } from "./_internal/server/providers";
1435
1410
  // ── Lottery feature — server data + adapters + actions ──────────────────────────
1436
1411
  export { getLotteryEventCached, listLotteryEvents, getLotteryEntriesForAdmin, getLotteryEntriesForUser } from "./_internal/server/features/lottery/data";
1437
1412
  export { toClientLotterySlot, toClientLotteryConfig } from "./_internal/server/features/lottery/adapters";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mohasinac/appkit",
3
- "version": "3.2.20",
3
+ "version": "3.3.0",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"