medusa-storefront-data 2.4.0 → 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.
Files changed (214) hide show
  1. package/HOMEPAGE_CONFIG.md +113 -6
  2. package/package.json +6 -116
  3. package/src/server/brand-pillars-from-categories.ts +156 -0
  4. package/src/server/cart.ts +21 -21
  5. package/src/server/customer.ts +11 -11
  6. package/src/server/dynamic-config.ts +130 -181
  7. package/src/server/fulfillment.ts +3 -3
  8. package/src/server/help-faq-section-defaults.json +92 -0
  9. package/src/server/help-sections/help-faq.ts +25 -0
  10. package/src/server/help-sections/index.ts +8 -0
  11. package/src/server/home.ts +36 -211
  12. package/src/server/homepage-config.types.ts +24 -0
  13. package/src/server/homepage-section-defaults.ts +3 -0
  14. package/src/server/normalize-homepage-config.ts +279 -0
  15. package/src/server/orders.ts +6 -6
  16. package/src/server/page-input.ts +3 -1
  17. package/src/server/payment-details.ts +5 -5
  18. package/src/server/payment.ts +2 -2
  19. package/src/server/regions.ts +2 -2
  20. package/src/server/shoppable-looks.ts +1 -1
  21. package/src/util/store-client.ts +0 -3
  22. package/dist/segment-data/default-page-input.json +0 -191
  23. package/dist/src/config.d.ts +0 -3
  24. package/dist/src/config.d.ts.map +0 -1
  25. package/dist/src/config.js +0 -31
  26. package/dist/src/cookies.d.ts +0 -23
  27. package/dist/src/cookies.d.ts.map +0 -1
  28. package/dist/src/cookies.js +0 -140
  29. package/dist/src/edge.d.ts +0 -3
  30. package/dist/src/edge.d.ts.map +0 -1
  31. package/dist/src/edge.js +0 -1
  32. package/dist/src/middleware.d.ts +0 -3
  33. package/dist/src/middleware.d.ts.map +0 -1
  34. package/dist/src/middleware.js +0 -1
  35. package/dist/src/server/cart.d.ts +0 -96
  36. package/dist/src/server/cart.d.ts.map +0 -1
  37. package/dist/src/server/cart.js +0 -797
  38. package/dist/src/server/categories.d.ts +0 -4
  39. package/dist/src/server/categories.d.ts.map +0 -1
  40. package/dist/src/server/categories.js +0 -34
  41. package/dist/src/server/collections.d.ts +0 -8
  42. package/dist/src/server/collections.d.ts.map +0 -1
  43. package/dist/src/server/collections.js +0 -39
  44. package/dist/src/server/config-merge.d.ts +0 -3
  45. package/dist/src/server/config-merge.d.ts.map +0 -1
  46. package/dist/src/server/config-merge.js +0 -31
  47. package/dist/src/server/contact.d.ts +0 -34
  48. package/dist/src/server/contact.d.ts.map +0 -1
  49. package/dist/src/server/contact.js +0 -57
  50. package/dist/src/server/customer-registration.d.ts +0 -142
  51. package/dist/src/server/customer-registration.d.ts.map +0 -1
  52. package/dist/src/server/customer-registration.js +0 -295
  53. package/dist/src/server/customer.d.ts +0 -48
  54. package/dist/src/server/customer.d.ts.map +0 -1
  55. package/dist/src/server/customer.js +0 -413
  56. package/dist/src/server/dynamic-config.d.ts +0 -240
  57. package/dist/src/server/dynamic-config.d.ts.map +0 -1
  58. package/dist/src/server/dynamic-config.js +0 -703
  59. package/dist/src/server/fulfillment.d.ts +0 -5
  60. package/dist/src/server/fulfillment.d.ts.map +0 -1
  61. package/dist/src/server/fulfillment.js +0 -47
  62. package/dist/src/server/guest.d.ts +0 -81
  63. package/dist/src/server/guest.d.ts.map +0 -1
  64. package/dist/src/server/guest.js +0 -183
  65. package/dist/src/server/home-sections/about-brand.d.ts +0 -9
  66. package/dist/src/server/home-sections/about-brand.d.ts.map +0 -1
  67. package/dist/src/server/home-sections/about-brand.js +0 -9
  68. package/dist/src/server/home-sections/baptism-picks.d.ts +0 -10
  69. package/dist/src/server/home-sections/baptism-picks.d.ts.map +0 -1
  70. package/dist/src/server/home-sections/baptism-picks.js +0 -27
  71. package/dist/src/server/home-sections/baptism.d.ts +0 -13
  72. package/dist/src/server/home-sections/baptism.d.ts.map +0 -1
  73. package/dist/src/server/home-sections/baptism.js +0 -43
  74. package/dist/src/server/home-sections/blog-posts.d.ts +0 -9
  75. package/dist/src/server/home-sections/blog-posts.d.ts.map +0 -1
  76. package/dist/src/server/home-sections/blog-posts.js +0 -9
  77. package/dist/src/server/home-sections/brand-marquee.d.ts +0 -8
  78. package/dist/src/server/home-sections/brand-marquee.d.ts.map +0 -1
  79. package/dist/src/server/home-sections/brand-marquee.js +0 -7
  80. package/dist/src/server/home-sections/brand-pillars.d.ts +0 -9
  81. package/dist/src/server/home-sections/brand-pillars.d.ts.map +0 -1
  82. package/dist/src/server/home-sections/brand-pillars.js +0 -9
  83. package/dist/src/server/home-sections/category-pills.d.ts +0 -9
  84. package/dist/src/server/home-sections/category-pills.d.ts.map +0 -1
  85. package/dist/src/server/home-sections/category-pills.js +0 -19
  86. package/dist/src/server/home-sections/celebrity-trust.d.ts +0 -12
  87. package/dist/src/server/home-sections/celebrity-trust.d.ts.map +0 -1
  88. package/dist/src/server/home-sections/celebrity-trust.js +0 -27
  89. package/dist/src/server/home-sections/features.d.ts +0 -9
  90. package/dist/src/server/home-sections/features.d.ts.map +0 -1
  91. package/dist/src/server/home-sections/features.js +0 -9
  92. package/dist/src/server/home-sections/hero.d.ts +0 -9
  93. package/dist/src/server/home-sections/hero.d.ts.map +0 -1
  94. package/dist/src/server/home-sections/hero.js +0 -9
  95. package/dist/src/server/home-sections/instagram-posts.d.ts +0 -9
  96. package/dist/src/server/home-sections/instagram-posts.d.ts.map +0 -1
  97. package/dist/src/server/home-sections/instagram-posts.js +0 -9
  98. package/dist/src/server/home-sections/loved-by-moms.d.ts +0 -12
  99. package/dist/src/server/home-sections/loved-by-moms.d.ts.map +0 -1
  100. package/dist/src/server/home-sections/loved-by-moms.js +0 -20
  101. package/dist/src/server/home-sections/luxe-favourites.d.ts +0 -11
  102. package/dist/src/server/home-sections/luxe-favourites.d.ts.map +0 -1
  103. package/dist/src/server/home-sections/luxe-favourites.js +0 -19
  104. package/dist/src/server/home-sections/new-arrivals-classic.d.ts +0 -8
  105. package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +0 -1
  106. package/dist/src/server/home-sections/new-arrivals-classic.js +0 -10
  107. package/dist/src/server/home-sections/new-arrivals.d.ts +0 -12
  108. package/dist/src/server/home-sections/new-arrivals.d.ts.map +0 -1
  109. package/dist/src/server/home-sections/new-arrivals.js +0 -28
  110. package/dist/src/server/home-sections/promo-announcements.d.ts +0 -7
  111. package/dist/src/server/home-sections/promo-announcements.d.ts.map +0 -1
  112. package/dist/src/server/home-sections/promo-announcements.js +0 -7
  113. package/dist/src/server/home-sections/promo-countdown.d.ts +0 -6
  114. package/dist/src/server/home-sections/promo-countdown.d.ts.map +0 -1
  115. package/dist/src/server/home-sections/promo-countdown.js +0 -5
  116. package/dist/src/server/home-sections/shared.d.ts +0 -10
  117. package/dist/src/server/home-sections/shared.d.ts.map +0 -1
  118. package/dist/src/server/home-sections/shared.js +0 -29
  119. package/dist/src/server/home-sections/shop-by-age.d.ts +0 -9
  120. package/dist/src/server/home-sections/shop-by-age.d.ts.map +0 -1
  121. package/dist/src/server/home-sections/shop-by-age.js +0 -17
  122. package/dist/src/server/home-sections/shop-by-category.d.ts +0 -10
  123. package/dist/src/server/home-sections/shop-by-category.d.ts.map +0 -1
  124. package/dist/src/server/home-sections/shop-by-category.js +0 -17
  125. package/dist/src/server/home-sections/testimonials.d.ts +0 -9
  126. package/dist/src/server/home-sections/testimonials.d.ts.map +0 -1
  127. package/dist/src/server/home-sections/testimonials.js +0 -9
  128. package/dist/src/server/home-sections/theme-dresses.d.ts +0 -12
  129. package/dist/src/server/home-sections/theme-dresses.d.ts.map +0 -1
  130. package/dist/src/server/home-sections/theme-dresses.js +0 -27
  131. package/dist/src/server/home-sections/video-stories.d.ts +0 -9
  132. package/dist/src/server/home-sections/video-stories.d.ts.map +0 -1
  133. package/dist/src/server/home-sections/video-stories.js +0 -9
  134. package/dist/src/server/home-sections/why-choose-us.d.ts +0 -9
  135. package/dist/src/server/home-sections/why-choose-us.d.ts.map +0 -1
  136. package/dist/src/server/home-sections/why-choose-us.js +0 -9
  137. package/dist/src/server/home.d.ts +0 -62
  138. package/dist/src/server/home.d.ts.map +0 -1
  139. package/dist/src/server/home.js +0 -122
  140. package/dist/src/server/homepage-config.types.d.ts +0 -274
  141. package/dist/src/server/homepage-config.types.d.ts.map +0 -1
  142. package/dist/src/server/homepage-config.types.js +0 -33
  143. package/dist/src/server/homepage-section-defaults.d.ts +0 -188
  144. package/dist/src/server/homepage-section-defaults.d.ts.map +0 -1
  145. package/dist/src/server/homepage-section-defaults.js +0 -188
  146. package/dist/src/server/index.d.ts +0 -25
  147. package/dist/src/server/index.d.ts.map +0 -1
  148. package/dist/src/server/index.js +0 -24
  149. package/dist/src/server/locale-actions.d.ts +0 -14
  150. package/dist/src/server/locale-actions.d.ts.map +0 -1
  151. package/dist/src/server/locale-actions.js +0 -58
  152. package/dist/src/server/locales.d.ts +0 -8
  153. package/dist/src/server/locales.d.ts.map +0 -1
  154. package/dist/src/server/locales.js +0 -12
  155. package/dist/src/server/notifications.d.ts +0 -2
  156. package/dist/src/server/notifications.d.ts.map +0 -1
  157. package/dist/src/server/notifications.js +0 -20
  158. package/dist/src/server/onboarding.d.ts +0 -2
  159. package/dist/src/server/onboarding.d.ts.map +0 -1
  160. package/dist/src/server/onboarding.js +0 -8
  161. package/dist/src/server/orders.d.ts +0 -63
  162. package/dist/src/server/orders.d.ts.map +0 -1
  163. package/dist/src/server/orders.js +0 -230
  164. package/dist/src/server/page-input.d.ts +0 -19
  165. package/dist/src/server/page-input.d.ts.map +0 -1
  166. package/dist/src/server/page-input.js +0 -40
  167. package/dist/src/server/payment-details.d.ts +0 -5
  168. package/dist/src/server/payment-details.d.ts.map +0 -1
  169. package/dist/src/server/payment-details.js +0 -28
  170. package/dist/src/server/payment.d.ts +0 -3
  171. package/dist/src/server/payment.d.ts.map +0 -1
  172. package/dist/src/server/payment.js +0 -13
  173. package/dist/src/server/pincode.d.ts +0 -7
  174. package/dist/src/server/pincode.d.ts.map +0 -1
  175. package/dist/src/server/pincode.js +0 -30
  176. package/dist/src/server/products.d.ts +0 -54
  177. package/dist/src/server/products.d.ts.map +0 -1
  178. package/dist/src/server/products.js +0 -154
  179. package/dist/src/server/regions.d.ts +0 -5
  180. package/dist/src/server/regions.d.ts.map +0 -1
  181. package/dist/src/server/regions.js +0 -57
  182. package/dist/src/server/resolve-home-segment-data.d.ts +0 -25
  183. package/dist/src/server/resolve-home-segment-data.d.ts.map +0 -1
  184. package/dist/src/server/resolve-home-segment-data.js +0 -20
  185. package/dist/src/server/returns.d.ts +0 -29
  186. package/dist/src/server/returns.d.ts.map +0 -1
  187. package/dist/src/server/returns.js +0 -132
  188. package/dist/src/server/shoppable-looks.d.ts +0 -17
  189. package/dist/src/server/shoppable-looks.d.ts.map +0 -1
  190. package/dist/src/server/shoppable-looks.js +0 -136
  191. package/dist/src/server/swaps.d.ts +0 -15
  192. package/dist/src/server/swaps.d.ts.map +0 -1
  193. package/dist/src/server/swaps.js +0 -89
  194. package/dist/src/server/variants.d.ts +0 -3
  195. package/dist/src/server/variants.d.ts.map +0 -1
  196. package/dist/src/server/variants.js +0 -15
  197. package/dist/src/server/wishlist.d.ts +0 -11
  198. package/dist/src/server/wishlist.d.ts.map +0 -1
  199. package/dist/src/server/wishlist.js +0 -49
  200. package/dist/src/util/get-locale-header.d.ts +0 -4
  201. package/dist/src/util/get-locale-header.d.ts.map +0 -1
  202. package/dist/src/util/get-locale-header.js +0 -7
  203. package/dist/src/util/medusa-error.d.ts +0 -2
  204. package/dist/src/util/medusa-error.d.ts.map +0 -1
  205. package/dist/src/util/medusa-error.js +0 -18
  206. package/dist/src/util/revalidate-cart.d.ts +0 -2
  207. package/dist/src/util/revalidate-cart.d.ts.map +0 -1
  208. package/dist/src/util/revalidate-cart.js +0 -8
  209. package/dist/src/util/sort-products.d.ts +0 -3
  210. package/dist/src/util/sort-products.d.ts.map +0 -1
  211. package/dist/src/util/sort-products.js +0 -1
  212. package/dist/src/util/store-client.d.ts +0 -13
  213. package/dist/src/util/store-client.d.ts.map +0 -1
  214. package/dist/src/util/store-client.js +0 -77
