← back to Designer Wallcoverings
Repair tool: collapse newlines for single-line metafield types (fixes 25 multi-line composition values Shopify rejected)
e4ee07724f56414e7998dfcbc0a902a61a864d8c · 2026-06-24 16:40:41 -0700 · Steve Abrams
Files touched
M shopify/scripts/fix-double-encoded-metafields.js
Diff
commit e4ee07724f56414e7998dfcbc0a902a61a864d8c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jun 24 16:40:41 2026 -0700
Repair tool: collapse newlines for single-line metafield types (fixes 25 multi-line composition values Shopify rejected)
---
shopify/scripts/fix-double-encoded-metafields.js | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/shopify/scripts/fix-double-encoded-metafields.js b/shopify/scripts/fix-double-encoded-metafields.js
index 36b5a448..f41adb14 100644
--- a/shopify/scripts/fix-double-encoded-metafields.js
+++ b/shopify/scripts/fix-double-encoded-metafields.js
@@ -76,7 +76,13 @@ async function run() {
const clean = unwrap(mf.value);
if (clean == null) continue; // not the {type,value} shape
hit = true; fieldsFixed++;
- pending.push({ ownerId: node.id, namespace: mf.namespace, key: mf.key, type: mf.type, value: clean });
+ // A single-line metafield rejects values containing newlines. Some unwrapped
+ // composition values are multi-line — collapse whitespace for those types.
+ let outVal = clean;
+ if ((mf.type === 'single_line_text_field' || mf.type === 'string') && /[\r\n]/.test(outVal)) {
+ outVal = outVal.replace(/\s*[\r\n]+\s*/g, ' ').trim();
+ }
+ pending.push({ ownerId: node.id, namespace: mf.namespace, key: mf.key, type: mf.type, value: outVal });
if (examples.length < 8) examples.push(`${node.handle} ${mf.namespace}.${mf.key}: ${mf.value.slice(0,55)} -> "${clean}"`);
}
}
← ef5c99cb Guard cadence-import against {type,value} blob: unwrap row.m
·
back to Designer Wallcoverings
·
China Seas mailer: add 3 more product photos (Arbre de Matis cef2bf1c →