@gem-sdk/pages 17.0.0-dev.81 → 17.0.0-dev.83

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 (53) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/libs/api/get-builder-props.js +1 -0
  3. package/dist/cjs/libs/api/get-collection-props.js +1 -0
  4. package/dist/cjs/libs/api/get-collection-share-page-props.js +1 -0
  5. package/dist/cjs/libs/api/get-home-page-props-v2.js +1 -0
  6. package/dist/cjs/libs/api/get-home-page-props.js +1 -0
  7. package/dist/cjs/libs/api/get-post-purchase-props-preview.js +1 -0
  8. package/dist/cjs/libs/api/get-preview-content-props.js +1 -0
  9. package/dist/cjs/libs/api/get-preview-props.js +1 -0
  10. package/dist/cjs/libs/api/get-product-props.js +1 -0
  11. package/dist/cjs/libs/api/get-share-page-props.js +1 -0
  12. package/dist/cjs/libs/api/get-static-page-props-preview.js +1 -0
  13. package/dist/cjs/libs/api/get-static-page-props-v2.js +1 -0
  14. package/dist/cjs/libs/api/get-static-page-props.js +1 -0
  15. package/dist/cjs/libs/custom-fonts.js +8 -0
  16. package/dist/cjs/libs/data/fonts.js +1 -0
  17. package/dist/cjs/libs/getStaticPaths.js +1 -0
  18. package/dist/cjs/libs/google-fonts.js +7 -1
  19. package/dist/cjs/libs/helpers/gen-favicon.js +1 -0
  20. package/dist/cjs/libs/helpers/generate-seo-links.js +1 -0
  21. package/dist/cjs/libs/helpers/get-metafield.js +1 -0
  22. package/dist/cjs/libs/helpers/normalize.js +1 -1
  23. package/dist/cjs/libs/helpers/parse-json.js +1 -1
  24. package/dist/cjs/pages/static-v2.js +2 -2
  25. package/dist/esm/index.js +1 -1
  26. package/dist/esm/libs/api/get-builder-props.js +1 -0
  27. package/dist/esm/libs/api/get-collection-props.js +1 -0
  28. package/dist/esm/libs/api/get-collection-share-page-props.js +1 -0
  29. package/dist/esm/libs/api/get-home-page-props-v2.js +1 -0
  30. package/dist/esm/libs/api/get-home-page-props.js +1 -0
  31. package/dist/esm/libs/api/get-post-purchase-props-preview.js +1 -0
  32. package/dist/esm/libs/api/get-preview-content-props.js +1 -0
  33. package/dist/esm/libs/api/get-preview-props.js +1 -0
  34. package/dist/esm/libs/api/get-product-props.js +1 -0
  35. package/dist/esm/libs/api/get-share-page-props.js +1 -0
  36. package/dist/esm/libs/api/get-static-page-props-preview.js +1 -0
  37. package/dist/esm/libs/api/get-static-page-props-v2.js +1 -0
  38. package/dist/esm/libs/api/get-static-page-props.js +1 -0
  39. package/dist/esm/libs/custom-fonts.js +8 -0
  40. package/dist/esm/libs/data/fonts.js +1 -0
  41. package/dist/esm/libs/getStaticPaths.js +1 -0
  42. package/dist/esm/libs/google-fonts.js +7 -1
  43. package/dist/esm/libs/helpers/gen-favicon.js +1 -0
  44. package/dist/esm/libs/helpers/generate-seo-links.js +1 -0
  45. package/dist/esm/libs/helpers/get-metafield.js +1 -0
  46. package/dist/esm/libs/helpers/normalize.js +1 -1
  47. package/dist/esm/libs/helpers/parse-json.js +1 -1
  48. package/dist/esm/pages/static-v2.js +2 -2
  49. package/dist/types/index.d.ts +125 -90
  50. package/package.json +9 -21
  51. package/dist/cjs/server.js +0 -14
  52. package/dist/esm/server.js +0 -14
  53. package/dist/types/server.d.ts +0 -156
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{createAppAPIFetcher,createFetcher,createShopifyFetcher,createTemplateFetcher}from"./libs/fetcher.js";export{getLayout}from"./libs/get-layout.js";export{genCSS}from"./libs/helpers/gen-css.js";export{sendPageViewedTracking}from"./libs/helpers/sendPageViewedTracking.js";export{usePagePreview}from"./libs/hooks/usePagePreview.js";export{usePageViewedTracking}from"./libs/hooks/usePageViewedTracking.js";export{isBot}from"./libs/helpers/user-agent.js";export{normalizePageSectionResponseV2,parseBuilderTemplateV2}from"./libs/helpers/normalize.js";export{getFallbackV2}from"./libs/helpers/get-fallback.js";export{retryWithDelay}from"./libs/helpers/common.js";export{SharePageTracking}from"./components/SharePageTracking.js";export{getFontFromGroupSetting,getFontsFromDataBuilder}from"./libs/helpers/gen-fonts.js";export{getFontFromGlobalStyle,getFontLinkFromGlobalStyle,getFonts}from"./libs/google-fonts.js";export{getStorefrontApi}from"./libs/get-storefront-api.js";export{ErrorBoundary}from"./components/ErrorBoundary.js";export{ErrorFallback}from"./components/ErrorFallback.js";export{Page404}from"./pages/404.js";export{Page500}from"./pages/500.js";export{GoogleAnalytic}from"./components/GoogleAnalytic.js";export{FacebookPixel}from"./components/FacebookPixel.js";export{TikTokPixel}from"./components/TikTokPixel.js";export{default as CollectionDetailPage}from"./pages/collection-detail.js";export{PreviewPage}from"./pages/preview.js";export{default as ProductDetailPage}from"./pages/product-detail.js";export{default as StaticPage}from"./pages/static.js";export{BuilderPage}from"./pages/builder.js";export{BuilderUpsellPage}from"./pages/builder-upsell.js";export{StaticPageV2}from"./pages/static-v2.js";export{PreviewTemplate}from"./pages/preview-template.js";
1
+ export{getCollectionProps}from"./libs/api/get-collection-props.js";export{getCollectionSharePageProps}from"./libs/api/get-collection-share-page-props.js";export{getHomePageProps}from"./libs/api/get-home-page-props.js";export{getHomePagePropsV2}from"./libs/api/get-home-page-props-v2.js";export{getPreviewProps}from"./libs/api/get-preview-props.js";export{getBuilderProps}from"./libs/api/get-builder-props.js";export{getProductProps}from"./libs/api/get-product-props.js";export{getStaticPagePropsV2}from"./libs/api/get-static-page-props-v2.js";export{getSharePageProps}from"./libs/api/get-share-page-props.js";export{getPostPurchasePropsPreview}from"./libs/api/get-post-purchase-props-preview.js";export{getStaticPagePropsPreview}from"./libs/api/get-static-page-props-preview.js";export{getSharePageContentProps}from"./libs/api/get-preview-content-props.js";export{createAppAPIFetcher,createFetcher,createShopifyFetcher,createTemplateFetcher}from"./libs/fetcher.js";export{getLayout}from"./libs/get-layout.js";export{genCSS}from"./libs/helpers/gen-css.js";export{sendPageViewedTracking}from"./libs/helpers/sendPageViewedTracking.js";export{usePagePreview}from"./libs/hooks/usePagePreview.js";export{usePageViewedTracking}from"./libs/hooks/usePageViewedTracking.js";export{isBot}from"./libs/helpers/user-agent.js";export{normalizePageSectionResponseV2,parseBuilderTemplateV2}from"./libs/helpers/normalize.js";export{getFallbackV2}from"./libs/helpers/get-fallback.js";export{retryWithDelay}from"./libs/helpers/common.js";export{SharePageTracking}from"./components/SharePageTracking.js";export{getStaticPaths}from"./libs/getStaticPaths.js";export{getFontFromGroupSetting,getFontsFromDataBuilder}from"./libs/helpers/gen-fonts.js";export{getFontFromGlobalStyle,getFontLinkFromGlobalStyle,getFonts}from"./libs/google-fonts.js";export{getStorefrontApi}from"./libs/get-storefront-api.js";export{ErrorBoundary}from"./components/ErrorBoundary.js";export{ErrorFallback}from"./components/ErrorFallback.js";export{Page404}from"./pages/404.js";export{Page500}from"./pages/500.js";export{GoogleAnalytic}from"./components/GoogleAnalytic.js";export{FacebookPixel}from"./components/FacebookPixel.js";export{TikTokPixel}from"./components/TikTokPixel.js";export{default as CollectionDetailPage}from"./pages/collection-detail.js";export{PreviewPage}from"./pages/preview.js";export{default as ProductDetailPage}from"./pages/product-detail.js";export{default as StaticPage}from"./pages/static.js";export{BuilderPage}from"./pages/builder.js";export{BuilderUpsellPage}from"./pages/builder-upsell.js";export{StaticPageV2}from"./pages/static-v2.js";export{PreviewTemplate}from"./pages/preview-template.js";
@@ -0,0 +1 @@
1
+ import{StorePropertyDocument as e,ShopShopifyDocument as o}from"@gem-sdk/core";import{ShopMetaDocument as t}from"@gem-sdk/adapter-shopify";import{serializableJson as l,parseJson as i}from"../helpers/parse-json.js";let r=async(r,s)=>{let[a,n,u]=await Promise.allSettled([r([e.toString()]),s([t.toString()]),r([o.toString()])]),p="fulfilled"===n.status?n.value:void 0,d="fulfilled"===a.status?a.value:void 0,m="fulfilled"===u.status?u.value:void 0,c=p?{titleTemplate:`%s | ${p.shop.name}`,defaultTitle:p?.shop.name,title:"Preview",description:p?.shop.description}:{},f=p?.localization.language.isoCode??null,h=p?.localization.country.isoCode??null,y=f&&h?`${f}-${h}`:null;return l({moneyFormat:p?.shop.moneyFormat??null,currency:p?.localization.country.currency.isoCode??null,languageIsoCode:f,countryIsoCode:h,locale:y,swatches:i(d?.storeProperty?.swatchesConfig),swr:{revalidateOnMount:!0},seo:c,timezone:m?.shopShopify?.timezone})};export{r as getBuilderProps};
@@ -0,0 +1 @@
1
+ import{CollectionDocument as e,PublishedThemePagesDocument as t,prefetchQueries as r}from"@gem-sdk/core";import{genCSS as l}from"../helpers/gen-css.js";import{parseBuilderTemplate as o}from"../helpers/normalize.js";import{serializableJson as s}from"../helpers/parse-json.js";let i=i=>async a=>{let p="COLLECTION",[m,n]=await Promise.all([i([e.toString(),{handle:a}]),i([t.toString(),{slug:a,slugType:p}])]),u=n.publishedThemePages?.[0],c=o(u);if(!m||!m?.collection||!u)throw Error("Collection not found");let{collection:d}=m,g=r(c),f=await Promise.allSettled(g.map(({query:e,variables:t,func:r})=>r?r(i,t):e?i([e,t]):{})),h=g.reduce((e,{key:t},r)=>{let l=f[r];return l?.status==="fulfilled"?{...e,[t]:l.value}:e},{});return s({builderData:c,collection:d,pageType:p,themeStyle:l(u.pageStyle?.data),swr:{fallback:h},seo:{title:d.title,description:d.description}})};export{i as getCollectionProps};
@@ -0,0 +1 @@
1
+ import{CollectionsDocument as e}from"@gem-sdk/core";import{serializableJson as o}from"../helpers/parse-json.js";let r=r=>async t=>{let[i]=await Promise.all([r([e.toString(),{first:1,orderBy:{direction:"DESC",field:"UPDATED_AT"},where:{isSample:!1,baseID:t||void 0}}])]);if(!i||!i?.collections?.edges?.[0]?.node)throw Error("Collection not found");let l=i?.collections?.edges?.[0]?.node;return o({collection:l})};export{r as getCollectionSharePageProps};
@@ -0,0 +1 @@
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t}from"@gem-sdk/core";import{ShopMetaDocument as l}from"@gem-sdk/adapter-shopify";import{getFontStyleFromPageTemplate as a,getFontLinkFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n}from"../helpers/normalize.js";import{parseJson as m,serializableJson as d}from"../helpers/parse-json.js";import{captureException as p}from"@sentry/nextjs";import{PublishedThemePageMetafields as u}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as f}from"../helpers/get-metafield.js";import{getCustomFonts as c}from"../custom-fonts.js";import{generateSeoLinks as h}from"../helpers/generate-seo-links.js";let g=(g,T)=>async()=>{try{let[p,_,I,A]=await Promise.allSettled([g([e.toString(),{slugType:"STATIC"}]),g([o.toString()]),T([l]),g([t.toString(),{keys:[u.GLOBAL_META_DESCRIPTION,u.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===p.status)throw Error(p.reason?.[0]);let y="fulfilled"===A.status?A.value:void 0,L=p.value?.publishedThemePages?.[0],S=p.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!L)throw Error("No data builder found for Home page");let C=n(L),[P,E,v,O]=await Promise.all([a(C,void 0,L?.pageStyle?.data),s(L?.pageStyle?.data,void 0),r(g,C),c(S)]),D=L.isMobile??!1,M=f(u.GLOBAL_META_DESCRIPTION,L?.metafields)||y?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_DESCRIPTION)?.value,B=m(f(u.GLOBAL_META_THUMBNAIL,L?.metafields)||y?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_THUMBNAIL)?.value),j="true"===f(u.ILP_DISABLE_GS_FONT,L?.metafields),k="fulfilled"===I.status?I.value:void 0,N="fulfilled"===_.status?_.value:void 0,b=N?.storeProperty?.favicon??"/favicon/favicon-32x32.png",G={defaultTitle:k?.shop.name,title:L?.name??"Home",description:M??k?.shop.description,openGraph:{locale:k?.localization.country.isoCode,title:L?.name??k?.shop.name,description:M??k?.shop.description,images:B?[B]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${N?.storeProperty?.primaryDomain}/`,additionalLinkTags:h({favicon:b,shopMeta:k})},H=k?.localization.language.isoCode??null,w=k?.localization.country.isoCode??null,x=H&&w?`${H}-${w}`:null;return d({id:p.value?.publishedThemePages?.[0]?.id??null,shopID:p.value?.publishedThemePages?.[0]?.shopID??null,themeStyle:i(L?.pageStyle?.data,D),fontStyle:E,elementFontStyle:P,builderData:C,swr:{fallback:v},moneyFormat:k?.shop.moneyFormat??null,currency:k?.localization.country.currency.isoCode??null,languageIsoCode:H,countryIsoCode:w,locale:x,swatches:m(N?.storeProperty?.swatchesConfig),seo:G,mobileOnly:D,disableGsFont:j,gaTrackingId:f(u.ANALYTICS_GA_TRACKING_ID,L?.metafields)??null,facebookPixelId:f(u.ANALYTICS_FB_PIXEL_ID,L?.metafields)??null,tiktokPixelId:f(u.ANALYTICS_TIKTOK_PIXEL_ID,L?.metafields)??null,customCodeHeader:f(u.CUSTOM_CODE_HEADER,L?.metafields)??null,customCodeBody:f(u.CUSTOM_CODE_BODY,L?.metafields)??null,pageHandle:L.handle??null,customFonts:O})}catch(e){throw p(e),e}};export{g as getHomePagePropsV2};
@@ -0,0 +1 @@
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t,prefetchQueries as r}from"@gem-sdk/core";import{ShopMetaDocument as s}from"@gem-sdk/adapter-shopify";import{getFontFromGlobalStyle as a}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as m}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as c}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let f=(f,u)=>async()=>{let h="STATIC",[g,y,_,T]=await Promise.allSettled([f([e.toString(),{slugType:h}]),f([o.toString()]),u([s]),f([t.toString(),{keys:[c.GLOBAL_META_DESCRIPTION,c.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===g.status)return{pageType:h};let A="fulfilled"===T.status?T.value:void 0,L=g.value.publishedThemePages?.[0],z=n(L),v=await a(L?.pageStyle?.data,void 0),S=r(z),x=await Promise.allSettled(S.map(({query:e,variables:o,func:t})=>t?t(f,o):e?f([e,o]):{})),M=S.reduce((e,{key:o},t)=>{let r=x[t];return r?.status==="fulfilled"?{...e,[o]:r.value}:e},{}),I=d(c.GLOBAL_META_DESCRIPTION,L?.metafields)||A?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_DESCRIPTION)?.value,P=p(d(c.GLOBAL_META_THUMBNAIL,L?.metafields)||A?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_THUMBNAIL)?.value),j="fulfilled"===_.status?_.value:void 0,B="fulfilled"===y.status?y.value:void 0,C=B?.storeProperty?.favicon??"/favicon/favicon-32x32.png",E={defaultTitle:j?.shop.name,title:L?.name??"Home",description:I??j?.shop.description,openGraph:{locale:j?.localization.country.isoCode,title:L?.name??j?.shop.name,description:I??j?.shop.description,images:P?[P]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${C}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${C}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${C}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:j?.shop.name,short_name:j?.shop.name,description:j?.shop.description,icons:[{src:`${C}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${C}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},O=j?.localization.language.isoCode??null,k=j?.localization.country.isoCode??null,G=O&&k?`${O}-${k}`:null;return m({themeStyle:i(L?.pageStyle?.data),fontStyle:v,builderData:z,pageType:h,swr:{fallback:M},moneyFormat:j?.shop.moneyFormat??null,currency:j?.localization.country.currency.isoCode??null,locale:G,languageIsoCode:O,countryIsoCode:k,swatches:p(B?.storeProperty?.swatchesConfig),seo:E})};export{f as getHomePageProps};
@@ -0,0 +1 @@
1
+ import{LibraryTemplateDocument as e,StorePropertyDocument as r,LibrarySaleFunnelDocument as t,ShopLibraryPageDocument as a,SaleFunnelDiscountsDocument as l,SaleFunnelOfferDocument as n,ThemePageDocument as o,ThemePageMetaDocument as s}from"@gem-sdk/core";import{captureException as i}from"@sentry/nextjs";import{getFontStyleFromPageTemplate as f,getFontLinkFromGlobalStyle as d}from"../google-fonts.js";import{getFallbackV2 as u}from"../helpers/get-fallback.js";import{parseBuilderLibraryTemplate as c,parseShopLibraryPageTemplate as g,parseBuilderTemplateV2 as h}from"../helpers/normalize.js";import{usePagePreview as m}from"../hooks/usePagePreview.js";import{serializableJson as y}from"../helpers/parse-json.js";import{genCSS as p}from"../helpers/gen-css.js";let P="page_settings",D=async(e,t)=>{let a={themePageId:e.themePageId,first:1,where:{default:!0}},[l,n]=await Promise.allSettled([t([o.toString(),a]),t([r.toString()])]);if("rejected"===l.status)throw Error(l.reason?.[0]);return{dataBuilder:l.value.themePage,pageStyle:l.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:n,dynamicDiscountOffer:void 0,productOffers:[],sellingPlanSetting:{},buyerConsentPreCheck:{}}},S=async(e,t)=>{let a={themePageId:e.themePageId,first:1,where:{default:!0}},i={themePageID:e.themePageId,where:{key:P}},[f,d,u,c,g]=await Promise.allSettled([t([o.toString(),a]),t([r.toString()]),t([l.toString(),{where:{saleFunnelOfferID:e.currentOfferID}}]),t([n.toString(),{saleFunnelOfferId:e.currentOfferID}]),t([s.toString(),i])]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===u.status)throw Error(u.reason?.[0]);if("rejected"===c.status)throw Error(c.reason?.[0]);if("rejected"===g.status)throw Error(g.reason?.[0]);let h={},m={};if("fulfilled"===g.status){let e=g.value.themePageMeta?.edges?.find(e=>e?.node?.key===P)?.node?.value;if(e)try{let r=JSON.parse(e);h=r?.sellingPlanSetting,m=r?.buyerConsentPreCheck}catch(e){console.error("Error parsing selling plan setting:",e)}}return{dataBuilder:f.value.themePage,pageStyle:f.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:d,dynamicDiscountOffer:c.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:u.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:h,buyerConsentPreCheck:m}},w=async(a,l)=>{let n={libraryTemplateId:a.libraryTemplateId},o=[],[s,i]=await Promise.allSettled([l([e.toString(),n]),l([r.toString()])]);if(a.currentOfferID){let[e]=await Promise.allSettled([l([t.toString(),{librarySaleFunnelId:a.librarySaleFunnelID}])]);if("rejected"===e.status)throw Error(e.reason?.[0]);let r=e.value.librarySaleFunnel?.offers?.find(e=>e?.id===a.currentOfferID);r&&(o=r.discounts?.filter(e=>e?.objectType==="PRODUCT"&&"ORDER_VALUE"===e.type).map(e=>({node:{...e}}))||[])}if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:s.value.libraryTemplate,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:void 0,productOffers:o,sellingPlanSetting:{},buyerConsentPreCheck:{}}},I=async(e,t)=>{let o={shopLibraryPageId:e.shopLibraryPageId},[s,i,f,d]=await Promise.allSettled([t([a.toString(),o]),t([r.toString()]),t([l.toString(),{where:{saleFunnelOfferID:e.currentOfferID}}]),t([n.toString(),{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:s.value.shopLibraryPage,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:f.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{},buyerConsentPreCheck:{}}},O=async(t,a)=>{let o={libraryTemplateId:t.libraryTemplateId},[s,i,f,d]=await Promise.allSettled([a([e.toString(),o]),a([r.toString()]),a([l.toString(),{where:{saleFunnelOfferID:t.currentOfferID}}]),a([n.toString(),{saleFunnelOfferId:t.currentOfferID}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:s.value.libraryTemplate,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:f.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{},buyerConsentPreCheck:{}}},b=async e=>{let{id:r,currentOfferID:t,fetcher:a,isLibraryTemplate:l,librarySaleFunnelID:n,isShopLibraryPage:o}=e;return n?await w({libraryTemplateId:r,currentOfferID:t,librarySaleFunnelID:n},a):o&&t?await I({shopLibraryPageId:r,currentOfferID:t},a):l&&t?await O({libraryTemplateId:r,currentOfferID:t},a):t?await S({themePageId:r,currentOfferID:t},a):await D({themePageId:r},a)},v=(e,r,t)=>async a=>{try{let{id:l,currentOfferID:n,isLibraryTemplate:o,isShopLibraryPage:s}=a,{dataBuilder:i,storeProperty:P,productOffers:D,pageStyle:S,dynamicDiscountOffer:w,sellingPlanSetting:I,buyerConsentPreCheck:O}=await b({id:l,currentOfferID:n,fetcher:e,isLibraryTemplate:o,isShopLibraryPage:s,librarySaleFunnelID:r});if(!i)throw Error(`No data builder found for slug: /preview/${l}`);let v=r||o&&n?c(i):s?g(i):h(i),j=t||e,[E,T,F]=await Promise.all([f(v,void 0,S),d(S,void 0),u(j,v,!1)]),{seo:C,pageConfig:R}=m(i,P);return y({themeStyle:p(S),seo:C,...R,elementFontStyle:E,fontStyle:T,builderData:v,swr:{fallback:F},productOffers:D,dynamicDiscountOffer:w,sellingPlanSetting:I,buyerConsentPreCheck:O})}catch(e){throw console.log("error",e),i(e),e}};export{O as fetchLibraryTemplateDataByID,S as fetchPostPurchasePageDataByID,D as fetchSalePageDataByID,I as fetchShopLibraryPageDataByID,w as fetchThemePageDataByTemplateID,v as getPostPurchasePropsPreview,b as getRelevantPageData};
@@ -0,0 +1 @@
1
+ import{StorePropertyDocument as e}from"@gem-sdk/core";import{captureException as l}from"@sentry/nextjs";import{getCustomFonts as t}from"../custom-fonts.js";import{getFontStyleFromPageTemplate as o,getFontLinkFromGlobalStyle as r}from"../google-fonts.js";import{genCSS as s}from"../helpers/gen-css.js";import{parseBuilderTemplateV2 as n}from"../helpers/normalize.js";import{serializableJson as a,parseJson as i}from"../helpers/parse-json.js";import{createFetcher as u}from"../fetcher.js";import{getCollectionSharePageProps as p}from"./get-collection-share-page-props.js";let c=c=>async f=>{try{let{sharedPage:l,customFonts:m,publicToken:d}=await c([f]);if(!l||!d)return null;let{page:y,themeStyle:P,pageMeta:v,shopMeta:C,moneyFormat:_,moneyWithCurrencyFormat:g}=l,{sectionPosition:h}=y??{},O=n({...l,sectionPosition:h}),j=null,I=null,L=null;if(y?.type==="GP_COLLECTION"){let e=(v??[]).find(e=>"selected_preview_collection"===e.key)?.value,l=e?JSON.parse(e??{}):null;I=l?.collectionId,L=l?.collectionTitle}let T=null;if(y?.type==="GP_PRODUCT"){let e=(v??[]).find(e=>"selected_preview_product"===e.key)?.value;T=e?JSON.parse(e??{}):null}let[S,w,N,D,G]=await Promise.allSettled([o(O,void 0,P?.data),r(P?.data),t(m),u(d)([e.toString()]),y?.type==="GP_COLLECTION"?p(u(d))(I??void 0):null]);j="fulfilled"===G.status?G.value?.collection:null;let k="fulfilled"===S.status?S.value:null,E="fulfilled"===w.status?w.value:null,U="fulfilled"===N.status?N.value:null,b="fulfilled"===D.status?D.value:void 0;return a({builderData:O,page:y,themeStyle:s(P?.data,!1),pageMeta:v,shopMeta:C,elementFontStyle:k,fontStyle:E,customFonts:U,publicStoreFrontData:d?{token:d,endpoint:process.env.NEXT_PUBLIC_API_URL??""}:null,pageType:y?.type,moneyFormat:_,moneyWithCurrencyFormat:g,swatches:i(b?.storeProperty?.swatchesConfig),collection:j,dynamicCollection:y?.type==="GP_COLLECTION"?{collectionId:j?.baseID,collectionTitle:L}:null,dynamicProduct:y?.type==="GP_PRODUCT"?T:null})}catch(e){return l(e),null}};export{c as getSharePageContentProps};
@@ -0,0 +1 @@
1
+ import{getCollectionProps as r}from"./get-collection-props.js";import{getProductProps as t}from"./get-product-props.js";import{getStaticPageProps as e}from"./get-static-page-props.js";let o=(o,p)=>async(s,c)=>{switch(s){case"COLLECTION":return r(o)(c);case"PRODUCT":return t(o)(c);default:return e(o,p)(c)}};export{o as getPreviewProps};
@@ -0,0 +1 @@
1
+ import{getProductBySlug as e,PublishedThemePagesDocument as t,prefetchQueries as r}from"@gem-sdk/core";import{genCSS as a}from"../helpers/gen-css.js";import{parseBuilderTemplate as l}from"../helpers/normalize.js";import{serializableJson as s}from"../helpers/parse-json.js";let o=o=>async i=>{let m="PRODUCT",[d,p]=await Promise.all([e(o,i),o([t.toString(),{slug:i,slugType:m}])]),u=p.publishedThemePages?.[0];if(!d||!u)throw Error("Product not found");let g=l(u),f=r(g),h=await Promise.allSettled(f.map(({query:e,variables:t,func:r})=>r?r(o,t):e?o([e,t]):{})),n=f.reduce((e,{key:t},r)=>{let a=h[r];return a?.status==="fulfilled"?{...e,[t]:a.value}:e},{});return s({builderData:g,themeStyle:a(u.pageStyle?.data),pageType:m,swr:{fallback:n},seo:{title:d.title,description:d.description,openGraph:{images:d.featuredImage?.src?[{url:d.featuredImage.src,alt:d.featuredImage?.alt,height:d.featuredImage?.height,width:d.featuredImage?.width,type:d.featuredImage?.contentType}]:[]}},product:d})};export{o as getProductProps};
@@ -0,0 +1 @@
1
+ import{captureException as t}from"@sentry/nextjs";import{serializableJson as e}from"../helpers/parse-json.js";let l=l=>async r=>{try{let{sharedPage:t,publicToken:a}=await l([r]);if(!t||!a)return null;let{share:n,shopMeta:i,page:o,pageMeta:s}=t,m=n?.thumbnails?Array.isArray(n.thumbnails)?n.thumbnails.map(t=>({url:t})):"string"==typeof n.thumbnails?[{url:n.thumbnails}]:[]:[],u={defaultTitle:i?.shop?.name??"",title:n?.title,openGraph:{site_name:i?.shop?.name??"",locale:i?.localization?.country?.isoCode??"",title:n?.title??i?.shop?.name??"",images:m},nofollow:!0,noindex:!0};return e({seo:u,share:n,page:o,pageMeta:s})}catch(e){return t(e),null}};export{l as getSharePageProps};
@@ -0,0 +1 @@
1
+ import{PreviewThemePageDocument as e,StorePropertyDocument as o}from"@gem-sdk/core";import{ShopMetaDocument as t}from"@gem-sdk/adapter-shopify";import{captureException as a}from"@sentry/nextjs";import{getFontStyleFromPageTemplate as r,getFontLinkFromGlobalStyle as l}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as n}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as s,extractPageBackground as m}from"../helpers/normalize.js";import{parseJson as c,serializableJson as d}from"../helpers/parse-json.js";import{getCustomFonts as p}from"../custom-fonts.js";import{sentryCaptureException as u}from"../helpers/sentry.js";import{generateSeoLinks as f}from"../helpers/generate-seo-links.js";let h=(h,g)=>async y=>{try{let a="STATIC",v={handleURL:y,pageType:a},[k,w,P]=await Promise.allSettled([h([e.toString(),v]),h([o.toString()]),g([t])]);if("rejected"===k.status)throw u("PreviewThemePageDocument",k.reason,{variables:v,theme:k}),Error(k.reason?.[0]);let j=k.value.previewThemePage;if(!j)throw Error(`No data builder found for slug: /preview/${y}`);let S=j.customFonts,b={...j,shopID:""},C=s(b),[T,x,I,D]=await Promise.all([r(C,void 0,j?.themeStyle?.data),l(j?.themeStyle?.data),n(h,C),p(S)]),z=!!j.isMobile,E=j?.dataSEO?.find(e=>e?.key==="global-meta-description")?.value,$=c(j?.dataSEO?.find(e=>e?.key==="global-meta-thumbnail")?.value),F="fulfilled"===P.status?P.value:void 0,B="fulfilled"===w.status?w.value:void 0,L=B?.storeProperty?.favicon??"/favicon/favicon-32x32.png",M={defaultTitle:F?.shop.name,title:j?.name,description:E??F?.shop.description,openGraph:{locale:F?.localization.country.isoCode,title:j?.name??F?.shop.name,description:E??F?.shop.description,images:$?[$]:[]},nofollow:!0,noindex:!0,canonical:`/preview/${y}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:f({favicon:L,shopMeta:F})},O=F?.localization.language.isoCode??null,A=F?.localization.country.isoCode??null,G=O&&A?`${O}-${A}`:null;return d({themeStyle:i(j?.themeStyle?.data,z),fontStyle:x,elementFontStyle:T,builderData:C,pageType:a,moneyFormat:F?.shop?.moneyFormat??null,currency:F?.localization?.country?.currency?.isoCode??null,languageIsoCode:O,countryIsoCode:A,locale:G,swr:{fallback:I},swatches:c(B?.storeProperty?.swatchesConfig),seo:M,mobileOnly:z,gaTrackingId:j.analytic?.gaTrackingID??null,facebookPixelId:j.analytic?.fbPixelID??null,tiktokPixelId:j.analytic?.tiktokPixelID??null,customCodeHeader:j.customCode?.header??null,customCodeBody:j.customCode?.body??null,customFonts:D,pageBackground:m(b),interaction:j?.interaction})}catch(e){throw a(e),e}};export{h as getStaticPagePropsPreview};
@@ -0,0 +1 @@
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as t,PublishedShopMetasDocument as o}from"@gem-sdk/core";import{ShopMetaDocument as l}from"@gem-sdk/adapter-shopify";import{getStaticFontFacesFromPageTemplate as a,getStaticFontFacesFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n,extractPageBackground as d}from"../helpers/normalize.js";import{parseJson as u,serializableJson as p}from"../helpers/parse-json.js";import{captureException as m}from"@sentry/nextjs";import{getCustomFonts as f}from"../custom-fonts.js";import{getPublishedThemePageMetafieldByKey as c}from"../helpers/get-metafield.js";import{PublishedThemePageMetafields as h}from"../../constants/index.js";import{generateSeoLinks as _}from"../helpers/generate-seo-links.js";let T=(T,g)=>async E=>{try{let m="STATIC",[I,L,A,O]=await Promise.allSettled([T([e.toString(),{slug:E,slugType:m}]),T([t.toString()]),g([l]),T([o.toString(),{keys:["source_font",h.GLOBAL_META_DESCRIPTION,h.GLOBAL_META_THUMBNAIL,h.SHOW_PRICE_CURRENCY,h.MONEY_WITH_CURRENCY_FORMAT]}])]);if("rejected"===I.status)throw Error(I.reason?.[0]);let S="fulfilled"===O.status?O.value:void 0,y=S?.publishedShopMetas?.find(e=>e?.key==="source_font"),C=S?.publishedShopMetas?.find(e=>e?.key===h.SHOW_PRICE_CURRENCY),M=S?.publishedShopMetas?.find(e=>e?.key===h.MONEY_WITH_CURRENCY_FORMAT),P=I.value.publishedThemePages?.[0],N=I.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!P)throw Error(`No data builder found for slug: /${E}`);let v=n(P),[k,b,B,D]=await Promise.all([a({pageTemplate:v,sourceFont:y?.value,data:P?.pageStyle?.data}),s({data:P?.pageStyle?.data,sourceFont:y?.value}),r(T,v),f(N)]),R=P.isMobile??!1,Y=c(h.GLOBAL_META_DESCRIPTION,P?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_DESCRIPTION)?.value,G=c(h.GLOBAL_META_TITLE,P?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_TITLE)?.value,j=u(c(h.GLOBAL_META_THUMBNAIL,P?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_THUMBNAIL)?.value),F=c(h.NOINDEX_KEY,P?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.NOINDEX_KEY)?.value,H=c(h.NOFOLLOW_KEY,P?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.NOFOLLOW_KEY)?.value;console.log("\uD83D\uDE80 ~ getStaticPagePropsV2 ~ dataBuilder?.metafields:",P?.metafields);let w="true"===c(h.ILP_DISABLE_GS_FONT,P?.metafields);console.log("\uD83D\uDE80 ~ getStaticPagePropsV2 ~ disableGsFont 1:",w);let U="fulfilled"===A.status?A.value:void 0,x="fulfilled"===L.status?L.value:void 0,K=x?.storeProperty?.favicon??"/favicon/favicon-32x32.png",W={defaultTitle:U?.shop.name,title:G||P?.name,description:Y??U?.shop.description,openGraph:{locale:U?.localization.country.isoCode,title:(G||P?.name)??U?.shop.name,description:Y??U?.shop.description,images:j?[j]:[]},noindex:"true"===F,nofollow:"true"===H,canonical:`https://${x?.storeProperty?.primaryDomain}/${E}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:_({favicon:K,shopMeta:U})},z=U?.localization.language.isoCode??null,$=U?.localization.country.isoCode??null,X=z&&$?`${z}-${$}`:null;return p({id:I.value?.publishedThemePages?.[0]?.id??null,shopID:I.value?.publishedThemePages?.[0]?.shopID??null,themeStyle:i(P?.pageStyle?.data,R),fontStyle:b,elementFontStyle:k,builderData:v,pageType:m,moneyFormat:C?.value==="true"?M?.value:U?.shop.moneyFormat??null,currency:U?.localization.country.currency.isoCode??null,languageIsoCode:z,countryIsoCode:$,locale:X,swr:{fallback:B},swatches:u(x?.storeProperty?.swatchesConfig),seo:W,mobileOnly:R,disableGsFont:w,gaTrackingId:c(h.ANALYTICS_GA_TRACKING_ID,P?.metafields)??null,facebookPixelId:c(h.ANALYTICS_FB_PIXEL_ID,P?.metafields)??null,tiktokPixelId:c(h.ANALYTICS_TIKTOK_PIXEL_ID,P?.metafields)??null,customCodeHeader:c(h.CUSTOM_CODE_HEADER,P?.metafields)??null,customCodeBody:c(h.CUSTOM_CODE_BODY,P?.metafields)??null,pageHandle:P.handle??null,customFonts:D,interaction:P?.interaction,pageBackground:d(P)})}catch(e){throw m(e),e}};export{T as getStaticPagePropsV2};
@@ -0,0 +1 @@
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as t,PublishedShopMetasDocument as o,prefetchQueries as r}from"@gem-sdk/core";import{ShopMetaDocument as s}from"@gem-sdk/adapter-shopify";import{getFontLinkFromGlobalStyle as a}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as c}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as m}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let f=(f,u)=>async h=>{let g="STATIC",[y,_,T,A]=await Promise.allSettled([f([e.toString(),{slug:h,slugType:g}]),f([t.toString()]),u([s]),f([o.toString(),{keys:["source_font",m.GLOBAL_META_DESCRIPTION,m.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)return{pageType:g};let L="fulfilled"===A.status?A.value:void 0,z=y.value.publishedThemePages?.[0],S=n(z),v=await a(z?.pageStyle?.data),x=r(S),M=await Promise.allSettled(x.map(({query:e,variables:t,func:o})=>o?o(f,t):e?f([e,t]):{})),I=x.reduce((e,{key:t},o)=>{let r=M[o];return r?.status==="fulfilled"?{...e,[t]:r.value}:e},{}),P=d(m.GLOBAL_META_DESCRIPTION,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_DESCRIPTION)?.value,j=p(d(m.GLOBAL_META_THUMBNAIL,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_THUMBNAIL)?.value),B="fulfilled"===T.status?T.value:void 0,C="fulfilled"===_.status?_.value:void 0,E=C?.storeProperty?.favicon??"/favicon/favicon-32x32.png",O={defaultTitle:B?.shop.name??"",title:z?.name??"",description:P??B?.shop.description??"",openGraph:{locale:B?.localization.country.isoCode??"",title:z?.name??B?.shop.name??"",description:P??B?.shop.description??"",images:j?[j]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`/${h}`,additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${E}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${E}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${E}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:B?.shop.name,short_name:B?.shop.name,description:B?.shop.description,icons:[{src:`${E}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${E}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},k=B?.localization.language.isoCode??null,$=B?.localization.country.isoCode??null,G=k&&$?`${k}-${$}`:null;return c({themeStyle:i(z?.pageStyle?.data),fontStyle:v,builderData:S,pageType:g,moneyFormat:B?.shop.moneyFormat??null,currency:B?.localization.country.currency.isoCode??null,languageIsoCode:k,countryIsoCode:$,locale:G,swr:{fallback:I},swatches:p(C?.storeProperty?.swatchesConfig),seo:O})};export{f as getStaticPageProps};
@@ -0,0 +1,8 @@
1
+ let t=t=>{let o={};return t?.forEach(t=>{if(!t)return;let e=`${t.fontFamily}_${t.fontStyle}_${t.fontWeight}`,n={font:{fontFamily:t.fontFamily,fontStyle:t.fontStyle,fontWeight:t.fontWeight},urls:[{url:t.backupFilePath||t.filePath,mimeType:t.mimeType}]};o[e]?o[e]?.urls.push(n?.urls?.[0]):o[e]=n}),o},o=t=>({"font/ttf":"truetype","application/x-font-opentype":"opentype","application/font-woff":"woff","application/font-woff2":"woff2"})[t],e=t=>{let e=[];for(let[,n]of Object.entries(t))e.push(`
2
+ @font-face {
3
+ font-family: '${n.font.fontFamily}';
4
+ src: ${n.urls.map(t=>`url('${t.url}') format('${o(t.mimeType)}')`).join("\n")};
5
+ font-style: ${n?.font?.fontStyle??"normal"};
6
+ font-weight: ${n?.font?.fontWeight??"normal"};
7
+ }
8
+ `);return e.map(t=>t).join("\n")},n=o=>{if(!o)return null;let n=t(o);return e(n)};export{e as composeFontFaces,t as composeFontMimeType,o as formatName,n as getCustomFonts};