PageSourceSearch

https://www.thermoworks.com/cdn/shop/t/9/assets/tw-graphql.js?v=146379176376803446741790803702

js thermoworks.com collected 2026-10-02 02:59:26 UTC 3,423 bytes, 107 lines download raw bytes

1const SHOPIFY_STOREFRONT_ACCESS_TOKEN="9e9aa1612ecd375fde40752fc5b5b258";export const fetchGraphQL=async(graphQLQueryValue,variables)=>{try{const query={query:graphQLQueryValue};variables&&(query.variables=variables);const fetchOptions={method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":SHOPIFY_STOREFRONT_ACCESS_TOKEN},body:JSON.stringify(query)},result=await fetch("/api/2025-10/graphql.json",fetchOptions);if(result.status>=300){const body=await result.text();return console.error("Error returned, fetchGraphQL",body),null}return result.json()}catch(e){return console.error("Error during fetchGraphQL",e),null}},productsInfoQuery=`
2query ProductIds($productIds: [ID!]!) {
3  nodes(ids: $productIds) {
4    ... on Product {
5      id
6      title
7      options {
8        id
9        name
10        optionValues {
11          id
12          name
13          swatch {
14            color
15            image {
16              ... on MediaImage {
17                image {
18                  url(transform: {maxWidth: 28})
19                }
20              }
21            }
22          }
23        }
24      }
25      variants(first: 250) {
26        nodes {
27          id
28          selectedOptions {
29            name
30            value
31            
32          }
33          price {
34            amount
35            currencyCode
36          }
37          compareAtPrice {
38            amount
39            currencyCode
40          }
41          currentlyNotInStock
42          availableForSale
43          stopSelling: metafield(namespace: "custom", key: "stop_selling") {
44            value
45          }
46          image {
47            url(transform: {maxWidth: 254})
48            altText
49          }
50        }
51      }
52    }
53  }
54}
55`;const sanitizeHandle=handle=>String(handle||"").trim().toLowerCase().replace(/[^a-z0-9-]/g,"");export const buildCollectionsInfoQuery=handles=>`
56    query CollectionsInfo {
57      ${handles.map((handle,index)=>`c${index}: collection(handle: "${sanitizeHandle(handle)}") { ...CollectionCardFields }`).join(`
58`)}
59    }
60    fragment CollectionCardFields on Collection {
61      handle
62      title
63      description
64      onlineStoreUrl
65      image {
66        url(transform: { maxWidth: 400 })
67        altText
68      }
69    }
70  `,buildPagesInfoQuery=handles=>`
71    query PagesInfo {
72      ${handles.map((handle,index)=>`p${index}: page(handle: "${sanitizeHandle(handle)}") { ...PageCardFields }`).join(`
73`)}
74    }
75    fragment PageCardFields on Page {
76      handle
77      title
78      bodySummary
79      onlineStoreUrl
80      featuredImage: metafield(namespace: "custom", key: "featured_image") {
81        reference {
82          ... on MediaImage {
83            image {
84              url(transform: { maxWidth: 400 })
85              altText
86            }
87          }
88        }
89      }
90    }
91  `,buildArticlesInfoQuery=articles=>`
92    query ArticlesInfo {
93      ${articles.map((article,index)=>{const blogHandle=sanitizeHandle(article.blogHandle),articleHandle=sanitizeHandle(article.articleHandle);return`a${index}: blog(handle: "${blogHandle}") { articleByHandle(handle: "${articleHandle}") { ...ArticleCardFields } }`}).join(`
94`)}
95    }
96    fragment ArticleCardFields on Article {
97      handle
98      title
99      excerpt
100      onlineStoreUrl
101      image {
102        url(transform: { maxWidth: 400 })
103        altText
104      }
105    }
106  `;
107//# sourceMappingURL=/cdn/shop/t/9/assets/tw-graphql.js.map?v=146379176376803446741790803702

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.