medusa-storefront-data 2.5.8 → 2.5.10
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/segment-data/default-page-input.json +191 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +31 -0
- package/dist/src/cookies.d.ts +23 -0
- package/dist/src/cookies.d.ts.map +1 -0
- package/dist/src/cookies.js +140 -0
- package/dist/src/edge.d.ts +3 -0
- package/dist/src/edge.d.ts.map +1 -0
- package/dist/src/edge.js +1 -0
- package/dist/src/middleware.d.ts +3 -0
- package/dist/src/middleware.d.ts.map +1 -0
- package/dist/src/middleware.js +1 -0
- package/dist/src/server/brand-pillars-from-categories.d.ts +8 -0
- package/dist/src/server/brand-pillars-from-categories.d.ts.map +1 -0
- package/dist/src/server/brand-pillars-from-categories.js +92 -0
- package/dist/src/server/cart.d.ts +96 -0
- package/dist/src/server/cart.d.ts.map +1 -0
- package/dist/src/server/cart.js +797 -0
- package/dist/src/server/categories.d.ts +4 -0
- package/dist/src/server/categories.d.ts.map +1 -0
- package/dist/src/server/categories.js +34 -0
- package/dist/src/server/collections.d.ts +8 -0
- package/dist/src/server/collections.d.ts.map +1 -0
- package/dist/src/server/collections.js +39 -0
- package/dist/src/server/config-merge.d.ts +3 -0
- package/dist/src/server/config-merge.d.ts.map +1 -0
- package/dist/src/server/config-merge.js +31 -0
- package/dist/src/server/contact.d.ts +34 -0
- package/dist/src/server/contact.d.ts.map +1 -0
- package/dist/src/server/contact.js +57 -0
- package/dist/src/server/customer-registration.d.ts +142 -0
- package/dist/src/server/customer-registration.d.ts.map +1 -0
- package/dist/src/server/customer-registration.js +295 -0
- package/dist/src/server/customer.d.ts +48 -0
- package/dist/src/server/customer.d.ts.map +1 -0
- package/dist/src/server/customer.js +413 -0
- package/dist/src/server/dynamic-config.d.ts +200 -0
- package/dist/src/server/dynamic-config.d.ts.map +1 -0
- package/dist/src/server/dynamic-config.js +788 -0
- package/dist/src/server/fulfillment.d.ts +5 -0
- package/dist/src/server/fulfillment.d.ts.map +1 -0
- package/dist/src/server/fulfillment.js +47 -0
- package/dist/src/server/guest.d.ts +81 -0
- package/dist/src/server/guest.d.ts.map +1 -0
- package/dist/src/server/guest.js +183 -0
- package/dist/src/server/help-faq-section-defaults.json +92 -0
- package/dist/src/server/help-sections/help-faq.d.ts +11 -0
- package/dist/src/server/help-sections/help-faq.d.ts.map +1 -0
- package/dist/src/server/help-sections/help-faq.js +6 -0
- package/dist/src/server/help-sections/index.d.ts +2 -0
- package/dist/src/server/help-sections/index.d.ts.map +1 -0
- package/dist/src/server/help-sections/index.js +1 -0
- package/dist/src/server/hero-banner-priority.d.ts +31 -0
- package/dist/src/server/hero-banner-priority.d.ts.map +1 -0
- package/dist/src/server/hero-banner-priority.js +26 -0
- package/dist/src/server/home-sections/about-brand.d.ts +9 -0
- package/dist/src/server/home-sections/about-brand.d.ts.map +1 -0
- package/dist/src/server/home-sections/about-brand.js +9 -0
- package/dist/src/server/home-sections/baptism-picks.d.ts +10 -0
- package/dist/src/server/home-sections/baptism-picks.d.ts.map +1 -0
- package/dist/src/server/home-sections/baptism-picks.js +27 -0
- package/dist/src/server/home-sections/baptism.d.ts +13 -0
- package/dist/src/server/home-sections/baptism.d.ts.map +1 -0
- package/dist/src/server/home-sections/baptism.js +43 -0
- package/dist/src/server/home-sections/blog-posts.d.ts +9 -0
- package/dist/src/server/home-sections/blog-posts.d.ts.map +1 -0
- package/dist/src/server/home-sections/blog-posts.js +9 -0
- package/dist/src/server/home-sections/brand-marquee.d.ts +8 -0
- package/dist/src/server/home-sections/brand-marquee.d.ts.map +1 -0
- package/dist/src/server/home-sections/brand-marquee.js +7 -0
- package/dist/src/server/home-sections/brand-pillars.d.ts +9 -0
- package/dist/src/server/home-sections/brand-pillars.d.ts.map +1 -0
- package/dist/src/server/home-sections/brand-pillars.js +9 -0
- package/dist/src/server/home-sections/category-pills.d.ts +9 -0
- package/dist/src/server/home-sections/category-pills.d.ts.map +1 -0
- package/dist/src/server/home-sections/category-pills.js +19 -0
- package/dist/src/server/home-sections/celebrity-trust.d.ts +12 -0
- package/dist/src/server/home-sections/celebrity-trust.d.ts.map +1 -0
- package/dist/src/server/home-sections/celebrity-trust.js +27 -0
- package/dist/src/server/home-sections/customer-stories.d.ts +9 -0
- package/dist/src/server/home-sections/customer-stories.d.ts.map +1 -0
- package/dist/src/server/home-sections/customer-stories.js +9 -0
- package/dist/src/server/home-sections/features.d.ts +9 -0
- package/dist/src/server/home-sections/features.d.ts.map +1 -0
- package/dist/src/server/home-sections/features.js +9 -0
- package/dist/src/server/home-sections/hero.d.ts +9 -0
- package/dist/src/server/home-sections/hero.d.ts.map +1 -0
- package/dist/src/server/home-sections/hero.js +9 -0
- package/dist/src/server/home-sections/instagram-posts.d.ts +9 -0
- package/dist/src/server/home-sections/instagram-posts.d.ts.map +1 -0
- package/dist/src/server/home-sections/instagram-posts.js +9 -0
- package/dist/src/server/home-sections/loved-by-moms.d.ts +12 -0
- package/dist/src/server/home-sections/loved-by-moms.d.ts.map +1 -0
- package/dist/src/server/home-sections/loved-by-moms.js +20 -0
- package/dist/src/server/home-sections/luxe-favourites.d.ts +11 -0
- package/dist/src/server/home-sections/luxe-favourites.d.ts.map +1 -0
- package/dist/src/server/home-sections/luxe-favourites.js +19 -0
- package/dist/src/server/home-sections/new-arrivals-classic.d.ts +8 -0
- package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +1 -0
- package/dist/src/server/home-sections/new-arrivals-classic.js +10 -0
- package/dist/src/server/home-sections/new-arrivals.d.ts +12 -0
- package/dist/src/server/home-sections/new-arrivals.d.ts.map +1 -0
- package/dist/src/server/home-sections/new-arrivals.js +28 -0
- package/dist/src/server/home-sections/promo-announcements.d.ts +11 -0
- package/dist/src/server/home-sections/promo-announcements.d.ts.map +1 -0
- package/dist/src/server/home-sections/promo-announcements.js +5 -0
- package/dist/src/server/home-sections/promo-countdown.d.ts +6 -0
- package/dist/src/server/home-sections/promo-countdown.d.ts.map +1 -0
- package/dist/src/server/home-sections/promo-countdown.js +5 -0
- package/dist/src/server/home-sections/shared.d.ts +10 -0
- package/dist/src/server/home-sections/shared.d.ts.map +1 -0
- package/dist/src/server/home-sections/shared.js +29 -0
- package/dist/src/server/home-sections/shop-by-age.d.ts +9 -0
- package/dist/src/server/home-sections/shop-by-age.d.ts.map +1 -0
- package/dist/src/server/home-sections/shop-by-age.js +17 -0
- package/dist/src/server/home-sections/shop-by-category.d.ts +10 -0
- package/dist/src/server/home-sections/shop-by-category.d.ts.map +1 -0
- package/dist/src/server/home-sections/shop-by-category.js +17 -0
- package/dist/src/server/home-sections/testimonials.d.ts +9 -0
- package/dist/src/server/home-sections/testimonials.d.ts.map +1 -0
- package/dist/src/server/home-sections/testimonials.js +9 -0
- package/dist/src/server/home-sections/theme-dresses.d.ts +12 -0
- package/dist/src/server/home-sections/theme-dresses.d.ts.map +1 -0
- package/dist/src/server/home-sections/theme-dresses.js +27 -0
- package/dist/src/server/home-sections/video-stories.d.ts +9 -0
- package/dist/src/server/home-sections/video-stories.d.ts.map +1 -0
- package/dist/src/server/home-sections/video-stories.js +9 -0
- package/dist/src/server/home-sections/why-choose-us.d.ts +9 -0
- package/dist/src/server/home-sections/why-choose-us.d.ts.map +1 -0
- package/dist/src/server/home-sections/why-choose-us.js +9 -0
- package/dist/src/server/home.d.ts +54 -0
- package/dist/src/server/home.d.ts.map +1 -0
- package/dist/src/server/home.js +1 -0
- package/dist/src/server/homepage-config.types.d.ts +405 -0
- package/dist/src/server/homepage-config.types.d.ts.map +1 -0
- package/dist/src/server/homepage-config.types.js +35 -0
- package/dist/src/server/homepage-section-defaults.d.ts +201 -0
- package/dist/src/server/homepage-section-defaults.d.ts.map +1 -0
- package/dist/src/server/homepage-section-defaults.js +192 -0
- package/dist/src/server/index.d.ts +26 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +25 -0
- package/dist/src/server/locale-actions.d.ts +14 -0
- package/dist/src/server/locale-actions.d.ts.map +1 -0
- package/dist/src/server/locale-actions.js +58 -0
- package/dist/src/server/locales.d.ts +8 -0
- package/dist/src/server/locales.d.ts.map +1 -0
- package/dist/src/server/locales.js +12 -0
- package/dist/src/server/normalize-homepage-config.d.ts +7 -0
- package/dist/src/server/normalize-homepage-config.d.ts.map +1 -0
- package/dist/src/server/normalize-homepage-config.js +281 -0
- package/dist/src/server/notifications.d.ts +2 -0
- package/dist/src/server/notifications.d.ts.map +1 -0
- package/dist/src/server/notifications.js +20 -0
- package/dist/src/server/onboarding.d.ts +2 -0
- package/dist/src/server/onboarding.d.ts.map +1 -0
- package/dist/src/server/onboarding.js +8 -0
- package/dist/src/server/orders.d.ts +63 -0
- package/dist/src/server/orders.d.ts.map +1 -0
- package/dist/src/server/orders.js +230 -0
- package/dist/src/server/page-input.d.ts +25 -0
- package/dist/src/server/page-input.d.ts.map +1 -0
- package/dist/src/server/page-input.js +172 -0
- package/dist/src/server/payment-details.d.ts +5 -0
- package/dist/src/server/payment-details.d.ts.map +1 -0
- package/dist/src/server/payment-details.js +28 -0
- package/dist/src/server/payment.d.ts +3 -0
- package/dist/src/server/payment.d.ts.map +1 -0
- package/dist/src/server/payment.js +13 -0
- package/dist/src/server/pincode.d.ts +7 -0
- package/dist/src/server/pincode.d.ts.map +1 -0
- package/dist/src/server/pincode.js +30 -0
- package/dist/src/server/products.d.ts +54 -0
- package/dist/src/server/products.d.ts.map +1 -0
- package/dist/src/server/products.js +154 -0
- package/dist/src/server/regions.d.ts +5 -0
- package/dist/src/server/regions.d.ts.map +1 -0
- package/dist/src/server/regions.js +57 -0
- package/dist/src/server/returns.d.ts +29 -0
- package/dist/src/server/returns.d.ts.map +1 -0
- package/dist/src/server/returns.js +132 -0
- package/dist/src/server/shoppable-looks.d.ts +17 -0
- package/dist/src/server/shoppable-looks.d.ts.map +1 -0
- package/dist/src/server/shoppable-looks.js +136 -0
- package/dist/src/server/storefront-cms.d.ts +11 -0
- package/dist/src/server/storefront-cms.d.ts.map +1 -0
- package/dist/src/server/storefront-cms.js +24 -0
- package/dist/src/server/swaps.d.ts +15 -0
- package/dist/src/server/swaps.d.ts.map +1 -0
- package/dist/src/server/swaps.js +89 -0
- package/dist/src/server/variants.d.ts +3 -0
- package/dist/src/server/variants.d.ts.map +1 -0
- package/dist/src/server/variants.js +15 -0
- package/dist/src/server/wishlist.d.ts +11 -0
- package/dist/src/server/wishlist.d.ts.map +1 -0
- package/dist/src/server/wishlist.js +49 -0
- package/dist/src/util/get-locale-header.d.ts +4 -0
- package/dist/src/util/get-locale-header.d.ts.map +1 -0
- package/dist/src/util/get-locale-header.js +7 -0
- package/dist/src/util/medusa-error.d.ts +2 -0
- package/dist/src/util/medusa-error.d.ts.map +1 -0
- package/dist/src/util/medusa-error.js +18 -0
- package/dist/src/util/revalidate-cart.d.ts +2 -0
- package/dist/src/util/revalidate-cart.d.ts.map +1 -0
- package/dist/src/util/revalidate-cart.js +8 -0
- package/dist/src/util/sort-products.d.ts +3 -0
- package/dist/src/util/sort-products.d.ts.map +1 -0
- package/dist/src/util/sort-products.js +1 -0
- package/dist/src/util/store-client.d.ts +11 -0
- package/dist/src/util/store-client.d.ts.map +1 -0
- package/dist/src/util/store-client.js +75 -0
- package/package.json +32 -20
- package/src/server/dynamic-config.ts +136 -0
- package/src/server/hero-banner-priority.ts +63 -0
- package/src/server/home-sections/customer-stories.ts +23 -0
- package/src/server/homepage-config.types.ts +18 -0
- package/src/server/homepage-section-defaults.ts +2 -0
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "server-only";
|
|
2
|
+
import type { StorefrontPageInput } from "./page-input";
|
|
3
|
+
type Maybe<T> = T | null | undefined;
|
|
4
|
+
/** Cached CMS merge for the storefront (fetch once per request). */
|
|
5
|
+
export declare const loadStorefrontPageInput: () => Promise<StorefrontPageInput>;
|
|
6
|
+
export declare function resolveStorefrontPageInput(pageInput?: Maybe<StorefrontPageInput>): Promise<StorefrontPageInput>;
|
|
7
|
+
export declare function loadContactInfoFromStorefrontInput(pageInput?: Maybe<StorefrontPageInput>): Promise<import("./dynamic-config").ContactInfo | null>;
|
|
8
|
+
export declare function loadContactEmailFromStorefrontInput(pageInput?: Maybe<StorefrontPageInput>): Promise<string>;
|
|
9
|
+
export declare function loadHelpFaqFromStorefrontInput(pageInput?: Maybe<StorefrontPageInput>): Promise<import("./dynamic-config").HelpFaqConfig>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=storefront-cms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storefront-cms.d.ts","sourceRoot":"","sources":["../../../src/server/storefront-cms.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOvD,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;AAEpC,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,QACxB,OAAO,CAAC,mBAAmB,CAItC,CAAA;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,wBAAsB,kCAAkC,CACtD,SAAS,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,0DAIvC;AAED,wBAAsB,mCAAmC,CACvD,SAAS,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,8BAA8B,CAClD,SAAS,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,qDAIvC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import "server-only";
|
|
2
|
+
import { cache } from "react";
|
|
3
|
+
import { getContactInfoFromPageInput, getHelpFaqFromPageInput, } from "./dynamic-config";
|
|
4
|
+
import { getDynamicConfig, homepageConfigFromDynamicResponse } from "./dynamic-config";
|
|
5
|
+
/** Cached CMS merge for the storefront (fetch once per request). */
|
|
6
|
+
export const loadStorefrontPageInput = cache(async () => {
|
|
7
|
+
const raw = await getDynamicConfig();
|
|
8
|
+
return homepageConfigFromDynamicResponse(raw);
|
|
9
|
+
});
|
|
10
|
+
export async function resolveStorefrontPageInput(pageInput) {
|
|
11
|
+
return (pageInput ?? (await loadStorefrontPageInput()));
|
|
12
|
+
}
|
|
13
|
+
export async function loadContactInfoFromStorefrontInput(pageInput) {
|
|
14
|
+
const resolved = await resolveStorefrontPageInput(pageInput);
|
|
15
|
+
return getContactInfoFromPageInput(resolved);
|
|
16
|
+
}
|
|
17
|
+
export async function loadContactEmailFromStorefrontInput(pageInput) {
|
|
18
|
+
const info = await loadContactInfoFromStorefrontInput(pageInput);
|
|
19
|
+
return info?.email ?? "";
|
|
20
|
+
}
|
|
21
|
+
export async function loadHelpFaqFromStorefrontInput(pageInput) {
|
|
22
|
+
const resolved = await resolveStorefrontPageInput(pageInput);
|
|
23
|
+
return getHelpFaqFromPageInput(resolved);
|
|
24
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { medusaSwapCreate, medusaSwapCreateGuest, medusaSwapList, medusaSwapListGuest, } from "medusa-services/swaps";
|
|
3
|
+
import { cookies } from "next/headers";
|
|
4
|
+
import { revalidateTag } from "next/cache";
|
|
5
|
+
import { getStoreClientOptions, getStoreClientOptionsWithToken } from "../util/store-client";
|
|
6
|
+
/**
|
|
7
|
+
* Create an exchange (swap) request.
|
|
8
|
+
* Supports both authenticated customers and guest users.
|
|
9
|
+
*/
|
|
10
|
+
export const createSwapRequest = async (_prevState, formData) => {
|
|
11
|
+
const orderId = formData.get("order_id");
|
|
12
|
+
const returnItemsJson = formData.get("return_items");
|
|
13
|
+
const newItemsJson = formData.get("new_items");
|
|
14
|
+
const reason = formData.get("reason");
|
|
15
|
+
const note = formData.get("note");
|
|
16
|
+
if (!orderId)
|
|
17
|
+
return { success: false, error: "Order ID is required", swap: null };
|
|
18
|
+
if (!returnItemsJson)
|
|
19
|
+
return { success: false, error: "Items to return are required", swap: null };
|
|
20
|
+
if (!newItemsJson)
|
|
21
|
+
return { success: false, error: "New items are required", swap: null };
|
|
22
|
+
let returnItems = [];
|
|
23
|
+
let newItems = [];
|
|
24
|
+
try {
|
|
25
|
+
returnItems = JSON.parse(returnItemsJson);
|
|
26
|
+
newItems = JSON.parse(newItemsJson);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { success: false, error: "Invalid items data format", swap: null };
|
|
30
|
+
}
|
|
31
|
+
if (returnItems.length === 0) {
|
|
32
|
+
return { success: false, error: "At least one item must be selected for return", swap: null };
|
|
33
|
+
}
|
|
34
|
+
const options = await getStoreClientOptions();
|
|
35
|
+
try {
|
|
36
|
+
const payload = {
|
|
37
|
+
order_id: orderId,
|
|
38
|
+
return_items: returnItems,
|
|
39
|
+
new_items: newItems,
|
|
40
|
+
reason: reason || "Size exchange",
|
|
41
|
+
note: note || "Exchange requested from storefront",
|
|
42
|
+
};
|
|
43
|
+
const cookieStore = await cookies();
|
|
44
|
+
const guestToken = cookieStore.get("_medusa_guest_jwt")?.value ||
|
|
45
|
+
cookieStore.get("_medusa_guest_token")?.value;
|
|
46
|
+
const token = cookieStore.get("_medusa_jwt")?.value;
|
|
47
|
+
let swapData;
|
|
48
|
+
if (guestToken && !token) {
|
|
49
|
+
const guestOptions = await getStoreClientOptionsWithToken(guestToken);
|
|
50
|
+
swapData = await medusaSwapCreateGuest(orderId, {
|
|
51
|
+
return_items: payload.return_items,
|
|
52
|
+
new_items: payload.new_items,
|
|
53
|
+
reason: payload.reason,
|
|
54
|
+
note: payload.note,
|
|
55
|
+
}, guestOptions);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
swapData = await medusaSwapCreate(payload, options);
|
|
59
|
+
}
|
|
60
|
+
revalidateTag("orders");
|
|
61
|
+
return { success: true, error: null, swap: swapData };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
let errorMsg = "Failed to create exchange request";
|
|
65
|
+
if (error instanceof Error && error.message) {
|
|
66
|
+
errorMsg = error.message;
|
|
67
|
+
}
|
|
68
|
+
return { success: false, error: errorMsg, swap: null };
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* List swaps for an order or customer
|
|
73
|
+
*/
|
|
74
|
+
export const listSwaps = async (orderId) => {
|
|
75
|
+
const options = await getStoreClientOptions();
|
|
76
|
+
if (options.authorization) {
|
|
77
|
+
return medusaSwapList(options, orderId ? { order_id: orderId } : undefined);
|
|
78
|
+
}
|
|
79
|
+
if (orderId) {
|
|
80
|
+
const cookieStore = await cookies();
|
|
81
|
+
const guestToken = cookieStore.get("_medusa_guest_jwt")?.value ||
|
|
82
|
+
cookieStore.get("_medusa_guest_token")?.value;
|
|
83
|
+
if (guestToken) {
|
|
84
|
+
const guestOptions = await getStoreClientOptionsWithToken(guestToken);
|
|
85
|
+
return medusaSwapListGuest(orderId, guestOptions);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return { swaps: [], count: 0 };
|
|
89
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/server/variants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,eAAO,MAAM,eAAe,GAC1B,YAAY,MAAM,KACjB,OAAO,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAU9C,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { medusaVariantRetrieve } from "medusa-services/variants";
|
|
3
|
+
import { getStoreClientOptions } from "../util/store-client";
|
|
4
|
+
export const retrieveVariant = async (variant_id) => {
|
|
5
|
+
try {
|
|
6
|
+
const options = await getStoreClientOptions();
|
|
7
|
+
if (!options.authorization)
|
|
8
|
+
return null;
|
|
9
|
+
const { variant } = await medusaVariantRetrieve(variant_id, options, { fields: "*images" });
|
|
10
|
+
return variant;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Wishlist entries enriched with full Medusa product payloads. */
|
|
2
|
+
export declare function getWishlist(includeDetails?: boolean, countryCode?: string): Promise<{
|
|
3
|
+
success: false;
|
|
4
|
+
error: string;
|
|
5
|
+
data: unknown[];
|
|
6
|
+
} | {
|
|
7
|
+
success: true;
|
|
8
|
+
data: Record<string, unknown>[];
|
|
9
|
+
error?: undefined;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=wishlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wishlist.d.ts","sourceRoot":"","sources":["../../../src/server/wishlist.ts"],"names":[],"mappings":"AAOA,mEAAmE;AACnE,wBAAsB,WAAW,CAAC,cAAc,UAAO,EAAE,WAAW,CAAC,EAAE,MAAM;;;UAGF,OAAO,EAAE;;;;;GAoDnF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { sdk } from "../config";
|
|
3
|
+
import { getRegion } from "./regions";
|
|
4
|
+
import { fetchWishlist } from "medusa-wishlist-logic/server";
|
|
5
|
+
/** Wishlist entries enriched with full Medusa product payloads. */
|
|
6
|
+
export async function getWishlist(includeDetails = true, countryCode) {
|
|
7
|
+
const result = await fetchWishlist(includeDetails);
|
|
8
|
+
if (!result.success) {
|
|
9
|
+
return { success: false, error: result.error, data: [] };
|
|
10
|
+
}
|
|
11
|
+
let wishlistItems = result.data;
|
|
12
|
+
if (!includeDetails || wishlistItems.length === 0) {
|
|
13
|
+
return { success: true, data: wishlistItems };
|
|
14
|
+
}
|
|
15
|
+
const productIds = wishlistItems
|
|
16
|
+
.map((item) => {
|
|
17
|
+
const id = item.product_id ?? item.id;
|
|
18
|
+
return typeof id === "string" ? id : null;
|
|
19
|
+
})
|
|
20
|
+
.filter((id) => Boolean(id));
|
|
21
|
+
if (productIds.length === 0) {
|
|
22
|
+
return { success: true, data: wishlistItems };
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
let regionId;
|
|
26
|
+
if (countryCode) {
|
|
27
|
+
const region = await getRegion(countryCode);
|
|
28
|
+
regionId = region?.id;
|
|
29
|
+
}
|
|
30
|
+
const productsResponse = await sdk.store.product.list({
|
|
31
|
+
id: productIds,
|
|
32
|
+
fields: "*thumbnail,*images,*variants,*variants.options,*options,*options.values,*variants.calculated_price,*variants.inventory_quantity,*variants.manage_inventory,*variants.allow_backorder",
|
|
33
|
+
...(regionId ? { region_id: regionId } : {}),
|
|
34
|
+
}, {});
|
|
35
|
+
const fullProducts = productsResponse.products;
|
|
36
|
+
wishlistItems = wishlistItems.map((item) => {
|
|
37
|
+
const itemId = (item.product_id ?? item.id);
|
|
38
|
+
const fullProduct = fullProducts.find((p) => p.id === itemId);
|
|
39
|
+
if (fullProduct) {
|
|
40
|
+
return { ...item, product: fullProduct };
|
|
41
|
+
}
|
|
42
|
+
return item;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Return API wishlist without enrichment
|
|
47
|
+
}
|
|
48
|
+
return { success: true, data: wishlistItems };
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-locale-header.d.ts","sourceRoot":"","sources":["../../../src/util/get-locale-header.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe;;GAKpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"medusa-error.d.ts","sourceRoot":"","sources":["../../../src/util/medusa-error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAkBrD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default function medusaError(error) {
|
|
2
|
+
if (error.response) {
|
|
3
|
+
// The request was made and the server responded with a status code
|
|
4
|
+
// that falls out of the range of 2xx
|
|
5
|
+
const u = new URL(error.config.url, error.config.baseURL);
|
|
6
|
+
// Extracting the error message from the response data
|
|
7
|
+
const message = error.response.data.message || error.response.data;
|
|
8
|
+
throw new Error(message.charAt(0).toUpperCase() + message.slice(1) + ".");
|
|
9
|
+
}
|
|
10
|
+
else if (error.request) {
|
|
11
|
+
// The request was made but no response was received
|
|
12
|
+
throw new Error("No response received: " + error.request);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
// Something happened in setting up the request that triggered an Error
|
|
16
|
+
throw new Error("Error setting up the request: " + error.message);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revalidate-cart.d.ts","sourceRoot":"","sources":["../../../src/util/revalidate-cart.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { revalidateTag } from "next/cache";
|
|
2
|
+
import { getCacheTag } from "../cookies";
|
|
3
|
+
export async function revalidateCartTags() {
|
|
4
|
+
const cartCacheTag = await getCacheTag("carts");
|
|
5
|
+
revalidateTag(cartCacheTag);
|
|
6
|
+
const fulfillmentCacheTag = await getCacheTag("fulfillment");
|
|
7
|
+
revalidateTag(fulfillmentCacheTag);
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-products.d.ts","sourceRoot":"","sources":["../../../src/util/sort-products.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { sortProducts } from "medusa-services/product-listing";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MedusaStoreClientOptions } from "medusa-services/store-api";
|
|
2
|
+
import { type MedusaAuthClientOptions } from "medusa-services/auth";
|
|
3
|
+
/**
|
|
4
|
+
* Builds portable Medusa store client options from Next.js cookies and env.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getStoreClientOptions(): Promise<MedusaStoreClientOptions>;
|
|
7
|
+
export declare function getMedusaBackendUrl(): string;
|
|
8
|
+
export declare function getGuestStoreClientOptions(): Promise<MedusaStoreClientOptions | null>;
|
|
9
|
+
export declare function getStoreClientOptionsWithToken(token: string): Promise<MedusaStoreClientOptions>;
|
|
10
|
+
export declare function getAuthClientOptions(authorization?: string): Promise<MedusaAuthClientOptions>;
|
|
11
|
+
//# sourceMappingURL=store-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-client.d.ts","sourceRoot":"","sources":["../../../src/util/store-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAqBxF;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAY/E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAuB3F;AAED,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,wBAAwB,CAAC,CAMnC;AAED,wBAAsB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAWnG"}
|