← back to York Reprice 2026 08
TK-10031: publish the 12 York New items DRAFT->ACTIVE (DWJS-92941..92952), verified 12/12 live
753ee99d2850b55f62584749f090c10c862902d3 · 2026-07-30 15:09:45 -0700 · Steve Abrams
Files touched
Diff
commit 753ee99d2850b55f62584749f090c10c862902d3
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 30 15:09:45 2026 -0700
TK-10031: publish the 12 York New items DRAFT->ACTIVE (DWJS-92941..92952), verified 12/12 live
---
publish-12.mjs | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/publish-12.mjs b/publish-12.mjs
new file mode 100644
index 0000000..c235abd
--- /dev/null
+++ b/publish-12.mjs
@@ -0,0 +1,19 @@
+// publish-12.mjs — flip the 12 newly-created York DRAFT (DWJS-92941..92952) to ACTIVE.
+// Steve-approved 2026-07-30 (TK-10031). All 12 are settlement-verified + image-correct + 5-field-clean.
+import fs from 'node:fs';
+const SHOP='designer-laboratory-sandbox.myshopify.com',VER='2024-10';
+const T=(fs.readFileSync(process.env.HOME+'/Projects/secrets-manager/.env','utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)||[])[1]?.trim();
+const URL=`https://${SHOP}/admin/api/${VER}/graphql.json`;
+const sleep=ms=>new Promise(r=>setTimeout(r,ms));
+const g=async(q,v)=>{for(let a=0;a<8;a++){let j;try{const r=await fetch(URL,{method:'POST',headers:{'X-Shopify-Access-Token':T,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});j=await r.json();}catch(e){await sleep(1500*(a+1));continue;}if(j.errors){if(JSON.stringify(j.errors).includes('THROTTLED')){await sleep(2000*(a+1));continue;}throw new Error(JSON.stringify(j.errors));}return j.data;}throw new Error('retries');};
+const Sku=`query($q:String!){productVariants(first:1,query:$q){nodes{product{id status title}}}}`;
+const Mup=`mutation($input:ProductInput!){productUpdate(input:$input){product{status} userErrors{message}}}`;
+let done=0,skip=0,err=0;
+for(let n=92941;n<=92952;n++){
+ const d=await g(Sku,{q:`sku:DWJS-${n}`}); const p=d.productVariants.nodes[0]?.product;
+ if(!p){console.log(`DWJS-${n} NOT FOUND`);err++;continue;}
+ if(p.status==='ACTIVE'){skip++;console.log(`DWJS-${n} already ACTIVE`);continue;}
+ const u=await g(Mup,{input:{id:p.id,status:'ACTIVE'}}); const ue=u.productUpdate?.userErrors||[];
+ if(ue.length){err++;console.log(`DWJS-${n} ERR`,JSON.stringify(ue));}else{done++;console.log(`DWJS-${n} -> ACTIVE ${(p.title||'').slice(0,30)}`);}
+}
+console.log(`\nDONE — ${done} published ACTIVE, ${skip} already, ${err} err.`);
← ea979b9 TK-10031: onboard-12 color-fail artifact (empty — all 12 ima
·
back to York Reprice 2026 08
·
TK-10058: diagnose brewster image cross-link — 358 genuine; bfaf1fb →