← back to Shopify Sample Shipping
query.mjs
20 lines
import fs from 'node:fs';
import { TOKEN, SHOP } from '../designerwallcoverings/scripts/lib/shopify.mjs';
export async function query(query, variables = {}) {
const r = await fetch(`https://${SHOP}/admin/api/2026-07/graphql.json`, {
method: 'POST',
headers: { 'X-Shopify-Access-Token': TOKEN, 'Content-Type': 'application/json' },
body: JSON.stringify({query, variables}), signal: AbortSignal.timeout(30000)
});
const j = await r.json();
if (!r.ok || j.errors) throw new Error(JSON.stringify({status:r.status, errors:j.errors}));
return j.data;
}
if (process.argv[1]?.endsWith('/query.mjs')) {
const q = fs.readFileSync(process.argv[2], 'utf8');
if (/\bmutation\b/.test(q)) throw new Error('Read-only query runner');
const j = await query(q);
fs.writeFileSync(process.argv[3], JSON.stringify(j,null,2)+'\n');
console.log('Saved',process.argv[3]);
}