medusa-storefront-data 2.5.1 → 2.5.3
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/HOMEPAGE_CONFIG.md +83 -10
- package/package.json +160 -115
- package/src/server/cart.ts +1 -1
- package/src/server/dynamic-config.ts +132 -12
- package/src/server/help-faq-section-defaults.json +92 -0
- package/src/server/help-sections/help-faq.ts +25 -0
- package/src/server/help-sections/index.ts +8 -0
- package/src/server/homepage-config.types.ts +24 -0
- package/src/server/homepage-section-defaults.ts +3 -0
- package/src/server/normalize-homepage-config.ts +39 -0
- package/dist/segment-data/default-page-input.json +0 -191
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -31
- package/dist/src/cookies.d.ts +0 -23
- package/dist/src/cookies.d.ts.map +0 -1
- package/dist/src/cookies.js +0 -140
- package/dist/src/dynamic-config-schema/index.d.ts +0 -103
- package/dist/src/dynamic-config-schema/index.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/index.js +0 -172
- package/dist/src/dynamic-config-schema/sections/about-brand.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/about-brand.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/about-brand.js +0 -30
- package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/baptism-picks.js +0 -17
- package/dist/src/dynamic-config-schema/sections/baptism.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/baptism.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/baptism.js +0 -4
- package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/blog-posts.js +0 -31
- package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/brand-marquee.js +0 -9
- package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/brand-pillars.js +0 -29
- package/dist/src/dynamic-config-schema/sections/category-pills.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/category-pills.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/category-pills.js +0 -4
- package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/celebrity-trust.js +0 -4
- package/dist/src/dynamic-config-schema/sections/features.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/features.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/features.js +0 -12
- package/dist/src/dynamic-config-schema/sections/hero.d.ts +0 -6
- package/dist/src/dynamic-config-schema/sections/hero.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/hero.js +0 -9
- package/dist/src/dynamic-config-schema/sections/index.d.ts +0 -24
- package/dist/src/dynamic-config-schema/sections/index.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/index.js +0 -23
- package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/instagram-posts.js +0 -30
- package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/loved-by-moms.js +0 -4
- package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/luxe-favourites.js +0 -4
- package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.js +0 -12
- package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/new-arrivals.js +0 -12
- package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/promo-announcements.js +0 -16
- package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/promo-countdown.js +0 -16
- package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/shop-by-age.js +0 -4
- package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/shop-by-category.js +0 -4
- package/dist/src/dynamic-config-schema/sections/testimonials.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/testimonials.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/testimonials.js +0 -9
- package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/theme-dresses.js +0 -4
- package/dist/src/dynamic-config-schema/sections/video-stories.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/video-stories.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/video-stories.js +0 -24
- package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts +0 -5
- package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/sections/why-choose-us.js +0 -9
- package/dist/src/dynamic-config-schema/shared.d.ts +0 -35
- package/dist/src/dynamic-config-schema/shared.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/shared.js +0 -99
- package/dist/src/dynamic-config-schema/site-configs.d.ts +0 -11
- package/dist/src/dynamic-config-schema/site-configs.d.ts.map +0 -1
- package/dist/src/dynamic-config-schema/site-configs.js +0 -70
- package/dist/src/edge.d.ts +0 -3
- package/dist/src/edge.d.ts.map +0 -1
- package/dist/src/edge.js +0 -1
- package/dist/src/middleware.d.ts +0 -3
- package/dist/src/middleware.d.ts.map +0 -1
- package/dist/src/middleware.js +0 -1
- package/dist/src/server/brand-pillars-from-categories.d.ts +0 -8
- package/dist/src/server/brand-pillars-from-categories.d.ts.map +0 -1
- package/dist/src/server/brand-pillars-from-categories.js +0 -92
- package/dist/src/server/cart.d.ts +0 -96
- package/dist/src/server/cart.d.ts.map +0 -1
- package/dist/src/server/cart.js +0 -797
- package/dist/src/server/categories.d.ts +0 -4
- package/dist/src/server/categories.d.ts.map +0 -1
- package/dist/src/server/categories.js +0 -34
- package/dist/src/server/collections.d.ts +0 -8
- package/dist/src/server/collections.d.ts.map +0 -1
- package/dist/src/server/collections.js +0 -39
- package/dist/src/server/config-merge.d.ts +0 -3
- package/dist/src/server/config-merge.d.ts.map +0 -1
- package/dist/src/server/config-merge.js +0 -31
- package/dist/src/server/contact.d.ts +0 -34
- package/dist/src/server/contact.d.ts.map +0 -1
- package/dist/src/server/contact.js +0 -57
- package/dist/src/server/customer-registration.d.ts +0 -142
- package/dist/src/server/customer-registration.d.ts.map +0 -1
- package/dist/src/server/customer-registration.js +0 -295
- package/dist/src/server/customer.d.ts +0 -48
- package/dist/src/server/customer.d.ts.map +0 -1
- package/dist/src/server/customer.js +0 -413
- package/dist/src/server/dynamic-config-api.d.ts +0 -11
- package/dist/src/server/dynamic-config-api.d.ts.map +0 -1
- package/dist/src/server/dynamic-config-api.js +0 -46
- package/dist/src/server/dynamic-config.d.ts +0 -157
- package/dist/src/server/dynamic-config.d.ts.map +0 -1
- package/dist/src/server/dynamic-config.js +0 -573
- package/dist/src/server/fulfillment.d.ts +0 -5
- package/dist/src/server/fulfillment.d.ts.map +0 -1
- package/dist/src/server/fulfillment.js +0 -47
- package/dist/src/server/guest.d.ts +0 -81
- package/dist/src/server/guest.d.ts.map +0 -1
- package/dist/src/server/guest.js +0 -183
- package/dist/src/server/home-sections/about-brand.d.ts +0 -9
- package/dist/src/server/home-sections/about-brand.d.ts.map +0 -1
- package/dist/src/server/home-sections/about-brand.js +0 -9
- package/dist/src/server/home-sections/baptism-picks.d.ts +0 -10
- package/dist/src/server/home-sections/baptism-picks.d.ts.map +0 -1
- package/dist/src/server/home-sections/baptism-picks.js +0 -27
- package/dist/src/server/home-sections/baptism.d.ts +0 -13
- package/dist/src/server/home-sections/baptism.d.ts.map +0 -1
- package/dist/src/server/home-sections/baptism.js +0 -43
- package/dist/src/server/home-sections/blog-posts.d.ts +0 -9
- package/dist/src/server/home-sections/blog-posts.d.ts.map +0 -1
- package/dist/src/server/home-sections/blog-posts.js +0 -9
- package/dist/src/server/home-sections/brand-marquee.d.ts +0 -8
- package/dist/src/server/home-sections/brand-marquee.d.ts.map +0 -1
- package/dist/src/server/home-sections/brand-marquee.js +0 -7
- package/dist/src/server/home-sections/brand-pillars.d.ts +0 -9
- package/dist/src/server/home-sections/brand-pillars.d.ts.map +0 -1
- package/dist/src/server/home-sections/brand-pillars.js +0 -9
- package/dist/src/server/home-sections/category-pills.d.ts +0 -9
- package/dist/src/server/home-sections/category-pills.d.ts.map +0 -1
- package/dist/src/server/home-sections/category-pills.js +0 -19
- package/dist/src/server/home-sections/celebrity-trust.d.ts +0 -12
- package/dist/src/server/home-sections/celebrity-trust.d.ts.map +0 -1
- package/dist/src/server/home-sections/celebrity-trust.js +0 -27
- package/dist/src/server/home-sections/features.d.ts +0 -9
- package/dist/src/server/home-sections/features.d.ts.map +0 -1
- package/dist/src/server/home-sections/features.js +0 -9
- package/dist/src/server/home-sections/hero.d.ts +0 -9
- package/dist/src/server/home-sections/hero.d.ts.map +0 -1
- package/dist/src/server/home-sections/hero.js +0 -9
- package/dist/src/server/home-sections/instagram-posts.d.ts +0 -9
- package/dist/src/server/home-sections/instagram-posts.d.ts.map +0 -1
- package/dist/src/server/home-sections/instagram-posts.js +0 -9
- package/dist/src/server/home-sections/loved-by-moms.d.ts +0 -12
- package/dist/src/server/home-sections/loved-by-moms.d.ts.map +0 -1
- package/dist/src/server/home-sections/loved-by-moms.js +0 -20
- package/dist/src/server/home-sections/luxe-favourites.d.ts +0 -11
- package/dist/src/server/home-sections/luxe-favourites.d.ts.map +0 -1
- package/dist/src/server/home-sections/luxe-favourites.js +0 -19
- package/dist/src/server/home-sections/new-arrivals-classic.d.ts +0 -8
- package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +0 -1
- package/dist/src/server/home-sections/new-arrivals-classic.js +0 -10
- package/dist/src/server/home-sections/new-arrivals.d.ts +0 -12
- package/dist/src/server/home-sections/new-arrivals.d.ts.map +0 -1
- package/dist/src/server/home-sections/new-arrivals.js +0 -28
- package/dist/src/server/home-sections/promo-announcements.d.ts +0 -7
- package/dist/src/server/home-sections/promo-announcements.d.ts.map +0 -1
- package/dist/src/server/home-sections/promo-announcements.js +0 -7
- package/dist/src/server/home-sections/promo-countdown.d.ts +0 -6
- package/dist/src/server/home-sections/promo-countdown.d.ts.map +0 -1
- package/dist/src/server/home-sections/promo-countdown.js +0 -5
- package/dist/src/server/home-sections/shared.d.ts +0 -10
- package/dist/src/server/home-sections/shared.d.ts.map +0 -1
- package/dist/src/server/home-sections/shared.js +0 -29
- package/dist/src/server/home-sections/shop-by-age.d.ts +0 -9
- package/dist/src/server/home-sections/shop-by-age.d.ts.map +0 -1
- package/dist/src/server/home-sections/shop-by-age.js +0 -17
- package/dist/src/server/home-sections/shop-by-category.d.ts +0 -10
- package/dist/src/server/home-sections/shop-by-category.d.ts.map +0 -1
- package/dist/src/server/home-sections/shop-by-category.js +0 -17
- package/dist/src/server/home-sections/testimonials.d.ts +0 -9
- package/dist/src/server/home-sections/testimonials.d.ts.map +0 -1
- package/dist/src/server/home-sections/testimonials.js +0 -9
- package/dist/src/server/home-sections/theme-dresses.d.ts +0 -12
- package/dist/src/server/home-sections/theme-dresses.d.ts.map +0 -1
- package/dist/src/server/home-sections/theme-dresses.js +0 -27
- package/dist/src/server/home-sections/video-stories.d.ts +0 -9
- package/dist/src/server/home-sections/video-stories.d.ts.map +0 -1
- package/dist/src/server/home-sections/video-stories.js +0 -9
- package/dist/src/server/home-sections/why-choose-us.d.ts +0 -9
- package/dist/src/server/home-sections/why-choose-us.d.ts.map +0 -1
- package/dist/src/server/home-sections/why-choose-us.js +0 -9
- package/dist/src/server/home.d.ts +0 -51
- package/dist/src/server/home.d.ts.map +0 -1
- package/dist/src/server/home.js +0 -1
- package/dist/src/server/homepage-config.types.d.ts +0 -274
- package/dist/src/server/homepage-config.types.d.ts.map +0 -1
- package/dist/src/server/homepage-config.types.js +0 -33
- package/dist/src/server/homepage-section-defaults.d.ts +0 -188
- package/dist/src/server/homepage-section-defaults.d.ts.map +0 -1
- package/dist/src/server/homepage-section-defaults.js +0 -188
- package/dist/src/server/index.d.ts +0 -25
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -24
- package/dist/src/server/locale-actions.d.ts +0 -14
- package/dist/src/server/locale-actions.d.ts.map +0 -1
- package/dist/src/server/locale-actions.js +0 -58
- package/dist/src/server/locales.d.ts +0 -8
- package/dist/src/server/locales.d.ts.map +0 -1
- package/dist/src/server/locales.js +0 -12
- package/dist/src/server/normalize-homepage-config.d.ts +0 -7
- package/dist/src/server/normalize-homepage-config.d.ts.map +0 -1
- package/dist/src/server/normalize-homepage-config.js +0 -213
- package/dist/src/server/notifications.d.ts +0 -2
- package/dist/src/server/notifications.d.ts.map +0 -1
- package/dist/src/server/notifications.js +0 -20
- package/dist/src/server/onboarding.d.ts +0 -2
- package/dist/src/server/onboarding.d.ts.map +0 -1
- package/dist/src/server/onboarding.js +0 -8
- package/dist/src/server/orders.d.ts +0 -63
- package/dist/src/server/orders.d.ts.map +0 -1
- package/dist/src/server/orders.js +0 -230
- package/dist/src/server/page-input.d.ts +0 -19
- package/dist/src/server/page-input.d.ts.map +0 -1
- package/dist/src/server/page-input.js +0 -42
- package/dist/src/server/payment-details.d.ts +0 -5
- package/dist/src/server/payment-details.d.ts.map +0 -1
- package/dist/src/server/payment-details.js +0 -28
- package/dist/src/server/payment.d.ts +0 -3
- package/dist/src/server/payment.d.ts.map +0 -1
- package/dist/src/server/payment.js +0 -13
- package/dist/src/server/pincode.d.ts +0 -7
- package/dist/src/server/pincode.d.ts.map +0 -1
- package/dist/src/server/pincode.js +0 -30
- package/dist/src/server/products.d.ts +0 -54
- package/dist/src/server/products.d.ts.map +0 -1
- package/dist/src/server/products.js +0 -154
- package/dist/src/server/regions.d.ts +0 -5
- package/dist/src/server/regions.d.ts.map +0 -1
- package/dist/src/server/regions.js +0 -57
- package/dist/src/server/resolve-home-segment-data.d.ts +0 -25
- package/dist/src/server/resolve-home-segment-data.d.ts.map +0 -1
- package/dist/src/server/resolve-home-segment-data.js +0 -20
- package/dist/src/server/returns.d.ts +0 -29
- package/dist/src/server/returns.d.ts.map +0 -1
- package/dist/src/server/returns.js +0 -132
- package/dist/src/server/shoppable-looks.d.ts +0 -17
- package/dist/src/server/shoppable-looks.d.ts.map +0 -1
- package/dist/src/server/shoppable-looks.js +0 -136
- package/dist/src/server/swaps.d.ts +0 -15
- package/dist/src/server/swaps.d.ts.map +0 -1
- package/dist/src/server/swaps.js +0 -89
- package/dist/src/server/variants.d.ts +0 -3
- package/dist/src/server/variants.d.ts.map +0 -1
- package/dist/src/server/variants.js +0 -15
- package/dist/src/server/wishlist.d.ts +0 -11
- package/dist/src/server/wishlist.d.ts.map +0 -1
- package/dist/src/server/wishlist.js +0 -49
- package/dist/src/util/get-locale-header.d.ts +0 -4
- package/dist/src/util/get-locale-header.d.ts.map +0 -1
- package/dist/src/util/get-locale-header.js +0 -7
- package/dist/src/util/medusa-error.d.ts +0 -2
- package/dist/src/util/medusa-error.d.ts.map +0 -1
- package/dist/src/util/medusa-error.js +0 -18
- package/dist/src/util/revalidate-cart.d.ts +0 -2
- package/dist/src/util/revalidate-cart.d.ts.map +0 -1
- package/dist/src/util/revalidate-cart.js +0 -8
- package/dist/src/util/sort-products.d.ts +0 -3
- package/dist/src/util/sort-products.d.ts.map +0 -1
- package/dist/src/util/sort-products.js +0 -1
- package/dist/src/util/store-client.d.ts +0 -11
- package/dist/src/util/store-client.d.ts.map +0 -1
- package/dist/src/util/store-client.js +0 -75
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
import { getRegion, retrieveRegion } from "./regions";
|
|
3
|
-
import Color from "color";
|
|
4
|
-
import { medusaProductByHandle, medusaProductHelperFilters, medusaProductList, } from "medusa-services/products";
|
|
5
|
-
import { getStoreClientOptions } from "../util/store-client";
|
|
6
|
-
export const listProducts = async ({ pageParam = 1, queryParams, countryCode, regionId, }) => {
|
|
7
|
-
if (!countryCode && !regionId) {
|
|
8
|
-
throw new Error("Country code or region ID is required");
|
|
9
|
-
}
|
|
10
|
-
const limit = queryParams?.limit || 12;
|
|
11
|
-
let region;
|
|
12
|
-
if (countryCode) {
|
|
13
|
-
region = await getRegion(countryCode);
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
region = await retrieveRegion(regionId);
|
|
17
|
-
}
|
|
18
|
-
if (!region) {
|
|
19
|
-
return {
|
|
20
|
-
response: { products: [], count: 0 },
|
|
21
|
-
nextPage: null,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const options = await getStoreClientOptions();
|
|
25
|
-
const { products, count, nextPage } = await medusaProductList(options, {
|
|
26
|
-
pageParam,
|
|
27
|
-
limit,
|
|
28
|
-
regionId: region.id,
|
|
29
|
-
queryParams: queryParams,
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
response: {
|
|
33
|
-
products: products,
|
|
34
|
-
count,
|
|
35
|
-
},
|
|
36
|
-
nextPage,
|
|
37
|
-
queryParams,
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
export const listProductsWithSort = async ({ page = 1, queryParams, sortBy = "created_at_desc", countryCode, }) => {
|
|
41
|
-
const limit = queryParams?.limit || 12;
|
|
42
|
-
const { response: { products, count }, nextPage, } = await listProducts({
|
|
43
|
-
pageParam: page,
|
|
44
|
-
queryParams: {
|
|
45
|
-
...queryParams,
|
|
46
|
-
limit,
|
|
47
|
-
},
|
|
48
|
-
countryCode,
|
|
49
|
-
});
|
|
50
|
-
return {
|
|
51
|
-
response: {
|
|
52
|
-
products,
|
|
53
|
-
count,
|
|
54
|
-
},
|
|
55
|
-
nextPage,
|
|
56
|
-
queryParams,
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
export async function getProductsByTag({ tagValue, limit = 12, countryCode, }) {
|
|
60
|
-
try {
|
|
61
|
-
const result = await listProducts({
|
|
62
|
-
queryParams: { tags: [tagValue], limit },
|
|
63
|
-
countryCode,
|
|
64
|
-
});
|
|
65
|
-
return result.response.products;
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
console.error("Error fetching products by tag:", error);
|
|
69
|
-
return [];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export const getDynamicFilters = async (_countryCode) => {
|
|
73
|
-
try {
|
|
74
|
-
const options = await getStoreClientOptions();
|
|
75
|
-
if (!options.publishableApiKey) {
|
|
76
|
-
return { genders: [], productTypes: [], materials: [], colors: [] };
|
|
77
|
-
}
|
|
78
|
-
const data = await medusaProductHelperFilters(options);
|
|
79
|
-
const formatLabel = (str) => {
|
|
80
|
-
return str
|
|
81
|
-
.split(/[_-]/)
|
|
82
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
83
|
-
.join(" ");
|
|
84
|
-
};
|
|
85
|
-
const metadata = data.metadata || {};
|
|
86
|
-
const variantOptions = data.variant_options || [];
|
|
87
|
-
const colorSet = new Set();
|
|
88
|
-
variantOptions.forEach((o) => {
|
|
89
|
-
if (o.option_title.toLowerCase() === "color" || o.option_title.toLowerCase() === "colour") {
|
|
90
|
-
o.values?.forEach((v) => {
|
|
91
|
-
if (v)
|
|
92
|
-
colorSet.add(v.trim().toLowerCase());
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
if (metadata.color) {
|
|
97
|
-
metadata.color.forEach((c) => {
|
|
98
|
-
if (c) {
|
|
99
|
-
const parts = c
|
|
100
|
-
.split(/[,/\n\r]+/)
|
|
101
|
-
.map((s) => s.trim())
|
|
102
|
-
.filter(Boolean);
|
|
103
|
-
parts.forEach((p) => colorSet.add(p.toLowerCase()));
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
genders: (metadata.gender || []).sort().map((g) => ({
|
|
109
|
-
value: g,
|
|
110
|
-
label: formatLabel(g),
|
|
111
|
-
})),
|
|
112
|
-
productTypes: (data.product_types || [])
|
|
113
|
-
.sort((a, b) => a.label.localeCompare(b.label))
|
|
114
|
-
.map((t) => ({
|
|
115
|
-
value: t.label,
|
|
116
|
-
label: formatLabel(t.label),
|
|
117
|
-
})),
|
|
118
|
-
materials: (metadata.material || []).sort().map((m) => ({
|
|
119
|
-
value: m,
|
|
120
|
-
label: formatLabel(m),
|
|
121
|
-
})),
|
|
122
|
-
colors: Array.from(colorSet)
|
|
123
|
-
.sort()
|
|
124
|
-
.map((c) => {
|
|
125
|
-
let hex = "";
|
|
126
|
-
try {
|
|
127
|
-
hex = Color(c.replace(/\s+/g, "").toLowerCase()).hex();
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
try {
|
|
131
|
-
hex = Color(c.toLowerCase()).hex();
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
// no hex
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return {
|
|
138
|
-
value: c,
|
|
139
|
-
label: formatLabel(c),
|
|
140
|
-
hex,
|
|
141
|
-
};
|
|
142
|
-
}),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
console.error("Error fetching dynamic filters:", error);
|
|
147
|
-
return { genders: [], productTypes: [], materials: [], colors: [] };
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
export async function getProductByHandle(handle) {
|
|
151
|
-
const options = await getStoreClientOptions();
|
|
152
|
-
const product = await medusaProductByHandle(handle, options);
|
|
153
|
-
return product;
|
|
154
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { HttpTypes } from "@medusajs/types";
|
|
2
|
-
export declare const listRegions: () => Promise<HttpTypes.StoreRegion[]>;
|
|
3
|
-
export declare const retrieveRegion: (id: string) => Promise<HttpTypes.StoreRegion>;
|
|
4
|
-
export declare const getRegion: (countryCode: string) => Promise<HttpTypes.StoreRegion | null | undefined>;
|
|
5
|
-
//# sourceMappingURL=regions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../../src/server/regions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAK3C,eAAO,MAAM,WAAW,wCAavB,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,IAAI,MAAM,mCAa9C,CAAA;AAID,eAAO,MAAM,SAAS,GAAU,aAAa,MAAM,sDA2BlD,CAAA"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
import { sdk } from "../config";
|
|
3
|
-
import medusaError from "../util/medusa-error";
|
|
4
|
-
import { getCacheOptions } from "../cookies";
|
|
5
|
-
import { medusaRegionList } from "medusa-services/regions";
|
|
6
|
-
import { getStoreClientOptions } from "../util/store-client";
|
|
7
|
-
export const listRegions = async () => {
|
|
8
|
-
const next = {
|
|
9
|
-
...(await getCacheOptions("regions")),
|
|
10
|
-
};
|
|
11
|
-
return sdk.client
|
|
12
|
-
.fetch(`/store/regions`, {
|
|
13
|
-
method: "GET",
|
|
14
|
-
next,
|
|
15
|
-
cache: "force-cache",
|
|
16
|
-
})
|
|
17
|
-
.then(({ regions }) => regions)
|
|
18
|
-
.catch(medusaError);
|
|
19
|
-
};
|
|
20
|
-
export const retrieveRegion = async (id) => {
|
|
21
|
-
const next = {
|
|
22
|
-
...(await getCacheOptions(["regions", id].join("-"))),
|
|
23
|
-
};
|
|
24
|
-
return sdk.client
|
|
25
|
-
.fetch(`/store/regions/${id}`, {
|
|
26
|
-
method: "GET",
|
|
27
|
-
next,
|
|
28
|
-
cache: "force-cache",
|
|
29
|
-
})
|
|
30
|
-
.then(({ region }) => region)
|
|
31
|
-
.catch(medusaError);
|
|
32
|
-
};
|
|
33
|
-
const regionMap = new Map();
|
|
34
|
-
export const getRegion = async (countryCode) => {
|
|
35
|
-
try {
|
|
36
|
-
if (regionMap.has(countryCode)) {
|
|
37
|
-
return regionMap.get(countryCode);
|
|
38
|
-
}
|
|
39
|
-
const options = await getStoreClientOptions();
|
|
40
|
-
const { regions } = await medusaRegionList(options);
|
|
41
|
-
if (!regions?.length) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
regions.forEach((region) => {
|
|
45
|
-
region.countries?.forEach((c) => {
|
|
46
|
-
regionMap.set(c?.iso_2 ?? "", region);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
const region = countryCode
|
|
50
|
-
? regionMap.get(countryCode)
|
|
51
|
-
: regionMap.get("us");
|
|
52
|
-
return region ?? null;
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import "server-only";
|
|
2
|
-
import type { HomepageConfig } from "./homepage-config.types";
|
|
3
|
-
import { getFeaturesFromPageInput, getPromoCountdownFromPageInput, getTestimonialsFromPageInput, getVideoStoriesFromPageInput, type AboutBrandConfig, type BlogPostConfig, type BrandPillarConfig, type HomepageBanner, type HomeSectionsCopy, type InstagramPostsData, type TrustFeaturesConfig } from "./dynamic-config";
|
|
4
|
-
/** Config-driven homepage fields (no Medusa catalog APIs). */
|
|
5
|
-
export type HomeSegmentConfigData = {
|
|
6
|
-
homeBanners: HomepageBanner[] | null;
|
|
7
|
-
appBanners: HomepageBanner[] | null;
|
|
8
|
-
whyChooseUsFeatures: ReturnType<typeof getFeaturesFromPageInput>;
|
|
9
|
-
testimonials: ReturnType<typeof getTestimonialsFromPageInput>;
|
|
10
|
-
videoStories: ReturnType<typeof getVideoStoriesFromPageInput>;
|
|
11
|
-
announcementMessages: string[];
|
|
12
|
-
promoCountdown: ReturnType<typeof getPromoCountdownFromPageInput>;
|
|
13
|
-
aboutBrand: AboutBrandConfig;
|
|
14
|
-
brandPillars: {
|
|
15
|
-
sectionTitle: string;
|
|
16
|
-
pillars: BrandPillarConfig[];
|
|
17
|
-
};
|
|
18
|
-
blogPosts: BlogPostConfig[];
|
|
19
|
-
instagramPosts: InstagramPostsData;
|
|
20
|
-
sectionsCopy: HomeSectionsCopy;
|
|
21
|
-
trustFeatures: TrustFeaturesConfig;
|
|
22
|
-
};
|
|
23
|
-
/** Resolve all segment JSON from `pageInput` (package defaults when omitted). */
|
|
24
|
-
export declare function resolveHomeSegmentConfigData(pageInput?: HomepageConfig | null): HomeSegmentConfigData;
|
|
25
|
-
//# sourceMappingURL=resolve-home-segment-data.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-home-segment-data.d.ts","sourceRoot":"","sources":["../../../src/server/resolve-home-segment-data.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAML,wBAAwB,EAIxB,8BAA8B,EAC9B,4BAA4B,EAE5B,4BAA4B,EAC5B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AAEzB,8DAA8D;AAC9D,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACnC,mBAAmB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;IAChE,YAAY,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAA;IAC7D,YAAY,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAA;IAC7D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,cAAc,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAA;IACjE,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAA;IACpE,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,cAAc,EAAE,kBAAkB,CAAA;IAClC,YAAY,EAAE,gBAAgB,CAAA;IAC9B,aAAa,EAAE,mBAAmB,CAAA;CACnC,CAAA;AAED,iFAAiF;AACjF,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAChC,qBAAqB,CAgBvB"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import "server-only";
|
|
2
|
-
import { getAboutBrandFromPageInput, getAnnouncementMessagesFromPageInput, getAppBannersFromPageInput, getBlogPostsFromPageInput, getBrandPillarsFromPageInput, getFeaturesFromPageInput, getHomeBannersFromPageInput, getHomeSectionsCopyFromPageInput, getInstagramPostsFromPageInput, getPromoCountdownFromPageInput, getTestimonialsFromPageInput, getTrustFeaturesFromPageInput, getVideoStoriesFromPageInput, } from "./dynamic-config";
|
|
3
|
-
/** Resolve all segment JSON from `pageInput` (package defaults when omitted). */
|
|
4
|
-
export function resolveHomeSegmentConfigData(pageInput) {
|
|
5
|
-
return {
|
|
6
|
-
homeBanners: getHomeBannersFromPageInput(pageInput),
|
|
7
|
-
appBanners: getAppBannersFromPageInput(pageInput),
|
|
8
|
-
whyChooseUsFeatures: getFeaturesFromPageInput(pageInput),
|
|
9
|
-
testimonials: getTestimonialsFromPageInput(pageInput),
|
|
10
|
-
videoStories: getVideoStoriesFromPageInput(pageInput),
|
|
11
|
-
announcementMessages: getAnnouncementMessagesFromPageInput(pageInput),
|
|
12
|
-
promoCountdown: getPromoCountdownFromPageInput(pageInput),
|
|
13
|
-
aboutBrand: getAboutBrandFromPageInput(pageInput),
|
|
14
|
-
brandPillars: getBrandPillarsFromPageInput(pageInput),
|
|
15
|
-
blogPosts: getBlogPostsFromPageInput(pageInput),
|
|
16
|
-
instagramPosts: getInstagramPostsFromPageInput(pageInput),
|
|
17
|
-
sectionsCopy: getHomeSectionsCopyFromPageInput(pageInput),
|
|
18
|
-
trustFeatures: getTrustFeaturesFromPageInput(pageInput),
|
|
19
|
-
};
|
|
20
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { HttpTypes } from "@medusajs/types";
|
|
2
|
-
export declare const listReturnReasons: () => Promise<import("medusa-services/returns").StoreReturnReason[]>;
|
|
3
|
-
export declare const listReturnShippingOptions: (cartId: string, regionId?: string, productIds?: string[]) => Promise<HttpTypes.StoreShippingOption[]>;
|
|
4
|
-
export declare const createReturnRequest: (state: {
|
|
5
|
-
success: boolean;
|
|
6
|
-
error: string | null;
|
|
7
|
-
return: HttpTypes.StoreReturn | null;
|
|
8
|
-
}, formData: FormData) => Promise<{
|
|
9
|
-
success: boolean;
|
|
10
|
-
error: string | null;
|
|
11
|
-
return: HttpTypes.StoreReturn | null;
|
|
12
|
-
}>;
|
|
13
|
-
/**
|
|
14
|
-
* Link a payment method to a return (for Refund Destination)
|
|
15
|
-
*/
|
|
16
|
-
export declare const updateReturnPayment: (returnId: string, paymentId: string) => Promise<{
|
|
17
|
-
success: boolean;
|
|
18
|
-
data: unknown;
|
|
19
|
-
error?: undefined;
|
|
20
|
-
} | {
|
|
21
|
-
success: boolean;
|
|
22
|
-
error: string;
|
|
23
|
-
data?: undefined;
|
|
24
|
-
}>;
|
|
25
|
-
/**
|
|
26
|
-
* List returns for an order or customer
|
|
27
|
-
*/
|
|
28
|
-
export declare const listReturns: (orderId?: string) => Promise<import("medusa-services/returns").StoreReturnListResponse>;
|
|
29
|
-
//# sourceMappingURL=returns.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"returns.d.ts","sourceRoot":"","sources":["../../../src/server/returns.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAK3C,eAAO,MAAM,iBAAiB,sEAG7B,CAAA;AAED,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,aAAa,MAAM,EAAE,KACpB,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAOzC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,OAAO;IACL,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAA;CACrC,EACD,UAAU,QAAQ,KACjB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAA;CACrC,CAmFA,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,UAAU,MAAM,EAAE,WAAW,MAAM;;;;;;;;EAa5E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,uEA4BjD,CAAA"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
import { medusaReturnCreate, medusaReturnCreateGuest, medusaReturnList, medusaReturnListGuest, medusaReturnReasonList, medusaReturnShippingOptionsResolve, medusaReturnUpdatePayment, } from "medusa-services/returns";
|
|
3
|
-
import { cookies } from "next/headers";
|
|
4
|
-
import { revalidateTag } from "next/cache";
|
|
5
|
-
import { getStoreClientOptions, getStoreClientOptionsWithToken } from "../util/store-client";
|
|
6
|
-
export const listReturnReasons = async () => {
|
|
7
|
-
const options = await getStoreClientOptions();
|
|
8
|
-
return medusaReturnReasonList(options);
|
|
9
|
-
};
|
|
10
|
-
export const listReturnShippingOptions = async (cartId, regionId, productIds) => {
|
|
11
|
-
const options = await getStoreClientOptions();
|
|
12
|
-
const shippingOptions = await medusaReturnShippingOptionsResolve(options, {
|
|
13
|
-
cartId,
|
|
14
|
-
regionId,
|
|
15
|
-
});
|
|
16
|
-
return shippingOptions;
|
|
17
|
-
};
|
|
18
|
-
export const createReturnRequest = async (state, formData) => {
|
|
19
|
-
const orderId = formData.get("order_id");
|
|
20
|
-
const returnShippingOptionId = formData.get("return_shipping_option_id");
|
|
21
|
-
const itemsJson = formData.get("items");
|
|
22
|
-
const note = formData.get("note");
|
|
23
|
-
const locationId = formData.get("location_id");
|
|
24
|
-
if (!orderId)
|
|
25
|
-
return { success: false, error: "Order ID is required", return: null };
|
|
26
|
-
if (!itemsJson)
|
|
27
|
-
return { success: false, error: "Items are required", return: null };
|
|
28
|
-
let items = [];
|
|
29
|
-
try {
|
|
30
|
-
items = JSON.parse(itemsJson);
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return { success: false, error: "Invalid items data", return: null };
|
|
34
|
-
}
|
|
35
|
-
if (items.length === 0) {
|
|
36
|
-
return { success: false, error: "At least one item must be selected", return: null };
|
|
37
|
-
}
|
|
38
|
-
const options = await getStoreClientOptions();
|
|
39
|
-
try {
|
|
40
|
-
const payload = {
|
|
41
|
-
order_id: orderId,
|
|
42
|
-
items: items.map((item) => ({
|
|
43
|
-
id: item.id,
|
|
44
|
-
quantity: item.quantity,
|
|
45
|
-
reason_id: item.return_reason_id || undefined,
|
|
46
|
-
note: note && note.trim().length > 0 ? note : undefined,
|
|
47
|
-
})),
|
|
48
|
-
...(returnShippingOptionId
|
|
49
|
-
? {
|
|
50
|
-
return_shipping: {
|
|
51
|
-
option_id: returnShippingOptionId,
|
|
52
|
-
location_id: locationId || items[0]?.location_id || "default_location",
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
: {}),
|
|
56
|
-
note: note && note.trim().length > 0 ? note : "Return request",
|
|
57
|
-
};
|
|
58
|
-
const cookieStore = await cookies();
|
|
59
|
-
const guestToken = cookieStore.get("_medusa_guest_jwt")?.value ||
|
|
60
|
-
cookieStore.get("_medusa_guest_token")?.value ||
|
|
61
|
-
cookieStore.get("guest_id")?.value;
|
|
62
|
-
const token = cookieStore.get("_medusa_jwt")?.value;
|
|
63
|
-
let returnData;
|
|
64
|
-
if (guestToken && !token) {
|
|
65
|
-
try {
|
|
66
|
-
const guestOptions = await getStoreClientOptionsWithToken(guestToken);
|
|
67
|
-
returnData = (await medusaReturnCreateGuest(orderId, payload, guestOptions));
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
returnData = (await medusaReturnCreate(payload, options));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
returnData = (await medusaReturnCreate(payload, options));
|
|
75
|
-
}
|
|
76
|
-
revalidateTag("orders");
|
|
77
|
-
return { success: true, error: null, return: returnData };
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
return {
|
|
81
|
-
success: false,
|
|
82
|
-
error: error instanceof Error ? error.message : "Failed to create return request",
|
|
83
|
-
return: null,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
/**
|
|
88
|
-
* Link a payment method to a return (for Refund Destination)
|
|
89
|
-
*/
|
|
90
|
-
export const updateReturnPayment = async (returnId, paymentId) => {
|
|
91
|
-
const options = await getStoreClientOptions();
|
|
92
|
-
try {
|
|
93
|
-
const data = await medusaReturnUpdatePayment(returnId, paymentId, options);
|
|
94
|
-
return { success: true, data };
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error("Update return payment fail:", error);
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
error: error instanceof Error ? error.message : String(error),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* List returns for an order or customer
|
|
106
|
-
*/
|
|
107
|
-
export const listReturns = async (orderId) => {
|
|
108
|
-
const options = await getStoreClientOptions();
|
|
109
|
-
if (options.authorization) {
|
|
110
|
-
try {
|
|
111
|
-
return await medusaReturnList(options, orderId ? { order_id: orderId } : undefined);
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return { returns: [], count: 0 };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (orderId) {
|
|
118
|
-
const cookieStore = await cookies();
|
|
119
|
-
const guestToken = cookieStore.get("_medusa_guest_jwt")?.value ||
|
|
120
|
-
cookieStore.get("_medusa_guest_token")?.value;
|
|
121
|
-
if (guestToken) {
|
|
122
|
-
try {
|
|
123
|
-
const guestOptions = await getStoreClientOptionsWithToken(guestToken);
|
|
124
|
-
return await medusaReturnListGuest(orderId, guestOptions);
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
return { returns: [], count: 0 };
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return { returns: [], count: 0 };
|
|
132
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import "server-only";
|
|
2
|
-
import { HttpTypes } from "@medusajs/types";
|
|
3
|
-
import type { HomepageConfig } from "./homepage-config.types";
|
|
4
|
-
export type ShoppableLookConfig = {
|
|
5
|
-
image: string;
|
|
6
|
-
productIds: string[];
|
|
7
|
-
productHandles: string[];
|
|
8
|
-
};
|
|
9
|
-
export type ShoppableLook = {
|
|
10
|
-
id: string;
|
|
11
|
-
image: string;
|
|
12
|
-
products: HttpTypes.StoreProduct[];
|
|
13
|
-
};
|
|
14
|
-
export declare function readShoppableLooksBlock(block: unknown): ShoppableLookConfig[];
|
|
15
|
-
export declare function looksFromProducts(products: HttpTypes.StoreProduct[]): ShoppableLook[];
|
|
16
|
-
export declare function getBaptismPicksLooks(countryCode: string, fallbackProducts: HttpTypes.StoreProduct[], pageInput?: HomepageConfig | null): Promise<ShoppableLook[]>;
|
|
17
|
-
//# sourceMappingURL=shoppable-looks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shoppable-looks.d.ts","sourceRoot":"","sources":["../../../src/server/shoppable-looks.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;CACnC,CAAA;AAoCD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAkB7E;AAoDD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,GACjC,aAAa,EAAE,CAgBjB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,SAAS,CAAC,YAAY,EAAE,EAC1C,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CA4B1B"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import "server-only";
|
|
2
|
-
import { sdk } from "../config";
|
|
3
|
-
import { getRegion } from "./regions";
|
|
4
|
-
import { DEFAULT_HOMEPAGE_SECTIONS } from "./homepage-section-defaults";
|
|
5
|
-
import { getMergedSectionBlock } from "./dynamic-config";
|
|
6
|
-
function parseLookRow(row) {
|
|
7
|
-
const nested = (row.look ?? row["shop-look"] ?? row);
|
|
8
|
-
const image = String(nested.image ?? nested["look-image"] ?? nested.thumbnail ?? "").trim();
|
|
9
|
-
if (!image)
|
|
10
|
-
return null;
|
|
11
|
-
const idsRaw = nested["product-ids"] ?? nested.productIds ?? nested.products;
|
|
12
|
-
const handlesRaw = nested["product-handles"] ?? nested.productHandles ?? nested.handles;
|
|
13
|
-
const productIds = [];
|
|
14
|
-
const productHandles = [];
|
|
15
|
-
if (Array.isArray(idsRaw)) {
|
|
16
|
-
idsRaw.forEach((entry) => {
|
|
17
|
-
if (typeof entry === "string" && entry.trim())
|
|
18
|
-
productIds.push(entry.trim());
|
|
19
|
-
if (entry && typeof entry === "object") {
|
|
20
|
-
const id = entry.id ?? entry["product-id"];
|
|
21
|
-
if (typeof id === "string" && id.trim())
|
|
22
|
-
productIds.push(id.trim());
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
if (Array.isArray(handlesRaw)) {
|
|
27
|
-
handlesRaw.forEach((entry) => {
|
|
28
|
-
if (typeof entry === "string" && entry.trim())
|
|
29
|
-
productHandles.push(entry.trim());
|
|
30
|
-
if (entry && typeof entry === "object") {
|
|
31
|
-
const handle = entry.handle;
|
|
32
|
-
if (typeof handle === "string" && handle.trim())
|
|
33
|
-
productHandles.push(handle.trim());
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return { image, productIds, productHandles };
|
|
38
|
-
}
|
|
39
|
-
export function readShoppableLooksBlock(block) {
|
|
40
|
-
if (!block || typeof block !== "object")
|
|
41
|
-
return [];
|
|
42
|
-
const row = block;
|
|
43
|
-
const raw = row.looks ??
|
|
44
|
-
row["shop-looks"] ??
|
|
45
|
-
row["looks-array"] ??
|
|
46
|
-
row["baptism-picks"] ??
|
|
47
|
-
[];
|
|
48
|
-
if (!Array.isArray(raw))
|
|
49
|
-
return [];
|
|
50
|
-
return raw
|
|
51
|
-
.map((item) => {
|
|
52
|
-
if (!item || typeof item !== "object")
|
|
53
|
-
return null;
|
|
54
|
-
return parseLookRow(item);
|
|
55
|
-
})
|
|
56
|
-
.filter((x) => x !== null);
|
|
57
|
-
}
|
|
58
|
-
async function fetchProductsForLook(countryCode, productIds, productHandles) {
|
|
59
|
-
const region = await getRegion(countryCode);
|
|
60
|
-
if (!region?.id)
|
|
61
|
-
return [];
|
|
62
|
-
const fields = "*thumbnail,*images,*variants,*variants.calculated_price,*options,*options.values";
|
|
63
|
-
const byId = new Map();
|
|
64
|
-
if (productIds.length > 0) {
|
|
65
|
-
const { products } = await sdk.store.product.list({ id: productIds, region_id: region.id, fields, limit: productIds.length }, {});
|
|
66
|
-
products.forEach((p) => {
|
|
67
|
-
if (p.id)
|
|
68
|
-
byId.set(p.id, p);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
for (const handle of productHandles) {
|
|
72
|
-
if (byId.has(handle))
|
|
73
|
-
continue;
|
|
74
|
-
try {
|
|
75
|
-
const { products } = await sdk.store.product.list({ handle, region_id: region.id, fields, limit: 1 }, {});
|
|
76
|
-
const product = products?.[0];
|
|
77
|
-
if (product?.id)
|
|
78
|
-
byId.set(product.id, product);
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
/* skip */
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const ordered = [];
|
|
85
|
-
for (const id of productIds) {
|
|
86
|
-
const p = byId.get(id);
|
|
87
|
-
if (p)
|
|
88
|
-
ordered.push(p);
|
|
89
|
-
}
|
|
90
|
-
for (const handle of productHandles) {
|
|
91
|
-
const p = Array.from(byId.values()).find((x) => x.handle === handle);
|
|
92
|
-
if (p && !ordered.some((o) => o.id === p.id))
|
|
93
|
-
ordered.push(p);
|
|
94
|
-
}
|
|
95
|
-
return ordered;
|
|
96
|
-
}
|
|
97
|
-
export function looksFromProducts(products) {
|
|
98
|
-
return products
|
|
99
|
-
.map((product, index) => {
|
|
100
|
-
const image = product.metadata?.look_image ??
|
|
101
|
-
product.thumbnail ??
|
|
102
|
-
product.images?.[0]?.url ??
|
|
103
|
-
"";
|
|
104
|
-
if (!image)
|
|
105
|
-
return null;
|
|
106
|
-
return {
|
|
107
|
-
id: product.id ?? `look-${index}`,
|
|
108
|
-
image,
|
|
109
|
-
products: [product],
|
|
110
|
-
};
|
|
111
|
-
})
|
|
112
|
-
.filter((x) => x !== null);
|
|
113
|
-
}
|
|
114
|
-
export async function getBaptismPicksLooks(countryCode, fallbackProducts, pageInput) {
|
|
115
|
-
const block = getMergedSectionBlock("baptismPicks", pageInput);
|
|
116
|
-
let configs = readShoppableLooksBlock(block);
|
|
117
|
-
if (configs.length === 0) {
|
|
118
|
-
configs = readShoppableLooksBlock(DEFAULT_HOMEPAGE_SECTIONS.baptismPicks);
|
|
119
|
-
}
|
|
120
|
-
if (configs.length === 0) {
|
|
121
|
-
return looksFromProducts(fallbackProducts);
|
|
122
|
-
}
|
|
123
|
-
const looks = [];
|
|
124
|
-
for (let i = 0; i < configs.length; i++) {
|
|
125
|
-
const config = configs[i];
|
|
126
|
-
const products = await fetchProductsForLook(countryCode, config.productIds, config.productHandles);
|
|
127
|
-
if (products.length === 0)
|
|
128
|
-
continue;
|
|
129
|
-
looks.push({
|
|
130
|
-
id: `look-${i}`,
|
|
131
|
-
image: config.image,
|
|
132
|
-
products,
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return looks.length > 0 ? looks : looksFromProducts(fallbackProducts);
|
|
136
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export type SwapActionState = {
|
|
2
|
-
success: boolean;
|
|
3
|
-
error: string | null;
|
|
4
|
-
swap: Record<string, unknown> | null;
|
|
5
|
-
};
|
|
6
|
-
/**
|
|
7
|
-
* Create an exchange (swap) request.
|
|
8
|
-
* Supports both authenticated customers and guest users.
|
|
9
|
-
*/
|
|
10
|
-
export declare const createSwapRequest: (_prevState: SwapActionState, formData: FormData) => Promise<SwapActionState>;
|
|
11
|
-
/**
|
|
12
|
-
* List swaps for an order or customer
|
|
13
|
-
*/
|
|
14
|
-
export declare const listSwaps: (orderId?: string) => Promise<import("medusa-services/swaps").StoreSwapListResponse>;
|
|
15
|
-
//# sourceMappingURL=swaps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swaps.d.ts","sourceRoot":"","sources":["../../../src/server/swaps.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,eAAe,EAC3B,UAAU,QAAQ,KACjB,OAAO,CAAC,eAAe,CAsEzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAU,UAAU,MAAM,mEAoB/C,CAAA"}
|