@@ -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 { getStoreCartClientOptions } 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 getStoreCartClientOptions();
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 = [...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"}
@@ -1,89 +0,0 @@
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
- };
@@ -1,3 +0,0 @@
1
- import { HttpTypes } from "@medusajs/types";
2
- export declare const retrieveVariant: (variant_id: string) => Promise<HttpTypes.StoreProductVariant | null>;
3
- //# sourceMappingURL=variants.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,15 +0,0 @@
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
- };
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,49 +0,0 @@
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
- }
@@ -1,4 +0,0 @@
1
- export declare function getLocaleHeader(): Promise<{
2
- readonly "x-medusa-locale": string | null;
3
- }>;
4
- //# sourceMappingURL=get-locale-header.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-locale-header.d.ts","sourceRoot":"","sources":["../../../src/util/get-locale-header.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe;;GAKpC"}
@@ -1,7 +0,0 @@
1
- import { getLocale } from "../server/locale-actions";
2
- export async function getLocaleHeader() {
3
- const locale = await getLocale();
4
- return {
5
- "x-medusa-locale": locale,
6
- };
7
- }
@@ -1,2 +0,0 @@
1
- export default function medusaError(error: any): never;
2
- //# sourceMappingURL=medusa-error.d.ts.map
@@ -1 +0,0 @@
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"}