@mohasinac/appkit 4.25.0 → 4.27.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.
- package/dist/_internal/server/features/bundles/actions.d.ts +4 -1
- package/dist/_internal/server/features/bundles/actions.js +54 -5
- package/dist/_internal/server/features/bundles/data.d.ts +19 -0
- package/dist/_internal/server/features/bundles/data.js +32 -0
- package/dist/_internal/server/features/bundles/index.d.ts +1 -1
- package/dist/_internal/server/features/bundles/index.js +1 -1
- package/dist/_internal/server/features/checkout/actions.js +38 -68
- package/dist/_internal/server/features/checkout/expand-order-items.d.ts +35 -0
- package/dist/_internal/server/features/checkout/expand-order-items.js +85 -0
- package/dist/_internal/server/features/grouped/index.d.ts +2 -0
- package/dist/_internal/server/features/grouped/index.js +2 -0
- package/dist/_internal/server/features/grouped/metadata.d.ts +17 -0
- package/dist/_internal/server/features/grouped/metadata.js +48 -0
- package/dist/_internal/server/features/grouped/og.d.ts +16 -0
- package/dist/_internal/server/features/grouped/og.js +24 -0
- package/dist/_internal/server/features/seo/sitemap.js +24 -1
- package/dist/_internal/shared/checkout/order-math.d.ts +63 -4
- package/dist/_internal/shared/checkout/order-math.js +119 -7
- package/dist/client.d.ts +7 -3
- package/dist/client.js +3 -2
- package/dist/constants/api-endpoints.d.ts +0 -6
- package/dist/constants/api-endpoints.js +0 -2
- package/dist/features/analytics/types.d.ts +1 -1
- package/dist/features/analytics/types.js +3 -0
- package/dist/features/cart/components/CartGroupLineRow.d.ts +42 -0
- package/dist/features/cart/components/CartGroupLineRow.js +33 -0
- package/dist/features/cart/components/index.d.ts +2 -0
- package/dist/features/cart/components/index.js +1 -0
- package/dist/features/cart/repository/cart.repository.js +6 -0
- package/dist/features/cart/schemas/firestore.d.ts +7 -2
- package/dist/features/categories/components/BundleBuyNowCta.d.ts +18 -5
- package/dist/features/categories/components/BundleBuyNowCta.js +24 -10
- package/dist/features/categories/components/BundleDetailView.d.ts +8 -1
- package/dist/features/categories/components/BundleDetailView.js +2 -2
- package/dist/features/categories/components/BundlesListView.d.ts +1 -0
- package/dist/features/categories/components/CategoryBundlesListing.d.ts +3 -0
- package/dist/features/grouped/components/GroupedListingDetailView.d.ts +21 -0
- package/dist/features/grouped/components/GroupedListingDetailView.js +17 -0
- package/dist/features/grouped/components/GroupedListingsCarousel.js +6 -1
- package/dist/features/orders/index.d.ts +1 -1
- package/dist/features/orders/index.js +1 -1
- package/dist/features/orders/schemas/firestore.d.ts +11 -0
- package/dist/features/orders/utils/bundle-grouping.d.ts +29 -19
- package/dist/features/orders/utils/bundle-grouping.js +32 -22
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +6 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.js +150 -1
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +118 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/next/routing/route-map.d.ts +12 -0
- package/dist/next/routing/route-map.js +6 -0
- package/dist/server-entry.d.ts +1 -1
- package/dist/server-entry.js +1 -1
- package/dist/server.d.ts +3 -1
- package/dist/server.js +5 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-utilities.css +1 -1
- package/package.json +1 -1
|
@@ -729,6 +729,124 @@ const rawTesterChecklistItems = [
|
|
|
729
729
|
href: "/cart",
|
|
730
730
|
cases: [
|
|
731
731
|
{ key: "update-qty", label: "Updating item quantity in cart recalculates the total" },
|
|
732
|
+
// ── Grouped & bundle cart lines ──────────────────────────────────
|
|
733
|
+
// Fixtures backing these: product-tester-standard-1/2/3 (three members
|
|
734
|
+
// of one group, deliberately spanning two GST rates),
|
|
735
|
+
// product-tester-group-soldout (blocked member),
|
|
736
|
+
// product-tester-crossstore-a/b (a group spanning two sellers),
|
|
737
|
+
// bundle-tester-sandbox (a priced, all-or-nothing bundle).
|
|
738
|
+
{
|
|
739
|
+
key: "group-picker-opens",
|
|
740
|
+
label: "On a product that belongs to a group, the \"Part of: …\" strip has a \"Pick items →\" control that opens a picker with a Qty column and a +/- stepper on each member",
|
|
741
|
+
description: "Before this existed the panel was navigation only — the buyer had to open each member separately and add it as its own cart line.",
|
|
742
|
+
href: "/products/product-tester-standard-1",
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
key: "group-picker-running-total",
|
|
746
|
+
label: "Changing any member's quantity updates the picker's running total (\"N items · ₹X\") immediately, and \"Add selected to cart\" stays disabled while nothing is selected",
|
|
747
|
+
href: "/products/product-tester-standard-1",
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
key: "group-picker-stock-cap",
|
|
751
|
+
label: "A member's + button stops at that member's available stock — it cannot be pushed past it",
|
|
752
|
+
href: "/products/product-tester-standard-1",
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
key: "group-picker-blocked-member",
|
|
756
|
+
label: "A sold-out member shows a reason chip (e.g. \"Sold\" / \"Out of stock\") in place of its stepper and cannot be selected",
|
|
757
|
+
description: "Test Part — Sold Out is seeded into the tester group specifically for this. The rest of the group must stay selectable around it.",
|
|
758
|
+
href: "/products/product-tester-group-soldout",
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
key: "group-picker-one-line",
|
|
762
|
+
label: "\"Add selected to cart\" with two or more members creates ONE cart line, not one line per product",
|
|
763
|
+
description: "Pick 2 of one member and 1 of another, then open the cart: a single line reading \"N items\", not three separate rows.",
|
|
764
|
+
href: "/products/product-tester-standard-1",
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
key: "group-picker-single-member-plain-line",
|
|
768
|
+
label: "Selecting exactly ONE member produces an ordinary product line (with a normal quantity stepper), not a grouped line",
|
|
769
|
+
description: "1 item × qty N is already what a normal cart line means, so it deliberately does not become a group line.",
|
|
770
|
+
href: "/products/product-tester-standard-1",
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
key: "group-picker-cross-store",
|
|
774
|
+
label: "A group whose members belong to DIFFERENT sellers renders read-only — no Qty column, no \"Add selected\" button — with an explanation, rather than a button that always fails",
|
|
775
|
+
description: "Use the Test Cross-Store Set. Its two members sit in different stores on purpose.",
|
|
776
|
+
href: "/products/product-tester-crossstore-a",
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
key: "group-picker-guest",
|
|
780
|
+
label: "A signed-out visitor using the picker is shown the login prompt rather than silently losing the selection",
|
|
781
|
+
href: "/products/product-tester-standard-1",
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
key: "group-line-expands-in-cart",
|
|
785
|
+
label: "A grouped cart line in the cart expands to list its members with a thumbnail, unit price and its own +/- stepper each",
|
|
786
|
+
href: "/cart",
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
key: "group-line-no-line-level-stepper",
|
|
790
|
+
label: "A grouped line has NO line-level quantity stepper — only the per-member ones",
|
|
791
|
+
description: "The member quantities carry the whole selection; a second multiplier on top would double every price, tax and stock decrement.",
|
|
792
|
+
href: "/cart",
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
key: "group-line-member-edit-recalculates",
|
|
796
|
+
label: "Changing one member's quantity in the cart updates that line's total AND the seller-group subtotal above it",
|
|
797
|
+
href: "/cart",
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
key: "group-line-remove-member",
|
|
801
|
+
label: "Removing one member from a grouped line leaves the rest of the line intact; removing the LAST member removes the whole line",
|
|
802
|
+
href: "/cart",
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
key: "group-line-link-target",
|
|
806
|
+
label: "Clicking a grouped or bundle line's title in the cart lands on a real page — never a 404",
|
|
807
|
+
description: "A bundle line goes to /bundles/{slug}, a grouped-listing line to /groups/{slug}, a product-group line to its parent product. It used to point at /products/{categoryId}, which never existed.",
|
|
808
|
+
href: "/cart",
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
key: "bundle-copies-stepper",
|
|
812
|
+
label: "A bundle page has a \"Copies\" +/- stepper and BOTH \"Buy now\" and \"Add to cart\" — Add to cart stays on the page, Buy now goes to checkout",
|
|
813
|
+
description: "A bundle is all-or-nothing: there must be no per-member quantity controls anywhere on the bundle page, only the copies stepper.",
|
|
814
|
+
href: "/bundles/bundle-tester-sandbox",
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
key: "bundle-line-in-cart",
|
|
818
|
+
label: "A bundle in the cart lists its members READ-ONLY and offers a copies stepper; raising copies multiplies the bundle's discounted price, never the sum of the members' individual prices",
|
|
819
|
+
description: "Test Bundle is ₹199 while its members list at ₹199 + ₹149. Two copies must read ₹398, not ₹696.",
|
|
820
|
+
href: "/cart",
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
key: "bundle-cross-store-rejected",
|
|
824
|
+
label: "Saving a bundle whose items come from two different sellers is refused with a clear message naming how many sellers they span",
|
|
825
|
+
description: "Build a bundle mixing Test Cross-Store Set — Seller A with any Tester Sandbox product and save. Applies to both creating and editing, on the admin and the seller bundle editors. A bundle's storeId is a single value and is what decides which seller gets the order, the shipment and the payout — so a two-seller bundle would pay only one of them.",
|
|
826
|
+
href: "/store/bundles/new",
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
key: "grouped-listing-page-picker",
|
|
830
|
+
label: "A grouped listing has its own public page with the same picker, reachable from the \"Pick items from this group →\" button on a group carousel",
|
|
831
|
+
href: "/groups/group-beyblade-original-lineage",
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
key: "group-lane-gate",
|
|
835
|
+
label: "While an unpaid won auction or accepted offer is sitting in the cart, adding a group selection is refused with the same lane message as any other add",
|
|
836
|
+
description: "This path used to bypass the gate entirely, so a buyer could keep shopping around an obligation they had already committed to.",
|
|
837
|
+
href: "/products/product-tester-standard-1",
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
key: "group-checkout-order-rows",
|
|
841
|
+
label: "After checking out a grouped or bundle line, the order shows one row PER MEMBER under a single group header, and the line totals add up to the order total",
|
|
842
|
+
description: "Rows are expanded so each carries its own HSN code and GST rate — a collapsed row can only carry one of each, which is why bundles previously showed none.",
|
|
843
|
+
href: "/user/orders",
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
key: "group-checkout-stock",
|
|
847
|
+
label: "Checking out a grouped line decrements each member by (its per-copy quantity × the number of copies), not by one each",
|
|
848
|
+
href: "/user/orders",
|
|
849
|
+
},
|
|
732
850
|
{ key: "apply-coupon", label: "Applying a coupon code at checkout works" },
|
|
733
851
|
{ key: "remove-coupon", label: "Removing an already-applied coupon from the cart recalculates the total back down" },
|
|
734
852
|
{ key: "remove-item", label: "Removing an item from the cart works" },
|
package/dist/index.d.ts
CHANGED
|
@@ -3125,7 +3125,7 @@ export type { SessionUser } from "./react/index";
|
|
|
3125
3125
|
export type { UseUrlTableOptions } from "./react/index";
|
|
3126
3126
|
export { SUCCESS_MESSAGES } from "./values/index";
|
|
3127
3127
|
export { splitCartIntoOrderGroups } from "./features/orders/index";
|
|
3128
|
-
export {
|
|
3128
|
+
export { groupOrderItemsByLine, type LineOrderGroup, type OrderItemForLineGrouping, } from "./features/orders/index";
|
|
3129
3129
|
export { buildSieveFilters } from "./utils/filter.helper";
|
|
3130
3130
|
export { formatCurrency, formatFileSize } from "./utils/number.formatter";
|
|
3131
3131
|
export { formatMonthYear } from "./utils/date.formatter";
|
package/dist/index.js
CHANGED
|
@@ -5530,7 +5530,7 @@ export { SUCCESS_MESSAGES } from "./values/index";
|
|
|
5530
5530
|
// -- Missing order utils
|
|
5531
5531
|
export { splitCartIntoOrderGroups } from "./features/orders/index";
|
|
5532
5532
|
// S-SBUNI-5 2026-05-13 â€" bundle-aware order item grouping for receipts.
|
|
5533
|
-
export {
|
|
5533
|
+
export { groupOrderItemsByLine, } from "./features/orders/index";
|
|
5534
5534
|
// -- Missing utils
|
|
5535
5535
|
export { buildSieveFilters } from "./utils/filter.helper";
|
|
5536
5536
|
export { formatCurrency, formatFileSize } from "./utils/number.formatter";
|
|
@@ -25,6 +25,12 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
25
25
|
readonly PRE_ORDER_DETAIL: (id: string) => string;
|
|
26
26
|
readonly BUNDLES: "/bundles";
|
|
27
27
|
readonly BUNDLE_DETAIL: (slug: string) => string;
|
|
28
|
+
/**
|
|
29
|
+
* A `groupedListings` document's public page. Distinct from a product
|
|
30
|
+
* GROUP (`product.groupId`), whose canonical page is its parent product's
|
|
31
|
+
* detail page — see § "Bundles vs Product Groups vs Grouped Listings".
|
|
32
|
+
*/
|
|
33
|
+
readonly GROUP_DETAIL: (slug: string) => string;
|
|
28
34
|
readonly PRIZE_DRAWS: "/prize-draws";
|
|
29
35
|
readonly PRIZE_DRAW_DETAIL: (slug: string) => string;
|
|
30
36
|
readonly SELLER_GUIDE_BUNDLES: "/seller-guide/bundles";
|
|
@@ -407,6 +413,12 @@ export declare const ROUTES: {
|
|
|
407
413
|
readonly PRE_ORDER_DETAIL: (id: string) => string;
|
|
408
414
|
readonly BUNDLES: "/bundles";
|
|
409
415
|
readonly BUNDLE_DETAIL: (slug: string) => string;
|
|
416
|
+
/**
|
|
417
|
+
* A `groupedListings` document's public page. Distinct from a product
|
|
418
|
+
* GROUP (`product.groupId`), whose canonical page is its parent product's
|
|
419
|
+
* detail page — see § "Bundles vs Product Groups vs Grouped Listings".
|
|
420
|
+
*/
|
|
421
|
+
readonly GROUP_DETAIL: (slug: string) => string;
|
|
410
422
|
readonly PRIZE_DRAWS: "/prize-draws";
|
|
411
423
|
readonly PRIZE_DRAW_DETAIL: (slug: string) => string;
|
|
412
424
|
readonly SELLER_GUIDE_BUNDLES: "/seller-guide/bundles";
|
|
@@ -14,6 +14,12 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
14
14
|
// SB1-J — bundles + prize draws (additive, pages not yet built)
|
|
15
15
|
BUNDLES: "/bundles",
|
|
16
16
|
BUNDLE_DETAIL: (slug) => `/bundles/${slug}`,
|
|
17
|
+
/**
|
|
18
|
+
* A `groupedListings` document's public page. Distinct from a product
|
|
19
|
+
* GROUP (`product.groupId`), whose canonical page is its parent product's
|
|
20
|
+
* detail page — see § "Bundles vs Product Groups vs Grouped Listings".
|
|
21
|
+
*/
|
|
22
|
+
GROUP_DETAIL: (slug) => `/groups/${slug}`,
|
|
17
23
|
PRIZE_DRAWS: "/prize-draws",
|
|
18
24
|
PRIZE_DRAW_DETAIL: (slug) => `/prize-draws/${slug}`,
|
|
19
25
|
SELLER_GUIDE_BUNDLES: "/seller-guide/bundles",
|
package/dist/server-entry.d.ts
CHANGED
|
@@ -65,7 +65,7 @@ export { renderFaqOg, renderFaqOgImage, type FaqOgData, } from "./_internal/serv
|
|
|
65
65
|
export { renderScamOg, renderScamOgImage, type ScamOgData, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
|
|
66
66
|
export { getSearchResults, searchAction, type SearchQuery, } from "./_internal/server/features/search/index";
|
|
67
67
|
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";
|
|
68
|
-
export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
|
|
68
|
+
export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, buildGroupedListingMetadata, renderGroupedListingOg, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, type GroupedListingMetadataOptions, } from "./_internal/server/features/grouped/index";
|
|
69
69
|
export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, previewCheckoutPricing, resolveShippingCost, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type VerifyAndPlaceRazorpayOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, type CheckoutPricingPreviewInput, type CheckoutPricingPreview, } from "./_internal/server/features/checkout/index";
|
|
70
70
|
export { unitPriceFor, lineTotalFor, computePreOrderDepositAmount, } from "./_internal/shared/checkout/order-math";
|
|
71
71
|
export { processRefundAction, type ProcessRefundInput, } from "./_internal/server/features/refunds/actions";
|
package/dist/server-entry.js
CHANGED
|
@@ -91,7 +91,7 @@ export { getSearchResults, searchAction, } from "./_internal/server/features/sea
|
|
|
91
91
|
// S3: categories data layer
|
|
92
92
|
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";
|
|
93
93
|
// S3: grouped listings data layer
|
|
94
|
-
export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, } from "./_internal/server/features/grouped/index";
|
|
94
|
+
export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, buildGroupedListingMetadata, renderGroupedListingOg, } from "./_internal/server/features/grouped/index";
|
|
95
95
|
// SB-UNI-V — bundles data layer deleted; consumers should query
|
|
96
96
|
// `categoriesRepository.findBySlugAndType(slug, "bundle")` /
|
|
97
97
|
// `.listByType("bundle", opts)` / `.findById(id)` directly.
|
package/dist/server.d.ts
CHANGED
|
@@ -501,8 +501,10 @@ export { GoogleReviewsSection } from "./features/homepage/components/GoogleRevie
|
|
|
501
501
|
export type { GoogleReviewsSectionProps } from "./features/homepage/components/GoogleReviewsSection";
|
|
502
502
|
export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProductItem, type SitemapProduct, type RelatedItemsResult, } from "./_internal/server/features/products/index";
|
|
503
503
|
export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, type PublicProductListInput, type PublicProductListResult, type PublicProductListOptions, type PublicProductExecutor, type PublicProductQuery, } from "./_internal/server/features/products/index";
|
|
504
|
-
export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
|
|
504
|
+
export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, findBundleMemberStores, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
|
|
505
505
|
export { getGroupsForProduct, getGroupsWithItemsForProduct, getGroupsForCategory, getGroupsForBrand } from "./_internal/server/features/grouped/index";
|
|
506
|
+
export { getGroupedListingForDetail, getGroupedListingWithItems, buildGroupedListingMetadata, renderGroupedListingOg, type GroupedListingWithItems, type GroupedListingMetadataOptions, } from "./_internal/server/features/grouped/index";
|
|
507
|
+
export { toPublicGroupMember, toPublicGroupMembers, type PublicGroupMember, } from "./_internal/server/features/products/group-members";
|
|
506
508
|
export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
|
|
507
509
|
export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
|
|
508
510
|
export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
|
package/dist/server.js
CHANGED
|
@@ -1356,8 +1356,12 @@ export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProduc
|
|
|
1356
1356
|
// share it so their filter semantics cannot drift (Root Cause #30).
|
|
1357
1357
|
export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, } from "./_internal/server/features/products/index";
|
|
1358
1358
|
// S-SBUNI-3/4 2026-05-13 — bundle data/metadata/og layer.
|
|
1359
|
-
export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
|
|
1359
|
+
export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, findBundleMemberStores, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
|
|
1360
1360
|
export { getGroupsForProduct, getGroupsWithItemsForProduct, getGroupsForCategory, getGroupsForBrand } from "./_internal/server/features/grouped/index";
|
|
1361
|
+
// Public /groups/{slug} page — data, metadata and OG.
|
|
1362
|
+
export { getGroupedListingForDetail, getGroupedListingWithItems, buildGroupedListingMetadata, renderGroupedListingOg, } from "./_internal/server/features/grouped/index";
|
|
1363
|
+
// Allow-list projection for group members — see § "Public Data Projections".
|
|
1364
|
+
export { toPublicGroupMember, toPublicGroupMembers, } from "./_internal/server/features/products/group-members";
|
|
1361
1365
|
export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
|
|
1362
1366
|
export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
|
|
1363
1367
|
export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
|