@essamonline/weather-visualcrossing

1.0.0 • Public • Published

weather-visualcrossing

A JavaScript library to access weather Data from Visual Crossing Weather API. The library defines a single class Weather for fetching and managing weather data. It encapsulates all related weather parameters, stores JSON responses from the Weather API, and provides methods to retrieve and manipulate this data.

Coverage Status

References

Installation

npm install [-g] @essamonline/weather-visualcrossing

Usage

With ESM or TypeScript:

import { Weather } from '@essamonline/weather-visualcrossing';

Sign up for a Visual Crossing free account to obtain an API key and include in a file called '.api-key' located at the package root directory.

Weather class

class Weather{

	#weatherData;

	constructor(apiKey = '', baseUrl = BASE_URL)

	/*** Static Methods [7] ***/

	static filterItemByDatetimeVal (src, datetimeVal)         // throws
	static setItemByDatetimeVal    (src, datetimeVal, data)   // throws
	static updateItemByDatetimeVal (src, datetimeVal, data)   // throws

	static validateParamDate      (param)                     // throws
	static validateParamUnitGroup (param)                     // throws
	static validateParamInclude   (...param)                  // throws
	static validateParamElements  (...param)                  // throws

	/*** Instance Method - fetchWeatherData [1] ***/

	async fetchWeatherData(
		location,
		fromDate = '', toDate = '',
		unitGroup = 'metric', include = '', elements = '')    // throws

	/*** Instance Methods - Data Elements [17] ***/

	clearWeatherData()
	getWeatherData(elements = [])
	setWeatherData(data)

	getWeatherDailyData(elements = [])
	setWeatherDailyData(dailyData)

	getWeatherHourlyData(elements = [])

	getDataOnDay(dayInfo, elements = [])
	setDataOnDay(dayInfo, data)                            // throws

	getHourlyDataOnDay(dayInfo, elements = [])             // throws
	setHourlyDataOnDay(dayInfo, data)                      // throws

	getDataAtDatetime(dayInfo, timeInfo, elements = [])    // throws
	setDataAtDatetime(dayInfo, timeInfo, data)             // throws
	updateDataAtDatetime(dayInfo, timeInfo, data)          // throws

	getDatetimeEpochAtDatetime(dayInfo, timeInfo)          // throws
	setDatetimeEpochAtDatetime(dayInfo, timeInfo, value)   // throws

	getDailyDatetimes()
	getHourlyDatetimes()

	/*** Instance Methods - Location Elements [12] ***/

	getLatitude()
	setLatitude(value)                                     // throws

	getLongitude()
	setLongitude(value)                                    // throws

	getResolvedAddress()
	setResolvedAddress(value)

	getAddress()
	setAddress(value)

	getTimezone()
	setTimezone(value)

	getTzoffset()
	setTzoffset(value)

	/*** Instance Methods - Request Elements [4] ***/

	getQueryCost()
	setQueryCost(value)

	getStations()
	setStations(value)

	/*** Instance Methods - Core Weather Elements [50] ***/

	getTempOnDay(dayInfo)
	setTempOnDay(dayInfo, value)                           // throws

	getTempmaxOnDay(dayInfo)
	setTempmaxOnDay(dayInfo, value)                        // throws

	getTempminOnDay(dayInfo)
	setTempminOnDay(dayInfo, value)                        // throws

	getFeelslikeOnDay(dayInfo)
	setFeelslikeDay(dayInfo, value)                        // throws

	getFeelslikemaxOnDay(dayInfo)
	setFeelslikemaxDay(dayInfo, value)                     // throws

	getFeelslikeminOnDay(dayInfo)
	setFeelslikeminDay(dayInfo, value)                     // throws

	getDewOnDay(dayInfo)
	setDewOnDay(dayInfo, value)                            // throws

	getHumidityOnDay(dayInfo)
	setHumidityOnDay(dayInfo, value)                       // throws

	getPrecipOnDay(dayInfo)
	setPrecipOnDay(dayInfo, value)                         // throws

	getPrecipprobOnDay(dayInfo)
	setPrecipprobOnDay(dayInfo, value)                     // throws

	getPrecipcoverOnDay(dayInfo)
	setPrecipcoverOnDay(dayInfo, value)                    // throws

	getPreciptypeOnDay(dayInfo)
	setPreciptypeOnDay(dayInfo, value)                     // throws

	getSnowOnDay(dayInfo)
	setSnowOnDay(dayInfo, value)                           // throws

	getSnowdepthOnDay(dayInfo)
	setSnowdepthOnDay(dayInfo, value)                      // throws

	getWindgustOnDay(dayInfo)
	setTWindgustOnDay(dayInfo, value)                      // throws

	getWindspeedOnDay(dayInfo)
	setTWindspeedOnDay(dayInfo, value)                     // throws

	getWinddirOnDay(dayInfo)
	setTWinddirOnDay(dayInfo, value)                       // throws

	getPressureOnDay(dayInfo)
	setPressueOnDay(dayInfo, value)                        // throws

	getCloudcoverOnDay(dayInfo)
	setCloudcoverOnDay(dayInfo, value)                     // throws

	getVisibilityOnDay(dayInfo)
	setVisibilityOnDay(dayInfo, value)                     // throws

	getSolarradiationOnDay(dayInfo)
	setSolarradiationOnDay(dayInfo, value)                 // throws

