mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-15 07:42:23 +00:00
fix(search): refuse empty coordinate components instead of silently dropping them
This commit is contained in:
1 parent
8b8ccc9a81
commit
fa53eec53d
4 files changed
+21
-2
No files matched your search
@@ -1,5 +1,7 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
- Coordinate searches refuse empty latitude or longitude components instead of navigating to an unintended location.
|
||||||
|
|
||||||
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
||||||
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
||||||
|
|
||||||
|
|||||||
@@ -5127,3 +5127,8 @@ datacenters, dams and the Nepal locator retain that shared credit while displaye
|
|||||||
|
|
||||||
Military fragments stitch by source identity. Different mapped parcels merge only
|
Military fragments stitch by source identity. Different mapped parcels merge only
|
||||||
when their footprints touch or contain one another, never across a seam tolerance gap.
|
when their footprints touch or contain one another, never across a seam tolerance gap.
|
||||||
|
|
||||||
|
|
||||||
|
### fix(search): refuse empty coordinate components instead of silently dropping them
|
||||||
|
|
||||||
|
Require exactly two nonempty components while preserving comma, semicolon and whitespace pairs. Malformed separator input falls through to geocoding.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import test from 'node:test';
|
||||||
|
import assert from 'node:assert/strict';
|
||||||
|
import { parseCoordinateQuery } from './coordinateParser.js';
|
||||||
|
test('search refuses omitted components and repeated separators', () => {
|
||||||
|
for (const q of ['30,, -97', ',30,-97', '30,-97,', '30;; -97', '30,; -97'])
|
||||||
|
assert.equal(parseCoordinateQuery(q), null, q);
|
||||||
|
for (const q of ['30,-97', '30; -97', '30 -97', 'N 30, W 97'])
|
||||||
|
assert.deepEqual(
|
||||||
|
[parseCoordinateQuery(q).lat, parseCoordinateQuery(q).lon],
|
||||||
|
[30, -97],
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -49,8 +49,8 @@ function splitComponents(query) {
|
|||||||
const parts = /[,;]/.test(text)
|
const parts = /[,;]/.test(text)
|
||||||
? text.split(/[,;]/)
|
? text.split(/[,;]/)
|
||||||
: text.split(/\s+(?=[+-]?[.\d]|[NSEW]\s*[+-]?[.\d])/i);
|
: text.split(/\s+(?=[+-]?[.\d]|[NSEW]\s*[+-]?[.\d])/i);
|
||||||
const trimmed = parts.map((part) => part.trim()).filter(Boolean);
|
const trimmed = parts.map((part) => part.trim());
|
||||||
return trimmed.length === 2 ? trimmed : null;
|
return trimmed.length === 2 && trimmed.every(Boolean) ? trimmed : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Present a parsed pair the way a coordinate is normally written. */
|
/** Present a parsed pair the way a coordinate is normally written. */
|
||||||
|
|||||||
Reference in new issue
Block a user