← back to Shopify Sample Shipping

samples-profile.mjs

22 lines

import {query} from './query.mjs';
const q=`{deliveryProfile(id:"gid://shopify/DeliveryProfile/96764067891"){name default productVariantsCount{count}
  profileLocationGroups{locationGroup{id locations(first:5){nodes{name}}}
    locationGroupZones(first:30){nodes{zone{id name countries{code{countryCode}}}
      methodDefinitions(first:40){nodes{id name active
        rateProvider{__typename ... on DeliveryRateDefinition{price{amount currencyCode}}}
        methodConditions{operator field conditionCriteria{__typename ... on MoneyV2{amount} ... on Weight{value unit}}}}}}}}}}`;
const d=await query(q);
const p=d.deliveryProfile;
console.log(`PROFILE "${p.name}" default:${p.default} variants:${p.productVariantsCount.count}`);
for(const g of p.profileLocationGroups){
  console.log(` LG ${g.locationGroup.id.split('/').pop()} locs:[${g.locationGroup.locations.nodes.map(l=>l.name).join(', ')}]`);
  for(const z of g.locationGroupZones.nodes){
    console.log(`  ZONE ${z.zone.id.split('/').pop()} ${z.zone.name} [${z.zone.countries.map(c=>c.code.countryCode).join(',')}]`);
    for(const md of z.methodDefinitions.nodes){
      const rp=md.rateProvider;const price=rp?.price?`$${rp.price.amount}`:rp?.__typename;
      const conds=md.methodConditions.map(c=>{const cr=c.conditionCriteria;const v=cr?.amount!==undefined?`$${cr.amount}`:(cr?.value!==undefined?`${cr.value}${cr.unit}`:'?');return `${c.field} ${c.operator} ${v}`;}).join(' AND ')||'(none)';
      console.log(`    METHOD ${md.id.split('/').pop()} "${md.name}" [${md.active?'on':'OFF'}] ${price} {${conds}}`);
    }
  }
}