PageSourceSearch

https://sportnahrung-mangold.de/assets/shopify-qPNg9pJ8.js

js sportnahrung-mangold.de collected 2026-10-07 05:20:12 UTC 22,835 bytes, 76 lines download raw bytes

1var e=[{id:`gid://shopify/Product/1001`,title:`Elite Creatin Monohydrat`,handle:`elite-creatin`,vendor:`Human Protect`,description:`100% Reines Creatin Monohydrat für maximale Kraftsteigerung.`,tags:[`Protein`,`Creatin`,`Bestseller`],totalInventory:150,priceRange:{minVariantPrice:{amount:`29.90`,currencyCode:`EUR`}},images:{edges:[{node:{url:`https://picsum.photos/id/1050/600/600?grayscale`,altText:`Creatin`}}]},variants:{edges:[{node:{id:`gid://shopify/ProductVariant/2001`,title:`500g`,quantityAvailable:150,price:{amount:`29.90`,currencyCode:`EUR`},compareAtPrice:{amount:`39.90`,currencyCode:`EUR`}}}]},rating:4.7,ratingCount:2092},{id:`gid://shopify/Product/1002`,title:`L-Glutamin Pure`,handle:`l-glutamin-pure`,vendor:`Human Protect`,description:`Der wichtigste Baustoff für dein Immunsystem.`,tags:[`Health`,`Recovery`,`Glutamin`],totalInventory:80,priceRange:{minVariantPrice:{amount:`24.90`,currencyCode:`EUR`}},images:{edges:[{node:{url:`https://picsum.photos/id/1059/600/600?grayscale`,altText:`Glutamin`}}]},variants:{edges:[{node:{id:`gid://shopify/ProductVariant/2002`,title:`500g`,quantityAvailable:80,price:{amount:`24.90`,currencyCode:`EUR`}}}]},rating:4.5,ratingCount:590},{id:`gid://shopify/Product/1003`,title:`Elite T-Booster Complex`,handle:`testo-booster`,vendor:`USN`,description:`Natürlicher Testosteron Booster.`,tags:[`Performance`,`Booster`,`Testo`],totalInventory:45,priceRange:{minVariantPrice:{amount:`39.90`,currencyCode:`EUR`}},images:{edges:[{node:{url:`https://picsum.photos/id/1060/600/600?grayscale`,altText:`T-Booster`}}]},variants:{edges:[{node:{id:`gid://shopify/ProductVariant/2003`,title:`120 Caps`,quantityAvailable:45,price:{amount:`39.90`,currencyCode:`EUR`}}}]},rating:4.2,ratingCount:245},{id:`gid://shopify/Product/1004`,title:`Premium Whey Isolat`,handle:`premium-whey`,vendor:`Gold Nutrition`,description:`Schnell verfügbares Protein für nach dem Training.`,tags:[`Protein`,`Whey`],totalInventory:200,priceRange:{minVariantPrice:{amount:`49.90`,currencyCode:`EUR`}},images:{edges:[{node:{url:`https://picsum.photos/id/1058/600/600?grayscale`,altText:`Whey`}}]},variants:{edges:[{node:{id:`gid://shopify/ProductVariant/2004`,title:`1kg`,quantityAvailable:200,price:{amount:`49.90`,currencyCode:`EUR`}}}]}
1,rating:4.8,ratingCount:10591}];function t(e){let t={...e};if(e.metafields&&Array.isArray(e.metafields)){for(let n of e.metafields)if(n){if(n.key===`rating`&&n.value)try{let e=JSON.parse(n.value);t.rating=typeof e==`object`?Number.parseFloat(e.value):Number.parseFloat(n.value)}catch{t.rating=Number.parseFloat(n.value)||void 0}n.key===`rating_count`&&n.value&&(t.ratingCount=Number.parseInt(n.value,10)||0),n.namespace===`custom`&&n.key===`instagram_video`&&n.value&&(t.instagramVideoUrl=n.value.trim())}}return t}var n=2,r=[300,800],i=6,a=120,o=0,s=0,c=[];async function l(){o>=i&&await new Promise(e=>c.push(e)),o++;let e=Date.now(),t=Math.max(e,s);s=t+a;let n=t-e;n>0&&await new Promise(e=>setTimeout(e,n))}function u(){o=Math.max(0,o-1);let e=c.shift();e&&e()}async function d(e,t={},i=0){let a=e=>new Promise(t=>setTimeout(t,e));await l();let o,s;try{if(o=await fetch(`https://derproteinbunker.myshopify.com/api/2026-01/graphql.json`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Shopify-Storefront-Access-Token":`b58b85b6849f96f7d30c39f66b5a4a14`},body:JSON.stringify({query:e,variables:t})}),!o.ok){if((o.status===430||o.status===429||o.status>=500)&&i<n)return u(),await a(r[i]),d(e,t,i+1);throw Error(`Shopify HTTP ${o.status}`)}s=await o.json()}catch(o){if(u(),i<n&&(o instanceof TypeError||/failed to fetch/i.test(String(o))))return await a(r[i]),d(e,t,i+1);throw o}if(u(),s.errors){if(s.errors.some(e=>/throttle/i.test(e.message||``))&&i<n)return await a(r[i]),d(e,t,i+1);throw Error(s.errors[0].message)}return s.data}var f=`snm_mock_cart_store`;function p(){try{let e=localStorage.getItem(f);if(e)return JSON.parse(e)}catch(e){console.warn(`[shopify] getMockCart: gespeicherter Cart nicht lesbar, baue neuen`,e)}let e={id:`mock-cart-${Date.now()}`,checkoutUrl:`/checkout`,totalQuantity:0,cost:{subtotalAmount:{amount:`0.00`,currencyCode:`EUR`},totalAmount:{amount:`0.00`,currencyCode:`EUR`}},discountAllocations:[],lines:{edges:[]}};return localStorage.setItem(f,JSON.stringify(e)),e}function m(e){let t=0,n=0;
1return e.lines.edges.forEach(e=>{t+=e.node.quantity;let r=Number.parseFloat(e.node.merchandise.price.amount);Number.isNaN(r)||(n+=r*e.node.quantity),e.node.cost||(e.node.cost={subtotalAmount:e.node.merchandise.price,totalAmount:e.node.merchandise.price}),e.node.discountAllocations||(e.node.discountAllocations=[])}),e.totalQuantity=t,e.cost.subtotalAmount.amount=n.toFixed(2),e.cost.totalAmount.amount=n.toFixed(2),localStorage.setItem(f,JSON.stringify(e)),e}async function h(n){let r=`
2    {
3      products(first: 250, query: "${n||`tag:proteinbunker OR tag:featured OR tag:bundles OR tag:gear OR tag:supplements OR tag:Protein OR tag:Performance OR tag:Health`}") {
4        edges {
5          node {
6            id title handle description descriptionHtml vendor tags availableForSale
7            priceRange { minVariantPrice { amount currencyCode } }
8            images(first: 6) { edges { node { url altText } } }
9            variants(first: 20) {
10              edges {
11                node {
12                  availableForSale id title quantityAvailable
13                  price { amount currencyCode }
14                  compareAtPrice { amount currencyCode }
15                }
16              }
17            }
18          }
19        }
20      }
21    }
22  `;try{return(await d(r))?.products?.edges.map(e=>t(e.node))||[]}catch(t){return console.warn(`[shopify] Produktabfrage fehlgeschlagen, Fallback auf Mock-Daten`,t),e}}async function g(e,n,r){let i=`gid://shopify/Collection/`+e,a=`gid://shopify/Collection/`+n,o=`{ deal: node(id: "`+i+`") { ... on Collection { products(first: 20) { edges { node { `+D+` } } } } } social: node(id: "`+a+`") { ... on Collection { products(first: 20) { edges { node { `+D+` } } } } } mhd: products(first: 250, query: "`+r+`") { edges { node { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { availableForSale id title quantityAvailable price { amount currencyCode } compareAtPrice { amount currencyCode } } } } } } } }`;try{let e=await d(o);return{deal:e?.deal?.products?.edges?.map(e=>t(e.node))??[],social:e?.social?.products?.edges?.map(e=>t(e.node))??[],mhd:e?.mhd?.edges?.map(e=>t(e.node))??[]}}catch(e){return console.warn(`[shopify] fetchHomeDeals FAILED`,e),{deal:[],social:[],mhd:[]}}}async function _(e){if(!e.length)return{};let t=e.map((e,t)=>`p${t}: node(id: "gid://shopify/Product/${e}") { ... on Product {
23      images(first: 1) { edges { node { url } } }
24      priceRange { minVariantPrice { amount currencyCode } }
25      variants(first: 20) { edges { node { title availableForSale quantityAvailable price { amount currencyCode } compareAtPrice { amount currencyCode } } } }
26    } }`).join(` `);try{let n=await d(`{ ${t} }`),r={};return e.forEach((e,t)=>{let i=n?.[`p${t}`];i&&(r[e]={image:i.images?.edges?.[0]?.node?.url,variants:i.variants,fallbackPrice:i.priceRange?.minVariantPrice?.amount,fallbackCurrency:i.priceRange?.minVariantPrice?.currencyCode})}),r}catch{return{}}}async function v(e,t=6){if(!e.length)return{};let n=e.map((e,n)=>`c${n}: node(id: "gid://shopify/Collection/${e}") { ... on Collection { products(first: ${t}) { edges { node {
27      images(first: 1) { edges { node { url } } }
28      priceRange { minVariantPrice { amount currencyCode } }
29      variants(first: 20) { edges { node { title availableForSale quantityAvailable price { amount currencyCode } compareAtPrice { amount currencyCode } } } }
30    } } } } }`).join(` `);try{let t=await d(`{ ${n} }`),r={};return e.forEach((e,n)=>{r[e]=(t?.[`c${n}`]?.products?.edges??[]).map(e=>({image:e.node.images?.edges?.[0]?.node?.url,variants:e.node.variants,fallbackPrice:e.node.priceRange?.minVariantPrice?.amount,fallbackCurrency:e.node.priceRange?.minVariantPrice?.currencyCode}))}),r}catch{return{}}}var y=`
31  id checkoutUrl totalQuantity
32  discountCodes { code applicable }
33  cost {
34    subtotalAmount { amount currencyCode }
35    totalAmount { amount currencyCode }
36  }
37  discountAllocations {
38    discountedAmount { amount currencyCode }
39    ... on CartAutomaticDiscountAllocation { title }
40    ... on CartCodeDiscountAllocation { code }
41    ... on CartCustomDiscountAllocation { title }
42  }
43  lines(first: 100) {
44    edges {
45      node {
46        id quantity
47        cost {
48          subtotalAmount { amount currencyCode }
49          totalAmount { amount currencyCode }
50        }
51        discountAllocations {
52          discountedAmount { amount currencyCode }
53          ... on CartAutomaticDiscountAllocation { title }
54          ... on CartCodeDiscountAllocation { code }
55          ... on CartCustomDiscountAllocation { title }
56        }
57        merchandise {
58          ... on ProductVariant {
59            id title
60            image { url altText }
61            price { amount currencyCode }
62            compareAtPrice { amount currencyCode }
63            product { id title handle vendor productType }
64          }
65        }
66      }
67    }
68  }
69`;async function b(){let e=`mutation cartCreate($input: CartInput!) { cartCreate(input: $input) { cart { ${y} } } }`;
69try{return(await d(e,{input:{attributes:[{key:`source`,value:`snm`}]}})).cartCreate.cart}catch(e){return console.warn(`[shopify] createCart FAILED, Fallback auf Mock-Cart`,e),p()}}async function x(e,t){if(!e||e.startsWith(`mock-cart`))return!1;try{let n=(await d(`mutation cartAttributesUpdate($cartId: ID!, $attributes: [AttributeInput!]!) {
70    cartAttributesUpdate(cartId: $cartId, attributes: $attributes) { cart { id } userErrors { field message } }
71  }`,{cartId:e,attributes:t}))?.cartAttributesUpdate?.userErrors??[];return n.length?(console.warn(`[shopify] cartAttributesUpdate`,n),!1):!0}catch(e){return console.warn(`[shopify] cartAttributesUpdate FAILED`,e),!1}}async function S(e){if(e.startsWith(`mock-cart`))return p();let t=`query getCart($cartId: ID!) { cart(id: $cartId) { ${y} } }`;try{return(await d(t,{cartId:e})).cart}catch(t){return console.warn(`[shopify] getCart FAILED für`,e,`- Fallback auf Mock-Cart`,t),p()}}async function C(t,n,r=1){if(t.startsWith(`mock-cart`)){let t=p(),i=null,a=null;for(let t of e){let e=t.variants.edges.find(e=>e.node.id===n);if(e){i=t,a=e.node;break}}(!i||!a)&&(i={title:`Demo Product`,handle:`demo`},a={id:n,title:`Standard`,price:{amount:`19.99`,currencyCode:`EUR`}}),a.price.currencyCode||(a.price.currencyCode=`EUR`);let o=t.lines.edges.find(e=>e.node.merchandise.id===n);return o?o.node.quantity+=r:t.lines.edges.push({node:{id:`line-${Date.now()}`,quantity:r,merchandise:{id:n,title:a.title,image:i.images?.edges?.[0]?.node||{url:`https://picsum.photos/200`,altText:`Placeholder`},price:a.price,product:{id:i.id||i.handle,title:i.title,handle:i.handle}}}}),m(t)}return(await d(`mutation cartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!) { cartLinesAdd(cartId: $cartId, lines: $lines) { cart { ${y} } } }`,{cartId:t,lines:[{merchandiseId:n,quantity:r}]})).cartLinesAdd.cart}async function w(e,t){if(e.startsWith(`mock-cart`)){let e=p();return e.lines.edges=e.lines.edges.filter(e=>!t.includes(e.node.id)),m(e)}return(await d(`mutation cartLinesRemove($cartId: ID!, $lineIds: [ID!]!) { cartLinesRemove(cartId: $cartId, lineIds: $lineIds) { cart { ${y} } } }`,{cartId:e,lineIds:t})).cartLinesRemove.cart}async function T(e,t,n){if(e.startsWith(`mock-cart`)){let e=p(),r=e.lines.edges.find(e=>e.node.id===t);return r&&(r.node.quantity=n),m(e)}return(await d(`mutation cartLinesUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!) { cartLinesUpdate(cartId: $cartId, lines: $lines) { cart { ${y} } } }`,{cartId:e,lines:[{id:t,quantity:n}]})).cartLinesUpdate.cart}async function E(e,t){if(e.startsWith(`mock-cart`))return p();let n=(await d(`mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!]!) {
72    cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
73      cart { ${y} }
74      userErrors { field message }
75    }
76  }`,{cartId:e,discountCodes:t})).cartDiscountCodesUpdate;if(n.userErrors?.length)throw Error(n.userErrors[0].message);return n.cart}var D=`id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type }`;async function O(n,r=12){let i=`{ collection(handle: "${n}") { products(first: ${r}) { edges { node { ${D} } } } } }`;try{let n=await d(i);return n?.collection?n.collection.products.edges.map(e=>t(e.node)):e}catch(t){return console.warn(`[shopify] getCollectionByHandle FAILED für`,n,`- Fallback auf Mock-Daten`,t),e}}async function k(e,n=50){return N(`coll:`+e+`:`+n,async()=>{let r=`{ node(id: "`+(`gid://shopify/Collection/`+e)+`") { ... on Collection { products(first: `+n+`) { edges { node { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } } } } } }`;try{let n=(await d(r))?.node?.products?.edges?.map(e=>t(e.node));return!n||n.length===0?(console.warn(`[shopify] getCollectionById: 0 products for`,e),[]):n}catch(t){return console.warn(`[shopify] getCollectionById FAILED for`,e,t),[]}})}var A=5*6e4,j=new Map,M=new Map;function N(e,t){let n=j.get(e);if(n&&Date.now()-n.ts<A)return Promise.resolve(n.data);let r=M.get(e);if(r)return r;let i=t().then(t=>(Array.isArray(t)&&t.length===0||j.set(e,{data:t,ts:Date.now()}),M.delete(e),t)).catch(t=>{throw M.delete(e),t});return M.set(e,i),i}var P=null,F=null;async function I(e){if(P&&Date.now()-P.ts<A)return e&&e(P.data,!0),P.data;if(F){let t=await F;return e&&e(t,!0),t}F=L(e);try{let e=await F;return P={data:e,ts:Date.now()},e}finally{F=null}}async function L(e){let n=[],r=!0,i=null,a=0;for(;r&&a<10;){let o=`{ products(first: 250`+(i?`, after: "`+i+`"`:``)+`) { pageInfo { hasNextPage endCursor } edges { node { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } } } }`;try{let s=await d(o),c=s?.products?.edges,l=s?.products?.pageInfo;if(!c||c.length===0)break;n.push(...c.map(e=>t(e.node))),r=l?.hasNextPage??!1,i=l?.endCursor??null,a++,e&&e([...n],!(r&&a<10))}catch(e){console.warn(`[shopify] fetchAllProducts FAILED at call`,a+1,e);break}}return n}async function R(e,n=20){let r=`{ node(id: "`+(`gid://shopify/Collection/`+e)+`") { ... on Collection { products(first: `+n+`) { edges { node { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } } } } } }`;try{let i=(await d(r))?.node?.products?.edges?.map(e=>t(e.node));return!i||i.length===0?(console.warn(`[shopify] getCollectionByIdWithSocial: 0 products, falling back to standard`),k(e,n)):i}catch(t){return console.warn(`[shopify] getCollectionByIdWithSocial FAILED, falling back to standard`,t),k(e,n)}}async function z(e){let n=`{ product(handle: "`+e+`") { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } }`;try{let e=await d(n);return e?.product?t(e.product):null}catch(t){return console.warn(`[shopify] getProductByHandle FAILED for`,e,t),null}}async function B(e){let n=`{ node(id: "gid://shopify/Product/`+e+`") { ... on Product { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } } }`;try{let e=await d(n);return e?.node?t(e.node):null}catch(t){return console.warn(`[shopify] getProductById FAILED for`,e,t),null}}var V=new Map;function H(e){let t=(e??[]).filter(e=>e?.url&&(e.mimeType??``).toLowerCase().includes(`mp4`));if(t.length===0)return;let n=t.filter(e=>(e.height??0)<=720).sort((e,t)=>
76(t.height??0)-(e.height??0));return n.length>0?n[0].url:[...t].sort((e,t)=>(e.height??0)-(t.height??0))[0].url}function U(e){if(!e)return Promise.resolve([]);let t=V.get(e);if(t)return t;let n=d(`query ProductMedia($id: ID!) { product(id: $id) { media(first: 20) { edges { node { mediaContentType alt previewImage { url altText } ... on Video { sources { url mimeType height } } } } } } }`,{id:e}).then(e=>{let t=e?.product?.media?.edges??[],n=[];for(let e of t){let t=e?.node;if(!t)continue;let r=t.previewImage?.url??``,i=t.alt||t.previewImage?.altText||null;if(t.mediaContentType===`IMAGE`&&r)n.push({kind:`image`,url:r,altText:i});else if(t.mediaContentType===`VIDEO`){let e=H(t.sources);e&&n.push({kind:`video`,url:r,altText:i,videoSrc:e})}}return n}).catch(t=>(console.warn(`[shopify] getProductMedia FAILED for`,e,t),V.delete(e),[]));return V.set(e,n),n}async function W(e){if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=50){let i=e.slice(r,r+50);try{let e=await d(`query ProductsByIds($ids: [ID!]!) { nodes(ids: $ids) { ... on Product { id title handle description descriptionHtml vendor tags availableForSale priceRange { minVariantPrice { amount currencyCode } } images(first: 6) { edges { node { url altText } } } variants(first: 20) { edges { node { id title availableForSale quantityAvailable sku barcode weight weightUnit price { amount currencyCode } compareAtPrice { amount currencyCode } } } } metafields(identifiers: [{namespace: "reviews", key: "rating"}, {namespace: "reviews", key: "rating_count"}, {namespace: "custom", key: "instagram_video"}, {namespace: "snm", key: "nutritional_values"}, {namespace: "snm", key: "ingredients"}, {namespace: "snm", key: "daily_serving"}, {namespace: "snm", key: "warnhinweise"}, {namespace: "snm", key: "manufacturer"}, {namespace: "snm", key: "origin_country"}, {namespace: "snm", key: "certifications"}]) { namespace key value type } } } }`,{ids:i});for(let r of e?.nodes??[])r?.id&&n.push(t(r))}catch(e){console.warn(`[shopify] getProductsByIds FAILED (Batch`,r/50+1,`)`,e)}}return n}async function G(e){let t={},n=e.map((e,t)=>`c${t}
76: collection(id: "gid://shopify/Collection/${e.collectionId}") { products(first: 250) { edges { node { handle } } } }`).join(` `);try{let r=await d(`{ ${n} }`);e.forEach((e,n)=>{let i=r?.[`c${n}`];t[e.key]=i?.products?.edges?.map(e=>e.node.handle)??[]})}catch{e.forEach(e=>{t[e.key]=[]})}return t}export{G as _,v as a,T as b,h as c,k as d,R as f,W as g,U as h,I as i,S as l,B as m,E as n,g as o,z as p,b as r,_ as s,C as t,O as u,w as v,x as y};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.