← back to Dw Sarah Rowland Searchfix

read-resources-menu.mjs

12 lines

import fs from 'node:fs'; import os from 'node:os';
const env=fs.readFileSync(`${os.homedir()}/Projects/secrets-manager/.env`,'utf8');
const tok=(k)=>(env.match(new RegExp('^'+k+'=(.+)$','m'))||[])[1]?.trim();
const T=tok('SHOPIFY_CONTENT_TOKEN')||tok('SHOPIFY_ADMIN_TOKEN');
const S='designer-laboratory-sandbox.myshopify.com',A='2024-10';
async function gql(q){const r=await fetch(`https://${S}/admin/api/${A}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':T,'Content-Type':'application/json'},body:JSON.stringify({query:q})});return r.json();}
const d=await gql(`{ menu(id:"gid://shopify/Menu/65661239361"){ handle title items{ id title type url resourceId tags items{ id title type url resourceId tags } } } }`);
if(d.errors){console.log('ERR',JSON.stringify(d.errors));process.exit(1);}
fs.writeFileSync(new URL('./resources-menu.BEFORE.json',import.meta.url), JSON.stringify(d.data.menu,null,2));
console.log('handle:',d.data.menu.handle,'title:',d.data.menu.title);
d.data.menu.items.forEach(i=>console.log(`  ${i.type.padEnd(12)} ${i.title.padEnd(34)} url=${i.url||'∅'} rid=${i.resourceId||'∅'}`));