← back to Shopify Sample Shipping

live-rate-state.mjs

18 lines

import {query} from './query.mjs';
const PROFILE='gid://shopify/DeliveryProfile/29033627699';
const rq=`query($id:ID!){deliveryProfile(id:$id){name profileLocationGroups{locationGroupZones(first:30){nodes{zone{name}
  methodDefinitions(first:40){nodes{name active rateProvider{__typename
    ... on DeliveryRateDefinition{price{amount currencyCode}}
    ... on DeliveryParticipant{carrierService{name}}}
    methodConditions{operator field conditionCriteria{__typename ... on MoneyV2{amount currencyCode} ... on Weight{value unit}}}}}}}}}}`;
const d=await query(rq,{id:PROFILE});
for(const g of d.deliveryProfile.profileLocationGroups)for(const z of g.locationGroupZones.nodes){
  console.log(`\n### ZONE: ${z.zone.name}`);
  for(const md of z.methodDefinitions.nodes){
    const rp=md.rateProvider;
    const price=rp?.price?`$${rp.price.amount}`:(rp?.carrierService?`carrier:${rp.carrierService.name}`: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 ')||'(no condition)';
    console.log(`  • ${md.name} [${md.active?'active':'INACTIVE'}] ${price}  {${conds}}`);
  }
}