weathered
Advanced tools
Comparing version 0.2.0 to 0.3.0
@@ -1,2 +0,2 @@ | ||
import { ClientOptions, ForecastResponse, AlertsResponse, ForecastType, StationsResponse, Station, AlertOptions } from './types'; | ||
import { ClientOptions, ForecastResponse, AlertsResponse, ForecastType, StationsResponse, Station, ObservationResponse, ObservationsResponse, AlertOptions } from './types'; | ||
/** | ||
@@ -63,3 +63,19 @@ * The main client | ||
getNearestStation(latitude: number, longitude: number): Promise<Station | null>; | ||
/** | ||
* Get weather observations for a given station. | ||
* | ||
* ```typescript | ||
* const observations = await client.getStationObservations('KSFO'); | ||
* ``` | ||
*/ | ||
getStationObservations(stationId: string): Promise<ObservationsResponse>; | ||
/** | ||
* Get latest weather observation for a given station. | ||
* | ||
* ```typescript | ||
* const latestObservation = await client.getLatestStationObservations('KSFO'); | ||
* ``` | ||
*/ | ||
getLatestStationObservations(stationId: string): Promise<ObservationResponse>; | ||
} | ||
export { Client }; |
@@ -133,3 +133,23 @@ "use strict"; | ||
} | ||
/** | ||
* Get weather observations for a given station. | ||
* | ||
* ```typescript | ||
* const observations = await client.getStationObservations('KSFO'); | ||
* ``` | ||
*/ | ||
getStationObservations(stationId) { | ||
return this.getPath(`stations/${stationId}/observations`); | ||
} | ||
/** | ||
* Get latest weather observation for a given station. | ||
* | ||
* ```typescript | ||
* const latestObservation = await client.getLatestStationObservations('KSFO'); | ||
* ``` | ||
*/ | ||
getLatestStationObservations(stationId) { | ||
return this.getPath(`stations/${stationId}/observations/latest`); | ||
} | ||
} | ||
exports.Client = Client; |
@@ -6,7 +6,33 @@ "use strict"; | ||
const client = new _1.Client(); | ||
await client.getStations(35.6163264, -80.7725239); | ||
await client.getNearestStation(35.6163264, -80.7725239); | ||
// await client.getLatestObservations(35.6163264, -80.7725239); | ||
// console.log(observations); | ||
// const active = true; | ||
// const latitude = 35.6175667; | ||
// const longitude = -80.7709911; | ||
// const alerts = await client.getAlerts(active, { region: 'AL' }); | ||
// alerts.features.forEach(feature => { | ||
// console.log(feature.properties.description); | ||
// console.log(feature.geometry); | ||
// }); | ||
const latitude = 37.6787453; | ||
const longitude = -122.487938; | ||
// const baseLineForecast = await client.getForecast(latitude, longitude, 'baseline'); | ||
// const hourlyForecast = await client.getForecast(latitude, longitude, 'hourly'); | ||
// await client.getForecast(latitude, longitude, 'hourly'); | ||
// await client.getForecast(latitude, longitude, 'hourly'); | ||
// await client.getForecast(latitude, longitude, 'hourly'); | ||
// const stations = await client.getStations(latitude, longitude); | ||
const nearestStation = await client.getNearestStation(latitude, longitude); | ||
// stations.features.forEach(station => console.log(station.properties.name)); | ||
// console.log(stations.features); | ||
// console.log('nearest', nearestStation); | ||
if (nearestStation) { | ||
// console.log(nearestStation.properties.stationIdentifier); | ||
const { stationIdentifier } = nearestStation.properties; | ||
// const observations = await client.getStationObservations(stationIdentifier); | ||
// observations.features.forEach(obs => console.log(obs.properties.temperature)); | ||
// console.log(observations.features[0].properties.temperature); | ||
const latestObservation = await client.getLatestStationObservations(stationIdentifier); | ||
console.log(latestObservation.properties.relativeHumidity); | ||
// { value: 64.486025639597, unitCode: 'unit:percent', qualityControl: 'qc:V' } | ||
} | ||
} | ||
go(); |
export { Client } from './client'; | ||
export { ForecastType, Area, Region, RegionType, Urgency, AlertOptions, ClientOptions, PointResponse, ForecastResponse, ForecastProperties, AlertsResponse, Station, StationsResponse, AlertsFeature } from './types'; | ||
export { ForecastType, Area, Region, RegionType, Urgency, AlertOptions, ClientOptions, PointResponse, ForecastResponse, ForecastProperties, AlertsResponse, Station, StationsResponse, AlertsFeature, ObservationResponse, ObservationsResponse, Measure } from './types'; |
@@ -39,2 +39,6 @@ declare type ForecastType = 'hourly' | 'baseline'; | ||
id: string; | ||
properties: { | ||
name: string; | ||
stationIdentifier: string; | ||
}; | ||
}; | ||
@@ -44,2 +48,27 @@ declare type StationsResponse = { | ||
}; | ||
declare type PresentWeather = { | ||
[key: string]: string | null; | ||
}; | ||
declare type Measure = { | ||
value: number; | ||
unitCode: string; | ||
}; | ||
declare type ObservationResponse = { | ||
properties: { | ||
presentWeather: PresentWeather[]; | ||
temperature: Measure; | ||
barometricPressure: Measure; | ||
seaLevelPressure: Measure; | ||
dewpoint: Measure; | ||
windDirection: Measure; | ||
windSpeed: Measure; | ||
windGust: Measure; | ||
visibility: Measure; | ||
relativeHumidity: Measure; | ||
heatIndex: Measure; | ||
}; | ||
}; | ||
declare type ObservationsResponse = { | ||
features: ObservationResponse[]; | ||
}; | ||
declare type ForecastPeriod = { | ||
@@ -93,2 +122,2 @@ number: number; | ||
}; | ||
export { ForecastType, Area, Region, RegionType, Urgency, AlertOptions, ClientOptions, PointResponse, ForecastResponse, ForecastProperties, Station, StationsResponse, AlertsResponse, AlertsFeature }; | ||
export { ForecastType, Area, Region, RegionType, Urgency, AlertOptions, ClientOptions, PointResponse, ForecastResponse, ForecastProperties, Station, StationsResponse, AlertsResponse, AlertsFeature, ObservationsResponse, ObservationResponse, Measure }; |
{ | ||
"name": "weathered", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "A JavaScript wrapper for the National Weather Service API", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -77,1 +77,43 @@ ## weathered 🌤⛈☀️🌨 | ||
``` | ||
### Get the closest weather stations for a given latitude and longitude | ||
```javascript | ||
const stations = await client.getStations(latitude, longitude); | ||
stations.features.forEach(station => console.log(station.properties.name)); | ||
// San Francisco, San Francisco International Airport | ||
// SAN FRANCISCO DOWNTOWN | ||
// Half Moon Bay Airport | ||
``` | ||
### Get the closest weather station for a given latitude and longitude | ||
```javascript | ||
const nearestStation = await client.getNearestStation(latitude, longitude); | ||
if (nearestStation) { | ||
console.log(nearestStation.properties.stationIdentifier); | ||
} | ||
// KSFO | ||
``` | ||
### Get weather observations for a given station | ||
```javascript | ||
const nearestStation = await client.getNearestStation(latitude, longitude); | ||
if (nearestStation) { | ||
const { stationIdentifier } = nearestStation.properties; | ||
const observations = await client.getStationObservations(stationIdentifier); | ||
observations.features.forEach(obs => console.log(obs.properties.temperature)); | ||
// { value: 16.1, unitCode: 'unit:degC', qualityControl: 'qc:V' } | ||
// { value: 16.7, unitCode: 'unit:degC', qualityControl: 'qc:V' } | ||
// { value: 17.2, unitCode: 'unit:degC', qualityControl: 'qc:V' } | ||
} | ||
``` | ||
### Get the latest weather observation for a given station | ||
```javascript | ||
const latestObservation = await client.getLatestStationObservations('KSFO'); | ||
console.log(latestObservation.properties.relativeHumidity); | ||
// { value: 64.486025639597, unitCode: 'unit:percent', qualityControl: 'qc:V' } | ||
``` |
20467
465
119