	getSolarenergyOnDay(dayInfo)
	setSolarenergyOnDay(dayInfo, value)                    // throws

	getUvindexOnDay(dayInfo)
	setUvindexOnDay(dayInfo, value)                        // throws

	getSevereriskOnDay(dayInfo)
	setSevereriskOnDay(dayInfo, value)                     // throws

	getStationsOnDay(dayInfo)
	setStationsOnDay(dayInfo, value)                       // throws

	/*** Instance Methods - Astronomy Elements [10] ***/

	getSunriseOnDay(dayInfo)
	setSunriseOnDay(dayInfo, value)                         // throws

	getSunriseEpochOnDay(dayInfo)
	setSunriseEpochOnDay(dayInfo, value)                    // throws

	getSunsetOnDay(dayInfo)
	setSunsetOnDay(dayInfo, value)                          // throws

	getSunsetEpochOnDay(dayInfo)
	setSunsetEpochOnDay(dayInfo, value)                     // throws

	getMoonphaseOnDay(dayInfo)
	setMoonphaseOnDay(dayInfo, value)                       // throws

	/*** Instance Methods - Description Elements [6] ***/

	getConditionsOnDay(dayInfo)
	setConditionsOnDay(dayInfo, value)                      // throws

	getDescriptionOnDay(dayInfo)
	setDescriptionOnDay(dayInfo, value)                     // throws

	getIconOnDay(dayInfo)
	setIconOnDay(dayInfo, value)                            // throws

	/*** Instance Methods - Core Weather Elements at datetime [42] ***/

	getTempAtDatetime(dayInfo, timeInfo)
	setTempAtDatetime(dayInfo, timeInfo, value)             // throws

	getFeelslikeAtDatetime(dayInfo, timeInfo)
	setFeelslikeDay(dayInfo, timeInfo, value)               // throws

	getDewAtDatetime(dayInfo, timeInfo)
	setDewAtDatetime(dayInfo, timeInfo, value)              // throws

	getHumidityAtDatetime(dayInfo, timeInfo)
	setHumidityAtDatetime(dayInfo, timeInfo, value)         // throws

	getPrecipAtDatetime(dayInfo, timeInfo)
	setPrecipAtDatetime(dayInfo, timeInfo, value)           // throws

	getPrecipprobAtDatetime(dayInfo, timeInfo)
	setPrecipprobAtDatetime(dayInfo, timeInfo, value)       // throws

	getPreciptypeAtDatetime(dayInfo, timeInfo)
	setPreciptypeAtDatetime(dayInfo, timeInfo, value)       // throws

	getSnowAtDatetime(dayInfo, timeInfo)
	setSnowAtDatetime(dayInfo, timeInfo, value)             // throws

	getSnowdepthAtDatetime(dayInfo, timeInfo)
	setSnowdepthAtDatetime(dayInfo, timeInfo, value)        // throws

	getWindgustAtDatetime(dayInfo, timeInfo)
	setTWindgustAtDatetime(dayInfo, timeInfo, value)        // throws

	getWindspeedAtDatetime(dayInfo, timeInfo)
	setTWindspeedAtDatetime(dayInfo, timeInfo, value)       // throws

	getWinddirAtDatetime(dayInfo, timeInfo)
	setTWinddirAtDatetime(dayInfo, timeInfo, value)         // throws

	getPressureAtDatetime(dayInfo, timeInfo)
	setPressueAtDatetime(dayInfo, timeInfo, value)          // throws

	getCloudcoverAtDatetime(dayInfo, timeInfo)
	setCloudcoverAtDatetime(dayInfo, timeInfo, value)       // throws

	getVisibilityAtDatetime(dayInfo, timeInfo)
	setVisibilityAtDatetime(dayInfo, timeInfo, value)       // throws

	getSolarradiationAtDatetime(dayInfo, timeInfo)
	setSolarradiationAtDatetime(dayInfo, timeInfo, value)   // throws

	getSolarenergyAtDatetime(dayInfo, timeInfo)
	setSolarenergyAtDatetime(dayInfo, timeInfo, value)      // throws

	getUvindexAtDatetime(dayInfo, timeInfo)
	setUvindexAtDatetime(dayInfo, timeInfo, value)          // throws

	getSevereriskAtDatetime(dayInfo, timeInfo)
	setSevereriskAtDatetime(dayInfo, timeInfo, value)       // throws

	getStationsAtDatetime(dayInfo, timeInfo)
	setStationsAtDatetime(dayInfo, timeInfo, value)         // throws

	getSourceAtDatetime(dayInfo, timeInfo)
	setSourceAtDatetime(dayInfo, timeInfo, value)           // throws

	/*** Instance Methods - Description Elements at datetime [4] ***/

	getConditionsAtDatetime(dayInfo, timeInfo)
	setConditionsAtDatetime(dayInfo, timeInfo, value)       // throws

	getIconAtDatetime(dayInfo, timeInfo)
	setIconAtDatetime(dayInfo, timeInfo, value)             // throws
}

Testing

weather-visualcrossing was tested using node:test module facilitates.

Documentation

Source code documentation, along with a test coverage report are both included under Documentation.

License

This software is licensed under the MIT license, see the LICENSE file.

Package Sidebar

Install

npm i @essamonline/weather-visualcrossing

Weekly Downloads

4

Version

1.0.0

License

MIT

Unpacked Size

560 kB

Total Files

11

Last publish

Collaborators

  • essamonline