mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
fix(earthquakes): reject malformed feature properties
This commit is contained in:
1 parent
c390724bc0
commit
ac3926c7db
4 files changed
+18
No files matched your search
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
Earthquake refreshes validate the complete feed and construct replacement entities before clearing the previous snapshot. Malformed rows and duplicate rendered IDs retain the last good entities, overlays, count and timestamp and report a malformed response; unknown magnitude is excluded from M2.5+ rendering.
|
Earthquake refreshes validate the complete feed and construct replacement entities before clearing the previous snapshot. Malformed rows and duplicate rendered IDs retain the last good entities, overlays, count and timestamp and report a malformed response; unknown magnitude is excluded from M2.5+ rendering.
|
||||||
|
|
||||||
|
Non-object or array-valued properties reject the response instead of being treated as an unknown magnitude.
|
||||||
|
|
||||||
This changelog records public product changes. For the authoritative description
|
This changelog records public product changes. For the authoritative description
|
||||||
of current runtime behavior, see [`docs/CURRENT-STATE.md`](docs/CURRENT-STATE.md).
|
of current runtime behavior, see [`docs/CURRENT-STATE.md`](docs/CURRENT-STATE.md).
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
Earthquake refreshes validate the complete feed and construct replacement entities before clearing the previous snapshot. Malformed rows and duplicate rendered IDs retain the last good entities, overlays, count and timestamp and report a malformed response; unknown magnitude is excluded from M2.5+ rendering.
|
Earthquake refreshes validate the complete feed and construct replacement entities before clearing the previous snapshot. Malformed rows and duplicate rendered IDs retain the last good entities, overlays, count and timestamp and report a malformed response; unknown magnitude is excluded from M2.5+ rendering.
|
||||||
|
|
||||||
|
Non-object or array-valued properties reject the response instead of being treated as an unknown magnitude.
|
||||||
|
|
||||||
Updated: August 24, 2026
|
Updated: August 24, 2026
|
||||||
|
|
||||||
## Installations and map-source guidance
|
## Installations and map-source guidance
|
||||||
|
|||||||
@@ -130,6 +130,7 @@ export function normalizeEarthquakeSnapshot(geojson) {
|
|||||||
const coordinates = feature?.geometry?.coordinates;
|
const coordinates = feature?.geometry?.coordinates;
|
||||||
const properties = feature?.properties;
|
const properties = feature?.properties;
|
||||||
if (!Array.isArray(coordinates) || coordinates.length < 2 || !properties
|
if (!Array.isArray(coordinates) || coordinates.length < 2 || !properties
|
||||||
|
|| typeof properties !== 'object' || Array.isArray(properties)
|
||||||
|| (feature.geometry.type != null && feature.geometry.type !== 'Point')) return null;
|
|| (feature.geometry.type != null && feature.geometry.type !== 'Point')) return null;
|
||||||
const [lon, lat, depthKm] = coordinates;
|
const [lon, lat, depthKm] = coordinates;
|
||||||
const mag = properties.mag;
|
const mag = properties.mag;
|
||||||
|
|||||||
@@ -359,6 +359,19 @@ test('malformed earthquake refresh preserves entities, overlays, count and times
|
|||||||
assert.equal(await layer.update(viewer), true);
|
assert.equal(await layer.update(viewer), true);
|
||||||
const entity = dataSources[0].entities.values[0];
|
const entity = dataSources[0].entities.values[0];
|
||||||
const stats = layer.getStats();
|
const stats = layer.getStats();
|
||||||
|
for (const properties of ['invalid', 123, [], true]) {
|
||||||
|
const bad = { ...good, id: 'bad-properties', properties };
|
||||||
|
for (const features of [[bad], [good, bad]]) {
|
||||||
|
respond(features);
|
||||||
|
assert.equal(await layer.update(viewer), false);
|
||||||
|
assert.equal(dataSources[0].entities.values.length, 1);
|
||||||
|
assert.equal(dataSources[0].entities.values[0], entity);
|
||||||
|
assert.equal(layer.getStats().count, stats.count);
|
||||||
|
assert.equal(layer.getStats().lastUpdate, stats.lastUpdate);
|
||||||
|
assert.equal(layer.getStats().error, 'Malformed USGS response');
|
||||||
|
assert.equal(publications.length, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (const bad of [null, { ...good, geometry: null },
|
for (const bad of [null, { ...good, geometry: null },
|
||||||
{ ...good, geometry: { type: 'LineString', coordinates: [1, 2] } },
|
{ ...good, geometry: { type: 'LineString', coordinates: [1, 2] } },
|
||||||
{ ...good, geometry: { coordinates: [181, 20] } },
|
{ ...good, geometry: { coordinates: [181, 20] } },
|
||||||
|
|||||||
Reference in new issue
Block a user