[object Object]

← back to All Designerwallcoverings

all.: repoint Phillipe Romano line-viewer off dead philliperomano.dw to live DW Shopify collection (crawl-resistant override)

e98a86b769f8a3ffe41b6d9f4b666c2e1b0bd79f · 2026-08-10 16:05:51 -0700 · steve

Files touched

Diff

commit e98a86b769f8a3ffe41b6d9f4b666c2e1b0bd79f
Author: steve <steve@designerwallcoverings.com>
Date:   Mon Aug 10 16:05:51 2026 -0700

    all.: repoint Phillipe Romano line-viewer off dead philliperomano.dw to live DW Shopify collection (crawl-resistant override)
---
 server.js | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/server.js b/server.js
index 2f649c0..b582a74 100644
--- a/server.js
+++ b/server.js
@@ -257,6 +257,18 @@ let VENDOR_VIEWER = new Map();  // slugify(vendor) / slug → internal line-view
 let VENDOR_ITEM = new Map();    // slugify(vendor) / slug → { url, handles:Set } — the microsite's FULL handle set;
                                // "This Item" deep-links resolve ONLY when the row's handle is IN that set.
 
+// Line-viewer OVERRIDES (crawl-resistant). buildVendorViewer() derives the viewer map from the
+// live crawl artifact, but a stale artifact can pin a vendor to a subdomain that has since gone
+// dead (e.g. the crawler last saw philliperomano.dw at 200, then the app died → 000, yet the
+// artifact still reads up:true and every Phillipe Romano cork card links to the dead host). These
+// entries are applied LAST in buildVendorViewer(), so they win over whatever the crawl produced.
+// Keyed by slugify(vendor). Value must be a resolving, customer-facing destination.
+const VENDOR_VIEWER_OVERRIDE = {
+  // Phillipe Romano (incl. the Greenland cork line, private-labeled as Phillipe Romano) → the
+  // real live DW Shopify collection, NOT the dead philliperomano.designerwallcoverings.com app.
+  'phillipe-romano': `${STOREFRONT}/collections/phillipe-romano`,
+};
+
 // Stored stock snapshot — the FREE /livestock path. PUBLIC-SAFE availability ONLY
 // (in_stock / quantity / lead_time / as-of); cost & price columns are NEVER selected.
 // Sources: the dedicated stock_checks cache ∪ every *_catalog table's in_stock/last_scraped.
@@ -388,6 +400,8 @@ function buildVendorViewer() {
       if (s.slug) setBoth(String(s.slug).toLowerCase());
     }
   } catch { /* crawl artifact not ready yet — viewers resolve after the first crawl lands */ }
+  // Crawl-resistant overrides win over anything the artifact produced (dead/stale subdomains).
+  for (const [k, url] of Object.entries(VENDOR_VIEWER_OVERRIDE)) map.set(k, url);
   VENDOR_VIEWER = map;
   VENDOR_ITEM = item;
 }

← ba032a8 all-designerwallcoverings: adopt href-to-deeper-data primiti  ·  back to All Designerwallcoverings  ·  all.: register phillipe-romano brand (Greenland cork private fca6523 →