/******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@openmeteo/sdk/aggregation.js": /*!****************************************************!*\ !*** ./node_modules/@openmeteo/sdk/aggregation.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports) => { // automatically generated by the FlatBuffers compiler, do not modify Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Aggregation = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ var Aggregation; (function (Aggregation) { Aggregation[Aggregation["none"] = 0] = "none"; Aggregation[Aggregation["minimum"] = 1] = "minimum"; Aggregation[Aggregation["maximum"] = 2] = "maximum"; Aggregation[Aggregation["mean"] = 3] = "mean"; Aggregation[Aggregation["p10"] = 4] = "p10"; Aggregation[Aggregation["p25"] = 5] = "p25"; Aggregation[Aggregation["median"] = 6] = "median"; Aggregation[Aggregation["p75"] = 7] = "p75"; Aggregation[Aggregation["p90"] = 8] = "p90"; Aggregation[Aggregation["dominant"] = 9] = "dominant"; Aggregation[Aggregation["sum"] = 10] = "sum"; Aggregation[Aggregation["spread"] = 11] = "spread"; })(Aggregation || (exports.Aggregation = Aggregation = {})); /***/ }), /***/ "./node_modules/@openmeteo/sdk/model.js": /*!**********************************************!*\ !*** ./node_modules/@openmeteo/sdk/model.js ***! \**********************************************/ /***/ ((__unused_webpack_module, exports) => { // automatically generated by the FlatBuffers compiler, do not modify Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Model = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ var Model; (function (Model) { Model[Model["undefined"] = 0] = "undefined"; Model[Model["best_match"] = 1] = "best_match"; Model[Model["gfs_seamless"] = 2] = "gfs_seamless"; Model[Model["gfs_global"] = 3] = "gfs_global"; Model[Model["gfs_hrrr"] = 4] = "gfs_hrrr"; Model[Model["meteofrance_seamless"] = 5] = "meteofrance_seamless"; Model[Model["meteofrance_arpege_seamless"] = 6] = "meteofrance_arpege_seamless"; Model[Model["meteofrance_arpege_world"] = 7] = "meteofrance_arpege_world"; Model[Model["meteofrance_arpege_europe"] = 8] = "meteofrance_arpege_europe"; Model[Model["meteofrance_arome_seamless"] = 9] = "meteofrance_arome_seamless"; Model[Model["meteofrance_arome_france"] = 10] = "meteofrance_arome_france"; Model[Model["meteofrance_arome_france_hd"] = 11] = "meteofrance_arome_france_hd"; Model[Model["jma_seamless"] = 12] = "jma_seamless"; Model[Model["jma_msm"] = 13] = "jma_msm"; Model[Model["jms_gsm"] = 14] = "jms_gsm"; Model[Model["jma_gsm"] = 15] = "jma_gsm"; Model[Model["gem_seamless"] = 16] = "gem_seamless"; Model[Model["gem_global"] = 17] = "gem_global"; Model[Model["gem_regional"] = 18] = "gem_regional"; Model[Model["gem_hrdps_continental"] = 19] = "gem_hrdps_continental"; Model[Model["icon_seamless"] = 20] = "icon_seamless"; Model[Model["icon_global"] = 21] = "icon_global"; Model[Model["icon_eu"] = 22] = "icon_eu"; Model[Model["icon_d2"] = 23] = "icon_d2"; Model[Model["ecmwf_ifs04"] = 24] = "ecmwf_ifs04"; Model[Model["metno_nordic"] = 25] = "metno_nordic"; Model[Model["era5_seamless"] = 26] = "era5_seamless"; Model[Model["era5"] = 27] = "era5"; Model[Model["cerra"] = 28] = "cerra"; Model[Model["era5_land"] = 29] = "era5_land"; Model[Model["ecmwf_ifs"] = 30] = "ecmwf_ifs"; Model[Model["gwam"] = 31] = "gwam"; Model[Model["ewam"] = 32] = "ewam"; Model[Model["glofas_seamless_v3"] = 33] = "glofas_seamless_v3"; Model[Model["glofas_forecast_v3"] = 34] = "glofas_forecast_v3"; Model[Model["glofas_consolidated_v3"] = 35] = "glofas_consolidated_v3"; Model[Model["glofas_seamless_v4"] = 36] = "glofas_seamless_v4"; Model[Model["glofas_forecast_v4"] = 37] = "glofas_forecast_v4"; Model[Model["glofas_consolidated_v4"] = 38] = "glofas_consolidated_v4"; Model[Model["gfs025"] = 39] = "gfs025"; Model[Model["gfs05"] = 40] = "gfs05"; Model[Model["CMCC_CM2_VHR4"] = 41] = "CMCC_CM2_VHR4"; Model[Model["FGOALS_f3_H_highresSST"] = 42] = "FGOALS_f3_H_highresSST"; Model[Model["FGOALS_f3_H"] = 43] = "FGOALS_f3_H"; Model[Model["HiRAM_SIT_HR"] = 44] = "HiRAM_SIT_HR"; Model[Model["MRI_AGCM3_2_S"] = 45] = "MRI_AGCM3_2_S"; Model[Model["EC_Earth3P_HR"] = 46] = "EC_Earth3P_HR"; Model[Model["MPI_ESM1_2_XR"] = 47] = "MPI_ESM1_2_XR"; Model[Model["NICAM16_8S"] = 48] = "NICAM16_8S"; Model[Model["cams_europe"] = 49] = "cams_europe"; Model[Model["cams_global"] = 50] = "cams_global"; Model[Model["cfsv2"] = 51] = "cfsv2"; Model[Model["era5_ocean"] = 52] = "era5_ocean"; Model[Model["cma_grapes_global"] = 53] = "cma_grapes_global"; Model[Model["bom_access_global"] = 54] = "bom_access_global"; Model[Model["bom_access_global_ensemble"] = 55] = "bom_access_global_ensemble"; Model[Model["arpae_cosmo_seamless"] = 56] = "arpae_cosmo_seamless"; Model[Model["arpae_cosmo_2i"] = 57] = "arpae_cosmo_2i"; Model[Model["arpae_cosmo_2i_ruc"] = 58] = "arpae_cosmo_2i_ruc"; Model[Model["arpae_cosmo_5m"] = 59] = "arpae_cosmo_5m"; Model[Model["ecmwf_ifs025"] = 60] = "ecmwf_ifs025"; Model[Model["ecmwf_aifs025"] = 61] = "ecmwf_aifs025"; Model[Model["gfs013"] = 62] = "gfs013"; Model[Model["gfs_graphcast025"] = 63] = "gfs_graphcast025"; Model[Model["ecmwf_wam025"] = 64] = "ecmwf_wam025"; Model[Model["meteofrance_wave"] = 65] = "meteofrance_wave"; Model[Model["meteofrance_currents"] = 66] = "meteofrance_currents"; Model[Model["ecmwf_wam025_ensemble"] = 67] = "ecmwf_wam025_ensemble"; Model[Model["ncep_gfswave025"] = 68] = "ncep_gfswave025"; Model[Model["ncep_gefswave025"] = 69] = "ncep_gefswave025"; Model[Model["knmi_seamless"] = 70] = "knmi_seamless"; Model[Model["knmi_harmonie_arome_europe"] = 71] = "knmi_harmonie_arome_europe"; Model[Model["knmi_harmonie_arome_netherlands"] = 72] = "knmi_harmonie_arome_netherlands"; Model[Model["dmi_seamless"] = 73] = "dmi_seamless"; Model[Model["dmi_harmonie_arome_europe"] = 74] = "dmi_harmonie_arome_europe"; Model[Model["metno_seamless"] = 75] = "metno_seamless"; Model[Model["era5_ensemble"] = 76] = "era5_ensemble"; Model[Model["ecmwf_ifs_analysis"] = 77] = "ecmwf_ifs_analysis"; Model[Model["ecmwf_ifs_long_window"] = 78] = "ecmwf_ifs_long_window"; Model[Model["ecmwf_ifs_analysis_long_window"] = 79] = "ecmwf_ifs_analysis_long_window"; Model[Model["ukmo_global_deterministic_10km"] = 80] = "ukmo_global_deterministic_10km"; Model[Model["ukmo_uk_deterministic_2km"] = 81] = "ukmo_uk_deterministic_2km"; Model[Model["ukmo_seamless"] = 82] = "ukmo_seamless"; Model[Model["ncep_gfswave016"] = 83] = "ncep_gfswave016"; Model[Model["ncep_nbm_conus"] = 84] = "ncep_nbm_conus"; Model[Model["ukmo_global_ensemble_20km"] = 85] = "ukmo_global_ensemble_20km"; Model[Model["ecmwf_aifs025_single"] = 86] = "ecmwf_aifs025_single"; Model[Model["jma_jaxa_himawari"] = 87] = "jma_jaxa_himawari"; Model[Model["eumetsat_sarah3"] = 88] = "eumetsat_sarah3"; Model[Model["eumetsat_lsa_saf_msg"] = 89] = "eumetsat_lsa_saf_msg"; Model[Model["eumetsat_lsa_saf_iodc"] = 90] = "eumetsat_lsa_saf_iodc"; Model[Model["satellite_radiation_seamless"] = 91] = "satellite_radiation_seamless"; Model[Model["kma_gdps"] = 92] = "kma_gdps"; Model[Model["kma_ldps"] = 93] = "kma_ldps"; Model[Model["kma_seamless"] = 94] = "kma_seamless"; Model[Model["italia_meteo_arpae_icon_2i"] = 95] = "italia_meteo_arpae_icon_2i"; })(Model || (exports.Model = Model = {})); /***/ }), /***/ "./node_modules/@openmeteo/sdk/unit.js": /*!*********************************************!*\ !*** ./node_modules/@openmeteo/sdk/unit.js ***! \*********************************************/ /***/ ((__unused_webpack_module, exports) => { // automatically generated by the FlatBuffers compiler, do not modify Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Unit = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ var Unit; (function (Unit) { Unit[Unit["undefined"] = 0] = "undefined"; Unit[Unit["celsius"] = 1] = "celsius"; Unit[Unit["centimetre"] = 2] = "centimetre"; Unit[Unit["cubic_metre_per_cubic_metre"] = 3] = "cubic_metre_per_cubic_metre"; Unit[Unit["cubic_metre_per_second"] = 4] = "cubic_metre_per_second"; Unit[Unit["degree_direction"] = 5] = "degree_direction"; Unit[Unit["dimensionless_integer"] = 6] = "dimensionless_integer"; Unit[Unit["dimensionless"] = 7] = "dimensionless"; Unit[Unit["european_air_quality_index"] = 8] = "european_air_quality_index"; Unit[Unit["fahrenheit"] = 9] = "fahrenheit"; Unit[Unit["feet"] = 10] = "feet"; Unit[Unit["fraction"] = 11] = "fraction"; Unit[Unit["gdd_celsius"] = 12] = "gdd_celsius"; Unit[Unit["geopotential_metre"] = 13] = "geopotential_metre"; Unit[Unit["grains_per_cubic_metre"] = 14] = "grains_per_cubic_metre"; Unit[Unit["gram_per_kilogram"] = 15] = "gram_per_kilogram"; Unit[Unit["hectopascal"] = 16] = "hectopascal"; Unit[Unit["hours"] = 17] = "hours"; Unit[Unit["inch"] = 18] = "inch"; Unit[Unit["iso8601"] = 19] = "iso8601"; Unit[Unit["joule_per_kilogram"] = 20] = "joule_per_kilogram"; Unit[Unit["kelvin"] = 21] = "kelvin"; Unit[Unit["kilopascal"] = 22] = "kilopascal"; Unit[Unit["kilogram_per_square_metre"] = 23] = "kilogram_per_square_metre"; Unit[Unit["kilometres_per_hour"] = 24] = "kilometres_per_hour"; Unit[Unit["knots"] = 25] = "knots"; Unit[Unit["megajoule_per_square_metre"] = 26] = "megajoule_per_square_metre"; Unit[Unit["metre_per_second_not_unit_converted"] = 27] = "metre_per_second_not_unit_converted"; Unit[Unit["metre_per_second"] = 28] = "metre_per_second"; Unit[Unit["metre"] = 29] = "metre"; Unit[Unit["micrograms_per_cubic_metre"] = 30] = "micrograms_per_cubic_metre"; Unit[Unit["miles_per_hour"] = 31] = "miles_per_hour"; Unit[Unit["millimetre"] = 32] = "millimetre"; Unit[Unit["pascal"] = 33] = "pascal"; Unit[Unit["per_second"] = 34] = "per_second"; Unit[Unit["percentage"] = 35] = "percentage"; Unit[Unit["seconds"] = 36] = "seconds"; Unit[Unit["unix_time"] = 37] = "unix_time"; Unit[Unit["us_air_quality_index"] = 38] = "us_air_quality_index"; Unit[Unit["watt_per_square_metre"] = 39] = "watt_per_square_metre"; Unit[Unit["wmo_code"] = 40] = "wmo_code"; Unit[Unit["parts_per_million"] = 41] = "parts_per_million"; })(Unit || (exports.Unit = Unit = {})); /***/ }), /***/ "./node_modules/@openmeteo/sdk/variable-with-values.js": /*!*************************************************************!*\ !*** ./node_modules/@openmeteo/sdk/variable-with-values.js ***! \*************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { // automatically generated by the FlatBuffers compiler, do not modify var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.VariableWithValues = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ const flatbuffers = __importStar(__webpack_require__(/*! flatbuffers */ "./node_modules/flatbuffers/mjs/flatbuffers.js")); const aggregation_js_1 = __webpack_require__(/*! ./aggregation.js */ "./node_modules/@openmeteo/sdk/aggregation.js"); const unit_js_1 = __webpack_require__(/*! ./unit.js */ "./node_modules/@openmeteo/sdk/unit.js"); const variable_js_1 = __webpack_require__(/*! ./variable.js */ "./node_modules/@openmeteo/sdk/variable.js"); class VariableWithValues { constructor() { this.bb = null; this.bb_pos = 0; } __init(i, bb) { this.bb_pos = i; this.bb = bb; return this; } static getRootAsVariableWithValues(bb, obj) { return (obj || new VariableWithValues()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } static getSizePrefixedRootAsVariableWithValues(bb, obj) { bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); return (obj || new VariableWithValues()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } variable() { const offset = this.bb.__offset(this.bb_pos, 4); return offset ? this.bb.readUint8(this.bb_pos + offset) : variable_js_1.Variable.undefined; } unit() { const offset = this.bb.__offset(this.bb_pos, 6); return offset ? this.bb.readUint8(this.bb_pos + offset) : unit_js_1.Unit.undefined; } value() { const offset = this.bb.__offset(this.bb_pos, 8); return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; } values(index) { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? this.bb.readFloat32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; } valuesLength() { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; } valuesArray() { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? new Float32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; } valuesInt64(index) { const offset = this.bb.__offset(this.bb_pos, 12); return offset ? this.bb.readInt64(this.bb.__vector(this.bb_pos + offset) + index * 8) : BigInt(0); } valuesInt64Length() { const offset = this.bb.__offset(this.bb_pos, 12); return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; } altitude() { const offset = this.bb.__offset(this.bb_pos, 14); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } aggregation() { const offset = this.bb.__offset(this.bb_pos, 16); return offset ? this.bb.readUint8(this.bb_pos + offset) : aggregation_js_1.Aggregation.none; } pressureLevel() { const offset = this.bb.__offset(this.bb_pos, 18); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } depth() { const offset = this.bb.__offset(this.bb_pos, 20); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } depthTo() { const offset = this.bb.__offset(this.bb_pos, 22); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } ensembleMember() { const offset = this.bb.__offset(this.bb_pos, 24); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } previousDay() { const offset = this.bb.__offset(this.bb_pos, 26); return offset ? this.bb.readInt16(this.bb_pos + offset) : 0; } } exports.VariableWithValues = VariableWithValues; /***/ }), /***/ "./node_modules/@openmeteo/sdk/variable.js": /*!*************************************************!*\ !*** ./node_modules/@openmeteo/sdk/variable.js ***! \*************************************************/ /***/ ((__unused_webpack_module, exports) => { // automatically generated by the FlatBuffers compiler, do not modify Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Variable = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ var Variable; (function (Variable) { Variable[Variable["undefined"] = 0] = "undefined"; Variable[Variable["apparent_temperature"] = 1] = "apparent_temperature"; Variable[Variable["cape"] = 2] = "cape"; Variable[Variable["cloud_cover"] = 3] = "cloud_cover"; Variable[Variable["cloud_cover_high"] = 4] = "cloud_cover_high"; Variable[Variable["cloud_cover_low"] = 5] = "cloud_cover_low"; Variable[Variable["cloud_cover_mid"] = 6] = "cloud_cover_mid"; Variable[Variable["daylight_duration"] = 7] = "daylight_duration"; Variable[Variable["dew_point"] = 8] = "dew_point"; Variable[Variable["diffuse_radiation"] = 9] = "diffuse_radiation"; Variable[Variable["diffuse_radiation_instant"] = 10] = "diffuse_radiation_instant"; Variable[Variable["direct_normal_irradiance"] = 11] = "direct_normal_irradiance"; Variable[Variable["direct_normal_irradiance_instant"] = 12] = "direct_normal_irradiance_instant"; Variable[Variable["direct_radiation"] = 13] = "direct_radiation"; Variable[Variable["direct_radiation_instant"] = 14] = "direct_radiation_instant"; Variable[Variable["et0_fao_evapotranspiration"] = 15] = "et0_fao_evapotranspiration"; Variable[Variable["evapotranspiration"] = 16] = "evapotranspiration"; Variable[Variable["freezing_level_height"] = 17] = "freezing_level_height"; Variable[Variable["growing_degree_days"] = 18] = "growing_degree_days"; Variable[Variable["is_day"] = 19] = "is_day"; Variable[Variable["latent_heat_flux"] = 20] = "latent_heat_flux"; Variable[Variable["leaf_wetness_probability"] = 21] = "leaf_wetness_probability"; Variable[Variable["lifted_index"] = 22] = "lifted_index"; Variable[Variable["lightning_potential"] = 23] = "lightning_potential"; Variable[Variable["precipitation"] = 24] = "precipitation"; Variable[Variable["precipitation_hours"] = 25] = "precipitation_hours"; Variable[Variable["precipitation_probability"] = 26] = "precipitation_probability"; Variable[Variable["pressure_msl"] = 27] = "pressure_msl"; Variable[Variable["rain"] = 28] = "rain"; Variable[Variable["relative_humidity"] = 29] = "relative_humidity"; Variable[Variable["runoff"] = 30] = "runoff"; Variable[Variable["sensible_heat_flux"] = 31] = "sensible_heat_flux"; Variable[Variable["shortwave_radiation"] = 32] = "shortwave_radiation"; Variable[Variable["shortwave_radiation_instant"] = 33] = "shortwave_radiation_instant"; Variable[Variable["showers"] = 34] = "showers"; Variable[Variable["snow_depth"] = 35] = "snow_depth"; Variable[Variable["snow_height"] = 36] = "snow_height"; Variable[Variable["snowfall"] = 37] = "snowfall"; Variable[Variable["snowfall_height"] = 38] = "snowfall_height"; Variable[Variable["snowfall_water_equivalent"] = 39] = "snowfall_water_equivalent"; Variable[Variable["sunrise"] = 40] = "sunrise"; Variable[Variable["sunset"] = 41] = "sunset"; Variable[Variable["soil_moisture"] = 42] = "soil_moisture"; Variable[Variable["soil_moisture_index"] = 43] = "soil_moisture_index"; Variable[Variable["soil_temperature"] = 44] = "soil_temperature"; Variable[Variable["surface_pressure"] = 45] = "surface_pressure"; Variable[Variable["surface_temperature"] = 46] = "surface_temperature"; Variable[Variable["temperature"] = 47] = "temperature"; Variable[Variable["terrestrial_radiation"] = 48] = "terrestrial_radiation"; Variable[Variable["terrestrial_radiation_instant"] = 49] = "terrestrial_radiation_instant"; Variable[Variable["total_column_integrated_water_vapour"] = 50] = "total_column_integrated_water_vapour"; Variable[Variable["updraft"] = 51] = "updraft"; Variable[Variable["uv_index"] = 52] = "uv_index"; Variable[Variable["uv_index_clear_sky"] = 53] = "uv_index_clear_sky"; Variable[Variable["vapour_pressure_deficit"] = 54] = "vapour_pressure_deficit"; Variable[Variable["visibility"] = 55] = "visibility"; Variable[Variable["weather_code"] = 56] = "weather_code"; Variable[Variable["wind_direction"] = 57] = "wind_direction"; Variable[Variable["wind_gusts"] = 58] = "wind_gusts"; Variable[Variable["wind_speed"] = 59] = "wind_speed"; Variable[Variable["vertical_velocity"] = 60] = "vertical_velocity"; Variable[Variable["geopotential_height"] = 61] = "geopotential_height"; Variable[Variable["wet_bulb_temperature"] = 62] = "wet_bulb_temperature"; Variable[Variable["river_discharge"] = 63] = "river_discharge"; Variable[Variable["wave_height"] = 64] = "wave_height"; Variable[Variable["wave_period"] = 65] = "wave_period"; Variable[Variable["wave_direction"] = 66] = "wave_direction"; Variable[Variable["wind_wave_height"] = 67] = "wind_wave_height"; Variable[Variable["wind_wave_period"] = 68] = "wind_wave_period"; Variable[Variable["wind_wave_peak_period"] = 69] = "wind_wave_peak_period"; Variable[Variable["wind_wave_direction"] = 70] = "wind_wave_direction"; Variable[Variable["swell_wave_height"] = 71] = "swell_wave_height"; Variable[Variable["swell_wave_period"] = 72] = "swell_wave_period"; Variable[Variable["swell_wave_peak_period"] = 73] = "swell_wave_peak_period"; Variable[Variable["swell_wave_direction"] = 74] = "swell_wave_direction"; Variable[Variable["pm10"] = 75] = "pm10"; Variable[Variable["pm2p5"] = 76] = "pm2p5"; Variable[Variable["dust"] = 77] = "dust"; Variable[Variable["aerosol_optical_depth"] = 78] = "aerosol_optical_depth"; Variable[Variable["carbon_monoxide"] = 79] = "carbon_monoxide"; Variable[Variable["nitrogen_dioxide"] = 80] = "nitrogen_dioxide"; Variable[Variable["ammonia"] = 81] = "ammonia"; Variable[Variable["ozone"] = 82] = "ozone"; Variable[Variable["sulphur_dioxide"] = 83] = "sulphur_dioxide"; Variable[Variable["alder_pollen"] = 84] = "alder_pollen"; Variable[Variable["birch_pollen"] = 85] = "birch_pollen"; Variable[Variable["grass_pollen"] = 86] = "grass_pollen"; Variable[Variable["mugwort_pollen"] = 87] = "mugwort_pollen"; Variable[Variable["olive_pollen"] = 88] = "olive_pollen"; Variable[Variable["ragweed_pollen"] = 89] = "ragweed_pollen"; Variable[Variable["european_aqi"] = 90] = "european_aqi"; Variable[Variable["european_aqi_pm2p5"] = 91] = "european_aqi_pm2p5"; Variable[Variable["european_aqi_pm10"] = 92] = "european_aqi_pm10"; Variable[Variable["european_aqi_nitrogen_dioxide"] = 93] = "european_aqi_nitrogen_dioxide"; Variable[Variable["european_aqi_ozone"] = 94] = "european_aqi_ozone"; Variable[Variable["european_aqi_sulphur_dioxide"] = 95] = "european_aqi_sulphur_dioxide"; Variable[Variable["us_aqi"] = 96] = "us_aqi"; Variable[Variable["us_aqi_pm2p5"] = 97] = "us_aqi_pm2p5"; Variable[Variable["us_aqi_pm10"] = 98] = "us_aqi_pm10"; Variable[Variable["us_aqi_nitrogen_dioxide"] = 99] = "us_aqi_nitrogen_dioxide"; Variable[Variable["us_aqi_ozone"] = 100] = "us_aqi_ozone"; Variable[Variable["us_aqi_sulphur_dioxide"] = 101] = "us_aqi_sulphur_dioxide"; Variable[Variable["us_aqi_carbon_monoxide"] = 102] = "us_aqi_carbon_monoxide"; Variable[Variable["sunshine_duration"] = 103] = "sunshine_duration"; Variable[Variable["convective_inhibition"] = 104] = "convective_inhibition"; Variable[Variable["shortwave_radiation_clear_sky"] = 105] = "shortwave_radiation_clear_sky"; Variable[Variable["global_tilted_irradiance"] = 106] = "global_tilted_irradiance"; Variable[Variable["global_tilted_irradiance_instant"] = 107] = "global_tilted_irradiance_instant"; Variable[Variable["ocean_current_velocity"] = 108] = "ocean_current_velocity"; Variable[Variable["ocean_current_direction"] = 109] = "ocean_current_direction"; Variable[Variable["cloud_base"] = 110] = "cloud_base"; Variable[Variable["cloud_top"] = 111] = "cloud_top"; Variable[Variable["mass_density"] = 112] = "mass_density"; Variable[Variable["boundary_layer_height"] = 113] = "boundary_layer_height"; Variable[Variable["formaldehyde"] = 114] = "formaldehyde"; Variable[Variable["glyoxal"] = 115] = "glyoxal"; Variable[Variable["non_methane_volatile_organic_compounds"] = 116] = "non_methane_volatile_organic_compounds"; Variable[Variable["pm10_wildfires"] = 117] = "pm10_wildfires"; Variable[Variable["peroxyacyl_nitrates"] = 118] = "peroxyacyl_nitrates"; Variable[Variable["secondary_inorganic_aerosol"] = 119] = "secondary_inorganic_aerosol"; Variable[Variable["residential_elementary_carbon"] = 120] = "residential_elementary_carbon"; Variable[Variable["total_elementary_carbon"] = 121] = "total_elementary_carbon"; Variable[Variable["pm2_5_total_organic_matter"] = 122] = "pm2_5_total_organic_matter"; Variable[Variable["sea_salt_aerosol"] = 123] = "sea_salt_aerosol"; Variable[Variable["nitrogen_monoxide"] = 124] = "nitrogen_monoxide"; Variable[Variable["thunderstorm_probability"] = 125] = "thunderstorm_probability"; Variable[Variable["rain_probability"] = 126] = "rain_probability"; Variable[Variable["freezing_rain_probability"] = 127] = "freezing_rain_probability"; Variable[Variable["ice_pellets_probability"] = 128] = "ice_pellets_probability"; Variable[Variable["snowfall_probability"] = 129] = "snowfall_probability"; Variable[Variable["carbon_dioxide"] = 130] = "carbon_dioxide"; Variable[Variable["methane"] = 131] = "methane"; Variable[Variable["sea_level_height_msl"] = 132] = "sea_level_height_msl"; Variable[Variable["sea_surface_temperature"] = 133] = "sea_surface_temperature"; Variable[Variable["invert_barometer_height"] = 134] = "invert_barometer_height"; Variable[Variable["hail"] = 135] = "hail"; Variable[Variable["albedo"] = 136] = "albedo"; Variable[Variable["precipitation_type"] = 137] = "precipitation_type"; Variable[Variable["convective_cloud_base"] = 138] = "convective_cloud_base"; Variable[Variable["convective_cloud_top"] = 139] = "convective_cloud_top"; Variable[Variable["snow_depth_water_equivalent"] = 140] = "snow_depth_water_equivalent"; Variable[Variable["secondary_swell_wave_height"] = 141] = "secondary_swell_wave_height"; Variable[Variable["secondary_swell_wave_period"] = 142] = "secondary_swell_wave_period"; Variable[Variable["secondary_swell_wave_peak_period"] = 143] = "secondary_swell_wave_peak_period"; Variable[Variable["secondary_swell_wave_direction"] = 144] = "secondary_swell_wave_direction"; Variable[Variable["tertiary_swell_wave_height"] = 145] = "tertiary_swell_wave_height"; Variable[Variable["tertiary_swell_wave_period"] = 146] = "tertiary_swell_wave_period"; Variable[Variable["tertiary_swell_wave_peak_period"] = 147] = "tertiary_swell_wave_peak_period"; Variable[Variable["tertiary_swell_wave_direction"] = 148] = "tertiary_swell_wave_direction"; })(Variable || (exports.Variable = Variable = {})); /***/ }), /***/ "./node_modules/@openmeteo/sdk/variables-with-time.js": /*!************************************************************!*\ !*** ./node_modules/@openmeteo/sdk/variables-with-time.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { // automatically generated by the FlatBuffers compiler, do not modify var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.VariablesWithTime = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ const flatbuffers = __importStar(__webpack_require__(/*! flatbuffers */ "./node_modules/flatbuffers/mjs/flatbuffers.js")); const variable_with_values_js_1 = __webpack_require__(/*! ./variable-with-values.js */ "./node_modules/@openmeteo/sdk/variable-with-values.js"); class VariablesWithTime { constructor() { this.bb = null; this.bb_pos = 0; } __init(i, bb) { this.bb_pos = i; this.bb = bb; return this; } static getRootAsVariablesWithTime(bb, obj) { return (obj || new VariablesWithTime()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } static getSizePrefixedRootAsVariablesWithTime(bb, obj) { bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); return (obj || new VariablesWithTime()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } time() { const offset = this.bb.__offset(this.bb_pos, 4); return offset ? this.bb.readInt64(this.bb_pos + offset) : BigInt('0'); } timeEnd() { const offset = this.bb.__offset(this.bb_pos, 6); return offset ? this.bb.readInt64(this.bb_pos + offset) : BigInt('0'); } interval() { const offset = this.bb.__offset(this.bb_pos, 8); return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; } variables(index, obj) { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? (obj || new variable_with_values_js_1.VariableWithValues()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; } variablesLength() { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; } } exports.VariablesWithTime = VariablesWithTime; /***/ }), /***/ "./node_modules/@openmeteo/sdk/weather-api-response.js": /*!*************************************************************!*\ !*** ./node_modules/@openmeteo/sdk/weather-api-response.js ***! \*************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { // automatically generated by the FlatBuffers compiler, do not modify var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.WeatherApiResponse = void 0; /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ const flatbuffers = __importStar(__webpack_require__(/*! flatbuffers */ "./node_modules/flatbuffers/mjs/flatbuffers.js")); const model_js_1 = __webpack_require__(/*! ./model.js */ "./node_modules/@openmeteo/sdk/model.js"); const variables_with_time_js_1 = __webpack_require__(/*! ./variables-with-time.js */ "./node_modules/@openmeteo/sdk/variables-with-time.js"); class WeatherApiResponse { constructor() { this.bb = null; this.bb_pos = 0; } __init(i, bb) { this.bb_pos = i; this.bb = bb; return this; } static getRootAsWeatherApiResponse(bb, obj) { return (obj || new WeatherApiResponse()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } static getSizePrefixedRootAsWeatherApiResponse(bb, obj) { bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); return (obj || new WeatherApiResponse()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } latitude() { const offset = this.bb.__offset(this.bb_pos, 4); return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; } longitude() { const offset = this.bb.__offset(this.bb_pos, 6); return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; } elevation() { const offset = this.bb.__offset(this.bb_pos, 8); return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; } generationTimeMilliseconds() { const offset = this.bb.__offset(this.bb_pos, 10); return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; } locationId() { const offset = this.bb.__offset(this.bb_pos, 12); return offset ? this.bb.readInt64(this.bb_pos + offset) : BigInt('0'); } model() { const offset = this.bb.__offset(this.bb_pos, 14); return offset ? this.bb.readUint8(this.bb_pos + offset) : model_js_1.Model.undefined; } utcOffsetSeconds() { const offset = this.bb.__offset(this.bb_pos, 16); return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; } timezone(optionalEncoding) { const offset = this.bb.__offset(this.bb_pos, 18); return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; } timezoneAbbreviation(optionalEncoding) { const offset = this.bb.__offset(this.bb_pos, 20); return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; } current(obj) { const offset = this.bb.__offset(this.bb_pos, 22); return offset ? (obj || new variables_with_time_js_1.VariablesWithTime()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; } daily(obj) { const offset = this.bb.__offset(this.bb_pos, 24); return offset ? (obj || new variables_with_time_js_1.VariablesWithTime()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; } hourly(obj) { const offset = this.bb.__offset(this.bb_pos, 26); return offset ? (obj || new variables_with_time_js_1.VariablesWithTime()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; } minutely15(obj) { const offset = this.bb.__offset(this.bb_pos, 28); return offset ? (obj || new variables_with_time_js_1.VariablesWithTime()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; } sixHourly(obj) { const offset = this.bb.__offset(this.bb_pos, 30); return offset ? (obj || new variables_with_time_js_1.VariablesWithTime()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; } } exports.WeatherApiResponse = WeatherApiResponse; /***/ }), /***/ "./node_modules/flatbuffers/mjs/builder.js": /*!*************************************************!*\ !*** ./node_modules/flatbuffers/mjs/builder.js ***! \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Builder: () => (/* binding */ Builder) /* harmony export */ }); /* harmony import */ var _byte_buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-buffer.js */ "./node_modules/flatbuffers/mjs/byte-buffer.js"); /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants.js */ "./node_modules/flatbuffers/mjs/constants.js"); class Builder { /** * Create a FlatBufferBuilder. */ constructor(opt_initial_size) { /** Minimum alignment encountered so far. */ this.minalign = 1; /** The vtable for the current table. */ this.vtable = null; /** The amount of fields we're actually using. */ this.vtable_in_use = 0; /** Whether we are currently serializing a table. */ this.isNested = false; /** Starting offset of the current struct/table. */ this.object_start = 0; /** List of offsets of all vtables. */ this.vtables = []; /** For the current vector being built. */ this.vector_num_elems = 0; /** False omits default values from the serialized data */ this.force_defaults = false; this.string_maps = null; this.text_encoder = new TextEncoder(); let initial_size; if (!opt_initial_size) { initial_size = 1024; } else { initial_size = opt_initial_size; } /** * @type {ByteBuffer} * @private */ this.bb = _byte_buffer_js__WEBPACK_IMPORTED_MODULE_0__.ByteBuffer.allocate(initial_size); this.space = initial_size; } clear() { this.bb.clear(); this.space = this.bb.capacity(); this.minalign = 1; this.vtable = null; this.vtable_in_use = 0; this.isNested = false; this.object_start = 0; this.vtables = []; this.vector_num_elems = 0; this.force_defaults = false; this.string_maps = null; } /** * In order to save space, fields that are set to their default value * don't get serialized into the buffer. Forcing defaults provides a * way to manually disable this optimization. * * @param forceDefaults true always serializes default values */ forceDefaults(forceDefaults) { this.force_defaults = forceDefaults; } /** * Get the ByteBuffer representing the FlatBuffer. Only call this after you've * called finish(). The actual data starts at the ByteBuffer's current position, * not necessarily at 0. */ dataBuffer() { return this.bb; } /** * Get the bytes representing the FlatBuffer. Only call this after you've * called finish(). */ asUint8Array() { return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset()); } /** * Prepare to write an element of `size` after `additional_bytes` have been * written, e.g. if you write a string, you need to align such the int length * field is aligned to 4 bytes, and the string data follows it directly. If all * you need to do is alignment, `additional_bytes` will be 0. * * @param size This is the of the new element to write * @param additional_bytes The padding size */ prep(size, additional_bytes) { // Track the biggest thing we've ever aligned to. if (size > this.minalign) { this.minalign = size; } // Find the amount of alignment needed such that `size` is properly // aligned after `additional_bytes` const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1); // Reallocate the buffer if needed. while (this.space < align_size + size + additional_bytes) { const old_buf_size = this.bb.capacity(); this.bb = Builder.growByteBuffer(this.bb); this.space += this.bb.capacity() - old_buf_size; } this.pad(align_size); } pad(byte_size) { for (let i = 0; i < byte_size; i++) { this.bb.writeInt8(--this.space, 0); } } writeInt8(value) { this.bb.writeInt8(this.space -= 1, value); } writeInt16(value) { this.bb.writeInt16(this.space -= 2, value); } writeInt32(value) { this.bb.writeInt32(this.space -= 4, value); } writeInt64(value) { this.bb.writeInt64(this.space -= 8, value); } writeFloat32(value) { this.bb.writeFloat32(this.space -= 4, value); } writeFloat64(value) { this.bb.writeFloat64(this.space -= 8, value); } /** * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `int8` to add the buffer. */ addInt8(value) { this.prep(1, 0); this.writeInt8(value); } /** * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `int16` to add the buffer. */ addInt16(value) { this.prep(2, 0); this.writeInt16(value); } /** * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `int32` to add the buffer. */ addInt32(value) { this.prep(4, 0); this.writeInt32(value); } /** * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `int64` to add the buffer. */ addInt64(value) { this.prep(8, 0); this.writeInt64(value); } /** * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `float32` to add the buffer. */ addFloat32(value) { this.prep(4, 0); this.writeFloat32(value); } /** * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary). * @param value The `float64` to add the buffer. */ addFloat64(value) { this.prep(8, 0); this.writeFloat64(value); } addFieldInt8(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addInt8(value); this.slot(voffset); } } addFieldInt16(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addInt16(value); this.slot(voffset); } } addFieldInt32(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addInt32(value); this.slot(voffset); } } addFieldInt64(voffset, value, defaultValue) { if (this.force_defaults || value !== defaultValue) { this.addInt64(value); this.slot(voffset); } } addFieldFloat32(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addFloat32(value); this.slot(voffset); } } addFieldFloat64(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addFloat64(value); this.slot(voffset); } } addFieldOffset(voffset, value, defaultValue) { if (this.force_defaults || value != defaultValue) { this.addOffset(value); this.slot(voffset); } } /** * Structs are stored inline, so nothing additional is being added. `d` is always 0. */ addFieldStruct(voffset, value, defaultValue) { if (value != defaultValue) { this.nested(value); this.slot(voffset); } } /** * Structures are always stored inline, they need to be created right * where they're used. You'll get this assertion failure if you * created it elsewhere. */ nested(obj) { if (obj != this.offset()) { throw new TypeError('FlatBuffers: struct must be serialized inline.'); } } /** * Should not be creating any other object, string or vector * while an object is being constructed */ notNested() { if (this.isNested) { throw new TypeError('FlatBuffers: object serialization must not be nested.'); } } /** * Set the current vtable at `voffset` to the current location in the buffer. */ slot(voffset) { if (this.vtable !== null) this.vtable[voffset] = this.offset(); } /** * @returns Offset relative to the end of the buffer. */ offset() { return this.bb.capacity() - this.space; } /** * Doubles the size of the backing ByteBuffer and copies the old data towards * the end of the new buffer (since we build the buffer backwards). * * @param bb The current buffer with the existing data * @returns A new byte buffer with the old data copied * to it. The data is located at the end of the buffer. * * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass * it a uint8Array we need to suppress the type check: * @suppress {checkTypes} */ static growByteBuffer(bb) { const old_buf_size = bb.capacity(); // Ensure we don't grow beyond what fits in an int. if (old_buf_size & 0xC0000000) { throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.'); } const new_buf_size = old_buf_size << 1; const nbb = _byte_buffer_js__WEBPACK_IMPORTED_MODULE_0__.ByteBuffer.allocate(new_buf_size); nbb.setPosition(new_buf_size - old_buf_size); nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size); return nbb; } /** * Adds on offset, relative to where it will be written. * * @param offset The offset to add. */ addOffset(offset) { this.prep(_constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_INT, 0); // Ensure alignment is already done. this.writeInt32(this.offset() - offset + _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_INT); } /** * Start encoding a new object in the buffer. Users will not usually need to * call this directly. The FlatBuffers compiler will generate helper methods * that call this method internally. */ startObject(numfields) { this.notNested(); if (this.vtable == null) { this.vtable = []; } this.vtable_in_use = numfields; for (let i = 0; i < numfields; i++) { this.vtable[i] = 0; // This will push additional elements as needed } this.isNested = true; this.object_start = this.offset(); } /** * Finish off writing the object that is under construction. * * @returns The offset to the object inside `dataBuffer` */ endObject() { if (this.vtable == null || !this.isNested) { throw new Error('FlatBuffers: endObject called without startObject'); } this.addInt32(0); const vtableloc = this.offset(); // Trim trailing zeroes. let i = this.vtable_in_use - 1; // eslint-disable-next-line no-empty for (; i >= 0 && this.vtable[i] == 0; i--) { } const trimmed_size = i + 1; // Write out the current vtable. for (; i >= 0; i--) { // Offset relative to the start of the table. this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0); } const standard_fields = 2; // The fields below: this.addInt16(vtableloc - this.object_start); const len = (trimmed_size + standard_fields) * _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_SHORT; this.addInt16(len); // Search for an existing vtable that matches the current one. let existing_vtable = 0; const vt1 = this.space; outer_loop: for (i = 0; i < this.vtables.length; i++) { const vt2 = this.bb.capacity() - this.vtables[i]; if (len == this.bb.readInt16(vt2)) { for (let j = _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_SHORT; j < len; j += _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_SHORT) { if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) { continue outer_loop; } } existing_vtable = this.vtables[i]; break; } } if (existing_vtable) { // Found a match: // Remove the current vtable. this.space = this.bb.capacity() - vtableloc; // Point table to existing vtable. this.bb.writeInt32(this.space, existing_vtable - vtableloc); } else { // No match: // Add the location of the current vtable to the list of vtables. this.vtables.push(this.offset()); // Point table to current vtable. this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc); } this.isNested = false; return vtableloc; } /** * Finalize a buffer, poiting to the given `root_table`. */ finish(root_table, opt_file_identifier, opt_size_prefix) { const size_prefix = opt_size_prefix ? _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZE_PREFIX_LENGTH : 0; if (opt_file_identifier) { const file_identifier = opt_file_identifier; this.prep(this.minalign, _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_INT + _constants_js__WEBPACK_IMPORTED_MODULE_1__.FILE_IDENTIFIER_LENGTH + size_prefix); if (file_identifier.length != _constants_js__WEBPACK_IMPORTED_MODULE_1__.FILE_IDENTIFIER_LENGTH) { throw new TypeError('FlatBuffers: file identifier must be length ' + _constants_js__WEBPACK_IMPORTED_MODULE_1__.FILE_IDENTIFIER_LENGTH); } for (let i = _constants_js__WEBPACK_IMPORTED_MODULE_1__.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) { this.writeInt8(file_identifier.charCodeAt(i)); } } this.prep(this.minalign, _constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_INT + size_prefix); this.addOffset(root_table); if (size_prefix) { this.addInt32(this.bb.capacity() - this.space); } this.bb.setPosition(this.space); } /** * Finalize a size prefixed buffer, pointing to the given `root_table`. */ finishSizePrefixed(root_table, opt_file_identifier) { this.finish(root_table, opt_file_identifier, true); } /** * This checks a required field has been set in a given table that has * just been constructed. */ requiredField(table, field) { const table_start = this.bb.capacity() - table; const vtable_start = table_start - this.bb.readInt32(table_start); const ok = field < this.bb.readInt16(vtable_start) && this.bb.readInt16(vtable_start + field) != 0; // If this fails, the caller will show what field needs to be set. if (!ok) { throw new TypeError('FlatBuffers: field ' + field + ' must be set'); } } /** * Start a new array/vector of objects. Users usually will not call * this directly. The FlatBuffers compiler will create a start/end * method for vector types in generated code. * * @param elem_size The size of each element in the array * @param num_elems The number of elements in the array * @param alignment The alignment of the array */ startVector(elem_size, num_elems, alignment) { this.notNested(); this.vector_num_elems = num_elems; this.prep(_constants_js__WEBPACK_IMPORTED_MODULE_1__.SIZEOF_INT, elem_size * num_elems); this.prep(alignment, elem_size * num_elems); // Just in case alignment > int. } /** * Finish off the creation of an array and all its elements. The array must be * created with `startVector`. * * @returns The offset at which the newly created array * starts. */ endVector() { this.writeInt32(this.vector_num_elems); return this.offset(); } /** * Encode the string `s` in the buffer using UTF-8. If the string passed has * already been seen, we return the offset of the already written string * * @param s The string to encode * @return The offset in the buffer where the encoded string starts */ createSharedString(s) { if (!s) { return 0; } if (!this.string_maps) { this.string_maps = new Map(); } if (this.string_maps.has(s)) { return this.string_maps.get(s); } const offset = this.createString(s); this.string_maps.set(s, offset); return offset; } /** * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed * instead of a string, it is assumed to contain valid UTF-8 encoded data. * * @param s The string to encode * @return The offset in the buffer where the encoded string starts */ createString(s) { if (s === null || s === undefined) { return 0; } let utf8; if (s instanceof Uint8Array) { utf8 = s; } else { utf8 = this.text_encoder.encode(s); } this.addInt8(0); this.startVector(1, utf8.length, 1); this.bb.setPosition(this.space -= utf8.length); this.bb.bytes().set(utf8, this.space); return this.endVector(); } /** * Create a byte vector. * * @param v The bytes to add * @returns The offset in the buffer where the byte vector starts */ createByteVector(v) { if (v === null || v === undefined) { return 0; } this.startVector(1, v.length, 1); this.bb.setPosition(this.space -= v.length); this.bb.bytes().set(v, this.space); return this.endVector(); } /** * A helper function to pack an object * * @returns offset of obj */ createObjectOffset(obj) { if (obj === null) { return 0; } if (typeof obj === 'string') { return this.createString(obj); } else { return obj.pack(this); } } /** * A helper function to pack a list of object * * @returns list of offsets of each non null object */ createObjectOffsetList(list) { const ret = []; for (let i = 0; i < list.length; ++i) { const val = list[i]; if (val !== null) { ret.push(this.createObjectOffset(val)); } else { throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.'); } } return ret; } createStructOffsetList(list, startFunc) { startFunc(this, list.length); this.createObjectOffsetList(list.slice().reverse()); return this.endVector(); } } /***/ }), /***/ "./node_modules/flatbuffers/mjs/byte-buffer.js": /*!*****************************************************!*\ !*** ./node_modules/flatbuffers/mjs/byte-buffer.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ByteBuffer: () => (/* binding */ ByteBuffer) /* harmony export */ }); /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants.js */ "./node_modules/flatbuffers/mjs/constants.js"); /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.js */ "./node_modules/flatbuffers/mjs/utils.js"); /* harmony import */ var _encoding_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./encoding.js */ "./node_modules/flatbuffers/mjs/encoding.js"); class ByteBuffer { /** * Create a new ByteBuffer with a given array of bytes (`Uint8Array`) */ constructor(bytes_) { this.bytes_ = bytes_; this.position_ = 0; this.text_decoder_ = new TextDecoder(); } /** * Create and allocate a new ByteBuffer with a given size. */ static allocate(byte_size) { return new ByteBuffer(new Uint8Array(byte_size)); } clear() { this.position_ = 0; } /** * Get the underlying `Uint8Array`. */ bytes() { return this.bytes_; } /** * Get the buffer's position. */ position() { return this.position_; } /** * Set the buffer's position. */ setPosition(position) { this.position_ = position; } /** * Get the buffer's capacity. */ capacity() { return this.bytes_.length; } readInt8(offset) { return this.readUint8(offset) << 24 >> 24; } readUint8(offset) { return this.bytes_[offset]; } readInt16(offset) { return this.readUint16(offset) << 16 >> 16; } readUint16(offset) { return this.bytes_[offset] | this.bytes_[offset + 1] << 8; } readInt32(offset) { return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24; } readUint32(offset) { return this.readInt32(offset) >>> 0; } readInt64(offset) { return BigInt.asIntN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32))); } readUint64(offset) { return BigInt.asUintN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32))); } readFloat32(offset) { _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[0] = this.readInt32(offset); return _utils_js__WEBPACK_IMPORTED_MODULE_1__.float32[0]; } readFloat64(offset) { _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[_utils_js__WEBPACK_IMPORTED_MODULE_1__.isLittleEndian ? 0 : 1] = this.readInt32(offset); _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[_utils_js__WEBPACK_IMPORTED_MODULE_1__.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4); return _utils_js__WEBPACK_IMPORTED_MODULE_1__.float64[0]; } writeInt8(offset, value) { this.bytes_[offset] = value; } writeUint8(offset, value) { this.bytes_[offset] = value; } writeInt16(offset, value) { this.bytes_[offset] = value; this.bytes_[offset + 1] = value >> 8; } writeUint16(offset, value) { this.bytes_[offset] = value; this.bytes_[offset + 1] = value >> 8; } writeInt32(offset, value) { this.bytes_[offset] = value; this.bytes_[offset + 1] = value >> 8; this.bytes_[offset + 2] = value >> 16; this.bytes_[offset + 3] = value >> 24; } writeUint32(offset, value) { this.bytes_[offset] = value; this.bytes_[offset + 1] = value >> 8; this.bytes_[offset + 2] = value >> 16; this.bytes_[offset + 3] = value >> 24; } writeInt64(offset, value) { this.writeInt32(offset, Number(BigInt.asIntN(32, value))); this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32)))); } writeUint64(offset, value) { this.writeUint32(offset, Number(BigInt.asUintN(32, value))); this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32)))); } writeFloat32(offset, value) { _utils_js__WEBPACK_IMPORTED_MODULE_1__.float32[0] = value; this.writeInt32(offset, _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[0]); } writeFloat64(offset, value) { _utils_js__WEBPACK_IMPORTED_MODULE_1__.float64[0] = value; this.writeInt32(offset, _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[_utils_js__WEBPACK_IMPORTED_MODULE_1__.isLittleEndian ? 0 : 1]); this.writeInt32(offset + 4, _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32[_utils_js__WEBPACK_IMPORTED_MODULE_1__.isLittleEndian ? 1 : 0]); } /** * Return the file identifier. Behavior is undefined for FlatBuffers whose * schema does not include a file_identifier (likely points at padding or the * start of a the root vtable). */ getBufferIdentifier() { if (this.bytes_.length < this.position_ + _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT + _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH) { throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.'); } let result = ""; for (let i = 0; i < _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH; i++) { result += String.fromCharCode(this.readInt8(this.position_ + _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT + i)); } return result; } /** * Look up a field in the vtable, return an offset into the object, or 0 if the * field is not present. */ __offset(bb_pos, vtable_offset) { const vtable = bb_pos - this.readInt32(bb_pos); return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0; } /** * Initialize any Table-derived type to point to the union at the given offset. */ __union(t, offset) { t.bb_pos = offset + this.readInt32(offset); t.bb = this; return t; } /** * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer. * This allocates a new string and converts to wide chars upon each access. * * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the * "optionalEncoding" argument. This is useful for avoiding conversion when * the data will just be packaged back up in another FlatBuffer later on. * * @param offset * @param opt_encoding Defaults to UTF16_STRING */ __string(offset, opt_encoding) { offset += this.readInt32(offset); const length = this.readInt32(offset); offset += _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT; const utf8bytes = this.bytes_.subarray(offset, offset + length); if (opt_encoding === _encoding_js__WEBPACK_IMPORTED_MODULE_2__.Encoding.UTF8_BYTES) return utf8bytes; else return this.text_decoder_.decode(utf8bytes); } /** * Handle unions that can contain string as its member, if a Table-derived type then initialize it, * if a string then return a new one * * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this * makes the behaviour of __union_with_string different compared to __union */ __union_with_string(o, offset) { if (typeof o === 'string') { return this.__string(offset); } return this.__union(o, offset); } /** * Retrieve the relative offset stored at "offset" */ __indirect(offset) { return offset + this.readInt32(offset); } /** * Get the start of data of a vector whose offset is stored at "offset" in this object. */ __vector(offset) { return offset + this.readInt32(offset) + _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT; // data starts after the length } /** * Get the length of a vector whose offset is stored at "offset" in this object. */ __vector_len(offset) { return this.readInt32(offset + this.readInt32(offset)); } __has_identifier(ident) { if (ident.length != _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH) { throw new Error('FlatBuffers: file identifier must be length ' + _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH); } for (let i = 0; i < _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH; i++) { if (ident.charCodeAt(i) != this.readInt8(this.position() + _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT + i)) { return false; } } return true; } /** * A helper function for generating list for obj api */ createScalarList(listAccessor, listLength) { const ret = []; for (let i = 0; i < listLength; ++i) { const val = listAccessor(i); if (val !== null) { ret.push(val); } } return ret; } /** * A helper function for generating list for obj api * @param listAccessor function that accepts an index and return data at that index * @param listLength listLength * @param res result list */ createObjList(listAccessor, listLength) { const ret = []; for (let i = 0; i < listLength; ++i) { const val = listAccessor(i); if (val !== null) { ret.push(val.unpack()); } } return ret; } } /***/ }), /***/ "./node_modules/flatbuffers/mjs/constants.js": /*!***************************************************!*\ !*** ./node_modules/flatbuffers/mjs/constants.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ FILE_IDENTIFIER_LENGTH: () => (/* binding */ FILE_IDENTIFIER_LENGTH), /* harmony export */ SIZEOF_INT: () => (/* binding */ SIZEOF_INT), /* harmony export */ SIZEOF_SHORT: () => (/* binding */ SIZEOF_SHORT), /* harmony export */ SIZE_PREFIX_LENGTH: () => (/* binding */ SIZE_PREFIX_LENGTH) /* harmony export */ }); const SIZEOF_SHORT = 2; const SIZEOF_INT = 4; const FILE_IDENTIFIER_LENGTH = 4; const SIZE_PREFIX_LENGTH = 4; /***/ }), /***/ "./node_modules/flatbuffers/mjs/encoding.js": /*!**************************************************!*\ !*** ./node_modules/flatbuffers/mjs/encoding.js ***! \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Encoding: () => (/* binding */ Encoding) /* harmony export */ }); var Encoding; (function (Encoding) { Encoding[Encoding["UTF8_BYTES"] = 1] = "UTF8_BYTES"; Encoding[Encoding["UTF16_STRING"] = 2] = "UTF16_STRING"; })(Encoding || (Encoding = {})); /***/ }), /***/ "./node_modules/flatbuffers/mjs/flatbuffers.js": /*!*****************************************************!*\ !*** ./node_modules/flatbuffers/mjs/flatbuffers.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Builder: () => (/* reexport safe */ _builder_js__WEBPACK_IMPORTED_MODULE_3__.Builder), /* harmony export */ ByteBuffer: () => (/* reexport safe */ _byte_buffer_js__WEBPACK_IMPORTED_MODULE_4__.ByteBuffer), /* harmony export */ Encoding: () => (/* reexport safe */ _encoding_js__WEBPACK_IMPORTED_MODULE_2__.Encoding), /* harmony export */ FILE_IDENTIFIER_LENGTH: () => (/* reexport safe */ _constants_js__WEBPACK_IMPORTED_MODULE_0__.FILE_IDENTIFIER_LENGTH), /* harmony export */ SIZEOF_INT: () => (/* reexport safe */ _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_INT), /* harmony export */ SIZEOF_SHORT: () => (/* reexport safe */ _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZEOF_SHORT), /* harmony export */ SIZE_PREFIX_LENGTH: () => (/* reexport safe */ _constants_js__WEBPACK_IMPORTED_MODULE_0__.SIZE_PREFIX_LENGTH), /* harmony export */ float32: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_1__.float32), /* harmony export */ float64: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_1__.float64), /* harmony export */ int32: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_1__.int32), /* harmony export */ isLittleEndian: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_1__.isLittleEndian) /* harmony export */ }); /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants.js */ "./node_modules/flatbuffers/mjs/constants.js"); /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.js */ "./node_modules/flatbuffers/mjs/utils.js"); /* harmony import */ var _encoding_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./encoding.js */ "./node_modules/flatbuffers/mjs/encoding.js"); /* harmony import */ var _builder_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./builder.js */ "./node_modules/flatbuffers/mjs/builder.js"); /* harmony import */ var _byte_buffer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./byte-buffer.js */ "./node_modules/flatbuffers/mjs/byte-buffer.js"); /***/ }), /***/ "./node_modules/flatbuffers/mjs/utils.js": /*!***********************************************!*\ !*** ./node_modules/flatbuffers/mjs/utils.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ float32: () => (/* binding */ float32), /* harmony export */ float64: () => (/* binding */ float64), /* harmony export */ int32: () => (/* binding */ int32), /* harmony export */ isLittleEndian: () => (/* binding */ isLittleEndian) /* harmony export */ }); const int32 = new Int32Array(2); const float32 = new Float32Array(int32.buffer); const float64 = new Float64Array(int32.buffer); const isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1; /***/ }), /***/ "./node_modules/openmeteo/lib/index.js": /*!*********************************************!*\ !*** ./node_modules/openmeteo/lib/index.js ***! \*********************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.fetchWeatherApi = fetchWeatherApi; const flatbuffers_1 = __webpack_require__(/*! flatbuffers */ "./node_modules/flatbuffers/mjs/flatbuffers.js"); const weather_api_response_1 = __webpack_require__(/*! @openmeteo/sdk/weather-api-response */ "./node_modules/@openmeteo/sdk/weather-api-response.js"); const sleep = (ms) => new Promise(r => setTimeout(r, ms)); function fetchRetried(url_1) { return __awaiter(this, arguments, void 0, function* (url, retries = 3, backoffFactor = 0.5, backoffMax = 2, fetchOptions = {}) { const statusToRetry = [500, 502, 504]; const statusWithJsonError = [400, 429]; let currentTry = 0; let response = yield fetch(url, fetchOptions); while (statusToRetry.includes(response.status)) { currentTry++; if (currentTry >= retries) { throw new Error(response.statusText); } const sleepMs = Math.min(backoffFactor * Math.pow(2, currentTry), backoffMax) * 1000; yield sleep(sleepMs); response = yield fetch(url, fetchOptions); } if (statusWithJsonError.includes(response.status)) { const json = yield response.json(); if ('reason' in json) { throw new Error(json.reason); } throw new Error(response.statusText); } return response; }); } /** * Retrieve data from the Open-Meteo weather API * * @param {string} url Server and endpoint. E.g. "https://api.open-meteo.com/v1/forecast" * @param {any} params URL parameter as an object * @param {number} [retries=3] Number of retries in case of an server error * @param {number} [backoffFactor=0.2] Exponential backoff factor to increase wait time after each retry * @param {number} [backoffMax=2] Maximum wait time between retries * @param {RequestInit} [fetchOptions={}] Additional fetch options such as headers, signal, etc. * @returns {Promise} */ function fetchWeatherApi(url_1, params_1) { return __awaiter(this, arguments, void 0, function* (url, params, retries = 3, backoffFactor = 0.2, backoffMax = 2, fetchOptions = {}) { const urlParams = new URLSearchParams(params); urlParams.set('format', 'flatbuffers'); const response = yield fetchRetried(`${url}?${urlParams.toString()}`, retries, backoffFactor, backoffMax, fetchOptions); const fb = new flatbuffers_1.ByteBuffer(new Uint8Array(yield response.arrayBuffer())); const results = []; let pos = 0; while (pos < fb.capacity()) { fb.setPosition(pos); const len = fb.readInt32(fb.position()); results.push(weather_api_response_1.WeatherApiResponse.getSizePrefixedRootAsWeatherApiResponse(fb)); pos += len + 4; } return results; }); } /***/ }), /***/ "./src/color-schemes.ts": /*!******************************!*\ !*** ./src/color-schemes.ts ***! \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Analogous: () => (/* binding */ Analogous), /* harmony export */ Monochromatic: () => (/* binding */ Monochromatic), /* harmony export */ Scheme: () => (/* binding */ Scheme), /* harmony export */ SplitComplementary: () => (/* binding */ SplitComplementary), /* harmony export */ Square: () => (/* binding */ Square), /* harmony export */ Tetradic: () => (/* binding */ Tetradic), /* harmony export */ Triadic: () => (/* binding */ Triadic) /* harmony export */ }); /* harmony import */ var _hsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hsl */ "./src/hsl.ts"); var __extends = (undefined && undefined.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var Scheme = /** @class */ (function () { function Scheme(initial) { this.primary = _hsl__WEBPACK_IMPORTED_MODULE_0__["default"].fromHex(initial); } Scheme.prototype.toString = function () { var values = this.colors.map(function (color) { return color.toString(16); }).join(","); return "".concat(this.constructor.name, ": ").concat(values); }; return Scheme; }()); var Analogous = /** @class */ (function (_super) { __extends(Analogous, _super); function Analogous(initial) { var _this = _super.call(this, initial) || this; var left1 = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue - 30, _this.primary.saturation, _this.primary.lightness); var left2 = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue - 15, _this.primary.saturation, _this.primary.lightness); var right1 = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 15, _this.primary.saturation, _this.primary.lightness); var right2 = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 30, _this.primary.saturation, _this.primary.lightness); _this.colors = [ left1.toHex(), left2.toHex(), initial, right1.toHex(), right2.toHex() ]; return _this; } return Analogous; }(Scheme)); var Monochromatic = /** @class */ (function (_super) { __extends(Monochromatic, _super); function Monochromatic(initial) { var _this = _super.call(this, initial) || this; var delta = _this.primary.lightness / 6; _this.colors = [ initial, new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue, _this.primary.saturation, _this.primary.lightness - delta).toHex(), new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue, _this.primary.saturation, _this.primary.lightness - delta * 2).toHex(), new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue, _this.primary.saturation, _this.primary.lightness - delta * 3).toHex(), new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue, _this.primary.saturation, _this.primary.lightness - delta * 4).toHex() ]; return _this; } return Monochromatic; }(Scheme)); var SplitComplementary = /** @class */ (function (_super) { __extends(SplitComplementary, _super); function SplitComplementary(initial) { var _this = _super.call(this, initial) || this; var complement = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"]((_this.primary.hue + 180) % 360, _this.primary.saturation, _this.primary.lightness); _this.colors = [ initial, new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](complement.hue - 30, complement.saturation, complement.lightness).toHex(), new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](complement.hue + 30, complement.saturation, complement.lightness).toHex() ]; return _this; } return SplitComplementary; }(Scheme)); var Triadic = /** @class */ (function (_super) { __extends(Triadic, _super); function Triadic(initial) { var _this = _super.call(this, initial) || this; _this.colors = [ initial, new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue - 120, _this.primary.saturation, _this.primary.lightness).toHex(), new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 120, _this.primary.saturation, _this.primary.lightness).toHex() ]; return _this; } return Triadic; }(Scheme)); var Tetradic = /** @class */ (function (_super) { __extends(Tetradic, _super); function Tetradic(initial) { var _this = _super.call(this, initial) || this; var second = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 45, _this.primary.saturation, _this.primary.lightness); var complement = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 180, _this.primary.saturation, _this.primary.lightness); var secondComplement = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](second.hue + 180, _this.primary.saturation, _this.primary.lightness); _this.colors = [ initial, second.toHex(), complement.toHex(), secondComplement.toHex() ]; return _this; } return Tetradic; }(Scheme)); var Square = /** @class */ (function (_super) { __extends(Square, _super); function Square(initial) { var _this = _super.call(this, initial) || this; var second = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 90, _this.primary.saturation, _this.primary.lightness); var third = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](_this.primary.hue + 180, _this.primary.saturation, _this.primary.lightness); var fourth = new _hsl__WEBPACK_IMPORTED_MODULE_0__["default"](second.hue + 270, _this.primary.saturation, _this.primary.lightness); _this.colors = [ initial, second.toHex(), third.toHex(), fourth.toHex() ]; return _this; } return Square; }(Scheme)); /***/ }), /***/ "./src/crack.ts": /*!**********************!*\ !*** ./src/crack.ts ***! \**********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _sand_painter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sand-painter */ "./src/sand-painter.ts"); var Crack = /** @class */ (function () { function Crack(state, x, y, angle) { this.x = 0; this.y = 0; this.angle = 0; this.state = state; this.painter = new _sand_painter__WEBPACK_IMPORTED_MODULE_0__["default"](this); this.start(x, y, angle); } Crack.prototype.start = function (x, y, angle) { var random = crypto.getRandomValues(new Uint8Array(2)); this.x = x + .61 * Math.cos(angle * Math.PI / 180); this.y = y + .61 * Math.sin(angle * Math.PI / 180); var flip = (random[0] / 256) > 0.5; this.angle = angle + (90 + Math.floor((random[1] / 256) * 4.1 - 2)) * (flip ? -1 : 1); }; Crack.prototype.draw = function () { var random = crypto.getRandomValues(new Uint8Array(2)); this.x += .42 * Math.cos(this.angle * Math.PI / 180); this.y += .42 * Math.sin(this.angle * Math.PI / 180); var fuzzX = this.x + (random[0] / 256 * .66 - .33); var fuzzY = this.y + (random[1] / 256 * .66 - .33); var context = this.state.canvas.getContext("2d"); context.fillStyle = "#000"; context.fillRect(fuzzX, fuzzY, 1, 1); this.painter.render(); var x = Math.floor(this.x); var y = Math.floor(this.y); if (this.state.isWithinBoundary(x, y)) { var angle = this.state.grid[x][y]; if (angle > 10000) { this.state.grid[x][y] = Math.floor(this.angle); this.state.seeds.push({ x: x, y: y }); } else if (this.state.grid[x][y] != Math.floor(this.angle)) { var entry = this.state.getNewEntry(); this.start(entry.x, entry.y, entry.angle); } } else { var entry = this.state.getNewEntry(); this.start(entry.x, entry.y, entry.angle); this.state.addCrack(); } }; return Crack; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Crack); /***/ }), /***/ "./src/hsl.ts": /*!********************!*\ !*** ./src/hsl.ts ***! \********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _rgb__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rgb */ "./src/rgb.ts"); var HSL = /** @class */ (function () { function HSL(hue, saturation, lightness) { this.hue = (hue + 360) % 360; this.saturation = saturation; this.lightness = lightness; } // https://en.wikipedia.org/wiki/HSL_and_HSV HSL.fromRgb = function (rgb) { var redValue = rgb.red / 255, greenValue = rgb.green / 255, blueValue = rgb.blue / 255, max = Math.max(redValue, greenValue, blueValue), min = Math.min(redValue, greenValue, blueValue), chroma = max - min, lightness = .5 * (max + min), saturation = 1 - (3 / (redValue + greenValue + blueValue)) * Math.min(redValue, greenValue, blueValue); var huePrime = 0; if (chroma != 0) { if (redValue == max) huePrime = ((greenValue - blueValue) / chroma) % 6; else if (greenValue == max) huePrime = ((blueValue - redValue) / chroma) + 2; else huePrime = ((redValue - greenValue) / chroma) + 4; } return new HSL(huePrime * 60, saturation, lightness); }; HSL.fromHex = function (color) { return HSL.fromRgb(_rgb__WEBPACK_IMPORTED_MODULE_0__["default"].fromHex(color)); }; HSL.prototype.toHex = function () { return _rgb__WEBPACK_IMPORTED_MODULE_0__["default"].fromHsl(this).toHex(); }; return HSL; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HSL); /***/ }), /***/ "./src/rgb.ts": /*!********************!*\ !*** ./src/rgb.ts ***! \********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var RGB = /** @class */ (function () { function RGB(red, green, blue) { this.red = Math.floor(red < 0 ? 0 : red > 255 ? 255 : red); this.green = Math.floor(green < 0 ? 0 : green > 255 ? 255 : green); this.blue = Math.floor(blue < 0 ? 0 : blue > 255 ? 255 : blue); } RGB.prototype.toHex = function () { return (this.red << 16) + (this.green << 8) + this.blue; }; // https://en.wikipedia.org/wiki/HSL_and_HSV RGB.fromHsl = function (hsl) { var red = 0, green = 0, blue = 0; var chroma = (1 - Math.abs(2 * hsl.lightness - 1)) * hsl.saturation, range = hsl.hue / 60, intermediate = chroma * (1 - Math.abs(range % 2 - 1)), match = hsl.lightness - chroma / 2; if (range >= 0 && range < 1) { red = chroma; green = intermediate; } else if (range >= 1 && range < 2) { red = intermediate; green = chroma; } else if (range >= 2 && range < 3) { green = chroma; blue = intermediate; } else if (range >= 3 && range < 4) { green = intermediate; blue = chroma; } else if (range >= 4 && range < 5) { red = intermediate; blue = chroma; } else if (range >= 5 && range < 6) { red = chroma; blue = intermediate; } return new RGB((red + match) * 255, (green + match) * 255, (blue + match) * 255); }; RGB.fromHex = function (color) { var red = color >> 16; var green = (color - (red << 16)) >> 8; var blue = color - (red << 16) - (green << 8); return new RGB(red, green, blue); }; return RGB; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RGB); /***/ }), /***/ "./src/sand-painter.ts": /*!*****************************!*\ !*** ./src/sand-painter.ts ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var SandPainter = /** @class */ (function () { function SandPainter(crack) { this.crack = crack; this.color = this.crack.state.getNextColor(); this.gain = Math.random() / 10; } SandPainter.prototype.render = function () { var state = this.crack.state, x = this.crack.x, y = this.crack.y, angle = this.crack.angle; var open = true, endX = x, endY = y; while (open) { endX += .81 * Math.sin(angle * Math.PI / 180); endY -= .81 * Math.cos(angle * Math.PI / 180); var gridX = Math.floor(endX); var gridY = Math.floor(endY); if (state.isWithinBoundary(gridX, gridY)) { open = state.grid[gridX][gridY] > 10000; } else { open = false; } } this.gain += (Math.random() / 10 - .05); if (this.gain < 0) this.gain = 0; if (this.gain > 1) this.gain = 1; var grains = 64; var hex = this.color.toString(16); var w = this.gain / (grains - 1); // some kind of multiplier var context = state.canvas.getContext("2d"); for (var i = 0; i < grains; i++) { var alpha = Math.floor((.1 - i / (grains * 10)) * 255); var paintX = x + (endX - x) * Math.sin(Math.sin(i * w)); var paintY = y + (endY - y) * Math.sin(Math.sin(i * w)); context.fillStyle = "#".concat(hex.padStart(6, "0")).concat(alpha.toString(16).padStart(2, "0")); context.fillRect(paintX, paintY, 1, 1); } }; return SandPainter; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SandPainter); /***/ }), /***/ "./src/state.ts": /*!**********************!*\ !*** ./src/state.ts ***! \**********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _crack__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./crack */ "./src/crack.ts"); var State = /** @class */ (function () { function State(colors, maxCracks, canvas) { this.canvasColors = [ "rgb(27 27 27 / 90%)", "rgb(90 90 90 / 90%)", "rgb(126 126 126 / 90%)", "rgb(180 180 180 / 90%)", "rgb(255 255 255 / 90%)", "rgb(180 180 180 / 90%)", "rgb(126 126 126 / 90%)", "rgb(90 90 90 / 90%)" ]; this.canvasIndex = 0; this.colorIndex = 0; this.canvas = canvas; this.maxCracks = maxCracks; this.grid = []; this.colors = colors; this.cracks = []; this.seeds = []; this.init(); } State.prototype.init = function (colors) { if (colors) this.colors = colors; this.cracks.length = 0; this.grid.length = 0; this.seeds.length = 0; this.colorIndex = 0; var height = this.canvas.height; var width = this.canvas.width; var context = this.canvas.getContext("2d"); context.fillStyle = this.canvasColors[this.canvasIndex++ % this.canvasColors.length]; context.fillRect(0, 0, width, height); for (var x = 0; x < width; x++) { this.grid[x] = []; for (var y = 0; y < height; y++) { this.grid[x][y] = 10001; } } var random = crypto.getRandomValues(new Uint8Array(9)); for (var i = 0; i < 9; i += 3) { var x = Math.floor(random[i] * width / 256); var y = Math.floor(random[i + 1] * height / 256); var angle = Math.floor(random[i + 2] * 360 / 256); this.cracks.push(new _crack__WEBPACK_IMPORTED_MODULE_0__["default"](this, x, y, angle)); this.grid[x][y] = angle; } }; State.prototype.addCrack = function () { if (this.cracks.length >= this.maxCracks) return; var _a = this.getNewEntry(), x = _a.x, y = _a.y, angle = _a.angle; this.cracks.push(new _crack__WEBPACK_IMPORTED_MODULE_0__["default"](this, x, y, angle)); }; State.prototype.getNextColor = function () { return this.colors[this.colorIndex++ % this.colors.length]; }; State.prototype.isWithinBoundary = function (x, y) { return x >= 0 && x < this.canvas.width && y >= 0 && y < this.canvas.height; }; State.prototype.getNewEntry = function () { var random = crypto.getRandomValues(new Uint8Array(4)); if (!this.seeds.length) { var x = Math.floor(random[0] * this.canvas.width / 256); var y = Math.floor(random[1] * this.canvas.height / 256); var angle = this.grid[x][y]; if (angle > 10000) { angle = Math.floor(random[2] * 360 / 256); this.grid[x][y] = angle; } return { x: x, y: y, angle: angle }; } var randomIndex = Math.floor(random[3] * this.seeds.length / 256); var entry = this.seeds.splice(randomIndex, 1)[0]; return { x: entry.x, y: entry.y, angle: this.grid[entry.x][entry.y] }; }; return State; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (State); /***/ }), /***/ "./src/substrate.ts": /*!**************************!*\ !*** ./src/substrate.ts ***! \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ "./src/state.ts"); /* harmony import */ var _color_schemes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color-schemes */ "./src/color-schemes.ts"); // TS attempt of http://www.complexification.net/gallery/machines/substrate/index.php by laniaung.me var Substrate = /** @class */ (function () { function Substrate(maxCracks, colors) { if (!(colors === null || colors === void 0 ? void 0 : colors.length)) colors = [0x3a1e3e, 0x7c2d3b, 0xb94f3c, 0xf4a462, 0xf9c54e]; // https://colormagic.app/palette/671eeb6c42273fc4c1bb1ac7 var canvas = document.createElement("canvas"); canvas.width = document.body.clientWidth; canvas.height = document.body.clientHeight; document.body.appendChild(canvas); this.state = new _state__WEBPACK_IMPORTED_MODULE_0__["default"](colors, maxCracks, canvas); this.init(); } Substrate.prototype.init = function () { var me = this; var draw = function () { for (var _i = 0, _a = me.state.cracks; _i < _a.length; _i++) { var crack = _a[_i]; crack.draw(); } requestAnimationFrame(draw); }; setInterval(function () { return me.state.init(me.getRandomColorScheme()); }, 120 * 1000); draw(); }; Substrate.prototype.getRandomColorScheme = function () { var color = Math.floor(Math.random() * Math.pow(256, 3)); var scheme; switch (Math.floor(Math.random() * 6)) { case 1: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.Monochromatic(color); break; case 2: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.SplitComplementary(color); break; case 3: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.Triadic(color); break; case 4: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.Tetradic(color); break; case 5: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.Square(color); break; default: scheme = new _color_schemes__WEBPACK_IMPORTED_MODULE_1__.Analogous(color); } console.info(scheme.toString()); return scheme.colors; }; return Substrate; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Substrate); /***/ }), /***/ "./src/weather.ts": /*!************************!*\ !*** ./src/weather.ts ***! \************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var openmeteo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openmeteo */ "./node_modules/openmeteo/lib/index.js"); /* harmony import */ var openmeteo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openmeteo__WEBPACK_IMPORTED_MODULE_0__); var __assign = (undefined && undefined.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (undefined && undefined.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var Weather = /** @class */ (function () { function Weather(latitude, longitude) { this.apiUrl = "https://api.open-meteo.com/v1/forecast"; this.dailyVariables = ["temperature_2m_max", "temperature_2m_min", "sunrise", "sunset", "uv_index_max", "precipitation_sum", "precipitation_hours", "wind_speed_10m_max", "wind_gusts_10m_max", "wind_direction_10m_dominant"]; this.hourlyVariables = ["temperature_2m", "precipitation", "precipitation_probability"]; this.currentVariables = ["temperature_2m", "relative_humidity_2m", "apparent_temperature", "precipitation", "wind_speed_10m", "wind_gusts_10m", "wind_direction_10m", "cloud_cover"]; this.hourly = []; this.daily = []; this.options = new WeatherOptions(latitude !== null && latitude !== void 0 ? latitude : 47.61002138071677, longitude !== null && longitude !== void 0 ? longitude : -122.17906310779568); var me = this; var time = document.getElementById("time-value"); time.textContent = new Date().toLocaleTimeString("en-US", { hour12: false, timeStyle: "short" }); setInterval(function () { return time.textContent = new Date().toLocaleTimeString("en-US", { hour12: false, timeStyle: "short" }); }, 15000); setInterval(function () { return me.fetchWeather().then(function () { return me.setDisplay(); }); }, 300000); me.fetchWeather().then(function () { return me.setDisplay(); }); } Weather.prototype.fetchWeather = function () { return __awaiter(this, void 0, void 0, function () { var me, parameters, needsUpdate, responses, _i, responses_1, response, current, hourly, daily; return __generator(this, function (_a) { switch (_a.label) { case 0: me = this; parameters = __assign({}, me.options); needsUpdate = me.needsUpdate(parameters); if (!needsUpdate) return [2 /*return*/]; console.info("Getting weather", parameters); return [4 /*yield*/, (0,openmeteo__WEBPACK_IMPORTED_MODULE_0__.fetchWeatherApi)(me.apiUrl, parameters)]; case 1: responses = _a.sent(); for (_i = 0, responses_1 = responses; _i < responses_1.length; _i++) { response = responses_1[_i]; current = response.current(); hourly = response.hourly(); daily = response.daily(); me.offset = response.utcOffsetSeconds(); if (current != null) me.current = new CurrentWeather(current); if (hourly != null) me.setHourlyData(hourly); if (daily != null) me.setDailyData(daily); } console.info("Timezone: ".concat(responses[0].timezone(), " ").concat(responses[0].timezoneAbbreviation(), "\nTimezone difference to GMT+0: ").concat(me.offset, "s")); return [2 /*return*/]; } }); }); }; Weather.prototype.needsUpdate = function (parameters) { var me = this; if (!me.lastFetched) { parameters["daily"] = me.dailyVariables; parameters["hourly"] = me.hourlyVariables; parameters["current"] = me.currentVariables; me.lastFetched = new LastFetched(); return true; } else { // Weather data is updated every 15 minutes starting at :00 but just wait 15 minutes for an update if (me.lastFetched.minutesSinceCurrent() >= 15) { var now = new Date(); // Make sure data is over 5 minutes old at least if ((now.getTime() - me.lastFetched.current.getTime()) > 300000) { parameters["current"] = me.currentVariables; me.lastFetched.current = new Date(); return true; } } // Reasonable-ish timers? if (me.lastFetched.hoursSinceHourly() > 3) { parameters["hourly"] = me.hourlyVariables; me.lastFetched.hourly = new Date(); return true; } if (me.lastFetched.hoursSinceDaily() > 8) { parameters["daily"] = me.dailyVariables; me.lastFetched.daily = new Date(); return true; } } return false; }; Weather.prototype.setHourlyData = function (hourly) { var length = Number(hourly.timeEnd() - hourly.time()) / hourly.interval(); var temperatures = hourly.variables(0).valuesArray(); var precipitationTotals = hourly.variables(1).valuesArray(); var precipitationProbabilities = hourly.variables(2).valuesArray(); this.hourly.length = 0; for (var i = 0; i < length; i++) { new Date(); this.hourly.push({ time: new Date((Number(hourly.time()) + i * hourly.interval()) * 1000), temperature: temperatures[i], precipitation: precipitationTotals[i], precipitationProbability: precipitationProbabilities[i] }); } }; Weather.prototype.setDailyData = function (daily) { var length = Number(daily.timeEnd() - daily.time()) / daily.interval(); var maxTemperatures = daily.variables(0).valuesArray(); var minTemperatures = daily.variables(1).valuesArray(); var sunrise = daily.variables(2); var sunset = daily.variables(3); var maxUVs = daily.variables(4).valuesArray(); var precipitationTotals = daily.variables(5).valuesArray(); var precipitationHours = daily.variables(6).valuesArray(); var maxWindSpeeds = daily.variables(7).valuesArray(); var maxWindGusts = daily.variables(8).valuesArray(); var prominentWindDirections = daily.variables(9).valuesArray(); this.daily.length = 0; for (var i = 0; i < length; i++) { var weather = new DailyWeather(); weather.time = new Date((Number(daily.time()) + i * daily.interval()) * 1000); weather.maxTemperature = maxTemperatures[i]; weather.minTemperature = minTemperatures[i]; weather.sunrise = new Date((Number(sunrise.valuesInt64(i))) * 1000); weather.sunset = new Date((Number(sunset.valuesInt64(i))) * 1000); weather.maxUV = maxUVs[i]; weather.totalPrecipitation = precipitationTotals[i]; weather.hoursOfPrecipitation = precipitationHours[i]; weather.maxWindSpeed = maxWindSpeeds[i]; weather.maxWindGusts = maxWindGusts[i]; weather.prominentWindDirection = prominentWindDirections[i]; this.daily.push(weather); } }; Weather.prototype.setDisplay = function () { console.debug(this); var current = document.getElementById("current"); current.innerHTML = "
thermostat".concat(Math.round(this.current.temperature), " (").concat(Math.round(this.current.feelsLike), ")
\n
humidity_percentage ").concat(Math.round(this.current.humidity), "%
\n
cloud ").concat(Math.round(this.current.cloudCoverage), "%
\n
weather_mix ").concat(Math.round(this.current.precipitation), "%
\n
air ").concat(Math.round(this.current.windSpeed), " (").concat(Math.round(this.current.windGusts), ") ").concat(this.inCardinals(this.current.windDirection), "
"); if (!this.daily) return; var icon = document.getElementById("time-icon"); icon.innerText = this.current.getCloudCoverageIcon(this.daily[0].sunrise, this.daily[0].sunset); var dailySlots = []; for (var _i = 0, _a = this.daily; _i < _a.length; _i++) { var day = _a[_i]; dailySlots.push("
\n ".concat(day.time.getDate(), "\n ").concat(Math.round(day.minTemperature), "—").concat(Math.round(day.maxTemperature), "\n ").concat(Math.round(day.maxUV), "\n ").concat(day.sunrise.toLocaleTimeString("en-US", { timeStyle: "short", hour12: false }), "\n ").concat(day.sunset.toLocaleTimeString("en-US", { timeStyle: "short", hour12: false }), "\n
")); } var daily = document.getElementById("daily"); daily.innerHTML = dailySlots.join("\r\n"); if (!this.hourly) return; var hourlySlots = []; var startHour = this.hourly.findIndex(function (x) { return x.time.getTime() > (new Date().getTime()) - 3600000; }); for (var i = 0; i < 10; i++) { var hour = this.hourly[i + startHour]; hourlySlots.push("
\n ".concat(hour.time.getHours(), "\n ").concat(Math.round(hour.temperature), "\n ").concat(Math.round(hour.precipitation), "\"\n ").concat(Math.round(hour.precipitationProbability), "%\n
")); } var hourly = document.getElementById("hourly"); hourly.innerHTML = hourlySlots.join("\r\n"); }; Weather.prototype.inCardinals = function (direction) { if (direction > 337.5 || direction <= 22.5) return "N"; if (direction > 22.5 || direction <= 67.5) return "NE"; if (direction > 67.5 || direction <= 112.5) return "E"; if (direction > 112.5 || direction <= 157.5) return "SE"; if (direction > 157.5 || direction <= 202.5) return "S"; if (direction > 202.5 || direction <= 249.5) return "SW"; if (direction > 249.5 || direction <= 294.5) return "W"; if (direction > 294.5 || direction <= 337.5) return "NW"; return null; }; return Weather; }()); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Weather); var WeatherOptions = /** @class */ (function () { function WeatherOptions(latitude, longitude, timezone) { if (timezone === void 0) { timezone = "America/Los_Angeles"; } this.timezone = "America/Los_Angeles"; this["wind_speed_unit"] = "mph"; this["temperature_unit"] = "fahrenheit"; this["precipitation_unit"] = "inch"; this.latitude = latitude; this.longitude = longitude; this.timezone = timezone; } return WeatherOptions; }()); var CurrentWeather = /** @class */ (function () { function CurrentWeather(current) { this.time = new Date(Number(current.time()) * 1000); this.temperature = current.variables(0).value(); this.humidity = current.variables(1).value(); this.feelsLike = current.variables(2).value(); this.precipitation = current.variables(3).value(); this.windSpeed = current.variables(4).value(); this.windGusts = current.variables(5).value(); this.windDirection = current.variables(6).value(); this.cloudCoverage = current.variables(7).value(); } CurrentWeather.prototype.getCloudCoverageIcon = function (sunrise, sunset) { if (this.cloudCoverage > 75 || !sunrise || !sunset) return "cloud"; if (this.time.getTime() > sunrise.getTime() && this.time.getTime() < sunset.getTime()) return this.cloudCoverage > 25 ? "partly_cloudy_day" : "clear_day"; return this.cloudCoverage > 25 ? "partly_cloudy_night" : "bedtime"; }; return CurrentWeather; }()); var DailyWeather = /** @class */ (function () { function DailyWeather() { } DailyWeather.prototype.uvRating = function () { if (this.maxUV < 3) return "low"; if (this.maxUV < 6) return "moderate"; if (this.maxUV < 8) return "high"; if (this.maxUV < 11) return "very-high"; return "extreme"; }; return DailyWeather; }()); var LastFetched = /** @class */ (function () { function LastFetched() { this.current = new Date(); this.hourly = new Date(); this.daily = new Date(); } LastFetched.prototype.minutesSinceCurrent = function () { return Math.floor((new Date().getTime() - this.current.getTime()) / 60000); }; LastFetched.prototype.hoursSinceHourly = function () { return Math.floor((new Date().getTime() - this.hourly.getTime()) / 3600000); }; LastFetched.prototype.hoursSinceDaily = function () { return Math.floor((new Date().getTime() - this.daily.getTime()) / 3600000); }; return LastFetched; }()); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. (() => { /*!***********************!*\ !*** ./src/launch.ts ***! \***********************/ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _substrate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./substrate */ "./src/substrate.ts"); /* harmony import */ var _weather__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./weather */ "./src/weather.ts"); var ready = function (func) { return document.readyState !== "loading" ? func() : document.addEventListener("DOMContentLoaded", func); }; ready(function () { new _substrate__WEBPACK_IMPORTED_MODULE_0__["default"](20); var weather; navigator.geolocation.getCurrentPosition(function (position) { weather = new _weather__WEBPACK_IMPORTED_MODULE_1__["default"](position.coords.latitude, position.coords.longitude); }, function () { weather = new _weather__WEBPACK_IMPORTED_MODULE_1__["default"](); }); }); })(); /******/ })() ; //# sourceMappingURL=main.js.map