← back to Rentv 2026
harden(location): Cody gate — normalize whitespace before the state-name lookup + add a bare 'dc' key so 'D.C.' and double-spaced 'New Mexico' resolve instead of silently dropping to null
17716ea2b08b3a9647edbfc63bd57a2377c8ab08 · 2026-08-06 12:58:01 -0700 · Steve
Files touched
M scripts/lib/parse-location.mjs
Diff
commit 17716ea2b08b3a9647edbfc63bd57a2377c8ab08
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Aug 6 12:58:01 2026 -0700
harden(location): Cody gate — normalize whitespace before the state-name lookup + add a bare 'dc' key so 'D.C.' and double-spaced 'New Mexico' resolve instead of silently dropping to null
---
scripts/lib/parse-location.mjs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/lib/parse-location.mjs b/scripts/lib/parse-location.mjs
index 91040fab..791b0911 100644
--- a/scripts/lib/parse-location.mjs
+++ b/scripts/lib/parse-location.mjs
@@ -69,7 +69,7 @@ const TITLE_ST = /\b(CA|AZ|NV|TX|WA)\b/;
const US_STATES = new Set(['AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI','ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY','DC']);
// Full state NAME → code, so a model that ignores "2-letter state" and returns "Arizona" isn't truncated
// to "AR" (Arkansas!) / "Nevada"→"NE" (Nebraska!) / "Texas"→"TE" (dropped) by a blind slice(0,2).
-const STATE_NAMES = { alabama:'AL', alaska:'AK', arizona:'AZ', arkansas:'AR', california:'CA', colorado:'CO', connecticut:'CT', delaware:'DE', florida:'FL', georgia:'GA', hawaii:'HI', idaho:'ID', illinois:'IL', indiana:'IN', iowa:'IA', kansas:'KS', kentucky:'KY', louisiana:'LA', maine:'ME', maryland:'MD', massachusetts:'MA', michigan:'MI', minnesota:'MN', mississippi:'MS', missouri:'MO', montana:'MT', nebraska:'NE', nevada:'NV', 'new hampshire':'NH', 'new jersey':'NJ', 'new mexico':'NM', 'new york':'NY', 'north carolina':'NC', 'north dakota':'ND', ohio:'OH', oklahoma:'OK', oregon:'OR', pennsylvania:'PA', 'rhode island':'RI', 'south carolina':'SC', 'south dakota':'SD', tennessee:'TN', texas:'TX', utah:'UT', vermont:'VT', virginia:'VA', washington:'WA', 'west virginia':'WV', wisconsin:'WI', wyoming:'WY', 'district of columbia':'DC', 'washington dc':'DC' };
+const STATE_NAMES = { alabama:'AL', alaska:'AK', arizona:'AZ', arkansas:'AR', california:'CA', colorado:'CO', connecticut:'CT', delaware:'DE', florida:'FL', georgia:'GA', hawaii:'HI', idaho:'ID', illinois:'IL', indiana:'IN', iowa:'IA', kansas:'KS', kentucky:'KY', louisiana:'LA', maine:'ME', maryland:'MD', massachusetts:'MA', michigan:'MI', minnesota:'MN', mississippi:'MS', missouri:'MO', montana:'MT', nebraska:'NE', nevada:'NV', 'new hampshire':'NH', 'new jersey':'NJ', 'new mexico':'NM', 'new york':'NY', 'north carolina':'NC', 'north dakota':'ND', ohio:'OH', oklahoma:'OK', oregon:'OR', pennsylvania:'PA', 'rhode island':'RI', 'south carolina':'SC', 'south dakota':'SD', tennessee:'TN', texas:'TX', utah:'UT', vermont:'VT', virginia:'VA', washington:'WA', 'west virginia':'WV', wisconsin:'WI', wyoming:'WY', 'district of columbia':'DC', 'washington dc':'DC', dc:'DC' };
const BAD_CITY = new Set(['county','valley','beauty','america','fresco','downtown','city','various','region','regional','metro','usa','us','na','unknown','none','tbd','multiple']);
export function sanitizeLocation(loc = {}) {
let city = loc.city == null ? null : String(loc.city).trim();
@@ -77,7 +77,7 @@ export function sanitizeLocation(loc = {}) {
if (state) {
const up = state.toUpperCase();
if (up.length === 2 && US_STATES.has(up)) state = up; // already a valid 2-letter code
- else state = STATE_NAMES[state.toLowerCase().replace(/\./g, '')] || null; // full name → code, else drop
+ else state = STATE_NAMES[state.toLowerCase().replace(/\./g, '').replace(/\s+/g, ' ').trim()] || null; // full name (period/space-normalized) → code, else drop
}
if (city && BAD_CITY.has(city.toLowerCase())) city = null; // bare non-city token → drop
return { ...loc, city: city || null, state: state || null };
← 33804967 auto-data-snapshot: 2026-08-06T12:57:07 (7 data files) — dat
·
back to Rentv 2026
·
feat(services): 'Solicit all visible' bulk action (admin) 0250fee3 →