← back to Shopify Sample Shipping

function-feasibility.mjs

22 lines

import {query} from './query.mjs';
// 1) Plan — delivery-customization Functions historically require Shopify Plus.
const plan = await query(`{ shop { name plan { displayName shopifyPlus partnerDevelopment } } }`);
console.log('PLAN:', JSON.stringify(plan.shop));
// 2) Are sample line items identifiable by a tag/metafield we could key a Function on?
const sVar='gid://shopify/ProductVariant/44090076954675';
const v = await query(`query($id:ID!){ productVariant(id:$id){ sku title selectedOptions{name value}
  product{ id title tags productType metafields(first:20){nodes{namespace key value}} } } }`, {id:sVar});
console.log('SAMPLE VARIANT:', JSON.stringify(v.productVariant,null,2));
// 3) Any delivery-customization Functions already installed?
try {
  const dc = await query(`{ deliveryCustomizations(first:10){ nodes{ id title enabled functionId } } }`);
  console.log('DELIVERY CUSTOMIZATIONS:', JSON.stringify(dc.deliveryCustomizations));
} catch(e){ console.log('DELIVERY CUSTOMIZATIONS query err:', e.message); }
// 4) Available Shopify Functions of delivery type on the store's apps?
try {
  const fns = await query(`{ shopifyFunctions(first:25){ nodes{ id title apiType app{title} } } }`);
  const del = fns.shopifyFunctions.nodes.filter(f=>/delivery/i.test(f.apiType||''));
  console.log('DELIVERY FUNCTIONS AVAILABLE:', JSON.stringify(del));
  console.log('ALL FUNCTION API TYPES:', JSON.stringify([...new Set(fns.shopifyFunctions.nodes.map(f=>f.apiType))]));
} catch(e){ console.log('shopifyFunctions query err:', e.message); }