2526 lines
112 KiB
JavaScript
2526 lines
112 KiB
JavaScript
/******/ (() => { // 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<number>|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<WeatherApiResponse[]>}
|
|
*/
|
|
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) {
|
|
this.x = x + .61 * Math.cos(angle * Math.PI / 180);
|
|
this.y = y + .61 * Math.sin(angle * Math.PI / 180);
|
|
var flip = Math.random() > 0.5;
|
|
this.angle = angle + (90 + Math.floor(Math.random() * 4.1 - 2)) * (flip ? -1 : 1);
|
|
};
|
|
Crack.prototype.draw = function () {
|
|
this.x += .42 * Math.cos(this.angle * Math.PI / 180);
|
|
this.y += .42 * Math.sin(this.angle * Math.PI / 180);
|
|
var fuzzX = this.x + (Math.random() * .66 - .33);
|
|
var fuzzY = this.y + (Math.random() * .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;
|
|
}
|
|
}
|
|
for (var i = 0; i < 3; i++) {
|
|
var x = Math.floor(Math.random() * width);
|
|
var y = Math.floor(Math.random() * height);
|
|
var angle = Math.floor(Math.random() * 360);
|
|
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 () {
|
|
if (!this.seeds.length) {
|
|
var x = Math.floor(Math.random() * this.canvas.width);
|
|
var y = Math.floor(Math.random() * this.canvas.height);
|
|
var angle = this.grid[x][y];
|
|
if (angle > 10000) {
|
|
angle = Math.floor(Math.random() * 360);
|
|
this.grid[x][y] = angle;
|
|
}
|
|
return { x: x, y: y, angle: angle };
|
|
}
|
|
var randomIndex = Math.floor(Math.random() * this.seeds.length);
|
|
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 __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
|
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
if (ar || !(i in from)) {
|
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
ar[i] = from[i];
|
|
}
|
|
}
|
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
};
|
|
|
|
var Weather = /** @class */ (function () {
|
|
function Weather(latitude, longitude) {
|
|
latitude !== null && latitude !== void 0 ? latitude : (latitude = 47.61002138071677);
|
|
longitude !== null && longitude !== void 0 ? longitude : (longitude = -122.17906310779568);
|
|
this.options = new WeatherOptions();
|
|
this.options = __assign(__assign({}, this.options), { latitude: latitude, longitude: longitude });
|
|
this.getWeather().then(function () {
|
|
});
|
|
}
|
|
Weather.prototype.getWeather = function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
var url, responses, _loop_1, _i, responses_1, response;
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
url = "https://api.open-meteo.com/v1/forecast";
|
|
return [4 /*yield*/, (0,openmeteo__WEBPACK_IMPORTED_MODULE_0__.fetchWeatherApi)(url, this.options)];
|
|
case 1:
|
|
responses = _a.sent();
|
|
_loop_1 = function (response) {
|
|
// Attributes for timezone and location
|
|
var utcOffsetSeconds = response.utcOffsetSeconds();
|
|
var timezone = response.timezone();
|
|
var timezoneAbbreviation = response.timezoneAbbreviation();
|
|
var latitude = response.latitude();
|
|
var longitude = response.longitude();
|
|
var current = response.current();
|
|
var hourly = response.hourly();
|
|
var daily = response.daily();
|
|
var sunrise = daily.variables(2);
|
|
var sunset = daily.variables(3);
|
|
// Note: The order of weather variables in the URL query and the indices below need to match!
|
|
var weatherData = {
|
|
current: {
|
|
time: new Date((Number(current.time()) + utcOffsetSeconds) * 1000),
|
|
temperature2m: current.variables(0).value(),
|
|
relativeHumidity2m: current.variables(1).value(),
|
|
apparentTemperature: current.variables(2).value(),
|
|
precipitation: current.variables(3).value(),
|
|
windSpeed10m: current.variables(4).value(),
|
|
windGusts10m: current.variables(5).value(),
|
|
windDirection10m: current.variables(6).value(),
|
|
},
|
|
hourly: {
|
|
time: __spreadArray([], Array((Number(hourly.timeEnd()) - Number(hourly.time())) / hourly.interval()), true).map(function (_, i) { return new Date((Number(hourly.time()) + i * hourly.interval() + utcOffsetSeconds) * 1000); }),
|
|
temperature2m: hourly.variables(0).valuesArray(),
|
|
precipitation: hourly.variables(1).valuesArray(),
|
|
precipitationProbability: hourly.variables(2).valuesArray(),
|
|
},
|
|
daily: {
|
|
time: __spreadArray([], Array((Number(daily.timeEnd()) - Number(daily.time())) / daily.interval()), true).map(function (_, i) { return new Date((Number(daily.time()) + i * daily.interval() + utcOffsetSeconds) * 1000); }),
|
|
temperature2mMax: daily.variables(0).valuesArray(),
|
|
temperature2mMin: daily.variables(1).valuesArray(),
|
|
sunrise: __spreadArray([], Array(sunrise.valuesInt64Length()), true).map(function (_, i) { return new Date((Number(sunrise.valuesInt64(i)) + utcOffsetSeconds) * 1000); }),
|
|
sunset: __spreadArray([], Array(sunset.valuesInt64Length()), true).map(function (_, i) { return new Date((Number(sunset.valuesInt64(i)) + utcOffsetSeconds) * 1000); }),
|
|
uvIndexMax: daily.variables(4).valuesArray(),
|
|
precipitationSum: daily.variables(5).valuesArray(),
|
|
precipitationHours: daily.variables(6).valuesArray(),
|
|
windSpeed10mMax: daily.variables(7).valuesArray(),
|
|
windGusts10mMax: daily.variables(8).valuesArray(),
|
|
windDirection10mDominant: daily.variables(9).valuesArray(),
|
|
},
|
|
};
|
|
console.log(weatherData);
|
|
// `weatherData` now contains a simple structure with arrays for datetime and weather data
|
|
for (var i = 0; i < weatherData.hourly.time.length; i++) {
|
|
console.log(weatherData.hourly.time[i].toISOString(), weatherData.hourly.temperature2m[i], weatherData.hourly.precipitation[i], weatherData.hourly.precipitationProbability[i]);
|
|
}
|
|
for (var i = 0; i < weatherData.daily.time.length; i++) {
|
|
console.log(weatherData.daily.time[i].toISOString(), weatherData.daily.temperature2mMax[i], weatherData.daily.temperature2mMin[i], weatherData.daily.sunrise[i].toISOString(), weatherData.daily.sunset[i].toISOString(), weatherData.daily.uvIndexMax[i], weatherData.daily.precipitationSum[i], weatherData.daily.precipitationHours[i], weatherData.daily.windSpeed10mMax[i], weatherData.daily.windGusts10mMax[i], weatherData.daily.windDirection10mDominant[i]);
|
|
}
|
|
};
|
|
for (_i = 0, responses_1 = responses; _i < responses_1.length; _i++) {
|
|
response = responses_1[_i];
|
|
_loop_1(response);
|
|
}
|
|
return [2 /*return*/];
|
|
}
|
|
});
|
|
});
|
|
};
|
|
return Weather;
|
|
}());
|
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Weather);
|
|
var WeatherOptions = /** @class */ (function () {
|
|
function WeatherOptions() {
|
|
this.daily = ["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.hourly = ["temperature_2m", "precipitation", "precipitation_probability"];
|
|
this.current = ["temperature_2m", "relative_humidity_2m", "apparent_temperature", "precipitation", "wind_speed_10m", "wind_gusts_10m", "wind_direction_10m"];
|
|
this.timezone = "America/Los_Angeles";
|
|
this["wind_speed_unit"] = "mph";
|
|
this["temperature_unit"] = "fahrenheit";
|
|
this["precipitation_unit"] = "inch";
|
|
}
|
|
return WeatherOptions;
|
|
}());
|
|
var WeatherData = /** @class */ (function () {
|
|
function WeatherData() {
|
|
}
|
|
return WeatherData;
|
|
}());
|
|
var CurrentWeather = /** @class */ (function () {
|
|
function CurrentWeather() {
|
|
}
|
|
return CurrentWeather;
|
|
}());
|
|
|
|
|
|
/***/ })
|
|
|
|
/******/ });
|
|
/************************************************************************/
|
|
/******/ // 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
|