UNPKG

feathers-openweathermap

Version:

A OpenWeatherMap Service for feathers.js applications

684 lines (683 loc) 16.2 kB
import { FixedLengthArray } from "type-fest"; export interface OWMServiceOptions { appid: string; v: string; lang: Lang; mode: Mode; units: Unit; } export interface WithAppId { appid: string; } export interface WithV { v: string; } export interface QueryByCityName { q: string; } export interface QueryByCityId { id: number; } export interface QueryByGeoCoordinates { lat: Latitude; lon: Longitude; } export interface QueryByZipCode { zip: string; } export declare type QueryParams = QueryByCityId & QueryByCityName & QueryByGeoCoordinates & QueryByZipCode & WithAppId & WithLangModeUnits; export interface WithLang { lang: Lang; } export interface WithMode { mode: Mode; } export interface WithUnits { units: Unit; } export declare type WithLangModeUnits = WithLang & WithMode & WithUnits; export interface ByCityName { cityName: string; stateCode?: string; countryCode?: string; } export interface ByCityId { cityId: number; } export interface ByGeoGraphicCoordinates { lat: Latitude; lon: Longitude; } export interface ByZipCode { zipCode: string; countryCode?: string; } export declare type Unit = "standard" | "metric" | "imperial"; export declare type Mode = "json" | "html" | "xml"; export declare type Kelvin = number; export declare type Celsius = number; export declare type Fahrenheit = number; export declare type Longitude = number; export declare type Latitude = number; export declare type Lang = "af" | "al" | "ar" | "az" | "bg" | "ca" | "cz" | "da" | "de" | "el" | "en" | "eu" | "fa" | "fi" | "fr" | "gl" | "he" | "hi" | "hr" | "hu" | "id" | "it" | "ja" | "kr" | "la" | "lt" | "mk" | "no" | "nl" | "pl" | "pt" | "pt_br" | "ro" | "ru" | "sv, se" | "sk" | "sl" | "sp, es" | "sr" | "th" | "tr" | "ua, uk" | "vi" | "zh_cn" | "zh_tw" | "zu"; export declare type WeatherCondition = { id: 200; main: "Thunderstorm"; description: "thunderstorm with light rain"; icon: "11d" | "11n"; } | { id: 201; main: "Thunderstorm"; description: "thunderstorm with rain"; icon: "11d" | "11n"; } | { id: 202; main: "Thunderstorm"; description: "thunderstorm with heavy rain"; icon: "11d" | "11n"; } | { id: 210; main: "Thunderstorm"; description: "light thunderstorm"; icon: "11d" | "11n"; } | { id: 211; main: "Thunderstorm"; description: "thunderstorm"; icon: "11d" | "11n"; } | { id: 212; main: "Thunderstorm"; description: "heavy thunderstorm"; icon: "11d" | "11n"; } | { id: 221; main: "Thunderstorm"; description: "ragged thunderstorm"; icon: "11d" | "11n"; } | { id: 230; main: "Thunderstorm"; description: "thunderstorm with light drizzle"; icon: "11d" | "11n"; } | { id: 231; main: "Thunderstorm"; description: "thunderstorm with drizzle"; icon: "11d" | "11n"; } | { id: 232; main: "Thunderstorm"; description: "thunderstorm with heavy drizzle"; icon: "11d" | "11n"; } | { id: 300; main: "Drizzle"; description: "light intensity drizzle"; icon: "09d" | "09n"; } | { id: 301; main: "Drizzle"; description: "drizzle"; icon: "09d" | "09n"; } | { id: 302; main: "Drizzle"; description: "heavy intensity drizzle"; icon: "09d" | "09n"; } | { id: 310; main: "Drizzle"; description: "light intensity drizzle rain"; icon: "09d" | "09n"; } | { id: 311; main: "Drizzle"; description: "drizzle rain"; icon: "09d" | "09n"; } | { id: 312; main: "Drizzle"; description: "heavy intensity drizzle rain"; icon: "09d" | "09n"; } | { id: 313; main: "Drizzle"; description: "shower rain and drizzle"; icon: "09d" | "09n"; } | { id: 314; main: "Drizzle"; description: "heavy shower rain and drizzle"; icon: "09d" | "09n"; } | { id: 321; main: "Drizzle"; description: "shower drizzle"; icon: "09d" | "09n"; } | { id: 500; main: "Rain"; description: "light rain"; icon: "10d" | "10n"; } | { id: 501; main: "Rain"; description: "moderate rain"; icon: "10d" | "10n"; } | { id: 502; main: "Rain"; description: "heavy intensity rain"; icon: "10d" | "10n"; } | { id: 503; main: "Rain"; description: "very heavy rain"; icon: "10d" | "10n"; } | { id: 504; main: "Rain"; description: "extreme rain"; icon: "10d" | "10n"; } | { id: 511; main: "Rain"; description: "freezing rain"; icon: "13d" | "13n"; } | { id: 520; main: "Rain"; description: "light intensity shower rain"; icon: "09d" | "09n"; } | { id: 521; main: "Rain"; description: "shower rain"; icon: "09d" | "09n"; } | { id: 522; main: "Rain"; description: "heavy intensity shower rain"; icon: "09d" | "09n"; } | { id: 531; main: "Rain"; description: "ragged shower rain"; icon: "09d" | "09n"; } | { id: 600; main: "Snow"; description: "light snow"; icon: "13d" | "13n"; } | { id: 601; main: "Snow"; description: "Snow"; icon: "13d" | "13n"; } | { id: 602; main: "Snow"; description: "Heavy snow"; icon: "13d" | "13n"; } | { id: 611; main: "Snow"; description: "Sleet"; icon: "13d" | "13n"; } | { id: 612; main: "Snow"; description: "Light shower sleet"; icon: "13d" | "13n"; } | { id: 613; main: "Snow"; description: "Shower sleet"; icon: "13d" | "13n"; } | { id: 615; main: "Snow"; description: "Light rain and snow"; icon: "13d" | "13n"; } | { id: 616; main: "Snow"; description: "Rain and snow"; icon: "13d" | "13n"; } | { id: 620; main: "Snow"; description: "Light shower snow"; icon: "13d" | "13n"; } | { id: 621; main: "Snow"; description: "Shower snow"; icon: "13d" | "13n"; } | { id: 622; main: "Snow"; description: "Heavy shower snow"; icon: "13d" | "13n"; } | { id: 701; main: "Mist"; description: "mist"; icon: "50d" | "50n"; } | { id: 711; main: "Smoke"; description: "Smoke"; icon: "50d" | "50n"; } | { id: 721; main: "Haze"; description: "Haze"; icon: "50d" | "50n"; } | { id: 731; main: "Dust"; description: "sand/ dust whirls"; icon: "50d" | "50n"; } | { id: 741; main: "Fog"; description: "fog"; icon: "50d" | "50n"; } | { id: 751; main: "Sand"; description: "sand"; icon: "50d" | "50n"; } | { id: 761; main: "Dust"; description: "dust"; icon: "50d" | "50n"; } | { id: 762; main: "Ash"; description: "volcanic ash"; icon: "50d" | "50n"; } | { id: 771; main: "Squall"; description: "squalls"; icon: "50d" | "50n"; } | { id: 781; main: "Tornado"; description: "tornado"; icon: "50d" | "50n"; } | { id: 800; main: "Clear"; description: "clear sky"; icon: "01d" | "01n"; } | { id: 801; main: "Clouds"; description: "few clouds"; icon: "02d" | "02n"; } | { id: 802; main: "Clouds"; description: "scattered clouds"; icon: "03d" | "03n"; } | { id: 803; main: "Clouds"; description: "broken clouds"; icon: "04d" | "04n"; } | { id: 804; main: "Clouds"; description: "overcast clouds"; icon: "04d" | "04n"; }; export declare type Endpoint = "weather" | "forecast/hourly" | "onecall" | "forecast/daily" | "forecast/climate" | "forecast" | "air_pollution" | "air_pollution/forecast" | "air_pollution/history"; export declare type T = number; export declare type AnyData = CurrentWeatherDataData | OneCallData | DailyForecast16DaysData | ClimaticForeCast30DaysData | FiveDay3HourForecastData | HourlyForecast4DaysData | AirPollutionCurrentData | AirPollutionForecastData | AirPollutionHistoricalData; export declare type AnyResult = CurrentWeatherDataResult | OneCallResult | DailyForecast16DaysResult | ClimaticForeCast30DaysResult | FiveDay3HourForecastResult | HourlyForecast4DaysResult | AirPollutionResult; export declare type CurrentWeatherDataData = (ByCityName | ByCityId | ByGeoGraphicCoordinates | ByZipCode) & Partial<WithAppId & WithV & WithLang & WithUnits>; export interface CurrentWeatherDataResult { base: string; clouds: { all: number; }; cod: number; coord: { lon: Longitude; lat: Latitude; }; dt: number; id: number; main: { temp: T; feels_like: T; temp_min: T; temp_max: T; pressure: number; humidity: number; }; name: string; rain?: { "1h"?: number; "3h"?: number; }; snow?: { "1h"?: number; "3h"?: number; }; sys: { type: number; id: number; message: number; country: string; sunrise: number; sunset: number; }; timezone: number; visibility: number; weather: [WeatherCondition]; wind: { deg: number; speed: number; }; } export declare type OneCallData = ByGeoGraphicCoordinates & { exclude?: ("current" | "minutely" | "hourly" | "daily" | "alerts")[]; } & Partial<WithAppId & WithV & WithLangModeUnits>; export interface OneCallResult { current: OneCallResultCurrent; daily: FixedLengthArray<OneCallResultDaily, 8>; hourly: FixedLengthArray<OneCallResultHourly, 48>; lat: Latitude; lon: Longitude; minutely: FixedLengthArray<OneCallResultMinutely, 61>; timezone: string; timezone_offset: number; } export interface OneCallResultCurrent { clouds: number; dew_point: number; dt: number; feels_like: number; humidity: number; pressure: number; sunrise: number; sunset: number; temp: number; uvi: number; visibility: number; weather: [WeatherCondition]; wind_deg: number; wind_speed: number; } export interface OneCallResultDaily { clouds: number; dew_point: number; dt: number; feels_like: { day: number; eve: number; morn: number; night: number; }; humidity: number; moon_phase: number; moonrise: number; moonset: number; pop: number; pressure: number; rain: number; sunrise: number; sunset: number; temp: { day: number; eve: number; max: number; min: number; morn: number; night: number; }; uvi: number; weather: [WeatherCondition]; wind_deg: number; wind_gust: number; wind_speed: number; } export interface OneCallResultHourly { clouds: number; dew_point: number; dt: number; feels_like: number; humidity: number; pop: number; pressure: number; temp: number; uvi: number; visibility: number; weather: [WeatherCondition]; wind_deg: number; wind_gust: number; wind_speed: number; } export interface OneCallResultMinutely { dt: number; precipitation: number; } export declare type FiveDay3HourForecastData = (ByCityName | ByCityId | ByGeoGraphicCoordinates | ByZipCode) & Partial<WithAppId & WithV & WithLangModeUnits> & { cnt?: number; }; export interface FiveDay3HourForecastResult { cod: number; message: number; cnt: number; list: { dt: number; main: { temp: T; feels_like: T; temp_min: T; temp_max: T; pressure: number; sea_level: number; grnd_level: number; humidity: number; }; weather: [WeatherCondition]; clouds: { all: number; }; wind: { speed: number; deg: number; gust: number; }; visibility: number; pop: number; rain?: { "3h": number; }; snow?: { "3h": number; }; sys: { pod: "d" | "n"; }; dt_txt: string; }[]; city: { id: number; name: string; coord: { lat: Latitude; lon: Longitude; }; country: string; timezone: number; sunrise: number; sunset: number; }; } export declare type HourlyForecast4DaysData = (ByCityName | ByCityId | ByGeoGraphicCoordinates | ByZipCode) & Partial<WithAppId & WithV & WithLangModeUnits> & { cnt?: number; }; export interface HourlyForecast4DaysResult { cod: number; message: number; cnt: number; list: { dt: number; main: { temp: T; feels_like: T; temp_min: T; temp_max: T; pressure: number; sea_level: number; grnd_level: number; humidity: number; temp_kf: number; }; weather: [WeatherCondition]; clouds: { all: number; }; wind: { speed: number; deg: number; gust: number; }; visibility: number; pop: number; sys: { pod: string; }; dt_txt: string; }[]; city: { id: number; name: string; coord: { lat: Latitude; lon: Longitude; }; country: string; timezone: number; sunrise: number; sunset: number; }; } export declare type DailyForecast16DaysData = (ByCityName | ByCityId | ByGeoGraphicCoordinates | ByZipCode) & Partial<WithAppId & WithV & WithLangModeUnits> & { cnt?: number; }; export interface DailyForecast16DaysResult { city: { id: number; name: string; coord: { lat: Latitude; lon: Longitude; }; country: string; population: number; timezone: number; }; cod: number; message: number; cnt: number; list: { dt: number; sunrise: number; sunset: number; temp: { day: T; min: T; max: T; night: T; eve: T; morn: T; }; feels_like: { day: T; night: T; eve: T; morn: T; }; pressure: number; humidity: number; weather: [WeatherCondition]; speed: number; deg: number; gust: number; clouds: number; pop: number; }[]; } export declare type ClimaticForeCast30DaysData = (ByCityName | ByCityId | ByGeoGraphicCoordinates | ByZipCode) & Partial<WithAppId & WithV & WithLangModeUnits> & { cnt?: number; }; export interface ClimaticForeCast30DaysResult { cod: number; city: { id: number; name: string; coord: { lat: Latitude; lon: Longitude; }; country: string; }; message: string; list: { dt: number; sunrise: number; sunset: number; temp: { day: T; min: T; max: T; night: T; eve: T; morn: T; }; pressure: number; humidity: number; weather: [WeatherCondition]; speed: number; deg: number; clouds: number; rain: number; }[]; } export declare type AirPollutionCurrentData = ByGeoGraphicCoordinates & Partial<WithAppId & WithV>; export declare type AirPollutionForecastData = ByGeoGraphicCoordinates & Partial<WithAppId & WithV>; export declare type AirPollutionHistoricalData = ByGeoGraphicCoordinates & Partial<WithAppId & WithV> & { start: number; end: number; }; export interface AirPollutionResult { coord: [ number, number ]; list: { dt: number; main: { aqi: 1 | 2 | 3 | 4 | 5; }; components: { co: number; no: number; no2: number; o3: number; so2: number; pm2_5: number; pm10: number; nh3: number; }; }[]; }