@dangahagan/weather-mcp 1.35.11 → 1.35.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/handlers/wildfireHandler.d.ts +3 -2
- package/dist/handlers/wildfireHandler.d.ts.map +1 -1
- package/dist/handlers/wildfireHandler.js +207 -74
- package/dist/handlers/wildfireHandler.js.map +1 -1
- package/dist/types/wildfire.d.ts +22 -10
- package/dist/types/wildfire.d.ts.map +1 -1
- package/dist/utils/firePerimeter.d.ts +2 -0
- package/dist/utils/firePerimeter.d.ts.map +1 -0
- package/dist/utils/firePerimeter.js +112 -0
- package/dist/utils/firePerimeter.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@dangahagan/weather-mcp)
|
|
4
4
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.dgahagan/weather-mcp)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](./docs/testing/TEST_SUITE_README.md)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
8
|
|
|
9
9
|
**Give your AI assistant real weather data — 17 tools, zero API keys, zero signup, zero cost.**
|
|
@@ -58,7 +58,7 @@ Choose this one if you want:
|
|
|
58
58
|
|
|
59
59
|
- **Genuinely free** — every data source is a free public API. No trial that expires, no credit card, no rate-limited "free tier" bait.
|
|
60
60
|
- **No API keys** — install to first forecast in under a minute. Nothing to configure, nothing to leak into a repo. ([Four optional keys](#optional-api-keys) add extras if you want them; the default configuration needs none.)
|
|
61
|
-
- **Fully open source** — MIT licensed, readable TypeScript, 4,
|
|
61
|
+
- **Fully open source** — MIT licensed, readable TypeScript, 4,968 tests. Audit it, fork it, fix it.
|
|
62
62
|
- **Privacy-respecting** — your queries go directly from your machine to public weather APIs. No middleman server, and no telemetry unless you opt in.
|
|
63
63
|
- **Breadth** — 17 tools covering weather, safety hazards (lightning, floods, wildfires), marine conditions, air quality, and historical data back to 1940. Most weather MCPs stop at forecasts.
|
|
64
64
|
|
|
@@ -394,7 +394,7 @@ Being honest about what free public data can and can't do:
|
|
|
394
394
|
```bash
|
|
395
395
|
npm run build # Compile TypeScript
|
|
396
396
|
npm run dev # Run in development mode
|
|
397
|
-
npm test # Run all 4,
|
|
397
|
+
npm test # Run all 4,968 tests
|
|
398
398
|
npm run test:coverage # Coverage report
|
|
399
399
|
npm run audit # Dependency vulnerability scan
|
|
400
400
|
```
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Handler for get_wildfire_info tool.
|
|
3
3
|
*
|
|
4
4
|
* Routed by country (see docs/plans/global-wildfire-plan.md D1/D2):
|
|
5
|
-
* US → NIFC/WFIGS named incidents
|
|
6
|
-
*
|
|
5
|
+
* US → NIFC/WFIGS named incidents, each measured to its mapped perimeter
|
|
6
|
+
* (the reported point of origin only when no usable perimeter is
|
|
7
|
+
* published), elsewhere → NASA FIRMS satellite fire detections (VIIRS, near
|
|
7
8
|
* real-time, global). An explicit `source` forces the branch; there is
|
|
8
9
|
* deliberately no cross-fallback — managed incidents (names, acreage,
|
|
9
10
|
* containment) and satellite heat detections are different claims, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildfireHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/wildfireHandler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wildfireHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/wildfireHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA6B5D,KAAK,aAAa,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AA+J3F,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,aAAa,CAAC,CAyGxB"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Handler for get_wildfire_info tool.
|
|
3
3
|
*
|
|
4
4
|
* Routed by country (see docs/plans/global-wildfire-plan.md D1/D2):
|
|
5
|
-
* US → NIFC/WFIGS named incidents
|
|
6
|
-
*
|
|
5
|
+
* US → NIFC/WFIGS named incidents, each measured to its mapped perimeter
|
|
6
|
+
* (the reported point of origin only when no usable perimeter is
|
|
7
|
+
* published), elsewhere → NASA FIRMS satellite fire detections (VIIRS, near
|
|
7
8
|
* real-time, global). An explicit `source` forces the branch; there is
|
|
8
9
|
* deliberately no cross-fallback — managed incidents (names, acreage,
|
|
9
10
|
* containment) and satellite heat detections are different claims, and
|
|
@@ -21,6 +22,7 @@ import { resolveCountryCode, resolveLocationAsync, prependLocationLine } from '.
|
|
|
21
22
|
import { validateDetail } from '../utils/validation.js';
|
|
22
23
|
import { guessTimezoneFromCoords, formatObservationAge } from '../utils/timezone.js';
|
|
23
24
|
import { calculateDistance, kmToMiles } from '../utils/distance.js';
|
|
25
|
+
import { distanceToPerimeterKm } from '../utils/firePerimeter.js';
|
|
24
26
|
import { displayValue } from '../utils/displayBanding.js';
|
|
25
27
|
import { isInUS } from '../utils/geography.js';
|
|
26
28
|
import { logger } from '../utils/logger.js';
|
|
@@ -101,6 +103,81 @@ function formatDistanceFigure(km) {
|
|
|
101
103
|
const shownKm = displayValue(km, 1);
|
|
102
104
|
return `${shownKm.toFixed(1)} km (${kmToMiles(shownKm).toFixed(2)} mi)`;
|
|
103
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Parse NIFC's reported point of origin, or `null` when either coordinate is
|
|
108
|
+
* unusable.
|
|
109
|
+
*
|
|
110
|
+
* Usable means finite, in coordinate range, and **non-zero**. No incident in
|
|
111
|
+
* NIFC's covered set (US, PR, VI, GU) can sit on the equator or the prime
|
|
112
|
+
* meridian, so a `0` is a second "not recorded" encoding beside `null`
|
|
113
|
+
* (GOTCHAS G56), not a coordinate. Treating it as one would measure the fire
|
|
114
|
+
* thousands of km away and drop it at the radius filter; treating it as absent
|
|
115
|
+
* keeps the fire listed as unlocated, the cautious direction.
|
|
116
|
+
*/
|
|
117
|
+
function parseOrigin(rawLat, rawLon) {
|
|
118
|
+
if (typeof rawLat !== 'number' || typeof rawLon !== 'number')
|
|
119
|
+
return null;
|
|
120
|
+
if (!Number.isFinite(rawLat) || !Number.isFinite(rawLon))
|
|
121
|
+
return null;
|
|
122
|
+
if (rawLat === 0 || rawLon === 0)
|
|
123
|
+
return null;
|
|
124
|
+
if (rawLat < -90 || rawLat > 90 || rawLon < -180 || rawLon > 180)
|
|
125
|
+
return null;
|
|
126
|
+
return { latitude: rawLat, longitude: rawLon };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The first acreage field that is a finite number greater than zero, or `null`
|
|
130
|
+
* meaning "NIFC published no size". Zero is absent here, unlike containment: a
|
|
131
|
+
* mapped perimeter of zero area is not a reading, it is a second "not
|
|
132
|
+
* recorded" encoding (GOTCHAS G56). The old `|| 0` printed `0 acres`.
|
|
133
|
+
*/
|
|
134
|
+
function parseAcres(candidates) {
|
|
135
|
+
for (const raw of candidates) {
|
|
136
|
+
if (typeof raw === 'number' && Number.isFinite(raw) && raw > 0)
|
|
137
|
+
return raw;
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* NIFC's discovery timestamp (epoch ms) as a `Date`, or `null` meaning "NIFC
|
|
143
|
+
* published no discovery date". Epoch `0` is absent, not 1 January 1970: no
|
|
144
|
+
* current incident was discovered then. A finite value outside the `Date`
|
|
145
|
+
* range (e.g. `Number.MAX_VALUE`) is absent too. The old fallback was
|
|
146
|
+
* `new Date()`, which printed today's date and `Days Active: 0`.
|
|
147
|
+
*/
|
|
148
|
+
function parseDiscoveryDate(raw) {
|
|
149
|
+
if (typeof raw !== 'number' || !Number.isFinite(raw) || raw <= 0)
|
|
150
|
+
return null;
|
|
151
|
+
const date = new Date(raw);
|
|
152
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
153
|
+
}
|
|
154
|
+
/** The line beneath `**Distance:**` naming what the distance was measured to. */
|
|
155
|
+
function formatDistanceBasisLine(fire) {
|
|
156
|
+
switch (fire.distanceBasis) {
|
|
157
|
+
case 'perimeter':
|
|
158
|
+
return fire.distance === 0
|
|
159
|
+
? `**Measured to:** the mapped fire perimeter — this location is inside it\n`
|
|
160
|
+
: `**Measured to:** nearest edge of the mapped fire perimeter\n`;
|
|
161
|
+
case 'origin':
|
|
162
|
+
return `**Measured to:** reported point of origin (NIFC published no usable perimeter)\n`;
|
|
163
|
+
case 'unlocated':
|
|
164
|
+
return `**Measured to:** not available — NIFC published neither a perimeter nor a point of origin\n`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The Safety Assessment line for wildfires with no published location. They
|
|
169
|
+
* select no tier, because a tier is a claim about a distance, so the section
|
|
170
|
+
* must say they exist and that it is not an all-clear.
|
|
171
|
+
*/
|
|
172
|
+
function formatUnlocatedWildfireLine(names) {
|
|
173
|
+
const n = names.length;
|
|
174
|
+
const shown = names.slice(0, 5).join(', ');
|
|
175
|
+
const more = n > 5 ? ` and ${n - 5} more` : '';
|
|
176
|
+
const one = n === 1;
|
|
177
|
+
return `⚠️ ${n} wildfire${one ? '' : 's'} in this search area ${one ? 'has' : 'have'} no published location (${shown}${more}). ` +
|
|
178
|
+
`${one ? 'Its' : 'Their'} distance is unknown and is not reflected in any tier above. ` +
|
|
179
|
+
`Do not read this section as an all-clear.\n`;
|
|
180
|
+
}
|
|
104
181
|
export async function handleGetWildfireInfo(args, nifcService, locationStore, geocodingService, firmsService, nominatimService) {
|
|
105
182
|
// Resolve location from coordinates, a saved location name, or a geocoded city name
|
|
106
183
|
const resolved = await resolveLocationAsync(args, locationStore, geocodingService);
|
|
@@ -189,11 +266,12 @@ export async function handleGetWildfireInfo(args, nifcService, locationStore, ge
|
|
|
189
266
|
return result;
|
|
190
267
|
}
|
|
191
268
|
/**
|
|
192
|
-
* The
|
|
193
|
-
* containment
|
|
194
|
-
* to
|
|
195
|
-
*
|
|
196
|
-
* list with the
|
|
269
|
+
* The US path: NIFC/WFIGS named incidents with acreage, containment, and the
|
|
270
|
+
* containment-aware safety assessment. Each fire is measured to its mapped
|
|
271
|
+
* perimeter (zero inside it), else to its reported point of origin, else it is
|
|
272
|
+
* listed as unlocated with no distance; the line beneath `**Distance:**` names
|
|
273
|
+
* which. `failed` is true only when the catch replaced the fire list with the
|
|
274
|
+
* error block.
|
|
197
275
|
*/
|
|
198
276
|
async function formatNIFCWildfire(nifcService, latitude, longitude, radius, detail,
|
|
199
277
|
/**
|
|
@@ -221,7 +299,82 @@ outsideCoverage = false) {
|
|
|
221
299
|
// Query NIFC for fire perimeters
|
|
222
300
|
const response = await nifcService.queryFirePerimeters(west, south, east, north);
|
|
223
301
|
const features = response.features || [];
|
|
224
|
-
|
|
302
|
+
// Measure and filter first, then branch on the filtered list (D3): a
|
|
303
|
+
// response whose every feature lies beyond the radius is the no-fires
|
|
304
|
+
// case (or the coverage disclosure), never a "Found 0 active fire" count.
|
|
305
|
+
const firesWithDistance = [];
|
|
306
|
+
for (const feature of features) {
|
|
307
|
+
const attrs = feature.attributes;
|
|
308
|
+
// Basis order: mapped perimeter → reported point of origin → unlocated.
|
|
309
|
+
// A fire is an area; the origin is a coordinate entered once and is
|
|
310
|
+
// sometimes far from the fire, so it is only the fallback. `null` is
|
|
311
|
+
// a refusal to measure, never a number (GOTCHAS G68).
|
|
312
|
+
const origin = parseOrigin(attrs.attr_InitialLatitude, attrs.attr_InitialLongitude);
|
|
313
|
+
const perimeterKm = distanceToPerimeterKm(latitude, longitude, feature.geometry?.rings);
|
|
314
|
+
let fireDistance;
|
|
315
|
+
let distanceBasis;
|
|
316
|
+
if (perimeterKm !== null) {
|
|
317
|
+
fireDistance = perimeterKm;
|
|
318
|
+
distanceBasis = 'perimeter';
|
|
319
|
+
}
|
|
320
|
+
else if (origin !== null) {
|
|
321
|
+
fireDistance = calculateDistance(latitude, longitude, origin.latitude, origin.longitude);
|
|
322
|
+
distanceBasis = 'origin';
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
fireDistance = null;
|
|
326
|
+
distanceBasis = 'unlocated';
|
|
327
|
+
}
|
|
328
|
+
// Keep a located fire within the radius, and every unlocated fire:
|
|
329
|
+
// an unknown distance is not evidence that the fire is far away.
|
|
330
|
+
if (fireDistance === null || fireDistance <= radius) {
|
|
331
|
+
if (fireDistance === null) {
|
|
332
|
+
logger.warn('NIFC published no usable location for an incident', {
|
|
333
|
+
incident: attrs.poly_IncidentName
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
// Parsed before the literal so the warn can be guarded on the result.
|
|
337
|
+
// Warn only when the value is present but unusable — a plain
|
|
338
|
+
// null/undefined is the normal wire shape for a quarter of live rows,
|
|
339
|
+
// and warning on it would emit ~50 lines per request on a healthy
|
|
340
|
+
// feed. This is a data-quality event, not a security one, so no
|
|
341
|
+
// securityEvent flag (unlike the FIRMS row cap below).
|
|
342
|
+
const containment = parseContainment(attrs.attr_PercentContained);
|
|
343
|
+
if (attrs.attr_PercentContained != null && containment === null) {
|
|
344
|
+
logger.warn('NIFC published an unusable containment value', {
|
|
345
|
+
incident: attrs.poly_IncidentName,
|
|
346
|
+
value: attrs.attr_PercentContained
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
const fireInfo = {
|
|
350
|
+
name: attrs.poly_IncidentName || 'Unknown Fire',
|
|
351
|
+
distance: fireDistance,
|
|
352
|
+
distanceBasis,
|
|
353
|
+
acres: parseAcres([attrs.poly_GISAcres, attrs.attr_FinalAcres, attrs.attr_CalculatedAcres]),
|
|
354
|
+
containment,
|
|
355
|
+
discoveryDate: parseDiscoveryDate(attrs.attr_FireDiscoveryDateTime),
|
|
356
|
+
latitude: origin?.latitude,
|
|
357
|
+
longitude: origin?.longitude,
|
|
358
|
+
state: attrs.attr_POOState,
|
|
359
|
+
county: attrs.attr_POOCounty,
|
|
360
|
+
city: attrs.attr_POOCity,
|
|
361
|
+
type: attrs.attr_IncidentTypeCategory === 'WF' ? 'Wildfire' :
|
|
362
|
+
attrs.attr_IncidentTypeCategory === 'RX' ? 'Prescribed Fire' : 'Unknown',
|
|
363
|
+
status: attrs.poly_FeatureStatus || 'Active'
|
|
364
|
+
};
|
|
365
|
+
firesWithDistance.push({ fire: fireInfo, distance: fireDistance });
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Sort by distance (nearest first), unlocated fires last. The sort is
|
|
369
|
+
// stable, so unlocated fires keep the upstream order among themselves.
|
|
370
|
+
firesWithDistance.sort((a, b) => {
|
|
371
|
+
if (a.distance === null)
|
|
372
|
+
return b.distance === null ? 0 : 1;
|
|
373
|
+
if (b.distance === null)
|
|
374
|
+
return -1;
|
|
375
|
+
return a.distance - b.distance;
|
|
376
|
+
});
|
|
377
|
+
if (firesWithDistance.length === 0 && outsideCoverage) {
|
|
225
378
|
// Forced `source: "nifc"` outside NIFC coverage. An empty result here
|
|
226
379
|
// means "this authority does not track fires at this location", which
|
|
227
380
|
// is emphatically not an all-clear — so no ✅ and no "currently clear"
|
|
@@ -234,7 +387,7 @@ outsideCoverage = false) {
|
|
|
234
387
|
output += `Use \`source: "firms"\` (or omit \`source\`) for NASA FIRMS satellite fire `;
|
|
235
388
|
output += `detections, which are global.\n`;
|
|
236
389
|
}
|
|
237
|
-
else if (
|
|
390
|
+
else if (firesWithDistance.length === 0) {
|
|
238
391
|
output += `✅ **No active wildfires found within ${radius} km**\n\n`;
|
|
239
392
|
if (response.exceededTransferLimit) {
|
|
240
393
|
output += `*Results may be incomplete — the fire data service truncated the response.*\n\n`;
|
|
@@ -243,57 +396,6 @@ outsideCoverage = false) {
|
|
|
243
396
|
output += `**Note:** This data includes active wildfires and prescribed burns tracked by the National Interagency Fire Center. Small fires or very recent ignitions may not yet be included.\n`;
|
|
244
397
|
}
|
|
245
398
|
else {
|
|
246
|
-
// Process and filter fires by actual distance
|
|
247
|
-
const firesWithDistance = [];
|
|
248
|
-
for (const feature of features) {
|
|
249
|
-
const attrs = feature.attributes;
|
|
250
|
-
// Calculate distance from center point to fire origin
|
|
251
|
-
let fireDistance = radius; // default if no coordinates
|
|
252
|
-
if (attrs.attr_InitialLatitude && attrs.attr_InitialLongitude) {
|
|
253
|
-
fireDistance = calculateDistance(latitude, longitude, attrs.attr_InitialLatitude, attrs.attr_InitialLongitude);
|
|
254
|
-
}
|
|
255
|
-
else if (feature.geometry?.rings?.[0]?.[0]) {
|
|
256
|
-
// Use first point of fire perimeter if no origin coordinates
|
|
257
|
-
const [fireLon, fireLat] = feature.geometry.rings[0][0];
|
|
258
|
-
fireDistance = calculateDistance(latitude, longitude, fireLat, fireLon);
|
|
259
|
-
}
|
|
260
|
-
// Only include fires within radius
|
|
261
|
-
if (fireDistance <= radius) {
|
|
262
|
-
// Parsed before the literal so the warn can be guarded on the result.
|
|
263
|
-
// Warn only when the value is present but unusable — a plain
|
|
264
|
-
// null/undefined is the normal wire shape for a quarter of live rows,
|
|
265
|
-
// and warning on it would emit ~50 lines per request on a healthy
|
|
266
|
-
// feed. This is a data-quality event, not a security one, so no
|
|
267
|
-
// securityEvent flag (unlike the FIRMS row cap below).
|
|
268
|
-
const containment = parseContainment(attrs.attr_PercentContained);
|
|
269
|
-
if (attrs.attr_PercentContained != null && containment === null) {
|
|
270
|
-
logger.warn('NIFC published an unusable containment value', {
|
|
271
|
-
incident: attrs.poly_IncidentName,
|
|
272
|
-
value: attrs.attr_PercentContained
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
const fireInfo = {
|
|
276
|
-
name: attrs.poly_IncidentName || 'Unknown Fire',
|
|
277
|
-
distance: fireDistance,
|
|
278
|
-
acres: attrs.poly_GISAcres || attrs.attr_FinalAcres || attrs.attr_CalculatedAcres || 0,
|
|
279
|
-
containment,
|
|
280
|
-
discoveryDate: attrs.attr_FireDiscoveryDateTime
|
|
281
|
-
? new Date(attrs.attr_FireDiscoveryDateTime)
|
|
282
|
-
: new Date(),
|
|
283
|
-
latitude: attrs.attr_InitialLatitude,
|
|
284
|
-
longitude: attrs.attr_InitialLongitude,
|
|
285
|
-
state: attrs.attr_POOState,
|
|
286
|
-
county: attrs.attr_POOCounty,
|
|
287
|
-
city: attrs.attr_POOCity,
|
|
288
|
-
type: attrs.attr_IncidentTypeCategory === 'WF' ? 'Wildfire' :
|
|
289
|
-
attrs.attr_IncidentTypeCategory === 'RX' ? 'Prescribed Fire' : 'Unknown',
|
|
290
|
-
status: attrs.poly_FeatureStatus || 'Active'
|
|
291
|
-
};
|
|
292
|
-
firesWithDistance.push({ fire: fireInfo, distance: fireDistance });
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
// Sort by distance (nearest first)
|
|
296
|
-
firesWithDistance.sort((a, b) => a.distance - b.distance);
|
|
297
399
|
const fireCount = firesWithDistance.length;
|
|
298
400
|
const wildfireCount = firesWithDistance.filter(f => f.fire.type === 'Wildfire').length;
|
|
299
401
|
const prescribedCount = firesWithDistance.filter(f => f.fire.type === 'Prescribed Fire').length;
|
|
@@ -313,8 +415,8 @@ outsideCoverage = false) {
|
|
|
313
415
|
// remainder note stays accurate at every level, including full.
|
|
314
416
|
const maxFiresToShow = detail === 'full' ? 25 : 5;
|
|
315
417
|
const firesToShow = firesWithDistance.slice(0, maxFiresToShow);
|
|
316
|
-
for (const { fire
|
|
317
|
-
output += formatFireDetails(fire,
|
|
418
|
+
for (const { fire } of firesToShow) {
|
|
419
|
+
output += formatFireDetails(fire, timezone);
|
|
318
420
|
}
|
|
319
421
|
if (firesWithDistance.length > maxFiresToShow) {
|
|
320
422
|
const remaining = firesWithDistance.length - maxFiresToShow;
|
|
@@ -343,7 +445,12 @@ outsideCoverage = false) {
|
|
|
343
445
|
// old `|| 0` made it: an unknown containment is not evidence of
|
|
344
446
|
// containment. displayValue does not accept null, so the case is
|
|
345
447
|
// spelled out rather than coerced.
|
|
346
|
-
const
|
|
448
|
+
const isDisplayedUncontained = (f) => f.fire.containment === null || displayValue(f.fire.containment, 0) < 100;
|
|
449
|
+
// Only a located fire can select a tier: a tier is a claim about a
|
|
450
|
+
// distance, and an unlocated fire has none (GOTCHAS G68).
|
|
451
|
+
const nearestWildfire = wildfires.find((f) => f.distance !== null && isDisplayedUncontained(f));
|
|
452
|
+
const unlocatedWildfires = wildfires.filter(f => f.distance === null);
|
|
453
|
+
const unlocatedUncontained = unlocatedWildfires.some(isDisplayedUncontained);
|
|
347
454
|
if (wildfires.length > 0) {
|
|
348
455
|
output += `\n## Safety Assessment\n\n`;
|
|
349
456
|
if (nearestWildfire) {
|
|
@@ -360,8 +467,11 @@ outsideCoverage = false) {
|
|
|
360
467
|
// them, do not assume symmetry. And because the sentence printed
|
|
361
468
|
// beneath says "within 5 km", which includes 5.0.
|
|
362
469
|
const dist = displayValue(nearestWildfire.distance, 1);
|
|
470
|
+
// Located fires sort first, so whenever a located nearestWildfire
|
|
471
|
+
// exists, wildfires[0] is located too; the null check narrows the
|
|
472
|
+
// type and is never the deciding term.
|
|
363
473
|
const nearestOverall = wildfires[0];
|
|
364
|
-
if (nearestOverall !== nearestWildfire) {
|
|
474
|
+
if (nearestOverall !== nearestWildfire && nearestOverall.distance !== null) {
|
|
365
475
|
output += `ℹ️ Nearest fire (${nearestOverall.fire.name}, ${nearestOverall.distance.toFixed(1)} km) is 100% contained and excluded from the danger assessment.\n\n`;
|
|
366
476
|
}
|
|
367
477
|
if (dist <= 5) {
|
|
@@ -387,7 +497,7 @@ outsideCoverage = false) {
|
|
|
387
497
|
output += `- Air quality may be affected by smoke\n`;
|
|
388
498
|
}
|
|
389
499
|
}
|
|
390
|
-
else {
|
|
500
|
+
else if (!unlocatedUncontained) {
|
|
391
501
|
// Wildfires are present but every one is 100% contained. Still
|
|
392
502
|
// surface the section — omitting it would hide that fires exist
|
|
393
503
|
// nearby — pinned at the lowest (AWARENESS) tier.
|
|
@@ -396,6 +506,14 @@ outsideCoverage = false) {
|
|
|
396
506
|
output += `- Stay informed about fire progression\n`;
|
|
397
507
|
output += `- Air quality may be affected by smoke\n`;
|
|
398
508
|
}
|
|
509
|
+
// Otherwise an unlocated wildfire is not displayed-contained: no
|
|
510
|
+
// tier and no all-contained line. The line below names it.
|
|
511
|
+
if (unlocatedWildfires.length > 0) {
|
|
512
|
+
const blockAbove = nearestWildfire !== undefined || !unlocatedUncontained;
|
|
513
|
+
if (blockAbove)
|
|
514
|
+
output += `\n`;
|
|
515
|
+
output += formatUnlocatedWildfireLine(unlocatedWildfires.map(f => f.fire.name));
|
|
516
|
+
}
|
|
399
517
|
output += `\n`;
|
|
400
518
|
}
|
|
401
519
|
}
|
|
@@ -658,13 +776,16 @@ function formatClusterDetails(cluster, ordinal) {
|
|
|
658
776
|
/**
|
|
659
777
|
* Format detailed information for a single wildfire
|
|
660
778
|
*/
|
|
661
|
-
function formatFireDetails(fire,
|
|
779
|
+
function formatFireDetails(fire, timezone) {
|
|
662
780
|
let output = `## ${fire.name}\n\n`;
|
|
663
781
|
// Fire type emoji
|
|
664
782
|
const typeEmoji = fire.type === 'Wildfire' ? '🔥' :
|
|
665
783
|
fire.type === 'Prescribed Fire' ? '🟦' : '⚪';
|
|
666
784
|
output += `**Type:** ${typeEmoji} ${fire.type}\n`;
|
|
667
|
-
output +=
|
|
785
|
+
output += fire.distance === null
|
|
786
|
+
? `**Distance:** not reported\n`
|
|
787
|
+
: `**Distance:** ${formatDistanceFigure(fire.distance)}\n`;
|
|
788
|
+
output += formatDistanceBasisLine(fire);
|
|
668
789
|
if (fire.state) {
|
|
669
790
|
let location = fire.state;
|
|
670
791
|
if (fire.county)
|
|
@@ -673,22 +794,34 @@ function formatFireDetails(fire, distance, timezone) {
|
|
|
673
794
|
location += ` near ${fire.city}`;
|
|
674
795
|
output += `**Location:** ${location}\n`;
|
|
675
796
|
}
|
|
676
|
-
|
|
677
|
-
|
|
797
|
+
// Set only when parseOrigin found both coordinates usable. Labelled as the
|
|
798
|
+
// reported origin because, once distance is measured to the perimeter, an
|
|
799
|
+
// unlabelled coordinate far from the printed distance reads as a contradiction.
|
|
800
|
+
if (fire.latitude !== undefined && fire.longitude !== undefined) {
|
|
801
|
+
output += `**Point of Origin (reported):** ${fire.latitude.toFixed(4)}, ${fire.longitude.toFixed(4)}\n`;
|
|
678
802
|
}
|
|
679
803
|
output += `\n`;
|
|
680
804
|
// Fire statistics
|
|
681
805
|
output += `### Status\n`;
|
|
682
|
-
output +=
|
|
806
|
+
output += fire.acres === null
|
|
807
|
+
? `**Size:** not reported\n`
|
|
808
|
+
: `**Size:** ${fire.acres.toFixed(0)} acres (${(fire.acres * 0.404686).toFixed(0)} hectares)\n`;
|
|
683
809
|
// The bar is the completed tenths of the printed figure: a full bar means
|
|
684
810
|
// the printed figure is `100%`, an empty bar means it is below `10%`, and
|
|
685
811
|
// each cell is a completed ten percent. A fire NIFC published no usable
|
|
686
812
|
// containment for reads `not reported`, with no bar at all.
|
|
687
813
|
output += formatContainmentLine(fire.containment);
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
814
|
+
// A day count derived from a date nobody published has no honest value, so
|
|
815
|
+
// Days Active is omitted, not zeroed, when the date is absent.
|
|
816
|
+
if (fire.discoveryDate === null) {
|
|
817
|
+
output += `**Discovery Date:** not reported\n`;
|
|
818
|
+
}
|
|
819
|
+
else {
|
|
820
|
+
const now = new Date();
|
|
821
|
+
const daysActive = Math.floor((now.getTime() - fire.discoveryDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
822
|
+
output += `**Discovery Date:** ${fire.discoveryDate.toLocaleDateString('en-US', { timeZone: timezone })}\n`;
|
|
823
|
+
output += `**Days Active:** ${daysActive}\n`;
|
|
824
|
+
}
|
|
692
825
|
output += `\n---\n\n`;
|
|
693
826
|
return output;
|
|
694
827
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildfireHandler.js","sourceRoot":"","sources":["../../src/handlers/wildfireHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wildfireHandler.js","sourceRoot":"","sources":["../../src/handlers/wildfireHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAgB,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI3E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAoBnC;;;;;;;;;;;;;GAaG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,gBAAgB,CAAC,GAAY;IACpC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;QAC9E,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,WAA0B;IACvD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1D,OAAO,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,oBAAoB,CAAC,EAAU;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,MAAe,EAAE,MAAe;IACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,UAAqB;IACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,IAAkB;IACjD,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC;gBACxB,CAAC,CAAC,2EAA2E;gBAC7E,CAAC,CAAC,8DAA8D,CAAC;QACrE,KAAK,QAAQ;YACX,OAAO,kFAAkF,CAAC;QAC5F,KAAK,WAAW;YACd,OAAO,6FAA6F,CAAC;IACzG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,KAAe;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,2BAA2B,KAAK,GAAG,IAAI,KAAK;QAC9H,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,+DAA+D;QACvF,6CAA6C,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAa,EACb,WAAwB,EACxB,aAA4B,EAC5B,gBAAkC,EAClC,YAA2B,EAC3B,gBAAmC;IAEnC,oFAAoF;IACpF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAoB,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACnG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAEzC,6EAA6E;IAC7E,MAAM,MAAM,GAAG,cAAc,CAAE,IAAqB,EAAE,MAAM,CAAC,CAAC;IAE9D,4BAA4B;IAC5B,IAAI,MAAM,GAAI,IAAqB,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,iBAAiB;IACrE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IACD,kCAAkC;IAClC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE5C,wEAAwE;IACxE,gEAAgE;IAChE,IAAI,QAAQ,GAAI,IAAqB,EAAE,SAAS,IAAI,CAAC,CAAC;IACtD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1D,oEAAoE;IACpE,MAAM,SAAS,GAAI,IAAqB,EAAE,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAElF,kCAAkC;IAClC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,QAAiB,CAAC;IACtB,wEAAwE;IACxE,wEAAwE;IACxE,+CAA+C;IAC/C,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,kEAAkE;QAClE,sEAAsE;QACtE,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,qEAAqE;QACrE,wEAAwE;QACxE,oEAAoE;QACpE,sEAAsE;QACtE,QAAQ,GAAG,KAAK,CAAC;QACjB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAC5D,QAAQ,CAAC,YAAY,EACrB,QAAQ,EACR,SAAS,EACT,gBAAgB,CACjB,CAAC;QACF,mBAAmB,GAAG,YAAY,CAAC;QACnC,mBAAmB,GAAG,WAAW;YAC/B,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAC5D,QAAQ,CAAC,YAAY,EACrB,QAAQ,EACR,SAAS,EACT,gBAAgB,CACjB,CAAC;QACF,mBAAmB,GAAG,YAAY,CAAC;QAEnC,iEAAiE;QACjE,+DAA+D;QAC/D,kBAAkB;QAClB,IAAI,WAAW,EAAE,CAAC;YAChB,+DAA+D;YAC/D,kEAAkE;YAClE,oEAAoE;YACpE,iCAAiC;YACjC,QAAQ,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,IAAI,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,IAAI,YAAY;QACvD,CAAC,CAAC,MAAM,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QACxF,CAAC,CAAC,MAAM,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAEpG,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;QACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC,EAAE,QAAQ,CAAC,CAAC;IAEb,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACpB,oGAAoG,CAAC;IACzG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,kBAAkB,CAC/B,WAAwB,EACxB,QAAgB,EAChB,SAAiB,EACjB,MAAc,EACd,MAAuC;AACvC;;;;;GAKG;AACH,eAAe,GAAG,KAAK;IAEvB,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,MAAM,GAAG,mCAAmC,CAAC;IACjD,MAAM,IAAI,iBAAiB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,IAAI,sBAAsB,MAAM,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IAE1F,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,sDAAsD;QACtD,0CAA0C;QAC1C,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QAEnC,iCAAiC;QACjC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEzC,qEAAqE;QACrE,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,iBAAiB,GAA2D,EAAE,CAAC;QAErF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;YAEjC,wEAAwE;YACxE,oEAAoE;YACpE,qEAAqE;YACrE,sDAAsD;YACtD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxF,IAAI,YAA2B,CAAC;YAChC,IAAI,aAA4C,CAAC;YACjD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,YAAY,GAAG,WAAW,CAAC;gBAC3B,aAAa,GAAG,WAAW,CAAC;YAC9B,CAAC;iBAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3B,YAAY,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzF,aAAa,GAAG,QAAQ,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,CAAC;gBACpB,aAAa,GAAG,WAAW,CAAC;YAC9B,CAAC;YAED,mEAAmE;YACnE,iEAAiE;YACjE,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;gBACpD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE;wBAC/D,QAAQ,EAAE,KAAK,CAAC,iBAAiB;qBAClC,CAAC,CAAC;gBACL,CAAC;gBACD,sEAAsE;gBACtE,6DAA6D;gBAC7D,sEAAsE;gBACtE,kEAAkE;gBAClE,gEAAgE;gBAChE,uDAAuD;gBACvD,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAClE,IAAI,KAAK,CAAC,qBAAqB,IAAI,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBAChE,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;wBAC1D,QAAQ,EAAE,KAAK,CAAC,iBAAiB;wBACjC,KAAK,EAAE,KAAK,CAAC,qBAAqB;qBACnC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAiB;oBAC7B,IAAI,EAAE,KAAK,CAAC,iBAAiB,IAAI,cAAc;oBAC/C,QAAQ,EAAE,YAAY;oBACtB,aAAa;oBACb,KAAK,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;oBAC3F,WAAW;oBACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,0BAA0B,CAAC;oBACnE,QAAQ,EAAE,MAAM,EAAE,QAAQ;oBAC1B,SAAS,EAAE,MAAM,EAAE,SAAS;oBAC5B,KAAK,EAAE,KAAK,CAAC,aAAa;oBAC1B,MAAM,EAAE,KAAK,CAAC,cAAc;oBAC5B,IAAI,EAAE,KAAK,CAAC,YAAY;oBACxB,IAAI,EAAE,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;wBACvD,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;oBAC9E,MAAM,EAAE,KAAK,CAAC,kBAAkB,IAAI,QAAQ;iBAC7C,CAAC;gBAEF,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;YACtD,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,uCAAuC;YACvC,MAAM,IAAI,sEAAsE,CAAC;YACjF,MAAM,IAAI,gFAAgF,CAAC;YAC3F,MAAM,IAAI,0EAA0E,CAAC;YACrF,MAAM,IAAI,0EAA0E,CAAC;YACrF,MAAM,IAAI,6EAA6E,CAAC;YACxF,MAAM,IAAI,iCAAiC,CAAC;QAC9C,CAAC;aAAM,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,wCAAwC,MAAM,WAAW,CAAC;YACpE,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACnC,MAAM,IAAI,iFAAiF,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,gEAAgE,CAAC;YAC3E,MAAM,IAAI,qLAAqL,CAAC;QAClM,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;YACvF,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC;YAEhG,MAAM,IAAI,cAAc,SAAS,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAC/E,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,QAAQ,aAAa,YAAY,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YAC9E,CAAC;YACD,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,QAAQ,eAAe,mBAAmB,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YACzF,CAAC;YACD,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACnC,MAAM,IAAI,iFAAiF,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;YAEf,2EAA2E;YAC3E,2EAA2E;YAC3E,gEAAgE;YAChE,MAAM,cAAc,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAE/D,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;gBACnC,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC5D,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,MAAM,IAAI,YAAY,SAAS,mBAAmB,MAAM,yCAAyC,cAAc,MAAM,CAAC;gBACxH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,YAAY,SAAS,mBAAmB,MAAM,yCAAyC,cAAc,wCAAwC,CAAC;gBAC1J,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,2EAA2E;YAC3E,sEAAsE;YACtE,qCAAqC;YACrC,EAAE;YACF,mEAAmE;YACnE,yEAAyE;YACzE,gEAAgE;YAChE,0EAA0E;YAC1E,+DAA+D;YAC/D,iEAAiE;YACjE,kBAAkB;YAClB,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAC5E,oEAAoE;YACpE,gEAAgE;YAChE,iEAAiE;YACjE,mCAAmC;YACnC,MAAM,sBAAsB,GAAG,CAAC,CAAyB,EAAW,EAAE,CACpE,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;YAC3E,mEAAmE;YACnE,0DAA0D;YAC1D,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CACpC,CAAC,CAAC,EAAiD,EAAE,CACnD,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,sBAAsB,CAAC,CAAC,CAAC,CACnD,CAAC;YACF,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;YACtE,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE7E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,4BAA4B,CAAC;gBAEvC,IAAI,eAAe,EAAE,CAAC;oBACpB,iEAAiE;oBACjE,qEAAqE;oBACrE,oEAAoE;oBACpE,+DAA+D;oBAC/D,iEAAiE;oBACjE,qEAAqE;oBACrE,qEAAqE;oBACrE,+DAA+D;oBAC/D,mEAAmE;oBACnE,qEAAqE;oBACrE,iEAAiE;oBACjE,kDAAkD;oBAClD,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACvD,kEAAkE;oBAClE,kEAAkE;oBAClE,uCAAuC;oBACvC,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,cAAc,KAAK,eAAe,IAAI,cAAc,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAC3E,MAAM,IAAI,oBAAoB,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,qEAAqE,CAAC;oBACrK,CAAC;oBAED,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;wBACd,MAAM,IAAI,gDAAgD,CAAC;wBAC3D,MAAM,IAAI,oDAAoD,CAAC;wBAC/D,MAAM,IAAI,oCAAoC,CAAC;wBAC/C,MAAM,IAAI,gCAAgC,CAAC;oBAC7C,CAAC;yBAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;wBACtB,MAAM,IAAI,6CAA6C,CAAC;wBACxD,MAAM,IAAI,qCAAqC,CAAC;wBAChD,MAAM,IAAI,qCAAqC,CAAC;wBAChD,MAAM,IAAI,6CAA6C,CAAC;oBAC1D,CAAC;yBAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;wBACtB,MAAM,IAAI,0CAA0C,CAAC;wBACrD,MAAM,IAAI,+CAA+C,CAAC;wBAC1D,MAAM,IAAI,yCAAyC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,+CAA+C,MAAM,OAAO,CAAC;wBACvE,MAAM,IAAI,0CAA0C,CAAC;wBACrD,MAAM,IAAI,0CAA0C,CAAC;oBACvD,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBACjC,+DAA+D;oBAC/D,gEAAgE;oBAChE,kDAAkD;oBAClD,MAAM,IAAI,oBAAoB,CAAC;oBAC/B,MAAM,IAAI,kDAAkD,CAAC;oBAC7D,MAAM,IAAI,0CAA0C,CAAC;oBACrD,MAAM,IAAI,0CAA0C,CAAC;gBACvD,CAAC;gBACD,iEAAiE;gBACjE,2DAA2D;gBAC3D,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,eAAe,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC;oBAC1E,IAAI,UAAU;wBAAE,MAAM,IAAI,IAAI,CAAC;oBAC/B,MAAM,IAAI,2BAA2B,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClF,CAAC;gBACD,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,IAAI,0CAA0C,CAAC;QACrD,MAAM,IAAI,yDAAyD,CAAC;QACpE,MAAM,IAAI,sCAAsC,CAAC;QACjD,MAAM,IAAI,iCAAiC,CAAC;QAC5C,MAAM,IAAI,2BAA2B,CAAC;QACtC,MAAM,IAAI,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACzF,CAAC;IAED,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,IAAI,gEAAgE,CAAC;IAC3E,MAAM,IAAI,mIAAmI,CAAC;IAC9I,MAAM,IAAI,kFAAkF,CAAC;IAE7F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAChC,YAA0B,EAC1B,QAAgB,EAChB,SAAiB,EACjB,MAAc,EACd,QAAgB,EAChB,MAAuC;IAEvC,IAAI,MAAM,GAAG,mCAAmC,CAAC;IACjD,MAAM,IAAI,iBAAiB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,IAAI,sBAAsB,MAAM,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IACxF,MAAM,IAAI,8EAA8E,CAAC;IACzF,MAAM,IAAI,2EAA2E,CAAC;IACtF,MAAM,IAAI,yEAAyE,CAAC;IACpF,MAAM,IAAI,sDAAsD,CAAC;IAEjE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,UAA4B,CAAC;QACjC,IAAI,SAAkB,CAAC;QACvB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,8EAA8E;QAC9E,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,gEAAgE;gBAChE,kEAAkE;gBAClE,oEAAoE;gBACpE,oEAAoE;gBACpE,oEAAoE;gBACpE,oEAAoE;gBACpE,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;gBAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;gBAEjD,oEAAoE;gBACpE,sEAAsE;gBACtE,qEAAqE;gBACrE,qEAAqE;gBACrE,sEAAsE;gBACtE,sEAAsE;gBACtE,gEAAgE;gBAChE,qEAAqE;gBACrE,qDAAqD;gBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE5C,8DAA8D;gBAC9D,qEAAqE;gBACrE,sEAAsE;gBACtE,oEAAoE;gBACpE,2DAA2D;gBAC3D,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;gBACtC,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;gBACtC,IAAI,SAA8C,CAAC;gBACnD,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;oBACrB,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBAAM,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC1B,SAAS,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;oBACzB,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACnC,CAAC;gBAED,8DAA8D;gBAC9D,qEAAqE;gBACrE,oEAAoE;gBACpE,gCAAgC;gBAChC,IAAI,GAAG,GAAqB,EAAE,CAAC;gBAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;oBACrC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC1F,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC7D,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,QAAQ,CAClD,CAAC;gBACF,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,qBAAqB,CAAC,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,mEAAmE;gBACnE,2DAA2D;gBAC3D,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;gBACjE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/E,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/E,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,uEAAuE,CAAC;QACpF,CAAC;aAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,6FAA6F,CAAC;QAC1G,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;gBACzD,GAAG,EAAE,qBAAqB;gBAC1B,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,IAAI,0DAA0D,qBAAqB,sCAAsC,CAAC;QAClI,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,UAAU,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QAE5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,yCAAyC,UAAU,WAAW,MAAM,YAAY,CAAC;YAC3F,MAAM,IAAI,0EAA0E,CAAC;YACrF,MAAM,IAAI,uEAAuE,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAEpE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,QAAQ,UAAU,CAAC,MAAM,4BAA4B,eAAe,WAAW,UAAU,IAAI,CAAC;YACxG,MAAM,IAAI,gBAAgB,QAAQ,CAAC,MAAM,WAAW,aAAa,WAAW,MAAM,WAAW,CAAC;YAE9F,8DAA8D;YAC9D,kDAAkD;YAClD,MAAM,iBAAiB,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAE5D,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACxC,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC;gBACtD,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,MAAM,IAAI,YAAY,SAAS,sBAAsB,MAAM,yCAAyC,iBAAiB,MAAM,CAAC;gBAC9H,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,YAAY,SAAS,sBAAsB,MAAM,yCAAyC,iBAAiB,wCAAwC,CAAC;gBAChK,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,oEAAoE;YACpE,+BAA+B;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,uEAAuE;YACvE,+DAA+D;YAC/D,gEAAgE;YAChE,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,4BAA4B,CAAC;YACvC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,iEAAiE,CAAC;gBAC5E,MAAM,IAAI,oDAAoD,CAAC;gBAC/D,MAAM,IAAI,oCAAoC,CAAC;gBAC/C,MAAM,IAAI,gCAAgC,CAAC;YAC7C,CAAC;iBAAM,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;gBAC9B,MAAM,IAAI,8DAA8D,CAAC;gBACzE,MAAM,IAAI,qCAAqC,CAAC;gBAChD,MAAM,IAAI,qCAAqC,CAAC;gBAChD,MAAM,IAAI,6CAA6C,CAAC;YAC1D,CAAC;iBAAM,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;gBAC9B,MAAM,IAAI,2DAA2D,CAAC;gBACtE,MAAM,IAAI,+CAA+C,CAAC;gBAC1D,MAAM,IAAI,yCAAyC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uDAAuD,MAAM,OAAO,CAAC;gBAC/E,MAAM,IAAI,mDAAmD,CAAC;gBAC9D,MAAM,IAAI,0CAA0C,CAAC;YACvD,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,IAAI,0CAA0C,CAAC;QACrD,MAAM,IAAI,yDAAyD,CAAC;QACpE,MAAM,IAAI,sCAAsC,CAAC;QACjD,MAAM,IAAI,iCAAiC,CAAC;QAC5C,MAAM,IAAI,2BAA2B,CAAC;QACtC,MAAM,IAAI,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACzF,CAAC;IAED,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,IAAI,+EAA+E,CAAC;IAC1F,MAAM,IAAI,+JAA+J,CAAC;IAC1K,MAAM,IAAI,4IAA4I,CAAC;IAEvJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,mEAAmE;AACnE,SAAS,eAAe,CAAC,IAAY;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,mBAAmB,CAAC;QAC7B,KAAK,GAAG;YACN,OAAO,iBAAiB,CAAC;QAC3B,KAAK,GAAG;YACN,OAAO,iBAAiB,CAAC;QAC3B;YACE,OAAO,IAAI,IAAI,SAAS,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,uBAAuB,CAAC,OAAqB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,CAAC;IAC3F,IAAI,OAAO,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,UAAU,CAAC,CAAC;IACpG,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,CAAC;IACxF,IAAI,OAAO,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,UAAU,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,OAAqB,EAAE,OAAe;IAClE,IAAI,MAAM,GAAG,wBAAwB,OAAO,MAAM,CAAC;IAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,IAAI,mBAAmB,OAAO,CAAC,KAAK,WAAW,eAAe,EAAE,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,OAAO,CAAC,QAAQ,UAAU,OAAO,CAAC,UAAU,SAAS,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,IAAI,CAAC;IAEf,MAAM,IAAI,iBAAiB,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;IAC3F,MAAM,IAAI,eAAe,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5G,MAAM,IAAI,uBAAuB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;IAEzF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,CAChF,CAAC;IACF,MAAM,IAAI,yBAAyB,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC;IAExE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAmB,iBAAiB,IAAI,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,kBAAkB,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;IAEnE,MAAM,IAAI,WAAW,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAkB,EAAE,QAAgB;IAC7D,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;IAEnC,kBAAkB;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/D,MAAM,IAAI,aAAa,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;IAClD,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAC9B,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,iBAAiB,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC7D,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,QAAQ,IAAI,KAAK,IAAI,CAAC,MAAM,SAAS,CAAC;QACvD,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,iBAAiB,QAAQ,IAAI,CAAC;IAC1C,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,gFAAgF;IAChF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChE,MAAM,IAAI,mCAAmC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1G,CAAC;IAED,MAAM,IAAI,IAAI,CAAC;IAEf,kBAAkB;IAClB,MAAM,IAAI,cAAc,CAAC;IACzB,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAC3B,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;IAElG,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,4DAA4D;IAC5D,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAElD,2EAA2E;IAC3E,+DAA+D;IAC/D,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,oCAAoC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,IAAI,uBAAuB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC;QAC5G,MAAM,IAAI,oBAAoB,UAAU,IAAI,CAAC;IAC/C,CAAC;IAED,MAAM,IAAI,WAAW,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/types/wildfire.d.ts
CHANGED
|
@@ -8,15 +8,15 @@ export interface FirePerimeterAttributes {
|
|
|
8
8
|
poly_IncidentName: string;
|
|
9
9
|
attr_IncidentName?: string;
|
|
10
10
|
attr_IncidentTypeCategory?: string;
|
|
11
|
-
poly_GISAcres?: number;
|
|
12
|
-
attr_FinalAcres?: number;
|
|
13
|
-
attr_CalculatedAcres?: number;
|
|
11
|
+
poly_GISAcres?: number | null;
|
|
12
|
+
attr_FinalAcres?: number | null;
|
|
13
|
+
attr_CalculatedAcres?: number | null;
|
|
14
14
|
attr_PercentContained?: number;
|
|
15
15
|
attr_ContainmentDateTime?: number;
|
|
16
16
|
poly_FeatureStatus?: string;
|
|
17
|
-
attr_FireDiscoveryDateTime?: number;
|
|
18
|
-
attr_InitialLatitude?: number;
|
|
19
|
-
attr_InitialLongitude?: number;
|
|
17
|
+
attr_FireDiscoveryDateTime?: number | null;
|
|
18
|
+
attr_InitialLatitude?: number | null;
|
|
19
|
+
attr_InitialLongitude?: number | null;
|
|
20
20
|
attr_POOState?: string;
|
|
21
21
|
attr_POOCounty?: string;
|
|
22
22
|
attr_POOCity?: string;
|
|
@@ -39,7 +39,8 @@ export interface ArcGISPolygonGeometry {
|
|
|
39
39
|
*/
|
|
40
40
|
export interface FirePerimeterFeature {
|
|
41
41
|
attributes: FirePerimeterAttributes;
|
|
42
|
-
|
|
42
|
+
/** Read through `distanceToPerimeterKm`, which narrows the rings itself. */
|
|
43
|
+
geometry?: ArcGISPolygonGeometry;
|
|
43
44
|
}
|
|
44
45
|
/**
|
|
45
46
|
* Response from NIFC ArcGIS query endpoint
|
|
@@ -68,8 +69,17 @@ export interface NIFCQueryResponse {
|
|
|
68
69
|
*/
|
|
69
70
|
export interface WildfireInfo {
|
|
70
71
|
name: string;
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Km from the query location to the fire, on the basis `distanceBasis`
|
|
74
|
+
* names, or `null` when NIFC published neither a usable perimeter nor a
|
|
75
|
+
* usable point of origin. `null` means "unlocated", not zero and not far:
|
|
76
|
+
* an unknown distance is not evidence of distance.
|
|
77
|
+
*/
|
|
78
|
+
distance: number | null;
|
|
79
|
+
/** What `distance` was measured to. */
|
|
80
|
+
distanceBasis: 'perimeter' | 'origin' | 'unlocated';
|
|
81
|
+
/** Acres, or `null` when NIFC published no size greater than zero ("not reported"). */
|
|
82
|
+
acres: number | null;
|
|
73
83
|
/**
|
|
74
84
|
* Containment percentage 0-100, or `null` when NIFC published no usable
|
|
75
85
|
* containment for this incident. `null` means "not reported", not
|
|
@@ -77,7 +87,9 @@ export interface WildfireInfo {
|
|
|
77
87
|
* contained) and both encodings occur live.
|
|
78
88
|
*/
|
|
79
89
|
containment: number | null;
|
|
80
|
-
|
|
90
|
+
/** Discovery date, or `null` when NIFC published no usable timestamp ("not reported"). */
|
|
91
|
+
discoveryDate: Date | null;
|
|
92
|
+
/** Reported point of origin; set only when both coordinates are usable. */
|
|
81
93
|
latitude?: number;
|
|
82
94
|
longitude?: number;
|
|
83
95
|
state?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildfire.d.ts","sourceRoot":"","sources":["../../src/types/wildfire.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IAEtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAGnC,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"wildfire.d.ts","sourceRoot":"","sources":["../../src/types/wildfire.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firePerimeter.d.ts","sourceRoot":"","sources":["../../src/utils/firePerimeter.ts"],"names":[],"mappings":"AAyEA,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,IAAI,CAyCf"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distance from a point to a wildfire perimeter (NIFC / ArcGIS polygon rings).
|
|
3
|
+
*
|
|
4
|
+
* Returns exactly 0 when the point is inside the polygon, otherwise the
|
|
5
|
+
* great-circle distance in km to the nearest point on any ring edge, or `null`
|
|
6
|
+
* when the geometry carries no usable vertex.
|
|
7
|
+
*
|
|
8
|
+
* Input order: ArcGIS sends each vertex as `[lon, lat]` (WGS84). This is the
|
|
9
|
+
* opposite of `pointInPolygon.ts`, which takes `[lat, lon]` and ORs over rings
|
|
10
|
+
* (a point in a hole still counts as inside any other ring). Neither fits here:
|
|
11
|
+
* a hole must read as outside, so inside is even-odd parity summed over all
|
|
12
|
+
* rings, and that is why `pointInPolygon.ts` is not reused.
|
|
13
|
+
*
|
|
14
|
+
* Pure, zero I/O, no logging. No vertex cap: a trimmed ring set used for
|
|
15
|
+
* "is it inside" would fabricate distance (GOTCHAS G8).
|
|
16
|
+
*
|
|
17
|
+
* Precondition: no ring crosses the antimeridian. NIFC covers the US, PR, USVI
|
|
18
|
+
* and Guam; only the western Aleutians cross 180 deg. Revisit trigger: a WFIGS
|
|
19
|
+
* perimeter with vertices on both sides of 180 deg.
|
|
20
|
+
*
|
|
21
|
+
* The edge foot is picked in a local equirectangular projection centred on the
|
|
22
|
+
* query point; the reported distance is always haversine to that foot.
|
|
23
|
+
*/
|
|
24
|
+
import { calculateDistance } from './distance.js';
|
|
25
|
+
function toVertex(raw) {
|
|
26
|
+
if (!Array.isArray(raw))
|
|
27
|
+
return null;
|
|
28
|
+
const lon = raw[0];
|
|
29
|
+
const lat = raw[1];
|
|
30
|
+
if (typeof lon !== 'number' || typeof lat !== 'number')
|
|
31
|
+
return null;
|
|
32
|
+
if (!Number.isFinite(lon) || !Number.isFinite(lat))
|
|
33
|
+
return null;
|
|
34
|
+
if (lon < -180 || lon > 180 || lat < -90 || lat > 90)
|
|
35
|
+
return null;
|
|
36
|
+
return [lon, lat];
|
|
37
|
+
}
|
|
38
|
+
function usableRing(raw) {
|
|
39
|
+
if (!Array.isArray(raw))
|
|
40
|
+
return null;
|
|
41
|
+
const out = [];
|
|
42
|
+
for (const v of raw) {
|
|
43
|
+
const vertex = toVertex(v);
|
|
44
|
+
if (vertex)
|
|
45
|
+
out.push(vertex);
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
/** Distance in km from the query point to segment a-b (a !== b), via the projected foot. */
|
|
50
|
+
function edgeDistanceKm(latitude, longitude, cosLat, a, b) {
|
|
51
|
+
const ax = (a[0] - longitude) * cosLat;
|
|
52
|
+
const ay = a[1] - latitude;
|
|
53
|
+
const bx = (b[0] - longitude) * cosLat;
|
|
54
|
+
const by = b[1] - latitude;
|
|
55
|
+
const dx = bx - ax;
|
|
56
|
+
const dy = by - ay;
|
|
57
|
+
const lenSq = dx * dx + dy * dy;
|
|
58
|
+
if (lenSq === 0) {
|
|
59
|
+
return calculateDistance(latitude, longitude, a[1], a[0]);
|
|
60
|
+
}
|
|
61
|
+
const t = -(ax * dx + ay * dy) / lenSq;
|
|
62
|
+
if (t <= 0)
|
|
63
|
+
return calculateDistance(latitude, longitude, a[1], a[0]);
|
|
64
|
+
if (t >= 1)
|
|
65
|
+
return calculateDistance(latitude, longitude, b[1], b[0]);
|
|
66
|
+
const footLon = a[0] + t * (b[0] - a[0]);
|
|
67
|
+
const footLat = a[1] + t * (b[1] - a[1]);
|
|
68
|
+
return calculateDistance(latitude, longitude, footLat, footLon);
|
|
69
|
+
}
|
|
70
|
+
export function distanceToPerimeterKm(latitude, longitude, rings) {
|
|
71
|
+
if (!Array.isArray(rings))
|
|
72
|
+
return null;
|
|
73
|
+
const usable = [];
|
|
74
|
+
for (const raw of rings) {
|
|
75
|
+
const ring = usableRing(raw);
|
|
76
|
+
if (ring && ring.length > 0)
|
|
77
|
+
usable.push(ring);
|
|
78
|
+
}
|
|
79
|
+
if (usable.length === 0)
|
|
80
|
+
return null;
|
|
81
|
+
// Inside: even-odd crossing parity over every ring with 3+ usable vertices.
|
|
82
|
+
let crossings = 0;
|
|
83
|
+
for (const ring of usable) {
|
|
84
|
+
if (ring.length < 3)
|
|
85
|
+
continue;
|
|
86
|
+
for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {
|
|
87
|
+
const [xi, yi] = ring[i];
|
|
88
|
+
const [xj, yj] = ring[j];
|
|
89
|
+
if (yi > latitude !== yj > latitude) {
|
|
90
|
+
const xCross = ((xj - xi) * (latitude - yi)) / (yj - yi) + xi;
|
|
91
|
+
if (longitude < xCross)
|
|
92
|
+
crossings++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (crossings % 2 === 1)
|
|
97
|
+
return 0;
|
|
98
|
+
const cosLat = Math.cos((latitude * Math.PI) / 180);
|
|
99
|
+
let best = Infinity;
|
|
100
|
+
for (const ring of usable) {
|
|
101
|
+
if (ring.length === 1) {
|
|
102
|
+
const v = ring[0];
|
|
103
|
+
best = Math.min(best, calculateDistance(latitude, longitude, v[1], v[0]));
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {
|
|
107
|
+
best = Math.min(best, edgeDistanceKm(latitude, longitude, cosLat, ring[j], ring[i]));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return best;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=firePerimeter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firePerimeter.js","sourceRoot":"","sources":["../../src/utils/firePerimeter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dangahagan/weather-mcp",
|
|
3
|
-
"version": "1.35.
|
|
3
|
+
"version": "1.35.12",
|
|
4
4
|
"description": "MCP server giving AI assistants 17 weather tools with zero API keys: global forecasts, current conditions, alerts, air quality, marine conditions, lightning detection, radar imagery, river levels, wildfire tracking, and historical weather back to 1940. Built entirely on free public APIs (NOAA, Open-Meteo, USGS, NIFC).",
|
|
5
5
|
"mcpName": "io.github.dgahagan/weather-mcp",
|
|
6
6
|
"main": "dist/index.js",
|