@dangahagan/weather-mcp 0.1.2 → 0.4.0
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 +295 -52
- package/dist/config/cache.d.ts +30 -0
- package/dist/config/cache.d.ts.map +1 -0
- package/dist/config/cache.js +105 -0
- package/dist/config/cache.js.map +1 -0
- package/dist/config/displayThresholds.d.ts +83 -0
- package/dist/config/displayThresholds.d.ts.map +1 -0
- package/dist/config/displayThresholds.js +83 -0
- package/dist/config/displayThresholds.js.map +1 -0
- package/dist/errors/ApiError.d.ts +62 -0
- package/dist/errors/ApiError.d.ts.map +1 -0
- package/dist/errors/ApiError.js +147 -0
- package/dist/errors/ApiError.js.map +1 -0
- package/dist/handlers/alertsHandler.d.ts +11 -0
- package/dist/handlers/alertsHandler.d.ts.map +1 -0
- package/dist/handlers/alertsHandler.js +79 -0
- package/dist/handlers/alertsHandler.js.map +1 -0
- package/dist/handlers/currentConditionsHandler.d.ts +11 -0
- package/dist/handlers/currentConditionsHandler.d.ts.map +1 -0
- package/dist/handlers/currentConditionsHandler.js +168 -0
- package/dist/handlers/currentConditionsHandler.js.map +1 -0
- package/dist/handlers/forecastHandler.d.ts +13 -0
- package/dist/handlers/forecastHandler.d.ts.map +1 -0
- package/dist/handlers/forecastHandler.js +226 -0
- package/dist/handlers/forecastHandler.js.map +1 -0
- package/dist/handlers/historicalWeatherHandler.d.ts +12 -0
- package/dist/handlers/historicalWeatherHandler.d.ts.map +1 -0
- package/dist/handlers/historicalWeatherHandler.js +188 -0
- package/dist/handlers/historicalWeatherHandler.js.map +1 -0
- package/dist/handlers/locationHandler.d.ts +11 -0
- package/dist/handlers/locationHandler.d.ts.map +1 -0
- package/dist/handlers/locationHandler.js +113 -0
- package/dist/handlers/locationHandler.js.map +1 -0
- package/dist/handlers/statusHandler.d.ts +12 -0
- package/dist/handlers/statusHandler.d.ts.map +1 -0
- package/dist/handlers/statusHandler.js +106 -0
- package/dist/handlers/statusHandler.js.map +1 -0
- package/dist/index.js +149 -343
- package/dist/index.js.map +1 -1
- package/dist/services/noaa.d.ts +23 -1
- package/dist/services/noaa.d.ts.map +1 -1
- package/dist/services/noaa.js +154 -41
- package/dist/services/noaa.js.map +1 -1
- package/dist/services/openmeteo.d.ts +63 -3
- package/dist/services/openmeteo.d.ts.map +1 -1
- package/dist/services/openmeteo.js +284 -50
- package/dist/services/openmeteo.js.map +1 -1
- package/dist/types/noaa.d.ts +64 -12
- package/dist/types/noaa.d.ts.map +1 -1
- package/dist/types/openmeteo.d.ts +156 -0
- package/dist/types/openmeteo.d.ts.map +1 -1
- package/dist/utils/cache.d.ts +69 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +164 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/logger.d.ts +59 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +128 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/temperatureConversion.d.ts +12 -0
- package/dist/utils/temperatureConversion.d.ts.map +1 -0
- package/dist/utils/temperatureConversion.js +17 -0
- package/dist/utils/temperatureConversion.js.map +1 -0
- package/dist/utils/validation.d.ts +89 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +177 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +10 -3
package/dist/services/noaa.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Service for interacting with the NOAA Weather API
|
|
3
3
|
*/
|
|
4
|
-
import type { PointsResponse, ForecastResponse, ObservationResponse, ObservationCollectionResponse, StationCollectionResponse } from '../types/noaa.js';
|
|
4
|
+
import type { PointsResponse, ForecastResponse, ObservationResponse, ObservationCollectionResponse, StationCollectionResponse, AlertCollectionResponse } from '../types/noaa.js';
|
|
5
5
|
export interface NOAAServiceConfig {
|
|
6
6
|
userAgent?: string;
|
|
7
7
|
baseURL?: string;
|
|
@@ -11,6 +11,7 @@ export interface NOAAServiceConfig {
|
|
|
11
11
|
export declare class NOAAService {
|
|
12
12
|
private client;
|
|
13
13
|
private maxRetries;
|
|
14
|
+
private cache;
|
|
14
15
|
constructor(config?: NOAAServiceConfig);
|
|
15
16
|
/**
|
|
16
17
|
* Handle API errors with retry logic and helpful status information
|
|
@@ -20,6 +21,14 @@ export declare class NOAAService {
|
|
|
20
21
|
* Make request with retry logic
|
|
21
22
|
*/
|
|
22
23
|
private makeRequest;
|
|
24
|
+
/**
|
|
25
|
+
* Get cache statistics
|
|
26
|
+
*/
|
|
27
|
+
getCacheStats(): import("../utils/cache.js").CacheStats;
|
|
28
|
+
/**
|
|
29
|
+
* Clear the cache
|
|
30
|
+
*/
|
|
31
|
+
clearCache(): void;
|
|
23
32
|
/**
|
|
24
33
|
* Check if the NOAA API is operational
|
|
25
34
|
* Performs a lightweight health check by requesting a well-known endpoint
|
|
@@ -49,6 +58,11 @@ export declare class NOAAService {
|
|
|
49
58
|
* This combines getPointData and getForecast
|
|
50
59
|
*/
|
|
51
60
|
getForecastByCoordinates(latitude: number, longitude: number): Promise<ForecastResponse>;
|
|
61
|
+
/**
|
|
62
|
+
* Get hourly forecast for a location using lat/lon (convenience method)
|
|
63
|
+
* This combines getPointData and getHourlyForecast
|
|
64
|
+
*/
|
|
65
|
+
getHourlyForecastByCoordinates(latitude: number, longitude: number): Promise<ForecastResponse>;
|
|
52
66
|
/**
|
|
53
67
|
* Get nearest observation stations for a location
|
|
54
68
|
*/
|
|
@@ -70,5 +84,13 @@ export declare class NOAAService {
|
|
|
70
84
|
* Get historical observations for a location (convenience method)
|
|
71
85
|
*/
|
|
72
86
|
getHistoricalObservations(latitude: number, longitude: number, startTime: Date, endTime: Date, limit?: number): Promise<ObservationCollectionResponse>;
|
|
87
|
+
/**
|
|
88
|
+
* Get active weather alerts for a location
|
|
89
|
+
* @param latitude Latitude coordinate
|
|
90
|
+
* @param longitude Longitude coordinate
|
|
91
|
+
* @param activeOnly Whether to filter to only active alerts (default: true)
|
|
92
|
+
* @returns Collection of weather alerts
|
|
93
|
+
*/
|
|
94
|
+
getAlerts(latitude: number, longitude: number, activeOnly?: boolean): Promise<AlertCollectionResponse>;
|
|
73
95
|
}
|
|
74
96
|
//# sourceMappingURL=noaa.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noaa.d.ts","sourceRoot":"","sources":["../../src/services/noaa.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"noaa.d.ts","sourceRoot":"","sources":["../../src/services/noaa.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,EAExB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,GAAE,iBAAsB;IA2B1C;;OAEG;YACW,WAAW;IAqDzB;;OAEG;YACW,WAAW;IA2BzB;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAqDF;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBhF;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB1F;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBhG;;;OAGG;IACG,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM9F;;;OAGG;IACG,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMpG;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAqB1F;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqB3E;;OAEG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,IAAI,EAChB,OAAO,CAAC,EAAE,IAAI,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,6BAA6B,CAAC;IAuDzC;;;OAGG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqB7F;;OAEG;IACG,yBAAyB,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,6BAA6B,CAAC;IA0BzC;;;;;;OAMG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,uBAAuB,CAAC;CAqCpC"}
|
package/dist/services/noaa.js
CHANGED
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
* Service for interacting with the NOAA Weather API
|
|
3
3
|
*/
|
|
4
4
|
import axios from 'axios';
|
|
5
|
+
import { Cache } from '../utils/cache.js';
|
|
6
|
+
import { CacheConfig, getHistoricalDataTTL } from '../config/cache.js';
|
|
7
|
+
import { validateLatitude, validateLongitude } from '../utils/validation.js';
|
|
8
|
+
import { RateLimitError, ServiceUnavailableError, InvalidLocationError, DataNotFoundError, ApiError } from '../errors/ApiError.js';
|
|
5
9
|
export class NOAAService {
|
|
6
10
|
client;
|
|
7
11
|
maxRetries;
|
|
12
|
+
cache;
|
|
8
13
|
constructor(config = {}) {
|
|
9
14
|
const { userAgent = '(weather-mcp, contact@example.com)', baseURL = 'https://api.weather.gov', timeout = 30000, maxRetries = 3 } = config;
|
|
10
15
|
this.maxRetries = maxRetries;
|
|
16
|
+
this.cache = new Cache(CacheConfig.maxSize);
|
|
11
17
|
this.client = axios.create({
|
|
12
18
|
baseURL,
|
|
13
19
|
timeout,
|
|
@@ -28,54 +34,31 @@ export class NOAAService {
|
|
|
28
34
|
const data = error.response.data;
|
|
29
35
|
// Rate limit error - suggest retry
|
|
30
36
|
if (status === 429) {
|
|
31
|
-
throw new
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
throw new RateLimitError('NOAA');
|
|
38
|
+
}
|
|
39
|
+
// 404 errors - location not found
|
|
40
|
+
if (status === 404) {
|
|
41
|
+
throw new DataNotFoundError('NOAA', `${data.detail || data.title || 'Location not found'}\n\n` +
|
|
42
|
+
`This location may be outside NOAA's coverage area (US only).`);
|
|
35
43
|
}
|
|
36
44
|
// Other client errors
|
|
37
45
|
if (status >= 400 && status < 500) {
|
|
38
|
-
|
|
39
|
-
// Add contextual help based on error type
|
|
40
|
-
if (status === 404) {
|
|
41
|
-
errorMsg += `This location may be outside NOAA's coverage area (US only).\n\n`;
|
|
42
|
-
}
|
|
43
|
-
errorMsg += `If this persists, check:\n` +
|
|
44
|
-
`- Planned outages: https://weather-gov.github.io/api/planned-outages\n` +
|
|
45
|
-
`- Service notices: https://www.weather.gov/notification\n` +
|
|
46
|
-
`- Report issues: https://weather-gov.github.io/api/reporting-issues`;
|
|
47
|
-
throw new Error(errorMsg);
|
|
46
|
+
throw new InvalidLocationError('NOAA', data.detail || data.title || 'Invalid request');
|
|
48
47
|
}
|
|
49
48
|
// Server errors
|
|
50
49
|
if (status >= 500) {
|
|
51
|
-
throw new
|
|
52
|
-
`The NOAA Weather API may be experiencing an outage.\n\n` +
|
|
53
|
-
`Check service status:\n` +
|
|
54
|
-
`- Planned outages: https://weather-gov.github.io/api/planned-outages\n` +
|
|
55
|
-
`- Service notices: https://www.weather.gov/notification\n` +
|
|
56
|
-
`- Report issues: nco.ops@noaa.gov or (301) 683-1518`);
|
|
50
|
+
throw new ServiceUnavailableError('NOAA', error);
|
|
57
51
|
}
|
|
58
52
|
}
|
|
59
53
|
// Network errors
|
|
60
54
|
if (error.code === 'ECONNABORTED') {
|
|
61
|
-
throw new
|
|
62
|
-
`If timeouts persist, the service may be experiencing issues:\n` +
|
|
63
|
-
`https://weather-gov.github.io/api/planned-outages`);
|
|
55
|
+
throw new ServiceUnavailableError('NOAA', error);
|
|
64
56
|
}
|
|
65
57
|
if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED') {
|
|
66
|
-
throw new
|
|
67
|
-
`Possible causes:\n` +
|
|
68
|
-
`- Internet connection issues\n` +
|
|
69
|
-
`- NOAA API service outage\n` +
|
|
70
|
-
`- DNS resolution problems\n\n` +
|
|
71
|
-
`Check:\n` +
|
|
72
|
-
`- Your internet connection\n` +
|
|
73
|
-
`- Service status: https://weather-gov.github.io/api/planned-outages`);
|
|
58
|
+
throw new ServiceUnavailableError('NOAA', error);
|
|
74
59
|
}
|
|
75
60
|
// Generic error
|
|
76
|
-
throw new
|
|
77
|
-
`For assistance, visit:\n` +
|
|
78
|
-
`https://weather-gov.github.io/api/reporting-issues`);
|
|
61
|
+
throw new ApiError(`NOAA API request failed: ${error.message}`, 500, 'NOAA', `Request failed: ${error.message}`, ['https://weather-gov.github.io/api/reporting-issues'], true);
|
|
79
62
|
}
|
|
80
63
|
/**
|
|
81
64
|
* Make request with retry logic
|
|
@@ -92,7 +75,9 @@ export class NOAAService {
|
|
|
92
75
|
error.message.includes('server error') ||
|
|
93
76
|
error.message.includes('timed out');
|
|
94
77
|
if (shouldRetry) {
|
|
95
|
-
|
|
78
|
+
// Exponential backoff with jitter to prevent thundering herd
|
|
79
|
+
const baseDelay = Math.pow(2, retries) * 1000;
|
|
80
|
+
const delay = baseDelay * (0.5 + Math.random() * 0.5);
|
|
96
81
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
97
82
|
return this.makeRequest(url, retries + 1);
|
|
98
83
|
}
|
|
@@ -100,6 +85,18 @@ export class NOAAService {
|
|
|
100
85
|
throw error;
|
|
101
86
|
}
|
|
102
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Get cache statistics
|
|
90
|
+
*/
|
|
91
|
+
getCacheStats() {
|
|
92
|
+
return this.cache.getStats();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Clear the cache
|
|
96
|
+
*/
|
|
97
|
+
clearCache() {
|
|
98
|
+
this.cache.clear();
|
|
99
|
+
}
|
|
103
100
|
/**
|
|
104
101
|
* Check if the NOAA API is operational
|
|
105
102
|
* Performs a lightweight health check by requesting a well-known endpoint
|
|
@@ -163,12 +160,21 @@ export class NOAAService {
|
|
|
163
160
|
* This is the first step for getting forecast or observation data
|
|
164
161
|
*/
|
|
165
162
|
async getPointData(latitude, longitude) {
|
|
166
|
-
// Validate coordinates
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (
|
|
171
|
-
|
|
163
|
+
// Validate coordinates (checks for NaN, Infinity, and range)
|
|
164
|
+
validateLatitude(latitude);
|
|
165
|
+
validateLongitude(longitude);
|
|
166
|
+
// Check cache first (if enabled)
|
|
167
|
+
if (CacheConfig.enabled) {
|
|
168
|
+
const cacheKey = Cache.generateKey('points', latitude.toFixed(4), longitude.toFixed(4));
|
|
169
|
+
const cached = this.cache.get(cacheKey);
|
|
170
|
+
if (cached) {
|
|
171
|
+
return cached;
|
|
172
|
+
}
|
|
173
|
+
const url = `/points/${latitude.toFixed(4)},${longitude.toFixed(4)}`;
|
|
174
|
+
const result = await this.makeRequest(url);
|
|
175
|
+
// Cache with infinite TTL (grid coordinates never change)
|
|
176
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.gridCoordinates);
|
|
177
|
+
return result;
|
|
172
178
|
}
|
|
173
179
|
const url = `/points/${latitude.toFixed(4)},${longitude.toFixed(4)}`;
|
|
174
180
|
return this.makeRequest(url);
|
|
@@ -177,6 +183,19 @@ export class NOAAService {
|
|
|
177
183
|
* Get forecast for a location using grid coordinates
|
|
178
184
|
*/
|
|
179
185
|
async getForecast(office, gridX, gridY) {
|
|
186
|
+
// Check cache first (if enabled)
|
|
187
|
+
if (CacheConfig.enabled) {
|
|
188
|
+
const cacheKey = Cache.generateKey('forecast', office, gridX, gridY);
|
|
189
|
+
const cached = this.cache.get(cacheKey);
|
|
190
|
+
if (cached) {
|
|
191
|
+
return cached;
|
|
192
|
+
}
|
|
193
|
+
const url = `/gridpoints/${office}/${gridX},${gridY}/forecast`;
|
|
194
|
+
const result = await this.makeRequest(url);
|
|
195
|
+
// Cache with forecast TTL (2 hours)
|
|
196
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.forecast);
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
180
199
|
const url = `/gridpoints/${office}/${gridX},${gridY}/forecast`;
|
|
181
200
|
return this.makeRequest(url);
|
|
182
201
|
}
|
|
@@ -184,6 +203,19 @@ export class NOAAService {
|
|
|
184
203
|
* Get hourly forecast for a location using grid coordinates
|
|
185
204
|
*/
|
|
186
205
|
async getHourlyForecast(office, gridX, gridY) {
|
|
206
|
+
// Check cache first (if enabled)
|
|
207
|
+
if (CacheConfig.enabled) {
|
|
208
|
+
const cacheKey = Cache.generateKey('hourly-forecast', office, gridX, gridY);
|
|
209
|
+
const cached = this.cache.get(cacheKey);
|
|
210
|
+
if (cached) {
|
|
211
|
+
return cached;
|
|
212
|
+
}
|
|
213
|
+
const url = `/gridpoints/${office}/${gridX},${gridY}/forecast/hourly`;
|
|
214
|
+
const result = await this.makeRequest(url);
|
|
215
|
+
// Cache with forecast TTL (2 hours) - hourly forecasts update at same rate as daily
|
|
216
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.forecast);
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
187
219
|
const url = `/gridpoints/${office}/${gridX},${gridY}/forecast/hourly`;
|
|
188
220
|
return this.makeRequest(url);
|
|
189
221
|
}
|
|
@@ -196,10 +228,32 @@ export class NOAAService {
|
|
|
196
228
|
const { gridId, gridX, gridY } = pointData.properties;
|
|
197
229
|
return this.getForecast(gridId, gridX, gridY);
|
|
198
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Get hourly forecast for a location using lat/lon (convenience method)
|
|
233
|
+
* This combines getPointData and getHourlyForecast
|
|
234
|
+
*/
|
|
235
|
+
async getHourlyForecastByCoordinates(latitude, longitude) {
|
|
236
|
+
const pointData = await this.getPointData(latitude, longitude);
|
|
237
|
+
const { gridId, gridX, gridY } = pointData.properties;
|
|
238
|
+
return this.getHourlyForecast(gridId, gridX, gridY);
|
|
239
|
+
}
|
|
199
240
|
/**
|
|
200
241
|
* Get nearest observation stations for a location
|
|
201
242
|
*/
|
|
202
243
|
async getStations(latitude, longitude) {
|
|
244
|
+
// Check cache first (if enabled)
|
|
245
|
+
if (CacheConfig.enabled) {
|
|
246
|
+
const cacheKey = Cache.generateKey('stations', latitude.toFixed(4), longitude.toFixed(4));
|
|
247
|
+
const cached = this.cache.get(cacheKey);
|
|
248
|
+
if (cached) {
|
|
249
|
+
return cached;
|
|
250
|
+
}
|
|
251
|
+
const url = `/points/${latitude.toFixed(4)},${longitude.toFixed(4)}/stations`;
|
|
252
|
+
const result = await this.makeRequest(url);
|
|
253
|
+
// Cache with stations TTL (24 hours - stations rarely change)
|
|
254
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.stations);
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
203
257
|
const url = `/points/${latitude.toFixed(4)},${longitude.toFixed(4)}/stations`;
|
|
204
258
|
return this.makeRequest(url);
|
|
205
259
|
}
|
|
@@ -207,6 +261,19 @@ export class NOAAService {
|
|
|
207
261
|
* Get the latest observation from a station
|
|
208
262
|
*/
|
|
209
263
|
async getLatestObservation(stationId) {
|
|
264
|
+
// Check cache first (if enabled)
|
|
265
|
+
if (CacheConfig.enabled) {
|
|
266
|
+
const cacheKey = Cache.generateKey('latest-observation', stationId);
|
|
267
|
+
const cached = this.cache.get(cacheKey);
|
|
268
|
+
if (cached) {
|
|
269
|
+
return cached;
|
|
270
|
+
}
|
|
271
|
+
const url = `/stations/${stationId}/observations/latest`;
|
|
272
|
+
const result = await this.makeRequest(url);
|
|
273
|
+
// Cache with current conditions TTL (15 minutes)
|
|
274
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.currentConditions);
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
210
277
|
const url = `/stations/${stationId}/observations/latest`;
|
|
211
278
|
return this.makeRequest(url);
|
|
212
279
|
}
|
|
@@ -244,6 +311,19 @@ export class NOAAService {
|
|
|
244
311
|
if (params.toString()) {
|
|
245
312
|
url += `?${params.toString()}`;
|
|
246
313
|
}
|
|
314
|
+
// Check cache first (if enabled)
|
|
315
|
+
if (CacheConfig.enabled) {
|
|
316
|
+
const cacheKey = Cache.generateKey('observations', stationId, startTime?.toISOString(), endTime?.toISOString(), limit);
|
|
317
|
+
const cached = this.cache.get(cacheKey);
|
|
318
|
+
if (cached) {
|
|
319
|
+
return cached;
|
|
320
|
+
}
|
|
321
|
+
const result = await this.makeRequest(url);
|
|
322
|
+
// Use smart TTL based on date range
|
|
323
|
+
const ttl = startTime ? getHistoricalDataTTL(startTime) : CacheConfig.ttl.recentHistorical;
|
|
324
|
+
this.cache.set(cacheKey, result, ttl);
|
|
325
|
+
return result;
|
|
326
|
+
}
|
|
247
327
|
return this.makeRequest(url);
|
|
248
328
|
}
|
|
249
329
|
/**
|
|
@@ -292,5 +372,38 @@ export class NOAAService {
|
|
|
292
372
|
const stationId = stations.features[0].properties.stationIdentifier;
|
|
293
373
|
return this.getObservations(stationId, startTime, endTime, limit);
|
|
294
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Get active weather alerts for a location
|
|
377
|
+
* @param latitude Latitude coordinate
|
|
378
|
+
* @param longitude Longitude coordinate
|
|
379
|
+
* @param activeOnly Whether to filter to only active alerts (default: true)
|
|
380
|
+
* @returns Collection of weather alerts
|
|
381
|
+
*/
|
|
382
|
+
async getAlerts(latitude, longitude, activeOnly = true) {
|
|
383
|
+
// Validate coordinates (checks for NaN, Infinity, and range)
|
|
384
|
+
validateLatitude(latitude);
|
|
385
|
+
validateLongitude(longitude);
|
|
386
|
+
// Check cache first (if enabled)
|
|
387
|
+
if (CacheConfig.enabled) {
|
|
388
|
+
const cacheKey = Cache.generateKey('alerts', latitude.toFixed(4), longitude.toFixed(4), activeOnly ? 'active' : 'all');
|
|
389
|
+
const cached = this.cache.get(cacheKey);
|
|
390
|
+
if (cached) {
|
|
391
|
+
return cached;
|
|
392
|
+
}
|
|
393
|
+
// Query alerts using point parameter
|
|
394
|
+
const url = activeOnly
|
|
395
|
+
? `/alerts/active?point=${latitude.toFixed(4)},${longitude.toFixed(4)}`
|
|
396
|
+
: `/alerts?point=${latitude.toFixed(4)},${longitude.toFixed(4)}`;
|
|
397
|
+
const result = await this.makeRequest(url);
|
|
398
|
+
// Cache with alerts TTL (5 minutes - alerts can change rapidly)
|
|
399
|
+
this.cache.set(cacheKey, result, CacheConfig.ttl.alerts);
|
|
400
|
+
return result;
|
|
401
|
+
}
|
|
402
|
+
// Query alerts using point parameter
|
|
403
|
+
const url = activeOnly
|
|
404
|
+
? `/alerts/active?point=${latitude.toFixed(4)},${longitude.toFixed(4)}`
|
|
405
|
+
: `/alerts?point=${latitude.toFixed(4)},${longitude.toFixed(4)}`;
|
|
406
|
+
return this.makeRequest(url);
|
|
407
|
+
}
|
|
295
408
|
}
|
|
296
409
|
//# sourceMappingURL=noaa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noaa.js","sourceRoot":"","sources":["../../src/services/noaa.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"noaa.js","sourceRoot":"","sources":["../../src/services/noaa.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Service for interacting with the Open-Meteo
|
|
3
|
-
* Documentation:
|
|
2
|
+
* Service for interacting with the Open-Meteo APIs
|
|
3
|
+
* Documentation:
|
|
4
|
+
* - Historical Weather: https://open-meteo.com/en/docs/historical-weather-api
|
|
5
|
+
* - Forecast: https://open-meteo.com/en/docs
|
|
6
|
+
* - Geocoding: https://open-meteo.com/en/docs/geocoding-api
|
|
4
7
|
*/
|
|
5
|
-
import type { OpenMeteoHistoricalResponse } from '../types/openmeteo.js';
|
|
8
|
+
import type { OpenMeteoHistoricalResponse, GeocodingResponse, OpenMeteoForecastResponse } from '../types/openmeteo.js';
|
|
6
9
|
export interface OpenMeteoServiceConfig {
|
|
7
10
|
baseURL?: string;
|
|
11
|
+
geocodingURL?: string;
|
|
12
|
+
forecastURL?: string;
|
|
8
13
|
timeout?: number;
|
|
9
14
|
maxRetries?: number;
|
|
10
15
|
}
|
|
11
16
|
export declare class OpenMeteoService {
|
|
12
17
|
private client;
|
|
18
|
+
private geocodingClient;
|
|
19
|
+
private forecastClient;
|
|
13
20
|
private maxRetries;
|
|
21
|
+
private cache;
|
|
14
22
|
constructor(config?: OpenMeteoServiceConfig);
|
|
15
23
|
/**
|
|
16
24
|
* Handle API errors with helpful status information
|
|
@@ -20,6 +28,14 @@ export declare class OpenMeteoService {
|
|
|
20
28
|
* Make request with retry logic
|
|
21
29
|
*/
|
|
22
30
|
private makeRequest;
|
|
31
|
+
/**
|
|
32
|
+
* Get cache statistics
|
|
33
|
+
*/
|
|
34
|
+
getCacheStats(): import("../utils/cache.js").CacheStats;
|
|
35
|
+
/**
|
|
36
|
+
* Clear the cache
|
|
37
|
+
*/
|
|
38
|
+
clearCache(): void;
|
|
23
39
|
/**
|
|
24
40
|
* Check if the Open-Meteo API is operational
|
|
25
41
|
* Performs a lightweight health check by requesting a simple query
|
|
@@ -42,10 +58,54 @@ export declare class OpenMeteoService {
|
|
|
42
58
|
* @returns Historical weather data
|
|
43
59
|
*/
|
|
44
60
|
getHistoricalWeather(latitude: number, longitude: number, startDate: string, endDate: string, useHourly?: boolean): Promise<OpenMeteoHistoricalResponse>;
|
|
61
|
+
/**
|
|
62
|
+
* Build request parameters for historical weather data
|
|
63
|
+
* @private
|
|
64
|
+
*/
|
|
65
|
+
private buildHistoricalParams;
|
|
66
|
+
/**
|
|
67
|
+
* Validate that the response contains the expected data
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
private validateResponse;
|
|
45
71
|
/**
|
|
46
72
|
* Get weather description from WMO weather code
|
|
47
73
|
* WMO Weather interpretation codes (WW): https://open-meteo.com/en/docs
|
|
48
74
|
*/
|
|
49
75
|
getWeatherDescription(code: number): string;
|
|
76
|
+
/**
|
|
77
|
+
* Search for locations by name using the Open-Meteo Geocoding API
|
|
78
|
+
*
|
|
79
|
+
* @param query - Location name to search for (e.g., "Paris", "New York, NY", "Tokyo")
|
|
80
|
+
* @param limit - Maximum number of results to return (default: 5, max: 100)
|
|
81
|
+
* @param language - Language for results (default: 'en')
|
|
82
|
+
* @returns Geocoding results with coordinates and metadata
|
|
83
|
+
*/
|
|
84
|
+
searchLocation(query: string, limit?: number, language?: string): Promise<GeocodingResponse>;
|
|
85
|
+
/**
|
|
86
|
+
* Get weather forecast from Open-Meteo Forecast API
|
|
87
|
+
*
|
|
88
|
+
* @param latitude - Latitude coordinate (-90 to 90)
|
|
89
|
+
* @param longitude - Longitude coordinate (-180 to 180)
|
|
90
|
+
* @param days - Number of forecast days (1-16, default: 7)
|
|
91
|
+
* @param hourly - Whether to include hourly data (default: false)
|
|
92
|
+
* @returns Weather forecast data
|
|
93
|
+
*/
|
|
94
|
+
getForecast(latitude: number, longitude: number, days?: number, hourly?: boolean): Promise<OpenMeteoForecastResponse>;
|
|
95
|
+
/**
|
|
96
|
+
* Build request parameters for forecast data
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
private buildForecastParams;
|
|
100
|
+
/**
|
|
101
|
+
* Make request to forecast API with retry logic
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
private makeRequestToForecast;
|
|
105
|
+
/**
|
|
106
|
+
* Validate that the forecast response contains the expected data
|
|
107
|
+
* @private
|
|
108
|
+
*/
|
|
109
|
+
private validateForecastResponse;
|
|
50
110
|
}
|
|
51
111
|
//# sourceMappingURL=openmeteo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openmeteo.d.ts","sourceRoot":"","sources":["../../src/services/openmeteo.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openmeteo.d.ts","sourceRoot":"","sources":["../../src/services/openmeteo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,2BAA2B,EAE3B,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAY/B,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,GAAE,sBAA2B;IA2D/C;;OAEG;YACW,WAAW;IA+DzB;;OAEG;YACW,WAAW;IA4BzB;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAkEF;;;;;;;;;OASG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,2BAA2B,CAAC;IAgCvC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA0D7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;OAGG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmC3C;;;;;;;OAOG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC;IA2D7B;;;;;;;;OAQG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAU,EAChB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,yBAAyB,CAAC;IAuCrC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAmE3B;;;OAGG;YACW,qBAAqB;IA2BnC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;CAkBjC"}
|